読者です 読者をやめる 読者になる 読者になる

前回のポストを見返して

統合失調の予兆な気がする。アカン。

人工知能と貧困と覇権

最近の人工知能を "人工知能" として抽象化して語られることに違和感がある。 人工知能が脅威か?みたいな議論はそれが流行るたびにあった。 少なくとも僕の生きている間ではこれが2回目で、1回目は "探索" が人工知能の正体だったとき。 将棋でボナンザが台…

最近欲しいと感じたもの

最近の(少なくとも僕の知っている)Webフレームワークというか Web アプリケーションを作るためのエコシステム全体のバランスが崩れてあまり調和が取れていない気がする。FaaSとかを使うととっても安く全世界に公開できるシステムを作れるというのに、僕が…

GNOME3用アプリケーション開発に入門してみる その3

GIO編。リファレンスをざっと見せよとのこと。 GIO Reference Manual: GIO Reference Manual ファイルシステムにかかわるのは以下の6つ GFile GFileInfo GFileEnumerator GDrive GVolume GMount GFileEnumerator はいわゆるイテレータ。 GDriveがGVolumeのリ…

GNOME3用アプリケーション開発に入門してみる その2

GObject GObject Reference Manual: GObject Reference Manual C言語でオブジェクト指向を実現する仕組み。 他言語用にAPIを提供する仕組みも備えているので、 Cで書けばC++はもちろんPythonやPHPとかからも使えるようになる。 たぶん逆もしかり。 ざっと見…

GNOME3用アプリケーション開発に入門してみる

このへんから情報を取ってきたらよさそう。 GNOME Developer Center PythonとかC++とかValaとか使った方が効率的そうだけど、最初ぐらいCでやるか。 Getting started with writing a GLib/GTK+ application in C GLib core GObject GIO GTK+ の順でやれとの…

PythonでMACDを計算する

MACD (Moving Average Convergence Divergence) | FX・証券取引のマネーパートナーズ -外為を誠実に- このあたりを参考に、EMAはこんなかんじ。 def ema(l, t): result = [] for p in l: i = len(result) if i < t: # t日目までは単純平均 result += [float(…

Rust 1.0 の abs

fn main() { let x: i16 = -32768; println!("{}", x); println!("{}", x.abs()); } とすると arithmetic operation overflowed で落ちる。 doc を見ると、"::MIN will be returned if the number is ::MIN" と書いてあるのだが…。 https://github.com/rust-…

ここ数年で読んだ良さげなチュートリアルまとめ

Python チュートリアル — Python 3.4.2 ドキュメント Python のチュートリアル.僕が初めて読んだ時は 2.7 だった気がする. 今から始めるなら 3 の方が良さそう. 2 系はユニコードの扱いがつらい. Django documentation | Django documentation | Django …

C++でファイルパスを引数にしたコンストラクタだけだとつらい

C++

ファイルパスを引数にして,コンストラクタで読んで…ってのは何も考えていないと結構やりがち. しかし,これだけだとテスト書くのがつらい. テストが実行される場所を気にしないといけないし, 例外どうするかってのもある. istream& を引数にしたやつが…

SSH 越しにクリップボードを操作する

前回と似たようなネタ X の DISPLAY を設定すれば xsel が使える. ssh [HOST] "export DISPLAY=:0.0 && xsel -b" デスクトップの Linux からノートPCに持ってこれる. -bi で設定もできる.

SSH から Gnome の画面をロックする

Gnome shell が新しくなってシンプルにしたらしく, スクリーンセーバーを起動するやつが無くなったらしい. export $(cat /proc/$(pgrep -u `whoami` ^gnome-shell$)/environ |\ grep -z DBUS_SESSION_BUS_ADDRESS | strings) dbus-send --type=method_call…

ブール関数をあつかうC++ライブラリを作った

C++

utisam/boloq utisam/boloq · GitHub BDD を std::shared_ptr とか std::unordered_map で実装してみた. 名前も標準ライブラリを意識した感じでつけてみた.

