Anagura's.....

たまに書く

scriptコマンド

UNIX/Linuxコマンドは専門学校では使わないらしく,編入生にmacのターミナルに慣れてもらおうと 自宅に眠っていたソフトウェア演習の参考書を持ってきた.

ターミナルコマンドでOS X を12倍深く使うための本

ターミナルコマンドでOS X を12倍深く使うための本

このターミナルコマンドでOS Xを12倍深く使うための本.だが, sierraになった今でも有益な情報が多いし OSXといいつつプロセスや環境変数,パイプの概念などが幅広く抑えられている. B3になった今でも知らなかったコマンドが書かれていて,ちゃんと読んでおけばよかったなぁと後悔している.

これ系の本ではシス管系女子とかが漫画でわかりやすい印象がある.

まんがでわかるLinux シス管系女子(日経BP Next ICT選書)

まんがでわかるLinux シス管系女子(日経BP Next ICT選書)

まんがでわかるLinux シス管系女子 2(日経BP Next ICT選書)

まんがでわかるLinux シス管系女子 2(日経BP Next ICT選書)

Okinawa.pm #4 エイプリルパールに参加しました

Okinawa.pm #4に参加しました. 日付が4/1だったので エイプリルパールというテーマの元行われました. Togetherにもなっていました

場所はララプリモ2F シナジールームでした. wifiのアクセスポイントが消滅していたという謎の事態に見舞われましたが,テザリングで事なきを得ました.

今回も前半はもくもく会を行い,その後トーク(LT)をクジ順で行いました. 僕は前半でAcmeモジュールを完成させ,Readmeを書いてリリースしたりしていました. Okinawa.rbから(ぺんさん)https://twitter.com/tompngが参加していたので,以前琉大でRuby Kaigiした時の話なども上がっていました.


トーク

詳細はOkinawa.pmのサイトに多分乗るのでそこを見てください. 発表順に感想を載せていきます

  • @cat2koban さん
    • 難読化の話. Acme::EyeDrop面白いですよね.AAを#で表せれば,好きなAAで作れるのも魅力だと思っています.
  • @touba_rumba さん
    • 噂には聞いていたAppleScriptですが,実際に使用されているところを見たのは初めてでした.
    • Macでいろいろな処理を自動化する際にAppleScriptを用いると確かに便利であると思うので調べてみたいです.
  • @tompng さん
    • Quine でまさかのアニメーションを作るという,凄まじい発表でした.
    • Rubyの方ですが,Acmeモジュールの精神を感じました.他の言語でもあんなに出来るのすごいな…!
  • @mayutsuna さん
    • まさかの卒研発表でした.実際に実現化されると面白そうです.
    • 昔あった日本語のサーチエンジンを改良したようなwebアプリケーションになるのかなとか思ったりしました.
  • @yasuXS さん
    • MinillaはAcmeモジュール作る時に使ったことがありましたが,XSを作る際にも便利という内容でした.
    • XSでは配列やハッシュにも専用の型があり,それを返すことが可能.
  • @CodeHex さん
    • XSの文法や参照カウントなど,XSならではのチュートリアルでした
    • やはりCの世界でもあるので,メモリ管理などは気を使わないと行けない.逆にCベースに考えれば設計は可能という印象です.
  • @perlackline さん
    • @_の時点では参照であり,そいつは実体を変えることが出来るという衝撃の事実
    • つまりmy($hoge) =@_; したときに初めてコピーされるということは,高速化を追い求める処理の場合わざわざ変数にいれなくても良いのかなとか思いました.
    • 流石セラさんという印象が強かったです.
  • @adokoy0001 さん
    • エイプリルフールなQuineでした
    • 置換を利用するとQuineが作成出来るという事でQuineの初歩の考え方が理解できました.

XSの発表が2つとQuineで結構盛り上がりました. XSは今日の感想とmoduleを眺めた感じ,魔改造されたC言語という印象を受けました. 実際にmoduleを作成したり,写経してXSも少しずつ勉強したいです.

あとQuineは極めたい.Acme感がある.


LTしました

今回はエイプリルパールということで,タイトル詐欺かつ超理論でAcmeモジュールを作成するという内容で発表しました. (PerlMongerの生態についての研究と言いつつ最終的には寿司の話に収縮する…)

実際に作成したAcme::HowToMakeSushiについてはこのエントリを御覧ください.

Acme::HowToMakeSushiをリリースした

ということでCPANモジュール第2弾 Acme::HowToMakeSushiをリリースしました🎉

