読者です 読者をやめる 読者になる 読者になる

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

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

minosys script を作ろう (9)

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

minosys script を作ろう (8)

スマートポインタの定義 boost の smart pointer を使ってもよいのですが、 折角なので、ここでは独自に smart pointer を作成してみます。 template <class T> class PtrRef { private: int count; T *value; public: Ptr<T>(T *value) : count(0), value(value) {} Ptr<T></t></t></class>…

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件) を見るこの本によると、言語…

3D描画回路を FIFO 化してみた

前回、Zybo で動作する3D描画回路を作成してみましたが、 minosys.hateblo.jp FIFO を外付する形での実装もしてみました。 FIFOは 18Kb Block RAM 1個を使うため、64エントリまで 挿入可能です。スケマティックはこちら。 リセット回路がちょっとヘンテコな…

今更ながら、3D描画回路を作ってみた

Zybo ボード上で3D描画回路を作ってみました。 技術的なことは以下に書いておきました。 qiita.com三角形さえ描画できれば、後はそれを Z 値の小さい順にソートして 順に描画していけば視点から見たポリゴンを描画できます。 (Zサーフェス法)まだいくつか…

ライン描画回路を作ってみる

今日は簡単なネタで。Vivado HLS で昔懐かしい Bresenham line アルゴリズムを実装してみました。simpleLine.c として、 #include "ap_cint.h" #define SCREEN_WIDTH (640) #define abs(x) (((x) >= 0) ? (x) : (-x)) #define sgn(x, y) (((x) > 0) ? (y) : …

AXI4 インターコネクトの仕様?

HDL

前回、書き込み回路を追加すると表示回路に遅延が発生する現象が発生しましたが、 minosys.hateblo.jp どうも AXI4 マスターのインターコネクトに表示回路と描画回路を両方つないで いたのが原因のようです。 何も繋いでいなくてもインターコネクトが2つス…

FPGA 回路を合成すると遅延発生!

HDL

また不思議な現象に出くわしました。先日完成した VGA ディスプレイ回路 minosys.hateblo.jp に Vivado HLS で矩形描画回路を追加したところ、画面が激しく乱れる現象が発生。配線遅延のワーニングが出まくっているので、それのどれかが悪さを しているのだ…

何とか VGA ディスプレイを作成

HDL

前回、AXI4 の仕様に悪戦苦闘していましたが、 AXI4バスの仕様に悪戦苦闘中 - 徒然なる日々を送るソフトウェアデベロッパーの記録(2) 何とか表示できるようになりました。お手本FPGAプログラミング大全 Xilinx編作者: 小林優出版社/メーカー: 秀和システ…

AXI4バスの仕様に悪戦苦闘中

HDL

Zynq FPGA で VGA グラフィックディスプレイを設計しようと したら AXI4 バスのマスターモードでハマってしまいました。AXI4 とは AMBA 起源のシステム LSI 内バス仕様で、元々は ASIC 用ですが、現在は FPGA でも使用されているバスです。やりたいことは DD…

はてブロ記事の今後の方針について

はてブロ記事を長らく(?)書いてきましたが、技術情報については遅ればせながら Qiita に 移動することにしました。そこで、はてブロではもう少し下世話な(?)話を展開していこうかと思っています。 例えばシステムの開発記などの骨格ははてブロを使い、…

たかが2オクテット、されど2オクテット

久々に PHP に post でファイルを送りつける C++ コードを書いたら、PHP 側に エラーコード 3: PARTIAL UPLOAD という正体不明のエラーが出た。PHP の問題だろうと思って放っておいたが、クライアント側の問題だった (初歩的なミスですいません)。multipar…

画像特徴量から縮尺・回転角を推定する

カメラの被写体が元画像に対してどんな角度・縮尺で写っているのか 知りたいことがあります。 が、OpenCV には剛体の回転・拡大/縮小を行う関数がありませんので 新たに作成してみました。 手順 1. ORB, SIFT といった画像特徴量を抽出すると、ノルムが最小…

今更、JCuda で AutoEncoder を実装してみた

JCuda の使い勝手を研究するため、AutoEncoder のさわりの部分を実装してみました。 まだバグはいそうですが... CUDA Driver インタフェースを使うため、初期化と kernel 呼び出しが多少面倒ですが、 メソッドに押し込めてしまうことにします。まず、AutoEnc…

CIP法

また書籍紹介です。CIP法とJavaによるCGシミュレーション作者: 矢部孝,尾形陽一,滝沢研二出版社/メーカー: 森北出版発売日: 2007/02/17メディア: 単行本(ソフトカバー)購入: 1人 クリック: 7回この商品を含むブログ (1件) を見る2011 年頃アマゾンの「欲し…

