cat2koban の 備忘録

catのおてても借りたいなあ

Perl入学式というきっかけ

これは春のPerl入学式ブログリレー4日目の記事です。

 

昨日は id:anatofuz さんのエントリでした。

今後学習を支える基盤となる母国語が身につくなど,各地のサポーターを始めとするエンジニアコミュニティの一員になれるといったPerl入学式を完走するとできるようになることについて挙げられていました。

 

似たようなことになりますが今回,僕はPerl入学式をきっかけとしておきた出来事についてお話ししたいと思います。

 

エンジニアコミュニティへの参加

 Perl入学式に参加したのをきっかけに,同級生の id:codehex くんに誘っていただき,Okinawa.pm という沖縄のPerl Mongerの集まるコミュニティに参加しました。

Okinawa.pm のブログがこちら👇

Okinawa Perl Mongers

 

 その当時,僕は実際に働いているエンジニアの人たちの集まりで,みなさん年齢も離れており,学生の僕がその場に馴染める雰囲気なのか....キッチリカッチリしていそう,怖い人とかいるのかな?など様々な不安がありました。

そんな不安をよそにまさかの開催場所は居酒屋。お酒を嗜みながら,PCを開いてLTを行うといったものでした。そして参加されていたエンジニアの皆さんも優しい方ばかりで,Perlというプログラム言語には,こういうモジュールを公開しているサイトがあるんだよ!など,色んなことを教えてくれました。

そして日が経ち,そのコミュニティで僕はLTをする機会もありました。

その時のスライドがこちら 👇

www.slideshare.net 

人前に出て発表を苦手としていた僕はいつのまにか,地域のエンジニアコミュニティで発表をしていました。

考えてみると僕はPerl入学式に参加したことをきっかけに,こうやって地域のエンジニアコミュニティに参加したり,他の勉強会にも興味を持って参加したり,カンファレンスとよばれる,エンジニアの技術トークを行う大きなイベントにも足を運んだりと,興味が興味を呼んで色々と行動を起こすようになりました。行動を起こすようになり,エンジニアとの繋がりも増え,僕が悩んだり,困ったりした時に一緒になって考えてくれる大学の友達も作ることができ,共に技術を高め合う仲間も見つけることができました。ちなみに昨日のエントリを書いた id:anatofuz さんはPerl入学式をきっかけに彼女ができたようです。 今ではコミュニティメンバーの1人の,ホテルシステムの開発,研究を行っている企業の社員さんにお声がけをしていただき,アルバイトエンジニアとしてお仕事に携わることができています。Perl入学式で学んだプログラミングを,今はお仕事で活用できています。プログラミングを学ぶPerl入学式という機会があったからこそ,今の僕があると思っています。(唐突な無理矢理感)

 

あなたもPerl入学式をきっかけに,プログラミングをはじめてみませんか?

 

明日は, @uniuni_sea さんです,お楽しみに٩( ᐛ )و

 

 

Shell Scriptで書かれた作業時間管理ツールをPerlに書き直す (序章)

これはPerl Advent Calender 2017 20日目の記事です。

広告

YAPC::Okinawaは現在,カンファレンス参加チケット・トークプロポーザルを絶賛募集中です!

yapcjapan.org

この広告は,90日以上更新されていないブログにのみなんちゃらかんちゃr

はじめに

普段は南の島の大学の4年生やってます。絶賛卒業研kうっ...頭が..(ノートはここで途切れているようだ...)

よくバイトや研究をしていて,作業の開始時間と終了時間を簡単に記録できたらいいななんて思うことがありました。 Terminalで簡単に管理できる作業時間ツールでも作るか,と意気込んでいたその時。

タイミングよく友人がShell Scriptでそのツールを書いていたので,勉強がてらそれをPerlに書き直すことにしようと決めました(┐「ε:)

友人の作成した作業時間管理ツールがこちら。

github.com

checkは研究時間を記録するために作られました。基本的な使い方は指定したプロジェクトにcheck-in, check-outをするというシンプルな機能です。複数のプロジェクトに対応しているので毎日の活動を記録するのに最適です。check-inした後もバックグラウンドで動いていないのでコンピュータを再起動したりしても問題ありません。

