投稿

rubyにはIPアドレスのライブラリがあった

使わないと気付かんなぁ。。 require 'ipaddr' 32桁のunsigned intを変換するのに使える。 使う時出てくるんだろうか。。 IPAddr.new(int32, Socket::AF_INET).to_s とすると、 unsinged intから"*.*.*.*"になる。 元々は知らなくてこう書いてた。 int32 == 0 ? "0.0.0.0" : int32.to_s(2).scan(/.{1,8}/).map{|v| v.to_i(2)}.join(".") 勉強になりました。

mapはすごいなと感じた備忘録

最近rubyを触っていなかったので、時間があくとそういえばこんなメソッドあったなと気付くことが多いです。 今日はmapでした。 https://ref.xaio.jp/ruby/classes/array/map array .map {| item | block } 配列内の要素を1つずつ取ってblockで処理して配列に戻すというものなのですが、 eachでループ回してやるのと同じで、むしろ短く書けますね。 得られた配列に対してそのまま繋げて書くこともできるので array.map {|item| block }.joinとすればすぐに文字列にすることもできたりして便利。 さらにメソッド内では&:blockみたいな書き方もできてさらに短くできる。。 array.map(&:capitalize).joinみたいな。 使えるように癖づけていかねば。

ブログの存在を思い出した

このブログの存在を思い出したので久々に。 ごちゃごちゃしてたのでテンプレートも一掃しました。 最近はというと事業考えるかKotlin触るかYoutuberの動画を見てます。 * ほぼ当たらないけど事業考えて作っているのは楽しい。 センスないというのも重々承知しているものの、 地方でプロダクトアウトで始めるのがダメなのかと感じることもある。(あかんやないか) リスキーなので最近は初めから大きいものは作ってないけど、 謎解き好きならこれを使うと良いというサイトを作ったりしました。 何卒使ってみていただけるとありがたく。。 謎解きの海 * Kotlinは基本的にJavaでやってた既存Android-PJの書き直しが多い。 非常に短く書けて良いなと思ったり、 そもそも書き方わからなくてググったりという作業の連続。 真面目に学ばないといけない感じもする。 あれやったりこれやったりというのを繰り返すとプロダクトの品質下げて良くないね。。 * Youtuberの動画は面白いのかもしれない 結構長い間受け付けなかったけど、 たぶんコンテンツとして洗練されてきているのを見ているんだろうと思う。 個人的に一般人がやる検証系の動画は面白く感じる。 無限にコンテンツが増殖されるプラットフォームは強い。。

CakePHP1.3系で開発していたものをCakePHP2.x系にアップグレードするときにハマった話。

何にハマったのかというと、ログイン関連とメール送信関連とテスト関連です。 ハマるまでは簡単で、まずは公式サイトのマニュアルを見てください。 するとあぁ、upgrade-shellってやつで何かうまくやってくれるんだなという雰囲気があるのでその通りに実行していきます。 upgrade-shellを実行した後は、「あれ、エラーがいっぱい出てる」という気分でした。 エラーの内容をメモするのを忘れましたが、CakePHP2.x系になってから新たに追加されていた設定がupgrade-shellだけでは対応されていなかったことが問題でした。 確か /index.php /app/webroot/index.php /app/webroot/test.php /app/Config/database.php /app/Config/bootstrap.php /app/Config/core.php を書き換えました。 これでほぼ表示はされていたと思います。 そこで、テストを走らせようとhttp://localhost/appname/test.phpにアクセスしてみると、CakePHP2.xからはSimpleTestではなく、PHPUnitに変わっていたことを思い出しました。 このあたりはQiitaでうまくインストールされていた方の記事を拝見して参考にさせていただきました。 http://qiita.com/ikuwow/items/b53cdaeb0132211ec272 テストを実行するとあーダメだとまた気づきます。 upgrade-shellでは/app/Test/*/〜.phpのファイル名がキャメル記法になっていませんでした。 そしてログイン関連とメール送信関連が動いていないことに気づきました。 まずログインですが、CakePHP2.4以降はログイン処理の書き方が変わっていました。 ハッシュも自動的にはされなくなっていて、最初は少し驚きました。 この辺りは公式のマニュアルのログイン処理の部分をご覧ください。 メールについては、もともとQdmail+QdsmtpのComponentを使っていたもので、 Componentのファイル群をCakePHP2.x用に修正しました。 ここも人柱がおられたの...

AndroidのMaster-Detailテンプレートでハマった話。

開発環境:EclipseでADTプラグインを入れた環境です。 発生したのは、エミュレータAndroid3.2(API 13) WXGAでした。 AndroidのActivityを新規作成していくと、 Master-Detailのテンプレートが選べます。 Android 3.0以降からフラグメントを利用することで、 タブレットでは1画面2ペインでリストと詳細内容を表示、 スマホでは1画面にリストを表示し、 そのアイテムをタップすると詳細ページに遷移して表示 できるようになるといったものです。 また、Androidのサポートライブラリappcompat_v7は、 Android3.0以前でもActionBar等が使えるようになったりします。 今回ハマったのはこれらの併用です。 なぜかサポートライブラリを利用した状況で、 テンプレートで作ったリストを表示しようとすると、 getActionBar().setDisplayHomeAsUpEnabled(true); でNPE(Null Pointer Exception)が発生しました。 たぶん何かの手順が前後したりしてこうなったのかなと思いますが、 サポートライブラリを利用すると、スタイルは強制的にサポートライブラリのテーマになります。 でも、実際のプログラムの方はサポートライブラリ対応版になっていなかったわけです。 結構調べて、結局、下記が解決策でした。 FragmentActivityをActionBarActivityに変更。 getActionBar() を getSupportActionBar()に変更。 同じように困っている方がいれば。 参考: http://fragmentswithationbar.blogspot.jp/2014/04/fragments-with-action-bar-and-support.html

最近やっているCakeのプログラム

バックエンドばかりですが、 ピュアPHPでデータをごりごり整形してDBに突っ込んでおいて CakePHPで表示という、文章にすればすごく簡単そうなのに、 データごりごりが週1しかチャンスがなく累積データなので、 うまくさばくのが大変です。 そしてCakeもなかなか2系が安定しない。。 1.3系の方がまだ良いのかなぁと。 プラグインが整っているように思います。 基本のバリデーションはやはり2になると種類も豊富になっていたり、 一部の有用なプラグインが1.3系を削除して2系に移行していて、 1.3だと少し不便な部分もありますがそれでも1.3なのかなぁと。

「mysqlでは左のデータベースに( < )入れるのです」 mysqlのデータベースへインポート

phpmyadminばっか使っていたらダメですね。 ちょっとしたサンプルデータのインポートがしたかったのですが、 php.iniのアップロードファイルサイズの上限にかかって インポートができず困りました。 mysqlのデータベースにインポートするコマンドが 忘却の彼方へいっていて調べる羽目になったので、 タイトルに書いて覚えることにしました。 コマンドは下の通りです。 $ mysql databasename < imp.sql -u username -p と言ってもコマンドだけなので覚えにくいわけですが、 「mysqlでは左のデータベースに( < )入れるのです」と覚えましょう。 バックアップは覚えてます。 「ダンプは左のデータベースから( > )出すのです。」 $ mysqldump databasename > exp.sql -u username -p