Tumblrテーマ、いちから作ろうとすると大変なので、あらかじめ基本的なHTMLが組まれてあるBoilerplate的なのを作った。
http://sanographix.github.io/tumblr-boilerplate/
これを使うと、CSSを書くだけでTumblrテーマ作れるので、block:Post みたいなテンプレートタグとか覚える必要なくて爆速でテーマ作れる。ZENやApolloをベースにしているので、全投稿タイプに対応している。MITライセンスなのでHTML変えたかったら変えても良いです。
…
WiMAX
WiMAXが都内だというのに繋がらなすぎて辛い
はてなブログ
なんとなくではてなブログ作った
【Python Advent Calendar 2013】OpenCVライブラリのpythonインターフェース入門
Python Advent Calendar 2013 の12/22の記事です。
python advent calendar 2013からお越し頂いた皆様はじめまして!私は修士卒業後に開発者をしていたのち、現在大学に戻り博士課程の学生をしているものです。今回は私の専門であるコンピュータビジョンでよく使われているオープンソースの無料ライブラリ「OpenCV(Open Computer Vision) Library」を、pythonから用いる方法をご紹介します。
このブログでは、専門の方向けに「pythonとOpenCVを用いたCV(Computer…
弐寺
なんとなく弐寺で二段と三段受けたら一発で受かってしまった。
やってて思ったけどスコア力が皆無だからもっとスコア詰めしたいお気分。
HiveMallを入れるまでの話
Hivemallという面白そうなものを(バイトの人にやってね♡と言われて初めて)知ったので、Debian Wheezyでその環境を作ってみた時のメモ。
作成環境: VMWare Player 6.0.1, Debian 7.0.3(Wheezy), Hadoop 2.2.0, Hive 0.12.0
やったこと
VMWareにDebian 7.0.3をインストール。
この時はデスクトップ環境を入れなかったが、後に使うので入れてもいいかも
X Window SystemとOpenbox, tint2, nitrogenを入れてデスクトップ環境を作る。
X Window System
$ sudo apt-get install xorg
ひとまずはこれだけ。ちなみにこの段階で
$ startx
すると、CUIっぽいけどマウスが使えるよっていう状態に。個人的には面白かった。
$ sudo apt-get install openbox
おわり。この段階で
$ startx
すると、右クリックでメニューが出るようになる。
$ sudo apt-get install nitrogen
壁紙を設定した後、~/.config/openbox/autostart(なければtouchコマンドとかで作る)に
nitrogen --restore &
を追加。この段階で
$ startx
すると、ちゃんと壁紙が表示される。リーネちゃんかわいい。
これが最初の手こずったところ。ぐぐったらpackage版は最前面表示ができないみたいな記事があったのでソースから最新版を入れることに。公式の方法を見ながら、
$ sudo apt-get install libcairo2-dev libpango1.0-dev libglib2.0-dev libimlib2-dev libxinerama-dev libx11-dev libxdamage-dev libxcomposite-dev libxrender-dev libxrandr-dev libgtk-dev $ wget 'http://tint2.googlecode.com/files/tint2-0.11.tar.gz' $ tar xvf tint2-0.11.tar.gz $ cd tint2-0.11 $ mkdir build $ cd build $ cmake -DCMAKE_INSTALL_PREFIX=/usr ../ $ make $ make install
これで入る。apt-getの最後のlibgtk2.0-devは公式には無かったが、無いとcmakeの段階でエラーを吐かれるので入れた。ここがつまずいた点である。なんとも情けない…。
最後に、openboxの起動時に自動的に呼び出すために~/.config/openbox/autostartに(sleep 1s && tint2) &
を追加する。
この状態で$ startx
すると、少し遅れて下の方にメニューバーが表示される。やっぱりリーネちゃんかわいい。
Sun JDKを入れるためにchromiumをインストール。
$ sudo apt-get install chromium chromium-l10n
l10nを110nと打ってパッケージが無いぞ???と15分程度悩んだのは内緒。
JDKを公式サイトからダウンロード。
本当はwgetとかで取ってきたかった(実際に方法はある)けど、面倒だったからこの方法にした。
Javaのインストール。
Debian(Wheezy)にJava7をインストール
上のサイトを参考にインストール。$ sudo apt-get install java-package
この時、最初の実行時にパッケージがないと言われて焦った。調べてみるとこのパッケージはContribとなっているそうで設定を変えないといけなかった(詳しいことは知らない)。なので、/etc/apt/sources.listの
deb (debianパッケージを取得するアドレス) main
の部分にcontribを追加することでインストールできるようになる。
$ make-jpkg (ダウンロードしてきたJDK).tar.gz $ sudo dpkg -i (上のコマンドで生成されたファイル名。oracleから始まる).deb $ sudo update-alternatives --config java
一番最後のコマンドは今までにJavaを入れたことがある人用なのかな?自分はそんな必要はないと言われた。
Hadoop ユーザー&グループを作成。
Hadoopだとユーザーを別にして動かすらしい(なぜかはやっぱりわからない)。ここからはこのサイトを参考(ほぼ真似した)にさせてもらった。
$ sudo addgroup hdoop $ sudo adduser --ingroup hadoop hduser (色々出てくるけどパスワード以外は無視してEnter) $ sudo adduser hduser sudo
sshの設定
まず、自分は入れてなかったのでopenssh-serverをインストール。
$ sudo apt-get openssh-server
ここからは、新しく作成したユーザーで作業を行った。
$ su - hduser $ ssh-keygen -t rsa -P '' $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ここで、
$ ssh localhost
と打ってつながるかテスト。自分はopenssh-serverを入れ忘れたせいで弾かれ、またしても30分程度悩まされました(´・_・`)。
Hadoopのインストール
適当なところからダウンロードして展開。その際に所有者をユーザーに変える必要があるらしい。
ちなみにユーザーは引き続きhduser。$ wget http://wget http://ftp.riken.jp/net/apache/hadoop/core/hadoop-2.2.0/hadoop-2.2.0.tar.gz $ tar zxf hadoop-2.2.0.tar.gz $ sudo mv hadoop-2.2.0 /usr/local/hadoop $ sudo chown -R hduser:hadoop /usr/local/hadoop
次に環境変数を設定する。自分の使ってるシェルの設定ファイルに(自分はzshなので、.zshrc)、
#Hadoop variables export JAVA_HOME=/usr/lib/jvm/j2sdk1.7-oracle/ export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL
を追加。JAVA_HOMEは自分の環境で適宜変えましょう。
あと、JAVA_HOMEの内容は/usr/local/hadoop/etc/hadoop/hadoop-env.shにも書いておく。その後反映。$ source ~/.zshrc
この後、
$ hadoop version
と打つとバージョンが表示されるはず。
Hadoop 設定ファイルの編集
core-site.xml, yarn-site.xml, mapred-site.xmlを編集する。
いずれのファイルもconfigurationの間に追加した。core-site.xml
$ vim /usr/local/hadoop/etc/hadoop/core-site.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- 加えたところ --> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <!-- ここまで --> </configuration>
localhostにしてあるのは、ただ単にサイトに載ってる自分でIPアドレスを指定する方法だとうまくいかなかったから(多分/etc/hostsとか、/etc/hosts.allowあたりをいじればどうにかなるんだろうけど)。
yarn-site.xml
$ vim /usr/local/hadoop/etc/hadoop/yarn-site.xml <?xml version="1.0"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <configuration> <!-- Site specific YARN configuration properties --> <!-- 加えたところ --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <!-- ここまで --> </configuration>
mapred-site.xml
$ cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml $ vim /usr/local/hadoop/etc/hadoop/mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- 追加したところ --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- ここまで --> </configuration>
HDFSの設定
まず、HDFSが使用するファイルを作成した。
$ sudo mkdir -p /var/hdfs/namenode $ sudo mkdir -p /var/hdfs/datanode $ sudo chown -R hduser:hadoop /var/hdfs
次に、hdfs-site.xmlを編集。これも追加するのはconfigurationの間。
$ vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- 追加したところ --> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/var/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/var/hdfs/datanode</value> </property> <!-- ここまで --> </configuration>
NameNodeのフォーマット
NameNodeをフォーマットする必要があるそうなので、フォーマット。
$ hdfs namenode -format (ログが大量に出てくる)
Let’s 起動!
起動はこれのみ(本当はstart-dfs.shとstart-yarn.shの2つ起動する)。
$ start-all.sh
これひとつで、上に書いた2つのシェルを実行してくれる。便利っすね^~~
起動したところでブラウザでhttp://localhost:50070/にアクセスすると、たくさんなんかが出てくるはず。
こんな感じ。
止めるときは、$ stop-all.sh
これだけ。ああ^~いいっすね~。
Hiveのインストール
今度はこちらのサイトを参考にインストール。サイトに載ってるアドレスはリンクが切れてるので適当に置き換える。
$ wget http://archive.apache.org/dist/hive/hive-0.12.0/hive-0.12.0.tar.gz $ tar xvf hive-0.12.0.tar.gz $ mv hive-0.12.0 hive $ sudo mv /usr/local/
念のため所有者をhduserにしておく。
$ sudo chown -R hduser:hadoop /usr/local/hive
環境変数を通す。シェルの設定ファイルに以下の文を追加。
# hive variables export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin
追加したあとは、設定を編集する。
$ mkdir /usr/local/hive/logs $ cd /usr/local/hive/logs $ mv hive-log4j.properties.template log4j.properties
log4j.propertiesの中のhive.log.dirsを以下のように変更した。
hive.log.dir=/usr/local/hive/logs/ $ mv hive-env.sh.template hive-env.sh $ chmod 755 hive-env.sh $ mv hive-exec-log4j.properties hive-exec-log4j.properties $ mv hive-default.xml.template hive-site.xml
Hive のテスト
実行は、
$ start-all.sh $ hive
hadoopを起動した状態で実行する。
この後、hive>show databases; hive>create table counter(count int, str string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
などと打つとちゃんと実行できるはずだが、
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
と出てうまくいかなかった。原因は調べてる途中。
HiveMallのインストール
インストールと言っても、
$ mv hivemall.jar define-all.hive /tmp $ hive hive>add jar /tmp/hivemall.jar hive>source /tmp/define-all.hive
これだけ。あとはHiveMallをクールに使いまくればおk!(まだ使っていない)
色々書いたけど、結局はただの忘備録。参考にする人もいないだろうけど。
明日は去年来の大雪だそうです(去年は愛知だったのでよくわからないけど)。
20cmも積もるのかは甚だ疑問には思ってはいるけれども、話を聞く限りつもりのは間違いなさそう
めんせつ
昨日、某所でバイトの面接を受けてきた。
こういうまともな面接を今まで受けたことがなかったので、緊張して思うように喋れなかった…。残念(´・ω・`)
帰りにガールフレンド(仮)のラッピングがしてあるバスを見て、意外なところに進出してるんだなーと思いながらとぼとぼ帰りましたとさ。
if __name__ == '__main__':
Python のコードを眺めてると時々登場してくるこいつ↓if __name__ == ’__main__’: |||python| #!..
こういう意味があったのね。
“最近のホテルの不祥事なんかを見ると思い出すガキの頃の出来事。
当時は景気も良くて、月一ぐらいの頻度で家族で通うステーキ屋があった。
ある日、いつものように食事していると、いつものように給仕長が
挨拶に来て「お味はいかがでしょうか?」と聞いた。
オヤジとかは普通に返してたんだけど、俺はボソッと
「いつもよりちょっとかたいかも」って言っちゃったんだよね。
そしたらいつも笑顔の給仕長の顔からすっと表情が消えて、
「ちょっと失礼します」というと、テーブルの上の俺が食べてる
ステーキを一切れ食べちゃった。
そして、びっくりして固まってる俺ら家族に
「そのままもうしばらくお待ちいただけますか?」と言って
足早に厨房に入っていた。よく分からないまま、なんか怒られる展開かな~とかびくびくしてたら
給仕長がシェフを連れて戻ってきて
「申し訳ありませんでした。確認したところ本来冷凍庫で4週間
熟成させた肉をお客様にお出ししなければいけないのですが
厨房の手違いで、昨日入荷した新しいものを提供してしまいました。
ただ今、熟成させたものを調理しておりますので、出来上がるまで
お待ちいただけますか?」
と頭を下げられて、フルーツやジュースを持ってきてくれた。その間も給仕長は各テーブルまわって頭を下げて、
「本日の御代は結構です、またこれを使ってまたお越しください」
と一人1万円ぐらいのコース用の食事券手渡してた。
うちも帰り際、食事券いただいた上に、俺だけは次から
デザートがついてくるようになったw正~直、自分も含めて店内の客は誰も肉の違いなんて
分からなかったと思う。
なにより、ガキの一言を真摯に受け止めて確認する姿に
衝撃を受けた。今、ぜんぜん分野の違うものづくり系の仕事してるけど
変に妥協できない姿勢はこの辺が結構影響してると思うwちなみに、お店のほうは数年後、オーナーが代替わりして
”
コスト削減に舵を切ったとたん、給仕長をはじめ
主だったスタッフさんがみんな退職されて
安物のロイホみたいになった挙句すぐに潰れたのも衝撃だった。