mahoyaya’s diary

主に自分用メモです

Perl入学式とクソコラ

はじめに

これはPerl入学式 Advent Calendar 2016 の 17日目の記事です。昨日はmackee_w(マコピー)さんの「cpanとperldocの歩き方」でした。 非常にためになる記事で良かったですね!

とうことで、みなさんこんにちは。Perl入学東京でサポーターをしているmahoyayaです。 2016年の東京前期はフル出場しています。残念ながら後期に関してはタイミングが合わず第1回に関して欠場してしまいましたが…

さて、今日は何を書くのかというと、Perl入学式といえばpapix校長!papix校長といえばクソコラ!ということで今回は私が今年1年で作成したクソコラを紹介したいと思います。 先に書いておきますが、Techネタは一切ありませんw

生み出されたクソコラたち

ということで、生み出したクソコラとその時の状況を紹介していきます。

papix on the chair

いきなり記憶がおぼろげなのですが、誰かがこの椅子に校長を座らせたいと言っていたので作りました。 校長を使った最初のクソコラです。校長の笑顔と背景の雰囲気がベストマッチしています。

f:id:mahoyaya:20161217141006j:plain

papix ドリル!!!

これは2枚めの写真を見てドリルっぽいと思って作りました。後悔はしていない。

f:id:mahoyaya:20161217144512j:plain

元ネタ

f:id:mahoyaya:20161217144525j:plain

papix :innocent: Tシャツ

