CSS書くだけでTumblrテーマが作れる「Tumblr Boilerplate」作った

【Python Advent Calendar 2013】OpenCVライブラリのpythonインターフェース入門

弐寺

なんとなく弐寺で二段と三段受けたら一発で受かってしまった。
やってて思ったけどスコア力が皆無だからもっとスコア詰めしたいお気分。

HiveMallを入れるまでの話

Hivemallという面白そうなものを(バイトの人にやってね♡と言われて初めて)知ったので、Debian Wheezyでその環境を作ってみた時のメモ。
作成環境: VMWare Player 6.0.1, Debian 7.0.3(Wheezy), Hadoop 2.2.0, Hive 0.12.0

やったこと

  1. VMWareにDebian 7.0.3をインストール。

    この時はデスクトップ環境を入れなかったが、後に使うので入れてもいいかも

  2. X Window SystemとOpenbox, tint2, nitrogenを入れてデスクトップ環境を作る。

    • X Window System

          $ sudo apt-get install xorg
      

      ひとまずはこれだけ。ちなみにこの段階で

          $ startx
      

      すると、CUIっぽいけどマウスが使えるよっていう状態に。個人的には面白かった。

    • Openbox

          $ sudo apt-get install openbox
      

      おわり。この段階で

          $ startx
      

      すると、右クリックでメニューが出るようになる。

    • nitrogen

          $ sudo apt-get install nitrogen
      

      壁紙を設定した後、~/.config/openbox/autostart(なければtouchコマンドとかで作る)に

          nitrogen --restore &
      

      を追加。この段階で

          $ startx
      

      すると、ちゃんと壁紙が表示される。リーネちゃんかわいい。

    • tint2

      これが最初の手こずったところ。ぐぐったら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
      

      すると、少し遅れて下の方にメニューバーが表示される。やっぱりリーネちゃんかわいい。

  3. Sun JDKを入れるためにchromiumをインストール。

    $ sudo apt-get install chromium chromium-l10n
    

    l10nを110nと打ってパッケージが無いぞ???と15分程度悩んだのは内緒。

  4. JDKを公式サイトからダウンロード。

    本当はwgetとかで取ってきたかった(実際に方法はある)けど、面倒だったからこの方法にした。

  5. 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を入れたことがある人用なのかな?自分はそんな必要はないと言われた。

  6. Hadoop ユーザー&グループを作成。

    Hadoopだとユーザーを別にして動かすらしい(なぜかはやっぱりわからない)。ここからはこのサイトを参考(ほぼ真似した)にさせてもらった。

        $ sudo addgroup hdoop
        $ sudo adduser --ingroup hadoop hduser
        (色々出てくるけどパスワード以外は無視してEnter)
        $ sudo adduser hduser sudo
    
  7. 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分程度悩まされました(´・_・`)。

  8. 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
    

    と打つとバージョンが表示されるはず。

  9. 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>
      
  10. 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>
    
  11. NameNodeのフォーマット

    NameNodeをフォーマットする必要があるそうなので、フォーマット。

        $ hdfs namenode -format
        (ログが大量に出てくる)
    
  12. Let’s 起動!

    起動はこれのみ(本当はstart-dfs.shとstart-yarn.shの2つ起動する)。

        $ start-all.sh
    

    これひとつで、上に書いた2つのシェルを実行してくれる。便利っすね^~~
    起動したところでブラウザでhttp://localhost:50070/にアクセスすると、たくさんなんかが出てくるはず。

    こんな感じ。
    止めるときは、

        $ stop-all.sh
    

    これだけ。ああ^~いいっすね~。

  13. 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
    
  14. 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
    

    と出てうまくいかなかった。原因は調べてる途中。

  15. HiveMallのインストール

    インストールと言っても、

        $ mv hivemall.jar define-all.hive /tmp
        $ hive
        hive>add jar /tmp/hivemall.jar
        hive>source /tmp/define-all.hive
    

    これだけ。あとはHiveMallをクールに使いまくればおk!(まだ使っていない)

色々書いたけど、結局はただの忘備録。参考にする人もいないだろうけど。

明日は去年来の大雪だそうです(去年は愛知だったのでよくわからないけど)。
20cmも積もるのかは甚だ疑問には思ってはいるけれども、話を聞く限りつもりのは間違いなさそう

めんせつ

昨日、某所でバイトの面接を受けてきた。

こういうまともな面接を今まで受けたことがなかったので、緊張して思うように喋れなかった…。残念(´・ω・`)

帰りにガールフレンド(仮)のラッピングがしてあるバスを見て、意外なところに進出してるんだなーと思いながらとぼとぼ帰りましたとさ。

最近のホテルの不祥事なんかを見ると思い出すガキの頃の出来事。

当時は景気も良くて、月一ぐらいの頻度で家族で通うステーキ屋があった。
ある日、いつものように食事していると、いつものように給仕長が
挨拶に来て「お味はいかがでしょうか?」と聞いた。
オヤジとかは普通に返してたんだけど、俺はボソッと
「いつもよりちょっとかたいかも」って言っちゃったんだよね。
そしたらいつも笑顔の給仕長の顔からすっと表情が消えて、
「ちょっと失礼します」というと、テーブルの上の俺が食べてる
ステーキを一切れ食べちゃった。
そして、びっくりして固まってる俺ら家族に
「そのままもうしばらくお待ちいただけますか?」と言って
足早に厨房に入っていた。

よく分からないまま、なんか怒られる展開かな~とかびくびくしてたら
給仕長がシェフを連れて戻ってきて
「申し訳ありませんでした。確認したところ本来冷凍庫で4週間
 熟成させた肉をお客様にお出ししなければいけないのですが
 厨房の手違いで、昨日入荷した新しいものを提供してしまいました。
 ただ今、熟成させたものを調理しておりますので、出来上がるまで
 お待ちいただけますか?」
と頭を下げられて、フルーツやジュースを持ってきてくれた。

その間も給仕長は各テーブルまわって頭を下げて、
「本日の御代は結構です、またこれを使ってまたお越しください」
と一人1万円ぐらいのコース用の食事券手渡してた。
うちも帰り際、食事券いただいた上に、俺だけは次から
デザートがついてくるようになったw

正~直、自分も含めて店内の客は誰も肉の違いなんて
分からなかったと思う。
なにより、ガキの一言を真摯に受け止めて確認する姿に
衝撃を受けた。

今、ぜんぜん分野の違うものづくり系の仕事してるけど
変に妥協できない姿勢はこの辺が結構影響してると思うw

ちなみに、お店のほうは数年後、オーナーが代替わりして
コスト削減に舵を切ったとたん、給仕長をはじめ
主だったスタッフさんがみんな退職されて
安物のロイホみたいになった挙句すぐに潰れたのも衝撃だった。