2015年12月19日土曜日

pyvenv でのプロジェクトディレクトリの作り方

pyvenv で作られるディレクトリをgitignore に追加しようと思って、検索してたらいいエントリがあったのでメモ。

プロジェクト用ディレクトリをprj01 とする
mkdir prj01
cd prj01
pyvenv .   <- ダメ
pyvenv venv <- OK (venv以下にpython環境を作る)

venv の様な名でディレクトリを作ってその中に閉じ込めておく。いわれてみれば確かに!
"pyvent venv"だと、別のライブラリ環境を作りたいときに簡単に試せる。
たとえば "pyvenv venv02"とか。
(いらなくなったら venv02ディレクトリを消せばいいだけ)
pyvenv . だと、独立しいたプロジェクト環境を作れるので50点。
pyvenv venv だと、独立したライブラリ環境を作れるので100点。
といったところかな?

prj01
└── venv
    ├── bin
    ├── include
    ├── lib
    ├── lib64 -> lib
    └── pyvenv.cfg
└── venv02
└── venv03
 .....

ディスクサイズが気になるので gitignore にvenv を追加しておく
必要なライブラリは requirements.txt へ。
(pip freeze > requirements.txt)

python のバージョン縛りの方法があるのか不明。。。

The Right Way to Use Virtual Environments
https://medium.com/@jtpaasch/the-right-way-to-use-virtual-environments-1bc255a0cba7#.9zwhannoz

あと、近いうちに pyvenv は venvに置き換えられるようです。
python -m venv

2015年11月8日日曜日

2015年10月11日日曜日

angular.js の勉強

急きょ(でもないんだけど) Angular (ver1.2)で開発します。しかもcoffeescript で。
どちらも、2年後にはどうなっているのか。。。

AngularJS TIPS
http://www.buildinsider.net/web/angularjstips
tips というより、入門用のチュートリアル。山田 祥寛さんの記事なのでわかりやすい。

AngularJS 1.2 (日本語訳)
http://js.studio-kingdom.com/angularjs/guide
必読

A bunch of links to blog posts, articles, videos, etc for learning AngularJS
https://github.com/jmcunningham/AngularJS-Learning#general-topics
これを少しずつ読んでいきます。

アドベントカレンダー 2014
http://qiita.com/advent-calendar/2014/angularjs


以下は、そのうち利用する。

The Best Javascript Data Grid
http://www.ag-grid.com/
生jsでも利用できるようです。

Learn Angular 2
http://learnangular2.com/

2015年9月21日月曜日

javascript 開発の記事

最近のjs記事

優れたWebフロントエンド開発者になるには
http://www.infoq.com/jp/news/2015/08/great-front-end-developer

フロントエンドツール調査からコミュニティの動向を知る
http://www.infoq.com/jp/news/2015/09/front-end-tooling-survey-results
Gulp ですか。。。

AngularJSモダンプラクティス
http://qiita.com/armorik83/items/5542daed0c408cb9f605


Netflix FlacorでJSONデータを取得する
http://www.infoq.com/jp/news/2015/09/falcor
ネバーエンディングストーリーです。


2015年9月5日土曜日

hp g400 のリンク


windows10 発売の在庫セールなのかわからないが、割引されていたので、買ってみた。

とってもコンパクトでいい感じなんだけど、
電源ケーブルが普通のデスクトップのものなので、かなりダサイ。
やっぱりHPだけのことはある。
コンパクトであることが売りの製品なので、魅力が半減。

CPU はi5-4590T を選択したのでかなり快適。

とりあえず、windows10のインストールCDをつくってLinux をインストールした。久しぶりのLinux 専用マシンです。
(なぜかキッチンの片隅で稼動しています)

仕様と内部の図 (PDF)
http://www.hp.com/hpinfo/globalcitizenship/environment/productdata/Countries/_MultiCountry/disassembly_deskto_201512919030980.pdf

2015年9月4日金曜日

grub2


コンソールの解像度を下げる
# vi /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
rhgb quiet をnomodesetに変更
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap nomodeset"

grub2 では以下のコマンドで config ファイルを作成
# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg


■ 参考
新搭載のGRUB 2とCentOS 7でのレスキューモード
http://thinkit.co.jp/story/2014/11/28/5408

2015年8月20日木曜日

2015年8月1日土曜日

mecab のインストール


■ Centos7, yum
mecab もyumでインストールできるようになったようなので探してみると
groongaのリポジトリ内にありました。

rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
yum install mecab mecab-devel mecab-ipadic
(最新? のversion 0.996が入る)

python用
pip3 install mecab-python3  (for python3)

こんなのも出てきた
https://github.com/buruzaemon/natto-py


■ ソースから
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
configure, make, make install

2015年7月28日火曜日

table内の順序をドラッグ&ドロップで変更できるjQuery のプラグイン


jQuery UI のsortable が bootstrap のタブと一緒に使うと、ダメになるので、
以下のプラグインを使った。

RowSorter.js
https://github.com/borayazilim/rowsorter


試してないけど、これもよさげ。
https://github.com/isocra/TableDnD
demo ページを見ただけ

2015年7月9日木曜日

