Hatena::ブログ(Diary)

WebService::Blog->new( user => ’hide_o_55’ )

2015-08-23

YAPC::Asia Tokyo 2015に行ってきた #yapcasia

YAPC::Asia Tokyo 2015に行ってきました。

今年は開催時期の近辺で仕事が忙しくなることが事前にわかっていたのでトークには応募せず、個人スポンサーとして参加しました。

↓の個人スポンサーのノベルティタンブラーが非常に良かったです。大事に使います。

f:id:hide_o_55:20150823015527j:image:w360

スタッフの皆様、良いネットワークを提供してくださったCONBUの皆様お疲れ様でした&ありがとうございました。


以下、聞いたトークの雑な感想です。特に意識してなかったけどハードウェア系を中心に見ていた模様。

前夜祭

PHP帝国の逆襲!(を願うPHPerが話す最近のPHPについてのクイックツアー PHP7対応版)

前回のベストスピーカーにして、我らがHachioji.pmの主宰uzullaさんのPHPトーク。聴衆を弄りつつ盛り上げていくトークはさすが。

Perlワンライナー入門

「入門」ということなので正直、対象者から外れていた・・・

ワンライナーでよく使うモジュールを質問された時にワンライナーで解決するのは良かった。

我々にできるOSSとそのコミュニティの育てかた

主に会社としてOSSを開発し、育てていく場合の話。

趣味開発なOSSにはそのまま適用できるものではないが、参考になった。

1日目

Web由来の組み込みエンジニアの半年間のすべて 〜WebとiOSとBLEとハードウェアデバイスのこと〜

スマートロックロボット「Akerun」の開発に関するお話。発表者のkazuphさんとは懇親会でも耐久試験の話などいろいろでき、Akerunステッカーもいただけたので良かったです。

どうしてもPerlドローンを飛ばしたい人のためのハードウェアハック概論

既存のドローン(クアッドコプター)に電気的に介入して制御する話+ドローンを自作する話でした。暴走しないように電気的な対策を講じているのが倫理があって非常に良い感じ。

Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜

オブジェクト指向最高、DDD最高という感じでした。

非常に共感性の高いテーマでもあるので納得のベストスピーカー賞でした。

Yet Another Perl Cooking

低温調理の話。他のハードウェア系の人が安全対策しているのと対照的にヒューズなしの電源ハックなど明らかに倫理がないところがmoznionらしく「ロック」って感じで良かった。

大規模でも小中規模サービスでも捗る microservices な Web サービスのつくりかた

サービスが成長していくと自然とmicroservices的なものにたどり着くというのが納得感ある発表でした。

LT

全俺が選ぶこの日のベストLTは「(昔の) PHP が誇った最高の機能 register_globals の真実、そして未来へ」かなー。昔、PHPを書いていたことはあるけどここまで闇が深いとは・・・

2日目

Perlでゼロから作るコンテナ

Linuxシステムコールの基礎からコンテナの仕組みを学べる発表でした。Linuxの権限周りの説明などは同時通訳が大変そうでひやひやしましたが、とてもおもしろかったです。

Parallelism, Concurrency, and Asynchrony in Perl 6

この発表は本当に素晴らしかった。Perl6がもつ構造的な並列処理、並行処理、非同期処理の仕組みは(いい意味で)キメラ的に他の言語の良い所をとってきてくっつけていて興味深い。俄然Perl6を書きたくなってきた。

あと、Jonathan Worthington氏の英語は聞き取りやすかったので同時通訳なしでも結構いけた。

Profiling & Optimizing in Go

ほぼライブコーディング&デバッギングな発表でした。自分もgolangを書いているのでとても参考になった。

LT

CONBUのライブ設営が最高だった。

2015-08-20

io.js on Travis-CIでNode.jsのC++アドオンのビルドが失敗する件

Node.jsC++アドオンをTravis-CIでテストする際に、io.js@v3の環境でのみビルドエラーが発生していたので原因と対策を記録しておく。

※バージョン等の情報は2015-08-19時点のものである。

事象

io.js@v3.0.0の環境で以下のようなビルドエラーが発生する。

/home/travis/.node-gyp/3.0.0/include/node/v8.h:336:1: error: expected unqualified-id before ‘using’
/home/travis/.node-gyp/3.0.0/include/node/v8.h:468:1: error: expected unqualified-id before ‘using’
/home/travis/.node-gyp/3.0.0/include/node/v8.h:499:48: error: ‘Handle’ does not name a type
/home/travis/.node-gyp/3.0.0/include/node/v8.h:499:48: error: ISO C++ forbids declaration of ‘parameter’ with no type [-fpermissive]
/home/travis/.node-gyp/3.0.0/include/node/v8.h:499:54: error: expected ‘,’ or ‘...’ before ‘<’ token
...