Boost Test のための gedit 用 snippet

gedit snippets for boost Test

gedit 3.14 がいろいろと便利

gedit…お前,画面分割できたのか….— Tsushima (@utisam) 2014, 12月 18 geditが落ちたりて不安定だったのでしばらくvimを使っていたが, 3.14 が普通に動くようになって久々に戻って来た. Ctrl + Alt + N で分割 vim でいうところの vsplit ができる. Ctr…

gedit 3.14 の snippet で Segmentation fault する

Fedora 21 を入れてみたけど, Nvidia で wayland が動かなくてがっかりしている. もう一つがっかりしたことがあって,gedit 3.14 の snippet が Segmentation fault する. /usr/lib64/gedit/plugins/snippets/completion.py の Provider.do_get_start_ite…

pptxをpdfにしてLaTeXに取り込む

PowerPointで図を作って、PDFにしてからLaTeXにすると、拡大してもOKだしテキストがコピペできる感じになって便利。 PDF で出力した後は、PDF Slim でトリミングしていたんだけど、Windowsが更新されてから動かなくなってしまった。 そこで、pdfcropを使う。…

スケール可能なプログラムを書くために

卒論・修論の影響なのか、ソースコードの規模が壁になって詰まっている人を最近よく見る。 Web以外の人達にももっと MVC の考え方が広まってほしいなぁ。 一定の規模を超えると、ファイルを分割したりする必要があります。 しかし、そのステップはなかなか険…

AndroidのエミュレータでSDがマウントされない

さて、AVD作って起動っと… ん、SDに書き込めない? # mount あれ、sdcardがマウントされてない。 $ cd .android/avd/Nexus7_2012.avd $ grep sdCard config.ini hw.sdCard=no ん?

Ubuntu Server で wsgi を使うと SetEnv が効かない

Django の wsgi.py は、 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") となっているので、 Apacheの設定で SetEnv DJANGO_SETTINGS_MODULE mysite.settings.prod って感じに本番環境と開発環境でsettingsを切り替えるというのは、結…

DebianのAnsibleにMySQLを入れる

DebianにAnsibleを使って単に apt: pkg=mysql-server state=latest とかすると、 root でログインできなくなる。 debconf を使うと初期パスワードが設定できるのでそれを使ってからインストールする。 - name: MySQL | Set debconf vars raw: echo mysql-ser…

某大学で変な院進する話

リアルで面識がある感じのわかる人にはわかるタイトル。 まず原則としてオススメしない 先生にも言われると思うけど(少なくとも数年先ぐらいまでは)オススメしない。 死に急いでる人以外は、思ったほどメリットがない。 実力*1が無いなら(主に事務手続き…

日本語環境でRustをビルド

Rustをビルドしてみた。 compiler-rt の Makefile が間違っていて、英語環境以外では修正してから make する必要がある。 rust/src/compiler-rt/make/platform/clang_linux.mk を以下のように修正 - LANG=C $(CC) -v 2>&1 | grep 'Target:' | cut -d' ' -f2)…

「: そのようなファイルやディレクトリはありません」

こんなエラーで手元のスクリプトが動かない。 うーん、確かに存在するし、権限もあるんだが…。 shebang は #!/usr/bin/env python3 になってるしなぁ。 : そのようなファイルやディレクトリはありません 1行目にprint文仕込んでも変わらんか。 shebangが間違…

string.xmlにJSONを埋め込む

Androidアプリケーションのプロトタイプなんかを作っていたりすると、JSONをハードコーディングしたくなるときがある。 プロトタイプでいちいちサーバ立てて通信させてとかやりたくない。 かといって .java に + でつないで何行も書くのは精神衛生上よろしく…

istringstreamを使い回す

string line istringstream ist; while (getline(cin, line)) { ist.str(line); /* なんかの処理 */ } 上記のように使いまわそうとすると失敗する。 フラグがbadの状態になっていたり読み込んだ位置とかを戻さないといけなかったりでバグになってしまう。 st…

