imageMagick centos インストール

格ゲーマのふ〜どさんです。
evo優勝は記憶に新しく、ガンストなど格ゲに限らずにマルチで活躍してます。
スパ4のメインキャラはフェイロンで、反応速度がすごく、人間性能で勝負してくスタイルです。

f:id:linesnova:20140604194328j:plain

今回は、imageMagickのインストールです。

centos5とcentos6について記載します。
centos5はかなり苦労しました。。

はじめに、centos6です

  yum install libjpeg-devel libpng-devel
  yum install ImageMagick

次に、centos5です

  yum install libjpeg-devel libpng-devel
  #このあたりもインストールします(自分の場合、fontが反映されませんでした。。)
  yum install freetype-devel giflib-devel perl-devel djvulibre-devel libwmf-devel jasper-devel libtool-ltdl-devel libxml2-devel librsvg2-devel OpenEXR-devel

  wget http://www.imagemagick.org/download/ImageMagick.tar.gz
  tar zxvf ImageMagick.tar.gz
  cd ImageMagick-6.8.9-2
  ./configure
  make
  make install

  rm /usr/bin/convert
  ln -s /usr/local/bin/convert /usr/bin/convert

logrotateやってみました

岸明日香さんです。ゴットタンという大人向けバラエティ番組で、
飲みっぷり選手権的なのをやっていて、それで、知りました。

関西弁いいすね

f:id:linesnova:20140418162556j:plain

さて、今回はlogのrotateについて記載します。

ポイントは、rotateするタイミングで、プロセスを奪わないこと、できるだけ、タイムラグなく
参照元のログファイルを圧縮できるか、この2点です。


そしてこの2点は以下のコマンドが最適に思えたのでそれで実装してます。

cp /dev/null 参照元ログファイル名

mvせずに、コピーし、元ファイルを空っぽにしてあげるってのが上の原理です。
このコマンドでは瞬時に空にできるらしくログのロストなく、実装可能です(多分)

参考までに作成したサンプルを記載しておきます。
実行自体はjenkinsの定期実行で行っています。

やっていること

  • バックアップをとる rotate.sh
  • バックアップファイルを圧縮する compress.sh
  • バックアップファイルの古いものを削除する rmlog.sh

rotate.sh

#!/bin/bash

FROM_DIR="/var/log/"
TO_DIR="/var/log/hoge_bak/"


# 日付の取得
DATE=$(date +%Y-%m-%d)

#バックアップ保存先の存在確認
if [ ! -d ${TO_DIR} ]
then
  mkdir ${TO_DIR}
fi 

LOG_REG=`find  "/var/log/" -name "hoge*.log" -maxdepth 1 2>/dev/null`
for f in $LOG_REG
do
EXC_F_DIR=${f##*/} 
FILE_NAME=${EXC_F_DIR%.*}
echo ${FILE_NAME}
#日ごとにbackupファイルを作成、存在していた場合、ナンバリングする
cp --backup=numbered ${f} ${TO_DIR}${FILE_NAME}${DATE}.log; 
cp /dev/null ${f}
done

compress.sh

#!/bin/bash

TO_DIR="/var/log/hoge_bak/"

#バックアップ保存先の存在確認
if [ ! -d ${TO_DIR} ]
then
  mkdir ${TO_DIR}
fi
#一日以上前のbackupログを圧縮する
find  "${TO_DIR}" -maxdepth 1  -mtime +0 -iregex ".*\.log$\|.*\.log.+~$" | xargs gzip 2>/dev/null

rmlog.sh

#!/bin/bash

TO_DIR="/var/log/hoge_bak/"

#バックアップ保存先の存在確認
if [ -d ${TO_DIR} ]
then
  #一年以上前の圧縮ファイルを削除する
  find  "${TO_DIR}" -mtime +365  -iregex ".*\.gz$" -maxdepth 1 -exec rm -f {} \; > /dev/null 2>&1
fi

centos5 libstdc++.so.6.0.10 reference errors

倉持由香さんです。つい最近知りました。
格ゲーもやるらしく、この前ウル4のお披露目会で大胆なコスとかしていて(アレコス?)
最近の注目株です。まー尻がすごいっすね

f:id:linesnova:20140418153944j:plain

私の場合、yum updateをした瞬間に「libstdc++.so.6.0.10」が参照できないと;´Д⊂)
そこで試行錯誤の上実施したコマンドを記載します。

