タイトル/名前 | 更新者 | 更新日 |
---|---|---|
技術/UNIX/find | msakamoto-sf | 2013-01-06 12:53:22 |
技術/UNIX/xargs | msakamoto-sf | 2013-01-06 12:53:11 |
日記/2013/01/05/Eclipse 4.2(juno SR1)のアプデートでよくわからないエラーログが出てた | msakamoto-sf | 2013-01-05 12:36:34 |
Java/ActorsFramework | msakamoto-sf | 2013-01-05 00:48:21 |
技術/Linux/Upstart | msakamoto-sf | 2012-12-31 22:26:32 |
技術/AdventCalendarメモ | msakamoto-sf | 2012-12-31 11:17:26 |
Groovy/AdventCalendar2012ブックマーク | msakamoto-sf | 2012-12-31 11:13:08 |
日記/2012/12/31/SQLをうまく扱うプログラム設計メモ | msakamoto-sf | 2012-12-31 01:33:53 |
Groovy/JavaのSingletonをテストする | msakamoto-sf | 2012-11-18 11:23:20 |
JavaScript/JSON | msakamoto-sf | 2012-11-18 09:15:23 |
よく使うオプションとかをメモ。なお、今のところオプションの説明とかはGNUのfindオンリーです。
あわせて使う:
よく使うその1:ファイルだけリストアップしてなんかさせる。
find /hogehoge/ -type f ...
よく使うその2:ディレクトリだけリストアップしてなんかさせる。
find /hogehoge/ -type d ...
※デフォルトだとシンボリックリンクは辿らない。辿らせたい時は"-L"とか"-H"オプション指定。
超よく使うその1:空白文字とか混ざってるファイル名だけリストアップしてなんかさせる。
find /hogehoge/ -type f -print0 | xargs -0 ...
よく使うオプションとかをメモ。
あわせて使う:
xargsを知って数年来、findコマンドとの組み合わせでしか使ったことがないので、定番のリンク:
その他:Webで検索する。
ので、bugzillaに登録しておきました。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=397495
org.eclipse.osgiのconfiguration中に、同じくEclipseプロジェクト中の"libra"というプロジェクトのアップデートサイトのURLが埋め込まれているのだけれど、そのURLが404 Not Foundになってしまってて、Eclipseで更新の確認とかするとエラーログにProvisioning exceptionがちょろっと出てきてて気持ち悪い。
更新自体は全体としては問題なく動作してるのだけど・・・org.eclipse.osgiとなるとEclipseのコアなコンポーネントになるので、そうしたコンポーネントが参照してるURLで404が原因で例外が出ているというのは気味が悪い。
"libra"というプロジェクトはWTPとPDEツールを統合してOSGiのエンタープライズアプリケーションを両方のツールを活用して開発出来るようにする?らしい。
http://wiki.eclipse.org/Libra
最新はバージョンは0.2.
安直に考えれば、404となっている
http://download.eclipse.org/libra/milestones/S-0.2.0M1-201108160923/
が0.2に相当する。
ところが、"libra milestones"でぐぐると出てくるミラーリングサイトなどを漁ってみると、
http://mirrors.ibiblio.org/eclipse/libra/milestones/S-0.3.0M4-201212132137/
とかは普通に存在する。
可能性として考えられるのは、
1. libra側の「正しい」現行バージョンは0.3であり、org.eclipse.osgi側が参照先のURLを更新し忘れてた。
2. libra側で「間違って」0.2用のディレクトリを削除してしまった。
くらいでしょうか。
どちらにしても、カテゴライズもどうするかよくわからなかったのでPlatformのIDEの問題として挙げてしまいました。
eclipse.org本家からDLしたeclipse-jee-juno-SR1-win32-x86_64で発生してるので、他でも大量発生してそうなものだけれど、不思議とGoogleでは引っかからない・・・。
JavaでErlangのようなActorモデルのconcurrency programmingを実現するためのフレームワークなどのメモ。
StackOverflowより:
フレームワーク:
UbuntuまたはFedoraで導入されてるUpstartの勉強メモ、というか参考リンクのメモ。Ubuntuでの利用が多いので、Fedora系のドキュメントは見切れてないです。
基本:(Ubuntu 12.04)
man upstart man upstart-events man initctl # initctl list # initctl emit など
SysV init の仕組みをサポート or 互換性維持のためのコマンド:(Ubuntu 12.04)
man service # service --status-all # service apache2 start など man telinit man update-rc.d man invoke-rc.d
以下、UbuntuからのUpstart資料・ドキュメント:
以下、日本語でわかり易かったUpstart紹介記事
以下、2008-2009年の記事で、"/etc/event.d"以下を使って解説してるので、2012現在のUbuntu 12系列(/etc/init)でそのままは参考に出来ないかも。
AdventCalendarから気になる記事を抜書き。
"G* Advent Calendar 2012" から個人的に気になった記事をまとめます。他にも良記事が並んでいますので、ぜひATNDのサイトで一覧を確認してみてください。
最近Grailsを少しかじったのだけれど、その中で「Service」というArtefact(コンポーネント、みたいな意味合いのようだけれどGrailsの世界観ではこんなふうに表記するみたい)というのがよくわからなかった。
どうもDomainモデルとかそのへんと絡んでそう。
実は、自分の場合データ操作をどう設計するのかってめちゃくちゃ自己流、というか経験的な直感でクラス設計しまくっていたので、その辺、一般的・・・というかOOPの「意識高い」系だとどんなもんなんだろうと、ヒッジョーにイマサラナガラなんだけどPoEAA本ひっくり返してみて、SQLとの連携に使われるパターンを確認。
・・・なんというか、自分の今までの直感と経験による言語化出来ない地雷回避感覚に基づくクラス設計が、そうそう外した設計にしてはいなかったようで、ホッと一安心。
あともう一つ気づいたのは、「これが一番正解」というようなパターンはなくって、RoRとかRails系だとActiveRecordがよく使われているけど、じゃぁそれがPoEAAで最も推奨されているのかというとそれほどでもなくて、割りと「規模によってはRow Data Gatewayでもいいんじゃね?」とか、Domain Model + Data Mapperの組み合わせとか、割りと、アプリケーションの規模に応じて組み合わせを変えて、結局のところバランス感覚で「ベストは無いのでベターを選ぶ」的なオチどころ探索の流れ。
逆に言うとActive Recordだけじゃ物足りないシーンも当然出てくるので、そうした場合は他のパターンでも全然OKな感じに書かれてる。
多分自分がActiveRecord嫌いなのは、これまでのお仕事の経験上、ActiveRecordのメリットが活かせない設計シーンが多かったからなのかなーと。
Servce Layer挟んでDomain ModelとかActive Record使う、という設計は全く違和感がなくて、いえむしろフレームワーク側でActive Record自動生成してくれるんなら両手上げてそっちに雪崩れ込みたいくらいです。
トランザクションをまとめて、しかもそれが単体テストの自動化にシームレスに組み込まれば、どんなパターン使おうと何もいうことはござーません。
で、GrailsのServiceに話を戻すと、結局のところやっぱりService Layerと同じ位置づけになってて、トランザクションを扱えます。ただしHibernateのトランザクションがそのまま透過されるのかというとちょっとその辺が勉強不足でよくわかりません。2.1.0の公式ドキュメントにも、rollback周りでいろいろ注意点が書かれてるんですが、流したくらいで熟読はしてないです。
とはいえSpringDICのおかげで、割りとPOJOとしてテスト出来る感じにしてくれてるので、個人的にはある程度複雑なデータ処理が絡むところはServiceにまとめてテスト可能な状態にしておきたいところです。(まぁView側でちょっとカテゴリとかのプルダウンメニュー表示するのに使いたい、位のロジックであればDomainそのまま使うかDomain側に実装しておいても問題無いと思います)
以下、参考:
ちなみに2.1.0の公式ドキュメントではtransactionのデフォルトの"propagation level"(・・・なにこれ?)というのがPROPAGATION_REQUIREDになっているとのこと。
よくわかりませんが、Spring 3.0系では、Transaction使う時のデフォルト値になってるみたいなので、恐らく大体のケースでは問題ない設定なのでしょう。多分。
このへんの「トランザクション」が、DB側の「トランザクション」と同意なのかはよくわかりません。
Groovy/Maven/Java + TestNG Example ではGroovyを使うことでJavaのprivateフィールドを簡単に参照・更新出来ることを紹介しました。
そこで、より実用的なシーンとしてxUnit等による単体テストの作成でしばしばぶつかる、JavaのSingletonデザインパターンのmock/stub化をGroovyで攻略してみます。
サンプルコードは以下のGistにUPしています。
以下のようなディレクトリ構成になります。
gjt3/ pom.xml src/ main/java/gjt3/Singleton.java test/groovy/gjt3/SingletonTest.groovy
Singleton.javaはSingletonの手抜き実装です。privateなコンストラクタにgetInstance()経由で文字列を渡して、インスタンスを区別出来るようにしてます。
Groovy + TestNGで組み立てたテストコードの内容を紹介します。
// 最初の2つは、通常のSingletonの動作確認です。 Singleton s1 = Singleton.getInstance("s1"); Assert.assertEquals(s1.getArg(), "s1"); // getInstance()したのは、上で初期化した"s1"を返すはずです。 Singleton s2 = Singleton.getInstance("s2"); Assert.assertEquals(s2.getArg(), "s1"); // Groovyでprivateなコンストラクタを呼び出しインスタンス化します。 Singleton s3 = new Singleton("s3"); Assert.assertEquals(s3.getArg(), "s3"); // これを、privateなSingletonインスタンス保管用のフィールドにセットします。 Singleton.instance = s3; // getInstance()してみると、上で上書きした"s3"のインスタンスが返されます。 Singleton s4 = Singleton.getInstance("s4"); Assert.assertEquals(s4.getArg(), "s3");
当然ですがテストはpassします。
ただし注意点として、SingletonはClassのフィールドにセットされますので、テストコード中でこれを弄った後は、必ず元のインスタンスに戻しておく必要があります。テストコード中でmock用のインスタンスに差し替え、そのままにしてしまうと、後に続くテストコードが失敗する可能性があります。
JSON (JavaScript Object Notation) についてメモとか参考リンクとか。
歴史:
参考リンク: