iTunes と iPhone の同期ができない場合の対処方法

10.8.2 にバージョンアップ後、iTunes と iPhone を同期しようとすると mac の動作が停止する(厳密には一定時間後に少し動作して、また停止する。その際、入力を一切受け付けない。)という状態になってしまった。(ノД`)

しょうがないので、考えられる対処をいろいろ試してみた。
iPhone の電源断、リセットを行ったが効果なし。
復元も行ったが、コレ、結構時間がかかりますね。
iPhone で 30 GBくらいの容量を利用しているとデータの復旧を行うのも大変です。
iPhone を工場出荷状態にして(工場出荷時の OS には戻らないようだ。OS のアップデートを行っていれば、その OS の初期状態へ戻される。)各種、設定を復元して、アプリ、音楽、ムービーの動画を行わなくてはならない。
これらのファイルのサイズが大きければ、当然データのコピーに凄い時間がかかります。
また、一度インストールし、その後、削除したアプリなんかも復元されていてそれらのアプリを削除したりで、また余計な手間がかかります。

というわけで、色々試しましたが、以下の方法で、取りあえず iTunes と iPhone の同期ができない問題は解決できました。

iTunes:「iPod Photo Cache」フォルダについて

以下、上記サイトより引用 —–
iPhoto または Aperture のアルバムから同期している場合は、次の手順で、デフォルトの iPhoto ライブラリまたは Aperture ライブラリの場所にある「iPod Photo Cache」フォルダを見つけます。

1. Finder で、「移動」メニューの「ホーム」を選択します。
2. ホームに移動したら、「ピクチャ」フォルダを開いて、「iPhoto Library」ファイルを探します (Aperture の場合は、「Aperture Library」 になります)。iPhoto ライブラリや Aperture ライブラリを別の場所に移動している場合は、まず Finder でその場所に移動します。
3. 「control」キーを押しながら「iPhoto Library」または「Aperture Library」ファイルをクリックして、ショートカットメニューから「パッケージの内容を表示」を選択します。
4. 次のウインドウで、「iPod Photo Cache」フォルダを見つけてゴミ箱にドラッグします。重要:ライブラリパッケージ内のその他のファイルを削除または変更しないでください。その他のファイルを削除または変更すると、データが失われる可能性があります。
5. Finder ウインドウを閉じます。

—–

たぶん、iPod Photo Cache フォルダ配下の Photo Database がおかしくなったようです。
→ 上記フォルダ配下にはいろいろファイルがありますが、更新日時より Photo Database ファイルが問題だったんだと判断してます。
根拠はありませんが。。。笑

また、しばらく様子を見てみます。
あー mac でこんなつまらない問題に見舞われたこと無かったんだけどなぁ〜

では!

(追記)
問題対処の見方を少し変えれば、もう一度アップデートをかけてみるというのも手かも知れない。
→ 適切かどうか分からない問題対処を一つ一つ試すのは大変なので。。。(^_^.)
OS X Mountain Lion 統合アップデート v10.8.2

27-inch, Late 2009 iMac のメモリを16GBにした (^^)

mountain lion にしてから少し iMac の動作がもっさりしたかなぁ~と感じていた。
だが、アクティビティー モニタでメモリの状態など確認すると空きはあるようだし、う~んという感じだったが、amazon さんでメモリ価格を確認すると凄く安かったので、この際 16GB にすることにした。

もっさり感が解消された様に感じて、とても嬉しいです。
(表示がきびきびしたり、atok の変換候補表示スピードが改善されたりとか。。。)

27-inch, Late 2009 iMac では、以下のメモリで動作しました。

シー・エフ・デー販売 メモリ ノートPC用 DDR3 SO-DIMM PC3-8500 CL7 256x8Mbit 4GB 2枚組 W3N1066Q-4G
(2012/09/09 時点) ¥ 3,163
を2セット購入したので、6千円程度で 16GBにできました。(^^)

xcode, photoshop, illustrator などパフォーマンスアップの効果がでそうなアプリでしばらくじっくり動作検証したいと思います。

9/23 時点追記:
今日まで使用していて特に問題はありません。
多分、大丈夫ですね。

11/4 追記:
マックでメモリを追加した場合、マックメム remberで増設したメモリをテストした方がよいですね。

11/26 追記:
何気なしに今日の値段みたら、¥ 2,800 だった。メモリってホント値段変わるね。ちょっとびっくりした。^_^

4/24 追記:
さっき値段をチェックしてビックリ。 ¥5,073って半年前の倍近いじゃん。(@_@)

subclipse 比較エディタの文字コード指定について

mac で subversion を利用する必要があり、久しぶりに eclipse + subclipse でバージョン管理してるが、比較エディタで日本語文字が化けてた。
文字コードの設定を変更したかったのだが、迷っちゃったのでメモしておく。

設定 > 一般 > ワークスペース > テキスト・ファイルエンコード 

参照: Subversion/Subclipseの使用法

Mountain Lion ターミナルで文字化けする場合に確認する点

先日 lion から Mountain Lion へアップデートし、新規にプロファイルを作成して利用していたターミナルでコマンドライン版 vi が日本語文字確定時に文字化けするという現象に悩まされていたが、解決したのでメモしておく。

日本語文字確定時になぜか文字化けする原因は、以下の”Control + V で非 ASCII 入力をエスケープ”がチェックされていたことが原因だと判明した。

いつチェックしちゃったんだろう?
取りあえず、すっきりした。

Git について

git についてよく分かっていなかったので、調べてみた。
よく分からなかった原因は、git 特有の概念、用語などにあったと感じていたので、以下にまとめた。

概念については以下の資料を参照するのがいい。

git – 簡単ガイド 猫でもわかるGit 最初の一歩
Git – Book

用語についても、以下にまとめた。
origin, master, head とかよく意味がわかんなかったけど、少しすっきりした。

リポジトリからクローンして、コミットするまでのコマンドについてもまとめたので、
あとは実際の経験からの得られる知識を蓄積していけば OK でしょう。
改めて、ブランチって便利だなと感じたので、積極的に使っていきたい。^_^

インストール

macport でインストールする場合

$ sudo port install git-core +gitweb +svn

設定について

~/.gitconfig
特定のユーザーに対する設定値を保持する。
–global オプションを指定することで、明確にこのファイルの読み書きを行う。

/etc/gitconfig
システム上の全てのユーザーと全てのリポジトリに対する設定値を保持する。
–system オプションを git config に指定すると、明確にこのファイルに読み書きを行う。

現在使っている、あらゆるリポジトリの Gitディレクトリ設定ファイル ( .git/config )
特定の単一リポジトリに対する設定値を保持する。
それぞれのレベル値は以前のレベル値を上書きするため、.git/config 中の設定値は /etc/gitconfig の設定値に優先される。

.gitignore
無視させたいファイルのパターンを保持したファイル。
.gitignore ファイルに記述するパターン規則は、以下の通り。

空行あるいは # で始まる行は無視される
標準の glob パターンを使用可能
ディレクトリを指定するには、パターンの最後にスラッシュ (/) をつける
パターンを逆転させるには、最初に感嘆符 (!) をつける

1
2
3
4
5
6
# コメント行
*.a       	# .a ファイルは管理対象外とする
!lib.a    	# しかし、lib.a ファイルだけは .a であっても追跡対象とする
/TODO           # ルートディレクトリの TODO ファイルだけを対象外とし、サブディレクトリの TODO は対象外としない
build/    	# build/ ディレクトリのすべてのファイルを対象外とする
doc/*.txt 	# doc/notes.txt は無視しますが、doc/server/arch.txt は無視しません

xcode 用の gitignore

1
2
3
4
5
6
7
8
9
10
11
12
.DS_Store
*.swp
*~.nib
build/
 
*.pbxuser
*.perspective
*.perspectivev3
 
#!xcuserdata/
#*.xcuserstate
UserInterfaceState.xcuserstate

用語について

リポジトリをクローンする
Git リポジトリをコピーすること。
Subversion などの checkout と意味が違うことに注意。
Git は、サーバーが保持しているデータをほぼすべてコピーする。
そのプロジェクトのすべてのファイルの全履歴が、git clone で取得することができる。

リポジトリをクローンするには git clone [url] とする。
例えば、Ruby の Git ライブラリである Grit をクローンする場合は以下のようにコマンド入力する。

$ git clone git://github.com/schacon/grit.git

ステージング・エリア
Gitディレクトリに含まれる、次のコミットに何が含まれるかという情報。

origin サーバー
クローン元のサーバーに対して Git がデフォルトでつける名前。

master ブランチ
クローンした地点でこのブランチ名とサーバー名が自動設定される。

HEAD ポインタ
作業中のブランチを指し示す特別なポインタ。
Git では、HEAD は作業しているローカルブランチへのポインタとなる。

git clone
git clone コマンドはローカルの master ブランチが、(取得元サーバーの) リモートの master ブランチを追跡するよう自動設定する。
リモートに master ブランチが存在することを前提としている。

git pull
通常は最初にクローンしたサーバーからデータを取得し、現在作業中のコードへのマージを試みる。

リベース
一方のブランチにコミットされたすべての変更をもう一方のブランチで再現する。

コマンド入力について

設定を確認する方法
$ git config –list

変更を確認する方法
$ git status
$ git diff
$ git diff –staged

git で管理するファイルをコミットする

1
2
3
$ git init					# 既存ディレクトリでのリポジトリの初期化
$ git add *.c					# 管理するファイルを追加する
$ git commit –m 'initial project version'	# コミットする

ステージングエリアの準備ができたら、変更内容をコミットすることができる。
コミットの対象となるのはステージされたものだけ、つまり追加したり変更したりしただけで
git add を実行していないファイルはコミットされないことに注意。

$ git commit -a -m '...'
$ git pull origin master マスタの改変を取り込む
$ git branch 現在のブランチを確認する
$ git checkout (ブランチ名) ブランチを切り換える
$ git status コミット残があるか判断する
$ git add (ファイル名) ファイルを追加する
$ git merge (ブランチ名) ブランチをマージする
$ git push origin master originサーバのmasterブランチへpushする

ファイルを削除、変更する方法

$ git rm ファイル名 ファイルの削除がステージされる
$ git rm -f ファイル名 ステージされているファイルを削除する
$ git rm –cached ファイル名 ファイルをステージから削除するのみ
$ git mv file_from file_to ファイル名を変更する (ステージから削除し、新しいファイル名でステージしてくれる)

直近のコミットを修正する方法

$ git commit –amend 直近のコミットを変更

直近のコミットを修正するには以下の様にコマンドを入力する。

1
2
3
$ git commit -m '初期コミット'
$ git add 忘れてたファイル
$ git commit --amend

ログを参照する方法

$ git log ログの閲覧
$ git log –p -2 -p で各コミットの diff を表示し、-2 で直近の 2 エントリだけを出力する
$ git log –pretty=format:”%s” –graph ログをグラフィカルに出力する
$ git log –oneline ログを1行ずつ出力する

タグをつける方法

$ git tag タグの一覧表示
$ git tag -a v1.4 -m ‘my version 1.4’ 注釈付きのタグを指定する
$ git show v1.4 タグの参照

ブランチを操作する方法

$ git checkout testing ブランチを testing へ切り換える
$ git checkout -b iss53 ブランチ iss53 を作成して、切り換える
$ git checkout master ブランチを master へ切り換える
$ git merge hotfix ブランチをマージする
$ git branch -d hotfix ブランチを削除する

submodule を更新する方法

$ git submodule foreach ‘git checkout master; git pull’ すべてのサブモジュールを更新する

os x mountain lion (10.8) に Eclipse Juno 4.2 をインストールする方法

開発環境を新しい mac にセットアップするたびに手順を忘れているので、メモしておく。
今回は、Pleiades 本体 (安定版 1.3.4) を適用するのを忘れていて少し手こずった。(ノД`)
あと、readme_pleiades.txt には丁寧な情報があるのでみた方が良いですね。

