例えば、javaで「public void testMethod(List
試したコードはこちら。
例えば、javaで「public void testMethod(List
試したコードはこちら。
だいぶ前のコードを漁っていたら、Look&feelの設定を変えてGUI全体のフォントサイズを指定する方法が見つかりました。
import java.awt.Component; import javax.swing.JComponent; import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.plaf.FontUIResource; public class UiCustomizer { public static void setFontSize(final int fontSize) { UIDefaults defaultTable = UIManager.getLookAndFeelDefaults(); for(Object o: defaultTable.keySet() ) { if(o.toString().toLowerCase().endsWith("font") ) { FontUIResource font = (FontUIResource)UIManager.get(o); font = new FontUIResource(font.getName(), font.getStyle(), fontSize); UIManager.put(o, font); } } } public static void setScrollBarWidth(final int width) { UIManager.put("ScrollBar.width", width); } public static void updateUiAll(JComponent component) { for(Component child : component.getComponents() ) { if(child instanceof JComponent) { JComponent updateComp = (JComponent)child; updateComp.updateUI(); updateUiAll(updateComp); } } } }
恥ずかしながら、この記事を見て初めてRLtrapの存在を知りました。
アダルトサイト詐欺6億円 エスカレートする手口RLtrapの説明はこちら。
INTERNET Watch - Unicodeの制御文字を使いファイル名偽装、ウイルス「RLTrap」検出報告5万件防ぎ方はこちらにあります。
float32の日記: これで安心してXPHomeが使えるのでACう~ん、これを見ると、ずいぶん前からあったもののようですね。
javaで次のSQLiteJDBCを使ったときの話。
このSQLiteJDBCを使っていて発生したSQLExceptionは次のようになります。
「例外の種類」というのはSQLiteJDBCのorg.sqlite.SQLiteErrorCode列挙体の文字列表現が入るようです。 SQLiteErrorCodeについてはSQLiteJDBCのjavadocに書いてあります。
ErrorCodeやSQLStateはないのでMessageの文字列を見てふるい分けをしなければなりません。
前のネタでSQLite + SQLiteJDBCでは重いselect文を実行してしまったときにStatement.cancelメソッドが効かず、途中で止められないことが判明しました。
しかし今回使っているSQLiteJDBCではユーザー定義関数を作ることができます。
これをうまく使えばselectの途中で例外を投げてクエリーを止めることができます。 というわけでこんなクラスを作ってみました。
jdkのドキュメントを見ると、Statement.cancelメソッドで実行中のSQL文を停止できるようです。 ただし、apiリファレンスには「DBMSおよびドライバの両方がSQL文の終了をサポートする場合に、このStatementオブジェクトを取り消します。」との記述があります。 サポートしていない場合はSQLFeatureNotSupportedExceptionが投げられる模様。
SQLite + SQLiteJDBCでcancelができるか試してみました。 SQLiteJDBCの入手先は、
試したコードはこんな感じです。 まずはデータベースを扱うクラス。 Statement.cancelメソッドは別スレッドから停止させるためのものなので、Runnableを実装しています。 メインスレッド以外にデータベース処理用のスレッドを作り、selectが動いたらメインスレッドから停止させます。
前回の投稿でSQLiteにjdbcで接続したときにユーザー定義関数を使う方法について書きました。 今回はユーザー定義関数の簡単な例を投稿します。 ネタはorder byで使うことを念頭に置いた、乱数を返す関数です。
SQLiteにはsqlite3_create_functionなどの関数があり、ユーザー定義関数が登録できるようになっています。 ユーザー定義関数というのは、
select count(id) from テーブル
のcountに当たるようなsql文で使う関数を自作したものです。 count等の元からある関数の置き換えもできるとか。
これは↓のjdbcドライバを使えばjavaでも可能です。
SQLiteJDBCはネイティブで書かれた各環境向けのSQLite本体をjarファイル内に持っていて、それに対してjniでアクセス、jdbcドライバとして動作するようにしたものです。 sqlite3_create_functionの部分もラッピングされています。
最近、昨年7月に買ったPCから変な音が出るようになりました。 音量は「PCから出る」って事でそれなりですが、車のアイドリングのような音です。 どっかのファンの軸がホコリでズレたとかかな?
起動後しばらくはアイドリング音。 気がついたころにはおさまって、「え? なんかの弾みで直った?」と思ったら次の起動時もアイドリング音。
「ガワを開けて掃除するのは年に1度で言いかなぁ?」とかって思ってたんですが、今ちゃんと確認しといた方が良さそうですね。 ってことで電源コードを外してガワオープン。
...ホコリが。
久しぶりにVirtualBoxを立ち上げたらアップデートが出てました。 VirtualBox本体のアップデートをした後、バーチャルのUbuntuを立ち上げたらこちらはディストリビューションのアップデートがあるとか。 面倒くさいと思いつつ、この機会にアップデートしてみました。 するとHDDの空き容量が足りないとのメッセージが。 「最近Ubuntu使ってないんだよなぁ」とちょっと迷って、惰性で仮想HDDイメージサイズの拡張 → ディストリビューションのアップデートをやりました。
手順は間違っていたっぽいけど最終的にOKな状況になりました。 そしてやはり面倒くさかった...
sqliteに画像を登録して、com.sun.net.httpserver.HttpServerで送信、ブラウザで画像を見る簡単なサンプルプログラムを作りました。 sqliteにはjdbcで接続。 jdbcはこちらで配布しているものを使いました。
以前の投稿をふまえて、
作ったら大体こんな感じになりました。
「test0~2.png」の画像ファイルをclassと同じディレクトリに用意してコマンドプロンプトで実行。 sqliteに画像を登録した後、HttpServerが動きます。 コマンドプロンプトの表示は「なんたらかんたら ... Push enter to stop.」となって待機。 ブラウザで「http://localhost/」にアクセスすると「画像選択アンカー」のついたhtmlが表示されます。 アンカークリックで画像の切り替え。 画像はsqliteからselectして送信です。 uriの受け取り方が適当なので、適当なコンテキストにアクセスすると表示が崩れます。 雑なサンプルコードということでlocalhostから接続されたときしか反応しないようにしました。 コマンドプロンプトでenterキーを押したらサーバの停止です。
コードはこんな感じ。
wpfでローカルの画像ファイルを読み込むときの話。 BitmapFrameを使うと次のようになります。
try { // xamlでImageを記述 → imgLock imgLock.Source = BitmapFrame.Create(new Uri(path, UriKind.Absolute)); } catch (Exception exc) { // thisはMainWindow MessageBox.Show(this, "[" + exc.Message + "]\n" + exc.StackTrace, this.Title); }
このやり方だと画像ファイルはロックされてしまい、更新、移動、削除ができません。 ロックされないようにするには次のように書きます。
実行ファイルのディレクトリってC#(.net framework)なら
FileInfo fileInfo = new FileInfo(Environment.GetCommandLineArgs()[0]); string dir = fileInfo.Directory.FullName;
で簡単に取れますよね。
javaだと「OSの違い」とか「jarパッケージかclassか」とかでもう少し長いコードが必要なようです。
前の投稿で「アタッチがアトミックでどうこう」って書いたので、一応アタッチの小さなサンプルコードを書きました。 アトミックかどうかはノータッチで。
jdbcはこちらで配布しているものを使いました。
以下コード。