githubはこのようになっています

github.com

metacpanもこのようになっています

metacpan.org


制作背景

多くのプログラマーが愛してやまない🍣と多くのPerlMongerが愛してやまないPerlプログラムはほぼ同値な関係ではないか. だったらこの二つを同時に作成出来ればPerlMongerの生産性があがるのでは無いかという発想の元生まれたmoduleです. 尚このモジュールはOkinawa.pm #4 エイプリルパールで発表しました.リリースしたのは4/1なのでお察しください

使い方

Acme::HowToMakeSushiはcpanmなどでインストールすると,本体の他に Acme::HowToMakeSushi::Photoもインストールされます. これらは同時に使用することが出来ない仕様となっています.

HowToMakeSushi

HowToMakeSushiはexit codeが0であるPerlプログラムであるならば寿司を完成させます. ただし 誰もお前を愛さない 的なコード.つまりexit codeが0以外のperlプログラムを作成した場合 あの漫画 っぽいメッセージと共に崩れた寿司を作ります.

実際に試してみると f:id:shimitakax:20170403093604j:plain こんな感じに寿司が出来ます.

dieすると f:id:shimitakax:20170403093646j:plain 誰もお前を愛さないメッセージと共に崩れます.

動作原理

ENDブロック内で $? の値に応じてAAをヒアドキュメントの形で printに渡しています

HowToMakeSushi::Photo

AAだけではつまらん!! 実際に現物を作れよ!!との声に答えて::Photoではjpgデータを出力します.

 perl -MAcme::HowToMakeSushi::Photo -e '' >sushi.jpg

などとすると

f:id:shimitakax:20170403094328j:plain

と寿司が出来ます.

動作原理

printを出力するところまでは先程と同様ですが,今回は予めbase64エンコードしたjpgデータを用意しています. これをMIME::Base64を用いて,デコードしてprintしています. つまりAcme::Cakeのアルゴリズムを使っています. 画像をbase64エンコードするツール


今回もモジュール雛形作成はMinillaを用いて行いました.cpanfileを作成する際に

perl Build.pl
mymeta-cpanfile --no-configure >cpanfile

などとすればいい感じにcpanfileを作ってくれるので楽です.尚cpanfileを作成するにあたっては scan-prereqs-cpanfileなどというCPANモジュールのコマンドも存在しているので,詳細は調べたいと思っています.

Minillaでモジュールを作成する場合 *.pmファイルの =encoding utf-8以降の部分にSYNOPSIS等の記述を行えば,Readmeにもいい感じに反映されます.すごい.

3月に引き続き2ヶ月連続Acmeモジュールリリースが達成できたのでちょっと嬉しいです. 尚このモジュールをリリースしたのは4/1なのですが,3/31がリリース日となるエイプリルフールもありました.

YAPC::Kansai 2017 OSAKAでLTとかした話

いきさつ

こんにちは.八雲アナグラ(@AnaTofuZ)です. 今回はYAPC::Kansai 2017 OSAKAに参加したのでレポートです. 前回のHOKKAIDOは講義でいけなかったので,Kansaiが人生YAPCでした.


~前夜祭0次

沖縄の大学生なので,今回は那覇空港から伊丹空港です.

その後,新大阪に高速バスで移動となりました.結構スムーズです.

一応学生なのでJPAさんから交通費等々を支給していただきました. 941さんにビジネス沖縄と突っ込まれましたが

偶然にも那覇空港Kさん(@CodeHex)さんと合流したのでそこからは二人で行動していました.

その後は有志数人で前夜祭0次会でした.大阪に来て初の粉もの…美味しかったです. このタイミングで長野の大学院生の方とも知り合いになりました.

そして前夜祭です!!

前夜祭

前夜祭ではpapixさんやcharsbarさん方の開発環境を見せる! という内容でした.

前夜祭とか0次会でもそうだったのですが,YAPCでは「普通に目の前で飲んでいる人が実はすごい人」な経験が多かったです. (単純にあまりPerl会の方々を知らないのものあるのですが…)

papixさんのvimでjjでESCはPerl入学式in沖縄第一回で確か披露されていて,そこからずっと使っています. charsbarの左手で全部やるとか,sagoさんのスクリーンショット+メモ(macだとMapture )は興味深かったです.


その後は前夜祭の二次会に行ったり,Acmeモジュールを書いていたりと気づいたら2時くらいでした. 遠足の前日に寝れなくなる小学生っぽさを感じながら0日目は終了しました.


