徒然なる日々を送るソフトウェアデベロッパーの記録(2)

技術上思ったことや感じたことを気ままに記録していくブログです。さくらから移設しました。

raspberry pi

minosys script を作ろう (11)

関数の実装 関数にはパッケージ関数とメンバー関数がありますが、 パッケージ関数の実装から考えてみます。パッケージにはバイナリパッケージと minosys script パッケージが 定義されているのでした。 minosys.hateblo.jp両者を統一的に扱うために PackageB…

minosys script を作ろう (10)

アーカイブの構成 ここで言うアーカイブとは、複数のファイルを1つのファイルにまとめて 管理することを指します。 UNIX 標準の tar や Windows の zip などがありますが、minosys script では独自のアーカイブファイル構造が定義されています。 オフセット…

minosys script を作ろう (9)

Minosys script における実行エンジン 参考にした本によれば、実行エンジンの実装には2種類あるそうです。まつもとゆきひろ 言語のしくみ作者: まつもとゆきひろ出版社/メーカー: 日経BP社発売日: 2016/12/22メディア: 単行本この商品を含むブログ (5件) を…

minosys script を作ろう (7)

左辺値と右辺値の違い 前回、左辺値は変数を指し、右辺値は値を指すと言いました。 左辺値は変数を代入するための情報なので、最終的には変数のアドレス にブレイクダウンされます。つまり、実行エンジンの観点で見ると(仮に変数のクラスを Var として)右…

minosys script を作ろう (6)

