2013年6月4日火曜日

Javaでのプリミティブの参照渡し(疑似的)

  • Javaでプリミティブを参照渡しっぽく渡す書き方。
  • 基本的な事柄なのだが忘れがちだし、知らない人もいるし、なんか検索しても微妙だったので
  • 基本的にJavaではプリミティブを参照渡しすることができない
  • なのでオブジェクトにラップして云々というのがあるが、そのためにクラスを作るとかは面倒
  • こういう場合は配列にラッピングしてあげると呼び出し先で書き換えることができる 
  • こうすれば、そんなに違和感なく書くことができる
==========================================
void somefunction(){
    Integer[] out_number = new Integer[]{ 0 };
    Hoge(out_number);
    // out_number == 2 //
 }

void Hoge(Integer[] out_number){

   out_number[0] = 2;
}
==========================================

2013年2月11日月曜日

iOS開発おぼえがき

  • iOSでの開発を何ヶ月かやってみて感じたこと。
  • Cocoa Controlはひととおり目をとおしておいたほうがよい、トレンドもわかるしソースに目をとおすとなんとなく書き方もわかる。Cocoa Controlからgithubを眺めることも多かった。
  • 結果的にxibには頼らない書き方になった。StoryBoardもつきつめるといらない。というか量が多くなると却って面倒になってくる。
  • CocoaPodはまた今度機会があったら環境整えてやってみたい。構成管理ツールみたいなものか。
  • 整備されてないコンポーネントも多いので注意。コンポーネントのバグにあたると泥沼。
  • MacOSXと共通する部分も多そう、というかAppleの資源かな。CoreDataはWebObjects由来。
  • Quartz(Core Graphics,CoreAnimation)←UIKitという関係。UIKitは上位に存在するみたいな感じでいいんだろうか。雰囲気的にはWin32SDKにおける、GDI←UI(TextBoxとか)みたいな感じだが。色の扱いとか重複して存在していたり。
  • ライブラリ関連、AFNetworkingは便利、Nimbusは強いくせがあるけどサンプルの形のままいじるんなら問題ない。
  • こじんまりとしたものの中につかえるものがけっこうある印象、大規模ライブラリはiOS自体がいろいろかわってる経緯から使えるものも、まったく使えないものも。
  • Objective-Cはオートコンプリートがないと厳しいけど、慣れてくればまあ違和感なくかける。関数の宣言だけはどうしても素のCに比べると面倒
  • 継承のやりかたがどうも馴染まない
  • プロパティの宣言方法も馴染まない
  • つまり参照カウントの話なのだろうけど
  • ここらへんは時間をとってじっくりお勉強したほうがよろしいんだろうなあ
  • 静的でない部分がたくさんというか、処理系の上にのっていて、その主張がけっこう激しい言語という印象。

2013年2月7日木曜日

JettyでSSLを有効にする方法

あちこちら探して頑張ったけど、混乱したのでメモ

Jettyは最近だと、6、7、8あたりが広く使われていそう。
個人的にはいまだに6なので6でのやりかた。基本的には変化してないことを祈るばかり。
Javaのキーストアとか詳しくない人でもわかるように。


============================================================


◎SSL証明書の導入について

秘密鍵とCSR(CSR = 署名リクエスト)を証明機関に送って。サーバー証明書、中間証明書を受け取る。 証明書と秘密鍵の組がインストールされればSSL通信を行うことができる。
Apacheの場合はmod_sslをインストールして、OPENSSLで作った、秘密鍵とCSRを送れば上記が送られてくるので、インストールしてパスをとおしてあげればいい。


============================================================


◎結局のところJettyではなにをすればいいか?

同様に秘密鍵と、必要な証明書をJettyの参照できる妥当な場所にインストールすればよい。ただし、証明書に関して言うと、以下のようなチェーン構造になってることを認識しておいた方がいい。

ルート証明書 = 中間証明書 = サーバ証明書


============================================================


◎keytoolとkeystoreについて

ではどこにインストールすればよいか? これはJava特有の事情でkeystoreと呼ばれるファイルにインストールしてまとめておく必要がある。Javaにはkeytoolとよばれるツールが存在し。このファイルを作成したり、証明書をインストールしたり、チェックしたりする機能がある。

 keystoreファイルにはパスワードがかかっており、これはJavaの標準では'changeit'。Jettyの場合は特有で 'storepwd'となっている。またこのコマンドをつかって、CSRや秘密鍵を作ることもできるが、OPENSSLで作ったものでもその後の作業は可能なので、両方使ってるのならOPENSSLで作業して証明書と秘密鍵のインストールにkeytoolを使えばいい。


============================================================


◎keystoreへの証明書や秘密鍵のインストールについて

上記が理解できていれば、下記の内容で作業できるはず
https://jp.globalsign.com/support/server/05.html

Jetty6の場合はetc/binにkeystoreが入っているので、まずこれを消す

