ブログを再開しました

実に2年のブランクです。

はてなダイアリ -> WordPress と来ていたのですが、WordPressが面倒になってまた戻ってきました。

このブログでは、主に技術ネタを取り扱います。
テーマは、Web, プログラミング, 開発環境, vim などです。

少しずつアウトプットの量を増やしていこうと思います。

php で uuid を生成する

pecl に uuid とやらがあるらしいのでそれを使うのが良さそう。

以下インストールメモ。

$ sudo pecl install -a uuid
$ sudo vi /etc/php.ini
+extension=uuid.so
$ sudo /etc/init.d/httpd reload

# test(uuidが生成されればOK)
$ php -r "echo uuid_create(UUID_TYPE_RANDOM);"
d87d4a38-d33a-418f-ae13-603c90d54aec
$ php -r "echo uuid_create(UUID_TYPE_TIME);"
d286ebb4-46d1-11e2-9994-525401006414

extensionは php.d/uuid.ini に書いた方が良い気がしますね

参考 PHPでUUIDの生成 | プラスター業務日記

  • for osx

pecl からだとこけるので make installした。

$ wget http://pecl.php.net/get/uuid-1.0.2.tgz
$ tar zxvf uuid-1.0.2.tgz
$ cd uuid-1.0.2/

# http://pastie.org/435461 から パッチ をDL
$ patch < pastie-435461.diff
# filepathを聞かれたら以下を入力
tests/uuid_mac.phpt

$ phpize
$ ./configure --with-php-config=/usr/local/bin/php-config
$ make
$ make install
$ vi /usr/local/etc/php.ini
+extension=uuid.so

$ sudo apachectl restart
$ php -r "echo uuid_create();"
43EF4446-056C-4DC3-8B43-D3B66896C3F3

参考 MAMP & PECL/UUID Module Working On Snow Leopard « Unreal Expectations

11/13 第6回山口県Web勉強会で喋ってきた #YWebGrp

 第3回から参加している山口県Web勉強会に今回も参加し,初スピーカーをしました.少し遅くなってしまったんですがせっかくプレゼンの場をいただいたので振り返りたいと思います.今回は自身の反省が主な内容です.

内容

全体の内容については@さんや@さんがまとめてくださっているのでそちらを参照してください*1

発表「Vim初心者*2によるVim入門」

