投稿

C言語でBluetoothスタックを叩きたい人のBluetooth開発入門その1

会社ではCでデバドラを書いてる私は、密かにBluetooth関連のお仕事をかっさらおうと画策中。 しかしながらスタックの知識、実装面等おぼつかない部分があるので、 スタンダードなことを勉強していこうと思い下記の本を会社の資料室で借りた。 めっちゃいい感じ。 PythonとかCでBluetoothスタックを叩いて実装の雰囲気を感じ取れる教科書。 入門じゃぁ!と思って意気込んでプロトコルとか読み漁るよりも、 はじめはざっくり雰囲気でよくわかんねぇけど実装は出来る状態に持っていく。 その上で深さ優先探索していってお勉強が完了するイメージですすめるほうが、 技術の習得においては手っ取り早い。 この教科書、Linux前提で話が進むので、 とりあえず私はWindowsをホストコンピュータとして、 Virtualbox上にUbuntu入れてお勉強進めます。 この本に載ってるソースコードでは、 しょっぱなから #include <bluetooth/bluetooth.h> やってるんですけど、 usr/include 以下を調べてもヘッダ無いんですよねこれが。 何かインストールしなきゃいけないんだろーと思って調べたところ、 bluezなるものをインストールする必要があるとのことでした。 アプリを実装するためにはヘッダ、バイナリが必要なので、 具体的にはコマンドを実行してヘッダを落としてきましょう。 $ sudo apt-get install libbluetooth-dev # bluezの開発環境をインストール! あとは ここ のサイトを参考にしてsimplescan.c を書いちゃって、 $ gcc -o simplescan simplescan.c -lbluetooth # bluetoothライブラリをリンクしてコンパイル! はい、実行できた。 きょうはここまで。

Webクローラーを自前で実装する戦略を情弱が考えてたところなんか話がそれて頭の良さの変遷ついて考察する事になった

私は仕事ではもっぱらCのコードを書いてて、 デバドラとか簡単なライブラリを実装している程度の技術力の人です。 仕事とは全く関係なく、ウェブ関連に少し興味持ち始めてきたので、 最近ソケットプログラミング覚えて、ちょっとVirtualboxつかってUbuntu使い始めました。 コマンドラインの素晴らしさを少しづつ学びsshでリモートログインしてとかしていくうちに、 慣れ親しんだWindowsの居心地が悪くなってきました。 githubにもsshでpush(?)してみたり、凄くおもろい。 しかもLinuxは暇つぶしにもいい。 ネットワークスタックのソース見て、 ドライバの実装ってこうやるんだーって勉強になったりもするし。 話は変わって、 少し前、pythonのurllib使ってhtmlファイル落としてきてbeautifulsoupでパースする程度の実装たことがあります。 クローラー的なものを実装してデータマイニングしてみよっかなっていう軽いノリでした。 しっかしクソ面倒。 htmlしっかり書いてるサイトだったらいいんだけど、 お粗末なサイトを徘徊するのはエラーハンドリング周りがしっかりした実装でないと、 所望の処理は行えないわけで。。。 ここでくっそ頑張れば最強pythonクローラーができるかもなんだけど、 それは車輪の再発明で世の中になんの新しい価値も生み出さない。 そもそもpython使ってたのは会社で自動化ツール実装するのに必要で、 遊びながら仕事にも応用できればなーってノリなだけだったし。。 1つの言語で全部済ませたいという目標は、 効率が良いように見えて実は遠回り。 道具は適材適所で使わないとアホみたいに時間がかかることに気付く。 Ubuntuのコマンドラインでほげほげコマンド触ってたら wgetとかcurlとかあるじゃないって気付きました(今更)。 wgetでドメイン指定して再帰的にぶっこ抜くっていうのも簡単にコマンド一つでできると知って、 やっぱり無知は罪だなー時間を浪費するなーって気付きました。 $ wget -r http://*****.co.jp ってやれば同一ドメイン上のすべてのファイルを取得可能ですよね。 とりあえず全部ぶっこ抜くのは楽勝。 ぶっこ抜いたデータベースに...

GitHubを始めてみる

手持ちのMac Book Airで何かしらツールを実装して公開してみたくなった. 最初の初期設定についてのメモ. まずは公式サイトを参考に ssh keyの設定 $ git remote add origin git@github.com:user/project.git $ touch makefile $ git add makefile $ git commit makefile -m "Add a makefile" $ git push origin master

【まとめ】イシューからはじめよ

