Hatena::ブログ(Diary)

130単位

2012-08-08

iTerm2のVimでトラックパッド範囲選択コピーする

ゆるいVimmerなので、たまにトラックパッドからカーソル選択でコピーすることがあります。Terminal.appではCmd+Cでできてたのですが、iTerm2に変えたらできなくなって若干困ってました。ビジュアルモードで選択した扱いになってしまいます。そこで、設定により通常選択を可能にする方法です。

  • Preferences > Profiles > Terminal > Terminal Emulation
    • Enable xterm mouse reporting を OFF

f:id:deeeki:20120808233357p:image

ググってもなかなかヒットしませんでしたが、以下のページに書いてありました。

またiTerm2の機能により、Cmd+Cしなくても選択しただけでクリップボードにコピーされます。ちなみに上記設定ONの状態だと、Optionキーを押しながらカーソル選択する必要があるみたいです。

2011-07-22

Mac OS X/Ruby1.9.2 日本語YAML出力

やりたいこと

  • バイナリ文字列化されずに日本語を含むYAMLを出力したい
    • 通常は以下のようになる
puts YAML.dump({'' => ''})

---

"\xE3\x81\x82": "\xE3\x81\x84"

Linux

CentOSでは、上記リンク先の情報でいけました。

  • CentOS 5.6
  • Ruby 1.9.2p290 (RVM 1.6.25)
  • libyaml 0.1.2
  • libyaml-devel 0.1.2

で問題ありませんでした。

Mac

環境

MacPortsではyumのlibyaml-develに相当するパッケージがないのが原因かもしれません。

エラー

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- psych (LoadError)

psychが読み込めないというエラーになってしまいます。

gemインストール
gem linstall psych #記事公開時の最新は1.2.0
YAML出力
# coding: utf-8
require 'psych'
require 'yaml'
puts YAML.dump({'' => ''})

または

# coding: utf-8
require 'yaml'
YAML::ENGINE.yamler = 'psych'
puts YAML.dump({'' => ''})

で日本語で出力されます。

---

あ: い

Macgem不要でいける方法ご存知な方いましたら教えてください!


4274068099
プログラミングRuby 1.9 −言語編−

4274068102
プログラミングRuby 1.9 −ライブラリ編−

2011-05-03

PowとApacheを共存させる方法

Pow: Zero-configuration Rack server for Mac OS X

Mac用の簡易Rackサーバーとして話題のPowをインストールしてみました。が、今まで使えていたApacheが使えなくなってしまいました。localhostや127.0.0.1がすべてPowで処理されてしまうようです。

f:id:deeeki:20110504015256p:image

f:id:deeeki:20110504015255p:image

参考リンク

no title

こちらを参考にしました。Apache側でIPv6を使うといいみたいです。

環境

Apache設定ファイル編集

/opt/local/apache2/conf/httpd.conf (MacPorts)
/private/etc/apache2/httpd.conf (Macデフォルト)

#Listen 80
Listen [::]:80

hostsファイル編集

/etc/hosts

#127.0.0.1  localhost #コメントアウト 
::1               localhost
::1               phpapp.dev
  • localhostの行はもともと存在してた
  • 別のローカルなVirtualHostで動かしたい場合は追記
    • Powに習って擬似トップレベルドメインを.devにしてみた
      • PowとApacheを区別したい場合は他の文字列で
  • 元のlocalhostコメントアウトはマシン再起動が必要かもしれません

VirtualHost設定

NameVirtualHost *:80
#localhost
<VirtualHost *:80>
	ServerName localhost
	DocumentRoot "/path/to/your/htdocs"
	<Directory "/path/to/your/htdocs">
		Order allow,deny
		Allow from ::1
	</Directory>
</VirtualHost>
#CakePHPのアプリ例
<VirtualHost *:80>
	ServerName phpapp.dev
	DocumentRoot "/path/to/phpapp/app/webroot"
	<Directory "/path/to/phpapp/app/webroot">
		Options FollowSymLinks
		AllowOverride FileInfo
		Order allow,deny
		Allow from ::1
	</Directory>
</VirtualHost>
  • VirtualHostを有効に
  • 自分のみアクセス許可する場合は「Allow from ::1」

編集完了したらApache再読み込みします(sudo apachectl graceful)。※できなければ再起動を試してください

わかったこと

  • ::1はIPv4でいうところの127.0.0.1
  • IPv6へのpingはping6コマンドを使う
  • 「NameVirtualHost [::]:80」「VirtualHost [::]:80」とはしなくてもいい
  • IPv4ではhttp://localhost/alias/でAliasが効かなかったが、IPv6だと効く

これでPowとApacheを共存させて開発ができます。※ApacheがListenするポートを80番から変更する方法もあります

関連リンク

4798122300
独習 TCP/IP IPv6対応