Perl入学式のサポーターであるgomaaa(ゴマ)さんが:innocent:Tシャツを着てきたときに作りました。 そのうち製品化しましょう(ぇ 元ネタは2枚目です。

f:id:mahoyaya:20161217141507j:plain

元ネタ

f:id:mahoyaya:20161217141452j:plain

the papix show

1人くらい足しても違和感なさそうだなと思って校長を足してみましたが、写真からだと思っていたより違和感があったw むしろ校長が主役に見えてくる不思議。

f:id:mahoyaya:20161217220715j:plain

Perl入学式サポーター in 札幌

これらはTwitterに流していないものです。 YAPC::Hokkaidoの翌日に二条市場に行ったのですが、前日に素敵な素材が流れていたので、雑に合成しました。

f:id:mahoyaya:20161217141858j:plain

f:id:mahoyaya:20161217140931j:plain

f:id:mahoyaya:20161217141853j:plain

元ネタ

f:id:mahoyaya:20161217141830p:plain

f:id:mahoyaya:20161217141840j:plain

さいごに

Perl要素一切なしですすめてきましたが、いかがだったでしょうか。Perl入学式はこんな感じで楽しくやっています。 「プログラミングをやってみたいけれど、どこから手を付ければいいのかわからないなぁ」なんて悩んでいるそこのアナタ! まずはPerl入学式でプログラミングの基礎を習得してみてはいかがでしょうか???

※きっと明日はためになる話をhtk291さんが書いてくれるはずw

第38回 診断ええんやで(^^) for ルーキーズに行ってきた -そして吉祥寺pmへ-

タイトルの通りですが、診断ええんやで(^^) for ルーキーズに参加してきました。

何度か参加していますが、今までと違うのは管理者参加ということでしょうか。 とはいえ、今回は諸事情により管理者っぽいことは何もしていないのですがw

さて、今回は徳丸さんが来たこともあってか8割近い参加者に来ていただき、部屋のキャパ的にも丁度良い人数だったのかなというのが個人的な感想です。

松本さんも少し張り切った印象で、いつもの回より少しテンション高めで少し詳し目に解説をしていた気がしましたw

受講されたみなさんも終始カタカタと持参のPCを操作し、メモ取りやハンズオンをされていました。

と、上っ面な感想ばかりですが、これも諸事情によるものです。 ということで、松本さんにネタにしてよいと言われたのでネタとして諸事情について書きますw

諸事情とは何なのか

実は管理者としてLTを頼まれていました。 しかし、松本さんのテンションも上がっており、受講者の質問もいつもより多い状態。 もしやこれは…と思っていたら、予感は的中して完全スルーで講義終了www

完全にデモ未遂事件です(違

というわけで、自分は講義の最中に終盤までに完成させなければというプレッシャーの中で、もくもくとテザリングしつつデモ環境の構築を作り上げたのですが、発表する機会はありませんでしたw

残念!

講義は大盛況でしたし全く問題ないのですが、折角作ったデモ環境がもったいないので、明日の吉祥寺.pm8でデモ環境を使ったトークをやることにしました。

興味のある方は、よろしければご参加ください!まだ間に合うよ!! http://kichijojipm.connpass.com/event/34598/

こちらからは以上です

成増の小太郎にいってきた

もともと何のお店が入っていたのか思い出せないのですが、成増の商店街に新しいラーメン屋が出来ました。 当初、大勝軒オープンと書いてあったのに、気付いたら小太郎という別の店になっており、いったい何があったのだろうと思ったのは記憶に新しいです。

ということで、その小太郎に行ってきました。 店の入り口には貼り紙があります。 まず目につくのは、ライス無料の表示。 並びにある家系ラーメンの武蔵家さんもライス無料ですが、小太郎はおかわりも無料の様です。 そして、選べる麺の固さが掲示されています。固さにハリガネという表現があることから、豚骨らーめんである可能性が高いと考えられます。

ということで入店。 新しいだけに清潔感のある店内。 注文は食券制です。味の濃さも選べます。 普通のらーめんにしようかとも思いましたが、白髪ねぎが食べたかったので、チャーシュー白髪ねぎらーめんにしました。味の濃さは普通にして、麺はバリかた。 画像はこちら。

f:id:mahoyaya:20160716220117j:plain

玉ねぎと角切りチャーシューが特徴的です。 白髪ねぎもうまそう。

といことで、さっそく一口。

まさかの魚介豚骨!!

豚骨と強烈な魚介系醤油のブレンドは初体験かもしれない。 麺も四角い感じで角があって珍しい。 味の濃さは普通にしたけど少ししょっぱいかな?という印象。

自分はそんなに魚介系好きではないので正直大当たりではなかったが、白髪ねぎはめっちゃうまい。スープの味が濃いからあう。ここで食べるなら白髪ねぎおすすめ。 チャーシューはトロトロ系でもガッツリ系でもない。チャーシュー重視の人にはお勧めする感じではない。

麺の固さハリガネで替玉をたところ、なんと玉ねぎと角切りチャーシューも付いてきました。これは嬉しいですね。

魚介系豚骨といことでリピは無いかなー?という印象だけど、白髪ねぎのある店は近くにあまり無いのでまた行くかもしれない。 そうそう、味噌味もあったので食べてみないとね。

以上

ヤパチーでスタッフしてきた

実際に行ってから1週間が経過してしまいましたが、YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawaに意識高いスタッフとして2日間参加してきました。

こちらは意識高いスタッフの様子です

やぱちーのサイトはこちら

yapcasia8oji-2016mid.hachiojipm.org

感想

 「ひかえめに言って最高」この言葉に尽きる。

 企画をしてくださった@uzullaさんをはじめ、会場の準備など全力で準備・対応してくださった@myfinderさん、最高に素敵な時間をありがとうございました。もちろんお二方以外のスタッフも最高にクールな人しかいません。この素敵な出会いにも感謝。

 また、実際に会場を提供してくださったMicrosoftさん本当にありがとうございました。いまだかつて無いくらいに最高のイベント会場でした。200人以上収容可能なスペース、そして、その全員が同時に使用しても耐えられるWiFi、あれだけの人数であれだけの暑さにもかかわらず全く問題ないエアコン、登壇者が映しだされる映像を手元で見られる返し、3種類から選べるマイク、正直どれをとっても最高以外の言葉が思いつかない。Twitterでも書いたけど、きっとこれだけ最高な設備を用意してくれるMicrosoftさんだから、間違いなくAzureも最高なので、みんな使うべき

Azure使っていくぞ!!!(機会があれば)

そして、影の功労者(MS社員)の方々も鉄壁の守りでイベントを支えてくれました。

スタッフとして参加した理由

 もともと本家YAPCには2010年くらい(あいまい)から参加していて、スタッフ参加も楽しそうだななどと思っていました。しかし、参加方法がよくわからんという事もあって一般参加してました。 今は時代も変わって簡単にコミュニティへの接点が持てるようになりました。connpassやdoorkeeperなど便利な世の中になりました。そんな中でPerl界隈のコミュニティにも少し顔を出すようになり、以前から興味のあったスタッフとして参加することができたといったところです。あと、81年としてはスタッフ参加しないわけにいかないw まぁ、最初にヤパチーをやると聞いた時は冗談だと思いましたけどw

トークについて

 みなさん素晴らしかった。自分はB部屋担当だったので主にB部屋のみですが、ベストトーカーになったそーだいさんのDB話は、完全にあるあるであり、皆の共感を得たのだと思います。 見ていないトークは是非動画でチェックしたいぞ。

 本当はトークもやりたかったのですが、プライベートなところで色々あったりと難しかったため、次のpapix回では何かやりたいところです。

おまけ

Gyazo Tシャツ頂きました!

かんたんPerl 読了

深沢 千尋さんの「かんたんPerl」を読みました。

まさに自分がPerlを学び始めるときにこんな本が欲しかったという本です。

この本はPerlの基本的な部分を学ぶことができるのですが、CGIの部分を除いてWindowsMacLinuxどのOSでも動作するサンプルを動作させながら学習することができます。 突っ込んだ部分は割愛されていますが、割愛といいながらも道筋は示してくれているので、どのあたりを学習すればいいのかわかります。

これからPerlをはじめる人は是非読んで欲しいと思います。

かんたん Perl (プログラミングの教科書)

かんたん Perl (プログラミングの教科書)

誕生日からの経過日数を出力するSlack Botを作った

掲題の通りなのですが、誕生日からの経過日数を出力するSlack Botを作りました。

経緯

子供ができてからたまひよのアプリを使っていたのですが、使い勝手が悪いし、生後何日かを確認するくらいしか利用していなかったので、SlackのBotにすれば家族で共有できるし、そっちのがええやんということで作成しました。

作り方

こちらのサイト(BotkitでSlackのBotをサクッと作る方法)を参考にBotを設置しました。 Botはここから作成します。 応答を返すだけならば特に難しいことはありません。 お手本通りにやればできます。

準備

Slack公式のBotkitはNode.jsを利用するためNode.jsのインストールが必要です。インストールされていないのであれば、環境に合わせてインストールが必要ですが、Mac/Linuxで特に理由がなければnodebrewを利用するのが良いでしょう。こちらを参照してインストールします。Windowsの場合はnodistが利用できるようです。こちらが参考になります。

Node.jsのインストール・確認コマンド例(bash)

$ curl -L git.io/nodebrew | perl - setup
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ${HOME}/.bashrc
# .bash_profileが無い。もしくは.bash_profileに.bashrcを読む設定がない場合は読みこむようにします
$ cat << EOF >> ${HOME}/.bash_profile
> if [ -f ~/.bashrc ]; then
>   . ~/.bashrc
> fi
> EOF
$ ${SHELL} -l
$ nodebrew help
$ nodebrew ls-remote
$ nodebrew install-binary v5.6.0
$ nodebrew use v5.6.0
$ node -e "console.log('hello world');"

Botkitのインストール

Slack公式のBotフレームワークであるBotkitを任意のディレクトリにインストールします。gitが無い場合はnodeのパッケージマネージャーであるnpmからインストールできるみたいです。コマンドは載せておきますが、自分は使っていません。

gitの場合

$ git clone https://github.com/howdyai/botkit.git <folder-name>
$ cd <folder-name>
# 依存関係を解決させる
$ npm install

npmの場合

$ npm install --save botkit

Botの起動

ここまでできれば、もうデフォルトのBotが起動できます。起動後にBotに向けてhelloと送ると応答を返してくれるはずです。

#xxxはBotを作って手に入るAPIトークンを指定します。
$ token=xxx node bot.js

誕生日からの経過日数を出力させる

jsファイルはこちらに公開しています。 ただ使うだけであれば、bot.jsとcalcBirth.jsをBotkitのディレクトリ内に配置します。

起動中の場合はBotを再起動した状態でyourname(実際は指定したコマンド名)をSlackで入力すると次の様な情報が出力されます。

Tue Oct 20 2015 22:47:00 GMT+0900 (JST)
Sun Feb 14 2016 17:18:32 GMT+0900 (JST)
満年齢:0
前回の誕生日からの経過月と日数:3か月と25日
前回の誕生日からの経過日数:116日

需要は無いと思いますが、せっかく作ったので自分メモとして残しておきます。

intel NUC NUC5CPYH にLinuxを入れて無線LANを使う

intel NUC NUC5CPYHで無線LANを利用した時のメモです。

※数カ月前にやったことなので場合によってはネタが古いかも。作業順序は特に最適化していないのでよしなにしてください。

※パスワードの暗号化について後述と書いておきながら書いていなかったので追記

環境

Fedora22 + intel nuc Network controller: Intel Corporation Wireless 3165 (rev 81)

最初はCentOSでやろうと思ったんですが、この機種に搭載されている無線LANのドライバは"kernel version +4.1 needed"なので、さくっと終わらせるためにFedora22に変更しました。

セットアップ

準備

Fedora22を自分の好みでインストールして、とりあえず有線LANを利用してお決まりのコマンドを実行して再起動します。

$ sudo dnf update
$ sudo shutdown -r now

するとカーネルバージョンが上がるはずなので、カーネルバージョンを確認。

$ uname -a
Linux fedora.localdomain 4.1.6-200.fc22.x86_64 #1 SMP Mon Aug 17 19:54:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

作業用にpciutilsを入れます。

$ sudo dnf install pciutils

ドライバのインストール

適当なディレクトリに無線LANドライバをダウンロードして展開後、ライブラリに追加してまた再起動します。

$ cd workdir

$ wget https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-7265-ucode-25.30.13.0.tgz

$ tar xvzf iwlwifi-7265-ucode-25.30.13.0.tgz

$ cd iwlwifi-7265-ucode-25.30.13.0

$ sudo cp iwlwifi-7265* /lib/firmware/

$ sudo shutdown -r now

認識されドライバが読み込まれているか確認

$ lspci
$ dmesg | grep iwl

以下のログが出ていればOKです。

[ 12.749723] iwlwifi 0000:02:00.0: enabling device (0000 -> 0002)
[ 13.189540] iwlwifi 0000:02:00.0: loaded firmware version 25.30.13.0 op_mode iwlmvm
[ 13.490190] iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 3165, REV=0x210
[ 13.490590] iwlwifi 0000:02:00.0: L1 Enabled - LTR Enabled
[ 13.491211] iwlwifi 0000:02:00.0: L1 Enabled - LTR Enabled
[ 13.689111] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 13.774546] iwlwifi 0000:02:00.0 wlp2s0: renamed from wlan0

インターフェースを有効化

インターフェースをUP状態に変更します。

$ sudo ip link set up wlp2s0

インターフェースが動作することを確認

次のコマンドでアクセスポイントがリストアップされることを確認します。

$ sudo iwlist wlp2s0 scan

WPA2のクライアントをインストール

wpa_supplicantをインストールします。

$ sudo dnf install wpa_supplicant

wpa_supplicantの設定ファイルを編集します。 "your said"の箇所に接続するAPのSSIDを設定し、yourwpa2keyにパスワードを設定します。

※pskの暗号化は後述

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=1
network={
ssid="your ssid"
key_mgmt=WPA-PSK
proto=WPA2
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=yourwpa2key
}

使わなくてもwepのパスワード設定が必要らしいので適当な値を入れておく。

$ echo 'KEY="s:dummyKey"' > /etc/sysconfig/network-scripts/keys-ra0

接続テスト

手動で接続してみます。これで問題なく動けば一安心

$ sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlp2s0 -Dwext

次のようなログが出るはず

Successfully initialized wpa_supplicant
wlp2s0: Trying to associate with x:x:x:x:x:x (SSID='your ssid' freq=5540 MHz)
ioctl[SIOCSIWFREQ]: Device or resource busy
wlp2s0: Association request to the driver failed
wlp2s0: Associated with x:x:x:x:x:x
wlp2s0: WPA: Key negotiation completed with x:x:x:x:x:x [PTK=CCMP GTK=CCMP]
wlp2s0: CTRL-EVENT-CONNECTED - Connection to x:x:x:x:x:x completed [id=0 id_str=]

DHCPならdhclientを実行してIPをもらう

$ sudo dhclient wpl2s0

$ ip addr

パスワードを暗号化する(追記)

次のコマンドで暗号化されて出力された認証キーで "/etc/wpa_supplicant/wpa_supplicant.conf" の yourwpa2key(pskの値)を書き換える。 重要なポイントは"Your Wi-Fi Netowrk Name"のダブルクォート(")で囲まれた箇所をWi-Fiルータで設定されたSSID名にし、yourwpa2keyの箇所を先ほど接続に成功した平文のパスワードにすることです。

$ wpa_passphrase "Your Wi-Fi Network Name" yourwpa2key

ちなみに、パスワードをヒストリー(上キーを押すと出てくる履歴)に残したくない場合は、 一旦、ログアウトしてから再度ログインし、bashの場合はコマンドを実行したユーザーの~/.bash_historyから消したい履歴を削除して、 再度ログアウトしてから再ログインすると消すことが出来ます。

箇条書きにすると次の通り。

  • ログアウト
  • ログイン
  • ~/.bash_history を編集
  • ログアウト
  • ログイン

何故ログアウトするのかというと、履歴がファイルに出力されるのが、ログアウトを実行したタイミングだからです。

手動で動作させた設定をコンフィグに登録する

インターフェースは-iの後ろにスペースを入れると動作しないので注意すること

$ sudo vi /etc/sysconfig/wpa_supplicant
INTERFACES="-iwlp20a"
DRIVERS="-Dwext"

systemdに自動起動登録する

$ sudo systemctl start wpa_supplicant.service
$ sudo systemctl status wpa_supplicant.service

わからない人のためにsystemdのコマンド一覧

有効化
$ sudo systemctl enable wpa_supplicant

無効化
$ sudo systemctl disable wpa_supplicant

稼働中のサービス
$ sudo systemctl list-units --type=service

しぼらず確認
$ sudo systemctl list-unit-files

定義されているサービス一覧
$ sudo systemctl list-unit-files --type=service

NetworkManagerが起動しているとアドレス設定がうまくいかないので止める

systemdで完全に止める場合は次のコマンド

$ sudo systemctl disable NetworkManager

インターフェース毎に制御する場合はインターフェースのファイルを編集して、NM_CONTROLLED="no"を追記する

$ vi /etc/sysconfig/network-scripts/ifcfg-wlp2s0
NM_CONTROLLED="no"

NetworkManagerを停止した場合はboot時にnetworkが起動する様に設定

これ忘れると泣ける

sudo chkconfig --list
sudo chkconfig network on
sudo chkconfig --list

intel NUC NUC5CPYH は消費電力6Wで最高。

ただし、RAMは8Gまでなので重い処理は辛い。

おわり