アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

Perl

知らないであろう @, % シジルのお話

こちらは Perl Advent Calendar 11 日目の記事です。 小ネタです。 社会人になって Perl と触れ合う機会が少なくなりました。Go と PHP を主に書く会社に入社するとこんな感じになります。 アプリケーションを書くスピードは断然Goの方が早くなってしまった…

Perl で簡単に n 文字ずつ区切る

Perl である文字列を n 文字ずつ区切って配列にする方法。 例として "abcdefghi" が与えられた時に 3 文字ずつで区切りたい場合は "abc", "def", "ghi" となることが期待される。 これを簡単に行う方法を思いついたので以下に記述。 sub sep { $_[0] =~ /.{$…

Perl で Protobuf を扱うために Google::ProtocolBuffers::Dynamic を使ってみる

こちらは Perl Advent Calendar 2018 の 25 日目です。 gRPC を Perl でやってみようと思ったのですがインターネット上に Perl で Protobuf を扱うような文献がなかったので、まずはここから書かないとだめでしょう!ということで内容を変更してお届けします…

XS で SV がスカラバリューであるか判定する

たまたま Perl のモジュールを漁っていると汎用性が高そうな関数を見つけたためメモ。 #ifndef isGV_with_GP #define isGV_with_GP(x) isGV(x) #endif STATIC bool is_scalar_type(SV *sv) { return !( SvTYPE(sv) == SVt_PVAV || SvTYPE(sv) == SVt_PVHV ||…

Hokkaido.pm #14 に参加してきました。

とても行きたかったので参加してきました! hokkaidopm.connpass.com 北海道自体が最高すぎる... ついでに Perl で作る極小機能しか持たないシェルの作り方について登壇してきました。 交通費、宿泊費は株式会社メルカリに出してもらったので感謝しています。…

Perl で Compiler::CodeGenerator::LLVM を用いて WebAssembly を生成する LT をしました

卒研発表で LT をしました。そのスライドです。

Package::Stash という凄そうなやつ

先日このようなツイートをした 凄い神モジュール見つけたhttps://t.co/bPdOXBRkiy— K (@CodeHex) 2018年1月25日 Package::Stash というモジュールの詳細は以下のリンクから metacpan.org

XS での pTHX/pTHX_, aTHX/aTHX_ について

今日は以前紹介した、List::Flatten::XS を更新してバージョン 0.03 をリリースしたのだが、リリースした途端に次のような issue が飛んできた。 github.com 内容はスレッド Perl でビルドができないというもので、一番最初のレポートが去年の 4 月頃になっ…

LLVM IR からバイナリを生成するための Perl スクリプト

以下のリンクの続き。 副産物として Perl スクリプトをコンパイルしてくれる Perl スクリプトを作成した。 codehex.hateblo.jp

Perl で Compiler::CodeGenerator::LLVM を用いて LLVM IR を出力する

約 4 年前になると思うが、@goccy54 さんが LLVM のライブラリを用いて、Perl のコードから LLVM IR を生成するといった夢のようなモジュールを作成されていた。 それが Compiler::CodeGenerator::LLVM である。 これをどのような感じで使うのかは、@papix …

ポインタで vector を作ってはいけないかもしれない

この issue を解決しようとしてデバッグしまくってた結果疑問が出てきた。 github.com それは STL の vector でポインタを使ってはいけない疑惑。

Perl XS デバッグを vscode で行う

タイトルの通り、vscode を使って XS のデバッグを行う。 環境は Mac OS X El capitan MacBook Air (11-inch, Mid 2012) で lldb を用いる。Perl は 5.24.1 で plenv を使って管理している。 まずはデバッグしたいプロジェクトを vscode で開き、launch.json…

Perl の隠れ演算子の紹介(2017)

この記事は「Perl Advent Calendar 2017」の 25 日目の記事です。 まさか全部埋まるとは思っていませんでした。これも皆さんのおかげ様です。 ありがとうございました! qiita.com Perl には隠れ演算子なるものが存在します。 これらは、言語開発者が意図し…

MXNet の基礎を Perl で学んでみた part 2

前回の「MXNet の基礎を Perl で学んでみた part 1」では NDArray api, Symbol api を組み合わせて計算を試した。今回は、前回使用した api も使ってデータセットをどう準備するか、ニューラルネットをどのように組み立ていくかのチュートリアルを行う。 以…

MXNet の基礎を Perl で学んでみた part 1

最近 MXNet の論文を読んだり、MXNet はこれから使われるのかどうかについて調査していた。 結構将来ありそうな感じがした。 MXNet についてのレポートです pic.twitter.com/n6gjOcxNIQ— K (@CodeHex) 2017年9月5日 そこで、何かしら基本になりそうなチュー…

AI::MxNet の char_lstm.pl を触ってみた

前々から LSTM に興味があった(何かしらの文章を生成させてみたいと思ってた)ため、今回 AI::MxNet の example に含まれている char_lstm.pl を触ってみた。 github.com LSTM については以下の記事が丁寧に解説している。 s0sem0y.hatenablog.com このサン…

plenv を使った環境で AI::MXNet を簡単にインストールする

もっと簡単な方法があれば教えてほしいが、公式のインストールガイドを若干変更することで、簡単に依存関係を含めインストールできた。環境は OS X で以下の手順。 brew install swig cpanm PDL Mouse Function::Parameters export MXNET_HOME=${PWD} # AI::…