2011年最後の工作物 (メンション受け取ったらメールする何か)

秋月電子にて緑色の7segLEDを購入したので、Twitterの未読Mentionの数をカウントする電子工作をしようと思ったら、7segLEDのデコードICが壊れていた!ので、急遽方針変更して、アプリ側で攻めることにしました。
お題→Twitterのmentionを取得してメールで転送する

PHPdisな雰囲気もちらほらありますが、まぁ気にしない方向性で...
split関数がオワコンになってたのは少し腹たったけど。

<?php
// twitteroauth.phpを読み込む
require_once("twitteroauth.php");


// Consumer keyの値
$consumer_key = "consumer_key";
// Consumer secretの値
$consumer_secret = "consumer_secret";
// Access Tokenの値
$access_token = "access_token";
// Access Token Secretの値
$access_token_secret = "access_token_secret";

// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
//Replay取得
$req = $to->OAuthRequest("http://api.twitter.com/1/statuses/mentions.xml","GET",array("count"=>"10"));
// XML文字列をオブジェクトに代入する
$xml = simplexml_load_string($req);
$id_array = array();
foreach($xml->status as $status) $id_array[] = $status;

$now_id = $id_array[0]->id;

if (($fp = @fopen("save.txt", "r"))== false ){
	echo "File Error!";
}else{
	
	$line = fgets($fp);
	$tmp = explode("\n", $line);
	$old_id = $tmp[0];
	
	fclose($fp);
}

echo "now=[".$now_id."] old=[".$old_id."]\n";

if($now_id != $old_id){

	echo "Mention Detected!\n";

	$status_id = $id_array[0]->id;		// 呟きのステータスID
    $text = $id_array[0]->text;			// 呟き
    $user_id = $id_array[0]->user->id;	// ユーザーナンバー
    $screen_name = $id_array[0]->user->screen_name; // ユーザーID(いわゆる普通のTwitterのID)
    $name = $id_array[0]->user->name;	// ユーザーの名前(HNなど)

	/* Send Mail */
	$to      = "送信先のメールアドレス";
	$subject = "[Twitter] Mention Received!";
	$message = "$name ($screen_name)\n$text";
	$message = mb_convert_encoding($message, "SJIS", "auto");
	$headers = 'From: hogehoge@hogehoge.com' . "\r\n" .
    'Reply-To: hogehoge@hogehoge.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

	mail($to, $subject, $message, $headers);
	
}

if (($fp = @fopen("save.txt", "w"))== false ){
	echo "File Error!";
}else{
	fputs($fp,$now_id."\n");
	fclose($fp);
}

?>

プログラムの流れは、呼び出された時に@mentionを拾い、save.txtに保存されている最後に受信したツイートIDと比較して、異なっていたらメールを送信... という感じです。で、最後にsave.txtに一番新しいメンションのIDを保存。

サーバー上に適当に配置して、cronで定期的に呼び出してあげれば、それっぽい動作になるとおもいます。各自の環境にあわせて適当にご改造ください。雑なプログラムですいません。

※セキュリティー的な配慮は特にしてないです。自己責任でお使いください
※twitteroauth.phpが必要です。

参考元:http://www.sdn-project.net/labo/oauth.html

ブログ放置すいません