惑星の生成をシミュレーションする

CUDA のサンプルプログラムに nbody というのが付属していますが、 ちょっと改造して、微惑星から惑星に成長させるプログラムを書いてみました。まず、太陽系が太陽と微惑星から成り立っており、太陽が微惑星に比べて非常に 重い(微惑星を全て足しあわせて…

久々の更新: 読後の感想

3ヶ月ぶりの更新になります。 リタイヤ後の手慰みとして、いくつか本を読んだので紹介していきたいと思います。 今日はこれ。Java人工知能プログラミング -オブジェクト指向と関数スタイルによるAIの実装-作者: 深井裕二出版社/メーカー: 三恵社発売日: 201…

今更 Support Vector Machine を実装してみる(2)

だいぶ間が空いてしまいましたが、機械学習入門の続き。フリーソフトではじめる機械学習入門作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2014/03/29メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る前回の minosys.hateblo.jp では…

Motion JPEG 配信サーバ

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

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

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

人生何度目かのリタイア(今度こそ本当?!)

今日、プロジェクトが終了し(正確には日曜日まで作業が残っているけどね)、 リタイア人生に入る運びとなりました。今年の1月にも同じことを言っていたが、今回はかなり本気。会社という組織に 自分が馴染めないということと、体力的に週5常駐は無理という…

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…

今更 Support Vector Machine を実装してみる(1)

例の本、フリーソフトではじめる機械学習入門作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2014/03/29メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見るを底本に機械学習を勉強しているこの頃ですが、Support Vector Machine の章は …

隠れ層のないニューラルネットを実装してみた

今更感満載ですが、勉強がてら2層のニューラルネットを Java で実装してみた。 教科書は例によってこの本です。フリーソフトではじめる機械学習入門作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2014/03/29メディア: 単行本(ソフトカバー)この商品を含…

Professional Embedded ARM Development を読んで

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

Naive Bayes を Java で実装してみた

今回も元ネタはこの本を使います。やっぱり Weka で実行すると するりと実行できてしまって頭に残らないので、Java で実装する ことを考えます。フリーソフトではじめる機械学習入門作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2014/03/29メディア: 単…

今更 RealSense のコードを書いてみた

しばらく RealSense の SDK が更新されなかったし、デバイスの話題も なかったので収束かな?と思っていたが、R5 が出ていました。と同時に SR300 カメラの発表も。まだインテルさんやる気なようでよかったです。で、本題ですが、まだ R4 で書いたコードを備…

Ripper アルゴリズムを実装してみた

機械学習の本を読み始めて2週間。まだ3章が終わったところ。フリーソフトではじめる機械学習入門作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2014/03/29メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る知識を獲得するアルゴリズム…

自作検索エンジンに and/or/not 機能を追加

昔作った Wikipedia タイトル専用検索エンジンに and/or/not 機能を追加してみた。 minosys.hateblo.jp使い方は単語と単語の間に1文字以上スペースを空けて and, or, not と書く。 or, not は単独、または and 検索対象の後に書く必要がある。 (or, not の…

UDP パケットと MTU

ローカルで UDP を使っているプログラムがインターネットを 通すと動かない。どうやら ISP が UDP の IP フラグメント化を許容していない らしいことに気が付いた。 Path MTU より大きいパケットを投げると途中でぶった切られて 最初の部分しか到達しないこ…

仕事は一段落、これからの課題について

最後はぐだぐだだったが、一応 12/25 で仕事が一段落したので、今後読みたい本や開発したいコードを整理してみる。 まぁー、出てくること出てくること(笑)。 読みたい書籍(というか、購入したものの時間がなくて読んでいない本達) 機械学習本・データサ…

RADIUS proxy その後

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

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

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

富山県ハッカソンに参加

この手のイベントに参加したことがなく、今回初参加です。 1日目は午前中あいさつ、午後はアイデアソンで具体的に何を作るか決めたところで15:00 プログラム作成を開始したのは15:30を回っていました。システムアーキテクチャとスキーマが決まったところで…

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日で構想…

OpenCV の imread は画像の方向を考慮しない

OpenCV の imread は画像フォーマットを自分で判断することなく、自動で読んでくれるのでらくちんなのだが、 例えば JPEG の Exif タグを見てくれないため、orientation が normal でない場合は回転したりひっくり返ったり した画像のまま処理しようとしてし…

意外に難しかったおもしろモンタージュ

2枚の写真のうち、1枚を切り抜いて2枚目に貼り付ける技法をここでは「おもしろモンタージュ」と定義する。 OpenCV を使う場合、この処理が難しく、重くなりがちになる。 切り抜いた前景のサイズの確定 切り抜きを行うと当然目的としているオブジェクトは…