発表内容

 プログラマ向けテキストエディタVim」をテーマに30分くらい喋りました.Ustreamのアーカイブ(http://www.ustream.tv/recorded/10823076)02:00:00辺りです*3.環境は@さんのMBPを使わせていただきました.ありがとうございます.
 Vim入門ということでVim特有のモードの概念やキーについて説明し,実際にデモをしました.また,Vimのカスタマイズ性もアピールしました.時間がおしてしまったため、プラグインを入れるデモを見せることができず,残念でした.

反省
  • 勉強会内のVimmer率やVim認知度が低かったので,丁寧にわかりやすく,そしてVimに興味を持ってもらうように話そうと思っていましたが,中々上手くいかないものです.まず,僕の喋りがくどすぎる点がダメだったと思います.後からアーカイブを見直して深く痛感しました.「丁寧」と「くどい」は全然違うと思いました.どうも発表の場では緊張してしまい,キーワードが抜けたり,くどい言い方が多くなります.
  • もっとデモに時間を使って,Vimの色々な機能を見せたかったです.
  • つかみをしっかりと意識する、そして聞いていて楽しいプレゼンができれば良かったと思いました.
次にどう生かすか(反省に対応して)
  • 経験値を積む.不慣れからくる緊張だと思うので,とにかく場数を踏みたいです.そのためには,このような場で積極的に手を上げること,そして真剣に取り組むことが必要だと思います.今回のプレゼンは本当に学ぶことが多かったです*4.プレゼンを日常的なものにするってのも良いかもしれないですね.
  • 前準備を入念に.時間を計った練習をもっとするべきですね.今回はそれが完璧ではなかった.僕は想定外のアクシデントにも超弱いので,予想されることは事前に考えておくことも重要だと思いました.
  • 上手い人のやり方をパクる.色々な人の色々な種類のプレゼンをたくさん聞くべきですね.センスも必要.次はこの辺りを意識してみたいです*5

次の勉強会

 次回は,僕がML,ATND作り,宣伝の担当になりました.よろしくお願いします.近いうちにMLを投げますので #YWebGrp の方は楽しみにしていてください.そして先に忘年会ですね.超楽しみです.

*1:決して手抜きではない

*2:1年も使っているのに自分のことを初心者だと言うのはVimが如何に奥深いものなのかを主張したかったためである

*3:どんどん晒していきます

*4:本当に勉強させてもらっています #YWebGrp の方々には本当に感謝しています

*5:内定先でのLT(Lightning Talk)でかなり重要になってくる要素

k-means法 と x-means法 と BSI (ベイズ情報量規準)

この記事はただのリンクまとめです.

x-means法

  • k=2によるクラスタリングを再帰的に行う.
  • ベイズ情報量規準(BSI: Bayesian information criterion)が閾値を下回るまで試行する*1

*1:この記事を書いたきっかけは,卒業研究生の中間発表で出てきたこの「BSI」の定義がわからなかったことです.

*2:同じ用語であっても英語版wikiの方が情報が豊富なのか.当然ですね.

FizzBuzz的なもの

問題(Java)

1から50まで数字を順に表示させます。ただし、2〜9の任意の数字(整数)についてその数字の倍数と一の位にその数字が含まれる数の時には、数字の隣に"うふふ"と表示させてください。2〜9の任意の数字はキーボードから最初に入力した結果を用います。なお、このプログラムはFor文を使う事を前提です。

先ほど友人に,上記の問題が解けないから教えて欲しいと言われて途中までやっているソースコードをもらった.ここには載せれないが,行数は26行だった.今日はそのプログラムを7行にして返してやったぜはははーってお話.以下,プログラムを載せる.

Ufufu.java

import java.io.*;
class Ufufu{
	public static void main(String[] args) throws IOException{
		int n=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
		for(int i=1;i<=50;i++)System.out.print((i%n==0||i%10==n)?(i+"ウフフ "):(i+" "));
	}
}

実行(任意の数字として3を指定した例)

$ javac Ufufu.java
$ java Ufufu > result.txt
3
$ cat result.txt
1 2 3ウフフ 4 5 6ウフフ 7 8 9ウフフ 10 11 12ウフフ 13ウフフ 14 15ウフフ 16 17 18ウフフ
19 20 21ウフフ 22 23ウフフ 24ウフフ 25 26 27ウフフ 28 29 30ウフフ 31 32 33ウフフ 34 35
36ウフフ 37 38 39ウフフ 40 41 42ウフフ 43ウフフ 44 45ウフフ 46 47 48ウフフ 49 50 

おしまい.中身は2行だけの記述ですっきりできました.これが僕の限界ですが,これより短いコードって書けそうですかね?Javaで.
なんだか去年のインターンシップが懐かしくなりました.そしてなぜ「うふふ」なのかも気になるところ.

参考ページ

7/11 第3回山口県Web勉強会に参加 #YWebGrp

第3回 山口県WEB勉強会 : ATNDに参加してきました.
参加者の皆さん,お疲れ様です.@です.初参加で若干不安でしたが,皆さん気軽に話しかけていただいて楽しい時間を過ごせました^^
以下,内容*1と感想ごちゃまぜに書いてます.時間割はこちら*2

ぐだぐだ名刺交換会

12時~13時までしっかり時間があったため,ここで色々な方と会話を交わすことができました.持っていった名刺も足らないほど.こんなに名刺を消費したのは初めてです.しかし全ての方の名前と顔を一致させることはできませんでした…欲を言えば,全員に自己紹介の時間(1分/人でいいので)を設けて欲しい!!と思いました.その後が話しかけやすくなりそうですし,初参加の方も顔を覚えてもらえそうかなーと.

【発表】

  • 県内プログラマで集まる会をやってみましたよ。 @さん
  • JAVAアプレットを見直してみよう」 @さん
    • 様々なJavaプログラムの比較があって良かった.
    • 授業で触ったことがあったので懐かしくなった.
    • 実際に使われているところが少なくてなんだかなーと思った.
    • そのため,あくまでも社内用JavaプログラムをWebで使いたいときに便利なんだなーという印象.
    • @さんのつっこみが鋭かった(Ustでの参戦).
  • 「萩商工高校情報デザイン科の取り組みについて」@先生
    • 配布資料が先生らしさをかもしだしていた.
    • 学生は結構高度なことをやっている.
    • ぶるまん(@)さんがスライドに登場して盛り上がる.
  • CMS」@さん
    • MTはMovable Typeの略.
    • Keynoteがとにかくおされ.
    • メモをなくした(スライドを下さい).
    • 内容がすごくわかりやすくて濃かったことは覚えているのですがメモをなくした(ひさっちさんすみません).
  • 「LOFTY手伝ってくださる方募集!」 @さん,@さん
    • 良心的な病院という地域密着型ポータルサイトのお話.
    • いずれは宇部小野田のライブドア
    • 主婦の方が3人くらいで頑張っている.
    • いろいろ手伝って欲しい.同じ目線で面白がってやってくれる方が欲しいとのこと.
    • 僕もエンジニアとしてで良ければ手伝いたいです.何ができるか微妙ですが^^;

【ワークショップ】[お題] スマートフォンアプリを使ったビジネスモデルを考える

「ワールドカフェ」という方式を採用したこともあり活発な議論ができました.

ワールド・カフェの特徴
ワールド・カフェは、組織やコミュニティの比較的多人数の集まりで、設定したテーマに関して、ダイナミックで協働的な話し合いの場を作り出すのに効果的です。
それぞれのテーブル毎に机上の模造紙に自由にメモを描きながら、20分から30分程度の話し合いを行います。これをメンバーを変えながら3回程度行うことで、そこで出たアイデアが他花受粉するようなイメージで、テーマに対するコンテクストが短時間で深まり、大変盛り上がる効果があります。

http://www.humanvalue.co.jp/service/wcafe/

そうそう.もろこんな感じで,4,5人のグループを5つ作って,1時間で3回メンバーチェンジしました.中々良かったです.一番の盛り上がりを見せたかと思います.
以下,出た案のアプリ名のみを載せてます.参加していない人は内容を妄想してください^^

  1. 「リアルクエスト」
  2. 「国と合コンとぼく」
  3. 「イベントアート」
  4. 「おもいでふぉん(間違っていたら指摘お願いします)合ってました^^」
  5. 紙がない」

懇親会(1次会&2次会)

1次会は途中からの参加でしたが,皆さんとわいわい盛り上がって親交を深めることができました^^ ぶるまんさんは懇親会から参加されていました.以前Ustを見ていたので会えてよかったーって思いました.2次会は24:00くらいまで,非常に楽しかったです.その後少人数で3次会に行かれていたようですが,僕は無一文のため帰りました(ニヤリ

全体通しての感想

  • アットホームな雰囲気で馴染みやすかった.
  • 参加者はWebエンジニア・デザイナの方ばかりではなく,別の畑の方も来ていた.
  • Webエンジニア・デザイナががつがつ技術の話をするのかと思ったらそうでもなかった.
  • それを期待していた反面,若干の物足りなさは感じた.
  • 今回は特に技術的なお話が少なかった様子(次回に期待したい).
  • 山口にもスマホユーザいっぱいいるじゃん^^ってなって嬉しくなった.4sqユーザも多い印象.
  • 次回はスピーカーをやりたいと思った(ネタがないが…^^;).
  • PC持ってくればよかったーorzと後悔した.次は持っていく.

次回,初参加しようと考えている方へ

  • 名刺はあると便利.その際にtwitterIDも併記していただけると名刺とtwitterの照合がしやすくてうれしいです.
  • PCは持ち込みOK.無線も飛んでいます.
  • Webのうぇの字も知らない方でも楽しめます(絶対).おススメです^^

*1:メモをほとんど取っていないため適当です.ホント申し訳ないです

*2:Googleグループに参加する必要有

linuxコマンドnkf

普段,WindowsとLinux間でファイルをやりとりする際に,Network Kanji Filter こと nkf (ん,逆か?)にお世話になっています.このコマンド,今まではこうやって使ってました.

# hoge.txt を unix改行方式(LF),EUC-JP に変換したものを 0.hoge.txt に出力
$ nkf -Lu -e hoge.txt > 0.hoge.txt
# リネーム
$ mv 0.hoge.txt hoge.txt

今日何気にぐぐるとこのページを見つけて"--overwrite"オプションの存在を知りました.このオプションを使うと引数のファイルに直接上書きができます.つまり、以下のコマンドで上記のコマンドと同等の処理ができるわけです.

$ nkf --overwrite -Lu -e hoge.txt

簡単です.また,複数ファイルの指定も余裕です.

# ".php"のファイルの改行コードと文字コードを変換
$ nkf --overwrite -Lu -e *.php

なぜ今まで知らなかったんだーーーーーーーコマンドの存在を知って5年は経とうかとしていることもあり悲しい気持ちになりました.パイプですら最近使い方が分かったレベルなんです.まだまだunixコマンド愛が足りないですね.精進します...
それだけ.