ふむふむ,すごい(語彙ry..

Perlへ移行

僕がPerlで書き直す上で年内に移行したい機能たち

  1. check man
    使い方を表示してくれる help みたいなもの

  2. check in <project_name>
    作業時間の記録を開始。

  3. check out
    作業時間の記録を終了。


今回は序章ということもあり(オイオイ...),項目1. check manまでの移行に関してまで書きます。
生暖かい目で見守っていただけますと幸いです。

manオプションの移行

書き直す前のShell Scriptではこんな感じ
- 受け取ったオプションを if 文で分岐かけてそれぞれの処理に流す感じ。

main() {
  #$1がないなら終了する
  check_nonactive $1
  #コマンドの実行環境の確認
  check_database

  #$HOME/checkに移動する((
))  cd $dirpath
  #実行状態の確認
  if [ $1 = "in" ] ; then
    check_in  $1 $2

  elif [ $1 = "out" ] ; then
    check_out

~~ 省略 ~~
  
  elif [ $1 = "man" ] ; then
    check_man
  fi

  #元のディレクトリに移動する
  cd - > /dev/null
}

main $1 $2 $3

ひとまず,terminal上で check <オプション> てな感じでやりたい。 モジュールを自分で作って使ってみたいなとか考えて,Shell で書かれたものとは違うファイル構成にしました。下図がその構成f:id:sorehaedamame:20171220004113p:plain

CLI/ 以下にIN, OUT, Man, etc...とオプションごとに作る予定です。 と,ここで書き直した様子を。。

まずpcheck というファイルがこんな感じで。

1 #!/usr/bin/env perl
2 use File::Spec;
3 use Cwd 'getcwd';
4 unshift @INC, File::Spec->catfile(getcwd, "lib");
5 require Check::CLI;
6 
7 exit Check::CLI->commands(@ARGV);

モジュールが入ってる lib のPATHを@INCに入れてあげる。
最後に exit Check::CLI->commands(@ARGV); で入力したオプションをCLI.pmに渡してあげる

package Check::CLI;

use strict;
use warnings;
use utf8;
use Data::Printer;
use Check::CLI::Man;


sub commands {
    my ($self,$function,$project_name) = @_;

    exit print "check requires function name!\n" unless defined($function);

    # function によって,実行処理を変更
    for ($function) {
        # function が man なら各コマンドの説明
        if (/man/) {
            exit Check::CLI::Man->man();
                }elsif (/IN/){
                        # check in の処理
                }elsif (/OUT/){
                        # check out の処理
                }
    }
}


1;

$functionが定義済みか確認 受け取ったオプションが何か判断して,それぞれの処理を行うモジュールへ。

package Check::CLI::Man;

use strict;
use warnings;
use utf8;
use feature qw/say/;

sub man {
    my $self = shift;
    say " ";
    say "  check is a easy time logger tool.";
    say " ";
    say "    check has some functions.";
    say "      check in [project] : You can start logging time.";
    say "      check out : You can stop time logging.";
    say " ";
}

1;

man()が呼ばれたらとりあえず使い方をsaysaysayしていく。
これで簡単にmanオプションまでは移行しました。
現在はcheck-inの機能の移行を進めているのですが,SQL周りで苦戦してます。
現在移行中のリポジトリがこちら⬇︎

github.com

広告

YAPC運営ブログも更新中です!
移動手段や沖縄の美味しい料理のお店,治安のないお土産の情報などについても公開しております!
現在トークも絶賛募集中です!皆さん是非お応募しましょう!

docs.google.com

検討事項

  • SQLite3辛い....
    ただひたすらに書いて慣れるしかないんだ...( 返事がない,ただのしかばねのようだ )
  • Moo要素をどこに盛り込もうか
    実は当初の目的は, Mooを使って移行するぞ!っていう意気込みの元移行に取り掛かっていました....でも書いてるうちに,あれ,これMoo使わないで動くのでは?.....( use Moo; を消すたばの姿 ) あ....動いた...うっうっ...
    ドキュメントの流し見よくないですね。気をつけます。

最後に

ここまで読んでくださりありがとうございます。
年末に移行を終えたらブログを続けて書こうと思ってます。
( 投稿されなかったら誰か「移行終わった?」とか「ブログ書いた?」とかもうどんどんナイフを投げてください。)

明日はbooksさんです!お楽しみに!

YAPC::Fukuoka 2017 HAKATA に参加してきました!

  今回もYAPC( Yet Another Perl Conference )に参加してきました!

会場はLINEの福岡オフィス!素晴らしく清潔感あり落ち着いた雰囲気で, 居心地がとても良かったです!

 

考えるとYAPCはこれで2回目の参加になります!

 

 相変わらずYAPCは楽しかったです!何より, 前線で活躍されてるエンジニアの方々のお話を生で聞くことができたのは相当モチベに繋がるものがありました!

 今回YAPC::Fukuoka 2017 HAKATA へ参加するにあたり, 学生旅費支援制度で交通費等を給付していただいた企業の皆さま, 大変ありがとうございました. 

 

前夜祭

 ヌーラボにて行われた前夜祭では, LTソンという時間が許す限りLTをするイベントが行われました!同級生のKくんや, 1つ下の後輩のアナグラくんたちのLTを聴きながら, バイキング形式の料理を堪能しました.  他の皆さんも明日への本番の準備に向けて着々と熱を高め合っている感じがしてとても和気藹々とした様子でした!

 

特に印象に残ったトーク

www.slideshare.net

 

 セキュリティキャンプの講演で前々から知っていた徳丸さん!

実際にWeb Shellというツールを,  攻撃先のサーバーに設置して, ブラウザを開いてそれを用い, 実際に脆弱性を突いて情報を取得していく. といったデモ形式のトークで, とてもゾッとする話もあれば, なるほど, サーバー側にシェルをダウンロードさせることもできるのか......やってみよう!だったりと, 聞いてて自分でもやってみたくなる話も多々あり, すごく興味をそそるトークでとても聞いてて飽きず楽しめました. 

 現在4年で, ネットワークセキュリティ関連の研究を進めている私からすると, 徳丸さんの話を生で聴けたのはすごい貴重な体験で, とてもためになることだらけでした!

 

懇親会

 懇親会は,九州創作酒場 博多 笑門にて行いました!

あまり食べたことなかったもつ鍋.......福岡来て初めて食べたんですがとても美味しかったです!そして懇親会といえば, 登壇者や他の参加者との交流!僕はコミュ障が発揮してしまい...ずっと同じ席に座っていたのですが.....サポーターズの楓さんの後押しのおかげもあり!他の参加者との席に一緒にさせていただきました!

 そこで他の参加者のお話を聞いていたのですが, なんと皆さん普段から業務でPerlを書いてらっしゃるとのこと......やはりPerlはまだまだ現役で, 今もどこかでしっかりと活躍してる素晴らしい言語なんだなとしみじみ....()いやいやというか本番の最後に, LINEのスポンサーセッションの際にも, LINEのアプリ(以下に記載されてる写真に掲載されているアプリ4つ)はPerlでできています!という衝撃発言.....があったんです!

 これにはもう...びっくりでした.......

 

まとめ

 いやはやYAPCは最高ですね!最初にも書いた通り, 前線で実際に活躍されているエンジニアの話を生で聴けるなんてもうすごいこと!!しかも懇親会ではその人たちが実際にいるんですもの!(コミュ障発動しちゃいましたが......)

 

 来年も参加しようと!決意しました..........

 

と言いたいのですが, 来年は沖縄ですね!

 

 実際にティザーサイトも上がってるみたいです!

yapcjapan.org

 

 

 僕がこのティザーサイトを書いたのですが....何かうーんfukuokaの頃に比べると......

時間を作って, よしなにいい感じに作っていけたらなと思ってます.....

頑張ります٩( ᐛ )و

 

 

 

 

 

 

YAPC::Kansai 2017 Osakaに参加してきました #yapcjapan

YAPC( Yet Another Perl Conference ) に初めて参加しました!

 

 