1. eclipse をダウンロードする
eclipse_download

2. “日本語 Eclipse Pleiades All in One 日本語ディストリビューション”をダウンロードし、適用する

pleiades_all_in_one

64bit JRE なし Ultimate (pleiades-e4.2-ultimate_20120727.zip) をダウンロードする
“日本語 Eclipse Pleiades All in One 日本語ディストリビューション” の “dropins” フォルダ配下を eclipse にコピーする

3. Pleiades 本体 (安定版 1.3.4) をダウンロードし、適用する

pleiades_1.3.4.zip を解凍し、plugins、features フォルダを ECLIPSE_HOME ディレクトリーにコピーする

4. eclipse.ini を編集する
Eclipse.app を “パッケージの内容を表示” する
Contents > MacOS > eclipse.ini に以下の設定を追記する

readme_pleiades.txt より抜粋

1
2
3
4
5
6
7
8
9
10
11
12
13
14
◆方法 1: eclipse.ini 最終行に以下の指定を追加
 
* Windows での設定例
 -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
 
* Mac OS での設定例
  Mac OS では  eclipse.ini は Eclipse.app/Contents/MacOS/ にあります。
  また、後述の no.mnemonic オプションは自動的に有効になります。
 
  相対パスで指定する場合
 -javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
 
  絶対パスで指定する場合
 -javaagent:/Applications/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

