いけむランド

はてダからやってきました

charlock_holmes を bundle install するのに苦戦した

タイトルそのまんまです。

github.com

環境は以下の通り。

$ uname -rs
CYGWIN_NT-10.0 2.8.2(0.313/5/3)
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-cygwin]

bundle install すると extension のコンパイルでコケます。

g++ -I. -I/usr/include/ruby-2.3.0 -I/usr/include/ruby-2.3.0/ruby/backward
-I/usr/include/ruby-2.3.0 -I. -DHAVE_UNICODE_UCNV_H     -ggdb -O2 -pipe    -o
transliterator.o -c transliterator.cpp
In file included from /usr/include/unicode/utypes.h:38:0,
                 from /usr/include/unicode/translit.h:15,
                 from transliterator.cpp:5:
/usr/include/unicode/umachine.h:347:13: error: 'char16_t' does not name a type
     typedef char16_t UChar;
             ^

char16_tC++11 の機能であるため、g++ に -std=c++11 を渡さないといけないようです。 というわけで bundle config でオプションを設定する必要があります。(これを知るのにけっこう時間を食った。)

$ bundle config --local build.charlock_holmes --with-cxxflags=\"-std=c++11\"

bundle config の build.* は extconf.rb 内で with_config したものしか受け取れないのかと思ってました。

[追記] with_config してましたね。

$CXXFLAGS = (with_config("cxxflags", arg_config("CXXFLAGS", config["CXXFLAGS"]))||'').dup

積極性

「こんなことがしたいんですけどつくったら便利だと思いますか?」という内容の質問の issue を assign されても、そんなの自分で判断しろよボケとしか思わない。

それよりも「こんなことがしたいのでつくってみました。」という内容の pull request (実装がっつり) の reviewer に勝手に俺を assign する奴の方が 5000 兆倍信頼できる。

git submodule の削除

git submodule を削除するのに苦戦したのでメモっておく。

foo/bar が submodule だった場合に以下のコマンドを実行する。

$ git submodule deinit foo/bar
$ git rm foo/bar
$ git rm .git/modules/foo/bar

string table overflow が起きたため CMAKE_C_FLAGS から -g を取り除いた話

この記事は 第2のドワンゴ Advent Calendar 2016 - Qiita の 7 日目 (空いていたので飛び込んだのは 10 日目ですが) です。

続きを読む

calm のインストールと mksetupini

はじめに

cygport が 0.23.0 になった時に既存の genini が使えなくなるという問題に遭遇した。

原因は cygport が生成する hint のファイル名が固定の setup.hint から変わってしまったことによるもので、genini は setup.hint 固定されている前提の処理であったため、hint ファイルが認識できなくなってしまったというものであった。

というわけでなんとかしたい旨を cygport に issue ってみた。


github.com


すると genini じゃなくて calm の mksetupini を使えばいいんじゃね?という返事をもらったので、さっそく試してみた。

インストール


github.com


残念ながら pip で入れようとすると別の calm というパッケージが入ってしまうようなので、仕方なく setup.py でインストールすることにした。

$ git clone https://github.com/cygwin/calm.git
$ cd calm
$ python3 setup.py install
$ rehash
$ which mksetupini
/usr/local/bin/mksetupini

実行


普通に実行しても、いろいろとエラーを吐かれたため、最終的には以下のようなオプションをつけての実行となった。

$ mksetupini --arch x86_64 --inifile ./x86_64/setup --okmissing required-package --releasearea .
$ xz ./x86_64/setup
  • genini とは異なり、結果を stdout に出してはくれない。(そのため、あとから xz している。)
  • releasearea はデフォルトだと /sourceware 配下にあることを想定する。そのためオプションでカレントを指定した。


あと、追加で calmソースコードをいじって、categories に Emulators など過去に存在したカテゴリを追加した。(ここで宣言されていないカテゴリが yacp に残っており、それらが存在するとエラーとなり、setup.ini が生成されなかったため)


time で実行時間を確認したところ genini の 2/3 くらいになったように見えた。

$ gtime ./genini --recursive x86_64 > /tmp/setup.ini
29.17user 7.23system 0:51.42elapsed 70%CPU (0avgtext+0avgdata 60227584maxresident)k
2367inputs+0outputs (258major+112605minor)pagefaults 0swaps
$ gtime mksetupini --arch x86_64 --inifile /tmp/setup.ini --okmissing required-package --releasearea .
17.31user 4.70system 0:33.37elapsed 65%CPU (0avgtext+0avgdata 192790528maxresident)k
1950inputs+3outputs (676major+34400minor)pagefaults 0swaps

キーボード振り返り

そういや自分は US 派だなと思ったのでちょっとつらつらと書いてみる。

takano32.blogspot.jp

続きを読む

PokemonGo-Map をインストールしてみた

【追記】
「ポケモンGO」の生みの親、解析ツールPokeVisionを規約違反と明言 - iPhone Mania とのことなので、使用する場合は規約違反となる可能性があることを認識しておいてください。
使用によって生じた損害について、投稿者は一切責任を負いません。

【追記2】
Niantic Breaks Pokemon Go API, All Bots and Trackers Stopped Working とのことなので、
このツールを使用しても、情報を取得することはできません。
Pokémon GOの運用についてのアップデート とのことなので、
このツールの利用は推奨されるものでもありません。

興味本位でインストールしてみました。

github.com

続きを読む

Re: スクレイピングに Chrome のディベロッパーツールが便利

akkagi.info

Chrome デベロッパーツールで Copy XPath で取得した XPath を Nokogiri に食わせても要素が取得できないという現象があって、原因は「Chrome が tbody を補完する」だったわけなのですが、どうしてそうなっているかというと HTML の仕様的にないといけないからっぽいです。

stackoverflow.com

libexecinfo-stubs

execinfo (というか backtrace) がない環境 (主に cygwin) 向けに execinfo の stub を書いてみました。

github.com

backtrace が 0 を返したり、backtrace_symbols が null を返すだけです。

gnulib とやっていることは同じということにあとから気付きました...。

「強いチームはオフィスを捨てる」を読んだ

リモートワークができる会社に移ったため、どのようにリモートワークで取り組めばいいかを知りたくて読んだ。

強いチームはオフィスを捨てる: 37シグナルズが考える「働き方革命」

強いチームはオフィスを捨てる: 37シグナルズが考える「働き方革命」

まあ、考え方次第な気がする。