Microsoft Officeで数式を書くのに慣れてTeX形式で入力するのが苦痛になって来たので、変換プログラムを作りました。Windows専用です。
- mml2tex.fsx [Raw形式で表示] → 保存(UTF-8)
【注】自分の必要とする範囲しか実装していません。変換部は200行程度で不足があればその都度手直しすることを想定しているため、ソースのみの配布とします。
続きを読む【お知らせ】プログラミング記事の投稿はQiitaに移行しました。
Microsoft Officeで数式を書くのに慣れてTeX形式で入力するのが苦痛になって来たので、変換プログラムを作りました。Windows専用です。
【注】自分の必要とする範囲しか実装していません。変換部は200行程度で不足があればその都度手直しすることを想定しているため、ソースのみの配布とします。
続きを読むここ半年くらい自分の関係する範囲で、CPU使用率が張り付いてWindows Updateが無効になるという問題が頻発して悩んでいました。結論から言えばExpiroというウィルスの亜種が原因でした。
なお、似たような症状はサービスやドライバの不具合でも発生します。
使用しているウィルス対策ソフトウェアでは検出されなかったため原因を誤認し、ウィルスが原因だと気付くのに半年程度掛かってしまいました。同じ現象で悩んでいる方への情報提供として記事に残しておきます。
【注意】筆者はセキュリティの専門家ではありません。回答できるだけの知見もなく、ご相談には応じかねます。
続きを読む2015年末にSpringerが本を大量に無料提供して話題になりましたが、特にアナウンスもないまま数日で提供は終了しました。
2016年1月5日現在、無料提供の本がまた少し増えているようです。その中からいくつか面白そうなものを選んでみました。いつまで提供が続くか不明なため、興味のある方はお早目に。
【注意】無料提供の本は定期的に変わります。以下で紹介している本は既に無料ではなくなっています。
続きを読む【お知らせ】2015年8月23日をもって会場は閉鎖となりました。
池袋バイナリ勉強会では色々なテーマを試して来ましたが、最後に残った勉強会をまとめました。
不定期 | |
---|---|
池袋バイナリ勉強会 | 看板勉強会です。コンパイラやOSで遊びます。 |
池袋物理学勉強会 | 古典力学からきっちり学んで、相対論、量子論の理解を目指します。 |
毎月(休日) | |
初級ラテン語リーディング | 言語学的意義が非常に大きい言語です。勉強して損はありません。 |
初心者のための線形代数勉強会 | 行列やベクトルの性質を扱う数学の分野を勉強します。 |
隔週(水曜日) | |
「理論から学ぶ データベース実践入門」読書会 | リレーショナルモデルによるデータベースの理論を本で勉強します。 |
Windows上のXamarin StudioでF#プロジェクトをビルドしようとすると、最近のバージョンでは失敗します。
Xamarin Studio | F# Language Binding | 結果 |
---|---|---|
4.0.12 | 3.2.15 | OK |
4.0.13 | 3.2.15 | ビルドに失敗しました。. MSBuild operation failed |
4.0.13 | 3.2.19 | ビルドに失敗しました。. MSBuild operation failed |
本体とアドインの組み合わせから推測すると、どうやら本体側の仕様変更が影響しているようです。
【追記】この件に関して、既にgithubのプロジェクトにIssueが上がっていました。
続きを読む主要部分を抜粋します。
_start: # write(STDOUT_FILENO, message, MESSAGE_SIZE) li %r0, 4 # r0: write(2) syscall number. li %r3, 1 # r3: first argument. addis %r4, %r0, message@h # r4: second argument. ori %r4, %r4, message@l li %r5, MESSAGE_SIZE # r5: third argument. sc # exit(EXIT_SUCCESS) li %r0, 1 # r0: exit(2) syscall number. li %r3, 0 # r3: first argument. sc
MIPSに移植しました。
_start: # write(STDOUT_FILENO, message, MESSAGE_SIZE) li $v0, 4 # v0: write(2) syscall number. li $a0, 1 # a0: first argument. lui $a1, %hi(message) # a1: second argument. ori $a1, $a1, %lo(message) li $a2, MESSAGE_SIZE # a2: third argument. syscall # exit(EXIT_SUCCESS) li $v0, 1 # v0: exit(2) syscall number. li $a0, 0 # a0: first argument. syscall
多少文法は異なりますが、処理内容はほとんど同じです。
動作確認はgxemul上のNetBSD/evbmips環境で行いました。
# uname -a NetBSD 6.1.2 NetBSD 6.1.2 (MALTA) evbmips # gcc -nostdlib mips.s ld: warning: cannot find entry symbol __start; defaulting to 00000000004000f0 # file a.out a.out: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, for NetBSD 5.99.56, not stripped # ./a.out Hello, world
gxemulへのインストール方法などは以下を参照してください。
MIPSのアセンブリには慣れていないので、書き方から調べました。即値やアドレスの代入方法はC言語で簡単なサンプルを書いて確認しました。
test.c
main() { int a = 0x12345678; const char *b = "abc"; }
アセンブリを出力します。gxemul上で処理するとファイル転送が面倒なため、Windows上でクロスコンパイラを動かしています。(gcc-4.5.4-msys-cross-mipsel-netbsd-6.1.tar.xz)
$ mipsel-netbsd-gcc -S test.c
出力されたtest.sを見ると、即値の代入部分はすぐ分かります。
li $2,305397760 # 0x12340000 ori $2,$2,0x5678 sw $2,8($fp)
直後に文字列の代入部分があります。
lw $2,%got($LC0)($28) nop addiu $2,$2,%lo($LC0) sw $2,12($fp)
GOT経由でポインタを取得しています。これはちょっと複雑なので、GOTを使わないように指示します。
$ mipsel-netbsd-gcc -S test.c -mno-abicalls
単純になりました。
lui $2,%hi($LC0) addiu $2,$2,%lo($LC0) sw $2,4($fp)
これを参考にサンプルを移植しました。
バイナリ勉強会で最初に提示するサンプルとやっていることは同じです。
https://bitbucket.org/7shi/ikebin/wiki/pdp11/hello
/ write(1, hello, 6); mov $1, r0 sys write hello 6 / exit(0); mov $0, r0 sys exit .data hello: <hello\n>
NetBSDのサンプルの存在は後で教えてもらいました。最小限のハローワールドを書こうとするとwriteとexitだけになってしまうのは、自然な成り行きでしょうか。
この記事はF# Advent Calendar 2013の2日目の参加記事です。
昨日はトップバッターの@igetaさんでした。短いコードにデータベースのアクセステクニックが詰まってとても参考になります。
私の記事は、勉強会でF#を教えるための環境構築で試行錯誤した話です。
【追記:2018.08.23】現時点での私の推奨環境は以下の記事を参照してください。
続きを読む