2012年7月28日土曜日

emacsの設定をOSによって変える

emacsの設定ファイルよみこみをOSによって変えたいときがある。そういうときはsystem-configurationをみて読込先のファイルを変えるといい。
.emacs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;load-path設定;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;~/.emacs.d/以下のディレクトリをすべてload-pathに追加;;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path "~/.emacs.d")
(require 'cl)
(loop for f in (directory-files "~/.emacs.d" t)
      when (and (file-directory-p f)
                (not (member (file-name-nondirectory f) '("." ".."))))
      do (add-to-list 'load-path f))

;; プラットフォームを判定して分岐する
(cond
 ((string-match "apple-darwin" system-configuration)
  (load "~/.emacs.d/etc/cocoa.el")
  )
 ((string-match "linux" system-configuration)
  (load "~/.emacs.d/etc/linux.el")
  )
 ((string-match "freebsd" system-configuration)
  (load "~/.emacs.d/etc/freebsd.el")
  )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;基本設定;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-key global-map (kbd "C-h") 'delete-backward-char) ; 削除
(define-key global-map (kbd "M-?") 'help-for-help) ; ヘルプ
(define-key global-map (kbd "C-z") 'undo) ; undo
(define-key global-map (kbd "C-c i") 'indent-region) ; インデント
(define-key global-map (kbd "C-c C-i") 'hippie-expand) ; 補完
(define-key global-map (kbd "C-c ;") 'comment-dwim) ; コメントアウト
(define-key global-map (kbd "C-x C-o") 'toggle-input-method) ; 日本語入力切替
(define-key global-map (kbd "C-o") 'other-window) ; 日本語入力切替
(define-key global-map (kbd "M-C-g") 'grep) ; grep
(global-set-key "\M-n" 'find-file-other-frame);;M-nで別窓でファイルを開く
(global-set-key "\C-m" 'newline-and-indent);; 改行時にインデント

(setq text-mode-hook 'turn-off-auto-fill)
(tool-bar-mode 0);;; ツールバーを出さない
(transient-mark-mode 1);リージョンを見易く
(delete-selection-mode 1);regionをBS,DELキーで一括削除
(setq inhibit-startup-message t);; 起動時のメッセージを非表示
(setq backup-inhibited t);;; バックアップファイルを作らない
(setq delete-auto-save-files t);; バックアップファイルを作らない
(setq auto-save-dafault nil);;; オートセーブファイルを作らない
(add-hook 'before-save-hook 'delete-trailing-whitespace);;; 行末の空白を保存前に削除。
(icomplete-mode 1);;; 補完可能なものを随時表示
(column-number-mode t);;; カーソルの位置を表示する
(line-number-mode t);;; カーソルの位置を表示する
(setq-default indent-tabs-mode nil);; Tabの代わりにスペースでインデント
(setq-default tab-width 4);; Tabの幅をスペース2つ分に
(show-paren-mode 1);; 対応する括弧を光らせる。
(set-face-attribute 'default nil :height 100);;フォントのheight設定
(global-set-key "\C-x\C-b" 'bs-show);; バッファ一覧の情報をさらに表示
(defalias 'yes_or_no_p 'y_or_n_p);;; yes_or_no=>y_or_n
(setq history-length 1000);;ミニバッファ履歴リスト
(setq gc-cons-threshold (* 10 gc-cons-threshold));;ガベッジコレクションの頻度を下げる
(setq x-select-enable-clipboard t);X11とクリップボードを共有
;; 同名のファイルの場合ディレクトリ名を付ける
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)
;;bookmarkを変更したら、即保存
(setq bookmark-save-flag 1)

;;;http://www.emacswiki.org/emacs/RevertBuffer
(global-auto-revert-mode 1);;;自動でrevert-buffer
(defun revert-buffer-no-confirm ()
  "Revert buffer without confirmation."
  (interactive) (revert-buffer t t))
(global-set-key "\C-x\C-r" 'revert-buffer-no-confirm);; バッファ一覧の情報をさらに表示

;;;つづく...
で、~/.emacs.d/etc/cocoa.elに以下のコード
;;;;;;;;;;;;;;;;;;;Mac setting ;;;;;;;;;;;;;;;;;;;;
(setq default-input-method "MacOSX")
(setq ns-command-modifier (quote meta))
(define-key global-map [ns-drag-file] 'ns-find-file)
(setq ns-pop-up-frames nil)

(set-language-environment 'Japanese)
(prefer-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8-unix)
(set-buffer-file-coding-system 'utf-8-unix)
;;; (setq-default buffer-file-coding-system 'utf-8-unix)

;; フォントセットを作る
(let* ((fontset-name "myfonts") ; フォントセットの名前
       (size 10) ; ASCIIフォントのサイズ [9/10/12/14/15/17/19/20/...]
       (asciifont "Menlo") ; ASCIIフォント
       (jpfont "Hiragino Kaku Gothic ProN") ; 日本語フォント
       (font (format "%s-%d:weight=normal:slant=normal" asciifont size))
       (fontspec (font-spec :family asciifont))
       (jp-fontspec (font-spec :family jpfont))
       (fsn (create-fontset-from-ascii-font font nil fontset-name)))
  (set-fontset-font fsn 'japanese-jisx0213.2004-1 jp-fontspec)
  (set-fontset-font fsn 'japanese-jisx0213-2 jp-fontspec)
  (set-fontset-font fsn 'katakana-jisx0201 jp-fontspec) ; 半角カナ
  (set-fontset-font fsn '(#x0080 . #x024F) fontspec) ; 分音符付きラテン
  (set-fontset-font fsn '(#x0370 . #x03FF) fontspec) ; ギリシャ文字
  )

;; デフォルトのフレームパラメータでフォントセットを指定
(add-to-list 'default-frame-alist '(font . "fontset-myfonts"))

;; フォントサイズの比を設定
(dolist (elt '(("^-apple-hiragino.*" . 1.2)
   (".*osaka-bold.*" . 1.2)
   (".*osaka-medium.*" . 1.2)
   (".*courier-bold-.*-mac-roman" . 1.0)
   (".*monaco cy-bold-.*-mac-cyrillic" . 0.9)
   (".*monaco-bold-.*-mac-roman" . 0.9)))
    (add-to-list 'face-font-rescale-alist elt))
;; デフォルトフェイスにフォントセットを設定
;; これは起動時に default-frame-alist に従ったフレームが作成されない現象への対処
(set-face-font 'default "fontset-myfonts")

2012年7月10日火曜日

今後の投稿について

技術系の投稿は、英語で書くようにします。 理由は、それ以外に英語を使う機会がないため。 stackoverflowの英文を参考にしていけばいいのではないかと考えている。

2012年7月5日木曜日

macのexcelファイルからmysqlにinsertする

エクセルから、ファイル > 名前をつけて保存 > タブ区切りテキストとして保存。
macの改行コードが'\r'なので、改行コードを\rに指定して、テーブルに挿入。
use dbname;
LOAD DATA INFILE 'PATH/hoge.txt' INTO TABLE sample_table
FIELDS TERMINATED BY '\t' ENCLOSED BY ''
LINES TERMINATED BY '\r';
以上のSQL文を実行。

ちなみに、mac以外で改行コードが違うかもしれない場合、
od -c PATH/hoge.txt
で改行コードを確認して、Lines terminted byを変更。
改行コードを置換したければ、
tr \\r \\n < hoge.txt > hoge_unix.txt