mysqlコマンド

ちょっと MySQL に触るようになってきたのでメモ。

取敢えずDBサーバに接続する

mysql -u <ユーザ> -h <ホスト> -p<パスワード> --ssl

データベース名を続けるとカレントデータベースを指定することも出来る。でもデータベース指定の意味は PostgreSQL とはちょっと違うようだ。指定しててもなくても、そのサーバにあるデータベースはみんな見に行ける、ポストグレスでいう schema 見たいな感じ。だからデータベースをまたがってジョインできたりもするみたい。
あと、まあ --ssl オプションはつけといた方がいいよね。

サーバに接続したらステータスとコマンドの一覧

status
help

データベース等の一覧には

SHOW DATABASES;
SHOW TABLES FROM <データベース名>
SHOW COLUMNS FROM <テーブル名>

カレントデータベースの指定があれば、<データベース名>の指定は省略していいかも。

あと、接続文字コード

EUC-JP指定なら

SET NAMES 'ujis';

あるいは「--default-character-set 」オプション

Rails勉強会@東京 第92回

久しぶりのRails勉強会@東京 第92回 - Rails勉強会@東京 | Doorkeeperです
Rails勉強会@東京公開グループ | Facebook
下記 twitter より、そして追記。(この項翌22日に書いてます)

2月21日
@hs9587
志村@hs9587
#railstokyo Rails勉強会@東京 第92回
posted at 13:11:23
2月21日
@hs9587
志村@hs9587
#railstokyo 13:55-30分 はじめてのRails 苦労話とかも、14:45-60分 Changelog、管理画面のベストプラクティス、16:00-60分 Railsアンチパターン、Rails4 アップデート、rack-attack
posted at 13:40:10

メニュー。いくつかに分かれたり分かれなかったりして 3時限。

はじめてのRails

2月21日
@hs9587
志村@hs9587
#railstokyo はじめてのRails
posted at 13:56:09
2月21日
@hs9587
志村@hs9587
#railstokyo はじめてのRails、初めの方、どちらかというと発注側の方がいらして、全然分からないので少しはわかるようになりたいという。いろいろ話をする
posted at 14:10:19

Railsから始めるので良い、それで気になったら Ruby の勉強をする。
プログラミング始まるならまず C からとか、そんなことは無い。まず Rails Ruby から始めるのでいい。

Changelog

2月21日
@hs9587
志村@hs9587
#railstokyo Changelog
posted at 14:45:36
2月21日
@hs9587
志村@hs9587
#railstokyo Changelog Rails5 のうりって何だっけ、あんまり特徴ないような
posted at 14:58:49

ActiveRecord の or()メソッドの追加は印象に残った。後で聞いたら使い方結構難しいらしい。

Rails4アップデート

2月21日
@hs9587
志村@hs9587
#railstokyo Rails4アップデート
posted at 15:56:00

粛々として 2の最後にあげ、頑張って 3.0 にしたら一気に 4.2 にいってもいいのではないかとか。3系と4系の間に凄い大きな違いはない。3.1で入った Sprockets はそれなりの相違なんだが、JavaScript も Stylesheet 既に普通に動いてる事になるんで、アセットパイプライン封印しちゃえば関係ないし。

一方、公式の見解としてはひとつひとつ上げてくようにと。APIとか一気に解消することはないので、ログを見ながら先々消えるよという警告に手当てしてけば。

文字列をバイトサイズで切り詰めるのって

Rubyで文字列をバイトサイズで切り詰めるのってどうするんだっけ。
或いは byte単位で切り出すとか、取り出すとか。

志村 on Twitter: "Rubyで文字列をバイトサイズで切り詰めるのってどうするんだっけ"
‏@hs9587
Rubyで文字列をバイトサイズで切り詰めるのってどうするんだっけ

( Φ _⊞) on Twitter: "@hs9587 byteslice"
‏@n0kada
@hs9587 byteslice

