コンピュータ

...now browsing by category

 

NSRange を Range<String.Index> に変換

火曜日, 4月 7th, 2015

Swift でちょっと苦労したのでメモ。

UITextFieldDelegate で返される NSRange を String の操作に使おうとしたら、そのままでは使えませんでした。調べてみると String の操作メソッドでは Range<String.Index> が使わていました。文字の位置を表す型として int や NSInteger ではなく、String.Index という専用の型が設けられたようです。

int から String.Index には直接変換できないので、advance関数を利用します。苦労の末に以下の方法で NSRange から Range<String.Index> への変換が出来ました。

    func rangeWith(range: NSRange) -> Range<String.Index> {
        var string = "dummy"
        var startIndex = advance(string.startIndex, range.location)
        var endIndex = advance(startIndex, range.length)
        return Range(start: startIndex, end: endIndex)
    }

ダミーのString使ったりするのはイマイチなので、なんか良い方法はないかなー

中古の MacBook Air がやってきた

木曜日, 3月 5th, 2015

IMG_2485

子ども2号が Mac Book Air を買いました。
中古の11インチ、2010年モデルです。

秋葉原とか行って色々と見て回ったのですが、どこも値段は5万円くらいが下限でした。

地元の PC DEPO にも下限の値段で売っている個体があったので、そちらで買う事にしました。
展示されていて、動作していたので、動きやディスプレイのドット欠けを確認して買えたのが良かったです。
保証期間内に何かあったときに返品しに行くのも楽だしね。

これでうちにある MacBook は3台になりました。
それと Linux PC が1台。
ちなみに Windows PC はありません。:-P

Xcodeプロジェクトの.gitignore

土曜日, 1月 10th, 2015

色々な案があって迷ったけど、一番自分に合っているのをまとめておく。


# Mac
.DS_Store
*.swp
!.gitkeep

# Xcode
build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
*.xcworkspace
!default.xcworkspace
xcuserdata
profile
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

# VCSのメタデータが含まれ、コミットしてしまうとmergeが困難になるなどの問題が発生する
# http://stackoverflow.com/questions/18340453/should-xccheckout-files-in-xcode5-be-ignored-under-vcs
*.xccheckout

#CocoaPod
Pods/*

ベースはXcodeでiOSアプリ開発をする時の.gitignoreを使わせてもらった。

Podfile.lockは迷ったけど、Xcode&gitで開発する時の.gitignoreのコメント欄にikesyoさんが書いた以下の文を参考にして、gitで管理する事にした。

lockファイルが存在する場合、そこに書かれているバージョンを参照してダウンロード・インストールするので、複数人の間でバージョンを固定できます。

ライブラリのバージョンアップはpod update(新しいバージョンが利用できる場合、lockファイルも更新されます)、新しいバージョンが出ていないか確認したい場合には pod outdatedを使えばいいですね。

【2015/09/17】
*.xccheckoutを追加

MacBook 2008 LaterのHDDをSSDに換装してみた

土曜日, 10月 18th, 2014

ADATA_SX900

家族が使っているMacBook 2008 Laterが起動しなくなりました。

最近、動作が異様に遅いので、ディスクユーティリティで診断してみたところ、エラーが多数出ています。command+Rキーを押しながらリカバリーモードで起動して修復してみたところ、「エラー:ライブファイルシステムの修復はサポートされていません。」と表示され修復できませんでした。その後、再起動したら、?マークのフォルダアイコンが点滅し続けて、OSが立ち上がらなくなりました。

20141013_mac_error

これはHDDが壊れたと思い、近所のヤマダ電機へ。しかし、2.5インチのHDDは一種類しかなく、値段も高い。仕方ないので秋葉原まで買いに行きました。

以前から変えるならSSDにしようと思っていたので、2.5インチSATA接続のSSDを探して、まずは秋葉館へ。128GBで充分かなと思っていたけど、128GBは一種類のみ。続いてドスパラへ。こちらではいくつか選択肢があったので、値段の割に書き込み速度が速いADATA SX900に決めました。

家に帰って早速入れ替え。0番のプラスドライバーと、T6のトルクスレンチを使います。詳しい交換方法はいつものごとくIFIXITのサイトを参照。

MacBook Unibody Model A1278 Hard Drive Replacement

入れ替えたらCommand+Rキーを押しながら起動します。リカバリーモードになるので、ディスクユーティリティでフォーマット。設定はデフォルトのまま、Mac OS 拡張(ジャーナリング)にGUIDパーティションで。

そしてOSのインストール。無線LANだと遅いので、10BASE-Tで有線接続。しかし、途中から変えたせいか、残り時間表示が消えた画面で、いつまで待ってもOSインストールが終わらない。24時間経ってもだめだったので、再起動して再び挑戦。今度は2時間くらいで完了しました。

次にデータの復旧ですが、Time Capsuleから戻そうとしたら、MacBook 2008 Laterのデータが読み込めません。最近調子が悪かったので、Time Machineを停めていたけど、それが原因なのか、それともHDDが壊れかけていたから、項目は出るのにバックアップが存在しないとしか表示されません。

仕方ないので、壊れたHDDを他の外付けHDDの筐体に入れてUSB接続したところ、なんとかデータは読める模様。ユーティリティに入っている移行アシスタントを起動して、壊れたHDDからのデータ読み出して、新しいSSDに書き込みを開始しました。HDDが壊れているため、途中何度も読み込みが滞り、一時は残り時間9時間と膨れたりしましたが、結局3時間ほどで全データの移行に成功。移行後のSSDの使用容量は90GBくらいでした。

スクリーンショット 2014-10-18 17.09.20

起動してみると、以前と比べてとてつもなく速い、ほんと爆速。以前はユーザの切り替えで5分くらいかかったのが、10秒で済んでしまいます。まあ、これはSSDのおかげというよりも、壊れかけたHDDがリードエラーを頻発していたのが原因と考えられますが・・・。それ以外でも全体的に動作が速くなり、とても満足のいく結果が得られました。

PCの動作がやたらと遅い時は、HDDが壊れかけている事も疑った方がいいですね。

オープンハード勉強会#1に行って来た

金曜日, 10月 3rd, 2014

IMG_2108

9/28にギークハウス神田秋葉原で行われたオープンハード勉強会に息子を連れて行って来ました。
オープンハード勉強会 #1

今回は小学生あたりからチャレンジできる内容ということで、参加者に小4の子が名乗りを上げていました。それではうちもと考えて息子を連れて行くことにしました。

今回の勉強会を主催された秘密結社オープンフォースの河野さんは初心者向けの電子工作の作例を集めたレシピ集を出版されたのですが、今回の勉強会はその本をテキストにしました。

Raspberry Piを使って Python をはじめて触るというテーマで、簡単な電子回路の実験を行います。Raspberry PiのGPIOを通じてブレッドボード上のスイッチやLEDに接続し、Pythonからスイッチが押されているかどうかをチェックしたり、LEDを点灯/消灯させたりします。

小4の子は、普段からScratchでプログラムを書いていて、夏休みの自由研究でRaspberry Piを乗せたロボットをScratchで制御するという高度な事をやっていました。対してうちの息子はそこまで使い込んでいません。Scratchのプログラムは完成させていないし、Raspberry Piもマインクラフト専用機となりつつあります。でもブレッドボードはRaspberry Piを買う前から使わせていたので、LEDの接続などは難なくこなしていました。

IMG_2113