読者です 読者をやめる 読者になる 読者になる

Rails でリクエストの HTTP ヘッダを取得してログに出力する

環境:rails 4.2.0 Rails でリクエストの HTTP ヘッダはrequest.headersから取得できる。 すべてログに出力するなら # すべてログに出力する request.headers.sort.map { |k, v| logger.info "#{k}:#{v}" } 個別に取得するなら # ユーザーエージェントを取得…

ClearDB に文字コード utf8mb4 で保存する

環境: ruby: 2.2.0 Rails: 4.1.8 ClearDB(MySQL): 5.5.40 Heroku の MySQL アドオン「ClearDB」で文字コードutf8mb4で保存する方法についてメモ。 Rails + MySQL でutf8mb4を扱う方法は以前書いた。 Rails4 で MySQL の utf8mb4 を扱う - xykのブログ Clear…

cat, less コマンドの表示を Syntax Highlight させる

環境: Mac Pygments という Python のパッケージがあり、その中の pygmentize コマンドラインツールを使うことでシンタックスハイライト表示できるようになる。 Pygments インストール まずは Pygments のインストール。 $ pip install Pygments または $ su…

Nginx + Unicorn + Sinatra 構成の設定メモ

以前 Nginx + Unicorn + Sinatra 構成のアプリを作成したが、その時に行った設定をメモしておく。 サーバのディレクトリ構成 $ tree /usr/local/app /usr/local/app ├── config.ru ├── log │ ├── unicorn.stderr.log │ ├── unicorn.stdout.log │ └── crawler…

XtraFinder の設定メモ

mac

Mac に Finder はイマイチ使いづらい。 ファイルを Enter で開けないところとか。 ダブルクリック、Cmd + O、 Cmd + ↓ などで開く。 他にもいろいろと不便を感じることが多かったので、 なるべくデフォルトのままで行きたかったけど XtraFinder を導入してみ…

NSUserDefaults を使ってアプリの初回起動判定を行う