志村 on Twitter: "@n0kada それではマルチバイト文字のかけらが"
‏@hs9587
@n0kada それではマルチバイト文字のかけらが

( Φ _⊞) on Twitter: "@hs9587 scrub"
‏@n0kada
@hs9587 scrub

志村 on Twitter: "@n0kada byteslice(0,n).scrub('') でなんとかなりそう、ありがとうございます"
‏@hs9587
@n0kada byteslice(0,n).scrub('') でなんとかなりそう、ありがとうございます

1.8以前では一度 slice でサイズで切って、もう一度 slice で正規表現で文字だけ取り出す (http://weboo-returns.com/blog/substring-from-multibyte-string-in-ruby/ ほか)とかあったけど、最近の Rubyではそのマルチバイト文字のかけらのところでエラーになってしまう。
というあたり、ご教示あったように Ruby 2.1. では String#scrub class String (Ruby 2.1.0) でかけらをケアすれば良さそう。

<文字列>.byteslice(0, <バイト数>).scrub('')

PHP SESへのSMTPリレーで mail()

EC2 の AmazonLinux の PHP からメールを出す。メールは別に SES を設定してて、Verified Sender の登録は済んでいる。で、mail()関数 PHP: mail - Manual からメールが送れない、SES の SMTPサーバへは Sendmailの設定でリレーするようにしてて、コマンドラインから mailコマンドでの送信は(きちんと From: に Verified Sender をセットすれば)出来ている。
Returned mail によると「 (reason: 554 Message rejected: Email address is not verified.) 」ということだ。mail()関数ではちゃんと第4引数 additional_headers に From: の設定をしているのに。

それだけでは足りないようだ、第5引数 additional_parameters にて、sendmail の -f オプションで the envelope sender にも Verified Sender をセットしてやればよいようだ。どちらもそうなら From の値とは違っていても大丈夫だった、まあ同じにしましょう。

Redirect と ProxyPass

Apacheにて、ちょっとサイトの一部を別サーバにリダイレクトすることになって RedirectMatch の設定をしてみたんだけど、後段の逆プロクシ設定に上書きされて踏み潰されてしまうみたい。
http://www.hietavirta.net/blog/item/335 によれば ProxyPass避けすればいいそうだ。

Redirect permanent /subfolder/ /
ProxyPass /subfolder !
ProxyPass / http://localhost:8080/site/
ProxyPassReverse / http://localhost:8080/site/
ProxyPassReverseCookiePath /site /

メールで Twitter、API v1.1対応

ながながと続けているメールで Twitterメールで Twitter、「Sorry, that page does not exist」対策 (API の URL) - Rubyとか Illustratorとか SFとか折紙とかメールで Twitter、OAuth (続き) - Rubyとか Illustratorとか SFとか折紙とか
「#["errors"]」と帰ってくるようになってしまった。APIバージョン1 は完全に終わり、1.1 に移行しないといけない模様https://dev.twitter.com/docs/api/1.1

対応すべき API変更はこんな感じ

  1. friends_timeline はなくなってしまい、 home_timeline を使う
  2. mentions ではなく mentions_timeline を使う

ということで

  1. Path は /1.1/statuses/
  2. Commandsリストから friends_timeline を削除、 home_timeline mentions_timeline を追加
  3. friends_timeline(lines)メソッドは home_timeline(lines) に改名して書き直し
    1. timeline はそのエイリアス
  4. mentions(lines)メソッドは mentions_timeline(lines) に改名して書き直し
    1. mentions はそのエイリアス

PHPセッションと ElastiCache

開催予定のイベント | JAWS-UG(AWS Users Group – Japan)JAWS-UGさいたま支部第1回勉強会 : ATND 行ってきました。

そのときの発表資料はこちらです

おまけ、ElastiCache(memcashed)の値の確認 ElastiCache でのアイテムサイズ - Rubyとか Illustratorとか SFとか折紙とか