個人的MySQLメモ
hogehogeテーブルのレコード数を知りたい時
SELECT COUNT(*) FROM hogehoge;
hogehogeテーブルのfugaの種類ごとの数を知りたい時
SELECT fuga,count(*) FROM hogehoge GROUP BY fuga;
mysqlに使用する文字コードを教える
SET NAMES UTF8;
Illegal mix of collationsエラーがでた場合これを投げればその場だけは解決したりする。
Illegal mix of collations ( ホームページ ) - ω・)。○(思いつき広場 - Yahoo!ブログ
ただし、アプリ側からSET NAMESのクエリを投げるのは禁止。
セキュリティ面うんぬんというより、ロジック的な意味で。
波ダッシュ・全角チルダ問題
JIS X 0221 規定の JIS X 0208 と JIS X 0221 の対応表では、波ダッシュは WAVE DASH (U+301C, "〜") に対応させているが、マイクロソフトは Windows の Shift_JIS と Unicode の変換テーブルを作成する際に、JIS X 0208 において 1 区 33 点に割り当てられている波ダッシュ "〜" を、Unicode における全角チルダ (FULLWIDTH TILDE, U+FF5E, "〜") に割り当てたため不整合が生じる。この結果、Mac OS 等の JIS X 0221 準拠の Shift_JIS ⇔ Unicode 変換テーブルをもつ処理系と、Windows との間で Unicode データをやり取りする場合、文字化けを起こすことになる。そこで Windows 以外の OS 上で動くアプリケーションの中には、CP932 という名前でマイクロソフト仕様の Shift_JIS コード体系を別途用意して対応しているケースが多い。この原因とされている Unicode 仕様書の例示字形の問題に関しては、波ダッシュ#Unicodeに関連する問題を参照すること。
また、マイクロソフトは同様に EM DASH (U+2014, "―") を HORIZONTAL BAR (U+2015, "―") に、DOUBLE VERTICAL LINE (U+2016, "‖") を PARALLEL TO (U+2225, "‖") に、MINUS SIGN (U+2212, "−") を FULLWIDTH HYPHEN-MINUS (U+FF0D, "−") に割り当てており、これらの変換時にも問題が起こる。Windows Vista や Microsoft Office 2007 に付属する IME パッドの文字一覧における JIS X 0213 の面区点の表示は、上記の文字についても JIS で規定されているものと同じマッピングを使用している[7]。
Unicode - Wikipedia
結論:
最近やってること
社会人となり結婚をし疾風怒濤の日々。
ちょっと振り返ってやってきたことと最近やってることのメモ。
PHPerになった
会社でPHP書いてる。
逆引きレシピやパーフェクトPHP読んで勉強してるけど、「どう書くか」ではなく「どう書いちゃいけないか」を延々学んでる気がする。言語としてどうなんだそれ。
ただまあ、初心者向けって言われるのは分かるような、わからないような。
Windowsを捨てた
あまりにも安定しないのでUbuntuに乗り換えたら快適すぎて笑った。困るのはiPhoneのOSアップデートくらい。その時だけXPを起動してる。
バージョンの違いの対応や細かいエラーもたくさんでるが、対処法がGUIかCUIかの違いで面倒ごとはwindowsの時と大差ない。
SQLの学習
アプリケーションはORマッパーで記述するが、ちょっとしたデータの確認やピンポイントで情報を視認したいときにさっとかけるよう練習中。テストをするときも、適切なデータを選ばないとテストにならないしね。
Poderosa経由でEmacsを使うためにする最低限の設定
今まで自宅鯖でファイルを編集するのにはviを使っていたのですが(デフォルトで入ってるので)、やっぱりEmacsで編集したい!
というわけで、Poderosaの設定とEmacs側の設定でこれだけは最低限しておきたいものをまとめておきました。
Poderosa側
- 「ツール」->「オプション」->「操作」から、右Altと左Altキーの用途をESC
に - BackSpaceキーで0x7Fを送信にチェック
- 追加キー定義に「Ctrl+OemQuestion=0x1F」を加える(C-/でundoが使えるようになる)
Emacs側
.emacsファイルに以下を追加
;; backspace (global-set-key "\C-h" 'delete-backward-char) ;; *.~ とかのバックアップファイルを作らない (setq make-backup-files nil) ;; .#* とかのバックアップファイルを作らない (setq auto-save-default nil) ;; confファイル編集用 (require 'generic-x) ;; カラー設定を有効化 (global-font-lock-mode t) ;; X-window のクリップボードと emacs のクリップボードの同期をとる (setq x-select-enable-clipboard t) ;; リージョン表示 (setq-default transient-mark-mode t)
参考サイト様
- http://blog.gt07.net/linux/emacs-%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E3%82%AB%E3%83%A9%E3%83%BC%E8%A1%A8%E7%A4%BA%E3%80%80centos51-%E3%81%AB%E3%81%A6.html
- [Emacs] Poderosaを使うときのEmacs用の設定覚書 – wadslog
- http://blog.livedoor.jp/morizo2000/archives/441837.html
- あーありがち - Emacs で設定ファイルとかをなんとなく見やすくする
ScalaでGoogle翻訳APIを叩く
ScalaでWebAPIを使ってみようシリーズ第二弾。
今回は遊び心あふれることで定評のあるGoogle翻訳のAPIです。
import scala.io.Source import scala.util.parsing.json.JSON val url = "https://www.googleapis.com/language/translate/v2?key=自分用のキー" val q = "&q=" + java.net.URLEncoder.encode("こんにちは", "utf-8"); val eToJ = "&source=ja&target=en" val api = url + q + eToJ val source = Source.fromURL(api, "utf-8") val str = source.getLines.mkString val some = JSON.parseFull(str) // Any型で返ってくるので、キャスト val result = some.get.asInstanceOf[Map[String, Map[String, List[Map[String, String]]]]] result("data")("translations")(0)("translatedText") source.close
解説
仕様は以下に書いてあります。
Developer's Guide (v2): Using REST - Google Translate API - Google Code
GoogleAPIはGoogleのアカウントを取得して(Gmailなどでも可)申請を出すことでりようできるようになります。
その際、自分用のキーをもらえますので、上記のソースコードに置き換えてください。
うーん、いちいちキーもらったりするのは面倒ですね。もっとお手軽なAPI探してみます。
ScalaでTwitterタイムライン検索
新しい言語の勉強を初めようと入門書を読むと文法は分かるけど、結局どう使っていいかわからない、らしい。
言われてなるほどと思ったので、入門書に載ってる(であろう)内容だけでTwitterのタイムライン検索をやってみました。
import scala.io.Source import scala.xml.XML val url = "http://search.twitter.com/search." // TwitterSearch val format = "atom" // XML形式で取得 val q = "?q=scala" // 検索キーワード"Scala" val lang = "&lang=ja" // 日本語 val rpp = "&rpp=10" // 最新10件の検索(max100) val api = url + format + q + lang + rpp val source = Source.fromURL(api, "utf-8") val xml = XML.loadString(source.getLines.mkString) // XML.save("timeline.xml", xml, "utf-8") for(elem <- (xml \\ "entry" \ "title")) { println(elem.text) } source.close
[観] Twitter API 仕様書 (勝手に日本語訳シリーズ)
こちらのページが詳しいです。検索ならOAuthでの認証も必要なので気軽に試せます。
簡単な解説
ね、簡単でしょ?
人にプログラミングを教えようとするとき、相手にとって興味を引かれる対象がバラバラなので、こうした入門書の内容だけでできるちょっと楽しいことをたくさんストックしておくのは大事かもしれないですね。