tag:blogger.com,1999:blog-78692102873908898642024-03-14T15:05:06.665+09:00YellowStoreytnobody( = YellowTurtle )のメモ。Unknownnoreply@blogger.comBlogger261125tag:blogger.com,1999:blog-7869210287390889864.post-65020574689098144982021-12-28T12:19:00.006+09:002021-12-28T12:19:46.379+09:00猿渡学園というソシャゲサービスを作っていたころの話をしよう②さて、前回の投稿からすでに1年以上経過してしまいました。すみません、すみません。ここから先は若干時系列があいまいです(だいぶ忘れかけている)が、覚えている限り一気に書いていきます。ポケベル(通知)最初のころは「相手から果たし状や手紙が来たことがわからない」という状況でした。初期はまだ通知という概念がなく、割とリアルタイムなやりとりが求められることがわかったので、画面上部にマーキー(こういうやつ)でポケベルという体で通知を出したものです。体力ゲージこれも最初期は表示されていませんでした。結局どのくらい体力が残っているかわからないので、突然KOされたみたいな雰囲気が出ており、ゲームとしてのハラハラ感が薄かったです。社内でも「これはゲージが欲しい」という話になり、HTMLのテーブル機能を悪用して体力ゲージを実装しました。本当は表を作るための機能なんですが、この頃ではwebサイトのレイアウトに使Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-56890933790059998892019-10-11T02:16:00.003+09:002021-12-28T12:22:12.571+09:00猿渡学園というソシャゲサービスを作っていたころの話をしよう①※もはやこちらのブログを更新することはないと思っていましたけど、さまざまな理由でこちらで書くことにしました。
※このエントリはおじさんのおじさんによる懐古話となります。
ひょんなことからこちらのブログエントリを目にしたのですが、そろそろほとぼりも冷めた頃だと思いますので、元「中の人」として、記憶している限りのことを書いていこうかと思います。もし当該エントリを書いた方がこの文章を読む機会があれば、大変幸甚です。
如何せん私自身の思い入れがかなり強い作品であり、非常に長くなりそうなので、一応タイトルに番号をつけておきました。
第1回目は、猿渡学園の特徴と、開発の経緯を振り返ってみたいと思います。
猿渡学園とは
知らない方のために簡単に解説。
ここで語る「猿渡学園」とは、2007年12月~2011年3月までの間、フィーチャーフォン向けに提供(PCでの利用も黙認)されていた同名Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-7869210287390889864.post-49061914238507497802013-08-20T12:38:00.000+09:002013-08-20T12:38:05.240+09:00[Perl]Archive::Zip使う前に読んでほしいエントリArchive::Extractってのを使うとハッピーになれます。
Archive::Zipと比較した利点
インターフェースが実直
依存モジュールもさほど多くない
ZIPアーカイブ以外にも.tar.gzあたりにも対応してくれる
安定と実績の作者
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-52854728306678290642013-07-31T17:37:00.000+09:002013-08-01T14:13:08.675+09:00[Perl] 某WAFを書いていたらTravis神が激おこプンプン丸だったので原因と解決案を(若者が)探ったhttps://travis-ci.org/ytnobody/Voson/jobs/9679903
このTravis-jobsをみてやって欲しい。common::senseがインストールできてないらしく、全然テストどころでは無くなってしまった。
で、某仮想八王子でそんなことをのたまっていたら、若人2名が原因をさぐってくれたりした。
http://blog.papix.net/entry/2013/07/31/153544
http://moznion.hatenadiary.com/entry/2013/07/31/172410
結局のところ、Devel::Cover::Plugin::CoverallsがJSON::XSに依存しており、JSON::XSがcommon::senseに依存していたため、common::senseがぶっ壊れたタイミングでJSON::XSもD::C:Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-34010075585972681522013-05-28T12:05:00.000+09:002014-06-03T15:51:26.504+09:00[ツール]plenvやrbenvを一発でインストールするスクリプトタイトルどおりの物をつくったので、晒しておきます。
使い方
plenvの場合
$ curl -L http://is.gd/plenvsetup | bash
rbenvの場合
$ curl -L http://is.gd/rbenvsetup | bash
手元でしか動作確認してないですので、おかしなところあったらツッコミください。
2014/04/28 追記
plenvsetupを更新しました。以下の修正が行われています。
zshに対応しました
~/.plenv が存在する時にgit cloneしないようにしました
手動によるprofileの再読み込みを促すようにしました
2014/05/31 追記
実行方法を sh から bash に修正しました。
2014/06/03 追記
後日談をこちらにかきました。ぜひ参考にしていただきたいと思いUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-58953702517458680242013-05-17T12:34:00.001+09:002013-05-17T12:34:42.730+09:00[Perl]せっかくだから俺はこのMinillaを選ぶぜタイトルの元ネタはこれ。
本題。ここに書いてあるように、
https://twitter.com/ytnobody/status/335212752857616384
Minillaつかってみた記録&べた褒めするエントリです。(Minilla作者によるエントリはこちら)
1週間くらいMinillaをつかってみましたが、これからPerlモジュールをつくるのなら、Minillaはおそらく最上のツールとして選択肢に上るべきだと思いますね。
CPANにはこれまでもいくつかのモジュール作成支援ツールが登録されてます。例をあげると、
・ExtUtils::MakeMaker
・Module::Build
・Dist::Zilla
・Module::Starter
・Module::Setup (しばらくこれのデフォルトフレーバーを使ってた)
などなどあるわけですが・・・(にわかCPAN Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-55989699858818984092013-04-22T13:00:00.001+09:002013-04-22T13:00:59.897+09:00[Perl]Perl入学式 in 東京 #1でサポートメンバーしてきました4/20(土) 13:00〜17:00 にシーサー株式会社さんで開催されたPerl入学式 in 東京に、サポートメンバーとして参加してきました。
実はもともとperl入学式を関東でもやってほしい&やりたいという需要と供給があって、特に主催の@__papix__さんからは、「Perl Beginnersとコラボしたい!」みたいなことを言われていたと言うのもあり、開催場所のアサインとサポートメンバーとしての参加をするという形で協力させていただくことになったものです。
また、会場のアサインをしている最中、@toku_bassさんから「うちの会社、会場につかってもいいですよ?」という、とてもありがたい申し出をしていただきました。この場を借りてお礼申し上げます。
今回の講習(というほど堅苦しいものではなかったのですが)は2部構成となっており、第1部はLinux環境構築、第2部はLinuxの基礎Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-54427112383319271772013-04-09T11:18:00.000+09:002013-04-09T11:18:00.456+09:00[Perl]Hachioji.pm #27 でもくもく&LTしてきた4/6(土)、いつもお馴染みのHachioji.pmに参加してきました。まだChiba.pmのレポートかきおわってないのにこっち先に書いちゃったよ!ごめんよ@kaztr!!!
13:00くらいに八王子に到着してハッカソン会場に入ってすぐさま、マコピー(@mackee_w)さんや@laoujiさんあたりとランチにいくという体たらく。腹減ってたんだからしゃーないでしょう。
で、ハッカソンで何してたかというと、「豚キムチ定食が少なかった」と泣き言言いながらコンビニのインチキアップルパイかじったり、自作Web API Frameworkのセットアップツール書いたり、マコピー先生の執筆活動(MongoDB.pm を s/Moose/Moo/g するお話) を後ろから眺めてあーだこーだ喚いたり、まずい缶コーヒー飲んで胃の調子おかしくしたりしてました。
この説明だと、だいぶはた迷惑なオッサンにしかUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-90233350983293181012012-12-27T21:22:00.001+09:002013-07-31T17:20:01.543+09:00[Perl]Email::SendつかったらReturn::Valueにdeprecatedだと怒られたEmail::Send自体がdeprecatedなのですが、Email::SenderはMoose依存だそうなので(Mouseに切り替えるという話は無理だったらしい?)、Email::Send使ってメールを送ることにしました。
ですが、こいつはReturn::Valueというモジュールを内部的に使用していて、これを普通に使おうとすると
Return::Value is deprecated
と言われました。でもEmail::Senderは使いたくないので、
BEGIN {
$Return::Value::NO_CLUCK = 1;
}
use Email::Send;
としたのでした。だいぶアレ。
[2012/12/28 追記]
なあんてことを某所でぼやぼや言ってたんだけど、寝て起きてたらMail::Krohnというものがつくられていた。激速。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-90645899547679141312012-12-27T21:10:00.001+09:002012-12-27T21:23:18.216+09:00[Perl]Amon2なアプリケーションのbatchでconfigとかを見たいときhttp://blog.64p.org/entry/2012/12/27/195117 参照のこと。
知ってる人には当たり前なのかもしれないけど、Amon2ビギナーな自分は引っかかってしまったのでメモ。
たとえば、以下のようなバッチがあって、
[./bin/my_batch.pl]
#!/usr/bin/env perl
use strict;
use warnings;
use MyApp::Model::AnyWhere;
printf "%s\n", MyApp::Model::AnyWhere->work;
そのバッチが叩いているクラスが、
[./lib/MyApp/Model/AnyWhere.pm]
package MyApp::Model::AnyWhere;
use strict;
use warnings;
use MyApp;
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-36284836425349640352012-12-19T10:18:00.001+09:002012-12-19T10:19:44.363+09:00コマンドラインからTwitterにPOST(もしくは自分にD)するだけのツールをつくってみたVPSで定期的にcronとかでバッチぶん回したりして、その結果をある程度すぐにみれる状況にしたいなーとおもったので、App-Shirohというツールをつくりました。ようするに、ものすごい単純なTwitterクライアントなんですけど。
https://github.com/ytnobody/App-Shiroh
前準備
手始めに、通知を送信するためのTwitterアカウントが必要なので、どうにかこうにか取得しましょう。
次に、通知を受け取る側のアカウントと、今しがた作ったアカウントを相互フォローさせましょう(D送るのに必要)。
そして、さっき作ったTwitterアカウントをつかって、このあたりを参考に、認証に必要な各種情報を揃えます。
ここまでで準備はオッケー。
インストール&設定
まず、App::Shirohをインストールします。cpanmをつかいますので、あらかじめ用意しておきまUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-21203685761337715612012-10-27T08:45:00.005+09:002012-10-27T08:46:26.516+09:00Chiba.pm #1に行ってきた10/20(土)に船橋駅前のPCスクール「WAVE」さんで開催されたChiba.pm #1に行ってきました。
到着が30分ほど遅れてしまったので、LTの途中あたりからしか聞けてないのですが、その中で記憶に残っているものを掻い摘んでレポートします。
@studio3104さん
fluentdを使ってMySQLのslowlogを監視し、その元になったクエリをEXPLAINして、webに統計を表示するというアプリについての発表でした。このアプリは以前、PerlBeginnersでビギナーズセッションの題材にもなっていました。YAPCのLTでもこの発表をしていたらしく、そのときはデモを動かせないまま銅鑼が鳴ってしまったので、そのリベンジだと意気込んでいたのですが、船橋でもデモを動かすことができなかった模様でした。仕組みも機能も非常に興味深いものですので、ぜひ動いてる様子を見てみたいとおもいまUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-50562980428059938592012-10-03T22:50:00.000+09:002013-04-05T18:56:23.184+09:00[Perl]ここ最近で自分のコードで筋が悪いといわれた物。またの名を自戒ドリブン開発とも。
タイトルの通り、僕のコードで良くないといわれたところと、その理由や対処方法をメモしてみた。
後学のために、自戒ドリブン開発。
1. Exporterつかって関数EXPORTはやめる
たとえば MyExport でExporterつかってEXPORTしてても、それを使ってる側からコード追いかけるときに大変になりがち。
2. for my $x ( @array ) { ... } で書けば良いところを map { ... } @array するな
return map {...} @array みたいに、配列の写像を他で使う場合にはmapを使う。
しかし写像を使わない場合forをつかうべき。最悪メモリリーク。
3. Class::Loadみたいな動的なクラスローダの多用を避けよう
どの辺からが多用といわれるのかがちょっと人それぞれ感満載だけど、とりあえずload_class()のUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-91419701739023332182012-10-02T01:09:00.000+09:002012-10-02T01:10:06.852+09:00YAPC::Asia 2012 で発表してきた9/27(木)【前夜祭】 ~ 9/29(土)の3日間にわたって開催されたYAPC::Asia 2012。今回、初のYAPCスピーカーとして参加してきました。
自分の発表内容は、専らCPANモジュールを使っている人向けの内容だったのですが、かなり多くの方にご清聴いただきました。ありがとうございます。
そのほかにも、Powered by Hachioji.pm なサイドイベント「LT-THON」で、Perl Beginnersを例に挙げた勉強会スタートアップハウツーみたいな内容の発表や、地域pmミートアップでPerl Beginnersを取り上げていただいたりなど、存分に楽しませていただきました。
LT-THONは当初の予想を大幅に上回る盛況っぷりで、前日まで心配のあまり胃がキリキリしていたという主宰のuzullaさんも、さぞ報われた事でしょう。
ちなみにUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-7320640392945497292012-08-09T17:47:00.000+09:002012-08-09T17:47:36.703+09:00FORTHでFizzBuzzをといてみた表題のとおり、取りあえず練習がてら書いてみた。
なんせ初学者なもんで拙いですけどゆるしてつかあさい><
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-45019428927843549302012-08-07T01:32:00.004+09:002012-08-07T01:45:38.870+09:00Hachiojipm #20 - WAF作ったよって言ってみた先ほどHachioji.pm #20へ参加し、WAFを作ったので一緒に育てようぜ的な話をしてきました。
まあ、このWAFについてはそのうちこのブログとかでなんか書くかもしれません。
今回は異例の平日開催&異例の吉祥寺開催ということもあって、参加人数は9名と少なめでしたが、その分濃い内容となっておりました。(僕は1時間ほど遅れての到着となったのですが・・・)
また、北海道出身の方が多く、途中masiuchiさんと函館カオス説について語り合うなどしたわけですが、同じ卓にいたhirobanexさんあたりはほぼほぼついてこれていなかったようで、今思うと申し訳なかったです><
さて、会場となったevitaさんはイタリアンのお店ですが、気取ったところの無い、非常に開放感のある雰囲気のお店でした。お料理も非常に美味しいものばかりでした(アラビアータとレバーペースト?が特に美味かったですね)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-85948045721695736782012-06-30T09:04:00.000+09:002012-07-01T08:31:48.511+09:00[Perl??]Hachioji.pm18にいってきたよだいぶレポート書くの遅くなったのですが、6/23(土)に開催されたHachioji.pm #18に行ってきました。
pre Hachioji.pm ハッカソン
お昼過ぎくらいにノロノロと会場に到着してみると、皆さんお食事にでてたらしく、yoshihirokunoさんがお一人でfacebookのfriend-API(であってたかな?)を使って何かしようとしてたので、簡単にアドバイスしておきました。(すべての友達を取得する方法について、のはず。)
その後ほどなく、主催のuzullaさんをはじめ、昼食組が戻ってきたところで、Yanchaのソースをclone(!)。あまりにも久しぶりに見るコードは、依然とは比較にならないほどの分厚いテストと、だいぶ整頓された(まだ整理の余地はあるけど)構造になっており、率直に「これはすごいな」とつぶやくようなものに進化していました。何より驚Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-29517351206399277442012-03-26T10:41:00.000+09:002012-03-26T10:41:57.058+09:00[Perl]Hachioji.pm #15 でペアプロしてきた毎度おなじみHachioji.pmに参加してきました。
通産16回目の開催となる今回は、前回(実は参加してたけど疲れ気ってレポート書けるほど物事を記憶していなかった;;)から@hirobanexさん主導ではじまった「pre-Hachioji.pm」というハッカソンからの参加です。
ハッカソン、9:00 AM 開始だったけどのろのろと11:00 AM くらいに会場にIN。この時点で自分以外に既に4名がコード書いたり書いてなかったりしてました。
ペアプロ自体には「お題」が設定されており、今回は「Kossyを使って掲示板をつくる」というものでした。
なんでKossyなのかとか、その辺のいきさつについては、こちらに色々書いてあります。
最初の1時間くらいはだらだらと。最初はペアプロの相手が居なかったと言うこともあって、主宰の@uzullaさんと、中国のスマホ向け開発事情やPHPのWAFなどUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-2279037198780165982012-03-16T19:55:00.002+09:002012-03-16T19:55:45.980+09:00[Perl,メモ]ある無名関数の中でだけ使える関数を定義したいsub hoge {
my $cb = shift;
my $caller = caller();
local *{$caller.'::foo'} = sub { .... };
$cb->();
}
こうすると、
hoge(sub{ foo() })
が使える。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-44896507710621449062012-01-29T12:02:00.000+09:002012-01-29T12:02:04.144+09:00[Perl]Hachioji.pm #13
先日(1/29[土] 18:00~)、おなじみのHachioji.pmに参加してきました!
会場は、こちらもおなじみのタイラーンナー。トムヤムクンが美味しいお店です。
今回も新しい方が何名か来ておりましたが、皆さんPerlの話題にとどまらず、技術方面の話や椅子の話などで盛り上がっておりました。
おや、奥の島の様子が・・・
なんか奥の島に突然人が集まりだしたので、何事かと思って行って見た所、こんな光景が。。。
これがあの「インフラエンジニア双六」か!?
タイ風ハムスライスが極端に辛かった
あまりの辛さに悶絶。。。
恒例のライトニングトーク
酔っ払ってて正直あまり覚えていない(※いつものこと)ですけど、記憶に残ってるところだけざくっと書いておきます。
・JS製のスライドツールがいくつか。
・はてブのホッテントリをタイトルかき集めてGoogleスピーチAPI(非公式)にとUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-70401876514848764592012-01-27T18:33:00.000+09:002012-01-27T18:33:28.288+09:00[Perl]Perl Beginnersという勉強会をやります。Perl Beginners という勉強会を2/24(金) 19:00より五反田文化センターで開催します。
という宣伝でしたー!ぜひお越しください!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-51694889244965432102011-12-04T10:19:00.001+09:002011-12-04T10:21:40.678+09:00[perl]Hachioji.pm #11 で幹事やってみた毎度おなじみHachioji.pmに参加してきました。
今回は町田で開催ということもあって、近くに住んでいることもあり、幹事をやらせてもらったのですが、24名の参加者が集まる賑やかなpmとなりました。雨にもかかわらず来てくださった皆さん、本当にありがとう!
LTのテーマは「○○道」ということだったのですが、みなさん思い思いの「道」に関するネタを発表されていました。
ちなみにぼくは「幹事道」と題し、perl関係ない内容の話をさせてもらいました(資料こちら)。
幹事の経験が実はあまり無いので、主に時間周りでご不便をかけてしまったところもあったのですが(本当に申し訳ない!)、そういったところもフォローしていただいたりした結果、非常に意義深く、楽しい集まりになったんだと思っています。
Hachioji.pmは、参加者全員の協力のもとに成り立っているのです。
※名言:「PerlはUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-88274797895159632542011-12-04T10:01:00.001+09:002011-12-04T10:02:24.905+09:00[perl]今年のadvent calendarの記事を書いたので宣伝Casual Track 3日目の記事を書きました。
Crypt::SaltedHash - パスワードを安全に保存するための一手段 - Perl Advent Calendar Japan 2011 Casual Track
テーマは割りとディープなものですが、5分以内で読める非常にライトな内容ですので、まあ読んでやってください。
それと、記事を書く人も募集中だそうですよー!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-89699286044336707112011-11-18T21:00:00.001+09:002011-11-19T01:49:45.222+09:00[perl]Yokohama.pm #8に参加したのでメモをあげてみるbonnuさん - orepanとcpanmを使ったcpan module の部分ミラーの運用管理
Cartonの話ではありません!
kazeburoさんの11/2月時点のブログ記事が元ネタ。
CPANミラーをローカルに作る理由
本家CPANの更新の影響を受けずにモジュールをインストールしたい。
アプリケーションが依存するモジュールの挙動を保障するためにバージョンを固定する必要がある。
アプリケーションをネットに依存せずに確実にインストールしたい
search.cpan.orgやそのミラーは作者による取り下げも反映されてしまう。
CPANネットワークがあがっている保障はない。
複数代をセットアップする際に外部ネットワークに接続したくない。
数十大規模になればなおさら。セットアップをすばやく行うためにも重要。
企業によっては外部ネットワークへの接続ポリシーに縛られる。
社内Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7869210287390889864.post-21008213059978026922011-11-16T15:39:00.001+09:002011-11-16T17:58:00.240+09:00[perl]perlbrewな環境下でImage::Magickを使いたくなったのでセットアップしたというお話「Imagerじゃないとかマジウケるんですけどw」的なツッコミは予測済みですが、Webサービスに組み込む機能として、PDF→JPEGな変換を行うのに、もっともスマートな方法としてImage::Magick(=PerlMagick)しか見つけられなかったのです。もっといい方法あったら教えてください!
まずはimagemagickをインストールで、PerlMagick使うためにはホストにimagemagickが入ってないといけないんですけど、これをroot権限で入れるのは別に難しくない。のですが、perlbrewな環境となると、root権限?何それおいしいの?状態なので、今回は$HOME/local 以下にimagemagickをインストールする方法をとります。
$ mkdir $HOME/local
$ mkdir $HOME/src
$ cd $HOME/src
$ wget ftpUnknownnoreply@blogger.com0