YAPC当日

とりあえず宿泊したホテルで偶然同じだったyasuさん,maskystさんと食事を取り,YAPC会場に移動です.

Tシャツだけかと思っていたのですが,バッグとかモバイルバッテリーとか色々いただきました. 会場のスクリーンも大きい(A会場)ですし…おおっすげぇっ…って言ってました.以下聴講したトークの感想(抜粋です)

深沢千尋さん

かんたんPerl の深沢さんです. もともと社内向けツールとして以下に作業の省略化をするというところでPerlを使ったそうです. プログラムは第四段階(ワンライナー,社内向けツール,オーダーウェア,世界のため)のリリースがあるなども,再発見でした.

個人的にはプログラムは短くしていくのがより良いと思っていたのですが, 正規表現も空白と改行を多くして見やすくする.またワンライナーよりテンライナーとして細かく分けて行くのが良いよ!などなど….

この辺UNIX哲学っぽさが入ってくるような印象を受けました.メンテナンス大事 まだPerlワンライナーを量産して作業効率を図る…ということはしたことが無いので,味噌蔵をしっかりと作っていきたいです.

高速化の初歩 (@risouさん)

前日の前夜祭(2次会)で初心者向けなので〜などとの事でしたので,気になって行きました. 内容は素数を求めるプログラムを例にして,実装でどれだけ高速化できるか.というものでした. 個人的には高速化といえば,アーキテクチャを良くして並列実行させて,C言語で書いて…だったので,同じPerlプログラム上でここまで早くなるのか…!と衝撃的でした.

素数プログラムは講義で触れた(講義ではamdahl則の実測のために並列実行させた程度)のですが,当時はアルゴリズムを探したりすることが無かったので,アルゴリズムの有意性を再確認出来ました. そういえばプログラムはアルゴリズムがあってこそみたいな話を聞いたことがある….

あと関数呼び出しって時間がかかるんですね…!

Vue.jsで作るSPAから学ぶMVVM、非同期処理、その光と影 (しんぺい@猫型技研さん)

webApplicationはcakePHPとMojoliciousで遊んだくらいだったのですが,その際は結構URLバンバン変わった実装でした. もとい,そこまで踏み込んだ事をあまりやったことが無かったので,ちょっとググったりしながら聞いていました.

中ではGUIを参考にしながら,極力ブラウザの機能を使っていく. またGUIアーキテクチャパターン(MVC,MVVM)などを参考にして,voidメソッドのやり取りで完結させる.などなどでした. 非同期処理のレースコンディションの話などは,結構興味があったのでちょっとわかった気になりました.(あくまで気です)

PerlはWebApplicationとの繋がりは必要不可欠と思うので今後勉強していきたいです.

Webアプリケーションのキャッシュ戦略とそのパターン ( @moznionさん)

噂に聞いていたmoznionさんのトークでした. Webアプリケーションはあまり関わったことが無かったので,YAPC前は「キャッシュ…アーキテクチャ…?」という認識でした.(それこそヘネパタ,パタヘネの世界) 実際の業務では安全性(webアプリケーションが壊れないこと)が何よりも重要だったり. 何よりもキャッシュはあまり使うなという衝撃…moznionさんのトークも相まって面白かったですが,やはりwebアプリケーションの知識がもっと欲しいなと感じました.

お昼

お昼は前夜祭の場所で他の学生支援を使ったメンバーと小グループを作り,企業の方とお話しながらでした. いつも感じてることや,就職してからの事などについて質問したり,業務内容を紹介していただいたりしました. お弁当も美味しかったです…!

Mojoliciousではじめるマイクロサービスアーキテクチャ(@maskystさん)

okinawa.pmのmasakystさんです! MojoliciousでAPIを作ると結構簡単に作れるよ!という内容のトークでした. 以前PerlAPIを作ろうとしたときはAmon2を利用したのですが,Mojoliciousで作ると結構シンプルに色々作れるなという印象でした.

実際に業務でAPIを作成する際の考え方,構成方法などについて初めて見ることが出来たと思います. (いつもAPIはあるものを利用するばかりだったので…)

Perl to Go(@codehex さん)

同じくokinawa.pmのKさんでした! 今回はLTの僕をいれると3会場全てにOkinawa.pmが立つという…!! プロセスやオブジェクトなど,個人的にKさんに聞いたことがある(オブジェクトに到っては新大阪への移動バス内)の話が多く面白かったです. Go言語はTour of goを多少触った程度なので,少しづつ触っていきたいと思います. こうしてみるとPerlではプロセスのforkがやりやすいけれど,Threadはあまり…などの特色が根底ではあるけれど移植は100%不可能でもないとの間隔を覚えました.

