Balance

プログラミングとか将棋とかの話題を徒然に

アイデアの作り方

50年以上読み継がれている名書

本編は20分ほどで読み終わる (半分以上が解説やあとがきがあるが読まなくても良い) 断片的に知っていたことを体系立てて頭に入れられることはメリットが多いと感じます

以下要約

  • イデアは既存の要素の新しい組み合わせ 別表現) 枯れた技術の水平思考

  • イデアの作り方は5つの段階がある

    1. 資料の収集
    2. 資料の咀嚼
    3. 放棄
    4. ひらめき
    5. イデアの具体化 順番が大事で、前段が終了する前に先に入ってはいけない
  • 5段階の詳細

    1. 資料の収集 以下の2種類が存在する

      • 一般的資料 今回の企画に直接的には関係のない資料 幅広くあらゆることに興味をもつ
      • 特殊資料 今回の企画に直接関係する資料 この資料収集を偏執的に行うことが重要ポイントの一つ 生涯にわたる長い仕事になる
    2. 資料の咀嚼

      • 複数の事実の関係性をあぶり出す
      • 1で得られた情報をカードやスクラップ、マインドマップなどのアナログな方法で整理して眺める
      • 思いついたことはメモする
      • 絶望状態に到達するまで続ける
    3. 放棄

      • 完全に問題を心の外に放り出す
      • 自分の想像力や感情を刺激するものに心を映す ex.) 音楽、映画、読書
    4. ひらめき 何気ない瞬間にひらめきが起こる ex.) 入浴中、睡眠中、髭を剃っているときなど

    5. イデアの具体化 生まれたアイデアは、そのまま使えるものではないことがほとんど 手を加えて使い物になるようにする

MeCabをJavaで使えるようにする(OS X Mavericksの場合)

JavaでのMeCab利用についてのとおりにMeCabJavaバインディングをインストールしたのだが、

以下のように表示が出て進まず。

g++ -O3 -c -fpic MeCab_wrap.cxx  -arch x86_64 `mecab-config --cflags` -I/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers

MeCab_wrap.cxx:159:10: fatal error: 'jni.h' file not found

#include <jni.h>

         ^

1 error generated.

 

[Mac]JAVA_HOME/include以下にjni.hがないというエラーを解決 - tjun memo

このページの通りやってみたけどまだダメで、このままではまだjni.hが見れてない。

Makefileの14行目を書き換えることで成功

JAVA_BASE=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

JAVA_HOME=$(JAVA_BASE)/Home

 

TARGET=MeCab

JAVAC=javac -J-Dfile.encoding=UTF-8

JAVA=java -Dfile.encoding=UTF-8

JAR=jar -J-Dfile.encoding=UTF-8

CXX=g++

INCLUDE=$(JAVA_BASE)/Headers

 

PACKAGE=org/chasen/mecab

 

LIBS=-arch x86_64 `mecab-config --libs`

INC=-arch x86_64 `mecab-config --cflags` -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers

 

all:

$(CXX) -O3 -c -fpic $(TARGET)_wrap.cxx  $(INC)

$(CXX) -dynamiclib $(TARGET)_wrap.o -o lib$(TARGET).dylib $(LIBS)

$(JAVAC) $(PACKAGE)/*.java

$(JAVAC) test.java

$(JAR) cfv $(TARGET).jar $(PACKAGE)/*.class

 

test:

env DYLD_LIBRARY_PATH=. $(JAVA) test

 

clean:

rm -fr *.jar *.o *.dylib *.so *.class $(PACKAGE)/*.class

 

cleanall:

rm -fr $(TARGET).java *.cxx 

最後にlibMeCab.dylibでちょっと詰まったけど、eclipseで動かすならこちらのとおりに

ad libitum: EclipseでMecabを使う(for Mac)

 

mysqlの不具合色々

なんかmysqlに色々不具合があったのでメモ

 

1.mysql.sockがないって言われる

new PDO()するとこんなエラーが出る。

[2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in (略)DB.php on line 39

 

解決方法:mysql.sockまでのシンボリックリンクを作成

ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock

 

2.ファイルに書き込みができないって言われる

こんなかんじのSQLを実行したら

gist8470164

こんなエラー

Can't create/write to file '/var/folders/z0/v0gk8gld52q7p9zy8b3__g580000gn/T/#sql564_1_1.MYI' (Errcode: 13)

 

いろいろためすとGROUP BY句がないSQLではなぜかエラーが出ない。

結構八方ふさがりな感じだったが、コマンドでmysqlを開始した時に、こんなwarningが出ていたことを発見。

Warning: World-writable config file '/Applications/XAMPP/xamppfiles/etc/my.cnf' is ignored

 

このへんを見ると、my.cnfのパーミッションを660にするといいとのことで、直してみるとworningもエラーも解消。

 

また無駄なことに時間を使ってしまった。

 

eclipseのプロジェクト複数言語を扱う

eclipseのプロジェクトで複数の言語(今回はjavaphp)で扱ってみたのでその顛末を。

 

とあるプロジェクトでjavaphpの両方を扱っていて、

ビルドやデバッグのためにjava用とphp用の両方のプロジェクトを用意していた。

 

モジュールをコピーしてそれぞれに割り当てるのは論外だが、

複数のプロジェクトに同じルートディレクトリを指定することが出来ないので、

ルートはphpで、javaは一段階下を指定することで対応している。

 

しかし、これだとctrl+shift+rでのファイル検索では同じファイルが二重に出るなど、

いろいろな場面で都合がわるいので、なんとか1つに統合できないかと思っていたのだけれど、

今日ふと思いついて、単純にルートをjavaに変更してみたらちゃんと動いている。

ステップデバッグも問題ない。

 

この組み合わせの場合、phpがビルドが不要なのでうまくいっているが、

ビルドが必要な言語の組み合わせではだめなんだろうなあ。

引っ越し

前のブログサービスが重たすぎて死んでるのでお引越ししてきました。

あと、今度のブログは匿名で行くことにしました。

 

ウェブサービス運営してるので、そこでの技術的な気付きや、

あとは将棋のことなんか書いていこうと思います。