2014年4月2日水曜日

高専プロコン2014競技部門練習場が立ち上がりました

どうも、まるさ@maruuusa83です!!!

タイトルの通りですが、沖縄高専の老害組で2014年の高専プロコン競技部門の練習場を立ち上げましたw




@maruuusa83 (サーバ構築)
@orisano (問題生成)
@goya813 (判定)
@marin72_com (広報)
@higumachan725 (手動ソルバーなどそのた雑務すべて)

要綱を見て爆速構築したのでまだまだな感じですが、ガンガン使ってご意見ください!

何かあれば僕@maruuusa83@orisano@higumachan725にtwitterのリプライなりなんなりでお知らせくださいな


広報担当 @marin72_com の広告記事もどうぞ!
高専プロコン2014競技練習場設置のお知らせ。 -なっちゃんのめもがき。
http://marin72.hatenablog.com/entry/2014/04/02/160755



今回はこのへんで!!

まるさ

ブログ復帰します><

どうも、まるさ@maruuusa83です。

一度ブログをこちらに復帰することにしましたw

EC2サーバを一時STOPしています。復旧の目途はたってないです←


先輩がプロコンの練習場を作ったので是非活用してください!!!
http://procon2014-practice.oknct-ict.org/

2013年4月29日月曜日

ブログ移動しました!

どうも、まるさ@maruuusa83です!

ずいぶん前の話ですが、ブログを移動しました。
ここに記事を書いて移ったつもりだったのですが書いていなかったようです・・・;

新しいブログはこちら
http://maruuusa.ddo.jp


なぜ移ったのか

ここはbloggerを使ったブログで、ブログサイトを利用している形になります。
が、AmazonEC2を借りて自分のサーバが手に入ったということで、Wordpressに移行することにしました。
自由度を高くしたかった・勉強のつもり ということもあって、ちょっと大変だけれどなんとか運用していますw


というわけで、ぜひぜひ、この後もにわかプログラマーのにわかなナニかもとい、拾ったサイコロは無限面だったをよろしくお願いします!!

2013年3月22日金曜日

virtualenvのメモ書き

どうも、まるさ@maruuusa83です!

あれこれ一気に始めると覚えるのが大変なので
忘備録としてツールアレコレの使い方をガンガンまとめることにしますw

今回はvirtualenvです!
必要最低限の本当に簡単なまとめです。


virtualenvとは
virtualenvはpythonの仮想的環境を作ることができます。
pythonのバージョンを普段とは変えたいとかパッケージを別々にしたりとかそういうことです(雑)


仮想環境の作成から実行まで
まずは環境を作ります。
プロジェクトフォルダを作ってそこを仮想環境として設定してしまいます。

% mkdir projectname
% virtualenv --no--site-packages projectname

これでprojectnameフォルダの中に必要なファイルやらフォルダやらが生成されます。
仮想環境を立ち上げるには、生成されたbinフォルダ内のactivateを使います。

% source bin/activate

これで仮想環境になります。
ユーザ名の前に(projectname)とつくと思います。

(projectname)[username projectname]$ _


仮想環境の終了
一行、deactivateを呼び出すだけです。

$ deactivate

これでOK。ユーザ名の前の(projectname)が消えるはず。



こんな感じですね。

あくまで忘備録なのでこれだけですwww
より良いpython生活を!w

それでは、今日はこのへんで ノ
まるさ

2013年3月6日水曜日

Windows8でNFCタグを使う

どうも、まるさ@maruuusa83です!

Windows8搭載のASUS製タブレット端末を入手したので遊んでみました!
Microsoftのエバンジェリストの方から「NFCおもしろいよ!」と伺っていたのでNFCリーダを搭載した機種ですw

まだまだNFCを使って遊ぶ情報は少ないですね・・・。
というわけで、NFCタグで遊ぶまでの手順をそこそこ詳しくまとめておきます!

必要なもの
NFCタグ
NFCとは近距離無線通信規格のことで、いわゆる非接触型ICってやつです。

Amazonでも売ってますし、通販サイトもいくつかありましたよ!
中にテキストデータだったり画像だったりの任意のデータを書き込むことができます。すごい!
とはいいつつ容量は150Byte程度ですがw


NFC対応タブレット端末
今回僕の環境ではASUSのTF810Cを使っています。
ディジタイザとタッチパネルでめちゃいい感じですw


Windows8 Metroスタイルアプリの開発環境
こちらに使い方をザーッとまとめているのでもし必要であればご覧ください!


早速実装!
0.目標
今回はNFCへの任意のデータの書き込み・読み込みを行えるようにしようと思います!
データのタイプも様々指定できるのですが、今回は次のタイプを使います。

  • URLを書き込んで自動でブラウザが立ち上がるタイプ
  • アプリ内で使えるような任意のデータの書き込み・読み込みができるタイプ

1.プロジェクトの立ち上げと設定
適当な感じでプロジェクトを立ち上げてください。
プロジェクトを立ち上げたら、近接通信が利用できるように設定します。

  1. ソリューションエクスプローラーからPackage.appxmanifestを開く
  2. [機能]タブの[機能>近接]にチェックを入れる

この設定でNFCによる通信が使えるようになります。

2.UI要素の追加
書き込み・読み込み それぞれに必要なUI要素を追加しておきます。
僕はこんな風にしてみました。参考にしてくださいー。



書き込み:
データ記入用TextBox、データタイプ選択ComboBox、データセット用Button

読み込み:
データ読み込み用Button、データ表示用TextBlock、
読み込んだデータを表示するButton

これで準備ができました。
まずはデータを書き込めるようにしましょう。

3.データの書き込み
まずは先ほど作ったページでWindows.Networking.ProximityWindows.Storage.Streamsをusingしておきます。

そして、Set DataのボタンのClickイベントハンドラに次のコードを書き込んでください。



var device = ProximityDevice.GetDefault(); //NFCの環境があるかチェック
if (device == null)
{
    //NFCの環境が存在しない
    Data.Text = "Can't use NFC.";
    return;
}

//ComboBoxに合わせてメッセージタイプを選択する
string messageType = "";
string message = "";
if (data_type.SelectionBoxItem.ToString() == "URL") //UI要素に合わせて適当に
{
    //読み込むとブラウザが立ち上がり書き込んだURLにジャンプする
    messageType = "WindowsUri:WriteTag";
}
else if (data_type.SelectionBoxItem.ToString() == "DATA")
{
    //このアプリで使うためのデータとして書き込む。自動でソフトは立ち上がらない。
    messageType = "Windows:WriteTag.SampleData";
}
message = Input_data.Text;
Data.Text = "Set data : " + message; //書き込んだデータを画面に出力


var writer = new DataWriter();
writer.UnicodeEncoding = UnicodeEncoding.Utf16LE;
writer.WriteString(message);
var publishId = device.PublishBinaryMessage(messageType, writer.DetachBuffer(), (provider, msg) =>
    {
        provider.StopPublishingMessage(msg);
    }
);



これでとりあえずデータを書き込めます!
TextBoxに適当なURLを打ち込んで、ComboBoxをURLにセットして、書き込んでみます。


書き込んでみたら、NFCを一度離したあと読み込ませてみてください。こんな画面がでるハズ


画面右上にトーストが出るので、そいつをクリックしてやるとタグに保存したリンク先にジャンプします。
これでおもろい名刺つくれますね!!

DATAを選択して書き込むとピロピロ音が出るばっかりで何も起きません。
じゃー次で読みだしてみましょう。

4.データの読み出し
こんな感じです。文字コードの読み直しについて調べるのが面倒だったので1バイト飛ばしながら読む暴挙にでています(ごめんなさい)