「イシューからはじめよ」のまとめ。 * 脱「犬の道」、「イシューからはじめる」 本書では、「やってみないとわからない」というスタンスで膨大な時間を浪費する「犬の道」ではなく、 重要な問題、本体解くべき課題にフォーカスして取り組む「イシューからはじめる」ワークフローへのパラダイムシフトを推奨している * 「イシューからはじめる」アプローチとは (本書P34) 1. イシュードリブン: 本当に答えを出すべき問題「イシュー」を見極める     イシューを明確にして目的意識のブレを防ぐ     主語・動詞を入れて言語化し、スタンスを取る         ・イシューが見つからない時は?(本書P88)             変数を削る・視覚化する・最終形からたどる・So what?を繰り返す・極端な事例を考える 2. 仮設ドリブン     - イシューを解けるところまで因数分解しサブイシューを割り出す         適切なフレームワークでMECEに分解する     - ストーリーラインを組み立てる         ・典型的なストーリー             必要な問題意識・前提となる知識の共有             カギとなるイシュー・サブイシューの明確化             それぞれのサブイシューについての検討結果             それらを総合した意味合いの整理         ・ストーリーライン      ...

GAEでデプロイできなくなった件について

GoogleAppEngine for Javaな話。 ローカル環境でJSP/Servletの動作確認はできたんだが、 デプロイしようとするとバグが出た。。 出てたログはこんな感じ。 JDKのパスを変更したり実装項目の再検討したりしてたけど解決せず。。。 Unable to update: java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE. at com.google.appengine.tools.admin.Application.compileJavaFiles(Application.java:814) at com.google.appengine.tools.admin.Application.compileJsps(Application.java:801) at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:615) at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:418) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:55) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:433) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:155) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclips...

勉強の達成感が得られるボールペン『サラサスタディ』の売り文句が秀逸な件

イメージ
以下引用。 ゼブラ株式会社(本社:東京都新宿区/代表取締役社長:石川 真一)は、インク残量がわかる目盛り付きで、勉強の達成感が得られるボールペン『サラサスタディ』を2013年10月12日(土)より全国の文具取扱店にて発売します。 『サラサスタディ』が学習に適した筆記具だというポイントは3つあります。 ① 目盛り付きの中芯でインク量の減りを確認できるので、勉強量の見える化を実現。勉強量=どれだけ頑張ったか、が分かり、達成感を味わえて日々、継続できます。 ② 消せないボールペンで書くことで、集中力がアップし、ミスを防ぎます。 ③ 筆記の反復練習効果で、解答欄を素早く埋める力を日々、積み重ねることができます。 『サラサスタディ』で採用しているジェルインクは、さらさらとした書き心地で筆が進みやすく、また油性インクに較べると排出量が多いために減りが早いので、使用している実感が得やすくなっています。 また、インク色は基本色の黒に加え、学生の間で集中しやすい色として人気の青や、間違いを正解に変える意識付けのできる赤を揃え、学習意欲の向上をはかります。 大手学習塾であるW早稲田ゼミ、Z会、ベスト学院進学塾、寺子屋グループ、鷗州塾、北九州予備校、練成会グループといった学習のプロにお墨付きをいただいた商品です。

Androidアプリ開発再入門

1. 環境セットアップ Android SDKとeclipseをインストールして設定 パスを通すなど 2. アプリのライフサイクル onCreate, onStart等のアプリの挙動を把握 Log.vをつかってDDMSパースペクティブのLogCatビューに表示すると良い。 そのままだといろんなログが出てしまって見づらいので、 LogCatビューにあるプラスボタンを押下してフィルターを作成するとよい。 3. イベントプログラミング まずは慣れるため、buttonクリック時にログ出してみる。 http://d.hatena.ne.jp/jitsu102/20110831/1314796481 どうやら4パターンの実装方法があるらしい。 自分としては2が一番好ましかった。 activity_main.xmlに追加したボタンに、onClickプロパティを追加するだけ。 関数名は自由で、追加した関数をjavaソース側で実装すればOK。 ちなみに1はクラス内に変数定義してるので、いっぱいオブジェクト出てきた時管理が面倒だなーっていう発想で却下。 4. ページ遷移 複数のアクティビティ遷移を実装する。 Intentクラスを利用して、      Intent it = new Intent( いまのアクティビティ, 遷移先.class );     this.startActivity(it); って感じに実装すればOK。 ここまでくれば紙芝居レベルなら実装できる。 5. センサー機能の利用 SensorEventListenerのインタフェースを利用して加速度機能を利用。 加速度センサーを使ってこんな感じで実装。     public void getAcc(View v){     manager = (SensorManager)this.getSystemService(SENSOR_SERVICE);     List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_ACCELEROMETER);   ...