時計を壊せ

駆け出しWebプログラマーの雑記

JavaでDH鍵交換の初期化ベクトルを生成する

20億のデバイスでDH鍵交換の初期化ベクトルを生成できます。
以下のような具合のJavaコードをCreateDiffieHellmanIv.javaとして保存しましょう。

import java.security.AlgorithmParameterGenerator;
import javax.crypto.spec.DHParameterSpec;

public class CreateDiffieHellmanIv {
    public static void main (String[] args) throws Exception {
        int bitlen = 1024;
        if (args.length == 1) {
            bitlen = Integer.valueOf(args[0]).intValue();
        }
        System.out.println("Generating DiffieHellman initialization vector... " + "bitlen:" + String.valueOf(bitlen));

        AlgorithmParameterGenerator gen = AlgorithmParameterGenerator.getInstance("DH");
        gen.init(bitlen);

        DHParameterSpec spec = (DHParameterSpec)gen.generateParameters().getParameterSpec(DHParameterSpec.class);
        System.out.println("P: " + String.valueOf(spec.getP()));
        System.out.println("G: " + String.valueOf(spec.getG()));
    }
}

コンパイルします。

javac CreateDiffieHellmanIv.java

実行します。

java CreateDiffieHellmanIv

生成されます。

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Generating DiffieHellman initialization vector... bitlen:1024
P: 145092357773036288785759831358363532457242150558361433565637207115514679411584100914869369530346476337051157705709858973344162440367967367833131503361926409583294585834757269998763188665426891871955393171079827134223234474237577100562967866893704671731464827466258191400928247383857555225260521584462646243757
G: 12076877650358872723433720596980214708516091408794486767543845481119286250958515342123571307476546309975921911735092979287081062213826767342459759424622360942234980320288127473825416480708591619721965721848952913500501787074997260325092958513471288533670082527450298168344704575797601113639175082590501897125

べんり。

YosemiteでAndroid StudioがJVMを見つけられずに起動出来ない問題の対処法

こういう具合のlaunchctlで読む用のplistを書いておいて、launchctl loadしてやるとよいっぽい。

setenv STUDIO_JDK on loaded.

いちいち全部の環境でsetupするのめんどくさいのでこんな具合で簡単に入るようにした。 launchctlの仕様よく分かってないのでなんか間違ってるかも。

curl -fsSL -o $HOME/Library/LaunchAgents/karupanerura.startup.android-studio.plist https://gist.githubusercontent.com/karupanerura/2bcf574f2ea514c92393/raw/78808e08270bb5fd23e79b81d4f8d52f8b617846/karupanerura.startup.android-studio.plist
launchctl load $HOME/Library/LaunchAgents/karupanerura.startup.android-studio.plist

参考:
http://qiita.com/neiraza/items/fdde2f922daa47b85bcd
java - Android Studio was unable to find a valid Jvm (Related to MAC OS) - Stack Overflow

2014年のKPT

昨年のKPT: 2013年のKPT - 時計を壊せ

技術と関係ないこと: 技術以外で2014年を振り返ってみる - あふれだす

KEEP

続けたい事、良かった事。

新しい分野に挑戦した

新しい言語に挑戦した

  • C++11
  • Go
  • Coffee Script
  • Ruby
  • XS(PerlのCバインディング用のマクロ言語/Perl C API)
  • Swift
  • Objective-C

といいつつ、まともにコード書いたのはCoffee ScriptとXSだけ…。(PROBLEM)

ISUCON4出た

  • 予選敗退

エンジニアのコミュニティにより深く関われた

  • YAPC::Asia 2014参加/ボランティアスタッフ/40min話した
  • YAPC::Asia Reject Con 2014参加/LTした
  • Ruby Kaigi 2014参加
  • PyCon JP 2014参加/パネルディスカッション出た
  • MySQL Casual Talks参加/LTした
  • Yokohama.pm参加/20min話した
  • Gotanda.pm発足/運営/20min話した
  • Hachioji.pm参加/たぶん
  • Perl入学式おてつだい
  • ドワンゴC++勉強会参加/LTした

ワークライフバランスよかった

  • 1年通してほぼ定時過ぎたら帰るか遊んでるかしてた
  • 昨年のPROBLEM(デスマった)を引きずらなかった!

PROBLEM

問題であること、よくないこと。

モチベーションの枯渇

英語の勉強が捗らなかったり、タイムゾーンを適切に処理するための良いインターフェースの研究が捗らなかったり、積ん読の消化が捗らなかったり。モチベーションを上げるの難しい…。

