Content-Length: 316847 | pFad | https://b.hatena.ne.jp/site/taichitaichi.hatenadiary.org/
サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
taichitaichi.hatenadiary.org
Gradleを使っているせいでGroovyづいているのでログの出力設定もGroovyで書いてみたら、 どうもlogbackがバグってるぞなもし。って話。 具体的には何かっつうと、logback自体の動作ログを出すために、 OnConsoleStatusListenerってのを使うのだけど、それを普通に使っても特に何も出力されないのです。 何が足りないのかというと動作する為に呼出しが必要なContextが設定されず、 又、ライフサイクルメソッドであるstartが呼び出されないのです。 という訳で、logback-classic-1.0.1でlogback.groovyを使う際には以下の様なワークアラウンドが必要になります。 import static ch.qos.logback.classic.Level.* import ch.qos.logback.classic.encoder.Pa
タグをpushしてダウンロードAPI叩くだけなんですけども。 パスフレーズ付のSSH鍵を使っていると良い感じにハマるのでメモしておきます。 今回のスクリプトを実行する為の依存関係とかそういうの import org.eclipse.egit.github.core.* import org.eclipse.egit.github.core.client.* import org.eclipse.egit.github.core.service.* import org.eclipse.jgit.api.* import org.eclipse.jgit.lib.* import org.eclipse.jgit.transport.* import org.eclipse.jgit.errors.* apply plugin: 'java' apply plugin: 'war' buil
Gradleで文字エンコーディングを指定する方法 - 豆無日記 が余りにカッコワルイのでひねりだしてみた。 Gradle 1.0-milestone-7 で動かしてるます。 apply plugin: 'java' apply plugin: 'groovy' repositories { mavenCentral() mavenRepo(url: 'http://download.eclipse.org/jgit/maven') flatDir { dirs 'lib' } } sourceCompatibility = 1.6 targetCompatibility = 1.6 def encoding = { it.encoding = "UTF-8" } tasks.withType(AbstractCompile) each { encoding it.options } tas
と言う会が品川某所で、2011/10/05にヒッソリと開催されました。 お客様は主催者たる僕のみで、それ以外の参加者は基本的に講師という大変贅沢な会です。 それなりに話はあっちこっちしていたし、 話題に上がった重要そうな部分で、僕が覚えている事を補足しながらメモ書き。 妥当でない部分があったので、変更。 スケールするUI(by @monjudoh) イベントを遅延ディスパッチする。ドラッグ&ドロップは実装が難しいかも。 イベントリスナは、より広い範囲で受ける。 例えば、一覧データなら、カラム内で受けるより、行で受ける方が良いし、それよりもテーブルで受ける方が良い。 これにはいくつか理由がある。 - 動的にデータが変更される中でイベントリスナの配置漏れによって適切に動作しない様なケースを避ける。 - イベントリスナのオブジェクトのインスタンス数を減らす。 - イベントリスナは登録処理が重いの
10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。 Java Core API JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? どれから読めば良いか分からんかったら、 java.lang java.util java.io java.text 辺りをまずはキチンと理解すること。当然コードを読み終わったら、それを使ってコードを書く事。 OpenJDK http://hg.openjdk.java.net/jdk7/jdk7 OpenJDKを読むことで、プログラム言語してのJavaではな
何故かcorkscrewを使うやり方が検索エンジンとの親和性が高い様なのでメモ書き。 git config --global http.proxy proxy.example.host:8080これで、HTTP PROXY越しにclone出来るようになる。 git clone https://github.com/ceki/logback.git logback参照: git-config(1) Manual Page
s3cmd Ubuntu 10.04.2 でs3cmdを使うます。10.10じゃない理由は、AWSのUbuntuが10.04だからです。 sudo apt-get -y install s3cmd s3cmdな理由は、id:shot6がs3fsを使っていたからです。 Access KeyとSecret Keyをゲトしておきます。そうしておいて、 s3cmd --configure 新しいバケットを作ります。 s3cmd mb s3://mybacket バケットにファイルを送ります。 touch test.txt s3cmd put test.txt s3://mybacket バケットのファイルを上書きします。 s3cmd put test.txt s3://mybacket/test.txt バケットのファイル一覧を取ります。 s3cmd ls s3://mybacket バケットとロ
正しいやり方がマジで分らない。誰か教えて下さい。 まず、前提条件として、既に読んでいるけれどもイマイチ意味が分らないと言うか、分った気がしない情報源等。 Credentials Management ローカルストレージに保存するデータの暗号化 ― Windows の場合 Windows XP および Windows Server 2003 での資格情報管理の使用方法 Authentication Functions 説明がアッサリし過ぎててどうしたら良いか全然分らない…orz Credential Management with the .NET Framework 2.0 Windows Data Protection ProtectedData クラス Windowsで動作するクライアントアプリケーションを実装しているます。 ある程度出来たら多分きっと間違いなくOSSとして公開するんだ
IPv6 Address Validation と言うサイトがあります。IPv6アドレスとして妥当かチェックしてくれる上に、RFC5952に則った表記を教えてくれます。 ここでは正規表現によってIPv6アドレスとして正しいか評価しています。 それは、以下のような正規表現です。 IPv6アドレスをマッチする。 圧縮済みIPv6アドレスでもマッチする IPv4アドレスが含まれていてもマッチする リンクローカルアドレスを識別する為のインターフェース名が含まれていてもマッチする ((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9
より正しい正規表現を別なエントリとして記述しました。 IPv6アドレスをより妥当な正規表現でマッチする。 以下の内容は、僕が自力で頑張った為、正規表現として不適切な部分があります。 IPv6アドレスのフォーマットが良く分からないので、正規表現で書き下す事で理解しようと試みます。 そこそこ良い感じに出来た様な気がしないでも無いのだけど、正しくない部分も相応にあります。 結論としては、大体こういう正規表現になりました。 どの正規表現もポート番号部分が無くてもひっかかります。 IPv4アドレスとポート番号がセットになっているものをマッチする。 (25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}(:\d{1,4})? IPv6アドレスとポート番号がセットになっているものをマッチする。 (([0-9a-f]{1,4}
うっかりCのライブラリが世の中リリースされてたりされてなかったりする訳ですけども、 プロトタイプ的な何かを作ろうと思った時に、ヘタレはCで頑張ったり出来なかったりするのですね、主に僕とか。 いや、Cが全然書けないって言うつもりは無いけど、漢の子ならゴリゴリ書けるだろJKとか言われても困る訳で。 と言う訳で、Pythonとか使っちゃうのです。実は僕、Pythonの事良く知らないんだけどもさ。 本日のお題は、CythonをWindowsXPの32bit版かつVisual Studio 2008 Express上で使ってみますよ、と言う話。 Cythonをインストールした上で、Visual Studio経由でコンパイルする手順 Python2.7がインストール済みで、PATHに通っているものとします。 とりあえず僕がダウンロードしたのは、 Cython-0.13.zip と言うアーカイブ。アーカ
DIコンテナやらOSGiやら使う程でもないけど、最低限の拡張性はとりあえず担保しておきたいので使う感じなのだけど、コアAPIに含まれているjava.util.ServiceLoaderは本当に使い辛い。 というか、そのままでは使えないのでユーティリティ的でいつも似てるけどちょっと違うコードをそこら中に書き散らす訳で。 まずは、javadocをちゃんと読んでクダサシ。 java.util.ServiceLoader<S> 作成するリソースは、最低4つ。ファイルの配置はこんな感じ。 実装を切り替える為のインターフェース package conf; /** * @author taichi */ public interface Service { String getName(); void execute(String parameter); } 定義したインターフェースのデフォルト実装 p
そこそこ頑張ってビルドしたので、成果をまとめておきますですだよ。 まずは、 clojure- maven-pluginを使ってMavenでClojure+Javaビルド を見てクダサシ。正直にビルドするだけなら、ここに記述されている内容を読めば特に問題ないです。 Clojureのソースコードたる.cljファイルを配布物に含めるには。 clojure-maven-pluginにおけるClojureのソースコードを配置するデフォルトの推奨ディレクトリは、 maven-resources-pluginの管理対象外なので、こんな感じに追記しる。 <build> <resources> <resource> <directory>src/main/clojure</directory> </resource> </resources> 〜以下省略〜 </build> これで、.classが詰まってる
噂のCloudera Desktop を、インストールしてみた。 Cloudera Desktop インストールマニュアル通りにやれば、まぁ、大体出来る感じ。 Cloudera Desktop install manual /etc/apt/sources.lst.d/cloudera.listを新規作成 deb http://archive.cloudera.com/debian hardy-testing contrib deb-src http://archive.cloudera.com/debian hardy-testing contrib hardy-testingって所は、自分の環境に合ってる奴を大体選ぶ感じで。 この辺見たり、 lsb_release -c ってすれば、何を書けば良いか何となく分る筈。 http://archive.cloudera.com/debian/
今日は、動かしてみただけ。 Project Voldemort って、分散で、Javaで、キーバリューで 格納できて何か凄いらしい。 Voldemort is a distributed key-value storage system * Data is automatically replicated over multiple servers. * Data is automatically partitioned so each server contains only a subset of the total data * Server failure is handled transparently * Pluggable serialization is supported to allow rich keys and values including lists and
話題としては、まぁ、何かどこにでも転がってる感じなのだろうけど、 余りに簡単に出来たので、自分用にメモ書き。 function emit(template,map) { return template.replace(/\$\{[^\$\{\}]*\}/g,function(key) { var v = map[key.substring(2,key.length-1)]; return v ? v : ''; }); } 使い方はこんな感じ。 ${パラメータ名}がプレースフォルダになっていて、 そのパラメータ名で、二番目の引数のmapから値を取り出して置換する。 var tmplt = "<div>hoge ${hoge} ${fuga}</div>"; var newone = emit(tmplt,parseParams()); console.log(newone); f
もう少し簡単なコードで、検証でけた。 public class SuperClass { public void method() { } public void method2() { } } public class SubClass extends SuperClass { public void execute() { new Runnable() { @Override public void run() { // 謎メソッドは作成される。 SubClass.super.method(); } }; new Runnable() { @Override public void run() { // 謎メソッドは作成されない。 SubClass.this.method2(); } }; } } これをjavapすると。 Compiled from "SubClass.java" p
謎のメソッドがコンパイラによって生成されているのだけど、 何故そのメソッドが作られるのか、どの様な役割を持っているのか、 全く持って意味が分からないので、誰か教えてクダサシ。 解決しるました。 [Java]謎のaccess$100メソッドの話続き。 まず、こんなコードを書くます。 public class Deny { public void execute() { dddd(); } public void dddd() { for (Method m : getClass().getDeclaredMethods()) { System.out.println(m.toString()); } System.setProperty("bbb", getClass().getName()); String s = System.getProperty("bbb"); System.out
吉岡さんが釣り糸を垂れているので、釣られてみるよ。 デバッグ方法論 と言っても、多分、僕の気力が続くのは、こんなトピックがあるよ、って事までかな。 細かい話が気になるって人達は、スターとか、ブクマとかで催促すると、 書く気になるかもしれないし、どっかの宴会で、続き喋れって言われれば喋るかもしれない。 前提として、Javaで書かれたコードをデバッグすると考えてクダサシ。 ある程度実行環境やコードの種類に依存しないデバッグの方法論ってのもあるんだろうけど、 僕が気付かないウチに、Javaに強く依存したデバッグの方法論を抱え込んでるって事もあるだし。 まず、デバッグと言う作業が、どの様な構造を持っていると、僕が理解しているか、書いてみる。 バグの定義 静的デバッグ 動的デバッグ フォースを感じる この4つだに。 ちなみに、コードを修正する事は、デバッグでは無いものとするよ。 それぞれは、作業手順
実装方法をすぐ忘れるので、メモ書き。 Map<String, String> m = new HashMap<String, String>(); m.put("aaa", "bbb"); m.put("aaa1", "bbb"); m.put("aaa2", "bbb"); m.put("aaa3", "bbb"); for (Iterator<String> i = m.keySet().iterator(); i.hasNext();) { if (i.next().endsWith("2")) { i.remove(); } } System.out.println(m); こういうショボイコードを見ると本当に泣ける。 ダメダメな例 Map<String, String> m = new HashMap<String, String>(); m.put("aaa", "bbb");
public class StreamUtil { public static abstract class using<STREAM extends Closeable, T extends Exception> { public using(Class<T> clazz) { $(this, clazz); } public abstract STREAM open() throws T; public abstract void handle(STREAM stream) throws T; public abstract void happen(T exception); } @SuppressWarnings("unchecked") static <STREAM extends Closeable, T extends Exception> void $( using<STRE
日本企業の皆様におかれましては、エクセルが大好きかと、存じます。 いや、僕も大好きなのだけどもさ、表計算かわいいよ、表計算。 ウルトラハイパフォーマンスで、データストアとしても超一流。 コードの自動生成してもいいし、まかり間違ったりすると、方眼紙としても使えちゃったり…とか。 と、まぁ、色々使い道が多いので、ついJavaでもエクセルを読書きしたくなったりとかするヨネ。 で、そこでApache POIでつよ、となる訳だけど、POIのHSSFは普通に使うと、 ちょっと大きいエクセルファイルを読もうとしただけで、アフォ程メモリを食ってしまうのですな。 例えば、こんなコードで読み込むのが、まぁ普通ダヨネ。 @Override protected void readExcel(File excel) { BufferedInputStream bi = null; try { bi = new Bu
slf4jとlogbackに、魂を売り渡す勢いであります。 と言うのは冗談としても、何だか使い方が分からないけど、 Loggerのメソッドには、引数として存在しているorg.slf4j.Markerについて、考えてみたり。 現段階では、slf4jとlogbackを使ってる大きめのOSSプロダクトにおいて、 どんな使われ方をしてるかちゃんと見てないので、妥当な使い方なのかは、微妙。 まぁ、僕なら、こんな風に使ってみるよ、と言う感じのエントリ。 slf4j使おうって人達が、使い方を考える時のとっかかりになればいいかな…とか。 まず、org.slf4j.Loggerの、Markerを引数に取るメソッドの宣言と、org.slf4j.Markerの宣言を抜粋してみるよ。 public interface Logger { public void debug(Marker marker, String
昨日は、どうも古いlogbackを使っていたお陰で、 現状のマニュアルどうりにlogbackが動いてくれなかった訳で。 今度は最新版使うよ。 slf4j-api-1.5.6.jar logback-core-0.9.15.jar logback-classic-0.9.15.jar 随分バージョンアップしてるね。 昨日と全く同じ設定ファイルを書くんじゃ、アンマリなんで、 今度はもう少し手の込んだ設定ファイルにしてみるよ。 今日は設定用のXMLファイルを2本用意しる。 logback.xml <configuration> <include resource="appenders.xml"/> <logger name="aa.bb.cc" additivity="false" level="INFO"> <appender-ref ref="STDOUT4" /> </logger> <l
slf4j可愛いよ、SLF4J。と言う訳で、logbackを使う訳だ。 でも、何かようワカランけど、ちゃんとログが出ない事があったりなかったり。 と言うか、出ない事は少ないんだけど、出過ぎる事がある。 使ってるのは、 slf4j-api-1.4.2.jar logback-classic-0.9.9.jar logback-core-0.9.9.jar で、logback.xmlを記述しちる訳だす。 より新しいバージョンで設定を記述する際のポイントを logbackで設定を記述する時の注意事項等。続き。 に書いているます。 以下の内容には、相応に不適切な内容を含んでいるます。 で、こんなコードを書く訳。 public class Main { public static void main(String[] args) { Logger bb = LoggerFactory.getLogg
何となくまぁ、話題になったので、とりあえず書いておくます。 ルールなのだけど、常に例外的状況は存在しるます。 その例外的状況を適切に把握しているのであれば、どの様にコード書いても良いです。 自分の中で一定のルールを持ってコーディングすると、 そもそも自分がミスをし易いパターンを把握し易いのと、 自分のコードの最低品質がある程度担保されるので、良いかな…と思うマス。 要は、みんな俺様ルールを作って、 それをある程度意識しながらコーディングすれば良いと思うよ、って話。 考え方の基本。 自分の能力が最も発揮されない状況を想定する事。 疲れている、やる気ない、気になる事が他にある、等々… 頭を使う時間は計測するのが難しいが、タイピングしている時間は、ある程度簡単に計測可能である事。 「考えている時間」は、貴重なリソースだけど、見積もりが難しいのだよねぇ…。すごく。 この位の時間考えれば答えが出る筈
id:Yoshioriが何か変な事してたんで、考えてみた。 ぱっと思いついた問題点。 cleanメソッドがヒドイ。 あらゆるMapオペレーションの度に、値を全走査するとか、無いんじゃね? TimeAndValueがヒドイ。 Dateじゃなくて、long持てば良くね? 非同期処理中に使うとハマるんじゃね? 何にこの実装を使うのか知らんけど、キャッシュとかじゃねぇの? TimeoutMap import java.io.Serializable; import java.util.AbstractMap; import java.util.Collection; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurren
何と言うか、gdgdだった様な気がしないでも無いけど、 まぁ、作ったモノは、それなりに晒す。と言う事で。 ドキュメント置き場。 間違っている所や、著しく妥当性を欠く部分を見つけたら、 コメントでもメールでも下さい。 本日の会場をお貸し頂いた、 グリー株式会社 に、この場を借りて深く感謝しるます。 後、一時間近くも僕のだべりを笑って聞いてくれた、java-jaのみんなありがとう。
eclipseで開発していると、SVNやCVSにプロジェクトが、ゴロゴロしちゃったりしませんか? プロジェクトがゴロゴロしてて、尚且つ、それを素直にチェックアウト出来ない時ってあったりするんだよね。 と言うか、そもそも、SVNリポジトリの接続先設定したりとか、面倒だな…とか。 そもそもまっ平らに沢山のプロジェクトが並んでたりすると、 どれチェックアウトすれば良いか分らん…とか、そういう話もアルヨネ。 と言うワケで、今日は、eclipseでSVNやCVSからチェックアウトした状態を、 共有する為の、Team Project Setと言う怪しげなファイルについて説明しるます。 まずは、Team Project SetをExportするトコロから。 SVNのリポジトリが全く設定されていない状態。からっぽ。 SVNのリポジトリへの接続設定をしるます。ここはいつも通り。 リポジトリの設定を共有する目
次のページ
このページを最初にブックマークしてみませんか?
『設計と実装の狭間で。』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
Fetched URL: https://b.hatena.ne.jp/site/taichitaichi.hatenadiary.org/
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy