#事前に入れておく yum install -y git gcc openssl-devel #rbenvを拾ってくる git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # pathを通す echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >> ~/.bash_profile #上記の読み込み exec $SHELL -l #rbenvの動作確認 rbenv -v #ruby-buildの導入 git clone https://github.com/sstephenson/ruby-build.git~/.rbenv/plugins/ruby-build cd ~/.rbenv/plugins/ruby-build #install 可能リスト rbenv install --list #2.1.2のinstall rbenv install -v 2.1.2 #再読み込み rbenv rehash #設定 rbenv global 2.1.2 #確認 ruby -v
2015年1月10日土曜日
rbenvでruby2系の環境をつくる
CentOS 6系で試したメモ
2015年1月9日金曜日
Sinatraでechoサーバー
rubyが入ってるmacにて。
sinatraの仕様はこちらを参考にしました
http://qiita.com/mechamogera/items/9c620155e669b394d513
5分でできますね。(^^)
sinatraのinnstall
gem install sinatra --no-ri --no-rdoc -V
echo.rb
require 'sinatra'
get '/hoge' do
http_headers = request.env.select { |k, v| k.start_with?('HTTP_') }
p "#{http_headers}"
起動コマンド
ruby -rubygems ./echo.rb -o 127.0.0.1 -p 10000 &
動作確認
http://127.0.0.1:10000/hogeにGETでアクセス
sinatraの仕様はこちらを参考にしました
http://qiita.com/mechamogera/items/9c620155e669b394d513
5分でできますね。(^^)
2015年1月6日火曜日
Macで、apache + phpの環境をつくる
MacPortsでちょーざっくり
他必要なものがあったら入れる
(sudo port list php53-* ででてくるものとか)
phpとapacheとhandler入れる
sudo port install php53 apache2
sudo port install php53-apache2handler
他必要なものがあったら入れる
(sudo port list php53-* ででてくるものとか)
apacheにモジュール読み込ませる
cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php53.so
httpd.confに追加
#phpのtypeを追加
AddType application/x-httpd-php .php
Include conf/extra/httpd-vhosts.conf
Include conf/extra/mod_php53.conf
DirectoryIndex index.html index.php
httpd-vhosts.confに最低限の設定を
<VirtualHost *:80>
DocumentRoot "/opt/local/apache2/htdocs"
ServerName localhost
</VirtualHost>
php.iniを環境にあわせて編集
sudo ln /opt/local/bin/php53 /opt/local/bin/php
sudo cp /opt/local/etc/php53/php.ini-development /opt/local/etc/php53/php.ini
sudo vim /opt/local/etc/php53/php.ini
適当に
apache起動
sudo /opt/local/apache2/bin/apachectl start
動作確認
sudo vim /opt/local/apache2/htdocs/info.php
$ cat /opt/local/apache2/htdocs/info.php
<?php
phpinfo();
?>
ブラウザで、 http://localhost/info.php
2015年1月5日月曜日
PHPはじめてなJava屋のチートシート
コメント
- /
- /** ~ */
メソッド
- private メソッドの名前
- アンダースコアからのキャメル
- ex) _buildHoge() { }
演算子
- ::(ダブルコロン)
- static,定数,オーバーライドしたクラスのプロパティやメソッドに対してアクセス
- ->(アロー演算子)
- オブジェクトのメンバにアクセス
- ex) $this->(メソッド) // 自クラスのメソッド、変数にアクセス
- ===(厳密な比較)
- .(文字列結合)
- .= (文字列結合代入)
- $hoge = "aaa";$hoge .= "bbb!"; // $hoge は、"aaabbb" となる
モジュール
- defined()
- 指定した定数が存在しているかの確認
- ex)bool defined ( string $name )
- 定義するのは、define("A_B_C","className");
TIPS
- フィールドへのアクセス等は$this->
- private $_hoge = '';
- $this->_hoge = "aaa";
- とか
- new クラス名してないのになんか使われてるっぽい
- new ReflectionClass(クラス名)になってた
- error_log() : 標準のエラーログ関数
- ドコに吐かれるかは、php.iniで定義
参考にしてみたもの
Zend Framework PHP 標準コーディング規約
http://framework.zend.com/manual/1.12/ja/coding-standard.html
ほかGoogle先生
2014年12月10日水曜日
MacOS X LionにOpenStack Swiftのclientを入れる
だんだんLionのままにしてるの恥ずかしくなってきたけど…
// pipがなかったのでいれる $ sudo easy_install pip // swiftのclient入れる $ sudo pip install python-swiftclient // 怒られる $ swift Traceback (most recent call last): File "/usr/local/bin/swift", line 7, infrom swiftclient.shell import main File "/Library/Python/2.7/site-packages/swiftclient/__init__.py", line 20, in from .client import * File "/Library/Python/2.7/site-packages/swiftclient/client.py", line 34, in from swiftclient import version as swiftclient_version File "/Library/Python/2.7/site-packages/swiftclient/version.py", line 27, in import pbr.version ImportError: No module named pbr.version // 足りなそうなもの入れる $ sudo pip install pbr // 違う理由で怒られる $ swift --version Traceback (most recent call last): File "/usr/local/bin/swift", line 7, in from swiftclient.shell import main File "/Library/Python/2.7/site-packages/swiftclient/__init__.py", line 20, in from .client import * File "/Library/Python/2.7/site-packages/swiftclient/client.py", line 34, in from swiftclient import version as swiftclient_version File "/Library/Python/2.7/site-packages/swiftclient/version.py", line 28, in version_string = str(pbr.version.VersionInfo('python-swiftclient')) File "/Library/Python/2.7/site-packages/pbr/version.py", line 39, in __str__ return self.version_string() File "/Library/Python/2.7/site-packages/pbr/version.py", line 78, in version_string for part in self.release_string().split('.'): File "/Library/Python/2.7/site-packages/pbr/version.py", line 70, in release_string self.release = self._get_version_from_pkg_resources() File "/Library/Python/2.7/site-packages/pbr/version.py", line 62, in _get_version_from_pkg_resources return packaging.get_version(self.package) File "/Library/Python/2.7/site-packages/pbr/packaging.py", line 870, in get_version raise Exception("Versioning for this project requires either an sdist" Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. Are you sure that git is installed? // このwaringあやしい $ pip list (略) Warning: cannot find svn location for setuptools==0.6c12dev-r85381 // upgradeしてみる $ sudo pip install --upgrade setuptools // ちゃんと動いた $ swift --version swift 2.3.1
2014年11月1日土曜日
MySQLのUNIQUE KEYにおける備忘録3つ
環境はMySQL 5.x、innodbを想定している。
備忘録的に。
1. text型にはUNIQUE KEYをそのまま設定できない
※ご指摘頂きました。
blobのため、そのままでは設定できない、というのが正しいです。 代わりにvarcharでも使うことにしよう。
なお、textにインデックスを貼りたいときは、リファレンスにもある通り、こうすればOK
BLOB または TEXT カラムにインデックスを張る場合、インデックスに対して接頭辞長を指定しなければなりません。
例 : CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
接頭辞は、最大 1000 バイト長 (InnoDB テーブルに対しては 767 バイト) まで可能です。接頭辞の最大長はバイトで評価されます。
一方、CREATE TABLE ステートメント内の接頭辞長は文字数として解釈されます。マルチバイトキャラクタセットを使用するカラムに対して接頭辞長を指定するとき、このことを考慮に入れなければいけません。
4.4.2. カラムインデックス
2. keyのlengthは最大で767byteまで
たとえば、UTF-8のとき、3byteで計算すると、varchar(256)はだめで、256*3=768byteになってしまう。(だから、varchar(255)をよく見かけるんだよね)。
あと余談。これ、UTF-8が3byte計算ならいいんだけど、MySQL 6系から今UTF8mb4と呼ばれている4byteUTFが標準のUTF-8になるらしく、そうなった場合、varchar(255)でもあふれることになるんだよね。
UTF8mb4のなにが嬉しいかというと、個人的には絵文字系がそのまま扱えるのが嬉しいかなw
3. NULLはいくらでも入る
nullの定義上、すべてのnullはユニークってことらしいので、nullはいくらでも入る。
カラムにdefault nullを定義するのもOK
2014年9月9日火曜日
MySQLでERROR:1093を回避する
まー些細なことなんですけどね。
エラーになる(as tmpが意味をなしてない)
こんなエラー
リファレンスマニュアルより
http://dev.mysql.com/doc/refman/5.1/ja/subquery-errors.html
ではどうするかというと、いっこ別に fromでtmpを受け取ってあげれば実はOK
うまくいく
エラーになる(as tmpが意味をなしてない)
update hoge set code = 0 where id IN (select id from hoge as tmp where id = 1 group by id order by id) ;
こんなエラー
ERROR 1093 (HY000): You can't specify target table 'hoge' for update in FROM clausemysqlって同じテーブルに対するサブクエリからの操作ができないんですよね。
リファレンスマニュアルより
http://dev.mysql.com/doc/refman/5.1/ja/subquery-errors.html
サブクエリは、SELECT ステートメント同様 UPDATE と DELETE ステートメント内で正当なので、UPDATE ステートメント内で、割り当ての為にサブクエリを利用する事ができます。しかし、同じテーブルを(この場合、テーブル t1)サブクエリの FROM 条項と更新ターゲットの両方に対して利用する事はできません。
ではどうするかというと、いっこ別に fromでtmpを受け取ってあげれば実はOK
うまくいく
update hoge set code = 0 where id IN ( select id from (select id from hoge where id = 1 group by id order by id) as tmp ) ;
登録:
投稿 (Atom)