木本 裕紀さんのセッション会場に移動しましたが,時間が時間だったので,終盤でしか聞くことが出来ませんでした…. ただ,ちょっとスマホからネットワーク経由でブラウザの表示を変える部分のデモを見ることが出来ました. その他の時間ではLTの資料直したりAcmeリリースしてたりしてました.

PerlのWebアプリケーションをデプロイする時に僕達が考えたこと (@papixさん)

実際まだ開発とデプロイが分離されている環境で作業したことが無いのですが,実際の運用開発の面ではこのような事を考えないと行けないというのがわかりました. トークの中でS3というWordがあり,検索してみるとAmazonAWSの1つであり,この辺の知識も必須だよなー.などと考えていました.

きらびやかなWebアプリケーションの裏には泥臭い作業があって,さらにチーム連携やコストを考えないと行けないなどなど. 企業で戦っていくには必要な知識だらけでした.

カヤックのゲーム開発・運用の「今」 力技と効率化の先に我々が目にしたものとは(macopyさん)

カヤックでリリースしているソシャゲの裏側を見ることが出来ました. サーバーサイドエンジニアの業務がイメージとは別方向で多岐に渡っているなという印象です.(実際にデプロイする全てを把握する必要があるなど…)

色々と環境を作る必要がある時はDockerを利用(ただしメモリやCPUは有限なのでDBはホストに配置したり定期的に消し去ったりする)などなど….

Dockerはちらっと触ったのですが,使い捨てられる試験環境という感じが強いのかなという印象でした.

Perl ウェブ開発の中世 〜CGI と Plack の間〜 (@xtetsujiさん)

てつじさんとはPerl入学式で何回かお会いしたことがあったので,気になっていたトークの1つでした. こういった業界の歴史の話好きなので嬉しいです.(世界史っぽい) 僕はCGIという単語を知る前にPerlを知ったので,あまりPerl=CGIという構図が無かったりします. ですが,結構古くからインターネットとか変わっている人に話を聞くとPerl=CGIであるので何故そうなのか気になっていました. 今まではPerlしか無かったからPerlを使ってきたんだ!というのが歴史のようですが,これからのPerlは 「むしろPerlだからこそ」という方向にシフトしている事を感じました.

はてなシステムの考古学(motemenさん)

てつじさんと同じく業界の歴史の話でした. はてなと聞くとはてなインターンの強烈っぷりが良く聞かされるので恐ろしい会社(技術力的な意味で)だったのですが,歴史を追ってみても凄まじかったです. (はてなブックマークが2泊3日で開発が終わるなど…)

50%でリリースするという50%理論はついつい100%を見て完成させないというよりは,物事を適切に細かくモデル化を行う. その中のコア機能にのみ集中して50%でリリースするという意味なのかなぁなどと思いました.

そしてこの辺でMBPのバッテリーが20%に近づき,LTにタイムスケジュールが近づいていました.


LT

というわけでLTの時間です. 今回は勢いでLTに応募してみたら,まさからのLT合格…! 応募フォームの内容を思い出すと確かPerl入学式とAcmeについて話すと書いた覚えがあるので,YAPCの前夜祭と当日でスライドとモジュールを作成しました.

minilaとかテストなどは存在は知っていましたが,触ったのも含めてLT採択されてからなので,かなり勢いだけで作成しました.

github.com

これ自体はたかはしさんのAcme::Prepara を参考にして作らせて頂きました!

ただ今現在はかなりバグが多いのでしっかり機能を追加したりとメンテしていきたいです. トーク自体は緊張しましたが,最後まで噛むこと無く(たぶん)出来ることが出来,終わった後はまたやりたいと思いました.

LTは他にもおささんぶろるっくの話や windowsperlをbuildすることや,あずまさんいっぱいでてきたりとかスケジューリングの話がありました.

そしてmakamakaさんのLTを間近で拝見しましたが,これが…これがYAPCのLT…!と衝撃を受けてました(面白すぎる…)


Keynote

アセンブラ川柳やアセンブラかるた,パンチカードなど.コンピューターの歴史と関わりについて解説をしながら 次第にPerlの話へと流れていく講演でした.この時代のマシンはKUE-CHIP2などの学習用マイコンしか触ったことが無いので リアルタイムで触っていた方が結構いたのも驚きでした.