YAPC::Kansai 2017 Osakaに参加するにあたり, 学生旅費支援制度で交通費等を給付していただいた企業の皆様, 並びにYAPC期間中に宿泊先を提供してくださりました@papixさん, そしてそのご家族の皆様, 大変ありがとうございました. 

 

いくつか聴講させていただいたトークの感想

2017年 春のPerl : @charsbarさん

www.slideshare.net

 perl5.24.1が最近出たというのもこのトークで初めて知りました. 正直なところプログラミング言語が今どのような調整がされているか, どのような機能が追加されるのか等,  あまり気にしたことがなかった.  このトークをきっかけに, 少しでもPerlの現状に目を向け, 今自分が扱っているプログラミング言語の動向をちゃんと知っていこうと思いました. 

 

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

speakerdeck.com

あまり意識したことのないキャッシュについて, レイヤ別, パターン化についての解説をしてくれていました. 正直まだWebアプリケーションを運用したことがなかったために, トークの内容についていけるか心配でしたが, キャッシュを扱う上でのシチュエーションなども例に挙げて話を進めてくれていたり, ところどころに笑いを挟んだりと, とても聞きやすいトークでした. 

 

Mojoliciousで始めるマイクロサービスアーキテクチャ : @masakystさん

speakerdeck.com

Okinawa.pmの@masakystさんのトーク!印象に残ったのがJWT(Json Web Token)によるセキュリティ認証について. 以前のperl入学式後の食事会で小耳に挟んだ程度だったのであまり使い所もわからずそのまま放置していた知見の一つでしたが, ここで@masakystさんの解説を聞き, 少しばかり理解したつもり(ry...になりました. トーク最後のokinawa.pmの紹介でyomitan.pmの頃の話などもあり, 生い立ちを知るいい機会でもありました. 

 

 

Perl to Go : @code_hex

http://go-talks.appspot.com/github.com/Code-Hex/talks/yapc-kansai/main.slide#5

まさか友人であるKくんこと@CodeHexくんがYAPCトークをするとは...と思いながら複雑な気持ち?でトークを聴講させていただきました. といっても正直Go言語についてはさっぱりで, 話について行くのは少し大変でした. Perlオブジェクト指向の話や, ポリモーフィズム界隈の話が出てきた際はPCでところどころ調べながら(笑)くらいついて聞いていました. 

 

GUEST : 木本裕紀さん

終盤からの聴講でした, リモコンを操作し, ウインドウ内に表示された猫を移動させるWebアプリケーションのデモを行なっていました. いつもわからないことがあると参考にさせていただいている以下のサイトの管理者で, お初にお目にかかれて大変光栄でした. 

d.hatena.ne.jp

 

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

まずデプロイとは?という入りでした. 正直なところ今までも単語の意味がわからない際はトーク中にグーグル先生に聞いたりして発表に食らいついていたのですが, @papixさんのトークは, 僕の印象では細かくわかりやすく「なぜ?」が淡々と解消されて行くトークですごくためになるよう進め方でした. その重要性や無停止の必要性について, 今後エンジニアとして業務に携わる際必要な知識なんだと, 改めてわかったトークでした. Perl入学式の生徒としては, 校長先生のYAPCでのトークを聞けて, 大変うれしく思いました. 次年度沖縄で行われるPerl入学式では, サポーターとして頑張っていけたらなと思います!

 

 

まとめ

トークでも, LTにおいても, みなさん笑いを取る技術が素晴らしいものだと思いました.

-> そのおかげで終始飽きずに聞き入ることができました. 

自分の知識が浅いことを知った

-> トーク中にわからない単語を調べる自分を思い浮かべると, やはりまだまだだと実感しました....これからも学習を続け, Perl Monger, またWebエンジニアになれるよう尽力していこうという固く決意しました.  

 

 

derefarence

github.com

 

my @favorite_foods = @{$int->{favorite_foods}};

の@以降で$intに渡されているハッシュリファレンスのfavorite_foodsの要素をデリファレンスしてる。

 確認

--------------------------------------------------------------------------------

f:id:sorehaedamame:20160517211628p:plain

--------------------------------------------------------------------------------

 

参照記事

github.com