long subscribedId = -1; //うまくIDを引き継げなかったのでクラス変数へ・・・
string str_data = ""; //クラスの中で自由に使いたいのでこれもスコープを広げます;
private void GetData_Click(object sender, RoutedEventArgs e)
{
    var device = ProximityDevice.GetDefault();
    if (device == null)
    {
        //NFCの環境が存在しない
        Data.Text = "Can't use NFC.";
        return;
    }

    Data.Text = "You can read NFC";

    //この行が実行されると読み込み待機になる。
    //指定したタイプのデータを読み込むと渡した関数を実行。
    subscribedId = device.SubscribeForMessage("Windows.SampleData", (provider, message) =>
    {
        var data = message.Data;
        byte[] buffer = new byte[data.Length];
        var reader = DataReader.FromBuffer(data);

        str_data = "";
        for (int i = 0; i < data.Length / 2; i++)
        {
            str_data += reader.ReadString(1);
            reader.ReadString(1);
        }

        System.Diagnostics.Debug.WriteLine(str_data);

        device.StopSubscribingForMessage(subscribedId);  //読み込み待機の停止
    });
}



これでstr_dataに読み込んだデータが保存されます。
文字コードを読みかえしてしまえばもっとスマートな関数になると思いますw

これでstr_dataにタグ内に「Windows.SampleData」というタイプで保存されたデータならば読みだすことができます。
アプリに合わせて「SampleData」は好きな名前に変えられます。(Windows.xxxxと書ける)

このstr_dataを右画面のTextBlockに反映するように設定すれば完成!


そのうちクラス化して使いやすくしようかなーとおもいます。
NFCリーダライタ同士での通信もできるので、今度はそれに挑戦しようとおもいます!


今日はこの辺で ノ
まるさ

2013年2月24日日曜日

世界で活躍できる人材になる成長法!

どうも、まるさ@maruuusa83です!

今日は「アジア、世界で通用する人材になるための成長法 ~元ハーバード大学講師による人材育成法~」 というワークショップに参加してきました。
激アツな勉強会で、ヒートアップしまくり熱気むんむんな会場でしたw

アクティブラーニング社 代表取締役の羽根拓也さんナビゲーターのもと、人を惹きつけるとはどういうことなのか、「選ばれる」とはどういうことなのかを考えました。


羽根さんのワークショップは、羽根さんがテーマを提示しグループの中で何度も何度もディスカッションや発表を行う形式でした。
聴くだけではなくて、「考える」ということがしっかりできましたし、ほかの人の考えを知ることもできたのでとてもよい体験でした。


印象に残ったこと
「これからの仕事がなくなる」という話題です。
世界的分業化やテクノロジーの進化によって、これから様々な仕事が消えてゆくだろう、というお話でした。


そんななかでトップを維持するために必要なことや、いかに「選んでもらう」かなどをディスカッション形式しました。

「○○の仕事は20年後まだ存在しているのか?」という問いに恐怖を覚えましたw;


かんじたこと
仕事がテーマでのお話でしたが、それだけでなく「自分自身のアピール」だとか自分の作ったモノのアピールにも応用できるものでした。
また、もともと教育法について研究なさっている方で、教育法のお話やワークショップの形式そのものも非常に勉強になるものでした。

これからの部の後輩育成に役立てられたらなーと思うワークショップでした。


コミットタイム
最後のワークショップが、「感じるだけじゃたいていの人は動かないので、ワークショップの感想とこれから一週間で何かを行うと宣言してください!」というものでしたw

僕は先日mindstormsを手に入れたので、これを使ってひとつロボットを作ってブログ記事を書く約束をしてきました(爆)


というわけで、次の日曜までにしっかり仕上げてうpしようと思います!


今日はこのへんで! ノ
まるさ

2013年2月15日金曜日

ビックデータ解析演習講座を受けました!

どうも、まるさ@maruuusa83です!

もうすぐ3月ですが明けましておめでとうございます!
年が明けてから年度が終わるまでの期間が一番あっという間に過ぎ去ってしまう期間に感じますw

そんなこんなであっという間に高校生ではなくなり、大学生と扱われるようになります・・・。悲しい。