ファイル中のコメントを無視する

入力ファイルとかにコメントを書けるといろいろとはかどる。 def comment_ignore(file_obj, comment="#"): for line in file_obj: line = line.split(comment, maxsplit=1)[0].strip() if line: yield line with open("file.txt") as f: for line in comment…

std::arrayの初期化

C++

g++(4.7.2) だとコンパイルできないけど clang++(3.3) だとできる. g++ の場合は, array<int, 3> a((array<int, 3>){1, 2, 3}); みたいにキャストで明示しないといけないっぽい(C++スタイルでする場合には何使えばいいんだろ?). たぶん g++ の方は explicit ついたコン</int,></int,>…

はてなブログにお引越し

自分で作ったブログ使ってたけどやっぱり機能面で勝てないよなーと思ってお引越し. Bloggerの時のやつもMoveable Typeで移行した(いくつかフォーマットがおかしくて漏れてるけど). Gist貼り付けがあるのでソースコードも乗せやすそう.

Fedora19でgeditが落ちる問題

シンタックスハイライトの色つきの場所で, ibus使った補完とかするとgtkがSegmentation Faultで落ちる問題が発生してた. 日本語使う時だけkateにしたりして回避してたけど, パッチ が公開されてたのでこれ使うとうまくいく. まだrpmに反映されてないっぽ…

プロコン合宿

2週間近く経ってしまいましたが. 3/11〜13 の 3 日間の合宿を開催しました. 北は北海道から南は沖縄まで各地から足を運んでいただき本当にありがとうございました. Day1 会津大の 3 時間セット. @cos65535 さんと @lyoz さんと組ませていただきました. …

GTKでつながってるボタン

Gnome shell のアカウントの追加とかでよく見るつながってるボタンってどうやって作るんだろうと思って調べた. ButtonBox の style class として linked を設定するとできるらしい. glade だと,共通タブに Style Classes という項目がある. あと,Gnome …

パーフェクトPythonを読んだ

