DEVEL

英語→日本語翻訳スクリプト

[id:aaa555:20181126:p2]で英辞郎にアクセスする翻訳スクリプトを作ったが、翻訳精度が悪く、例えばsuffocating(息が詰まる)というような単語は翻訳出来ないため、Google Translateにアクセスするスクリプトを作成した。以下、スクリプトの内容 #!/usr/bin/p…

英辞郎 on the Webから訳語を取得するスクリプト

昔はローカルで英辞郎を使っていたが、最近はもっぱらインターネット接続中に翻訳したくなることが多いのでコマンドラインからWebにアクセスして訳語を出してくるスクリプト作った。Google TranslateだとAPIキーを用意しなければいけないため、英辞郎 on the…

PerlでDNS逆引き

研究室仲間から数百のIPアドレスのリストをDNSサーバからホスト名を逆引きしてまとめて変換出来ないか聞かれたので調べてみた。PerlではCPANで配布されているNet::DNSモジュールを使うのが一般的のようだ。使い方が以下のサイトに紹介されていた。 DNS問い合…

w3mからgmailアクセス

一日掛かりでようやくZaurusのw3mからgmailにアクセスすることに成功した。今までgmailにアクセス出来なかったのはw3mの内部仕様が原因ということが分かったため、情報元のパッチの内容に従いコードを手作業で修正し、加えてZaurus上にアプリ開発環境を構築…

英単語帳スクリプト

昨日から英単語帳を作り始めた。まずは以下のテキスト形式で個人用Wikiに置いておくことにした。 - intrinsic: 備わっている - susceptible: 敏感である - explicit: 明白な - multiplicative: 倍数的な - exploit: 活用する - shakeout: 暴落 - articulatio…

学生時代のプログラム発掘

学生時代に作った3Dライブラリなどをビルドする。2000年に作ったプログラムである。今は殆ど書かれない生Xlibで書いたものだが、普通にコンパイル&動作可能なことに驚く。コードを通して当時の自分を思い出して行こう。I built the libraries made in 2000.…

テストベンチ

テストベンチは重要。ルート権限で実行する必要があるのにユーザー権限しかない場合や、特定のデバイスにアクセスするコードを書いている時など特にそう。私の場合今のPC環境はネットカフェしかない訳だから某コードの開発を進めたいならテストベンチを書く…

ニコニコ動画のダウンロードスクリプト

Yusukebe::Techで公開されていたPerlのダウンロードスクリプトを試してみたがうまく動かなかった。原因を調べた所、どうも8月中旬にニコニコ動画のログイン方法が変更された為のようだ。動くように修正したコードを以下に置きます。 また、debianで下記スク…

qtチュートリアル

ぼちぼちQtを覚えていこうと思う。しかしQtチュートリアル(日本語)の最初のサンプルコードをビルドした所いきなり以下のエラーを食らった。 error: 'class QApplication' has no member named 'setMainWidget' 調べてみるとQApplication::setMainWidget()はQ…

受信パケットのみ受信処理を行いたい

Raw Socketの受信処理では何もしない場合、ネットワークデバイスに対しての送信/受信パケットの双方を受信してしまう。受信パケットにだけ応答したい場合、recvfrom()から返されるsll.sll_packettypeのPACKET_OUTGOINGフラグを使って振り分けると良い。 参考…

TAPデバイスへの設定

30分位悩んでしまったが、tapデバイス作成の時のファイルディスクリプタはソケットじゃないのでネットワークインタフェースの設定に使えないのだった。なので、インタフェース設定の為に別途ソケットを生成する必要がある。以下のような関数を呼び出すことで…

tapデバイス間の生データ転送

うまくいった。一昨日のtapブリッジプログラムを起動した状態でtap0から送信したデータをtap1でダンプすることが出来た。 送信側 $~/devel/tun# ./send fd= 3 ifindex = 5 send 128 bytes 受信側(sendより先に起動しておく) $~/devel/tun# ./recv fd= 3 ifin…

プログラムからNICの情報を取得・設定したい

以下の情報が参考になる。 第1回目の技術「プロミスカスモード」 つまり、NICの情報を取得する場合は取得したい情報のフラグを指定してioctlを呼び出す。該当フラグのリストは/usr/include/bits/ioctls.hで定義されている。NICドライバ作るときはこれらのフ…

TAPデバイス間のブリッジ転送

昨日TAPデバイスが認識出来たので2つのTAPデバイスをブリッジさせるコードを書いた。昔作ったツールの評価用にこれが欲しかったのだ。 書いてみると今度はさくっと動いた。コードは以下のような感じ #include <net/if.h> #include <linux/if_tun.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #inc</sys/stat.h></sys/types.h></sys/ioctl.h></linux/if_tun.h></net/if.h>…