5. 初回のみ eclipse を クリーン起動する
/Applications/eclipse/eclipse -clean

(追記)
2013/04/16現在、以下のセットでも動作することを確認した
eclipse-jee-juno-SR2-macosx-cocoa-x86_64.tar
pleiades-e4.2-ultimate_20130303.zip
pleiades_1.4.0.zip

mac でコピーする場合、上書きではなく結合(マージ)でコピーされているか注意すること。

Command Line Tools のインストール方法

xcode 4.3 以降は Command Line Tools がインストールされない。
そのため、別途インストールする必要がある。

インストールするには以下の方法がある。

1. Apple Developer サイトから入手する
https://developer.apple.com/downloads/index.action

2. Xcode の [Preferences…]-[Downloads]からインストールする

PHP のデバッグ環境を作成する手順

Mac OS X バージョン 10.7.4 に port を利用して PHP のデバッグ環境を作成した際の手順を記します。
※ eclipse と PDT も別途インストールしておくこと

1. PHP5 をインストールする

php をインストールする(pear を利用したい場合)

1
$ sudo port install php5 +apache2 +pear

php.ini の設定

1
$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;timezone の設定
[Date]
date.timezone = Asia/Tokyo

;mbstring の設定
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8

;エクステンションの設定

;930 行目付近 (mac の場合)
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
:
extension=php_mysql.so
:
extension=php_pdo_mysql.so