さて、本題ですw
特定非営利活動法人NDA 様が主催している、「ビックデータ解析演習講座」を受講してきました。
2月16日からスタートの全5回の講義で、演習に重きを置いて実際にビックデータを用いて株式の変動予測を立ててみる、という内容でした。

すごく良い内容で楽しかったので、まとめておこうと思います。


そもそもビックデータとは
その名の通り、巨大なデータのことですw(
きちんと構造化されている場合も、まったくされていない場合もあります。

身近なもので言うと、コンビニチェーン全店の購買記録だったり、大量のニュース情報、気象データなどが挙げられます。
最近バイオインフォマティクスとして注目されているゲノム配列のデータもビックデータと呼ばれたりしますね。



そういう巨大な情報を解析して、「今まで見えなかったこと」を見つけていくのがビックデータ解析の目的です。


Twitterが株式市場を予測する
現在のTwitterは、これまでの最高で25,088TPS(Tweet per Seconds)(という単位があることにもおどろきだけれども)を記録するほどの(有意かどうかはさておき)大量の発言が飛び交い、ビックデータが形成されるプラットフォームになっています。

ある研究によると、その発言に含まれる単語の感情を分析して世の中の雰囲気を読み取り、株式市場の予測を約86%の確率で行うことができるそうです。
8割当たれば大金持ちですよね・・・。

実際に僕らもそのような分析ができる、というところを目指して講義に挑みました。


ポジティブな単語、ネガティブな単語
与えられたデータ群(つぶやき)の分析を行う手順として、簡単に以下のような感じになります。

単語の抽出→単語の解析→統計・データの分析→結果出力

「単語の解析」ですが、ここがとても興味深いものでした。

たとえば以下のようなことをするとします。
  1. 「悪い」「減少」「降下」などというワードに"ネガティブ"を与える
  2. 「良い」「増加」「上昇」などといった単語に"ポジティブ"を与える
単純ですが、その情報を持ったうえで統計を取ると、分析するデータ群がどんな"雰囲気"なのかがわかり、株価が上昇/降下のどちらなのか判断することができます。

この解析ですが、
  • 単語のポジティブ・ネガティブについて、0か1を与えるのではなく実数値として与える
  • ポジティブ・ネガティブだけでなく、もっとたくさんの意味を与える
とかやってみるとさらに正確な予想ができると考えられます。
また、「失業率が急上昇」というセンテンスに対して、我々が読めば明らかにネガティブなものですが、先ほどの単純な解析だとコンピュータからは

『「失業率:ネガティブ」「急上昇:ポジティブ」・・・OK,1対1だからどちらでもない記事だね!』

くらいにしか見えないかもしれないので注意が必要です。


キーワード
演習講座というタイトルだけあって、実際に現場で使われている手法や解析ツールを用いて具体的な手法を学ぶことができました。

全部書くわけにもいかないので幾つかキーワードを書いておきます。
  • 極性付評価表現辞書:単語のネガティブ・ポジティブを分類するものです。
  • ベイズの定理:これを使って記事の予測モデルを構築します。
  • ナイーブベイズモデル:ベイズの定理を用いた分類モデルです。

株価予測コンテスト
講座の最終日はそれまでに得た知識を使って株価予測コンテストを行いました。

学習データとして28日分のニュース記事と四本値が提供され、分類モデルを構築。
それからランダムに選択された日から5日前分のニュース記事が提供され、選択された日の指定銘柄の相対リターンのup/downを予測する。

というものです(一部略w)。

んで、結果なのですが、なんと優勝してしまいましたwww(たぶんというか絶対まぐれ)
超豪華賞品とコンテスト前からずっと煽られてたのですが、なんとLEGOのmindstormsをいただくことができました!!


やってみたかったので超うれしかったです><



これまでビックデータと言ったらゲノム解析のイメージが強かったのでイメージが大きくかわる講座でした。
というか、ビックデータでこんなことができるなんて全く思ってなかったです(笑)

ビックデータを使った何かを作ってみたいなーと感じました。
何かアイデアを思いついたら書いてみようと思います!!

今日はこのへんで! ノ
まるさ