WKWebViewで最初に読み込んだページに戻る

WKWebViewの最初に読みこんだページ(URL)に戻りたいことがあったので、いろいろ調べたらwebView.goToBackForwardListItem(item: WKBackForwardListItem)で実現できました。 let webView = WKWebView() let count = webView.backForwardList.backList.count…

ERROR ITMS-90037: "This bundle is invalid. The Info.plist file is missing or could not be parsed. Please check it for embedded control characters." の対処

iTunesConnectへアップロードを試みたところ、以下のようなエラーが出てしまいアップロードに失敗しました。 ERROR ITMS-90037: "This bundle is invalid. The Info.plist file is missing or could not be parsed. Please check it for embedded control ch…

AlamofireでUser-Agentを編集する

概要 Alamofireを使用していてUser-Agentを編集したいとき、ManagerのイニシャライザにNSURLSessionConfigurationのインスタンスを渡して対応しました。 NSURLSessionConfigurationの設定については、後から動的に変えることができないので、注意が必要です…

UITextFieldを含むUITableViewCellのNSIndexPathを取得する方法

UITableViewCellを含むCellが1つであれば、UITextFieldDelegateのtextFieldDidEndEditingから取得するだけでいいのですが、これが複数になると引数のtextFieldがどのCellに帰属するのかわからないので面倒です。 悩んでいたら、textFieldDidEndEditingの引数…

CompleteHandlerのないアニメーションにCATransactionでCompleteHandlerを追加する