spark インストール 2回目

半年サボっていた間にバージョンは1.4になっていた。

いろいろ忘れてしまったので、インストールからやり直し。
(とはいっても、Centos7 にコンパイル済みのspark を展開するだけ)
scala は半年前に入れてある。(OpenJDK1.8も)

ここから https://spark.apache.org/downloads.html
spark-1.4.0-bin-hadoop2.6.tgz
をダウンロードしてきて、展開する。
/usr/local/share/spark-1.4.0-bin-hadoop2.6
ln -s spark-1.4.0-bin-hadoop2.6 spark
としておく。

/etc/profile.d/spark.sh を作成。
export PATH=$PATH:/usr/local/share/spark/sbin:/usr/local/share/spark/bin
(とりあえずbin,sbin のパスを追加するだけ)

pyspark, spark-shell を実行すると

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 1.4.0
      /_/

が表示される。
これで満足。これで「spark 道」の8割は修めたも同然。

bin の中にはsparkR が追加されている。

2015年6月29日月曜日

kaminari のpagination (view) を javascript で表示する (ajax)



ページネーションに kaminari を使っている場合。
一部だけ ajax 経由で受け取ったjson データを表示しなければならない場合、どうしたらいいのか?

これが一番簡単だと思う。
ajax に応答するコントローラー内で
 -  view_context.paginate() を呼び出して、pagination のHTMLを作成
 -  作成したHTMLを json に埋め込んで返す
 - view内のjs は受け取ったjson 内のHTML を表示

http://pistachio0416.hatenablog.com/entry/2015/03/12/Kaminari%E3%82%92json%E3%81%A7ajax%E5%8C%96%E3%81%99%E3%82%8B

TODO:
kaminari にjavascript での表示コードが含まれているかもしれない。
(それか、GitHub で探す)

2015年4月12日日曜日

そろそろ sysctl


そろそろ sysctl

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-proc-sysctl.html

sysctlによるカーネルのチューニング
http://sourceforge.jp/magazine/08/09/12/0134255

sysctl でカーネルパラメータを変更する
http://www.usupi.org/sysad/240.html


ansible
Manage entries in sysctl.conf
http://docs.ansible.com/sysctl_module.html

Mac OS X
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/sysctl.8.html

VPC(AWS)でsysctl にはまった話
http://techblog.clara.jp/2015/01/aws-nat-instance-boot/

web でmarkdown のプレビュー


markdown のプレビュー
https://tibastral.github.io/markdownify/


2015年4月7日火曜日

link_to のラッパー


link_to の拡張

# app/helpers/application_helper.rb
def link_to(text, path, options = {}, &block)
  # do someting
  super
  # do someting
end


To extend rails' `link_to`, should I use `alias_method_chain` or mixins + inheritance?
http://stackoverflow.com/a/13566131

オリジナルのlink_to はactionview の
lib/action_view/helpers/url_helper.rb
に定義されてる。

2015年4月4日土曜日

最近のWeb Framwork @ Python

Django1.8 がリリースされた。

でなぜか、久しぶりにPython のWebフレームワークをいくつか検索してみた。
フルスタックはDjangoだけど、 相変わらず lightweight界隈は活発。

wheezy.web
https://pythonhosted.org/wheezy.web/

Falcon
http://falconframework.org/

Guava
https://github.com/StarfruitStack/guava
内部はCで書かれている

Werkzeug からの移行を考える。
Morepath: from Werkzeug to WebOb
http://blog.startifact.com/posts/morepath-from-werkzeug-to-webob.html
Werkzeug よりもWebOb, wheezy.http の方がパフォーマンスは上。
ベースとして使っているライブラリでこんなに差があると、werkzeug 使うのやめようかなと思ってしまう。


CMS だけど、これも今度使ってみる。
(DjangoをベースにしたCMS)
https://wagtail.io/

2015年2月26日木曜日

2015年2月25日水曜日

turbolinks で jquery.ready が動かない


var ready = function() {
  ...your javascript goes here...
};

$(document).ready(ready);
$(document).on('page:load', ready);  // turbolinks対応


http://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links


page:load, ready 以外にも
https://github.com/rails/turbolinks/

2015年2月21日土曜日

Passenger 5


passenger が刷新されてる?

https://www.phusionpassenger.com/
https://github.com/phusion/passenger


Passenger 5 (コードネームはラプター)

「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみた


とりあえず、standalone で動かしてみた。
(nginx は yum でインストールしたものなので、standalone しか道はない)
環境は centos7, rbenv
nginx --- passenger5 --- rails


インストール
rails のGemfile に追加# Gemfile
gem passenger, '5.0.5'

$ bundle install --path vendor/bundle

# rails のbin にpassenger コマンドを追加
# bin/passenger が作成される
bundle install --binstubs
(bin/passenger でなく、bundle exec passenger でもたぶんOKだと思う)