2. MySQL5 をインストールする

1
$ sudo port install mysql5-server

データベースのセットアップ
上記コマンドのメッセージで以下のコマンドでセットアップするよう指示される

1
2
$ sudo port load mysql5-server
$ sudo -u mysql mysql_install_db5

root パスワードの設定

1
$ sudo /opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'

文字コードの設定

1
2
$ sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf
$ sudo vi /opt/local/etc/mysql5/my.cnf

my.cnf ファイルに以下の設定を追加する

1
2
3
4
5
6
7
8
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

接続確認

1
$ mysql5 -u root -p

3. Apache2 をインストールする

– PATH 設定
環境変数を参照する

1
2
3
$ printenv PATH
 
$ sudo port install apache2

– 設定ファイル
port でインストールした場合
/opt/local/apache2/conf/httpd.conf

– ドキュメントルートの設定

1
2
$ sudo mkdir -p /var/www/(ドキュメントルートにするディレクトリ)
$ sudo chown (ユーザ名) /var/www/(ドキュメントルートにするディレクトリ)

– hosts にドメイン設定
– バーチャルホストの設定
/opt/local/apache2/conf/httpd.conf から、以下のコメントを外す

1
Include conf/extra/httpd-vhosts.conf

/opt/local/apache2/conf/extra/httpd-vhosts.conf に以下の設定を追記する

1
2
3
4
5
6
7
8
9
10
<VirtualHost *:80>
	ServerName (ドメイン名:localhost など)
	DocumentRoot /var/www/(ドキュメント ルート)
	DirectoryIndex index.php index.html
 
	<Directory "/var/www/(ドメイン名)">
		AllowOverride All
		Allow from All
	</Directory>
</VirtualHost>

– php5モジュールの追加設定

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

httpd.conf の LoadModule に以下の設定が追記される

1
LoadModule php5_module        modules/libphp5.so

動作確認

1
$ ps aux | grep apache2

ブラウザから php が動かない場合
/opt/local/apache2/conf/httpd.conf
ディレクディブに以下の設定を追加する

1
AddType application/x-httpd-php .php

4. xDebug をインストールする

以下のコマンドで xdebug に関する記述がない場合、インストールする必要がある

1
$ php -i | grep xdebug

PECL で xDebug をインストールする
(PEAR がインストールされていることとする)

1
$ pecl install xdebug

2012/08時点、xDebug のパッケージがあるみたい?

php.ini に xDebug に関する設定をする

1
$ sudo vi /opt/local/etc/php5/php.ini
1
2
3
4
5
[xDebug]
zend_extension="/opt/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable = On
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost

上記の作業中に問題となった箇所
– 最初に port で php5 がインストールできなかった
– php5 を variants 指定でインストールできなかった
$ sudo port upgrade ncursesw
$ sudo port install ncurses
他、違うバージョンの PHP をインストールしたりしているうちにインストールできるようになった。^_^;

