0

Ruby – Twitterに日本語でpostする

こんにちは。ruby初心者です。

今日はRuby Twitter Gem by John Nunemakerを使ってみた。

まず、rubygemsでhpricotとか入らなくて大変だった。

そのへんは最近書き始めたはてなダイアリー2008-02-20 – shokaiの日記に。

はてダの新投稿画面は、twitterみたいに気軽に書ける+コードに色が付く記法があるという事で、メモつけるのに非常に良いですね。

で、俺もtwitterを使ったアプリを作りたいので(botではない)

Rubyでやってみた。詰まったのは日本語まわりで、

Twitter API仕様書日本語訳

文字列を引数にとる API を使う場合、その文字列を UTF-8 に変換し、URLエンコードする必要がある。

とあるけどなんかURLエンコードしないでも通った。

post from ruby

コード。Kconvは多分標準で入ってる文字コード変換ライブラリらしい。pools.jp | twtr (コンソールから使えるtwitterクライアント)のソースみたら使ってた。

#!/usr/bin/ruby

require’rubygems’

gem’twitter’

require’twitter’

message=”ほあああああっ”

twit=Twitter::Base.new(“mail”,”password”)

twit.update(Kconv.kconv(message,Kconv::UTF8))

require ‘rubygems’しないとならない事に気づかなかった。なんかruby -cwで起動してもsyntax okしか出ないし…

まあこれから変な物作って楽しみます。

0

Apple Scriptでキーストロークを送る

はじめてapple scriptを書いた。

アプリケーション名「TextEdit」を指定して、a、左矢印、b、左矢印…と押していくサンプル。

参考:M.Cafe AppleScript Memo4

tell application "TextEdit"
    activate
    tell application "System Events"
        tell application process "TextEdit"
            delay 0.5
            keystroke "a"
            keystroke (ASCII character 28) -- 左
            delay 0.5
            keystroke "b"
            keystroke (ASCII character 28)
            delay 0.5
            keystroke "c"
            keystroke (ASCII character 28)
            delay 0.5
            keystroke "d"
            keystroke (ASCII character 28)
        end tell
    end tell
end tell

Arduinoなどを作っているtinker.it製のAppleScript Proxyというソフトがある

tinker.it Blog Archive Control your Mac from Arduino, the easy way

これを使うと、あるキーがシリアル通信で送られてきたら、あらかじめ指定しておいたapple scriptを実行させる事ができる。

これでArduinoやGainer→シリアル通信→キーストローク発生→FlashでgetAscii() と連携させる事ができる。

0

C# – GPS Connectorクラス bugfix版

前に作ったこれ

s.h.log: GPS ConnectorをUSB版SiRFstarIII用対応アップデート

の修正版を作ったのをアップするのを忘れていた。

download => GpsConnectorLib.cs

GPSが出すGPGGAセンテンスを見ているんだけど、例えば緯度だったら3523.2313という値が出てきてこれが35度23.2313分という事になる。

実は今まで35.232313度という意味だと勘違いしていた。KY(コード嫁)とか言いながら俺はデータシートを読んでいなかった。

今回からは、ちゃんと分を度に直して((3523.2313 % 100) / 60) + (3523.2313 / 100) = 35.6195013度

になるようになりました。

他の使い方は変わってない。

s.h.log: GPS ConnectorをUSB版SiRFstarIII用対応アップデート

■動作確認機種

・SiRFstarIII BC-337(CF版)

・SiRFstarIII GU-20(USB版)

■使い方

最初にシリアルポートと同じノリで設定する

usingOrg.Shokai.Util

GpsConnectorgps=newGpsConnector();

gps.PortName=”COM1″;

gps.BaudRate=4800;

if(!gps.IsOpen)gps.Open();

あとは、GpsConnectorクラスはデータ受信してパースをやってくれるので

好きなときにgpsDataメンバにアクセスしてデータを取り出せばいい

double latitude = gps.gpsData.lat; // 緯度

double longitude = gps.gpsData.lon; // 経度

詳しいデータは、GpsConnector.toString()でも出てくるのでそっちも見てね

0

Flash CS3 – ステージのインスタンスの自動宣言が止められないので

俺はFlashDevelopの強力なコード補完の上でコードを書いて、FlashCS3でコンパイルしてるんだけど、

UIをCS3側で作るとインスタンスが自動的に作られるので、FlashDevelop側でそのUIインスタンスの入力補完が効かなくなってしまう。

でもUIはCS3で作りたい。そして安心して長い変数名を付けてコード補完したい。

で、FlashCS3に「ステージのインスタンスを自動宣言」という設定項目があるが

ステージのインスタンスを自動宣言

「しない」にしてもなぜか宣言されてしまうので、

こんな感じで型を明示した別のインスタンスからリンクしてやって、入力補完を有効にしてやっている。

package{

importflash.display.MovieClip;

publicclassAirSwfPlayerextendsMovieClip{



privatevar_buttonClose:Button;



/*IDEが生成したオブジェクトを関連づけ*/

publicfunctionlink_ide_obj(){

this._buttonClose=buttonClose;

}



publicfunctionAirSwfPlayer(){

link_ide_obj();

}

}

}

asファイルのクラス内の変数宣言→CS3でのインスタンスの生成→asファイルのコンストラクタの順に実行されるので、いきなり

privatevar_buttonClose:Button=buttonClose;

って書いてもダメなので注意。

0

AS3 – あらためてラベリング処理

火曜に、imglのうっちーとあらためてラベリング処理ってどうやんのよという話をしていて、あらためてAS3で書き直した。

ただし、ラベルの衝突処理はまだやっていない。

ラベリング処理について→s.h.log: Proce55ing – 2値化画像を4近傍ラベリング処理してパーツ抜き出し

今まで、ラベルそのものを2次元のint配列で管理してたけど、今回はBitmapDataオブジェクトとして保存する様にしてみた。BitmapDataならx,y座標で要素にアクセスできるし、ピクセルはuint型なので都合がいい。

■できたもの

download => fla, as, swf (FlashDevelop3.0.0 Beta5 + FlashCS3)

年末年始作ったカメラから画像処理のサンプルを元に改造した。

webcamから撮影してBitmapDataにして、1ピクセルずつ走査して真っ白(0x00FFFFFF)のピクセルを検出。

さらにラベリング処理をして、「ピクセルのかたまり」毎に番号をつける。

(0x00FFFFFFは蛍光灯を撮影すると良いです)

labelinglabelinglabeling

今回はノイズを飛ばしたりしていないので、右の本棚の小さな白にも反応してしまって28個とか検出される

labeling

ラベルの衝突時の処理もしていないので、左上が空いた弧の様な形の時に割れてしまう

labeling

この辺はまたの機会に。

Read more