# 確認
$ bin/passenger start
 (デフォルトでは http://0.0.0.0:3000/ )

# nginx 経由でアクセスする。
# ドメインは raptor.local として、hosts に登録しておく。

$ vi /etc/nginx/conf.d/raptor.local.conf
server {
    listen 80;
    server_name raptor.local;

    location / {
        proxy_pass http://0.0.0.0:3000;
    }
}

# 変更を反映させる
$ systemctl reload nginx

これで、http://raptor.local/ でアクセスできる。
次に、systemd に登録してデーモン化する。

# サービス名を raptor.service としておく。
vi /etc/systemd/system/raptor.service

[Unit]
Description=Raptor (passenger5 standalone) with rails
After=syslog.target network.target nss-lookup.target

[Service]
Type=forking
User=hoge
Group=hoge
WorkingDirectory=/public/raptor
PIDFile=/public/raptor/tmp/pids/passenger.3000.pid

ExecStart=/public/raptor/bin/passenger start --daemonize
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl enable raptor
systemctl start raptor

# /etc/systemd/system/raptor.service を変更したら
$ systemctl daemon-reload


メモ、注意点、TODO
 - bin/passenger start --help でオプションの確認ができる
 -  --deamonize は必須
 - Unix domain の利用を考える (--socket オプション)
 - プロセス数の指定
 - この設定だと development でrails が動いているので変更も即座に反映してくれる。
(production 指定も調べる)



最後にrbenv について
rbenv はユーザーhoge だけに有効なので
(/home/hoge/.rbenv にインストールした)
bin/passenger の先頭を以下のように変更した。
#!/usr/bin/env ruby
  ↓
#!/home/hoge/.rbenv/versions/2.2.1/bin/ruby

/usr/local にインストールしたり、他の方法もあるのかもしれないけど、わからないので、自分(作業ユーザー) のrbenv を直接指定して動かした。

2015年2月16日月曜日

git でdiff-highlight を使いたい


centos6 にgit をソースからインストール
centos6 ではrpmパッケージのgit は1.7

$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

参考
 Gitのインストール


diff-highlight の設定

git のソースディレクトリにある
contrib/diff-highlight/diff-highlight
をコピー
/usr/local/bin へ

~/.gitconfig に追加
[pager]
    log = diff-highlight | less
    show = diff-highlight | less
    diff = diff-highlight | less

参考
Git の diff を美しく表示するために必要なたった 1 つの設定

2015年2月10日火曜日

rubocop のcopname


エラーを表示しているcop name を表示する方法

rubocop -D (D オプション)
これで、cop name も表示されるので、rubocop disable 時に迷わない

rubocop はoffence 毎にcop がいるということなのかな?

2015年2月9日月曜日

rails プロジェクトの作成メモ


環境 rails4.2

systemにrails を入れない場合
Rspec, Postgres を利用する。

プロジェクト名が projx の場合
$ mkdir projx
$ cd projx

# vender/bundle にrails を入れるため、仮のGemファイル作成
# ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] はnokogiri対策
source 'http://rubygems.org'

ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'YES'
gem 'rails'

# rails を入れる
$ bundle install --path vendor/bundle

$ bundle exec rails new . -T -d postgresql --skip-bundle --skip-sprockets
-T : テスト作成スキップ (Rspec を使う)
-d : デフォルトは sqlite (mysql, postgresql)
(rails new --help で確認)

# postgres を使う場合
# bundle installの前に以下を実行。
bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
(.bundle/config へ追加しておくほうがいいかも)

# Gemfile を編集
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'YES' 追加 (先頭)
gem 'rspec-rails'  追加
gem 'therubyracer'  追加
gem 'coffee-rails'  削除

# gemは全てプロジェクト内に入れる
bundle install --path vendor/bundle

# Rspec 初期化
bundle exec rails g rspec:install

# spring の用意
bundle exec spring binstub --all

2015年1月26日月曜日

サンプルデータ

hive, spark で使えそうなサンプルデータ

Lahman’s Baseball Database
http://seanlahman.com/baseball-archive/statistics/

The Fake Name Generator
http://www.fakenamegenerator.com/order.php


Sample Datasets from STAR Experiment
https://sdm.lbl.gov/fastbit/data/samples.html

hypertable
https://code.google.com/p/hypertable/downloads/detail?name=access.tsv.gz

2015年1月17日土曜日

scala @ centos7

これがいいのかわからないけど、とりあえずバイナリを利用する。
(たぶんこれが一番簡単だと思う)

https://sites.google.com/site/scalajp/home/installation
を参考に。

http://www.scala-lang.org/download/ から
scala-2.11.5.tgz をダウンロード。

# mv scala-2.11.5 /usr/local/share
# cd /usr/local/share
# ln -s scala-2.11.5 scala

/etc/profile.d/scala.sh を作成しておく
(自分の.bashrc に書いてもOK)
export SCALA_HOME=/usr/local/share/scala
export PATH=$PATH:$SCALA_HOME/bin
 
# source /etc/profile.d/scala.sh
# scala -version
> Scala code runner version 2.11.5 -- Copyright 2002-2013, LAMP/EPFL
 
REPLで動作確認
# scala                                                                                         
Welcome to Scala version 2.11.5 (OpenJDK 64-Bit Server VM, Java 1.7.0_75).
Type in expressions to have them evaluated.
Type :help for more information.

scala> println("Hello World")
Hello World
 
 


次はmavenで。