React Nativeでtodoアプリを写経する

思うところがあってReact Nativeでtodoアプリを作りたくなったので、参考になりそうなサイトを見つけて写経してみた。

参考にしたのは↓のページ。

medium.com

英語のページだが、特別難しいことは書かれていないので、写経するには十二分。
記事中ではyarnを使っているので、npmでインストールしておく。

npm install -g yarn

あとは記事の内容に沿って実装していく。
最後にreact-native run-isを実行して、シミュレータや端末上で動作することを確認する。
これらの準備は事前にxcode上でシミュレータをインストールするなどして完了させておく。

以下、トラブルシューティング集。


xcrun: error: unable to find utility "instruments", not a developer tool or in PATH

xcode上でCommand Line Toolsの設定を変更する必要がある。

stackoverflow.com


/Users/piruty/workspace/hooks_todo/node_modules/react-native/scripts/packager.sh: line 11: node: command not found

実行時にこんなエラーが出た。
これは、fishでnodenvを入れて使っていたがbashだとパスが通ってなかったので修正。


no bundle url present

どうも過去に失敗したビルドのときのキャッシュが残ってしまっていたらしいので、buildしたものなどを削除。

qiita.com

「Unixという考え方」読了

去年買って積読になっていた「Unixという考え方」を読了した。

技術書というよりも考え方や哲学についての本。
Unixがどういう思想で作られているのか、そしてそこからプログラマは何を学ぶことができるのか、ということが書かれている。

個人的には「小さなツールをたくさん作る」「シンプルな実装にする」というところあたりが刺さった。
「やりたいことを実行するための大きなアプリ」を作ってしまいがちなので、「個別の機能を満たす小さなアプリをたくさん作る」そして「それらを組み合わせて目標を達成する」ということを大切にしていきたい。

今のところ電子書籍化されていないのが残念。
比較的大きな本屋でないと見かけないことも多いのだが、それほど分厚い本でもないので、特にプログラマの人は一度読んでみてもいいと思う。


UNIXという考え方―その設計思想と哲学
Mike Gancarz
オーム社
売り上げランキング: 11,796

QuadGKを使って数値積分する。

関数を渡して数値積分を計算する。
出力は (I, E) となり、 I が結果、 E が誤差。
一つの変数についての積分しかできないので注意。
体感速度だと、SymPyでintegrateするよりもはやい(そもそもSymPyのRecompileが遅い)。

using QuadGK

# quadgk: 数値積分を計算する
# quadgk(function, from, to)
quadgk(cos, 0, pi/2) # => (1.0, 2.220446049250313e-16)
quadgk(x -> x^2, 0, 1) # => (0.3333333333333333, 5.551115123125783e-17)
quadgk(x -> exp(-4 * abs(x - 1/2)), 0, 1) # => (0.4323323583816937, 4.996003610813204e-16)

参考

github.com juliamath.github.io

http://mth229.github.io/integration.html#Thequadgkfunction

juliaをコンパイルして実行可能ファイルを作る

juliaで書いたコードをコンパイルし、実行可能なファイルにしてくれるライブラリを見つけた。
以下、githubのREADMEを参考に使ってみたときの手順をまとめている。

まず、このサンプルを元に実行ファイルを作成する。

module Hello

Base.@ccallable function julia_main(ARGS::Vector{String})::Cint
    println("hello, world")
    return 0
end

end

次に、これをPackageCompilerを使用してコンパイルする。
build_executable関数について、第一引数がコンパイルしたいファイルへのパス、第二引数がコンパイル後の実行ファイル名になる。

$ julia -e 'using PackageCompiler; build_executable("hello.jl", "hello")'

これを実行すると自動的にbuilddirというディレクトリが作られ、この中に成果物が格納される。
builddirの中には、コンパイルされたファイルを実行するための各種ライブラリも置かれている。

$ ./builddir/hello
hello, world

このライブラリについては、他にもライブラリを作ったりできるようなのだが、いかんせんドキュメントが少ない。
これからいろいろ試してみようと思っている。


参考

github.com

myenigma.hatenablog.com

mysqlでdatetimeカラムの年と月だけを取得する

mysqlのdatetime型のカラムについて、年月日でうまく集計してくれるような関数は用意されていない。 そこで、 DATE_FORMAT 関数を使いdatetime型から年や月から文字列を作り、これをつかってgroup byで集計するようにする。

SELETE DATE_FORMAT(date_col, '%Y-%m') AS fdate, COUNT(*) FROM table GROUP BY fdate

参考

dev.mysql.com

sandragon.hatenablog.com