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

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

C++

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

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

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

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

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

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

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

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

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

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

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

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

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

OpenCV プログラムの作成で過ごした3日間

7月の3連休は OpenCV 絡みのプログラムを構築した。 本題のところよりも枝葉末節の構築に時間がかかった感じ。 (JavaScript と PHP は得意でないので。) とは言え、インターネット上でほとんどの疑問は解決するのだから、 よい時代になったものです。今回…

OpenCV 内で pure virtutal function call

さくら VPS 上で OpenCV をコンパイルして使用していたら、なぜかこれが発生。 主なコンパイル環境は CUDA は off OpenGL は off GTK は off ffmpeg は on(ローカルでコンパイルしたものをコピー) libjpeg, libjasper, libpng 等は apt-get で展開 で、通…

そうだったのか検索エンジン

今頃になって、Kindle ライブラリに検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏gihyo.jp という本があるのに気付き、ゴロム符号化の直前まで読んだ。この本のすごいところは、書いてある通りに読み進めると、本当に検索エンジンが 書けると…