ざ~ちゃんブログ

プログラマーです。 富山県の旧細入村でリモートワークしてます。 プログラミングとPerfumeと動画制作が大好きです。

IT技術

HandBrakeで動画が変換できない場合の対処(Mac・Win)

前の記事でも書いたとおり、動画の変換にはフリーソフトの「HandBrake」がすごい便利です。ただ長年使ってると、なぜか「変換開始」ボタン押しても変換処理が始まらず、何も出来なくなってしまうことがあります。

原因として、HandBrakeの設定ファイルが壊れてしまってる可能性があります。その場合、HandBrake自体を再インストールしても解決しないのが厄介なところです。以下の手順で直りますのでお試しを!

※2014.07.25追記:今までMac版のフォルダ操作方法しか書いてなかったので、Windows版の操作方法を追記しました。ただ、僕はWin版のHandBrakeは普段使っていないので、これで動画変換エラーが直ることは確認できてません。これ見てWin版で試された方、コメントもらえると嬉しいです。

■Macの場合
1.HandBrakeを終了する
2.Finderで「移動」メニューを選択した状態で、キーボードの「Option」を押す
3.通常はメニュー項目にない「ライブラリ」が出現するので、それを選択
4.ホームフォルダ内の「ライブラリ」フォルダが開くので「Application Support」を開く
5.「HandBrake」というフォルダがあるので、デスクトップなど別の場所に移動
6.HandBrakeを起動する

■Windowsの場合
1.HandBrakeを終了する
2.マイドキュメントなど適当なフォルダを開き、アドレスバーに「%appdata%」と入力
3.OSバージョンに応じたAppDataフォルダが開く
4.「HandBrake」というフォルダがあるので、デスクトップなど別の場所に移動
5.HandBrakeを起動する

これでHandBrakeの設定ファイルがリセットできました。HandBrakeを再起動すると、自動的に「ライブラリ」or「%appdata%」内の「HandBrake」フォルダが再作成され、動画変換に成功するようになると思います。

独自のプリセットを作成している場合はプリセットが消えてしまいます。プリセットを戻したいときは以下の手順で。僕が試した限り、プリセットを復活させても変換はちゃんと成功しました。

■Macの場合
1.HandBrakeを終了する
2.「ライブラリ」内の「HandBrake」フォルダと、上記5で退避した「HandBrake」フォルダを同時に開く
3.退避したフォルダ内の「UserPresets.plist」ファイルを「ライブラリ」内の「HandBrake」フォルダに上書きコピー
4.HandBrakeを起動する

■Windowsの場合
1.HandBrakeを終了する
2.「%appdata%」内の「HandBrake」フォルダと、上記4で退避した「HandBrake」フォルダを同時に開く
3.退避したフォルダ内の「user_presets.xml」ファイルを「%appdata%」内の「HandBrake」フォルダに上書きコピー
4.HandBrakeを起動する

退避した「HandBrake」フォルダは、これで特に必要なくなったので削除してもOKです。

実は2年前くらいにこれでハマって、そのときはMacに新しいアカウント作ってHandBrake使ったら成功したんですよ(笑) それ以来HandBrake使う機会無くて放置してました。んでさっき前の記事を書こうとしてHandBrake使ったらやっぱ使えなくて、冷静に考えてみるとライブラリをリセットすればOKだよなぁと思って試してみた次第でございます。本当はどこがどう壊れてるのか分かればいいんですけど、まぁ直ったから良し。

ちなみに変換に失敗したときは、画面にこんなログが表示されました。最後にそれ貼り付けときますね。

・2年前DVDをリッピングしようとした時のログ(合法的なリッピングなんで通報しないでねw)
HandBrake Activity Log for /Users/hoge/Desktop/movieFile.m4v: 2012-11-21 01:12:26 +0900
Handbrake Version: 0.9.3-jp-b1 (2009021200)

[01:12:26] macgui: Rip: Pending queue count is 1
[01:12:26] macgui: scanning specifically for title: 1
[01:12:26] macgui: performNewQueueScan currentQueueEncodeIndex is: 0
[01:12:26] hb_scan: path=/Users/hoge/Desktop/DVD/VIDEO_TS, title_index=1
[01:12:26] scan: trying to open with libdvdread
[01:12:26] scan: DVD has 1 title(s)
[01:12:26] scan: scanning title 1
[01:12:26] scan: opening IFO for VTS 1
[01:12:26] pgc_id: 1, pgn: 1: pgc: 0x2691bc0
[01:12:26] scan: vts=1, ttn=1, cells=0->24, blocks=0->892076, 892077 blocks
[01:12:26] scan: duration is 00:29:59 (1799310 ms)
[01:12:26] scan: checking audio 1
[01:12:26] scan: id=80bd, lang=English (AC3), 3cc=eng ext=0
[01:12:26] scan: title 1 has 1 chapters
[01:12:26] scan: chap 1 c=0->24, b=0->892076 (892077), 1799310 ms
[01:12:26] scan: aspect = 0
[01:12:26] scan: decoding previews for title 1

*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***

[01:12:26] scan: audio 0x80bd: AC-3, rate=48000Hz, bitrate=256000 English (AC3) (2.0 ch)

*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***


*** libdvdread: CHECK_VALUE failed in nav_read.c:207 ***
*** for dsi->dsi_gi.zero1 == 0 ***

[01:12:26] scan: 10 previews, 720x480, 29.970 fps, autocrop = 50/52/0/0, aspect 4:3, PAR 8:9
[01:12:26] scan: title (0) job->width:656, job->height:384
[01:12:26] libhb: scan thread found 1 valid title(s)

・今日、フルHD動画をカーナビで見れるサイズに変換しようとした時のログ
HandBrake Activity Log for /Users/hoge/Desktop/movieFile.m4v: 2014-04-29 11:53:16 +0900
Handbrake Version: 0.9.3-jp-b1 (2009021200)

[11:53:16] macgui: Rip: Pending queue count is 1
[11:53:16] macgui: scanning specifically for title: 1
[11:53:16] macgui: performNewQueueScan currentQueueEncodeIndex is: 0
[11:53:16] hb_scan: path=/Volumes/SDcard/movieFile.mp4, title_index=1
[11:53:16] scan: trying to open with libdvdread
[11:53:16] dvd: not a dvd - trying as a stream/file instead
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/SDcard/movieFile.mp4':
Duration: 00:25:05.15, start: 0.000000, bitrate: 3816 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 1280x720, 29.97 tb(r)
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16
[11:53:16] scan: decoding previews for title 1
[11:53:16] scan: 10 previews, 1280x720, 29.970 fps, autocrop = 0/0/0/0, aspect 16:9, PAR 1:1
[11:53:16] scan: title (0) job->width:1280, job->height:720
[11:53:16] libhb: scan thread found 1 valid title(s)

両方変換には失敗してるんですけど、内容はけっこう違いますねぇ。意味は分からないですが、一応参考までに貼っときました。

ではでは〜。



日産純正ナビ「MP313D-A」で再生できる動画の作り方

今年の1月にX-TRAIL(旧モデル)を新車で購入しまして、純正ナビ「MP313D-A」を付けました。動画を見るにはiPod繋げば良いんですけど、せっかくSDカードでも動画再生できるので、SDカードで再生するための動画の変換方法を調べてみました。

製品マニュアル10.オーディオ基本操作のK-5ページに対応フォーマットが載ってるんですが、実際に作ってみると意外とめんどくさかった。以下に手順まとめましたので、動画に詳しくない人もこの通りにやればできると思います!

前提として、ナビで見たい動画ファイルがパソコンに保存されてるものとします。

まず動画変換ソフト「HandBrake」をダウンロードしてインストールしておきます。
http://sourceforge.jp/projects/handbrake-jp/
このソフトはMac・Win版両方あります。僕はMacでしか試してないですが、たぶん同じようにやればWin版でもできるはず。出来なかったらごめんなさい・・・

1.HandBrakeを起動すると、さっそく変換元の動画ファイルを聞いてくるので選択する。一度選択した後に選び直すときは、左上の「変換元」ボタンを押す
2.「保存先」の「ブラウズ」ボタンを押して、変換後の動画を保存する場所を指定
3.「形式」は「MP4 file」を選択
4.「画質」タブを選択
5.「動画コーデック」は「MPEG-4(FFmpeg)」を選択
6.「フレームレート」は「変換元と同一」を選択
7.「品質」は「平均ビットレート(kbps)」を選択し「2500」と入力
8.「画像設定」ボタンをクリック
9.「ワイド化」は「None」を選択
10.「アスペクト比を保つ」にチェックを入れる
11.「幅」は「400」まで落とす。自動的に「高さ」は「224」になる(16:9のワイド動画の場合)
12.「閉じる」ボタンで閉じる
13.「音声&字幕」タブを選択
14.「サンプルレート」を「Auto」から「48」に変更、他はデフォルトのまま
15.左上の「変換開始」ボタンをクリックして、しばらく待つ
16.変換が終わったらHandBrakeを閉じて、変換後のファイルをSDカードにコピー

これでSDカードをナビに挿入すれば、動画が再生できるはずです!
注意点などいくつか。
・姉妹モデル「MP313D-W」でもたぶんこの手順で出来ます
・USBメモリでの動画再生もたぶんこの手順で出来ます
・Macだと、SDカードの中に「._動画ファイル.m4v」みたいな隠しファイルが自動的にできてしまい、ナビからも見えてしまいます。Eject for Windowsってフリーソフト使うと隠しファイル自動削除できるので便利です。
・マニュアルによるとH.264フォーマットも対応しているようですが、HandBrakeの動画コーデックで「H.264」を選択してもナビでは再生できませんでした。「MPEG-4」を選びましょう
・4:3の動画だと、サイズは「幅400、高さ224」ではなく「幅320、高さ240」のサイズが良いと思いますが、試してないです
・音声の「サンプルレート」が「Auto」になっていると、動画の途中で音のスピードが速くなったり遅くなったりして、映像と音がずれてしまうことがあるので注意です。昔それで大失敗しました。
・マニュアルでは「ビットレートの上限が MPEG4では2.5Mbps」とあります。上記7で設定したのは「平均ビットレート」なので、動画の途中で2.5Mbps以上になってしまう可能性もあります。もし「2500」で再生できなかったら「2300」とか「2000」とかに落としてみると良いかもです
・どうしてもうまくいかなかったのが、この動画の早回しの着替えシーン。この着替えシーンにさしかかると、着替え終わった後まで映像が飛んじゃうんですよね。たぶん早回ししてるのが原因だとは思うんだけど、ビットレート大幅に下げてみてもダメだったし、謎です・・・

結論!面倒だし画質悪いしどうしても再生できない部分あるし、SDカードで動画は見ない方が良い(爆)

プロフィールの写真がまだジムニーのままだな。早くエクストレイルに変えないと(^o^)変えました!
ではでは〜。


VirtualBoxのストレージの場所を変更する

VirtualBoxの仮想マシン作成時に「すでにある仮想ハードドライブファイルを使用する」を選んだ場合、「.vbox」ファイルと仮想ディスクファイルが別の場所に保存されてしまいます。何となく気持ち悪いので、仮想ハードディスクのパスを変更しました。ググっても日本語の解説見つからないのでメモしておきます。

「.vbox」ファイルはXMLですが、この中に仮想ディスクのパスの設定も書き込まれています。VirtualBoxが立ち上がってない状態で、テキストエディタで開きます。(バックアップは取りましょうね)この中の「HardDisk」タグの「location」を修正すればOK。
たとえばFusionの仮想ディスクを指定してた場合はこんな感じになっています。

<HardDisk uuid="{xxxxxx}" location="/Users/hoge/Documents/Virtual Machines.localized/Windows 7/Windows 7-0.vmdk" format="VMDK" type="Normal"/>


locationを相対パスで書くと、VBの仮想マシンフォルダ配下を見に行きます。
仮想マシンフォルダ直下(.vboxと同階層)に置きたい場合はこんな感じに修正。

<HardDisk uuid="{xxxxxx}" location="Windows 7-0.vmdk" format="VMDK" type="Normal"/>


サブフォルダを切りたい場合はこんな感じ。

<HardDisk uuid="{xxxxxx}" location="HardDisk/Windows 7-0.vmdk" format="VMDK" type="Normal"/>


.vboxファイルを修正したら、修正した通りの場所に仮想ディスクを移動させてVirtualBox立ち上げればOKです。もし仮想ディスクがうまく読み込めなかったら、VirtualBox立ち上げた時点で警告が出ます。
あと、VirtualBox立ち上げっぱなしで.vboxファイル編集してもうまく行かないので注意。.vboxファイルは仮想マシン起動時ではなく、VirtualBox本体を立ち上げるときに読み込まれるっぽいです。

ブログ更新のペースが掴めてきたぞ!この調子でたくさん書けたらいいなー。

 

Mavericks上のVirtualBoxにMountain Lionをインストール

先日ようやく自宅MacにMavericksをインストールしましたが、AirMac ユーティリティ 5.6.1が動かなかったりとか、まだMountain Lionを使いたいこともあるので、VirtualBox上にインストールすることにしました。

結論から言うと、ParallelsからVirtualBoxへの移行と同様、
「一度VMWare Fusion体験版上に仮想マシンを作って、vmdkファイルをVirtualBoxで開く」
という方法が一番スマートかと思います。

Fusionへのインストールはこちらの記事が参考になります。
http://act2blog.blogspot.jp/2013/06/vmware-fusion-5-0023mountain-lion.html
VMWareToolsはインストールしなくていいと思いますが、キーボードの認識処理は.vmxファイルを編集して設定しておきましょう。デフォルトではキー配列が英語になってしまいます。

VMWare上に仮想Mountain Lionができたら、以下の3ステップでVirtualBox用のゲストOSとして起動できます。
1. VirtualBoxの「新規」を選択し、名前を付けてOSを選択、続けてメモリ容量を設定
2. 「すでにある仮想ハードドライブファイルを使用する」を選択し、Fusionの.vmdkファイルを選択してゲストOS作成
3. ゲストOS作成後に「設定」画面の「システム」を選択し、「チップセット」を「PIIX3」に変更(これやらないと画面が真っ暗なまま何も立ち上がってくれません。)

実はFusion使わずに、最初からVirtualBoxにインストールこともできます。このあたりの記事に詳しいです。
http://d.hatena.ne.jp/zuisener/20130626/1372254879
http://ritalin.github.io/2012/12-17/hentai-advent-2012/
これらの記事には書いてないのですが、上記に書いた「システム」「チップセット」で「PIIX3」を選ばないと最初のインストーラが起動しませんでした。記事書かれた当時は不要な手順だったのかな?

この手順でVirtualBoxに直インストールできるのですが、なぜFusion経由をお勧めするかというと、VirtualBoxから直で入れたMountain Lionはキー配列を日本語キーボードに変更することが出来なかったからです。何かしらきっとやり方はあると思うのですが、僕が調べた範囲では見つからなかったので諦めました。どなたか成功したら教えて下さいませm(_ _)m

僕が今回試した順番はこんな感じ
1. VBで直接インストールを試すが、「PIIX3」を選ばなかったせいで失敗
2. Fusion体験版でインストール成功
3. VBにFusionから取り込もうとするが、「PIIX3」を選ばなかったせいで失敗
4. ようやく「PIIX3」だという原因が分かり、Fusionから取り込みが成功
5. キー配列が英語なので、Fusionの.vmxファイルを直して日本語化
6. 「PIIX3」でVB直インストールを試して成功
7. VBでキー配列を直す術が分からず

ちなみに、ホストのMavericksとFusion作Mountain Lionで同じApple IDでログインできたのですが、その後VirutalBoxに直で作成したMountain Lionに同じApple IDで入ろうとしたら「このコンピュータにはこれ以上ログインできませんよ」みたいに叱られてしまいました。同じホストにいくつも仮想Mac作ったらダメなのかも知れません。しっかり調べてないのでよくわからんですが。

ではでは。

  

Parallels DesktopからVirtualBoxへの移行

超久々の更新です。みなさんお元気でしょうか?
IT技術テーマのブログは、色々キャプチャ撮って凝って書こうとすると負担なので、今年からは軽い気持ちでサクサクたくさん書いていこうと思います。

Mac上で仮想Windows 7を使ってますが、Parallels Desktop 7がOS X 10.9 Mavericksに対応してないので、無料のOracle VirtualBoxに移行しました。たまーにしか立ち上げないのに定期的に数千円払うのもバカバカしいので。

ググっても日本語の解説ページがぜんぜん見つからなかったのですが、英語の解説ページを発見。
http://benfrain.com/osx-converting-parallels-or-vmware-to/

要は、Parallels -> VBの直接の移行は出来ないので、一度Fusionを経由してコンバートするということです。
1. VMware Fusionの体験版をダウンロードしてインストール
2. Fusionのインポート機能でParallelsの仮想マシンを取り込む
3. Fusionを閉じる
4. VirtualBoxの「新規」を選択し、名前を付けてOSを選択、続けてメモリ容量を設定
5. 「すでにある仮想ハードドライブファイルを使用する」を選択し、2.で作成された.vmdkファイルを選択してゲストOS作成
これで見事ParallelsからVBに完全移行できました!Ben Frainさんありがとう!

VirtualBoxでWindows起動したら、アクティベーションをやり直す必要があります。メモリを4GBに設定しましたが、なかなかサクサク動いてくれてます。Parallels 7より速いんじゃないか?
なんのせこれでやっとMavericksがインストールできる〜( ´ ▽ ` )ノ

ではまた。

 

Office 2011のスプラッシュに表示される「名前・会社名」を再設定

途中まで書いてたのにSafari落ちたよバカヤロー(T_T)
気を取り直してもっかい書きます。

Office製品起動時に↓みたいなスプラッシュが出ますよね。
MS、「Office for Mac 2011 Beta 3」でアイコンなどを変更 - 気になる、記になる…

この画像の黒塗り部分に「名前・会社名」が出ますが、2004の時には「会社名」に大学名・学部を入れてて、そのままになってました。Lion導入に伴ってOfficeも2011にバージョンアップしたんですが、インストール直後の設定で2004の「名前・会社名」を継承してしまい、さすがにイヤになったので再設定することにしました。

しかしググっても分からず。質問サイトに質問してみたのですが、やはり解決せず…
Office 2011のスプラッシュ表示を再設定

今日Microsoftのサポートに電話して解決したので、残しておきます。これはけっこう需要あるんじゃないですかね。質問サイトに書いた自分で色々試してたことが、けっこう惜しかったみたいです。Office再インストールまではしなくてもよかったのでした。

1. Office製品が起動している場合はすべて終了

2. 「書類」配下の「Microsoftユーザデータ」を削除
1f9feec8.png

ここで注意するのが、Outlookのメールを使ってる場合は、メールの受信データとかがこのフォルダ配下にあるので、そん時は全部消すのはヤバいそうです。俺はAppleのMail使ってたので問題なし。

「Office 2011 Identities」の中にメールデータが入ってるみたいなので、Outlook使ってる時はこれを退避しておきましょう。ただ、設定完了後に「Office 2011 Identities」だけごっそり戻すと元の設定とごっちゃになっておかしくなるかもしれないので、受信メールはOutlookの機能で書き出し、アカウント情報はメモを取っておくなどした方がいいとのこと。俺はOutlook使ってないので詳しくは分かりません。やる人は慎重にお願いします。

あと、「○○ Script Menu Items」というのもいくつかありますが、「スクリプトメニュー」を使ってる人はここも注意とのことです。俺には何のことかよくわかりませんでしたのでスルー。

3. 「ホーム」配下の「ライブラリ」に移動
$the Redのブログ
これが前の記事で苦労して撮ったスクリーンショットです(笑)
Lionでは「ライブラリ」がFinderから見えなくなっちゃったので、「移動」メニューを「Option」押しながら選択すると「ライブラリ」が現れますので、選択します。

4. 「ライブラリ/Preferences」配下の「com.microsoft.」で始まるファイルをすべて削除
83bd002c.png


5. 「ライブラリ/Preferences」配下の「Microsoft」フォルダを削除
dafbbcf4.png


6. Wordを一番始めに起動
サポートのお兄さんによると、上記の操作したあとでExcelとか他のソフトを最初に立ち上げようとしても、起動すらしてくれないそうです。Wordから起動すればOK。そうすると「姓」「名」「会社名」を再設定する画面が無事出てきました!
デフォルトでは、アドレスブックの自分のアドレスに書いてある「姓」「名」「会社名」が入っていました。「会社名」を空欄にして設定完了( ´ ▽ ` )ノ

スプラッシュのスクリーンショット撮りたかったんだけど、一瞬しか出てこないので、アクションゲーム苦手な俺にはそんな早技無理でした(´・ω・`)



Macのメニューのスクリーンショット&スクリーンショットの影を消す

この記事を参考にさせていただきました。
Macのキャプチャ機能でディスプレイ画面の一部のスクリーンショットを撮る方法

メニューのスクリーンショットを撮りたい場合、基本は「一度メニューを出してから『Command+Shift+4+Space』のカメラカーソルで撮影」でOKです。
the Redのブログ

で、今やりたかったのは「Optionキーを押した状態でのメニューのスクリーンショット」なのですが、メニュー開いてOptionキー押したまま「Option+Command+Shift+4+Space」やってもスクリーンショット撮れません。でもメニュー開いて「Command+Shift+4+Space」押したあとにOption押しても、メニューはOption押した状態になってくれません。

…と最初は思ったのですが!
Optionキーを押しながら我慢して数秒待っていると、Optionキー押した状態のメニューに変わりました。「ライブラリ」が増えてるでしょ?こんなんでMacの処理が重たくなるとも思えないし、数秒待つ理由はよく分からんですが。
the Redのブログ

さらに、メニューアイテムの上にマウスポインタ置いて数秒待つと、
メニューアイテムを選択した状態でスクリーンショット撮ることも可能です。
the Redのブログ

あれ~、このブログプレビューしてみて気付いたけど、Optionキー押して撮ったスクリーンショット、影が付いてないね。
Macのスクリーンキャプチャ機能で撮影したウインドウの影をなくす方法
こんな記事もあったけど、どうやらこんな裏技使わなくても、Optionキー押した状態でウインドウのスクリーンショット撮れば、その時だけ影付かなくなるみたいです。もしかしてLionからなのかな?

ぢゃあ「Optionキー押してメニューのスクリーンショットを影付きで撮る」はどうするのだろう?
別に影付いてても付いてなくても今はいいからこれ以上は調べませ~ん(笑)
誰か分かったら教えてください。

実はあることをブログに書こうとして、メニューのスクリーンショット載せたいのに撮れねぇよ!って思って色々試した結果、別記事が書けてしまいました(笑)
3つめのスクリーンショットを使った記事を、今日中にもひとつアップします!

--
2011/08/31 追記

上に書いてた謎が解けました。「Optionキー押して数秒待たないとOptionキー押した状態のメニューに変わらない」という、これこそがヒントでした。

Optionキー押してからメニューが変わるまでの数秒の間にスクリーンショットを撮れば、影無しで標準のメニューが撮れます。

the Redのブログ
いえーい。

逆に、Optionキー押して数秒待ち、Optionキー押した状態のメニューになったあと、Optionキーを離してすぐにスクリーンショット撮ると、「Optionキー押してメニューのスクリーンショットを影付きで撮る」ことにも成功しました!
$the Redのブログ
いえーい。

要は、「デフォルト項目・Optionキー項目」の両方を「影付き・影無し」でスクリーンショット撮れるように、Optionキー押してもすぐにはメニュー項目に反映されないようになってるのですねー。

さてさて、もう一つ新事実発見。スクリーンショットの撮り方次第で、画像が細長い状態で撮れることがあります。
$the Redのブログ
影付き

$the Redのブログ
影無し

本当はこの細長い画像がいつものメニューのサイズで、正解なのです。メニュー開いた状態で「Command+Shift+4」押すと、一度メニューはShift押した状態のこんなメニューに変わるんですね。
$the Redのブログ

この「デスクトップの起動ディスクを選択」を表示させるために、横幅が広がります。でそのあとShiftを離すと、デフォルトの「内包しているフォルダ」に戻るのですが、何故か横幅は戻りません。横幅戻らないのはスクリーンショット撮ろうとしてない場合も一緒ですね。これバグっぽく見えるなぁ。

広がった横幅を元に戻すには、そのまま隣の「表示」メニューとかにマウスカーソルを移動させて隣のメニューを出したあと、また元のメニューにマウスカーソル合わせると、通常の細いサイズに戻っているのですね。横幅にこだわりたい人は、一度隣のメニューに合わせてから目的のメニューに合わせ直しましょう。

後半ひじょ~にマニアックなネタになってしまいましたね(笑)
誰かのお役に立てば幸いです( ´ ▽ ` )ノ


Lion+Xcode 4.1でCreated byに表示される名前の変更方法

さっきまで飲み会やってましたが、
性懲りもなく、酔っ払ったまま本日4回目のブログ更新であります!

Xcodeで新規ソース作った時にヘッダーコメントの「Created by」に表示される名前ですが、
これを変更する方法が従来と違うようなのです。

ネットの記事を読むと、このブログ書いた時点ではどこの記事でも
「システム環境設定」→「アカウント」の「フルネーム」に書いた名前が
Xcodeの「Created by」に反映されるとなっているんですが、
Lion+Xcode 4.1では、そこを変更しても関係ありませんでした。

「Copyright」に入る会社名は、
「アドレスブック」の「自分」の「会社名」になる仕様です。
これは現在も変わりません。
もしかして…と思って、「アドレスブック」の「自分」の「名前」を変更してみたら、
「Created by」に反映されました!!!

Lionでの変更か、Xcode 4.0/4.1での変更かは分かりませんが、
現在「Created by」には、「アドレスブック」の「自分」の「名前」が反映されるようです。
「Copyright」と共通の場所にしたかったんでしょうかね。

さて、これが分かったところで思ったのですが、
やはり実名主義が進んでいるのかなぁ、と。
アカウントのフルネームはハンドルネームっぽいのを設定してるとしても、
アドレスブックの自分の名前はリアルな名前入れてる人が多いんじゃないでしょうか。

このブログ書く時にソースのハードコピーを載せることがたびたびあると思いまして、
実名は公開したくないと思って、変更しておこうと思ったんですが、
アドレスブックの自分の名前に「the Red」って入れるのもどうかなぁ…と思う次第です。

どのみち、iOSアプリを正式公開する時は堂堂と実名で公開するつもりなので、
ブログでも公開してもいいのかな。
近々本名晒すと思いますが、まだ内緒にしときます(・∀・)

1:56AM追記
「本日4回目のブログ更新」とか申し上げましたが、
すでに日付が変わっておりましたので、8/12の投稿は3つ、本日としては1つ目の投稿でございました。
お詫びして訂正いたします。誠に申し訳ありませんでした。(゜Д゜)

 

Program received signal: "SIGABRT"

ハマったとこは全て記録残す覚悟でブログを書きます!

ボタンにIBAction設定して、ボタン押したらラベルが変わる簡単なプログラム作ったのですが、
ボタンを押すと、落ちます!

main.mのソースが表示され、

int retVal = UIApplicationMain(argc, argv, nil, nil);

の横に緑色のコメントで
Program received signal: "SIGABRT"

と出ます。
71625dd4.png


コンソールログはこんな感じ。

2011-08-12 17:57:49.613 HelloWorld2[2673:b303] -[HelloWorld2ViewController tapBtn:]: unrecognized selector sent to instance 0x689b400
2011-08-12 17:57:49.616 HelloWorld2[2673:b303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HelloWorld2ViewController tapBtn:]: unrecognized selector sent to instance 0x689b400'
*** Call stack at first throw:
(
0 CoreFoundation 0x00dc05a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f14313 objc_exception_throw + 44
2 CoreFoundation 0x00dc20bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x00d31966 ___forwarding___ + 966
4 CoreFoundation 0x00d31522 _CF_forwarding_prep_0 + 50
5 UIKit 0x000124fd -[UIApplication sendAction:to:from:forEvent:] + 119
6 UIKit 0x000a2799 -[UIControl sendAction:to:forEvent:] + 67
7 UIKit 0x000a4c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
8 UIKit 0x000a37d8 -[UIControl touchesEnded:withEvent:] + 458
9 UIKit 0x00036ded -[UIWindow _sendTouchesForEvent:] + 567
10 UIKit 0x00017c37 -[UIApplication sendEvent:] + 447
11 UIKit 0x0001cf2e _UIApplicationHandleEvent + 7576
12 GraphicsServices 0x00ff9992 PurpleEventCallback + 1550
13 CoreFoundation 0x00da1944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
14 CoreFoundation 0x00d01cf7 __CFRunLoopDoSource1 + 215
15 CoreFoundation 0x00cfef83 __CFRunLoopRun + 979
16 CoreFoundation 0x00cfe840 CFRunLoopRunSpecific + 208
17 CoreFoundation 0x00cfe761 CFRunLoopRunInMode + 97
18 GraphicsServices 0x00ff81c4 GSEventRunModal + 217
19 GraphicsServices 0x00ff8289 GSEventRun + 115
20 UIKit 0x00020c93 UIApplicationMain + 1160
21 HelloWorld2 0x00002019 main + 121
22 HelloWorld2 0x00001f95 start + 53
)
terminate called throwing an exceptionsharedlibrary apply-load-rules all
Current language: auto; currently objective-c
(gdb)


この原因は、添付したハードコピーの部分です。(都合良く絵文字があったもんだw)
5cfc049c.png


引数ありで一度IBActionに接続してて、
そのあとソースのIBActionだけを削除して、引数無しでIBActionに再度接続してたのです。
この時引数有りの接続が消えてなくて、対応するソースが無い状態でした。
実行時に引数有りIBActionを呼ぼうとして落ちてたと考えられます。

というわけで、の部分の×ボタンを押して引数有りの接続を削除してやると、解決しました。

初心者で俺みたいにハマる人がいたら参考になればと思って書いてますが、
俺の勉強が一向に進まんw

 

Assistant Editorへのドラッグ&ドロップでIBActionが作れない

記念すべき開発ブログ第一回です。

さっきちょっとハマった点について。

Xcode 4 移行ガイド:Xcode 4 におけるユーザインタフェースのデザイン
このページの真ん中過ぎたあたりに、
「Interface Builder オブジェクトとソースコードを直接接続する」
というのがあります。
Xcode 4では、Assistant Editorを使って
IBOutletとIBActionの文をドラッグ&ドロップで挿入できるとのこと。
Xcode 4から入った僕はふ~んて感じですが、Xcode 3の時はもっと不便だったようです。

さてさて、読んでた本の通りにやってみたつもりなのですが、
IBOutletは挿入できるのにIBActionが挿入できなくて30分くらい悩んでしまいました。
理由は簡単で、Labelをドラッグしてたからでした。
Labelは単なる文字表示するだけなので、
Actionなんか何も出来ないから選択肢にもAction出てこないんですね。
Round Rect ButtonとかSegmented Controlで試すと、ちゃんとIBActionが挿入できました。

読んでた本はこれです。


P.61~62の「方法3」に今の件について書いてあります。
よく見ると、IBActionを挿入してる時に使ってるオブジェクトは
LabelじゃなくてRound Rect Buttonぽいですね。
一言書いてくれりゃいいのによぉ。。。