Content クラスの全貌 前回、Content クラスを導入すると言いつつ、その内容については 断片的にしか記述しませんでしたので、ここで全体を俯瞰しておきます。 class Content { public: LexBase::LexTag tag; std::string op; std::string label; int inum; …

minosys script を作ろう (5)

lex の追加 大事なことを忘れていました。C 言語などでは改行コードを \n のように 表現できますが、minosys script でも同じことができるようにします。 ただし、\n, \r, \\ の3つのみをサポートすることにしました。 構文解析 構文解析では lex によって…

minosys script を作ろう (4)

ここからは実装に入るので、言語実装にお決まりのパターンに入ります。 現在の実装はhttps://github.com/minosys-jp/minosys-script.gitに置いてあります。(作成途中なので、まだコンパイルできません!) Token の切り出し まず、token をどういう単位にす…

minosys script を作ろう (3)

おあずけになっていたサーバの仕様です。 拡張子 .minosys という拡張子のファイルを見つけたら minosys script ファイルだと思うことにします。 パッケージを import している場合もサーチパス上に指定されたファイルが存在していれば minosys script だと…

minosys script を作ろう (2)

新作 script に取り入れたい言語定義は以下の通りです。 分かりやすい制御構造 別に C がいいという訳ではないのですが、悲しいかな C 以上に 単純な制御構造+式構造が思いつかないので、C から 借りてくることにします。ただし、do while とか後回しにしま…

minosys script を作ろう(1)

はじめに 最近、まつもとゆきひろさんの「言語のしくみ」という本を買いました。まつもとゆきひろ 言語のしくみ作者: まつもとゆきひろ出版社/メーカー: 日経BP社発売日: 2016/12/22メディア: 単行本この商品を含むブログ (5件) を見るこの本によると、言語…

Motion JPEG 配信サーバ

Motion JPEG を配信可能な Raspberry Pi 用サーバとして mjpeg-streamer があります が、ソースをファイルまたは標準入力とし、出力を http 固定とするともう少し簡単に コーディングできます。以下は mjpeg-streamer を解析して自作してみた結果。 オプショ…

ラズパイコンテスト一時締め切り迫る

気がつけば7月末。 日経BPが主催しているラズパイコンテストの、最初の締め切りが迫っているではないか。 明後日は出勤だし、今日原稿を書くしかない。 病院の待ち時間で書いているか。

Pi3でインターネットラジオ選局機能を作る(2)

昨日はプレイヤーを作成したので、ここに情報を流すための web サーバを作成します。 今回も折角なので perl と HTTP::Daemon を使うことにします。 そのため、libwww-perl パッケージをインストールしておく必要があります。 仕様 ポート 8066 で listen す…

Pi3でインターネットラジオ選局機能を作る

出しつくされた感があるインターネットラジオ選局ソフトですが、 せっかく Pi3 に無線 LAN と Bluetooth が標準装備された ので、簡単なものを作ってみます。今日は選局機能を持つサーバプログラムを作ります。 (後日スマホからアクセス可能な web サーバを…

Raspberry Pi3 でスキップバックレコーダの製作

連休中に購入した Raspberry Pi3 (以下、Pi3 と表記)でスキップバックレコーダを 作ってみた。 スキップバックレコーダとは 地震や事故などのイベントが発生した時の状況をカメラで記録しておき、 イベント発生前後の様子を再生する装置。原理は動画を FIF…

Raspberry Pi3 で bluetooth スピーカーを使う(はまった)

連休中に衝動買いした Raspberry Pi3 と Creative の bluetooth スピーカーを接続しようとしたら、思い切り嵌ってしまったので 備忘録がてらメモ。とりあえず、search→pairing までは成功したものの、connect しようと すると [bluetooth]# connect xx:yy:zz…

Professional Embedded ARM Development を読んで

Professional Embedded ARM Development作者: James A. Langbridge出版社/メーカー: Wrox発売日: 2013/12/03メディア: Kindle版この商品を含むブログを見るProfessional シリーズの ARM 本です。 "Professional" と銘打ってはいますが、コアの歴史やアセンブ…

RADIUS proxy その後

minosys.hateblo.jp で触れた機能がようやく出来上がった。 (結局 TLS 化はまだだが、CA 局をどうする?とか面倒なのでやらないかも。) クライアントから新しい要望を出される。 AcceptLanguage を自動判定してほしい 日本語の場合はメール認証を入れてほ…

インターネットを介すと radius の戻りパケットが配送されない

標記の問題点を解決するため、本末転倒だが TCP トンネルを張ってTCP で UDP をカプセル化 して送受信することにした。多数のクライアントがつなぐと MSG-ID 等を独自管理する必要が あるが、とりあえずつなぎに来るクライアントは1台と想定して実装。MAも…

neon をいじってみる

Raspberry Pi2 の CPU は SIMD 命令(neon)をサポート しているので、例題を書いてみた。お題は "Professional Embedded ARM development"(Wrox) にあったもので、RGB空間のベタ詰めの画像ファイルを gray 画像に変換する、というものである。変換式はこ…

ラズパイコンテスト出品作品について(2)

●S/Wについて 開発は python2.7 で行いました。 pythonが一番ライブラリが揃っているように思えるのが採用理由です。 システムは5つのプログラムからできています。 1.GPIO-4 監視部 焦電センサーの入力を1秒おきに監視し、信号がアサートされたら "detec…

ラズパイコンテスト2015出品作品について(1)

●はじめに はじめに、アイデア出しは K 先生が行ったものであり、私は部品集めとプログラム作成 を行っただけであることをお断りしておきます。天気情報や交通情報をマッシュアップしてスマホに表示するソフトはたくさんあるが、 1.朝起きた時にすぐ情報を…

ラズパイコンテスト予定出品作品決定

友人のインスピレーションの元、ライズパイコンテストに出品する予定の作品について、 方向性が決まった。お題は『朝、時間のないあなたにお届けするお役立情報』ということで、 スマホでよくあるマッシュアップサイトをラズパイで実現するとどうなるか? と…

「みんなのラズパイコンテスト」から参加募集要項のメールが届く

去年、ネットワーク温湿度計を出品した縁で、今年も応募しませんか、というお誘いを受けた。 せっかく Raspberry Pi 2 を購入したことだし、メモリが2倍に増えたことをうまく使えないか 検討中である。しかし、締め切りが8月31日ということは3日で構想…

Raspberry Pi2 が熱暴走??

今日は夏場はリビングが30度に達することをすっかり忘れ、Raspberry Pi2 を動作しっぱなしにしてしまった。 帰ってみると、ssh のログイン画面は出るものの、一向に先に進まない。おかしいな?? と思ってリブートすると、リブートできなくなっていた。とい…

OpenCV 3.0.0 for raspberry pi の続き

前回何とかコンパイルするところまで行ったわけですが、これをそのままインストールしても アプリケーションのコンパイルでつまづくことが判明しました。理由は2つあります。 arm-linux-gnueabihf-pkg-config の書き換えが必要 open.pc の prefix を工夫す…

OpenCV 3.0.0 の raspberry pi クロスコンパイルに挑戦

せっかく raspberry pi のクロスコンパイル環境を構築↓したので、OpenCV 3.0.0 のクロスコンパイルに挑戦してみた。8ヶ月ぶりの更新; Raspberry Pi2 で OpenCV をクロス環境で動かしてみる - 徒然なる日々を送るソフトウェアデベロッパーの記録(2)minosy…

Raspberry Pi2 で監視カメラ

単に監視カメラとして使うなら motion をインストールして使えば言い訳ですが、車輪の再発明をしてみる。基本的なアイデアは以下の通り。 背景が動かない時は何もしない。 背景に変化があったらその瞬間の画像を保存する。背景が動いているかどうかはグレー…

8ヶ月ぶりの更新; Raspberry Pi2 で OpenCV をクロス環境で動かしてみる

遅まきながら Raspberry Pi2 を購入して嬉しくなったので、Ubuntu 14.04LTS 上にクロス環境を構築して OpenCV のカメラキャプチャプログラムを動かしてみた。意外にどはまったので、忘れないようにメモしておきます。 クロスコンパイラはgit clone https://g…