2011-04-02

Gitブランチ名を__git_ps1でbashプロンプトに表示

Git 基礎最速マスター - 予定は未定Blog版
http://d.hatena.ne.jp/bleis-tift/20100307/1267941654

こちらでプロンプトにGitのブランチ名を表示させる方法を知りました。そこでさらに各OSで共通の表示を試みてみたので、そのメモです。

  1. Bash-Completionのインストール
  2. 環境変数PS1の設定

上記の手順で、

f:id:deeeki:20110403002805p:image

こんな感じになります。

Bash-Completionのインストール

Mac
$ sudo port install git-core +bash_completion
  • .bashrc追記
if [ -f /opt/local/etc/bash_completion ]; then
	. /opt/local/etc/bash_completion
fi
CentOS
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ sudo yum install bash-completion
  • .bashrc追記
if [ -f /etc/bash_completion ]; then
	. /etc/bash_completion
fi
Ubuntu
  • Ubuntu 10.10
  • もとから入っていた(と思う)が、入っていない場合は以下
$ sudo apt-get install bash-completion

bashプロンプト表示

  • .bashrcで環境変数PS1を設定
    • bash_completion読み込みのあとに記述する
    • 共有していて「-bash: __git_ps1: command not found」とエラーにならないために分岐しておく
if [ -f $BASH_COMPLETION_DIR/git ]; then
	export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w$(__git_ps1) \n\[\033[01;34m\]\$\[\033[00m\] '
else
	export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w \n\[\033[01;34m\]\$\[\033[00m\] '
fi
  • source .bashrc などして再読み込み

色やフォーマットはお好みで変更するといいと思います!

参考リンク


4798023809
入門Git

4873112540
入門bash 第3版

2011-04-01

Apache/PHPをMacデフォルトからMacPortsに移行

Apache/PHPとも、Macに標準でインストールされているものを利用していました。が、ふと思い立ってMacPortsのものに移行することにしました。

  • アップデートが容易
  • PC買い換えてもTimeMachineで設定引き継げる

このようなメリットがあるかと思います。巷ではHomebrewが流行っていたりするようですが、いったんMacPortsを貫き通してみます。

Apache2インストール

$ sudo port install apache2
環境変数PATH追加
  • ~/.bashrcに追記してMacデフォルトから切り替え
    • PATHは前方優先で解釈されるとのこと
export PATH=/opt/local/apache2/bin/:$PATH
  • 追記したら source ~/.bashrc で再読み込み
確認
$ apachectl -v
Server version: Apache/2.2.17 (Unix)
Server built:   Mar 23 2011 01:20:37
$ which apachectl
/opt/local/apache2/bin//apachectl
自動起動
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
  • 自動起動解除はsudo launchctl unload ...

PHP5インストール

sudo port install php5 +apache2 +pear php5-mbstring php5-mysql
確認
$ php -v
PHP 5.3.6 (cli) (built: Mar 23 2011 01:29:26)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
$ which php
/opt/local/bin/php
php.ini作成
$ cd /opt/local/etc/php5
$ sudo cp php.ini-development php.ini
php.ini編集
date.timezone = Asia/Tokyo

pdo_mysql.default_socket=/var/mysql/mysql.sock
mysql.default_socket = /var/mysql/mysql.sock
mysqli.default_socket = /var/mysql/mysql.sock

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
  • タイムゾーン
  • MySQLソケット
    • MacPortsのMySQLの場合は /opt/local/var/run/mysql5/mysqld.sock
  • mbstring日本語対応

Apacheモジュール追加

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

Apache設定ファイル編集

  • /opt/local/apache2/conf/httpd.conf
  • Linux同様conf.d/以下に自前の設定ファイルを置く運用にする
#ファイル一覧を見やすく
Include conf/extra/httpd-autoindex.conf
#拡張子.php対応設定ファイル読み込み
Include conf/extra/mod_php.conf
#自前の設定ファイル読み込み
Include conf.d/*.conf
#Indexファイル定義 (mod_php.confに書くのがいいかも)
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Apache起動コマンド

#設定確認
$ sudo apachectl configtest
#起動
$ sudo apachectl start
#再読込
$ sudo apachectl graceful
#再起動
$ sudo apachectl restart

気づいたこと

  • http://localhost/はアクセスできるが、Alias指定したパスhttp://localhost/alias/にはなぜかアクセスできない
  • http://127.0.0.1/alias/はアクセスできる
  • マシン名http://computer-name.local/alias/でもアクセスできる
  • これらはMacデフォルト/MacPorts問わず発生

この謎わかるかた教えてください><

参考リンク


4774142239
Apacheポケットリファレンス (POCKET REFERENCE)

4774144371
パーフェクトPHP (PERFECT SERIES 3)

関連記事