ターミナルが文字化けした時の対処方法

Screen Shot 2014-02-08 at 7.46.36 PM

朝起きたら、ログを表示していたターミナルがエラい事に・・。
上のスクショのようにアルファベットさえ文字化けしてしまう事ってたまにありますよね。
例えば、バイナリファイルを開いてしまった時とか。
この状態になると、いつもターミナルを一旦閉じて開き直していました。

が。

ターミナルを開き直さなくても元に戻せる方法があったのです!!
方法は簡単。

#!bash
echo ^[c

エスケープシーケンスのcを入力するので、下記のようなキーボード入力を行います。

echo <ctrl -V><esc>c<enter>

ほら!!
なおりましたね 🙂
tmux内のttyでも有効なので、お試しあれ^^

[vim] 挿入モードからノーマルモードに戻った時にペーストモードを自動で解除する方法

vim

vimで長い文字列をコピペする時は、オートインデントやオートコンプリートをオフにするために、:set pasteでペーストモードに入りますよね。で、挿入モードになって、ペーストする。
最後に、ノーマルモードに戻って:set nopasteで解除。

めんどい!!

そんなずっとペーストモードでいる事は無いので、挿入モードからノーマルモードに戻る時に自動で解除して欲しいですよね。
その方法をご紹介します!
チョー簡単。下記コマンドを打つだけ!

" Turn off paste mode when leaving insert
autocmd InsertLeave * set nopaste

Auto commandを使って、InsertLeaveイベント時にset nopasteコマンドを実行するという意味です。
これを.vimrcに書いておけばOKです!

Sublime TextからSnippetをGistに保存する方法

sublime+gist

みなさん、コードのスニペットとか作業ログの破片ってどう管理してますか?
僕はいままでファイルに保存するという面倒な方式を取っていたんですが、ついに耐えきれなくなりました(笑)

個人的には:

  • iMacとMacbook Airの2台でSnippetをCRUD&共有したい
  • 検索したい
  • タグ付けで分類出来れば尚いい

そこでGistを検討してみました。これならプライベートでコードをクラウドに保存出来ます。
バージョン管理まで出来るオマケ付き!
ただ、いちいちブラウザでページを開くのは面倒。
ここに手軽に保存できれば便利ですね!

調べてみたところ、Sublime TextにGistへCRUD出来るプラグインがあるとの事。
ショートカットで即アップできるしチョー便利そう!
早速、使ってみましょう。

Gistとは?

GitHubが提供する、コードのスニペット保存サービスです。

Sublime Package Controlを入れる

プラグインを入れるには、Sublime Package Controlをインストール必要があります。
下記ショートカットキーを押して、コンソールを開きましょう:

Ctrl + `

sublime-text-01

https://sublime.wbond.net/installationからインストール用コマンドを入手して、貼付けてEnter
数秒ほどでインストールが完了するかと思います。

sublime-text-02

Gistプラグインをインストールする

Command + Shift + Pを押してコマンドパレットを呼び出し、「Install」と入力してみてください。
Package Control: Install Package という項目が出るはずです。
これを選択してください。

sublime-text-03

パッケージ一覧の読み込みが開始され、しばらくすると表示されます。

sublime-text-04

ここで、gistと入力して絞り込みます。下の画像のようにハイライトされているGistという名前のパッケージを選択します。

sublime-text-05

しばらくするとインストールが完了します。
再度、Command + Shift + Pでコマンドパレットを呼び出してください。
そして、gistと入力すると、Gist用のコマンドが出てくる事を確認します。

sublime-text-06

GitHubアカウントを設定する

次に、あなたのgistアカウントと紐付けます。
メニューからPreferences -> Package Settings -> Gist -> Settings - Defaultを選択します。

sublime-text-07

下図のように設定が開かれます。
GitHubのアプリ設定画面でPersonal Access Tokensを発行します。
発行したトークンを設定ファイルのtokenという項目に入力して保存します。

sublime-text-08

これで準備は完了!

使い方

基本はコマンドパレットから実行します。
それでも面倒!!という方には、ショートカットがあります!

ショートカットキー 動作
Command + K, Command + P プライベートGistを保存
Command + K, Command + I パブリックGistを保存
Command + K, Command + O 保存したGistを開く
Command + K, Command + S Gistを上書き保存

タグ付けにはGistBoxがオススメ

gistbox

http://www.gistboxapp.com/

Evernoteみたいにフリーフォームでタグを入力できないのが少し不便だけど、オーガナイズ機能はイケてる!

HTML5で動くUnrealEngineが凄すぎる件

unrealengine

unrealengine

百聞は一見に如かず。美しさ半端ない!!

http://www.unrealengine.com/html5/

iMac + Chromeでは全く問題無く、サクサク動きました。
読み込みに2、3分かかるのが少し長いかなと思ったくらい。
WebGLで有名どころのレンダリングエンジンがここまでの完成度で動くとなると、FirefoxOSのようなWWWベースのOSでも高品質の3Dゲームが楽しめる日も近いって事ですね!!
そのためには、スマホやタブレットでどこまでのパフォーマンスを出せるかですねー。

ちなみに、iOSではまだ動かないようでした。

Ruby on RailsとTwitter Bootstrap 3でパンくずリストを追加する方法

breadcrumbs

breadcrumbs_on_railsがオススメ

breadcrumbs_on_rails はbootstrapに限らずパンくずリスト(Breadcrumbs)の実装が簡単に出来るのでオススメです。

インストール方法

Gemfileに下記を追記:

gem "breadcrumbs_on_rails"

$ bundle installでサクっとインストールしましょう。

基本の使い方

controllerに記述する

class MyController

  add_breadcrumb "home", :root_path
  add_breadcrumb "my", :my_path

  def index
    # ...

    add_breadcrumb "index", index_path
  end

end

app/controllers/application_controller.rbに追加する事で、サイト全体でデフォルトのパンくずアイテムを追加出来ます。
「ホーム」みたいな項目はそっちに記述するといいかと思います。

viewに記述する

slimだと以下のような感じでOK:

- title "タイトル"
- add_breadcrumb title, request.fullpath

controllerで指定したものの後に追加されます。
viewに書く方がMVCアーキテクチャにより適合していますね。

出力する

app/views/layouts/application.html.slimなどの任意の行に下記を追記しましょう。

= render_breadcrumbs

Bootstrap 3で使う

上記の手順でパンくずリストを出力すると、下記のように単純にaタグの羅列になります。

<a href="http://odoruinu.net/">Home</a> > <a href="/blog">Blog</a> > <a href="/blog/page">Page</a>

ここでは、bootstrap 3のスタイルで書きたいので下記のように出力して欲しいところ:

<ol class="breadcrumb">
  <li><a href="http://odoruinu.net/">Home</a></li>
  <li><a href="/blog">Blog</a></li>
  <li class="active">Page</li>
</ol>

Bootstrap用ビルダーを作る

breadcrumbs_on_railsではカスタムなフォーマットでパンくずリストを出力するための方法が用意されています。
これを Builder と呼びます。

さっそくBootstrap用のBuilderを作ってみましょう。
以下のような内容をlib/bootstrap_breadcrumbs_builder.rbに作ります:

class BootstrapBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
  def render
    @context.render "/application/breadcrumbs", elements: @elements, b: self
  end

  def compute_name(element)
    case name = element.name
    when Symbol
      @context.send(name)
    when Proc
      name.call(@context)
    else
      name.to_s
    end
  end

  def compute_path(element)
    case path = element.path
    when Symbol
      @context.send(path)
    when Proc
      path.call(@context)
    else
      @context.url_for(path)
    end
  end
end

そして、app/views/application/_breadcrumbs.html.slimに以下のようなファイルを作ります。

- unless elements.length==1 && current_page?( b.compute_path(elements[0]) )
  ol.breadcrumb
    - elements.each do |element|
      li class=( "active" if current_page?( b.compute_path(element) ) )
        =link_to_unless_current b.compute_name(element), b.compute_path(element), element.options

最後に、レイアウトのファイルに以下のように追記すればOK!

#!slim
= render_breadcrumbs builder: ::BootstrapBreadcrumbsBuilder

Breadcrumbs

バッチリ!

Core Dataライブラリと便利ツールの紹介

iOSアプリにおいて、Core Dataは永続的で大きなオブジェクトグラフが取り扱えるモデルを提供する。
多くの有名アプリで使われているけど、複雑だしそのまま使おうとすると開発効率が悪い。

Core Dataを置き換えようとするライブラリが多くあるが、さらに多くのライブラリはCore Dataをよりよくしようとするものだ。
それらのライブラリは糖衣構文(シンタックスシュガー)からフルスタックのフレームワークまで幅広い。

本記事では、CoreDataを取り扱うオープンソースのライブラリを紹介する。
あなたのCore Data要件にマッチするものを見つけて下さい。

ライブラリ一覧

ラッパー


Magical Record
Saul
Mora
http://ghbtns.com/github-btn.html?user=magicalpanda&repo=MagicalRecord&type=watch&count=true
Objective-Record Marin
Usalj
http://ghbtns.com/github-btn.html?user=mneorr&repo=Objective-Record&type=watch&count=true
SSDataKit Sam
Soffes
http://ghbtns.com/github-btn.html?user=soffes&repo=SSDataKit&type=watch&count=true
ios-queryable Marty
Dill
http://ghbtns.com/github-btn.html?user=martydill&repo=ios-queryable&type=watch&count=true

ReactiveCoreData
Jacob
Gorban
http://ghbtns.com/github-btn.html?user=apparentsoft&repo=ReactiveCoreData&type=watch&count=true

アダプター

RestKit Blake
Watters
http://ghbtns.com/github-btn.html?user=RestKit&repo=RestKit&type=watch&count=true

AFIncrementalStore
Mattt
Thompson
http://ghbtns.com/github-btn.html?user=AFNetworking&repo=AFIncrementalStore&type=watch&count=true
MMRecord Conrad
Stoll
http://ghbtns.com/github-btn.html?user=mutualmobile&repo=MMRecord&type=watch&count=true

SLRESTfulCoreData
Oliver
Letterer
http://ghbtns.com/github-btn.html?user=OliverLetterer&repo=SLRESTfulCoreData&type=watch&count=true
Overcoat Guillermo
Gonzalez
http://ghbtns.com/github-btn.html?user=gonzalezreal&repo=Overcoat&type=watch&count=true
Mantle GitHub http://ghbtns.com/github-btn.html?user=github&repo=Mantle&type=watch&count=true

シンクロナイザ

TICoreDataSync Tim
Isted
, Michael Fey,
Kevin
Hoctor
, Christian Beer,
Tony
Arnold
, and Danny Greg
http://ghbtns.com/github-btn.html?user=nothirst&repo=TICoreDataSync&type=watch&count=true

UbiquityStoreManager
Maarten
Billemont
http://ghbtns.com/github-btn.html?user=lhunath&repo=UbiquityStoreManager&type=watch&count=true
FireData Jonathan
Younger
http://ghbtns.com/github-btn.html?user=overcommitted&repo=FireData&type=watch&count=true

ユーティリティ

mogenerator Jonathan
‘Wolf’ Rentzsch
http://ghbtns.com/github-btn.html?user=rentzsch&repo=mogenerator&type=watch&count=true

ラッパー

ラッパーライブラリはいくつかの糖衣構文や便利メソッド群を提供するもの。
Core Dataの冗長で複雑なAPIを簡単にしてくれる。

例えば、新しいManaged ObjectをManaged Object Contextに挿入するには、NSManagedObjectでもNSManagedObjectContextのクラスメソッドではなく、NSEntityDescriptionのものを呼び出す必要がある。
それは、NSEntityDescription +insertNewObjectForEntityForName:inManagedObjectContext:だ。
わかりにくい!

Core Dataのこのような分かりにくいAPIをラフにラップするオープンソースのライブラリが沢山存在している。
AppDelegateの外でMainコンテキストとPrivateコンテキストを管理できるものや、クエリの生成を簡単にできるものなどなど。

SSDataKit

Core Dataのアプリケーションを書くのには、多くのボイラープレート(初めに必要なコード)が必要だ。
これはだるい。
SSDataKitはこれを楽にする。

Active Recordにインスパイアされたもの

ある方法論を学んだら、それを別の技術にも適用しようというアイデアは何も驚くものではない。
Active Recordに詳しいRubyプログラマーがiOSアプリの開発に流入した事によって、それは起こった。

Magical Record

MagicalRecordはRuby on RailsのActive Recordの取得方法にインスパイアされたもの。
このコードのゴールは、Core Data関連のコードをクリーンアップし、シンプルで、一行で取得できる、かつ最適化のためにNSFetchRequestを変更できる余地を残す事。

Objective-Record

ライトウェイトにActiveRecord的にCore Dataのオブジェクトを取り扱えるもの。
シンタックスはRuby on Railsに酷似している。
AppDelegateのコードはなし。
Kiwiで完全にテストされたライブラリだ。

LINQにインスパイアされたもの

面白いことに、.Netから来た開発者も、同じように慣れ親しんだパラダイムをiOS開発でも行おうとする。
それは、LINQのパラダイムだ。

LINQはSQLライクだが、言語に統合されたものだ。
NSPredicateNSSortDescriptorのようなキーバリューコーディングは、以下のようにいい感じの構文になる:

from c in SomeCollection
  where c.SomeProperty < 10
  select new {c.SomeProperty, c.OtherProperty};

ios-queryable

ios-queryable supports LINQ-style query composition and deferred execution, and implements a subset of IEnumerable’s methods, including where, take, skip, orderBy, first/firstOrDefault, single/singleOrDefault, count, any, and all.

ReactiveCocoaにインスパイアされたもの

ReactiveCocoa は、Objective-CでFunctional Reactive Programmingのパラダイムを可能にするライブラリ。
それをCore Dataにも使ったものが存在する。

ReactiveCoreData

ReactiveCoreData (RCD)は、ReactiveCocoaの世界にCore Dataを持ち込もうとするもの。

アダプタ

ほとんどのiOSアプリはウェブサービスと通信する。
Core Dataを使うアプリにとって、RESTまたはRPCスタイルのウェブサービスからレコードを取得・更新・削除する事は共通だ。
ローカルのキャッシュとサーバ側との一貫性を保持するのは、トリッキーだ。

オブジェクトを常に最新の状態に保ち、重複を削除して、APIのエンドポイントとエンティティをマップし、衝突を調整し、ネットワーク到達性を管理する…これらは頑健なクラサバ型アプリの作成においてデベロッパが直面するいくつかの問題だ。

幸運な事に、これらの心配を軽減するライブラリが多く存在する。

RestKit

RestKitは、RESTfulなウェブサービスとクライアントを連携させるためのiOSとMac OS Xで動作するモダンなObjective-Cフレームワークだ。
Core Dataとシームレスに統合するオブジェクトマッピングエンジンを提供し、AFNetworking上に構築されたプリミティブなHTTP通信機能群を提供する。
エレガントで入念にデザインされたAPIによって、RESTfulのモデリングは魔法のように簡単になる。

AFIncrementalStore

AFIncrementalStoreはNSIncrementalStoreのサブクラスで、AFNetworkingを使ってプロパティとリレーションシップが必要な時に自動で取得してくれる。

MMRecord

MMRecordはブロックベースでシームレスにウェブサービスと統合できるiOSとMac OS Xで動作するライブラリ。
Core Dataモデルの構成を利用して、APIのレスポンスから自動的にオブジェクトグラフを作成する。
どのネットワークライブラリでも動作するようにできていて、シンプルな導入方法を提供する。

SLRESTfulCoreData

SLRESTfulCoreDataはAFNetworkingSLCoreDataStack上に構築されたもので、JSON REST APIとCore Dataモデルを数分で統合できる。

Overcoat

OvercoatはAFNetworkingの拡張で、デベロッパに簡単にMantleモデルオブジェクトが使えるようにする。

Mantle

MantleはCocoaとCocoa Touchアプリケーションで簡単にモデルレイヤーを記述できるようにする。

シンクロナイザ

アダプターはRESTなどの一般的な用途のインターフェースを通じて情報を同期するのに対して、シンクロナイザはもっと直接的なプロトコルを用いて、よりよい統合性とパフォーマンスを提供する。

TICoreDataSync

MacとiPhone、iPhone同士、iPhoneとiPadなど、デバイス間でCore Dataを自動で同期する。

UbiquityStoreManager

UbiquityStoreManagerはCore DataでiCloud統合を実装するコントローラ。

FireData

FireDataはシームレスにCore DataとFirebaseを統合する。

ユーティリティ

Mogeneratorを紹介しないで、Core Data系ライブラリを紹介しているとは言えないだろう。
MogeneratorはiPhone以前の時代から存在し続けている、Core Dataを使ったアプリケーションの開発において欠く事ができないツールだ。
Core Dataはここ数年で大きく変わったのに、Apple提供のツールは機能性に乏しいままだ。
でも幸運なことに、Wolf Rentzsch氏がカバーしてくれた。

Mogenerator

Mogeneratorはコマンドラインツールで、.xcdatamodelファイルを渡すとエンティティごとに2つのクラスを生成する。
1つめのクラスは_MyEntityで、マシン向けのもので継続的に上書きされ、データモデル設計と同じ状態に保たれる。
2つめのクラスはMyEntityで、_MyEntityのサブクラス。こっちはカスタムなロジックを記述するためのもので、生成以降は上書きされない。

いかがでしたでしょうか。
万能薬は存在しませんが、用途ごとに合ったものを使う事で劇的に開発効率は向上するでしょう。

(翻訳元: Core Data Libraries & Utilities – NSHipster)

Twitter Bootstrapで良いアイコンが無い?じゃあFontAwesome使おう!

FontAwesome

Twitter Bootstrapのglyphicon便利ですよね!手軽に色んなアイコンが使えて。
でもなんか足りない!こう、もっとこういうのが欲しい!!って時にオススメなのがFontAwesomeです。

FontAwesome-icons

紹介しきれないぐらいに沢山のアイコンが揃っています!!
twitterやfacebookなどの有名サービスのアイコンも用意されているので、これさえあれば滅多に困らないと思います。