原因

Travis-CIデフォルトGCCが古い。

Travis-CI(Node向け)のGCCのバージョンは以下であった。

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

io.js@v3用のC++アドオンをコンパイルするためにはC++11に対応したコンパイラが必要であるが*1GCC 4.6.3はC++11に対応していないためエラーとなっていた。

対策

暫定対処として、io.js用のテスト環境ではビルド前にGCCのバージョンを4.8.xに上げることによりエラーを回避した。

以下が対処を行った.travis.ymlである。

language: "node_js"
node_js:
  - "0.8"
  - "0.10"
  - "0.12"
  - "iojs"
before_install:
  - if [ "$TRAVIS_NODE_VERSION" == "iojs" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi
  - if [ "$TRAVIS_NODE_VERSION" == "iojs" ]; then sudo apt-get update -qq; fi
  - if [ "$TRAVIS_NODE_VERSION" == "iojs" ]; then sudo apt-get install -qq g++-4.8; fi
  - if [ "$TRAVIS_NODE_VERSION" == "iojs" ]; then export CXX="g++-4.8"; fi
追記

" container based infrastructure"(sudo:falseを指定)では上記の方法は使用できないが、以下の設定でできた。

language: "node_js"
node_js:
  - "0.8"
  - "0.10"
  - "0.12"
matrix:
  include:
    - node_js: "iojs"
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-4.8
      before_install:
          - export CXX="g++-4.8"
sudo: false

APT Sources and Packages - Travis CI

*1:というかio.jsで使用するバージョンのV8GCC >= 4.8を要求している

2015-02-01

Hachioji.pm 46で「Goを書いてたら、いつのまにかアセンブリを書いてた話」をしてきた

1/31に開催された Hachioji.pm #46に行ってきました。

Goを書いてたら、いつのまにかアセンブリを書いてた話

Goで最適化のためにアセンブリ書いた話をしました。

スライド

https://github.com/hideo55/go-popcount

参考:Goアセンブラ入門 - The Go Programming Language

追記:GoでPopCountやってるパッケージはすでに他にもあるけど、POPCNT使えて、かつPopCount単機能で使えるのが無かったので書きました。

LT

他の人の LTの雑なメモです。

  • @xtetsujiさん
    • 透過的に例外をキャッチ
      • ENDだとだめ
  • @tsucchiさん
    • DBの自動再接続
  • @ichigotakeさん
  • @akira1908jpさん
  • @mackee_wさん
  • @karupaneruraさん
  • @uzullaさん
    • PSR-7
  • @moznionさん
    • DBIx::TransactionManagerを参考にししてJaveに移植
      • Javaのtry-with-resource
  • @maka2_donzokoさん
    • Kichijoji.pmでやった話
    • iThread

2014-09-16

Hachioji.pm #43 に行ってきた

9/13に開催された Hachioji.pm #43 に参加してきました。

今回の参加者は10名。うち初参加3名でした。

LT

以下、雑なLTのメモです。

自分のLT

LOUDS-Trieの話をしました。

資料

2014-09-01

YAPC::Asia 2014で自然言語処理について発表してきました。

YAPC::Asia 2014 で 自然言語処理を支える技術 〜要素技術とPerlの活用〜 というタイトルで発表してきました。発表はペース配分を間違えて、時間切れになってしまい、見に来て頂いた方々には申し訳ないです。

発表資料は以下です。

ビギナー向けという位置づけなので、確率の数式などは出さないようにしています。

感想

今年は前夜祭から参加しましたが、非常に楽しかったです。

今回はPerl以外のトークが多かったですが、それが結果的にこれまで YAPC に参加してこなかった人を呼ぶ結果になり、そういった方々に Perl の文化を伝えるきっかけになったのではないかと思います。

なにはともあれ、yusukebeさんを始めとするスタッフの皆様、参加者のみなさまお疲れ様でした!

Chiba.pm

後夜祭的な感じでHUBで飲んでいたのですが、Chiba.pmな方々がいたので主催者多忙のためしばらく開催できていなかったChiba.pmについて話し合ったりできてよかったです。

ちなみに、Chiba.pm #5 は 10/11(土) に市川市文化会館で開催です。

過去のATND を見ていただくとわかりますが、今回の YAPC のスピーカーもなにげに参加してたりするので、お近くの方は参加してみてはどうでしょうか?