Perlマインスイーパーを解析していくことや,USBで自動制御を行うなどwindowsならではのハックなどもあり 自分が思っている以上にPerlはなんでも出来て,かつコンピューターに詳しくない人でも楽しめるものが出来るのではと印象を受けました.


懇親会

懇親会では憧れのAcme大全著者のmakamakaさんとお話することが出来ました! Acme::MorningMusume に至るまでの歴史などについて教えて頂きました. Acme大全は無いけれど…と,ペンライト頂きました! ありがとうございます!

また941さんに「ビジネス沖縄」といじられたり,小林晋也さんともお話することが出来ました. その結果Okinawa.pmにファームノートから人を呼んでいただけるととかなんとか…!!

以上ざっとまとめたYAPC::Kansaiです.(感想が小学生並み)

次回YAPC::Fukuokaではトークしてみたいですね.あと最初からアルコールいれて参加したい!!

さくらクラウド(身内ネタ)

さくらクラウドipv6しか無理なんですが,実はwifiipv6じゃないんですよね…

多段sshとvnc接続

タイトルがいい感じですが講義のメモです. OSの講義ではos.cr上にVMを立ち上げて,これをどうこうするのですが こいつには学外からは直接sshできず,一旦yomitan(shell.ie)を経由しなければなりません. 毎回ssh yomitanしてからも手ですが,面倒くさいから多段ssh(一部を踏み台にして,あたかも直接接続しているようにする) の設定を行います

参考サイトは此方

qiita.com

qiita.com

ローカルの設定はこんな感じです(~/.ssh/config)

Host yomitan
    HostName    yomitan.ie.u-ryukyu.ac.jp
    port    22
    IdentityFile ~/.ssh/ie_rsa
    User    e1557**
    StrictHostKeyChecking no

Host os.cr
    HostName os.cr.ie.u-ryukyu.ac.jp
    User e1557**
    IdentityFile ~/.ssh/ie_rsa
    ProxyCommand ssh -W %h:%p yomitan

これで

$ ssh os.cr

するとos.cr.に直接行きます.やったね.

さてここからですがos.cr上のVMvnc接続を行います. これも学内ならなにも考えずにできますが,学外からでは先程の多段sshを使う必要があります

まずはvncポートを確認するために os.cr上で

$ ie-virsh vncdisplay 01 

などをして,表示された番号に +5900 したものがVNCポートです. ちなみに defineした時にパスワードが自動出力されるのでメモっておきます

ここでmac

$ssh -L 10024:localhost:5900(さっきの) -N os.cr

を行い Finder のGo->Connect ServerもしくはChicken of the VNCを利用し localhost:10024 にパスワードを付けて接続しましょう 上のコマンドの意味はos.crに10024で接続し,localhost(ここではos.crのこと)上の5900番ポートにssh ということです.(多分)

な画面が出れば終了です.めでたしめでたし

ポッピンQ

普段まとめると言ってまとめてないので.

ポッピンQ見てきました.

www.popin-q.com

サザンプレックスしかやってなかったので,98番で古島まで行ってそこから何故か徒歩で向かいました. 帰りのバスがある予定だったのですが,19:30上映なのを19:30終了と誤解し,帰りは友人(まめ君)に送ってもらいました. この場を借りて厚く御礼を申し上げます.

映画の内容はプリキュア+まどマギ+アイマス+インド映画でしたね.ダンスが多かったです. 3DCGなダンスはフレッシュプリキュア!以降のプリキュアで恒例となっているのですが,東映劇場作品だけあり ぬるぬると動きました.ポッピン族(マスコット的なキャラ)のダンスもあったのですが,綺麗でした.

ストーリーは王道.悪く言えばありがちなストーリーですね.まぁ悪くは無かったですが,近頃の「この世界の片隅に」とか「魔法少女まどか☆マギカ」ほどパンチの有るストーリーではなかったですね. ただメッセージは強く,特に自分や現実とどう向き合うかが主軸に置かれていると思います. キャラクターも可愛らしく,気力を回復するには良いアニメ映画でした.

パンフレットは売り切れていたのですが,入場者プレゼントもらいました.

映画の最後に,「魔法少女まどか☆マギカ 後編 永遠の物語」らしく次回作への予告(のようなもの)が入り終了でした. アニメ映画でやるのかな.地上波でやるのかはわかりませんが,新キャラもあるようで楽しみですね.