TAPデバイス認識

ようやくサンプルコードでTAPデバイスを認識させることが出来た。昨日で公式サイトのサンプルが動かない事が分かったものの、linuxカーネルのDocumentation付属のコードもコンパイルが通らない。試行錯誤の結果、以下の事が分かった。 linux-2.6.17に付属のi…

TAPデバイス

敗退だ。。ドキュメントが古くてサンプルコードが動いてくれない。デバイスドライバのソースを読んでいかないとダメか。 追記メモ: ソース読むとioctlでTUNSETIFFが指定されないと初期化してくれない事が分かった。本家サイトの配布サンプルコードでは動かな…

ソースコードを読む手法

以下URLが非常に参考になる。ソースコードを"読む"という言葉から静的な解析作業を連想しがちだが、もちろん動的な解析という手法も存在する。そして動かせるのならむしろ動的な解析を優先させた方が良いそうだ。 HDLもコード見るよりまず波形見ろってことな…

正規表現の限界?

昨日の続き。簡単に終わるかと思ったが、駄目だ。括弧が入れ子構造になった場合に同じ階層の括弧同士をうまく正規表現で取れない。。 やっぱ構文解析を真面目にやらないといけないのかな。夜に構文解析ツールであるlex & yaccの本を探しに行ったがどこにも書…

コード解析スクリプト

HDLコードを再帰的に辿ってModule構造をツリー状に表示するスクリプトを作った。いくつかのコードはうまく動いたが、いくつかのコードでModule名を誤検出してしまう。正規表現をもう少し考えてみよう。I made the converter from HDL code to the module hie…

fifoモデル

昨日会社から帰ってきてから作ったfifoモデルのicarusでの動作検証完。次は同期式RAM、それからDummyのDDRコントローラを作ろう。IPコアのDDRコントローラの仕様を読んだけど、まぁなんとかいけそうだ。ここまで作れば色々ロジックで遊べるようになるな。楽…

gtkwave

波形の立上りを検索する方法が分かった。現在の配布元にドキュメントがあったので調べてみると、信号を選択した状態で、[Search]->[Pattern Search]に進み、トリガの選択メニューで[Rising Edge]を選んで[Fwd]を押すと検索出来た。これがやりたかったんだ。…

配列の動的宣言

icarusでまたもや悲しい制限を発見してしまった。配列のサイズをParameterによって動的に宣言することが出来ない事が分かった。今のところあらかじめ十分に大きなサイズにして回避するしか無さそうだ。 //reg [DAT_W-1:0] word_list [MAX_FIFO_NUM-1:0]; //N…

正規表現メモ

いくつか正規表現で思っていたのと実際の挙動が違う所があったのでメモ 複数行結合時の"\s"の挙動 正規表現でmフラグが付くと、"."の条件に改行コードがマッチされるが、"\s"はmフラグが無くとも改行コードにマッチする。 サンプルコード(bs_s_test.pl) #!/u…

Template Generator完成

よし出来た。これがあるとかなり状況が改善されるはずだ。 The coding was completed. I think that it helps us in debugging HDL code made by other persons.

Template Generator

昨日のコードに拡張機能を追加。しかし正規表現に引っかかって誤動作するパターンがあることが分かった。回避策を考えねば。 I made an external function on the yesterday's code. But I found that the current code got an error at some pattern. I nee…

HDL->Template生成

HDLソースを変換してemacsのAUTO Templateを自動生成するスクリプトを作成中。基本funcitonは出来たが、まだ汎用的ではない。今まで手作業でやってた作業が一瞬で終わるのを見ると非常に感動する。 I make a generator from HDL code to template for emacs …

某作業

家で某作業。moduleをparseしてBlockSIM用のコードを生成するPerlスクリプト出来た。 生成したコードをbuildしてicarus上でSimulationが実行出来る事を確認。少し前進した。I made an template generator to simulate my HDL code. My project at hobby proc…

icarus

generate if以外にも制限事項があった。parameterで実数計算が出来ないのだ。これは出来て欲しかった。ちなみにcverでは実数計算が出来た。 module hoge; parameter HOGE = 3 + 2.0; // NG on icarus //parameter HOGE= (3 - 2); // OK on icarus initial be…

icarus & generate

基本的に条件式無しでgenerate構文を使えばOKだが、generate if〜で条件判断を使って動的にロードしようとするとエラーになる。動かないのはcverも同じらしい。cverのFAQにはgenerateなんぞ使わなくてもUNIXツール使ってソースコードをフィルタするとか他に…