関数型言語始めようかと思って本屋行ってパーフェクトPython衝動買いした.— Tsushimaさん (@utisam) 2013年3月15日 な… 何を言ってるのか わからねーと思うが(ry 基本的な文法紹介するだけとかWebアプリに偏ってたりしてなくておもしろそうと思ったので…

新デスクトップとディストリと最適化

大学の研究室でデスクトップPC割り当ててもらったので早速Linuxをインストールすることに. 要望としては: gnome3系(gnome-shell, Unity, Cinnamon)が簡単に入る 長く使いたい(半年とかですぐインストールするの面倒) python2.7がメイン python3.3がパッケ…

Fedora 18 を入れてみた

Python3 が 2.7 を超えてきたらしい ので移行したいなと思い,どうせならディストリごと変更してみました. Ubuntu12.10 は Unity の依存関係だろうと思うけど python3 は 3.2 で python3.3 が別に用意されています. 他にもハードの相性とかが悪くていろい…

「われ敗れたり」を読んだ

故・米長永世棋聖の「われ敗れたり」を本屋で立ち読みしてて首が痛くなってきたので衝動買いしました. 電王戦でボンクラーズに敗れた話がまとめられています. 将棋の棚にあったけど情報系の読み物としても十分おもしろいなぁと思いました(確かに将棋のル…

MIDIファイルを生成する

Python3は文字列とかバイト列とかの扱いがすっきりした感じがするので練習がてらStandardMIDIFileを出力させてみた. :::python #!/usr/bin/env python3 #-*- coding:utf-8 -*- import copy import heapq class SMF(object): '''Standard MIDI File ''' def …

Tkinterでウィンドウの最大化

Windowsでは :::python from Tkinter import * root = Tk() root.state('zoomed') LinuxとかMacだと :::python from Tkinter import * root = Tk() root.attributes("-zoomed", "1") 参考:Maximizing the window of a Tkinter app - Devourer09

middlewareで簡単アクセス解析

Djangoのmiddlewareって意外と単純なんですね. Django: ミドルウェアの実装方法(全てのビューに処理をフックする方法) - PHACTORY process_reques から request データベースに放り込むようにすると簡単なアクセス解析アプリが作れる. 見る方は template…

django-skelを使うようにした

リファクタリングになったし表示速度にも効いてる気がする. Djangoが分かってきたけど綺麗に作るには……?という人には非常に良いと思う. django-skel - github django-skel 1.4 documentation Django 1.4のproject template便利 - Make組ブログ settings/p…

Djangoで更新する度に日付が変わるバグに遭遇した

DjangoでDateTimeFieldを使っていたら, なぜか管理画面で日付が更新ボタンを押す度に変わる. それも±9:00で. modelのメソッドでバグ出しちゃったかなーと思ったけどそうでもなさそう. 結局settings.pyで TIME_ZONE = 'Asia/Tokyo' としてたせいでした. …

腐ったmakeを支える技術

まさか自分と同い年のMakefileと戦うことになるとは。— Tsushimaさん (@utisam) 12月 26, 2012 あんまり身に付けたくない力だけど付いてしまったものは仕方がない. これ以上C/C++のビルドごときで時間を取られたくないので文章化したい(パズルみたいでちょ…

BLAKE2をPythonから

Sourceforge.JP Magazine の記事 に BLAKE2 というものが載ってたので,ctypesの練習がてら書いてみた. Makefile: :::makefile CC=gcc CFLAGS=-shared -std=c99 -O3 -march=native -Wall -fPIC -fopenmp -I../sse -I/usr/include/python2.7 LIBS= #FILES=bl…

Pythonで補完できる使い勝手の良いCUIアプリを

自分で作ったCUIアプリで補完が欲しいと思ってたら それっぽいもの があった. ここ のSimpleCompleterを使えば良いのだけど, 単純なので良ければbisectを使うともうちょっとうまく書けると思う. :::python import readline import bisect def complete(c)…

OpenGLでマルチスレッド使うといろいろと詰む話

ウインドウ系のスレッドとビジネスロジックのスレッドを分けてglutPostRedisplay適当に呼んだらいいかなーとか思って作ってたら詰んだ. コールバック以下でないとglutPostRedisplayを呼べないらしい. glutGetModifiersも同様にコールバック以下でないとダ…

2進数の話

読んだ内容を確かめるときによくIPythonを使うんですが… :::python In [18]: format(-10, '08b') Out[18]: '-0001010' 違うんだ.期待した答えはそうじゃないんだ…… :::python In [19]: format(0x100 - 10, '08b') Out[19]: '11110110' ビット操作のアルゴリ…

負の数の割り算

Pythonで割り算に負の数を含めるとC/C++と違う挙動をする. :::sh $ python -c "print 4//(-3)" -2 $ gcc -xc - int main() { printf("%d\n", 4 / (-3)); } $ ./a.out -1 pythonは負の無限大方向に丸めてくれる. これは数学的に望ましいらしい(The History …

Pythonで競技プログラミング

ありがたいことにAOJもAtCoderもいろいろな言語に対応しています. 邪道な感じですが新しい発見があっておもしろいです. 入力 C/C++/Javaから始めるとraw_inputもinputも1行とってくるので一瞬つまります. raw_inputをsplitしましょう.カンマ区切りも柔軟…

waf + msvc + boost

boost::threadをwafでコンパイルしようとして頑張った。 Visual Studioでググった通りにコンパイル オプションを復元してコマンドでコンパイル wafで同じオプションになるようにwscript書く 最終的なwscriptは以下の通り #!/usr/bin/env python def configur…

C++でクラスを作るときに気を付けるべきこと

C++って,「このクラスこういう使い方していいの?」とか,「こう書いたらあれしたらマズイことになる」とか,「ほげほげなクラスはこう書かなくてはいけない」とか多すぎる気がするのでまとめてみる. 継承される可能性があるか デストラクタかvirtualかそ…