Laravel
前にメモしたリンク集。
floatingdays: 初めてのLaravel参考サイト
floatingdays: Laravelと Vue.jsのチュートリアル参考サイト
MySQL5.6以前だと出るエラーの対処方法。
他にもやり方はあるみたいだけど、ここのが公式?
Laravel 5.4: Specified key was too long error - Laravel News
テストを書くチュートリアル。
Laravel5.3以前の記事のようで、Laravel5.4からはページ遷移やページ内のテストは別途インストールが必要なLaravel Duskの管轄に変わったので、その部分は読み替えが必要。
Laravelでテストコードを書くためのチュートリアル - Qiita
Github
Githubを二要素認証にして、かつ、Githubへのpushをsshではなくhttpsでする方法。
ユーザー名とトークンの入力省略も。
https+アクセストークンを使ってGitHubのアカウントを使い分ける - Qiita
同じく入力省略について、こちらは.netrcに書く方法。
[Git][GitHub]GitHubにPushする際に認証失敗する | DevAchieve
Circle CI
DBまわりの設定。
seedはtest内でやるなら設定ファイルには要らないかも。
CircleCiでLaravelのMySQLを使ったテストを実行する - Qiita
APP_KEYをcircle.ymlに定義しないとエラーになるので書いておく。
エラーメッセージが分かりづらい → "RuntimeException: The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths."
Laravel アプリケーションを、 Circle CI 経由で AWS ElasticBeanstalk に自動デプロイ - Qiita
Circle CIで使えるPHPのバージョンの参考ページのリンクなど。
PHPプロジェクトにおけるCircle CIの設定 - Qiita
Circle CIからプロジェクトを削除せずにGithubからプロジェクトを削除すると、Circle CI側で削除できなくなる(ずっと読み込み中になる)。
対策は、Githubに同名のプロジェクトを作ればCircle CIから削除できるようになる。
相羽 大輔 (Daisuke AIBA)さんのツイート: "さっきの件、解決。CircleCIに登録したプロジェクトを削除するには「Project Settings > Stop Building on CircleCI」GitHub側で先に消すとCircleCIのプロジェクト設定が触れなくなるので注意。 #kzrb"
2017年6月8日木曜日
Laravelを Github + Circle CIで CIするまでの参考サイトまとめ
2016年10月30日日曜日
MySQLへの接続の暗号化
基本 MySQLでSSLクライアント証明書を使う - Qiita ※MySQL側のCommon Nameはサーバのホスト名にする 暗号化されていることを確認するSQLshow status like'Ssl_cipher';MySQL5.6での注意点 MySQL 5.6でSSL接続が有効にならない・クライアントからSSL接続できない。 - ah-2 WindowsのMySQL Query Browserでは、caだけでなく、下記の全てを指定しないと接続できないようだ。USE_SSL => "Yes" SSL_CA => ca.crtのファイルパス SSL_CERT => client.crtのファイルパス SSL_KEY => client.keyのファイルパスファイルパスのバックスラッシュ(¥)はバックスラッシュのままでも、スラッシュにしてもどちらでもOK。 ファイルパスのスペースが含まれていてもOK。 ca.crtは、server.crtとclient.crtの中身を合わせる必要はないようだ。 参考:MySQL :: MySQL Administrator :: 21.4.1 SSL Connections REQUIRE SSLなユーザーだと、MySQL Query Browserの上部メニューからのMySQL Administratorの起動や、逆にMySQL AdministratorからMySQL Query Browserの起動ができない。(直接起動すれば起動できる。)
2016年7月16日土曜日
Ansibleや Itamaeで LAMP環境を作る
参考サイトのメモ。
Itamaeの方がいいかな。
Ansible
Ansibleのインストールと、ごく簡単なplaybook
VagrantとAnsibleでCentOSの環境を用意してみる - yk5656 diary
LAMP環境を作成
AnsibleでとりあえずのLAMP環境してみる - yk5656 diary
PHPをインストール
Ansible でインストール (php 5.6) - Qiita
Itamae
Itamaeのインストール、ごく簡単なレシピ、リモートサーバへの適用
Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita
レシピの書き方など
Chef脱落者が、Itamaeで快適インフラ生活する話 - Qiita
itamae 入門 - Qiita
Itamaeチートシート - Qiita
vagrantとitamaeによるLAMP環境構築 - Qiita
EC2 のインスタンスを Itamae でプロビジョニングした | mizoguche.info
設定値をJSONまたはYAMLに切り出す
第3回 ノード属性で汎用的なレシピを書く:Itamaeが構成管理を仕込みます! ~新進気鋭の国産・構成管理ツール~|gihyo.jp … 技術評論社
公式ドキュメント(英語。詳細は載ってない)
Home · itamae-kitchen/itamae Wiki · GitHub
公式ドキュメントが想像よりそっけないので、詳細は他のブログ等やQiitaで調べながら...。まあシェルコマンドが使えるから汚い書き方でいいならどうにでもなるけど。
2016年1月9日土曜日
EC2の MySQLを S3にバックアップする方法(世代管理付き)
S3への送信はaws-cliが良さそう。
参考:aws-cli - AWS CLIでS3を操作する - Qiita
aws-cliはAmazon Linuxなら最初から入っているが、手元のインスタンスはconfigure等をするにはバージョンアップが必要だった。
yumでもバージョンアップできるが、今回は諸事情により依存関係のある諸々をそっとしておきたかったので、下記を参考にyumを使わずにaws-cliをバージョンアップ。
参考:AWSCLIで運用検討中の人必見! AWSCLIを使用したS3へのファイルコピー | クラウド工房 Powered by Amazon Web Services
sudo easy_install pip
sudo pip install awscli -U
IAMでS3のみに権限を絞り込んだユーザーを作り、その認証情報をconfigure。(もう少し権限を絞っても良いかも。)
aws configure↓
AWS Access Key ID [None]: (アクセスキーを入力)
AWS Secret Access Key [None]: (シークレットアクセスキーを入力)
Default region name [None]:
Default output format [None]:
世代管理はS3の機能であるバージョニングとライフサイクルを使う。
S3でバケットを作成し、バージョニングを有効化。
ライフサイクルでルールを追加。(例「以前のバージョン」を30日後に削除)
後は適当にダンプとS3へのコピーのスクリプトを作ってcronに登録する。
分かりやすいようにディレクトリを作成し、そこにスクリプトを作った。
バックアップ用スクリプト作成。
vi backup.sh↓
#!/bin/sh(パスワード直書きにしたが、きちんとやるならMySQLのパスワードは隠したい。)
echo "START " `date +'%Y/%m/%d %H:%M:%S'`
MYSQL_PWD='MySQLのパスワード' mysqldump -u MySQLのユーザー 対象DB > data.dump
aws s3 cp data.dump s3://バケット名/
echo "E N D " `date +'%Y/%m/%d %H:%M:%S'
スクリプトのファイルに実行権限を付ける。
chmod 700 backup.sh
cronに登録。
crontab -e↓
0 1 * * * cd /スクリプトのディレクトリ; ./backup.sh >> history.log
aws-cliを使うと、AWSのサービス間の通信はSSL(TLS?)で暗号化されるようだ。
参考
aws — AWS CLI 1.9.17 Command Reference
By default, the AWS CLI uses SSL when communicating with AWS services.
Amazon Web Service aws cliはデフォルトで暗号化通信されるのか? - なぜか数学者にはワイン好きが多い
S3を使わずにサーバ上で世代管理するだけなら、下記が一番分かりやすかった。
mysqldumpをcronで1日1回取得し、バックアップ用ファイルを保存する - サイト制作の豆知識
2013年11月9日土曜日
MySQLで 「ERROR 2006 (HY000) at line xxx MySQL server has gone away」
調べたことをメモしておく。
mysqldumpでエクスポートした1GB余りのデータをインポートする時に、下記エラーが発生。
ERROR 2006 (HY000) at line 351 MySQL server has gone away
対策
↓
インポート時に「MySQL server has gone away」が発生したときの対処 | 南紀熊野ウェブサービス(大阪、新宮市)
max_allowed_packet = 32M
↓
今度は下記エラーが発生。
ERROR 2013 (HY000) at line xxx: Lost connection to MySQL server during query
対策
↓
Importing 1GO SQL File => ERROR 2013 (HY000) at line 23: Lost connection to MySQL server during query - Stack Overflow
max_allowed_packet = 1100M
net_write_timeout = 300
↓
駄目。次。
ERROR 2013 (HY000): Lost connection to MySQL server during query - MySQL
innodb_force_recovery = 4
↓
下記エラー。
ERROR 1051 (42S02) at line xx: Unknown table 'xxxxx.xxxxx'
↓
これは?
ERROR 2013 (HY000): Lost connection to MySQL server during query - Dev Shed
innodb_force_recovery = 3
↓
同じエラー。innodb_force_recoveryはやめる。
↓
MySQL Lists: mysql: Re: ERROR 2013 (HY000): Lost connection to MySQL server during query
connect_timeout = 6000
単位は秒?
↓
駄目。
↓
【結論】原因は、メモリ不足だった。
2013年7月5日金曜日
MySQL 5.6を RPMからインストール
- wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.12-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ -O MySQL-client-5.6.12-1.el6.x86_64.rpm
- wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.12-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ -O MySQL-server-5.6.12-1.el6.x86_64.rpm
- wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.12-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ -O MySQL-devel-5.6.12-1.el6.x86_64.rpm
- wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.12-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ -O MySQL-shared-5.6.12-1.el6.x86_64.rpm
- yum install MySQL-*.rpm
2011年11月14日月曜日
PDOでテーブルの列名を全て取得する方法
テーブルの列名を取得するには、MySQLならDESCRIBEで簡単にできるが、PostgreSQLだとpg_attributeカタログから取得しないといけないらしい。
でもPDOを使えばMySQLでもPostgreSQLでも取得できた。
$pdo = new PDO("$driver:dbname=$db", $user, $password);
$pdoStatement = $pdo->query("SELECT * FROM $table_name LIMIT 0");
$columns = array();
for ($i = 0; $i < $pdoStatement->columnCount(); $i++) {
$meta = $pdoStatement->getColumnMeta($i);
$columns[] = $meta['name'];
}
var_dump($columns);
もしテーブルに1行以上データがあることが保証されているなら普通に1行SELECTして連想配列の列名見れば済む話だが、データなしでも動くようにしたらこうなった。
ただし、PDOStatement->getColumnMeta()のマニュアルを見ると、
この関数は、 実験的 なものです。この関数の動作・ 名前・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP のリリースにおいて変更される可能性があります。 この関数は自己責任で使用してください。
PDO ドライバの全てが PDOStatement::getColumnMeta(). をサポートしているわけではありません。と書いてあり、PHPやDBのバージョンによっては上手く動かないかもしれないが、とりあえず手元の環境では動いた。
これでPHPでO/R Mapperを作りたい人も安心だ。
2011年10月3日月曜日
MySQLの dumpと restore
文字コード設定がされていないサーバからダンプする時に文字化けすることの対策のメモ。
dump
mysqldump -u user_name -p --compact --default-character-set=binary db_name > dump.sql
restore
DB(Schema)を作ってから、
sed 's/latin1/utf8/g' dump.sql > dump_utf8.sql
mysql -u user_name -p db_name < dump_utf8.sql
バイナリで出して文字コードの記述を置換してから取り込む。
参考
- ヒビノアワ: UTF-8のデータベースをmysqldumpすると文字化けする件
- mysqldump で文字化け (マルッと!)
- 「mysqldump」を使った「MySQL」のバックアップとリストア – FlatLabs
2011年3月25日金曜日
プログラム言語とフレームワークのオンラインマニュアル29選
Webで公開されている、プログラム言語・フレームワーク・DBのマニュアル(リファレンス)サイトへのリンクをまとめてみた。
選んだ基準は、できるだけ日本語で、なるべく分かりやすいこと。それを満たすなら公式リファレンスより非公式のものを優先している。
- JavaScript
- JavaScript
- jQuery
- jQuery UI
- YUI
- YUI Library (英語、公式)
- HTML、CSS
- PHP
- PHP
- Zend Framework
- PEAR
- Manual :: PEAR Manual (日本語の部分もあるが大部分は英語、またはソースを直読み。公式)
- CakePHP
- マニュアル :: 1.3コレクション (公式)
- Smarty
- Smarty 3:Smarty3 マニュアル | Smarty (公式)
- Smarty 2:Smarty マニュアル | Smarty (公式)
- Ruby
- Ruby
- Ruby on Rails
- Rails 3:Ruby on Rails Documentation (英語、公式)
- Rails 2:Ruby on Rails Documentation (英語、公式)
- Python
- Python
- Python 3:Overview — Python v3.1.3 documentation (英語、公式)
- Python 2:概要 — Python documentation (公式の和訳)
- Django
- Django 1.3:Django | Django documentation | Django documentation (英語、公式)
- Django 1.2:Django | Django documentation | Django documentation (英語、公式)
- Django 1.1:Django | Django documentation | Django documentation (英語、公式)
- Django 1.0:Django ドキュメント — Django v1.0 documentation (公式の和訳)
- Perl
- perldoc.jp (公式の和訳)
- Java
- Objective-C
- MySQL
- MySQL 5.5:MySQL :: MySQL 5.5 Reference Manual (英語、公式)
- MySQL 5.1:MySQL :: MySQL 5.1 リファレンスマニュアル (日本語だが一部は英語、公式)
- PostgreSQL
- PostgreSQL 9.0:PostgreSQL 9.0.3文書 (公式の和訳)
- バージョン別のリンク:PostgreSQL日本語ドキュメント(公式の和訳)
JavaScriptのマニュアルは他にも色々あり、使う人のレベルや用途によってどれが使いやすいかが変わってくると思うが、昔大変参考にさせて頂いた杜甫々版を挙げておいた。
Python、Perl、Objective-Cについては公式/準公式のリンクを書いたが、有志によるマニュアルでもっと良いものがあるのかもしれない。(これらの言語はあまり使わないので知らない。)
2011年3月18日金曜日
AWS CloudFormationで PHP Hello World Applicationを作成してみた
AWS(Amazon Web Services)のCloudFormationの「PHP Hello World Application」に関する情報があまりないので試してみた。
まずはAWS Management Consoleから「PHP Hello World Application + SSH enabled」のstackを作成。
場所はAsia/Pacific 東京リージョンを選択できた。
インスタンスタイプはMicroインスタンス、OperatorEmailには自分のメールアドレスを記入した。
しばらくすると、こんなのが作成された。
- S3
- 空のバケットが作成された(バックアップ用?)
- EC2
- Root Device Typeがebsのインスタンスが1つ作成された
- EBSのCapacityは8GiB
- Security Groupが1つ作成された
- SSHとHTTP(ポート番号は8888)のポートで、ともにIPアドレス制限無し
- Load Balancerが起動した
- 80番ポートを待ち受けてインスタンスの8888番ポートに向ける
- Elastic IPは作成されなかった
- CloudWatch
- Alarmが3つ作成された
- RequestLatencyAlarmHigh
- CPUAlarmHigh
- TooManyUnhealthyHostsAlarm
- 閾値に達したら登録したメールアドレスにメールで知らせてくれるようだ
- CloudFormation
- stackが1つ作成された(そりゃそうだ)
- RDS
- DB Instanceが1つ作成された
- DB Engine Versionは5.1.50
- DB Instance Classはdb.m1.small
- DB Storageは5GiB
- Backup Windowは15:00~15:30(日本時間?)
- Maintenance Windowは日曜14:00~14:30(これも日本時間?)
- DB Security Groupが1つ作成された
- 上記のEC2 Security Groupが適用されている
- DB Parameter Groupのcharacter_set関連は「engine-default」になっているが、UTF-8使えるのかな?
- SNS
- CloudWatchのメール通知用のTopicが1つ作成された
EC2のLoadBalancerのドメインにHTTPでアクセスすると、Wellcomeメッセージとともにphpinfoが表示された。
phpinfoによるとバージョンは下記の通り。
- Apache : 2.2.16
- PHP : 5.3.3
SSHでアクセス(SSHのログインユーザーはrootでなく"ec2-user"なので注意。"ec2-user"はsudoができる)してみると、/var/www/html の中には index.php しかなかった。
ユーザー"ec2-user"のviはPHPのソースがハイライトされて見やすい。(少し目がチカチカするが。)
PHP拡張については主なものは入っているが、mbstringが入っていない。
yumで入れたら普通にインストールできた。
sudo yum install php-mbstring
mbstringを有効にするためにApacheを再起動。
すると、アクセスできなくなった。EC2のLoadBalancerからインスタンスが外れている。
SNSからのアラートメールもいくつも送られてきてる。
調べてみると、httpd.confでポート番号が80になっていた。
8888に変更して再起動。
これでアクセスできるようになった。mbstringも使えるようになった。
使い終わったら、AWS Management ConsoleでCloudFormationのstackを削除。
するとCloudFormationが作った一連のものをきれいに削除してくれた。
例外はS3で、S3だけはバケットが残っていた。
あとこれは今回の調査に直接関係ないが、AWS Management ConsoleのS3とEC2が重くなった気がする。(この前の改善の影響?)
結論
ささっとPHP実行環境を作りたいなら、これもありかもしれないと思った。
RDSを使いたいかどうかは状況によるけど、CloudWatchとかSNSの設定が楽なのは便利そう。
2010年10月26日火曜日
ファイル1つだけで出来ている 便利なPHP製ツールいろいろ
PHPライブラリは新時代に入った。定番だったphpMyAdminやPEAR::Mailはもう古い。最近は1ファイル配置するだけで簡単に使える便利なツールが増えてきた。
例えばこんなの。
- DB管理: Adminer
- phpMyAdminの代替として。
- バージョン3からは、PostgreSQL等も扱えるようになり日本語訳もされたが、(少なくともしばらくは)MySQL用に英語メニューで使うのが無難?
- 参考: floatingdays: Webブラウザで DBを参照・更新・管理できるツールいろいろ
- テンプレートエンジン: Twango
- SmartyやTwigの代替として。
- 1ファイルというか1関数。
- Django派に優しい。
- RSSフィード生成: FeedCreator
- これは定番。DokuWikiでも内部的に使われている。
- 参考
- Mail送信: Qdmail
- mb_send_mail()やPEAR::Mailの代替として。
- HTTP通信: Snoopy
- PEAR::HTTP_RequestやHTTP_Clientの代替として。
- htmlSQLも合わせて使うと便利。(参考: floatingdays: htmlSQLの基本的な使い方)
- 名前とかAAとか大丈夫なのかな。
次は1ファイルのフレームワークだね。(Google Code上にはもうたくさん公開されてるけど...)
あるいは1ファイルのブログシステムやWikiか?
2010年6月14日月曜日
システム開発で使うオンラインの日本語マニュアル
- PHP
- PHP: PHP マニュアル - Manual (本家)
- PHP マニュアル - PHP 5.3 日本語マニュアル (見やすい、Googleカスタム検索あり)
- Smarty
- Smarty (本家)
- CakePHP
- マニュアル :: 1.3 Collection :: The Cookbook (本家、バージョンには注意)
- Ruby
- Rubyリファレンスマニュアル (本家)
- 逆引きRuby (こっちの方が使いやすいことが多い気がする)
- MySQL
- MySQL :: MySQL 5.1 リファレンスマニュアル (本家、バージョンには注意)
- 5.4と5.5はまだ日本語は無いみたい
- PostgreSQL
- PostgreSQL 8.4.4文書 (by ユーザー会)
- PostgreSQL 8.4.4文書 (マニュアル検索が便利そう)
- Apache
- Apache HTTP サーバ バージョン 2.2 ドキュメント - Apache HTTP サーバ (本家、Google検索窓あり)
意外とマニュアル内検索が無かったり、あっても検索しづらかったりすることが少なくない。
また、普通にGoogle検索から探そうとすると古いマニュアルばかりヒットすることも(Postgresとか)。
素直に英語のマニュアルで調べればいいんだろうけど...
2010年5月28日金曜日
SQLの集計関数で NULLを含む列を集計する場合の注意点
MySQLとPostgreSQLの話。他のRDBMSは試してない。
SQLでNULLを含む列を集計する場合、NULLの行は無視される。
SELECT(PostgreSQL 8.4とMySQL 5.1で確認。)
SUM(t.v) -- => 15
, MIN(t.v) -- => 0
, MAX(t.v) -- => 10
, COUNT(t.v) -- => 3 (NULLの行も入れれば4行)
, AVG(t.v) -- => 5.0000 (NULLの行をゼロと考えれば3.75)
FROM (
SELECT NULL v
UNION
SELECT 0 v
UNION
SELECT 5 v
UNION
SELECT 10 v
) t
SUM()やMIN()、MAX()では問題ないが、COUNT()やAVG()ではNULLの行の分も含めて計算したい場合に困る。
そういう場合、COALESCE()でNULLをゼロに変換するとよい。
SELECT
COUNT(COALESCE(t.v, 0)) -- => 4
, AVG(COALESCE(t.v, 0)) -- => 3.7500
FROM (
SELECT NULL v
UNION
SELECT 0 v
UNION
SELECT 5 v
UNION
SELECT 10 v
) t
MySQLの場合はIFNULL()でもOK。
参考
PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: Conditional Expressions
MySQL :: MySQL 5.5 Reference Manual :: 11.2.3 Comparison Functions and Operators
2010年4月5日月曜日
サーバサイドJavaScript用ライブラリ
Webサーバ等のサーバサイドの処理をJavaScriptでやるならnode.js
- node.js
- GoogleのV8をエンジンとして使っている
- 参考:MOONGIFT: » v8エンジンによるJavaScriptのWebサーバ「node.js」:オープンソースを毎日紹介
- node-mysql
- node.js用のMySQLドライバ
- 作ったのはよく見ればmasuidriveさん(たぶん)
- 参考:MOONGIFT: » node.js用MySQLドライバ「node-mysql」:オープンソースを毎日紹介
- Express
- node.js用の簡易Webフレームワーク
- 参考:MOONGIFT: » node.jsを使ったSinatra風Webフレームワーク「Express」:オープンソースを毎日紹介
Apacheのモジュールとして使うならv8cgi
- v8cgi
- これも(その名の通り)V8を使っている
- MySQL接続、テンプレート、GDなどいろいろ揃っている
- 作者はWWW SQL Designerなどを作ったondrej.zaraさん
- Windows版も(一応)用意されている(現在はproblemeticだそうだ)
2010年3月20日土曜日
Webブラウザで DBを参照・更新・管理できるツールいろいろ
クラウドの時代ですから。
個人的にお薦めなのはAdminer。一般受けしそうなのはSQL Buddy。
MySQL用(上の方が使いやすい)
- Adminer
- PHP1ファイルのみ(無理に1ファイルにすることないと思うけど)。設置すれば設定不要ですぐ使える
- シンプルだが普段使う機能は一通り揃ってる。シンプルだからこそ使いやすい
- SQLをガリガリ書きたい人にお薦め
- データのclone(コピー)ができるのが何気に便利
- 見た目は少々無骨。CSSファイルをダウンロードすればSkinを変えられる
- 昔はphpMinAdminという名前だったが改名した
- 通常版より"English only"の方が少しファイルサイズが小さい。そんなに変わらないか
- ライセンスはApache License
- Adminer Editor
- Adminerの簡易版。データの参照・登録・更新・削除だけしかできない
- 別途Extensionsを用意しないと動かないようだ
- データをいじるだけならこれでいいかも。逆に、データをいじる以上のこと(テーブルの変更とか、DBのDROPとか)をさせたくないユーザー向けに渡すのにちょうどいい(それを意識して作ったんだと思う)
- SQL Buddy
- 見た目は一番きれい。スッキリしている。Ajaxでサクサク動く
- 日本語にも対応している
- パッケージ更新のお知らせ機能があるみたい
- 複数の列を一気に編集(更新)できる(スプレッドシート形式ではないが)
- データを登録する際にDatetime型の列に現在日時を自動でセットしてくれない(下記のAdminerやMySQL Quick Adminはやってくれる)
- ライセンスはMITライセンス
- 参考
- phpMyAdmin
- 定番だが、使いづらい。いろいろできるようにした結果、あまり使わない機能の中によく使う機能が埋もれてしまっている
- yumでもインストールできる
- ライセンスはGPL v2
- 参考:floatingdays: CentOSに phpMyAdminをインストール
- MySQL Quick Admin
- 見た目はわりと良い。Ajaxでサクサク動く
- 最初にconfig.phpを編集する必要があるみたい(ログイン機能がうまく動かなかったので)
- SELECTのSQLを自分で書けない?実用するには辛いかも
- 最後のUpdateは2007年6月。PHP5.3で動かすとDeprecatedが出る
- ライセンスは明記されていないが、フォーラムにこんなやり取りが書いてあった
- PHP Mini Admin for MySQL
- PHP1ファイルのみ
- Screenshotsを見る限りAdminerの方が良さそうなので、試していない
- 参 考:MySQLのウェブ管理ツール比較 - ♪8th Note♪
- Webadmin-mysql
- あまり使われていない?
PostgreSQL用
- phpPgAdmin
- 名前はphpMyAdminと似てるが、UIは洗練されていて使いやすそう
- ライセンスはGPL
- 参考:CentOSに phpPgAdminをインストール
これらのツールのようにPHPでつくっちゃえば、DB側がバージョンアップしてもphp-pdo/php-mysqlが対応してくれるので、ツール側での対応は特にいらないというのはクライアントアプリのツールには無い利点だと気付いた。
2009年8月12日水曜日
Railsの migration
メモ。
概要:Ruby on Rails : migration 機能でデータベーススキーマを変更する - WebOS Goodies
詳細:Ruby on Rails : migration 機能リファレンス - WebOS Goodies
データ型について等:FFTT : RailsのMigration
MySQLの数値型の:limitについて、上記参考サイトでは桁数を指定するように書いてあるが、手元のRails2.3.3ではバイト数を指定するようだ。
なのでbigintの場合は :limit => 8 にする。
参考:MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.2 数値タイプ
Windows + Ruby 1.8.7 + Rails 2.3.3 + MySQL 5.4.1 環境構築メモ
備忘録として。
前提として、以前Railsを試したことがあるので、下記は事前にインストール済みだった。
- Ruby 1.8.6(One-Click Installer版)
- Ruby Gems
- MySQL 5.4.1(Beta)
やったことの手順
- Gemsでインストール済みのgemを全てupdate。Railsが2.3.3になった
- Release - Ruby-mswin32 (ja)からWindows用の1.8.7のZIPをダウンロードし解凍、既存のRuby(1.8.6)のフォルダに上書きコピー
(1.8.6のままではエラーが起きる) - このままではdb:migrateする時に下記のエラーが出る。(MySQLの5.1以降に対応していないらしい)
rake aborted!
そこで、PHP5.2のフォルダからlibmysql.dllをコピーしてきてRubyのbinフォルダに入れると解消した
Mysql::Error: Commands out of sync; you can't run this command now: SHOW TABLES
(参考:Aptana Forums • View topic - Fixed: Commands out of sync)
2009年2月11日水曜日
MySQLの TEXT型の列に INDEXを付ける
MySQLでTEXT型の列に普通にINDEXを付けようとするとエラーになる。
MySQL Error Number 1170
BLOB/TEXT column 'desc' used in key specification without a key length
が、長さを指定してINDEXを付ければOK。
ALTER TABLE `test`.`members` ADD INDEX `Index_2`(`desc`(100));
長さは255まで。それ以上だとWarningが出て、255になった。
Warning: Specified key was too long; max key length is 767 bytes
複合インデックスに絡めて定義はできないという話もあるが、手元のMySQL5.1では複合INDEXでも問題なくできた。
MySQLの FULLTEXTインデックスと MATCH AGAINSTによる検索
FLLTEXTインデックスについて
- MyISAMのみ
- 設定ファイルで検索対象の最低文字数を設定する(デフォルトは4)
[mysqld]
ft_min_word_len=1 - TEXT型の列などにスペース区切り等で区切ったデータを入れ、FULLTEXTインデックスを付与する
- 該当データが全体の50%を超えるような単語は検索対象から除外されるので注意
- 日本語でもOK
SELECT * FROM members
WHERE MATCH keywords AGAINST('メロン');
さらに、マッチはしないが関連しそうなデータも含める「クエリ拡張」というオプションもある。
SELECT * FROM members「注記 :ブラインド クエリ拡張は関連性のない雑多な資料も戻しがちなため、検索フレーズが短い時にだけ使用することをお薦めします」そうだが。
WHERE MATCH keywords AGAINST('ソーダ' WITH QUERY EXPANSION);
参考:
MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.7 全文検索関数
MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.7.2 クエリ拡張を伴う全文検索
[ヅラド] MySQL を使った全文検索 (Full-Text Search)
MySQL FULLTEXT + Ngram : LIKE検索より数十倍高速な、お手軽 日本語全文検索 について|blog|たたみラボ
MySQLの query_cache_sizeのチューニング
query_cache_sizeに値を指定することで、MySQLのクエリーをキャッシュさせレスポンスを向上させる。
デフォルトはゼロ。(キャッシュしない。)
現在の状態は下記SQLで取得できる。
SHOW STATUS LIKE 'Qcache_%';
- Qcache_free_memory・・・キャッシュの空き容量。足りなければ増やす
- Qcache_lowmem_prunes・・・キャッシュの容量不足で削除されたクエリーの数。これが多い場合もキャッシュサイズを増やす
- Qcache_free_blocks・・・断片化したキャッシュのブロック。これが多い場合は下記SQLで断片化を解消する(1になる)。
FLUSH QUERY CACHE;
キャッシュに関する状態は、MySQL Administratorでも見られる。
参考:
[ThinkIT] 第6回:query_cache_sizeの違いによるパフォーマンス比較 (1/3)
もろもろメモ : MySQL cache "query_cache_size" の設定
tags
- php (176)
- javascript (82)
- apache (54)
- windows (53)
- google (47)
- mysql (41)
- linux (39)
- security (39)
- css (38)
- network (37)
- api (36)
- web (35)
- ruby (34)
- install (31)
- mobile (31)
- firefox (30)
- html (27)
- ie (27)
- config (26)
- postgres (26)
- image (25)
- library (25)
- search (25)
- mail (23)
- db (22)
- feed (22)
- rails (22)
- amazon (19)
- cakephp (19)
- map (19)
- tool (19)
- url (19)
- video (19)
- service (18)
- ec2 (17)
- encoding (17)
- error (17)
- jquery (17)
- server (17)
- flash (16)
- hatena (16)
- setting (16)
- chrome (15)
- blogger (14)
- java (14)
- android (13)
- yahoo (13)
- yui (13)
- del.icio.us (12)
- extensions (12)
- http (12)
- sql (12)
- aws (11)
- compare (11)
- framework (11)
- microsoft (10)
- centos (9)
- date (9)
- free (9)
- google-maps (9)
- php5.3 (9)
- rss (9)
- safari (9)
- yum (9)
- https (8)
- office (8)
- python (8)
- smart-phone (8)
- trouble (8)
- version-up (8)
- web-browser (8)
- adsense (7)
- calendar (7)
- cdn (7)
- jquery-ui (7)
- rakuten (7)
- twitter (7)
- android-apps (6)
- backup (6)
- command (6)
- gmail (6)
- google-app-engine (6)
- pear (6)
- reference (6)
- test (6)
- tuning (6)
- ui (6)
- validation (6)
- xmail (6)
- xml (6)
- zip (6)
- amazon-linux (5)
- atom (5)
- excel (5)
- gem (5)
- ip-adress (5)
- opera (5)
- systemdesign (5)
- titanium (5)
- array (4)
- bookmarklet (4)
- bootstrap (4)
- cache (4)
- color (4)
- cron (4)
- crypt (4)
- customize-google (4)
- feedcreator (4)
- flickr (4)
- font (4)
- form (4)
- function (4)
- gettext (4)
- google-analytics (4)
- google-code (4)
- greasemonkey (4)
- helper (4)
- html5 (4)
- iphone (4)
- jquery-mobile (4)
- laravel (4)
- mac (4)
- password (4)
- perl (4)
- regexp (4)
- rspec (4)
- sbm (4)
- sitemaps (4)
- subversion (4)
- template (4)
- tls (4)
- trac (4)
- utf-8 (4)
- version (4)
- web-service (4)
- active-record (3)
- analytics (3)
- au (3)
- cloud (3)
- date-picker (3)
- dns (3)
- docomo (3)
- domain (3)
- firewall (3)
- ftp (3)
- git (3)
- google-calendar (3)
- google-docs (3)
- hardware (3)
- hatena-bookmark (3)
- hosting (3)
- i18n (3)
- ie8 (3)
- itamae (3)
- json (3)
- log (3)
- openssl (3)
- pdo (3)
- photo (3)
- png (3)
- post (3)
- postgis (3)
- price (3)
- prototype.js (3)
- s3 (3)
- selinux (3)
- seo (3)
- shift-jis (3)
- smarty (3)
- ssh (3)
- ssl (3)
- strage (3)
- string (3)
- tab (3)
- tortoise-git (3)
- url-shortener (3)
- user-agent (3)
- windows-update (3)
- xhtml (3)
- zend-framework (3)
- about-config (2)
- active-resource (2)
- aide (2)
- android-studio (2)
- anti-virus (2)
- auth (2)
- bing (2)
- bitly (2)
- blog (2)
- books (2)
- bootstrap-cdn (2)
- bot (2)
- browser (2)
- bug (2)
- capture (2)
- cdnjs (2)
- centos7 (2)
- cert (2)
- certbot (2)
- class (2)
- convert (2)
- cookie (2)
- csv (2)
- datetime (2)
- debug (2)
- django (2)
- dojo (2)
- download (2)
- dropbox (2)
- ebs (2)
- eclipse (2)
- editor (2)
- feedly (2)
- google-reader (2)
- google-search (2)
- grids (2)
- hash (2)
- highslide (2)
- ipad (2)
- japanese (2)
- jpeg (2)
- language (2)
- lets-encrypt (2)
- link (2)
- mcrypt (2)
- memory (2)
- mod-security (2)
- moible (2)
- mouse (2)
- music (2)
- node-js (2)
- oauth (2)
- paas (2)
- pdf (2)
- permission (2)
- pocket (2)
- rds (2)
- referer (2)
- rest (2)
- rewrite (2)
- rfc (2)
- sample (2)
- scraping (2)
- session (2)
- simplexml (2)
- sjis (2)
- smtp (2)
- snoopy (2)
- softbank (2)
- tag-cloud (2)
- task (2)
- tips (2)
- todo (2)
- tomcat (2)
- travel (2)
- update (2)
- upload (2)
- v8 (2)
- v8cgi (2)
- vmware (2)
- vue-js (2)
- webBrowser (2)
- wordpress (2)
- youtube (2)
- ab (1)
- actionscript (1)
- addon (1)
- adminer (1)
- aes (1)
- affiliate (1)
- ajax (1)
- analyze (1)
- android-market (1)
- apple (1)
- aurora (1)
- avast (1)
- bake (1)
- behavior (1)
- blowfish (1)
- bookmarks (1)
- bootswatch (1)
- bread-crumb (1)
- button (1)
- c (1)
- cakphp (1)
- camel-case (1)
- casio (1)
- chalice (1)
- circle-ci (1)
- clam-av (1)
- cloudformation (1)
- cloudfrare (1)
- cloudn (1)
- cloudwatch (1)
- cman (1)
- codec (1)
- codeigniter (1)
- counter (1)
- crawler (1)
- cucumber (1)
- dao (1)
- database (1)
- datastore (1)
- delete (1)
- dena (1)
- deploy (1)
- deprecated (1)
- design (1)
- django2 (1)
- dokuwiki (1)
- dump (1)
- ecoder (1)
- emacs (1)
- encrypt (1)
- english (1)
- erd (1)
- ethna (1)
- exception (1)
- f-route (1)
- file (1)
- filter (1)
- firebug (1)
- float (1)
- flv (1)
- font-awesome (1)
- font-family (1)
- fontawesome (1)
- format (1)
- formula (1)
- fulephp (1)
- gd (1)
- gdmail (1)
- gears (1)
- geo (1)
- geo-coding (1)
- geolocation-api (1)
- get (1)
- gis (1)
- github (1)
- go-lang (1)
- golang (1)
- goo (1)
- google-apps (1)
- google-checkout (1)
- google-labs (1)
- google-libraries-api (1)
- google-play (1)
- google-plus (1)
- google-trends (1)
- gpl (1)
- gps (1)
- gradle (1)
- grep (1)
- grid.css (1)
- grids.css (1)
- group-ware (1)
- hmac (1)
- hotel (1)
- html-escape (1)
- htmlsql (1)
- http-status (1)
- httpd (1)
- iaas (1)
- ids (1)
- ie6 (1)
- iftt (1)
- igoogle (1)
- iis (1)
- import (1)
- include (1)
- index (1)
- infra (1)
- innodb (1)
- insert (1)
- integer (1)
- ios (1)
- ipad-mini (1)
- ipod (1)
- itunes (1)
- j-phone (1)
- japan (1)
- jetty (1)
- jmeter (1)
- jruby (1)
- jsdelivr (1)
- kohana (1)
- labs (1)
- lambda (1)
- lamp (1)
- layout (1)
- lift (1)
- livedoor (1)
- load-balance (1)
- locale (1)
- logo (1)
- logwatch (1)
- lsync (1)
- magic-method (1)
- maintenance (1)
- math (1)
- maven (1)
- mbstring (1)
- md5 (1)
- menu (1)
- merb (1)
- migration (1)
- mime-type (1)
- minify (1)
- mock (1)
- mod-pagespeed (1)
- mod_cache (1)
- modernizr (1)
- module (1)
- monit (1)
- mootools (1)
- myisam (1)
- myrt-mobile (1)
- mysqldump (1)
- nec (1)
- neta (1)
- nginx (1)
- normalize (1)
- null (1)
- objective-c (1)
- on2 (1)
- onload (1)
- oo (1)
- openid (1)
- or-mapper (1)
- passenger (1)
- pc (1)
- pecl (1)
- photoshop (1)
- phpexcel (1)
- phpmailer (1)
- pipes (1)
- plugin (1)
- podcast (1)
- poderosa (1)
- port (1)
- postal (1)
- postfix (1)
- powerset (1)
- print (1)
- pure (1)
- python3 (1)
- qdmail (1)
- qr-code (1)
- query-string (1)
- quota (1)
- radio (1)
- rating (1)
- rbenv (1)
- reader (1)
- realtime-search (1)
- redhat (1)
- redmine (1)
- remi (1)
- replace (1)
- replication (1)
- request (1)
- require (1)
- reserve (1)
- reset (1)
- restore (1)
- return (1)
- reverse-proxy (1)
- rgb (1)
- rijndael (1)
- rkhunter (1)
- robots.txt (1)
- rootkit (1)
- round (1)
- rpm (1)
- rpmforge (1)
- rt (1)
- saas (1)
- safri (1)
- samba (1)
- scala (1)
- schedule (1)
- screen-shot (1)
- script.aculo.us (1)
- search-wiki (1)
- seasar (1)
- serverless (1)
- sever-side (1)
- sha-2 (1)
- sha-256 (1)
- sha-512 (1)
- share (1)
- shell (1)
- shopping (1)
- simpletest (1)
- simulator (1)
- sinatra (1)
- skype (1)
- sns (1)
- sort (1)
- sqlite (1)
- struts (1)
- sum (1)
- symantec (1)
- symfony (1)
- table (1)
- tag (1)
- tiips (1)
- timezone (1)
- title (1)
- toolbar (1)
- topic-path (1)
- tripwire (1)
- twango (1)
- uninstall (1)
- unit-test (1)
- url-encode (1)
- user-script (1)
- vacuum (1)
- virtual (1)
- voderfone (1)
- web-flavor (1)
- web-fonts (1)
- webdav (1)
- widjet (1)
- willcom (1)
- windows-10 (1)
- windows-7 (1)
- word (1)
- xen (1)
- xinetd (1)
- xmlrpc (1)
- xpath (1)
- xss (1)
- yaml (1)
- yii (1)
- zend (1)