$(jdk)/binにパスがとおっていると、keytoolコマンドが実行できるはず。
コマンドは上のURLからの引き写しだが以下のとおり。

keytool -import -alias root -keystore ./server.keystore -file rootcacert.cer

ルート⇒中間⇒サーバ(自分)の各ファイルを登録する。


============================================================


◎Jettyの設定とSSLの起動について

Jetty6の場合jetty-ssl.xmlに設定が書いてある。$(jetty)/etc/keystoreを使う場合、キーストアの設定は変更しなくてよい。パスワードの欄には、md5やらOBFで暗号化するのがよいと書いてあるが、とりあえずそのままでも動くのでそのまま書けばよい。


============================================================


◎Jettyにおいて設定ファイルを読み込んでの起動について

jetty.sh startを呼ぶとjetty.xmlが読み込まれて実行されるのでjetty-ssl.xmlの中をコピーしてjetty.xmlに書き込んで、実行するのが結果的には楽。
ただし以下のようなコマンドで複数の設定ファイルを呼び出して起動することもできる。

jetty.sh start jetty jetty-ssl

============================================================

参考サイト :

https://jp.globalsign.com/support/server/05.html
http://d.hatena.ne.jp/yukinkster/20110828/1314563738

2012年12月9日日曜日

アジャイル開発手法について

たびたび面白くない思いをしてるので、アジャイル云々はほんとどうでもいい
真面目に手法の検討をやってる人を否定するわけじゃなく。
パスワードとしてのアジャイルの話。
ただしアジャイルという言葉がこの世から消失して欲しいというのは結構本気。

メインの思想となってる短期間でのイテレーションはなるほど特定の分野では有効かもしれない
ただ明らかに不向きな開発分野はあるし、置き換わるものではないのだが
片方を悪としてこちらを善とてする、そういった例を見るとほんとうに胸糞が悪い。

よりよい開発モデルを手に入れましょうは当然の話で、それは別に言われずとも心がけていきましょうというだけ。よりよい開発モデルとしてこういうのがありますよというのを提案するのはいい。
それはテスト駆動型開発だったり、スパイラル型の開発かもしれないし、まあひょっとしたら、PDCAを回そうぜ、無駄なドキュメントを書かないようにしようぜということかもしれない。

それは「ソフトウェア工学」として学問の分野として検討されるべきもので、アジャイルというわけのわからないバズワードでラッピングして紹介すべきものではない。
アジャイルについて話をきくたび前提条件の欠如した宗教とか迷信とかの類に見えて仕方がない。

アジャイルはいわゆる駄目な開発手順をあげて、すでにあるよい開発手法をとりあげて、こうしていきましょうというだけの話に見える。啓蒙的には意味があるかもしれないが、それが新旧の話にされて、ウォーターフォールは悪、アジャイルは正義とかなっている図を見ると、ほんとになんだろうとWeb 2.0とどっこいだ。

せめてアジャイルという言葉でくくらずに個別の事例や手法としてあげてもらいたい。聞いても意味がわからないし、もともと提唱した人に失礼だ

たとえばウォーターフォール型の開発はガントチャート(ヘンリー・ガント1910年)から自然発生したもので、1970年に論文で紹介されたものだがその時点ですでに巻き戻しについては行うべきと説明されている。ウォーターフォール型が悪いのではなく、ちゃんと人の説明をきかない人が悪いだけだがこれは仕方がない。ただアジャイル云々での解説のされかたには明確な悪意を感じる。

開発手法がどうなるというのは時と場合によるのだ。ドキュメントが必要な場所では伝達のためにも書かなくてはいけないし。
フレデリック・ブルックスが言っているように、長期的にはそうした手法の積み重ねで、開発効率は改善されていくものの銀の弾丸なんてない。

そしてよくてもアジャイルはソフトウェア工学上において、大規模開発手法に対するカウンターカルチャーではあるかもしれないが、それを置き換えるものではないと認識している。

いいアジャイルと悪いアジャイル Steve Yegge
http://www.aoky.net/articles/steve_yegge/good_agile_bad_agile.htm

2012年12月6日木曜日