– eclipse (PDT) でデバッグ時にブレークポイントで処理を中断することができなかった
xDebug がインストールされてなかったので、インストールすることで対処した。
(まぁ当然ですが、知らなかったので気づかなかった (T-T) )

5.phpmyadmin をインストール

インストール

1
$ sudo port install phpmyadmin

config ファイルの設置

1
2
$ cd /opt/local/www/phpmyadmin/
$ sudo cp config.sample.inc.php config.inc.php

phpmyadmin へのアクセス
http://localhost/phpmyadmin/ でアクセスさせる場合

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo vi /opt/local/apache2/conf/httpd.conf
 
<IfModule alias_module>
...
Alias /phpmyadmin "/opt/local/www/phpmyadmin/"
<Directory /opt/local/www/phpmyadmin>
   Order allow,deny
   Allow from all
</Directory>
...
ScriptAlias /cgi-bin/ "/opt/local/apache2/cgi-bin/"
...
</IfModule>

(注意) ScriptAlias より上に記述すること

その他、便利そうなコマンド

MySQL5 の起動、停止

1
2
3
$ sudo /opt/local/share/mysql5/mysql/mysql.server start
$ sudo /opt/local/share/mysql5/mysql/mysql.server stop
$ sudo /opt/local/bin/mysqladmin5 -u root -p shutdown		(手動停止)

apache2 の起動、停止、再起動

1
2
3
$ sudo /opt/local/apache2/bin/apachectl start
$ sudo /opt/local/apache2/bin/apachectl stop
$ sudo /opt/local/apache2/bin/apachectl restart

apache2, mysql の alias 設定

1
2
3
4
alias apache_start="sudo /opt/local/apache2/bin/apachectl start"
alias apache_stop="sudo /opt/local/apache2/bin/apachectl stop"
alias mysql_start="sudo /opt/local/lib/mysql5/bin/mysqld_safe &"
alias mysql_stop="sudo /opt/local/bin/mysqladmin5 -u root -p shutdown"

設定ファイルの更新
色々便利そうなワンライナーが紹介されていたので、メモしておく。

1
2
3
4
5
6
7
8
9
10
sudo perl -p -i.bk -e 's/;date.timezone =/date.timezone = Asia\/Tokyo/g' /opt/local/etc/php5/php.ini
sudo perl -p -i -e 's/pdo_mysql.default_socket=/pdo_mysql.default_socket = \/opt\/local\/var\/run\/mysql5\/mysqld.sock/g' /opt/local/etc/php5/php.ini
sudo perl -p -i -e 's/mysqli.default_socket =/mysqli.default_socket = \/opt\/local\/var\/run\/mysql5\/mysqld.sock/g' /opt/local/etc/php5/php.ini
 
sudo perl -p -i -e 's/;mbstring.language = Japanese/mbstring.language = Japanese/g' /opt/local/etc/php5/php.ini
sudo perl -p -i -e 's/;mbstring.internal_encoding = EUC-JP/mbstring.internal_encoding = UTF-8/g' /opt/local/etc/php5/php.ini
sudo perl -p -i -e 's/;mbstring.http_input = auto/mbstring.http_input = auto/g' /opt/local/etc/php5/php.ini
sudo perl -p -i -e 's/;mbstring.detect_order = auto/mbstring.detect_order = auto/g' /opt/local/etc/php5/php.ini
 
sudo perl -p -i -e 's/;default_charset = "iso-8859-1"/default_charset = "UTF-8"/g' /opt/local/etc/php5/php.ini

MacPorts コマンド

.bashrc

export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH

port を更新する

$ sudo port selfupdate MacPorts を最新の状態にする
$ sudo port sync ports データベースのみを最新にする
$ sudo port upgrade installed 古くなった全ての ports が更新される

パッケージを調べる

$ port installed インストールされているパッケージを表示する
$ port search (パッケージ名) パッケージを検索する
$ port variants php5 php5 の variants を調べる
(variants ってインストール種別みたいなもの?)

パッケージ有効化、無効化

$ port activate (パッケージ名) パッケージを有効化する
$ port deactivate (パッケージ名) パッケージを無効化する

パッケージのインストール、アンインストール

$ sudo port install (パッケージ名) パッケージをインストールする
$ sudo port uninstall (パッケージ名) パッケージをアンインストールする
$ sudo port clean (パッケージ名) ビルド時の中間ファイルを削除する
$ sudo port clean –all (パッケージ名)