| @WWW

まさか自分がこの手の被害に遭うとは思ってなかったんだけど、日曜日にSkypeアカウントが乗っ取られてログインできなくなり、少額だけどSkypeクレジットが知らない外人に使われてた。

ことの経緯

日曜未明、Skypeからメール送信されてた。メールは以下のような内容だった。

  • Auto-Rechargeを有効にしてくれてありがとう。Skypeクレジットが300円以下になったら自動的に3500円チャージするよ。
  • Skypeクレジットの通貨が円からUS$に変更されたのでお知らせしときます。

Auto-RechargeはSkypeクレジットが残り少なくなったらオートチャージする機能。使いすぎて危ないので普段はオフにしてる。Skypeは数日使ってなかったのでおかしいと思い、日曜の昼間にSkypeにログインしてAuto-Rechargeを無効にしようとした。

が、「パスワードが違う」と出てログインできない。しょうがないのでパスワードの再設定を行おうとしても「内部エラーが起きました」と出る。この時点ではアカウントが乗っ取られたと思いもよらなかったんだけど、どっかの外人が乗っ取ってすでにパスワードを変更してたみたい。

パスワードの再設定トークンの発行回数が上限に達したため、「一時的なエラーでも起きてるのかな」と諦めて翌日もう一度パスワードの再設定を試みることにした。

結局月曜日になっても内部エラーが出続けるので、Skypeのサポートに問い合わせてみた。するとすぐ返事が来て、

It seems that a third party might have gained access to your account. To ensure that you are the only one who can access your account, we advise you to change your password as soon as possible.

この時点で初めて誰かに乗っ取られたんだということに思い至った。サポートの人がアカウントをロック(Skypeクレジットを使えない状態)して、僕がパスワードを再設定をできる状態にしてくれたので、新しいパスワードに変更してログインしてみると、通話履歴にインドネシアへの発信記録が。

1135_skype_account_hacked.png

正直なところ、いつどのタイミングでパスワードを盗まれたのか分からない。Skypeを騙ったメールとか届いてないし、WebからSkypeアカウントにアクセスするのはSkypeクレジットをチャージするときくらいなので、怪しいサイトにIDとパスワードを入力した覚えもない。

しかし「自分は情報弱者じゃないからフィッシングには引っかからないよ」とか「Mac使ってるから安全なはず」みたいな油断というか慢心があったのかも。

金銭的な被害は200円くらいだけど、すごく気持ち悪い出来事だった。と同時に、セキュリティの重要性が身にしみて分かった。Skypeのサポートはオートリプライメールとかじゃなくて迅速に対応してくれたけど、なんかしばらくSkypeは使いたくなくなってしまった。

| @旅行/散歩

病院があったので五月の第二週に関西をうろついてきた。

5月の京都はとても良い。あんまり込んでないし。たしかに秋の京都の紅葉は美しいが、あまりに人が多すぎる。それよりは5月の新緑をゆっくり眺めるのが良い。もみじの新緑が非常に美しく、また気候も暑くもなく寒くもなく、町歩きにちょうどいい。

今回は初めて神戸にも行ってみた。山と海が近くて、九州でいうなら別府に地形が似てると感じた。独特の街並みが印象的で、一度泊まりがけでゆっくり観光してみたいと思った。

神戸はTwitterで知り合った青木ヨーマさんに案内してもらった。三ノ宮から新開地というところまで歩いて、競艇だか競輪だか風俗だか帰りのおじさん達に混じって、昼間から安い飲み屋でビールを飲んだ。若いヤンキーっぽい感じの女の子たちが給仕をしていて、接客されてるっていうより説教されてるみたいな感じ。いちいち恐縮しながら注文した。

この店は基本的におじさん達が友達同士でやってきて(女性客はほとんどいない)、ギャンブルの話なんかをしながら飲んでるんだけど、なかには一人でやってきて、競馬中継をラジオで聞きながら、あるいは文庫本を読みながら独酌するおじさんが何人かいてすごくクールだった。30分くらいいてほろ酔いになったらささっと出ていくの。とてもかっこいい。自分ももう少し歳をとったらこういう酒の飲み方をしたいと強烈に思った。