ベトナムに出張中

  • 昨晩深夜ハノイ着。
  • 基本、日中はホテルの部屋にこもって仕事して、午後から提携先訪問みたいな感じで三日間過ごすので別にいろいろ見て回ったりする旅ではない。
  • 旅先で人の優しさに触れたとかもありそうにない。というか言葉全然わからないですし。
  • 画像はベトナムのお店で食べた定食。肉とフランスパン、漬け物に、スープとフォーがついて54.000ドン。周囲を見ても50.000ドンとかなのでこのくらいが相場なのかしら。200円あれば一食外食できますというと牛丼を思い起こせば、あまり安くはないかな。というか日本のデフレが異常すぎるんじゃないか。
  • 10.000ドン = 40円くらい。桁がやたらでかいので混乱する。10Kドン = 40円、1Kドン=4円と考えればまあ納得できなくもない気がするが。紙幣には別に区切りとかついてないので。
  • 日本円を1万円両替すると空港で2400.000ドンになったが、市内だと2000.00ドンにしかならないようだ。注意すな。
  • ベトナムの平均年収は地域ごとの差異はあるものの8万円〜15万円、月収ではない。これはだいたい中国とかタイの基準の半分くらい。
  • 交通事情は最悪というか交通信号の存在が空気。すこ大きな通りは常に大量のスクーターが流れていて、流れの隙をついて無理矢理横断するしかない。 交通整理とか基本諦めてるんじゃないかしら。
  • 下の写真のごとしでほんとに危ないというか、恐ろしい。まあでもそれでも成り立ってるということはゆずりあいの精神があるから成り立つんだろう。
  •  ごらんのとおり奥に横断歩道が見えるが、二人乗りでスクーターが常時往来している。ここだけではなく、多分全市でこんな感じ。横断なんかさせるものか歩道。車が速度を落としてやってくるタイミングが横断のねらいめ。まあ渡りだせばバイクも速度をおとしてくれたりする。ちなみに横断歩道がない道のほうがおおい

2012年12月1日土曜日

「ノベルゲームの枠組みを変えるノベルゲーム」

  • 自転車創業さま(http://www.anos.jp/)の新作
  • ダウンロード購入してプレイ。プレイ期間は二日くらい。いままで同社の作品全作品プレイ済みです。
    • 楽天でも販売してるのでスーパーポイントを併用
  • 公式を見てもらえればわかるとおりQVGA(320x240)のグラフィックで描かれる世界。いままでの作品より画面がよく動いた感があるのはドット絵っぽさからかしら。少ない枚数でも嘘っぽさがなくなる感じがしますよね。絵も可愛い。
  • 昨今アプリとかゲームの仕組みが変わってしまって万人に納得の内容と価格かというとうーん。となってしまいますが、新作を追っかける程度には個人的に好きですし。本作もたいへん満足しています。
  • エヴァQあたりと似た意味でいつもどおりの出来なので少し尺は短いけどいままで楽しめたならそう損はしないから安心して購入できるよみたいな。
  • ヒンヨ : できることの組み合わせはそんなに多くないので条件書き出してしらみつぶしにすればそのうち進むよ!!
  • レギュレーションに従うとなると、そのくらいしか書けませんな。
  • レギュレーションについていえば、ネットの拡散性VS家内製手工業ですので、同情的な見地から見れば賛成。ゲームの内容はムヤミヤタラにネタバレすべきではない。
  • 動画サイトで実況とかしてる人は体験版の範囲にとどめるくらいの良心はもってもらいたいもの。動画サイトの文化が死ぬと思うので発売一年内はという制限をつ けるにしてもですね。ゲームというものに人の耳目を集めている以上一概に不利益とはいえないと思います。PS2以降コンソール、PCゲームなんて腐り始め てる分野だと個人的には思いますし。
  • 数年経ったら逆に実況でもなんでも衆目に触れてもらったほうが、ダウンロード販売との相乗効果から、今後は製作者の利益になってくような気がします。
  • ただアプリとかゲーム自体はそこそこ盛り上がってる昨今ほんとに、どうしようもないのかなーとは思います。コピー問題はFalcomがとってるようにプラッ トホーム変えればまあいけるということが分かってますし。Steamみたいに衆目を浴びることを含めて全部セットの場所もあるわけです。
    • なんやかんやで新しいことをしてたりして2年かかったとかも、まあ確かにプログラム的には面倒なことをやってるなとは思いますが、WIN32+GDIとかいまや古臭いプラットホームでやりつづけてるというのにも理由はあると思うわけです。
    • 最後のx68000ゲームを製作しつづけてる会社さんなのでそれもネタなのかもしれませんけどね。

2012年10月27日土曜日

日記

  • どうも休日にやろうとしてもまあ仕事に繋がることはなかなかできないものだ
  • プログラム作業には適度な放置とつなかった時間が必要なので休日はよいのだけれどそこまでモチベーションがあがらないんだよね。というか遊ぶものがたくさんあるのが困る。
  • 人は何にお金を払うのかということを風呂に入りながら考えた。
  • でも人は何にお金を払うのか、たいていの場合人付き合いに関してはあまり人は金を惜しまない。ゲームでいえばいわゆる英雄がいたらできることを協力をするし、英雄になるのにも金を払おうとする。これがオンゲでお金が支払われる動機のひとつだと思う。
    • つまり金を払う理由はプライドだよねえと
  • ドスパラあたりで見ると二年前くらいのスマホはすでに捨て値なのでいろいろ利用価値がありそうだ。
  • とりあえず今日は久しぶりに外出してご飯
  • いろいろ考える。また今月末に動きがありそうなのでそれなりに覚悟はしておく。
  • 内省するのにも日記を書くのはよいこと 、コメントとかはずしているのはあくまで自己振り返りのためのブログゆえのことですな。