そいえばCommons
http://d.hatena.ne.jp/t_yano/20080506/1210077794
を読んで、あまり関係ないところに反応してみる。
Apache Commons使わなくなったなあ。昔は社内向けにそんなん何度も書かないでつかえ!とか思ってJavaDoc翻訳とかしてまで布教してたのだけれど。
最近では、Velocityのバージョンを1.5に上げたらCommons-langへの依存が増えてて、ああ、langいれるのやだなあとか思ったりしてしまう。入れてると使うやつでるじゃんとか。
で、何で使わなくなったのかなあとか考えてみると、まあ昔から思ってはいたのだけれと、JavaのAPI以上にあれ、センスないですよね?かっこわるくて気持ち悪いところが結構ある。
あともう古い。1.5対応されててもうちっとセンスのいいCommonsチックな何かがあればとか思いながら日がなも自分ライブラリを車輪の再発明をする日々をおくったりするわけです。だめじゃん。
Jythonプログラミング
買いました。
http://www.amazon.co.jp/Jython%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E8%A5%BF%E5%B0%BE-%E6%B3%B0%E5%92%8C/dp/4839922829
恥ずかしながらPhython未なので、順番に写経してこう。たのしみ。
現実逃避ともいう。
SQLServer 2005 のテーブルのコメントをJDBC経由で取得するSQL
DatabaseMetaData経由だとテーブルコメント(説明ってやつ)がとれんのよね。ということで。
テーブル
SELECT t.name AS TABLE_NAME, CAST(e.value AS varchar) AS COMMENT FROM sys.tables t INNER JOIN sys.extended_properties e ON t.object_id = e.major_id AND e.minor_id = 0
カラムはこう
SELECT t.name AS TABLE_NAME, c.name AS COLUMN_NAME, p.name AS TYPE_NAME, c.max_length AS MAX_LENGTH, c.is_nullable AS NULLABLE, c.precision AS PRECISION, c.scale AS SCALE, CAST(e.value AS varchar) AS COMMENT FROM sys.tables t INNER JOIN sys.columns c ON t.object_id = c.object_id INNER JOIN sys.types p ON c.system_type_id = p.system_type_id AND c.user_type_id = p.user_type_id INNER JOIN sys.extended_properties e ON c.object_id = e.major_id AND c.column_id = e.minor_id WHERE t.name = 'テーブル名'
ちくしょう、variantてなんだよ、爆発しろ!ってとこではまった。
追記:キャストが必要なのは sys.extended_properties だけやね。
MSの世界はわからんぜい。MSDNとか見たくねえ><
Wicket自分用メモ
出力結果からwicket:idを消す
getMarkupSettings().setStripWicketTags(true);
ログアウト
add(new Link("logout"){ public void onClick(){ getSession().invalidate(); setResponsePage(getApplication().getHomePage()); } });
HTMLのアトリビュート値書き換え
item.add(new SimpleAttributeModifier("class", "menu-on"));
スタイルシートの参照パスをコンテキストパス足して書き換え
WebApplication application = (WebApplication)getApplication(); final String contextPath = application.getServletContext().getContextPath(); WebComponent cssLink = new WebComponent("cssLink"){ @Override protected void onComponentTag(ComponentTag tag) { super.onComponentTag(tag); String cssHref = tag.getAttributes().getString("href"); tag.getAttributes().put("href", contextPath + "/" + cssHref); } }; add(cssLink);
もっと良い方法ありそう
add(new StyleSheetReference("cssLink", MyPage.class, "myPage.css"));
CSSの定義ならこうやね。
あとHTMLコメント内は処理されない。
MySQLサヨナラ><
technobahn.com - このウェブサイトは販売用です! - 株価検索 株価チャート 株価 銘柄 終値 リソースおよび情報
動向は生暖かく見守るとしても、私的にもう選択肢としてMySQLは無いな・・・
追記:突き抜けちゃった内容だと思ってたけどミスリーディングな記事だったみたい。まあ見守る。
で、なんでGenericsかというと
今でもちょっとしたDBアクセスとかにApache Commons DbUtilを使うのだけれど、これが嫌。
String sql = "SELECT * FROM person WHERE age=? AND sex=?"; QueryRunner r = new QueryRunner(dataSource); //ここきもい Object[] p = new Object[]{new Integer(18),"female"}; //キャストめんどい Person = (Person)r.query(sql,p,new BeanHandler(Person.class));
こういうのほしい。自作するしか?
<T> T query(ResultSetHandler<T>,String sql, Object ... params) throws SQLException;
いまさらGenerics
こうですか?!わかりません><
@SuppressWarnings("serial") static class UpperKeyHashMap extends HashMap<String,Object> { public boolean containsKey(Object key) { return super.containsKey(key.toString().toUpperCase()); } public Object get(Object key) { return super.get(key.toString().toUpperCase()); } public Object put(String key, Object value) { return super.put(key.toString().toUpperCase(), value); } public void putAll(Map<? extends String,? extends Object> map) { for(String key : map.keySet()){ this.put(key, map.get(key)); } } public Object remove(Object key) { return super.remove(key.toString().toUpperCase()); } }
べんりだけど、putAllのとこがキモイ。JavaDoc見ないとわからんわい。