ISUCON4予選敗退

はい…。

IT芸人になりつつある

自分が作った代表的なプロダクト的なものが無いまま名前だけそこそこ知られてるって状況になりつつあってエンジニアとしての危機を感じている。(1年ぶり2度目) かといって、焦って変なもの生み出してしまうのも良くない。

TRY

挑戦したいこと。試したいこと。

遠方の地域PM/参加した事の無い地域PMに参加する

  • Hokkaido.pm
  • Niigata.pm
  • Fukuoka.pm
  • Kansai.pm
  • Yomitan.pm

英語を勉強する

  • YAPCで英語でトークしたい
    • 外国人と直接コミュニケーションしたい
  • 自分のモチベーション上げる施策考える

YAPC::Asia 2015を最高のYAPC::Asiaにする

最高のYAPC::Asiaにするぞ!!!!! というわけでなにかお手伝いする。

YAPC::Asia Tokyo 2015, Aug 20, 21, 22

WEB+DB Press Vol.84のPerl Hackers Hubに寄稿しました

WEB+DB PRESS Vol.84

WEB+DB PRESS Vol.84

  • 作者: 藤吾郎,桑野章弘,福永亘,谷井靖史,野村晋之介,蛭川皓平,岡田友輔,藤本真樹,伊藤直也,宮崎靖彦,佐藤健太,高橋俊幸,佐藤太一,海野弘成,佐藤歩,泉水翔吾,渡邊恵太,舘野祐一,中島聡,橋本翔,はまちや2,竹原,伊賀敏樹,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/12/23
  • メディア: 大型本
  • この商品を含むブログを見る

縁あって、WEB+DB Press Vol.84のPerl Hackers Hubのコーナーで記事を書かせていただくことになり、 データベースプログラミングの入門的なことについて書かせていただきました。商業誌デビューとなります。 昨日発売となっておりますのでお近くの書店などで今すぐにでも購入できるようになっております。

ざっくり以下のようなことがわかるような内容になっているはずです。

  • データベースの必要性
  • DBIの説明と使い方
  • ORMの説明とTengの使い方

データベースの必要性とトランザクションの説明も簡単に書いておりますので、PerlとSQLがちょっと分かれば大方の内容は理解頂けると思います。 なお、SQLをよく知らない方は別途SQLを勉強して頂ければ幸いです。 DBIの基本的な使い方をかなりしっかり目に解説したつもりですので、いままさにPerlを勉強しているという人には是非読んで頂きたい内容となっております。 Tengについては基本的な使い方からRowクラス拡張の勘所まで書いております。 SQLインジェクションにも少し触れているので、この内容に沿ってプログラムを書いて頂ければほぼほぼ実践的な内容は抑えられるかと。

ページ数の見積もりが甘く、本来書こうとしていた内容から相当な量を削ることになってしまいましたが、なんとか重要なトピックに絞りまとまっているかと思います。DBIのbind系メソッドの紹介とか、TengのPluginの紹介とか、DBICやDBIx::Sunnyの紹介もしたかったけど泣く泣く削りました。

また、サンプルコードとして、MySQLを使ったチャット機能を提供するWebアプリをDBIとTengで実装したものを用意しておりますので、そちらも参考になれば幸いです。

昨日発売となっておりますのでお近くの書店などで今すぐにでも購入できるようになっております。

WEB+DB PRESS Vol.84

WEB+DB PRESS Vol.84

  • 作者: 藤吾郎,桑野章弘,福永亘,谷井靖史,野村晋之介,蛭川皓平,岡田友輔,藤本真樹,伊藤直也,宮崎靖彦,佐藤健太,高橋俊幸,佐藤太一,海野弘成,佐藤歩,泉水翔吾,渡邊恵太,舘野祐一,中島聡,橋本翔,はまちや2,竹原,伊賀敏樹,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/12/23
  • メディア: 大型本
  • この商品を含むブログを見る
他のコーナーも面白いものばかりですので、是非、お買い求め下さい!

あわせて読みたい:

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

  • 作者: 松信嘉範
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/03/09
  • メディア: 単行本(ソフトカバー)
  • 購入: 20人 クリック: 486回
  • この商品を含むブログを見る

謝辞

初めての商業誌での執筆ということもあり、慣れないことも多く、関係者の方々にはとても助けて頂きました。 名前を出して良いものか迷うので名前は伏せさせて頂きますが、この場を借りて御礼を申し上げます。ありがとうございました。