環境:iOS Deployment Target 7.1 アプリの初回起動判定は NSUserDefaults でやるのがよいらしい。 以下のように NSUserDefaults を使って初回判定を行うメソッドを作った。 - (BOOL)isFirstRun { NSUserDefaults *userDefaults = [NSUserDefaults standardU…

Rails4 でカウンター用カラムをインクリメントする

環境: rails (4.1.6) activerecord (4.1.6) mysql2 (0.3.16) Rails4 というか Rails でカウンター用カラムをインクリメントする簡単な方法がないか調べてみた。 やりたいこと MySQL だったら以下のような SQL を発行したい。 update books set reviews_coun…

UITextField の inputView に UIPickerView を設定する

環境:iOS Deployment Target 7.1 以前、UIPickerView をキーボードのように表示・非表示させるというエントリーを書いたがもっと簡単なやり方を知ったのでメモしておく。 まず、以前のやり方は完了ボタンとそれを置くビューを自分で作って、UIPickerView と…

画面の向きを固定して回転を禁止する

環境:Xcode6 画面の向きを固定して回転しないようにする。 Xcode の プロジェクト -> Targets -> General > Deployment info > Device Orientation で設定する。 Device Orientation 説明 Portrait 縦画面、ホームボタン下 Upside Down 縦画面、ホームボタ…

Rails4 で MySQL の utf8mb4 を扱う

環境: MySQL Server version: 5.6.19 Rails 4.1.5 iPhone の絵文字を MySQL に登録しようとしたらMysql2::Error: Incorrect string value:...というエラーが出た。3バイトに収まらない4バイトUTF-8を扱うには MySQL 5.5.3 以上でキャラクタセットをutf8mb4…

UITextField, UITextView がキーボードで隠れないようにする

環境:iOS Deployment Target 7.1 UITextField、UITextView は入力フィールドにフォーカスが当たると画面下からキーボードが現れるが、この時に入力フィールドが画面下側にある場合にキーボードの裏に隠れてしまう問題がある。 やりたいこと 1画面に複数の U…

UITableView の`scrollToRowAtIndexPath:atScrollPosition:animated:`でエラー

環境:iOS Deployment Target 7.1 UITableView でスクロール位置を画面上部に戻そうとしてscrollToRowAtIndexPath:atScrollPosition:animated:メソッドを使っていたのだが、レコード0件時にエラーが発生した。 コード NSIndexPath *indexPath = [NSIndexPath…

UIPickerView をキーボードのように表示・非表示させる

環境:iOS Deployment Target 7.1 やりたいこと: ボタンタップ時にキーボードが下からシュッと出てくるようにピッカーを表示させたい。 完了ボタンのタップで決定、ピッカー以外の部分をタップした時にはピッカーを隠す。 こんなかんじ。 やってること ピッ…

Rails で UUID を作成する

環境:Rails4.1.6 Rails では SecureRandom が require なしで使えたのでSecureRandom.uuidで作成できた。 @user = User.new do |u| u.uuid = SecureRandom.uuid end あとはuuidtoolsというパッケージを使うやり方もあった。 Gemfile に gem 'uuidtools' を…

スクロール画面で固定されたビューを実現するには

環境:iOS Deployment Target 7.1 スクロールする画面上でも固定されてスクロールしない View を実装する方法。 UIScrollViewDelegate プロトコルを実装して、スクロールする度に呼ばれるscrollViewDidScroll:で scrollView.contentOffset プロパティの座標…

UIViewController で UITableView を実装する

環境:iOS Deployment Target 7.1 UITableViewController を使わず、UIViewController で UITableView を実装する方法について。 ヘッダファイルに UITableViewDelegate、UITableViewDataSource プロトコルを追加 UITableView オブジェクトを作成してdelegat…

Heroku で Rails4 + MySQL を動かす

環境は Mac。 Heroku に Rails4 + MySQL で動くアプリをデプロイする。 DB はデフォルトでは PostgreSQL が使われるが、 MySQL が使えるアドオンの「ClearDB」を導入する。 事前準備 Heroku アカウントは取得済み。 「heroku toolbelt」のインストール。home…

UIScrollView を使って画面をスクロールできるようにする

コードで作成する時の話。 ポイントは UIScrollView オブジェクト作成時にinitWithFrameで指定した矩形のサイズより大きめなサイズをcontentSizeプロパティに設定すること。 - (void)viewDidLoad { [super viewDidLoad]; UIScrollView *scrollView = [[UIScr…

UIView の背景色をグラデーションにする

環境:iOS 7.1 UIView がコンポジションしている CALayer に以下のように設定すればOK。 CALayer でエラーになる場合はQuartzCore.frameworkを追加する。 Objective-C - (void)viewDidLoad { [super viewDidLoad]; CAGradientLayer *gLayer = [CAGradientLay…

UITableViewCell の高さを文字列の長さに応じて動的に変更する

環境:iOS SDK 7.1 UITableView の セル毎に呼ばれる Delegate メソッドのtableView:heightForRowAtIndexPath:の戻り値でセルの高さが決まる。 この時にそのセルに入れる文字列から高さを動的に変更する必要がある。 で、どうやるかというと NSString のboun…

UITableViewのスクロール位置を一番上に戻す

環境:iOS SDK 7.1 UITableView (UIScrollView のサブクラス)でスクロールの位置を一番上に戻すやり方。 方法1. UIScrollView のcontentOffsetを設定する contentOffsetにcontentInset.top分を差し引いたオフセット(iOS7なら-64px)を設定する self.tableView…

ステータスバーの高さ、ナビゲーションバーの高さを取得する

ステータスバーの高さを取得する Objective-C float statusHeight = [[UIApplication sharedApplication] statusBarFrame].size.height; ナビゲーションバーの高さを取得する float navigationBarHeight = self.navigationController.navigationBar.frame.si…

UIRefreshControl で「引っ張って更新」を実装する

環境:iOS SDK 7.1 多くのアプリで見かける一覧画面で下に引っ張ると更新する機能を実装してみる。 iOS 6 から追加された UIRefreshControl を使って簡単にできた。 UITableViewController のviewDidLoadメソッド内で UIRefreshControl の初期化処理を行う。…

画面遷移のメモ

環境:iOS SDK 7.1 UINavigationController での画面遷移 AppDelegate から初期画面のコントローラに遷移する 初期画面となる UIViewController を作成、それを使って UINavigationController を作成する。 そして UIWindow のrootViewControllerプロパティ…

UITextView で Placeholder を使う

環境:iOS SDK 7.1 UITextField には Placeholder が用意されているけど、UITextView にはないみたい。 以下の stackoverflow にそのものズバリな回答があったのでこれをそのまま使った。 ios - Placeholder in UITextView - Stack Overflow http://stackove…

ツールバーを非表示にする

環境:iOS SDK 7.1 UINavigationController に新たな画面となる UIViewController をpushViewControllerする前に、その UIViewController のhidesBottomBarWhenPushedプロパティにYES を設定すればよい。以降の画面では自動的にツールバーが非表示になる。 …

ツールバーを追加する方法

環境:iOS SDK 7.1 1. UINavigationController 管理下の場合 UINavigationController を使っている場合はすでにツールバーが組み込まれている。 デフォルトだと非表示となっているので以下のように ツールバーを表示したい UIViewController のviewDidLoadメ…

UIPickerView を試す

環境:iOS SDK 7.1 1. UIViewControllerを継承したPickerViewControllerクラスを作成する PickerViewController.h PickerViewController.m 2. AppDelegateクラスを修正し、PickerViewControllerに遷移するようにする。 AppDelegate.m #import "AppDelegate.h…

UIActionSheet を試す

環境:iOS SDK 7.1 1. UIViewControllerを継承したSampleViewControllerクラスを作成する SampleViewController.h SampleViewController.m 2. AppDelegateクラスを修正し、SampleViewControllerに遷移するようにする AppDelegate.m #import "AppDelegate.h" …

Mac に Java8 をインストールする

OS X Mavericks (10.9.2) の初期状態では Java がインストールされていなかったので Java8 をインストールした。 インストール Oracle のサイトから JDK8 をダウンロードする。 Product / File Description File Size Download Mac OS X x64 207.79 MB jdk-8…

IntelliJ の設定変更メモ

Windows 環境での手順。MacならSettingsをPreferencesに読み替えればほぼ同じなはず。 全体設定 タブインデントを有効にする Java の場合 Settings > Code Style > Java > Tabs and Indents > Use tab character : ON スペースを表示させる Settings > Edito…

Curl メモ

使う度にググってるのでメモしておく。 HTTPメソッドを指定する [-X, --request command] # GET $ curl http://example.com $ curl http://example.com -X GET # POST $ curl http://example.com/users/1 -X POST -d "name=John" # PUT $ curl http://exampl…

Rails で「Could not find a JavaScript runtime」エラーが発生した場合の対処

環境: Ubuntu 12.04 LTS (32bit) ruby 1.9.3p448 rails 4.0.2 とある Rails アプリケーションを試そうとして $ git clone https://github.com/hoge/rails_app_sample $ cd rails_app_sample $ bundle install --path vendor/bundle $ bundle exec rake db:m…

IIJmio のクーポンスイッチAPIを試す

公式ドキュメントはこちら IIJmioクーポンスイッチAPI仕様 https://www.iijmio.jp/guide/outline/hdd/mioponapi.jsp 今回はとりあえず自分のデータをAPIで取得するまでの手順を書いた。 1. デベロッパIDの取得 まずはデベロッパIDを発行してもらう必要がある…

Vert.x で HelloWorld

環境: Windows 7 JDK 1.7 Vert.x は多言語での実装をサポートしている。 現在デフォルトで使えるすべての言語で HelloWorld を書いて比べてみる。 インストール ここからバイナリをダウンロードする。 http://vertx.io/downloads.html 現時点の最新である2.…

IntelliJ のショートカット一覧

Windows 版 IntelliJ のショートカットキーで個人的によく使うものをメモ。 Eclipse の同等機能のショートカットも併記しておく。 入力支援系 - クイック・フィックス (Quick Fix) とりあえずこれをやればいい感じにやってくれる。 IntelliJ [Alt] + [Enter]…

VirtualBox の設定ファイルの場所を変更する

環境: Windows 7 VirutualBox 4.1.18 VirutualBox の設定ファイルVirtualBox.xmlとログファイルVBoxSVC.logの場所はデフォルトでは %USERPROFILE%\.VirtualBox\ 配下となっていた。 ただし、環境変数HOMEを設定している場合はそちらが優先され %HOME%\.Virt…

Windows 環境の IntelliJ に Scala プラグインを導入する

環境: Windows7 IntelliJ IDEA 13 Scalaプラグインインストール IntelliJ の File -> Settings -> Plugins -> Browse repositories ボタンを押す。 「scala」で検索して絞り込む。 Scala を選択、右クリックから Download and Install する。 ダウンロード…

MySQLにリモートホストから接続できるようにする

環境: Ubuntu 12.04 LTS (32bit) MySQL 5.5 MySQLはこちらでインストール済み。 前提として開発環境として使うのでセキュリティについては考慮しない。 iptables の変更 MySQL が使う3306ポートの開放が必要だが今回は Firewall をオフにして対応する。 ipt…

Sublime Text 2 のショートカット一覧

自分がよく使うショートカットをメモしておく(Windows & Mac)。 行入れ替え(複数行可) Win [Ctrl] + [Shift] + ↑ or ↓ Mac [Ctrl] + [Command] + ↑ or ↓ 検索&置換 Win [Ctrl] + h Mac なし 検索&置換2 Win [Ctrl] + [Shift] + f Mac [Command] + [Shift]…

Ubuntu 12.04 LTS に MySQL を操作する Ruby ライブラリをインストールする

環境: Ubuntu 12.04 LTS (32bit) MySQLのインストール $ sudo apt-get -y install mysql-server brianmario/mysql2 · GitHub https://github.com/brianmario/mysql2 Rubyはここでインストール済みとする。 RubyからMySQLを操作するライブラリはいくつか存在…

Ubuntu 12.04 LTS に MySQL をインストールする

環境: Ubuntu 12.04 LTS (32bit) MySQLのインストール $ sudo apt-get -y install mysql-server brianmario/mysql2 · GitHub https://github.com/brianmario/mysql2 Rubyはここでインストール済みとする。 RubyからMySQLを操作するライブラリはいくつか存在…

Ubuntu 12.04 LTS に fluentd をインストールする

環境: Ubuntu 12.04 LTS (32bit) sudo apt-get update sudo apt-get install -y curl curl -L http://toolbelt.treasure-data.com/sh/install-ubuntu-precise.sh | sh でインストール完了。 プロセス起動済み。 vagrant@precise32:~$ ps auxwwwf | grep td-…

Ubuntu 12.04 LTS に Java (Oracle JDK) をインストールする

sudo apt-get update sudo apt-get install -y python-software-properties sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install -y oracle-java6-installer

Ubuntu 12.04 LTS に rbenv, ruby_build で ruby 環境を構築する

a