Mojolicious 4.42 に Form Validation が(試験的に)実装されたようなので使ってみた
ドキュメントはこちら。
試験的ということなのでインターフェースが変わってしまうかもしれませんね。
M::P::TagHelpers側である程度よしなにしてくれるのはお手軽でいいですね。
Mojolicious::Validator と Mojolicious::Validator::Validation の関係がいまいちわかりづらい感じがする...
Scala入学式でScalaについて学んできました。あとだれかGo教えて。
ひさしぶりのブログです。
先日長岡市で行われた第33回勉強会 Scala入学式に行ってきました。
「ScalaってJavaVMで動く関数型っぽい言語」という程度の認識です。そもそもJavaなんてJDK5の知識が少々ある程度なのです。
Java書いてた頃のことは個人的に思い出したくもないのですが、流行り(?)の言語なので、さわりだけでも学んでみようと思い参加した次第です。
入学試験
事前準備としてScalaとIntelliJ IDEA、SBTのインストールを行いました。
IDEなんて使うの数年ぶりなので、プラグインのインストール、設定などは「これ何やってんの??」状態でした。
個人的にはIDEありきの開発はあまり好きではないのですが、コード補完はやはり便利です。時としてこだわりは捨てたほうが良いですね。
ちなみにVimmerな方はこちらで紹介されているIdeaVimマジオススメ。
「Better Java としての Scala」
"Hello World" からはじまり、クラス、継承、traitをひと通り。
素のJava書くよりすっきりしてて良いですね。
サクサクとtraitを追加して型チェックできるのはとても参考になった。
写経しながらGo言語で同じの書こうとしたけどスッキリ書けなくてやめてしまった。
Go言語でオブジェクト指向的に書こうとするとなかなかキビシイものがあるような気がするけど趣味の範囲でしかさわってないので経験不足なだけだと。とくにinterfaceまわりの理解が怪しい。精進せな。
「もっとScala!」
リスト、パターンマッチ、Option型などもりだくさん。
正直パターンマッチ以後なんとなく理解...できたかなぁ。
Futureモナドのところで「Goではチャネルを返して云々...」などと脳内でゴニョゴニョやってるから理解できんのだよ。
「NullPoGaBot」
ここまで出来るとは思いませんでした。
ScalaはJavaの資産をそのまま使えるのでTwitter4Jを使ってサクっとbotを実装。このへんはありがたいんだろうな。
写経でいっぱいいっぱいだったけど、コード見返して復習しよう。
LT
LTでは東京勢の面白さに圧倒されましたw
電流とかTGS 2013 in 長岡とかw
懇親会
有名人なmoznionくんとお話できてとても嬉しかったです。Perlについてゆっくりと話を聞きたかったけど、ピーエイチピーについて熱く語っていたようなのでそっとしておいたw
オッサンには刺激の強い子だった。(すごく良い意味で)
dictavさんとはgolangの話で盛り上がったので、いずれ何かしらやるかもしれません。(じじ(じ)?回にGo言語勉強会やるかも)
というわけで
ボスがScalaの人になって帰ってきたけどNiigata.pmのことも気にしているようですし、近く西区飲みでそのあたりを詰めていければと考えています。
あとモンハンしながらGo言語教えてくれる人募集中です(いない)
Vagrant 1.1+ でスナップショット
Vagrantでスナップショットと言えばsahara(1.1+対応版)が大人気のようですが、1.1+で同等の機能が欲しいのであればvagrant-vbox-snapshotがいいんじゃないでしょうか。
サクッとインストールできますしね。
$ vagrant plugin install vagrant-vbox-snapshot
使い方はこんな感じ。
$ vagrant up $ vagrant snapshot take init # initという名前でスナップショットを作成 なんか作業とかする $ vagrant snapshot back # 最新のスナップショットにロールバック なんか作業とかする $ vagrant snapshot take fix # fixという名前でスナップショットを作成 なんか作業とかするも気に入らない $ vagrant snapshot go init # initスナップショットに戻る ...そして作業は続く...
ラベルを指定してスナップショット作成、ロールバックできるのは便利ですね。
sahara対応したようですし、shanaraつかったほうが情報多くて良いかと
sudo sudo #{cmd} で失敗
@gosukenator rootユーザをsudoersに入れてないと、2回目のsudoでエラーになりますねー。そういう環境はみたことあります
— fujiwara (@fujiwara) 2013, 6月 12
確かにsudoersにrootがなかった。
こんな環境はじめて。
Millaで特定のOSのみサポートするモジュールを作る
Dist::Millaで特定のOSのみ(or 以外を)サポートするようなモジュールをつくりたいときはDist::Zilla::Plugin::AssertOSを使ってdist.iniをこんな感じに定義します。
[@Milla] [AssertOS] ; MSWin32 or CygwinをNGとする os = -MicrosoftWindows [Prereqs / ConfigureRequires] ; configure_requiresに追加するためのおまじない Devel::AssertOS = 0 [MetaNoIndex] ; Dist::Zilla::Plugin::AssertOSでno_indexが上書きされるので再定義 directory = t directory = xt directory = inc directory = share directory = eg directory = examples
で、Dist::Zilla::Plugin::AssertOSをインストールします。(既にインストールされている場合は不要です)
$ milla authordeps | cpanm
上記dist.iniでこんな感じのBuild.PLが生成されます。
use lib 'inc'; use Devel::AssertOS qw[-MicrosoftWindows]; use 5.008005; use Module::Build::Tiny 0.019; Build_PL();
お手軽ですね。
- CPANモジュールでサポートしていないOSのTest ReportをNA(Not Available)にする - WebService::Blog->new( user => ’hide_o_55’ )
- Dist::Milla - Distribution builder, Opinionated but Unobtrusive - metacpan.org
- Dist::Zilla::Plugin::AssertOS - Require that our distribution is running on a particular OS - metacpan.org
- Devel::AssertOS - require that we are running on a particular OS - metacpan.org
Net::IPMessenger::Bot とかいうのを作ってみたり
こちらの記事を読んで「IRCいいなー。ウチIPMessengerだしなー」とボヤいていたところ、ボス@Niigata.pmが「IPMessengerBot需要あるかも」とつぶやいていたので、こんなの作ってみました。
Net::IPMessenger::Bot - IPMessenger-Bot building framework - metacpan.org
使い方はこんな感じ。
#!/usr/bin/env perl use strict; use warnings; use utf8; use Net::IPMessenger::Bot; use Sys::Hostname (); my $bot = Net::IPMessenger::Bot->new( configure => { NickName => 'hayashi_bot', GroupName => 'bot', UserName => 'hayashi_bot', HostName => Sys::Hostname::hostname(), }, on_message => [ qr/いつやるの?/ => sub { "いまでしょ" }, ], ); $bot->start;
その後ボスが「ないかも」とつぶやいていたとおり、あまり使い道がナイデスネ。
broadcastで送信してウザがられればいいですかね?
正直情報共有ツールとしてのIPMessengerはもうやめにしたいんですけどね...なんだかなぁ...
ひとまず社内に仕込んだイカちゃんbotは今日も元気です。はい。
Mojolicious::Plugin::Web::Auth 0.03 をリリースしました
Mojolicious::Plugin::Web::Auth - Authentication plugin for Mojolicious - metacpan.org
特に新しいことはないのですが...
- Net::Twitter::Lite と WebService::Dropbox への依存をなくしました
- Milla化しました
OAuth 1.0(A) も自前で...と思いましたが挫折しました(;^ν^)
あとこちらも修正しておきました。
hayajyoさん作のMojolicious-Plugin-Web-Authつかっとるけど、Facebookでscope(permission)指定する方法がExampleにないの、もったいないのでぜひ追記して貰いたい。(コード読んだらすぐ分かったけど)
— uzullaさん (@uzulla) 2013年4月29日
興味のある方はお試しください。