コンピュータやソフトウェアのあれこれ@道民(&元道民)
perl
[perl]逆FizzBuzzの正規表現書いた(解けてないけど)
5月 17th
ええ、そうなの!? と思ったので深追いしてみた。
逆FizzBuzzって、オートマトンなので正規表現を使うと楽に出来るはず。
状態遷移図を書いてみるとこう。
ほんとは1〜15まで全て状態を書いて、ε遷移を加えてεの長さも1とした最少の単語を見付けなければならない。
で、これをこのPDFの方法で正規表現に書き直してみる。だるかったのでfizzはF、buzzはB、fizzbuzzはZにしておいた。
my $reg_inv_fizzbuz = qr/^( (((((F?B)?F)?F)?B)?F)?Z (FBFFBFZ)* (F|FB|FBF|FBFF|FBFFB|FBFFBF) |(((((F?B)?F)?F)?B)?F)?Z |((((F?B)?F)?F)?B)?F |(((F?B)?F)?F)?B |((F?B)?F)?F |(F?B)?F |F?B |F )$/x;
これでfizz buzz の列について回答が存在するか否かは判定できる。ただ、正規表現に変換してしまった時点で各遷移の重み付けの情報は飛んでしまったので、逆fizzbuzzの解答にはならなかった。
おしまい。
【追記】
正規表現は使ってないけど、一応automata的な解答は作っておいた。もっと簡単にかけると思ったら思ったより面倒。
[perl]逆FizzBuzz(Inverse FizzBuzz)の正規表現書いた(解けてないけど)
5月 17th
ええ、そうなの!? と思ったので深追いしてみた。
逆FizzBuzzって、オートマトンなので正規表現を使うと楽に出来るはず。
状態遷移図を書いてみるとこう。
ほんとは1〜15まで全て状態を書いて、ε遷移を加えてεの長さも1とした最少の単語を見付けなければならない。
で、これをこのPDFの方法で正規表現に書き直してみる。だるかったのでfizzはF、buzzはB、fizzbuzzはZにしておいた。
my $reg_inv_fizzbuz = qr/^( (((((F?B)?F)?F)?B)?F)?Z (FBFFBFZ)* (F|FB|FBF|FBFF|FBFFB|FBFFBF) |(((((F?B)?F)?F)?B)?F)?Z |((((F?B)?F)?F)?B)?F |(((F?B)?F)?F)?B |((F?B)?F)?F |(F?B)?F |F?B |F )$/x;
これでfizz buzz の列について回答が存在するか否かは判定できる。ただ、正規表現に変換してしまった時点で各遷移の重み付けの情報は飛んでしまったので、逆fizzbuzzの解答にはならなかった。
おしまい。
【追記】
正規表現は使ってないけど、一応automata的な解答は作っておいた。もっと簡単にかけると思ったら思ったより面倒。
UbuntuServerにperlbrew入れた時のメモ
5月 14th
Ubuntu11.10 (x86_64)を使ってるんですが、
Perl 5.14.2で失敗するので、一生懸命調べて解決しました。
ぶっちゃけ、ググっただけなんですが、
こちらを参考に解決しました。
ひだまりソケットは壊れない
perlbrew を使って Ubuntu 12.04 に perl 環境を構築する
この場を借りて、お礼申し上げます。
という訳で、このUbuntuだと、
以下のコマンドでインストールします。
$ perlbrew install perl-5.14.2 -Dplibpth=/usr/lib/x86_64-linux-gnu
めでたし、めでたし。
CentOSにperlbrew入れた時のメモ
5月 14th
ServersMan@VPSのCentOSにperlbrewを使って、
Perl 5.14.2を入れようとしたら失敗したので、
初めてinstall-patchperlを使ったというお話。
失敗した時に、
以下のコマンドを実行してからリトライする旨のメッセージが表示された。
perlbrew install-patchperl
なので、これに従ってコマンドを入力すると上書き確認が表示されて、
上書きしてから再度インストールしたらうまく行った。
めでたし、めでたし。
Hokkaido.pm#7のおまけのお話
5月 13th
毎回恒例の一人反省会の模様です。
まず、良かった点
2次会で名刺入れがポケットから半分出てて、
それに気付いてリュックにしまったことですね。
こうやって、落とし物するのかーって思ったのと、
これ落としたらシャレにならないっす。
以下、反省点
まず、LTはリハ不足が露呈しまくりちよこで猛省しております。
もう少し流暢(りゅうちょう)にお話したかったです。
それと、普段は手元にiPhoneを置いて、ストップウォッチを表示してたのですが、
今回は普通に忘れてました。
でもって、(ペース配分が分からないので、)開き直りました。
独り言
個人的には、WAFっていうテーマは良かったと思うのですが、
そんなに需要なかったのかなぁー。
CUIのツールとかもっと需要ないのかなー。
あと、Mojoのアレ良かったですよね、北海道の現状に即してた気がします。
それと、フリーランスに関するお話も聴けて、大変ためになりました。
いわゆる、人生相談ですよね。
ちょっと、オンとオフを切り替えることにこだわり過ぎてた気がします。
っていうのも、前の会社を辞めたのが8年くらい前で、
そのときにPerlだのPHP(*1)を少しだけ勉強したんですが、
結局、ずーっとオフのまま、なーんにもせずにニートしてて、
今でも家に帰ってきたらオフに切り替えてウダウダしています。
そんなんだから、どうやったらオンに切り替えられるのか心配になって、
例えば、書斎に入ることでオンに切り替えれるのでは?みたいな感じで、
書斎が欲しい!って悩んでいた訳ですが、プーになったらなったで、
もう少し柔軟に対応したいなーって思うようになりました(*2)。
なので、まずは寝っ転がりながら、Dancerのドキュメントでも見て、
デプロイの方法を勉強をしたいと思います。
おしまい。
(*1) PHPは、それ以来、数年前にwikiのpluginを拡張した程度
(*2) プーになる予定はないけど、間違いなく社会不適合的な意味で予備軍
Hokkaido.pm#7に行ってきました
5月 13th
今回はJPA様のご協力で、riywoさんが来てくれました。
まずは、みなさんお疲れまでした!
JPA++
riywoさん++
WAF再入門ということで、個人的にうれしい内容でした。
あと、捗る系(運用系)の話は新鮮でした。
Amon2(akiymさん)
相変わらず、高校生とは思えない内容でした。
最終的に、KENT WEBのBBSがplackupで動いてました。
Dancer(aloelightさん)
use Dancer;するだけ!とか、ファイルの最後にdance;とか、
オシャレだなーって思いました。
Deploymentに関するドキュメントがあるのは、個人的にありがたいです。
Mojolicious(jamadamさん)
Mojoは、ほんとにお手軽なんですね。
モジュール群をuseするとか、いろいろ便利ですね。
Ops Tools with Perl(riywoさん)
捗る系(運用系)のお話でした。
オペレーションエンジニアが抱えている作業だったり、
運用に関するお話が聴けて、すごくありがたかったです。
まとめ
WAFについては、あまりしっかりとした知識を持っていなかったので、
今回の勉強会はとてもありがたかったです。
あと、VPSを借りている以上、運用周りに関する知識は必須なので、
そういった意味で、運用系のお話はとてもありがたかったです。
あとは、手を動かして、デプロイしてですかね。
この辺は、Hokkaido.pm Casualでカバーしたいですね。
あと、自分もLTをして、音を出しました。
スライドはこちら。
それから、スープカレーですが、
最近だと、Chutta(チュッタ)かなー。
GARAKUもYellowも捨てがたいですけどね!
という訳で、今回もどうもありがとうございました!
おしまい。
Hokkaido.pm#7は今週末ですよ!
5月 8th
行こうと思ってたけど申し込んでない方はお忘れなく。
お申し込みは、こちらから!(懇談会は、こちらから)
今回も、JPAの協力によりゲストが来てくれます。
ゲストは、なんとriywoさんです!
As a Futurist…
Hokkaido.pm #7 に参加させて頂きます
という訳で、自分もLT(まだ準備してない)でなんかやりますので、
是非、techno_nekoには興味ないけど、riywoさんに会いたい!みたいな感じで、
こちらから参加して頂ければと思います!!!11
おしまい。
Hokkaido.pm Casual#0をやってみて
5月 2nd
結構、日が経っちゃったけど、ちゃんと書きますね。
次のHokkaido.pm Casual#1は5/16に開催します。
申し込みは、こちらから。
という訳で、まとめを書きます。
個人的な印象なんですが、何人かの初心者の方は、
目的はあるんだけど、それを達成するために必要な知識や手法が分からないようで、
その点に関しては自分もそうなので、みんなでケアできるかと思います。
ですが、ただ漠然とPerlを覚えたい!みたいな感じだと、
何が分からないのか分からないし、道筋を示すのも大変ですよね。
今回、みなさんにLTをして貰ったところ、
何らかの目的があって参加してくれてるようで一安心しました。
で、さっそくなんですが、
Hokkaido.pm Casualで出来るコトについて考えてみます。
開催後に、ちょっとだけTwitter上で議論したのですが、
サクラが必要だよねっていうお話になりました。
これは、どういう意味かと言うと、
あの空気で、初心者的な質問するのは大変だよね?ってなりまして、
初心者が少数派だったっていうのもあるのですが、
初心者の気持ちになって質問するのは可能なのか?という個人的な疑問もあり、
どういう方法が良いのかちょっと分からない状況です。
とは言うものの、
毎回LTをして貰うのも、いつか止めた方が良いのかも知れないですし、
どっかで強制的に質問を投げて欲しいっていう気持ちもありますし。
そんな理由で、初心者の方にもLTをお願いしている次第です。
あと、前回出た内容をメモしておきます。
- ArduinoとPerlで何か
- GPSをPerlでパースしたり
- Perlで音楽
- Perl 5.16について
- WebSocket
- markdownとXslate
- ゆいちゃっとの改造の改造
- プレゼンテーションツール
- 開発環境
- Perlのデバッグ方法
- MTプラグイン
他にもいろいろあったけど、目的であれば達成手順だったり、
ハンズオンとか、課題を持ち寄りながら、
手を動かして、何か持ち帰って貰えればと思います。
何の気無しにカジュアルとか言ってみたけど、
多分、初心者さんにはここに参加するのだって勇気が要りますよね。。。
まずは、Perlで何が出来るかを見るためだけに参加するのも手だと思うので、
思い立ったらATNDに登録して来てみて欲しいです。
おしまい。
Audio::PortAudioを使ってみる
4月 30th
もう挫折しそう、CPU負荷的な意味で。
まだ、調査してる段階なんだけど、
AnyEventを使っての非同期処理を組み合わせるのは、どうやらうまくいかなくて、
Audio::PortAudioがシグナルを使ってるから、その辺は諦めることにした。
だったら動的にメロディーでも生成してみよっかなーって思って、
例えば、16分音符の刻みで何かしようと思ったら、
処理がおっつかないことになってた。
結局、音を鳴らすっていうのは、
用意したバッファをDAC(デジタルからアナログに変換)しながら出力して、
出力済みのデータ数だけ補給してあげる処理を延々と繰り返すんだけど、
補給が間に合わないとノイズだったり、意図した音がでない訳で、
これは最適化の出番か?みたくなっちゃう。
これ自体は、大した問題じゃないんだけど、
これに対して何か解法はあるのか?と言われると、
今のところあまり手がなくて、適当にuse integer縛りで書くくらいしか。
別にそれでもいんだけど、メモリの使い回しみたいのが出来るのかも含めて、
丁寧にやらないと面倒くさいなーっていうのが正直なところ。
んー、だったらWAVEファイル出力止まりなのかもねー。
おしまい。
Hokkaido.pm Casual#0に行ってきました
4月 19th
はじめて勉強会を開催しました。
みなさん、おつかれさまでした!
とりあえず、懇親会が行えたのでホッとしております。
せっかく、小銭を多く用意したはずだったのですが、
最初の会場の支払いで使ってしまったのが敗因でした。
という訳で、Hokkaido.pm Casual#0を開催しました。
みんなでLT大会をした訳ですが、どうだったでしょうか?
ビギナーズセッションとか、あんな感じですかね。
ぶっちゃけ、メンツ相応の内容だった気がします。
次回は、もっとカジュアルにと考えていますが、
カジュアルな課題を出すところから考える必要がありそうです。
まず、これを読むところから。
はてな教科書
それと、今回作ったスライド。
5分で作るLT資料
参加して頂いた皆様には、感謝しております。
ありがとうございました!!
あと、飛行機に乗って、@Yappoさんが来てくれました。
遠方から、ありがとうございました!!
スープカレーですが、以下の通り。
プルプルで納豆スープカレー
レゴンでふわふわオムレツとスープカレー
奥芝商店でエビスープ
あとは、GARAKU, yellow, ZORAあたりがオーソドックスでオススメです。
個人的には、レゴンのオムレツ(オプションでライスに卵を乗せる)がオススメです。
おしまい。