「libstdc++.so.6」のシンボリックの実体を「libstdc++.so.6.0.10」とします。
libstdc++.so.6.0.10自体がすでにない場合は、どっかからもってくる必要があります。

  cd /usr/lib64/
  mv libstdc++.so.6 libstdc++.so.6.bak
  ln -s libstdc++.so.6.0.10 libstdc++.so.6

angularjs 事始め

格ゲーマーのボンちゃんです。
サガット使いで国内でも最近のトパンガリーグで優勝しました。
のりに乗ってます。

見かけとは異なり、非常に緻密に心理分析などをしつつするプレイヤです。
麻雀もうまいですしね。

f:id:linesnova:20140206145827j:plain

本題に入ります。

angularjsです。
実際に使ってみました。かなり使いやすいです。

利点としては、今までのウェブでの通常のhttp通信だと、name,value のsubmitで
postするのが主流でしたが、angularjsでは、jsonでのやりとりがベースとなります。
そして、まるでリクエストをそのまま展開するように、画面上のexpressionにbindできます。

今後、自分の課題として、

  • テンプレートによる、パーツの切り分け
  • $scopeの受け渡しの標準化
  • controlerやそれらに定義されているfunctionのスコープ

この辺まで使いこなせれば、いっぱしの、アンギュラ使いになれるのでないでしょうか

最近の興味(技術)

2013年もあとわずか
今年はいろいろありましたが、なんだかんだで楽しく過ごせました。

そして、今回の画像はうりょさんです。
さくら、ヴァイパーがスパ4のメイン使用キャラです。
大会では上位にいつもいる強プレイヤーです。
一点読みが鋭く、爆発力が魅力です。
f:id:linesnova:20131227162529j:plain
左側です

さて、本題です。

最近の興味がある技術で、unityとapache sparkの2つがあります。
unityは昔出たてのことに本だけ買うという最悪のパターンで終えてしまったので、
今回はある程度のレベルまでやって行きたいです。

unityの本を買って、一つサンプルを作ってみました。
結構簡単に作れて驚きました。
まだ、本のままただ綴っているだけなので、まず、unityの脳になれるようにしないといけないという印象です。

git cherry-pickの使いどころ

一旦格ゲーマから息抜きで
たまたまnescafeの宣伝?で見かけた山本舞香さんです。実は今日知りましたが、、
今後活躍しそうですね
f:id:linesnova:20110913015239j:plain:h200

使いどころ

例えば、「hoge」branchではなく「piyo」ブランチで作業しなければならなかったときに、普通なら、stashして移す方法や、バッチでファイル移動するとかの方法を連想しますが、cherry-pickを使うと「piyo」に「hoge」の変更を取り込むことができます。

//作業環境をpiyoにする
git checkout piyo
//hogeから取得したい最新のコミットからチェリーピックする。
git cherry-pick -n  <コミット(sha-1)>

チェリーピックコマンドに-nをつけるとコミットされないのでコミットログも奇麗にできます。
ただし、sourcetree上でcherry-pickを行うこともできるのですが、これはコミットもされてしまうので、コマンドでやったほうが安全かもですね。

参考)
SourceTreeでgit cherry-pickを使う | アライドアーキテクツ エンジニアブログ

ssl環境で、web-socket 通信

ときどさんです。
マーダフェイスです。
兵長です。
東大ゲーマとして、数々の大会で華々しい成績を残しています。
ゲームが本当に好きなんだなーと、話とか聞いているとそう思わせます。
f:id:linesnova:20131114174708j:plain:h300


例えば、clientから、ハンドシェイクする場合、こんな感じでよびますが、

var socket = io.connect("//"+location.hostname+"/xx/xx")

httpsで通信するとこんなエラーがでます。

Unexpected response code: 502 

それを回避する方法として
サーバサイドで、
こんな風に書きます。

    io = socketio.listen(app)
    io.set("log level",1)
    io.set("transports", ["xhr-polling"]) ←ここ

これによりssl通信時にもエラーが起こらないようになります。