タイトルの通りです。 CompleteHandlerのないアニメ―ションにCompleteHandlerを追加します。 下の例ではUITableViewのediting modeの終了アニメーション後に処理を追加しています。 CATransaction.begin() CATransaction.setCompletionBlock { () -> Void in…

複数のUITextFieldとUITextViewが混在するViewControllerでキーワードを閉じる

通常、であればViewConrollerがUITextFieldDelegateかUIViewControllerを適用して、textFieldShouldReturnだったり何かしらのタッチイベントでtextField.resignFirstResponder()をすると思います。 ただ、UITextFieldとUITextViewが混在する場合、どちらが編…

UITableViewで無限スクロール

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { if indexPath.row == (items.count - 1){ items += nextItems tableView.reloadData() } } 最後のcellに来たらnextItemsを追…

linker command failed with exit code 1 (use -v to see invocation)の対処

file too small (length=0) file '/some/file/path' for architecture x86_64 linker command failed with exit code 1 (use -v to see invocation) ↓ command + shift + k これでだいたい解決する 多分ビルドが失敗したときに、変な風に(0byte)書き換わっ…

randomなint

var items = [1,2,3] var randomIndex: Int = Int(arc4random()) % items.count items[randomIndex] みたいに使う

OHHTTPStubとXCTestで、モックを使った非同期処理をテストする

通信をモックを使って、実際のサーバーサイドやWebAPIとの通信を行わずにテストする。 import UIKit import XCTest class SomeAPIClientTests: XCTestCase { let someAPIClient = SomeAPIClient() override func setUp() { super.setUp() } override func te…

UIViewを45度傾かせる

吹き出しようの「ぺろっ」と出てている三角形を作りたかったので、正方形を45度傾かせて実現しました。 この辺の数学的知識が無いので、解説はできません。 let angle = CGFloat(M_PI * (45) / 180.0) //miniBoxはUIViewのインスタンス miniBox.transform = …

CoreLocationで国、都道府県、市区町村の取得

import CoreLocation let location:CLLocation = CLLocation(latitude: lat, longitude:lon) geocoder.reverseGeocodeLocation(location, completionHandler:{(placeMarks, error) -> Void in if error == nil { if placeMarks.count > 0{ let placemark: CL…

コレクションはオプショナル型にしない

Swiftを始めてオプショナル型覚えたてで、オプショナル型使いたい病にかかってしまい、 メソッドの返り値のコレクションデータまでオプショナル型で返していました。 ですが、やっぱアンラップするのがめんどくさい。 そもそも、ArrayにもDictionaryにもisEm…

定義済みクラスで「Use of undeclared type "ClassName"」のエラー

とっくに定義済みのクラスなのundeclaredと言われて怒られた。 Use of undeclared type "ClassName" 解決方法 右側の「Taget Membership」でテストターゲットの方にもチェックを入れる。 原因 あるクラスのテストを書こうとクラスが定義されたファイルだけテ…

ダミーのjsonファイルからjsonデータを作る

サーバーサイドの実装がまだだけど、APIの仕様が決まっているようなときに。 開発が進んだらjsonファイルは消すか、ターゲットをテストだけにしよう。 How do I create dummy JSON data on the client in objective C / iOS? How do I create dummy JSON dat…

Rspecでインスタンス変数に任意の値がセットされているかテストする方法

タイトルのままです。 GETメソッドなんかで、インスタンス変数の値に期待通りの値がセットされているかをcontrollerのテストで行う方法です。 it { expect(controller.instance_variable_get("@user").name).to eq 'hoge' } ここではインスタンス変数@userの…

updateでバリデーションの検証

どっかでとちりそうなのでメモ update - リファレンス - Railsドキュメントバリデーションによる検証を行う update update_attributes バリデーションによる検証を行わない update_all update_attribute

Rspecでbefore_actionなどをテストするときはAnonymousControllerを使うと便利

ApplicationControllerなどにすべてのControllerで読み込まれるbefore_actionなどを定義していて、そのbefore_actionをテストをしたいときは、AnonymousControllerを使うと便利です。anonymous controller - Controller specs - RSpec Rails - RSpec - Relis…

sessionに保存されたHashの挙動がストア前後で変わる。

sessionに保存されたHashの挙動がストア前後で変わる。 session[:test_data] = {hoge: ‘fizz’, fuga: ‘buzz’ } としたとき、session[:test_data]の中身は {:hoge =>’fizz’, :fuga => ‘buzz’} となる。 しかしこれが別のアクションで使用するとき、つまり一度…

使っていないminitestでWarningが出たよ問題

version: rails: 4.1 rails4.1にupdateしたら、使っていないはずのminitestを要求されて、困惑しました。 Warning: you should require 'minitest/autorun' instead. Warning: or add 'gem "minitest"' before 'require "minitest/autorun"'shoulda-matcher…

paperclipでlocaleに関するエラーが出たので対処

Rails 4.0.3 paperclip 4.1.1ファイルアップロードのライブラリとしてpaperclipを使っているのですが、 ファイルサイズについてのバリデーションをModelに加え、テストも加えたのですが、どうにもlocaleファイルが無いよ、とテストを走らせるとエラーが出て…

プロジェクトのリモートリポジトリで他のメンバーのプルリクがmergeされたら

git

他のメンバーの作業ブランチがリモートレポジトリでmasterブランチにマージされた ↓ 自マシンのローカルレポジトリのmasterブランチをgit pullで同期 git checkout master git pull ↓ (その後、自分がプルリクエストを送りたい場合) ↓ 対象の作業ブランチ…

Devise使っててNameError: wrong constant name mailersが出た時の対処

version: rails: 4.0.3 devise: 3.2.2config/initializers/devise.rb #config.mailer = 'Devise::Mailer' ↓ config.mailer = 'Devise::Mailer' 「config.mailer = 'Devise::Mailer'」のコメントを外したら動くようになりました。エラーの状況が発現したのが…

deviseのRemberable機能をデータベースにカラムを用意して使用する方法

deviseでは様々な機能がはじめから用意されています。それら機能はモジュール化されており開発者の用途に合わせて選択できるようになっています。 その中に「rememberable」という、所謂remember meの機能も用意されていて、その機能なのですが、少し変わっ…

Rails4なのにMassAssignに関するエラーが出た理由

症状 Rails4 + Devise + Omniauthを使って認証機能なんかを作っていたのですが、何故かMassAssignに関するエラーが出てしまい、新規ユーザーのレコードが保存できない事態に陥ってしまいました。 WARNING: Can't mass-assign protected attributes for User:…

ホームフォルダにある.gitignoreの設定を読み込めるようにする

git

毎回、gitignoreすんの面倒なんで、必ず無視したいものは事前に設定しておきたい。 git config --global core.excludesfile ~/.gitignore これでホームフォルダの.gitignoreを読み込める。 ~/.gitignore ちなみに自分の~/.gitignoreはこんな感じ .idea/ .iml…

gitをカラーで表示させる

git

ホームフォルダの.gitconfigファイルを編集する。 vim ~/.gitconfig 以下を追加。 [color] ui = auto 以上。

「作りたいもの」の作り方

インスパイア元:プログラミングが上達しない or 勉強が続かない人へ:とあるIT系社長のブロマガ - ブロマガ なんだよ作りたいものとか よくプログラミング学習についてのエントリが盛り上がる時期がある。そのなかの幾つかのブログエントリで叫ばれるのが「…

Amazon S3 + お名前.comでサクッとWebサイトを作った

AWS

まず、今回作ったもの。自分のポートフォリオサイトです。 http://higan96.info/ 作った経緯 AmazonのS3でサイト作ったら安くて簡単だった。 参考資料(どちらもslideshareから) http://www.slideshare.net/horiyasu/amazon-s3web-27138902 http://www.slid…

ComposerでCakePHPをインストールしたときの、bootstrap.phpについての勘違い

Composerを使った通常のインストール方法は公式ドキュメントに解説が載っているのですが http://book.cakephp.org/2.0/ja/installation/advanced-installation.htmlここでComposerでインストールをした他のライブラリを、webroot/index.phpで読み込みましょ…

Chefのメモ

chefはrubyで書かれたサーバー設定や更新を自動化するツールです。 rubyのバージョンが古いとエラーが出たりするので、1.9以上のものを入れておきましょう。 準備ができたら、chefのインストール。 $ curl -L https://www.opscode.com/chef/install.sh | sud…

sudo xcodebuild -licenseで、何をすればいいのか

gemでちょっとインストールしたいものがあったのですが、エラーが出ました。Xcodeライセンスに同意していない、というようなメッセージです。Macの方はMoutainLionでXcodeのバージョンは5.0でした。 そこでメッセージ中の指示通り $ sudo xcodebuild -licens…

Vagrantメモ

boxをVagrantbox.esなどで用意 http://www.vagrantbox.es/ $ vagrant box add {title} {url}HTTP経由で指定したurlからboxファイルをダウンロードして、{title}で指定した名前で保存されます。{url}はローカルパスでも可。addしたboxはホームディレクトリ下…

Composerを使ってCakePHP2.4.1とDebugKitをインストールするまで

CakePHPの最新安定版である、バージョン2.4.1をComposerを使用してインストールし、プラグインのDebugKitをインストールするまでを公式ドキュメントをもとに解説します。追記(2013/10/2) このディレクトリ構成だとCakePHP本体側とプロジェクト側とで定数に違…

bnqaを作った理由その2

http://bnqa.jp bnqaを作った理由として、以前のエントリでは「本に関わる質問サイトが無かったから作った」という説明をしたと思います。それは確かに理由の一つなのですが、もう一つ大きな理由があったので、考えを整理するためにもちょっと書いておこうか…

その笑いはSmileか?Laughか?

ULOGの方が結構落ちたりしててるので、技術メモではないですが、コンテンツ論としてこちらに再掲。一部加筆修正。 http://ulog.cc/a/higan96/1886 テキストベースのコミュニケーションで笑いの表現は必須 LINEでもTwitterでも2ちゃんねるでも、ネット上のコ…

一度目のサービス開発での失敗

http://ulog.cc/a/higan96/18163 この時つくったサービスについて、反省点をまとめようと思った。 失敗サービス概要 Loghoseという自動ライフログサービス 最初に登録した「記録したいライフログ」をひたすら記録し続けるサービス 「毎日ジョギング10km」と…

【再掲】ウケるのための3つの近さ

ULOGの方が結構落ちたりしててるので、技術メモではないですが、コンテンツ論としてこちらに再掲。一部加筆修正。 http://ulog.cc/a/higan96/1654 - ここ2、3年くらいネット上の狭い範囲で、いろいろとくだらないことをやってきました。その経験のなかで、…

勝手に他人の本をアップデートしてる。

先日リリースしましたhttp://bnqa.jpを使い、他人の本を買ってにアップデートするという活動を行っております。アップロードじゃないですよ、念のため。 勝手にアップデートしているのは以下の本です。 効率的なWebアプリケーションの作り方 ~PHPによるモダ…

独学で2度目のWebサービスリリースまでにやったこと

先日Webサービスをリリースしました。 http://bnqa.jp今回、2度目のWebサービス公開までにやったことや考えたことについて書いていきたいと思います。 【再掲】やってみた「WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法」 このエントリを書…

【再掲】やってみた「WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法」

ULOGの方が結構落ちたりしててるので、こちらに再掲。 http://ulog.cc/a/higan96/14248 WebデザイナーやノンプログラマーにおすすめしたいPHPの勉強法ここ半年ほど、上記エントリーでまとめられている技術書を読みながら、PHPの勉強をしていました。 そして…

bnqaというWebサービスを作りました

本日、bnqaというWebサービスをリリースしました。book note question adviceの頭の文字を集めて「bnqa」です。 http://bnqa.jp/ どんなサービス? bnqaは名前の通り、本(book)に関するノート(note)、質問(question)、アドバイス(advice)ができるサービスで…

EC2で古いPHPをアンインストールし、PHP5.4をインストールする

AmazonLinux ではphp5.4とApache2.4は紐付けられている(普通そうなのかな?)。そのため、php5.4を使いたい場合には、同時にApache2.4もインストールする必要がある。以上の理由から、インストールの前準備として、古いバージョンのphpとApacheの両方をアン…

Symfony2.1でnamespaceをautoloadに追加する

//app/autoload.php .. $loader->add('Crocos', __DIR__.'/../vendor/bundles/'); .. vendor/composer/autoload_namespaces.php に追加しても動くのだけど、Composerでupdateしたりすると、autoload_namespaces.phpが更新してしまい、追加したnamespaceが消…

Symfony2.1でBreadcrumbを簡単に書く方法

Symfony2.1でパンくずリストを簡単に書くために。whiteoctober / BreadcrumbsBundleを使用します。分かる範囲で解説します。https://github.com/whiteoctober/BreadcrumbsBundle インストール Composer: Composerを使用する場合、composer.jsonに以下の通り…

CallbackValidatorを使わずにFormEventでフィールドのバリデーション

Symfony2.1でCallbackValidatorを使わずに、addEventListnerでエンティティに関係ないフィールドのバリデーションを実装する方法。 コードは「効率的なWebアプリケーションの作り方」p.215より Before public function buildForm(FormBuilder $builder, arra…