以上、とりとめがないけど五月に関西に行った話。

| @技術/プログラミング

この前大阪で第二回アメ村ブルゾンの会をやったんですけど、そこで日夜ネットストーキングプログラミングにいそしんでおられる皆さんとお会いして、TwitterのStreaming APIの使い方を教えてもらいました。なんか自分でやろうとしてたんだけど、全然見当違いなところを見ていたみたいで、僕もStreaming APIでネットストーキングできるようになりました。pokutunaさんにもらったコードと "Twitter Streaming APIをRubyで試してみる - しばそんノート":http://d.hatena.ne.jp/shibason/20090816/1250405491 を参考に、以下のような感じにしてみました。

#!/usr/bin/env ruby
# coding: utf-8

require 'net/http'
require 'uri'
require 'rubygems'
require 'json'

USERNAME = 'morygonzalez'
PASSWORD = '***'

uri = URI.parse('http://chirpstream.twitter.com/2b/user.json')
begin
  Net::HTTP.start(uri.host, uri.port) do |http|
    request = Net::HTTP::Get.new(uri.request_uri)
    request.basic_auth(USERNAME, PASSWORD)
    http.request(request) do |response|
      raise 'Response is not chunked' unless response.chunked?
      response.read_body do |chunk|
        #空行は無視
        status = JSON.parse(chunk) rescue next
        #eventを含まないものは無視
        next unless status['event']
        source = status['source']
        if status['target_object']
          target_obj = status['target_object']
          target_user = target_obj['user']
          puts "#{status['event']}: #{source['screen_name']} -> #{target_user['screen_name']}: #{target_obj['text']}"
        elsif status['target']
          target = status['target']
          puts "#{status['event']}: #{source['screen_name']} -> #{target['screen_name']}"
        end
      end
    end
  end

rescue Timeout::Error => ex
  p "<-----!!!! Timeout::Error!!!!----->"

  retry
end

教えてもらったコードではTweetの内容を垂れ流しにするやつだったんですけど、自分でちょこっといじってTweet以外のステータスを表示するようにしてみた。しかしなんか調子悪いっぽくて、完全にはStreamを取れてないっぽいです。

でもまぁ一歩前進したことは確か。Rubyがんばるぜ。

| @技術/プログラミング

ちょっとCakePHPで作ってるサイトでRSSフィードを配信したいと思ったのでやってみたんだけど、思いの外面倒くさくてびっくりした。『RailsによるアジャイルWebアプリケーション開発』を読みながらRails 2.3.5でRSSフィード作るときは結構簡単だった気がするので、正直これはないわと思った。

『Railsによる〜』で作ってるデモプロジェクトのdpeotのコードを見てみると、RSSを配信するときはControllerに以下のように記述し、

respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @products }
end

config/routes.rb

map.connect ':controller/:action/:id.:format'

と書いたあと、RSS用のViewを用意してやるだけだ。ものすごくシンプルで簡単だった。

CakePHPで同じことをやるためには以下の手順が必要。

ちょっと面倒くさすぎてやる気にならなかった。どうせいま僕が作ってるサイトなんてRSSリーダー使うような人が見るサイトじゃないし、フィード配信機能の実装はそんなにプライオリティ高くないので他にやることがなくてどうしようもなく暇なときにでもやろう。

Railsは最初のとっかかりのハードルは高いけど、使い方を覚えていったらやっぱりCakePHPとかよりも全然簡単かつ高速に開発できる気がする。レールに乗ってる感強い。このMephistoの設置もすごく楽だった。ただTerminalを使い慣れた人や、サーバーにSSHでアクセスできる環境じゃないとRailsアプリケーションを使うのは難しい。CakePHPは反面、全部FTPでアップロードすれば良いのでサーバーに標準的な構成でPHPがインストールされてりゃ環境構築でつまずくことはない。どっちをとるかって話ですよね。

僕はファッションの観点からRailsを選びたい。

| @雑談

OSTERIA Fridge

