マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

2009-07-01から1ヶ月間の記事一覧

RatingPanelを使ってみる

評価を星の数などで表すときに使うRatingPanelというのを使ってみた。wicket-extensionsが必要 星(別の画像でもOK)をクリックするとonRatedが呼び出されるけど、これを無視してボタンで星を増やすようにして参加者数や多数決などを星の数で表すことができる…

SSレジスタの値が変わっていなかった

実行形式ファイルに移動するためにRETFでレジスタの値を書き換えていたが、SSレジスタが書き換わってないことに気づく。特権レベルを下げてないので当然だった。それで、特権レベルを下げて見たところ、qemuでエラーが発生して落ちた。セグメントディスクリ…

原因がわかった気がする

どうやら、データセグメントのベースのぶんだけ、VRAMへのアクセスする位置がずれていたようだ。ベースを偶数にすると、どんどん文字列がずれていくのがわかる。奇数にすると背景色が変わる。しかし、どう対処すればいいのかわからないな。

一般保護例外

実行形式ファイルのエントリポイントへのfar callをやめてretfによるレジスタの値の切り替えを行ったら、qemuのアボートがなくなり、変わりに一般保護例外が発生するようになった。それで下のブログエントリの char* data = new char[segsize]; を char* dat…

DS、ESに値を代入すると落ちる

DS、ESに値を代入すると落ちる。GDTの設定は以下の通り。setGDTの引数はインデックス、ベース、リミット、アクセス権の順になっている。 g_GDTManager->setGDT(7, (uint32_t)data, segsize - 1, 0x4092); dataは char* data = new char[segsize]; としていて…

何か新しい言語(?)作成中 その2

前回のやつに命令追加。まだループは実装していない。追加した命令は以下の通り o スタックからオブジェクトを1つ削除する v スタックの中身を表示する x Integer.MAX_VALUEを定義する(文字列がすでにある場合は除去される)ただでさえHello Worldも読ませる…

何か新しい言語(?)作成中

アルファベット一文字に何か命令を持たせれば小文字だけでも26通りの命令が作れる!と考え新しい言語(?)を作るにいたった。とりあえずHello Worldのソースコード。java上で動作する auiiiiiiiaiiiiaiiiiiiiiiiiaiiiiiiiiiiiaiiiiiiiiiiiiiiauddddddddddddddd…

Stackとリフレクションを使って変なことをしてみる

Stackにクラス名とメソッド名やフィールド名を突っ込んでそれを実行するプログラムを作った。メソッドを呼び出す場合は引数、引数の数、メソッド名、クラス名、staticでなければオブジェクト。フィールドの場合はフィールド名、クラス名、staticでなければオ…

別にJavaである必要ないんじゃね?

前回の日本語でJavaを書くとかなんとかの続き。確かJava日本語化プロジェクトは英語がわからなくてもJavaを書ける(プログラミングの敷居が下がる)のが利点だったと思うが、Javaに慣れてる人に取ってみれば、いちいち日本語を英語に訳すという作業が入ってし…

日本語でJavaを書くとかなんとか

前にどこかでJavaを全部日本語で書くとかいうのがあったのを思い出して、探してみたが見つからない。でも、何かその続きの研究みたいなのを見つけた。前はpublicが「公の」と訳されていたが、新しいやつでは「公開」になっていた。privateはいいとしてprotec…

ELFを実行できた…しかし…

ELFを実行できた。文字列もしっかり表示できるようになった。しかし、callで呼び出したものである。本当ならfar call使わなければいけないはず。しかし、far callを使ったら実行はできるが文字列が表示されなくなった。まぁ、セグメントディスクリプタのベー…

Senを使う準備

Javaの形態素解析ライブラリであるSenを使う準備をした。まずはSenのダウンロードページに行き、最新版をダウンロード。そして、unzipしてできたディレクトリに入りantした。そしてsen.jarとcommons-logging.jarを取り出し(junitも入ってるけど使わないのか…

ELFを実行はできたが…

ELFを実行できたが、文字列を読み込めていない。文字列テーブルに入ってることはわかったけど、どうすればいいのかわからない。スタックに積めば…などと思っていたがS准教授に聞いたところ違うと言われて、説明を受ける。…が、どうすればいいのかわからない…

ミスってた

アクセス権がおかしかったことに今気づく。アクセス権を直したら、うまくいった。なんてこった

一般保護例外

qemuでエラー発生。それは一般保護例外だった。原因はfar callにあるっぽい。下のソースのg_GDTManager->setGDTの引数は、インデックス、ベース、リミット、アクセス権の順となっている。g_GDTManager->loadGDTR()はLGDTを呼び出しているだけ。IO::farCallの…

シンボルテーブルの解析成功

シンボルテーブルの解析に成功したようだ。シンボルテーブルの名前インデックスは2つめの文字列テーブルのインデックスっぽい。1つめの文字列テーブルはプログラム中で使われる文字列が格納されてるようだ。実行時にこれをGDTのオフセットとして登録してお…

勘違い

インデックスの意味を勘違いしていた。文字列の配列のインデックスかと思ったら、何文字目かを表すインデックスっぽいな。なんてこった

シンボルテーブルの解析

現在、シンボルテーブルの解析中。それで問題が発生。それはnameの値が文字列テーブルよりでかいこと。エントリが進むにつれて値が大きくなってるので、前のエントリとの差分かと思ったが、objdumpやreadelfとの結果が違う。Googleで検索してみても、文字列…

Marathon Match 54 Result

1年ぶりに参加したMathon Matchの結果がでた。104位でRatingが1381->1357と下がった。ベストスコア、ゼロスコア共に0。次こそはRatingを上げたい。

セクションヘッダテーブル

ELFのセクションはtypeとoffsetはそのまま取得できるからいいとして、名前を取り出すのがめんどくさそう。セクションヘッダテーブルの文字列テーブルから文字列のリストを作ってから、indexでアクセスか。文字列の長さと個数がわからないので、なんかやっか…

セクションの情報発見

セクションの情報を発見した .text 機械語に翻訳されたコード .rodata プログラムで使用する文字列定数 .comment コメント .shstrtab セクション名の文字列のテーブル。セクションヘッダで使用 .symtab シンボルテーブル .strtab 関数名などプログラムで使用…

readelf

最近全然自作OSが全然進んでないな。まぁ、そんなときを乗り越えないとこの先やってけないな。とりあえず、現在readelfコマンドでELF形式のファイルの解析中。ヘッダの種類が3種類あるというのがめんどくさい。1つでいいじゃんと思うけど、まぁ、頑張って…

フォローしているけど、フォローされてない人を探してみる その2

前回のやつの改良型。フォローの数が100を越えても大丈夫になった。取得したユーザー数が100未満でループ脱出だと、ブロックしてるユーザーがいる場合(それも消えてない場合)にループを抜けてしまうっぽいので、取得したユーザー数が0になったときにループを…

フォローしているけど、フォローされてない人を探してみる

twitterでフォローしているけど、フォローされていない人を探すスクリプトを作った。ただしフォローしている、もしくはされているのどちらかが100を越えている場合は使えない。改良しなければ!またfriendsとfollowersを入れ替えれば逆もできる。 require 'n…

Apache Wicket 1.4-rc6 is released!

一体どこまでRCの数字が伸びるのか?またいつ正式版がでるのか? http://wicket.apache.org/

デスクトップにTwitterのTLを表示させてみる

C#

TwitterのTLをデスクトップに表示させてみた。結構邪魔なので使えなさそう。折り返しを入れれば使えるのだろうか? TwitterのTL取得部分 String userName = "hoge"; String password = "hogehoge"; //HttpWebRequestの作成 HttpWebRequest webreq = (HttpWeb…

デスクトップに文字列を描画する

C#

デスクトップの右上に文字列を描画するプログラムを作った。 using System; using System.Drawing; using System.Runtime.InteropServices; namespace Desktop{ class Desktop [DllImport("user32.dll")] private static extern IntPtr GetDC(IntPtr hwnd); …

メソッドの追加? その2

前回のメソッドの追加?では追加したメソッドから追加された側のフィールドやメソッドにアクセスできなかった。しかし、これもリフレクションを使えばできるのでは?と思い、やってみた。追加するメソッドにはObject型の引数parentが渡される。これは追加さ…

メソッドの追加?

「java リフレクション メソッドの追加」で検索して、このブログにたどり着いた人がいるみたいだけど、既存のクラスのオブジェクトに動的にメソッドを追加したいのだろうか?それなら無理だと思うが、自分で作ったクラスなら可能かな?とりあえずやってみよ…