ブログをサボっている間にいろいろな事がございました。
高専祭というビッグイベントが終わり、無事高専祭実行委員のステージ部署長としてのお仕事をコンプリートしました。
気がつくと、高専カンファレンス2012 in 東京も近づいていて、学生スタッフとしてお仕事を何かしないとマズイと思いました
例のREBIUSをコンテスト出店とか考えて、改良しようと思ったら気がついたらテスト2週間前でした。
身動きがとれない。また。
Twitterではよくつぶやきますが、意外とハードスケジュールで頑張っているんです。(自分でハードスケジュールっていうのをアレですけどね

以下、適当に自己満足で語ってるので無視してください。
高専って、高校+大学を合わせた授業時間よりもはるかに多い授業時間なんです。そんな中、医療福祉工学科は、電子工学から情報から材料から機械系から材料学から電気磁気学からーって具合に全てにおいて学ばないといけないので、めちゃくちゃカリキュラムがハードです。それだけでも大変なのですが、それに加えて実習レポートや課題がいっぱいだされ、自分のように衛星の開発プロジェクトに携わっていると時間がございません。(しかも前期は高専祭実行委員の部署長もさせていただいてました。)
忙しいなら、仕事を引き受けなきゃいいじゃん。って自分でも思う。忙しくてやれるかどうか分からないのに仕事をもらうなんて無責任だしね。
でも、気がついたら高専3年生だし、残りの学校生活も少ないし、進路なんてあと1.5年もすればほぼ決まってくると思うし、なんだかんだで高専生活中にやりたいことっていうのがいっぱいあるんだ。この貴重な高専生活中に色々な事を体験しておきたいっていうのが自分の考え。ただ、自分の体力とかスケジュールがそれに追従できてなくて爆発してます。
この試験期間が終わると、休んでる暇もなくUNISECのワークショップ参加の為に飛行機で九州へ行き、豊橋技術科学大学で共同研究の打ち合わせがありーといがいと12月は大変なようです。まぁ年末ですし。おすし。そして、噂の材料学のレポートがついに自分の順番に。先輩の話だと、高専のレポート生活で一番の山のようなんです。

そういえば、この前の土曜日に第13回ときめき産業フェア(http://www.city.edogawa.tokyo.jp/chiikinojoho/event/tokimekifair11/)の東京都立産業技術高等専門学校のブースの学生スタッフとして、超電導の実験等のお手伝いをしていました。液体窒素に、麦チョコとかよっちゃんイカとかチロルチョコとかかけて、どれがいちばんおいしいかなんて研究をしていました。ちなみに結果は、麦チョコは冷たくて美味しくて(食べるタイミングによっては口の中にくっつく)、よっちゃんイカは低温脆性が発動して割れやすくなり口に含んでしばらくすると味が戻り、チロルチョコはとっても硬くなりました。

やりたいこと。いっぱいまとめてあります。手帳に。やりたいこととして、部屋の改装からプログラミングから電子工作から様々。ホームページの改装も視野に入れています。実はホームページをリニューアルしました。http://xecus.net/です。なんかプロフィールがガチな感じで意識高い感じがして気持ち悪いのは使用です。まぁ適当に書くのもあり(むしろ理想)なのですが、お仲間を集めたいなぁという意味も込めて。近いうちにココらへんのページをちゃんと執筆します。

それとnode.jsにはまりました。WebSocketとの組み合わせでリアルタイムなアプリとか組めちゃうんですね。すごいです。それとRubyによるCgiとか、OpenMPによる並列化とかやってました。今後はGPGPUとかにもチャレンジしていこうとおもいます。物理シミュレートソフトで使いたいんで。
物理シミュレートの件ですが、円運動のシミュレートに成功しました。とりあえず、物理シミュレートソフトウェアの開発する研究目的っていうのを、先生と話し合ってだいたい決めたので、もっと詰めていきたいと思います。(論文かきてー)
最近、医療検索システムやnyubuの方のお仕事まで手が回らなくて申し訳ございません。必死に時間見つけて頑張ります。

あとなんだろ。書きたいことが山ほど合った気がする。

研究成果発表-REBIUS-

Remort BodyInformation Observing Unit and Monitoring System


れびうす^ω^。かっこいい名前を付けたかっただけなんです。ただ中二病の精神に則っただけなんです。たぶんこれを日本語訳すると「遠隔生体情報監視ユニットとモニタリングシステム」って感じになると思ふ。高専生の英語能力やばいですから

とりあえず、以下にPDFを掲載しました。
http://l-raven.ddo.jp/private/rebius.pdf

仕組みとしてはとーっても簡単です。A/D変換してその値をXbeeの無線モジュールでPC側に送信して、PC側でグラフ化しているだけなんです
PC側グラフ化の手順は、C言語ベースの自作のシリアル通信ソフトをcsvデータに生成して、それをPHPからファイルを叩いて、GDライブラリでそのデータをもとにグラフ化しているだけなんです。新しいデータが来るたびにcsvファイルを生成しているので正直、PCの負荷ヤバイんだろうなぁと思っている。

将来的な展望としては、遠隔医療システムのベースになれば良いと思う。今携わっている小型人工衛星側のプロジェクトと何か連携できないかななんて考えている。今後の宇宙利用、人工衛星の利用方法について新しいアイデアが求められている。まぁ衛星を使った医療系の応用といっても、どうせ通信の応用(アプリケーション)になってしまうから難しいんだけど。一応、これにGPSレシーバー接続してリアルタイムで位置情報とかも記録できたらいいなぁって考えているんだけど・・・。衛星使ってるしね(笑

とりあえず現状報告をさせて頂きました。

そうえいば、僕のくらすめーつのお友達も心電図計を作成してるようです→http://kiritsumi.blogspot.com/

「忙しい」は使わない方向性で

近いうちの予定・・・。ブログやホームページに研究成果のアップロードをしないとなぁと。別に見せびらかせるほどの技術力は持っていないけど、自分がやってる事が誰かの役に立てればいいかなぁ。

最近、俗にいう”忙しい”っていう奴なんですが、忙しいって口にだすのはやめましたはい。言っても別に自分の負担が軽くなるわけでもないし、むしろ自分のスケジューリング、Todoリスト消化のへぼさを再認識・・・。忙しいという言葉を使って、他にやらないといけない事があっても、忙しいという言葉で合理的に理由付けをすることによって逃げてしまうという。その結果、あらゆる可能性を潰す事にもなりかねない

正直、自分はリーダーとか統括するのあまり向いていない・・・なのに自ら志願するという理由のわからなさ。プロジェクトマネージャーというのは本当にすごいと思う。ということでさりげなく反省日記

Xbee制御できた。

研究室でXbeeの制御ができまんた。
http://akizukidenshi.com/catalog/g/gM-04220/

ユニバーサル基板やブレッドボードに刺そうと思っても、ピッチが違うので
変換基板を自作 or 購入しないと行けません。自分は変換基板を1個500円で購入。
http://www.switch-science.com/products/detail.php?product_id=100

それから、3.3V動作するので、3.3V生成するレギュレータICが必要。
パソコン(RS232Cレベル)と通信するなら、ADM3202とかMAX232とかのICでレベル変換を
しないと行けません。

設定内容は以下のとおり。

(親機)
1: Cordinator ATを選択
2: IDの設定 子機と同じ値に (例:1111)
3: DH DLに子機のシリアルナンバーを入れる (子機の裏面に書いてある)
※右下の数字だけの2行で0013A200 406*****って書いてあるやつで、上側がDHで下側がDL。
4: シリアル通信の速度選択 (初期値:9600)

(子機)
1: End Device AT
2: IDの設定 親機と同じ値に (例:1111)
3: DH DLに親機のシリアルナンバーを入れる(親機の裏面に書いてある)
4: シリアル通信の速度選択 (初期値:9600)

DLを0 DHをFFFFとしても通信できますが、なぜか送信にディレイがあった。相手側のシリアルナンバーを正確に指定すると瞬時に届いた。シリアル通信の変更は任意だが、変更したらX-CTU側の速度設定も新しくしましょう。

3.3Vでの通信レベルなので、RS232とか5V系統のマイコンと直接接続しないようにしてください。(って言いましたけど、ぶっちゃけ5V動作マイコンに直接入れても動きました・・・自分の場合)

写真:http://twitpic.com/6btvly

僕がプログラミングを始めた理由とかきっかけとか(黒歴史の振り返り)

今回の記事では自分がプログラミングを始めたきっかけなどについて語って行こうと思います。同時に、どうして普通高校ではなく、高等専門学校に進学をしたのかということについても。とりあえず、小中学校について語ります・・・。
・PCとの出会い
小学校1年生の時にWindows98がおうちにきて、遊んでました\(^o^)/ 親父の仕事する姿を後ろからよく見てた。
家の向かい側に、外国人なのですが幼馴染(女じゃないよ^^)の友達がいて、小さい頃からよく遊んでて、相手側の家にはMacBookがあり、よく使わせてもらってた。
・プログラミングとの出会い
小学校5年生の時点で、クラスメートで既にプログラミングをしている人がいました。フラッシュでActionScriptを使ってダンシングおにぎりというゲームを既に作っており、自分も見よう見真似でそういう系統をやってみたいなぁって、HSPという言語を始めると同時に、HTMLにも興味を持ち始めました。自宅にHTMLの方は本があって、意外と簡単に基本は習得できた。サーバーはGeocitiesを使ってたけど、満足しなかったので、Yahoo!メッセンジャーを通して知り合った人にサポートしてもらいながら、ルーターのポート開放をやって頂いた(savagesplain様)。そして、HSPのウェブリンクで知り合った方で当時高校生の(masakiさんhttp://masaki.mydns.jp)からも指導をアドバイスを頂きながら、自宅サーバーを開設しました。っていっても、常時稼動ではなくたまーに稼働っていう状況。masakiさんのお力を借りながら、FTPサーバー立てたり、メールサーバー立てたり色々挑戦していました。当時は、「すごいよ!FTPでC:\丸見え!」なんていう素晴らしい運営をしてました。今考えるとガクブルすぎる。

掲示板をホームページに設置したいなぁと思って、「掲示板のHTMLタグって何?」とかお恥ずかしい質問を周囲に投げまくってたわけですけど、掲示板とか動的なコンテンツはサーバーサイド側の言語(Perl/PHP等)をつかったCGIという仕組みがあることを知った。それと同時にJavaScriptなるものを知り、JavaScriptの本を購入した。
またJavaScriptで、本当はいけないんですけど、ブラクラを作ってよく友達を引っ掛けて遊んでました。それでもって、とあるブラクラ専門のHPの掲示板で、同い年でHSPをばりばりできる子とお友達になり、互いを刺激しながらプログラミングをやって行きました。ちなみに、その子(tomoki http://genine.web.fc2.com/)は後に自分が高専に誘ったので同じ学校になり、同じ人工衛星の開発チームでシステム系(バス開発の部署)で相棒やっています

CGIのお話ですが、Perl/PHPは当時の自分にとっては難しかったのであまり手を出さず、SSIのexecとHSPで作ったプログラムを組み合わせて、携帯電話からPCを遠隔シャットダウンなんて事をやっていました(小6中期ぐらい)。
HSPのhspsockというネットワーク関連のプラグインでチャットのサンプルプログラムと音声関連の命令を組み合わせて、遠隔操作で大爆音がなるといういたずらプログラムを作ってました。WinXP機を自分が使い、古いWin98を妹が使っていたので、妹のPCに設置して遠隔操作で大爆音ブヒィwwってやってました。
この頃、自作PCというものを知り、本を購入....

小学校の時に、既にプログラミングとかホームページ作成とかやり始めてましたが、どれもサンプルプログラムをコピペしたり繋ぎあわせたりして、やってました。これとこれを組み合わせると、こーいう機能(結果)が得られるっていう論理的な思考力をここで鍛えていたのかもしれませんね。


・中学生のころ
(中学1年生〜2年生)
自分のお年玉でPC買った(DELLロープロファイルのやつ)。プログラミング言語HSPではなく、C言語というものを知った。(というかHSPプログラミング言語ではなくプログラミングツールって言われてますので、この頃から本格的にプログラミングについてやり始めたのかな)あとアニメ見始めた。ひぐらしBOINCという分散コンピューティングプロジェクトに参加し始めた。(ノートPCで無茶やったと思う)
この頃、噂のLinuxっていうやつを仮想PCにてご対面。あと、中学2年生の頃にPICマイコンに挑戦し始めた。(この時初めてアセンブリ言語というモノを知った。)自分のプログラミングの歴史はおかしいことに、HSPC言語アセンブリというどんどん高水準言語から低水準言語に落ちて行くという・・・。PICの方は残念ながら、PICライターの作成で撃沈してしまい、結局完成品を買った。
お年玉でグラフィックボードを購入(GeForce8400のやつ)。と思ったら、自分の知識不足でロープロファイル対応のものではなかったので、構体ボディっと放熱板がごっつんこ。m9(^Д^) それと、自宅サーバーが本格始動。24時間運営開始。
この頃、本で人の脳の仕組みについて知った。人間の脳の仕組み取りつかれて人工知能について考んがるようになった。意識って何だろう?とか、細胞の自己組織化とか、遺伝子の仕組みについても興味をひかれてた。この頃、認知工学とかニューラルネットワークとかそっち方面に興味が出た。情報系の人間として人間の体ほど身近ですごいシステムは無いと感じた。
→現在、医療福祉工学科コース専攻中。残念なことに脳の仕組みとか、生体工学がまだあんまり無いんだよなぁカリキュラムに。(´・ω・`)

当時の中二病がやばすぎてもう

(中学3年生) C言語に完全移行。自宅サーバーをLinux化。ついにLinuxで運営をし始めた。
中学3年生の間の夏休みの自由研究は全てプログラミングにした。中1の時は、当時習った一次関数の例である高度と気温の関係というモノを数学の先生のアドバイスで、高度を入力してボタンを押すとそこの高度での気温が計算できるというソフトを開発した。中2ではHSPで友達とRPG開発した。ちょーテキトーでネタゲーとかしてたけど、結構評判は良かったと思う。ちなみにキャラクターは絵を書くのがめんどかったので、文字の◯を動くように。中3では、C言語とDxライブラリーを使ってRPG作った。音楽から画像から全て素材を借りて作った。受験期の前の夏なのに気合入れてコード書いたら数千行にもなって、印刷したプログラムの紙の束が質量兵器になってた。金賞もらった。
中3の受験期に、PICでLEDをピカピカ光らせて遊んでいた。自分には電子回路や電気回路の詳しい知識がなく、トランジスタの使い方すら知らなかったのでここで限界。あと、”計算機の中身”についても興味が湧いてきたので、調べたところ、足し算は加算器っていうやつで構成されていることをしって、全加算器等の論理回路図を書いて友達に見せてCPUスゲーよってやってた。

・高校生(高専生)
高校1年生(高専1年生)でH8マイコンの制御技術を習得し、同時に電子回路の知識も得た。トランジスタなどの素子の使い方とか、センサーIC,オペアンプ等の使い方等。この時、人工衛星開発チームに入って研修を受けていた頃なので、先輩から色々と教わった。HSPのゲームと加速度センサーを組み合わせて、こんなゲームを完成させた。いわゆるwiiみたいに傾けると機体が動くやつ。高専祭(文化祭)で展示したら以外にも好評で子供がずっと遊んでくれてた。
http://l-raven.ddo.jp/index.php?p=3axis(なんか、プログラミングのお話の筈だったのに、ハードウェア入っちゃってますサーセン)研修で頂いたせっかくの知識をとんでもないことに活用もしました。(http://l-raven.ddo.jp/index.php?p=bakutiku_game) 非常に申し訳ない気持ちでいっぱいと共に当時を振り返ると、やっぱり遊びご頃で成長してきたんだなーって思った。この爆竹ゲーの爆竹への信号線をSSRに置換すると、AC100V機器を制御できちゃう便利な子になっちゃうんです(http://l-raven.ddo.jp/index.php?p=ac100v_control)。また、中3の時に興味あった加算器をつくってみよーと思って、トランジスタをからつくってみよーっていう謎企画を発動し、途中で挫折した(http://l-raven.ddo.jp/index.php?p=tr_level_cpu) 今気づいたんだけど、当時はセンサーICとかオペアンプとかコンパレーターとかセンシング系統のICしか使ったことがなく、論理演算用のICをあんまり使ってなかったから、トランジスタじゃなくてロジックIC使うといった発想がなかったんです。
それと、中学生の頃から興味あった人工生命をプログラミングしました。(http://l-raven.ddo.jp/index.php?p=als) これを学校の夏休みの課題として、みんなの前で発表したわけです。炭素に依存しない人工生命の開発研究を。
この人工生命のプログラムはC++で記述されてるのですが、クラスは使いこなせてないわ、継承とかオーバーロードとかC++の良さをオールキルしてまして、とっても恥ずかしいプログラムとなっています。(当時はCもC++もほとんど同じようなものだと思っていたんです。お恥ずかしながら)


詳しくは次回記述しますが、こんな感じで今まで過ごしてきました。たくさんの人に出会い、機会にであい、今は高校3年生(高専3年生)ですが、医療施設の検索システム開発の依頼(アルバイト)や、nyubuプロジェクトへの参加や、小型人工衛星開発チームへの参加等を通して様々な事を勉強しています。3.11の震災のあと、http://l-raven.ddo.jp/power/のような計画停電地域の検索サービスを立ち上げました。やっぱりプログラミングを自分の興味だけにしてしまうのではなく、実際に人の役に立てていきたいなと考えているこのごろでございます。(ぶっちゃけこれが高専にはいった理由なのですが...プログラマーとしては、まだまだの自分ですがこれからも人の役に立てるように頑張っていきたいですね。

サイゼリアで会議とかParalells DesktopとかOfficeとか

現在、新しいプロジェクトに参加する事がきまり、昨日南千住のサイゼリアにて作戦会議をしてきました。プロジェクトの発案者側が2人で、自分側が3人。とっても、有意義な話し合いができたと思いまする。
それと、医療検索サービスで報酬をいただくことができました。報酬を期待とかじゃなくて、もともといただくつもりはなかったんだけど、いただいてしまいました。嬉しいですねーこれで好きなものをかう足しにできる^ω^

一昨日、学校から、OfficeやWindows7等のOSの販売をなんとかアグリーメントに基づいて1010円で販売されることが知らされました。んで、配布された資料の中にOffice for Macの文字。しかも2011。やべーってことで早速購入しようと思ったら寝てしまい、昨日購入しました。うん、普通に動いてくれてマジで感謝。
昨日は、高専祭実行委員の関係で学校の委員会室の備品の整理と在庫のカウントをやりました。いやー面白かった。

それから、最近はまっているのはParalells Desktop 6 for Mac宇宙研の後輩が使っているのを見て、いろいろ教えてもらって自分も導入したら本当にすごかった。シェアウェアなんだけど、これは購入決定かな。なにせ、仮想化の概念をすでに超越している気がするw もう、WindowsMacの共存って行っても過言じゃないと思う。でも、やっぱり仮想化だけあって、Windows側(ゲストOS)が重いかな・・・。でも、Aeroとか有効になっててビビった。
電車の中でドヤ顔でMacWindows操作してて、乗り換えが着て、仮想OSをシャットダウンしないままPCをスリープにして学校にいったら、仮想ハードディスが壊れててOS再インストールになってしまった。これ要注意。
あと、Paralells Desktopで文字化けで困っている方へ。
スタート→コントロールパネル→地域と言語(だっけな)で、Unicodeうんたんの設定を英語から日本語に変えればOK.その他、いろいろな言語設定を日本語にいじれば問題ないと思う。まぁこれでかなり実用的。

最近、本当に時間がなくてブログを更新する時間もあまりなく・・・。技術的なお遊びもほとんどできず・・・。
辛いなぁ。本当に辛い。けど、Todoリスト駆逐マシンとして人生を謳歌してる気がするwぴょーww