先週用事があって福岡に行ったんですけど、Twitterで知り合った方に OSTERIA Fridge というレストランに連れて行ってもらいました。カウンターの席に座り目の前で料理を作ってるのを眺めながら食事しましたが、大変おいしかったです。料理について質問するとお店の人がとても楽しそうに説明してくれるので、なんかこっちまで楽しくなってきた。こういうお店は大変良いと思います。僕はジャンクフードとか学食のカレーとかが好きだし全然グルメ野郎ではないのだけど、また行ってみたいと思えるお店でした。時間の都合でデザートとコーヒーを注文できなかったことが残念でした。

| @技術/プログラミング

なんかTwitterで「最近のポータルシット変わったよね…」とかいう意見を目にするようになったので、パソコンネタだけ隔離して別にブログを始めることにした。使っているCMSはMephisto。Railsの勉強になるかと思って。早速DreamhostへMephistoをインストールしていて躓いてしまったのでちょこっとメモ。

とりあえず tech.portalshit.net というサブドメインを用意し、DreamhostのパネルでPassengerのセットアップ。その後SSHでサーバーに接続し、

$ git clone git://github.com/emk/mephisto.git
``

してgithubからプロジェクトをclone。

Mephistoのインストールにはいくつかgemが必要。Dreamhostには結構たくさんgemがインストールしてあるんだけど、いくつか足りないものがあった。とりあえず設置ディレクトリのルートで

```sh
$ rake gems:install

と打ってみたところ、nokogiriとそれに依存するbrynary-webratが入らなかった。原因を調べてみたところ、xsltのライブラリをダウンロードして、gem install するときにパスを指定してあげる必要があるらしい。xsltのライブラリ自体はPHP5をカスタムインストールしたときに入れてあるので、以下のオプションでインストールした。

$ gem install nokogiri \n    --with-xslt-include=/home/morygonzalez/php5/include/ \n    --with-xslt-lib=/home/morygonzalez/php5/lib/

無事インストール成功。その後もう一回 rake gems:install を実行してbrynary-webratも入り、管理ページにアクセスしてみると今度はPassengerのエラーが。これは単純にdatabase.ymlに development: のDB環境しか記述していなかったこと、 rake db:bootstrap のときに RAILS_ENV=production をつけていなかったことが原因だった。そういうわけでdatabase.ymlに production: の設定(sqlite3を使用)を書き、

$ rake db:bootstrap RAILS_ENV=production

ですべてのインストール作業完了。いまこうして動いております。

今後はここにCakePHPやRails、JavaScript関連のことを書いていこうと思います。できれば一日一ポスト、その日に学んだことを書いていきたいです。

| @Mac/iPhone

Pocket WiFi

せっかくMacBook Pro持ってるのに外で使わないのもったいない、しかし外で使うためにはやっぱり回線が必要だ! というわけでSoftBank版のPocket WiFi、C01HWを買いました。

家にいるとついついいろんな誘惑に負けてしまってプログラミングの勉強がはかどらないので、一念発起してPocket WiFiを買い、自分にハッパをかけることで屋外で勉強できたらいいかなと思いました。

昨日早速スターバックスでMacBookおっぴろげてみました。勉強はあまりはかどらなかったですが、家にいたらきっとむふふな動画見たり酒飲んだりしてだらだらしていたであろう時間に、少しでもテキストが進んだので買った甲斐はあったかなと思います。

最近は土日どっちかは外で映画見てるので、映画の上映待ってる細切れの時間とかに少しでもプログラミング出来たらとても良いかなと思ってます。週末少しもコード書かないと忘れること多いし。

ところで、買って半年以上経つのに本格的にMacBook Proを持ち出して使うのは昨日が初めてだったのですが、MacBook黒に比べて

  • バッテリーのもちが良い
  • 15インチディスプレー(1440 × 900)だとやっぱ快適
  • 薄いのでバッグへの出し入れがスムース

でした。先週出た最新のMBPはもっとバッテリー駆動時間伸びてるらしいし、しかも値段下がってるし、いい時代になったもんですね。LED Cinemaがもうちょいレート反映した値段になってくれたら良いのにな。