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

iOSアプリ開発の証明書周りがよくわかっていないので自分なりに整理してみた

iOS

iOSアプリの証明書周り、非常にわかりにくい。 開発時に毎回どうだったっけ?って忘れてしまうので、自分なりに整理してみました。 証明書周りの構成 証明書周りの構成は4つに分類されています。 App ID 証明書 端末 プロビジョニングファイル developmentと…

【vim】正規表現のマッチする範囲を指定して文字列置換をもっと簡単にする

vim

\zsと\zeを使えば、正規表現のマッチする範囲を指定できて、置換がとても楽になる。 例えば、 <div>ABCDEF</div> <p>123456</p> <div class="sample">abcdef</div> という文字列があって、divタグの中身だけ変えたい時。 普通にやると、ちょっとめんどくさい正規表現を書かないと置換できません。 %s/\(<div.*>\)</div.*>…

【swift】Viewの一部を角丸にする

swiftで角丸のViewを作るには、layerのcornerRadiusを設定すれば簡単にできますが、これだと4隅すべてが角丸になってしまいます。 上だけを角丸にしたい時などには、一部だけ角丸のパスをUIBezierPathで作成し、CAShapeLayerに設定します。 developer.apple.…

【swift】グラデーションを描画する

swiftでグラデーションを描画するには、CAGradientLayerを使います。 developer.apple.com let startColor = UIColor(white: 0, alpha: 0).CGColor let endColor = UIColor(white: 0, alpha: 1).CGColor let layer = CAGradientLayer() layer.colors = [star…

【swift】Viewに自分自身の大きさを定義して、動的なViewを正しくレイアウトする

動的に要素を並べるようなViewを作成した時に、AutoLayoutの設定の仕方で悩みました。 class CustomView: UIView { init() { super.init(frame: .zero) backgroundColor = .whiteColor() // 正方形のViewを左右に並べる let view1 = UIView(frame: CGRect(x:…

【swift】ViewControllerとViewを分離させてViewControllerの記述を減らす

最近は、storyboardもxibも使わない方針で実装しているため、Viewを構築するのも全てコードで定義しています。 特に考えなければ、initializeの時に組み立ててしまうのですが、そうするとViewControllerとは関係のないコードが増えていき、可読性が悪くなり…

【swift】UITableViewCellの選択した時の表示を変更する

selectionStyleを変更するだけです。 import UIKit class CustomCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // Initialization code selectionStyle = .None } }

【android】エミュレータのhostsを書き換える

Android Debug Bridge (adb) を使用して ローカルにあるhostsファイルをエミュレータ上に配信させて書き換えます。 まず、エミュレータをroot権限で操作できるように設定します。 $ adb root remountします。 $ adb remount 127.0.0.1のまま差し替えちゃうと…

【swift】コードでAutoLayout その1 - Visual Format Language

コードでAutoLayoutを記述します。 iOSにはVisual Format LanguageというAutoLayoutを直感的に定義できるフォーマットが用意されており、使い方さえ覚えてしまえばちょっとした制約であればサクッとコードで書けてしまいます。 developer.apple.com 使ってみ…

【swift】対象のビューのAutoLayoutを計算した後のCGSizeを取得する

tableViewCellの高さ計算の時など、コード上で対象のViewのAutoLayoutを計算した後のサイズを取得したい時があります。 そんな時は、systemLayoutSizeFittingSizeを使います。 引数で渡す値に応じて、コンテンツを表示するための最小サイズか、最大サイズのC…

【swift】【iOS】UIViewからUIImageを生成する

facebookに写真をシェアしたい時などに、アプリ側で組みて立てたUIViewからUIImageを生成したい時があります。 例えばアプリ側でこんなViewを組み立ててみます。 これはソースコードは雑につくるとこんな感じです。 5つのUIViewで組み立てられています。 let…

【iOS】【swift】カスタムViewとxibを紐付ける

swiftで独自のViewを定義した時に、見た目をxibで整える方法をまとめます。 1. 独自のViewクラスの定義 class CustomView: UIView { } 2. 空のxibファイルを作成 3. xibで見た目を作成 4. File's Ownerで先ほどの独自Viewクラスを指定 これで、とりあえずxib…

【iOS】【Swift】convertRectを使ってframe位置を計算する親要素を変更する

要素の座標位置を取得するためには、その要素のframeを見ます。 view.frame.minX view.frame.minY この時の座標位置は親要素から見た時の相対的な位置になります。 例えばviewが3階層の構造になっている場合、それぞれの座標位置は下記のようになります。 黄…

【swift】Optional Bindingについて

前回swiftでのnilの取り扱いについてまとめました。 【swift】nilとoptionalな型の取り扱い - tanihiro.log 今回はnilを取り扱う時に便利な記法のOptional Bindingについてまとめます。 Optional Binding 必要になるケース 例えば、関数の中には返り値がOpti…

【swift】nilとoptionalな型の取り扱い

nilの扱い swiftでは通常、変数や定数にnilは代入できません。 var hoge: String = nil let fuga: String = nil これはコンパイルエラーになります。 nilを代入するためには、optionalであることを宣言するために型に?をつけます。 var hoge: String? = nil …

【swift】InterfaceBuilderを使用してViewControllerを組み立てる

objective-cと変わらないと思ってたらちょこっとだけ違いました。 新規ファイル作成から「Cocoa Touch Class」を選択して 「Also create XIB file」にチェックを入れれば、ViewControllerのファイルと一緒にxibファイルを作成されます。 objective-cであれば…

【swift】変数・定数・関数を定義する

最近swiftをちょっと勉強しだしたので、ちょっとずつメモを取っていこうと思います。 変数 var hoge: String = "hoge" // 型を宣言する var hoge = "hoge" // 宣言しなくても自動的に判定もする var hoge = "hoge", fuga = "fuga" // カンマで連続で定義する…

GoogleAnalyticsのトラッキングのコールバックを設定する

〇〇ページに遷移するためのボタンのクリック率とかを図るためによく、ボタンのクリックイベントを計測したりします。 でも、このページ遷移とトラッキングのAPIを同時に叩くと、やっぱりうまくトラッキング出来ないこともチラホラあるみたいです。 Analytic…

【Ruby】ActiveRecordのAssociationにメソッドを追加する

ActiveRecordのhas_manyとかbelongs_toとかのAssociationはブロックを渡してメソッドを追加することができます。 class User has_many :blogs do # ステータスがopenのものを取得する def open where(status: 'open') end end end こんな感じで、ブロックの…

【Rails】belongs_toで紐付けたモデルの存在チェック

belongs_toで紐付けたモデルが本当にデータとして存在するかどうかをチェックする。 class Blog has_many :comments end class Comment belongs_to :blog end 例えば、このようなモデルがあった時、Blogモデル経由でCommentを作成した場合は、すでにBlogは存…

【css】floatとvertical-alignを併用しようとしてがっつりハマった話

css

先日書いたブログに、先輩がこんな風にコメントしてくれたにもかかわらず、がっつりハマったので戒めのためにもメモしておきます。 なにが起きたか 要件としては、高さの違う2つのボックスを横並びにして、上下中央寄せにする、というものでした。 <div class="wrapper"> <div class="left">左は<br>二行</div> <div class="right"></div></div>…

【CSS】横幅が可変な要素を中央寄せにする

css

margin: 0 auto;で中央寄せするためには要素の幅を指定しないといけないので、横幅が可変な場合はこの方法では中央寄せにできません。 inline-blockを使えばできるみたいです。 <div class="pager_wrapper"> <ul class="pager"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </div> .pager_wrapper { text-align: center; } .pager { display: inl…

【GoogleAnalyitcs】複数のトラッキングコードを一つのページに埋め込む

最新版のanalytics.jsであれば、複数のトラッキングコードを一つのページに埋め込むことができます。(ga.jsではできません) トラッキングコードの定義 ga('create', 'UA-xxxxxxxx-1', 'auto'); ga('create', 'UA-xxxxxxxx-2', 'auto', {'name': 'sub'}); …

AngularJSを初めて勉強する時にたどった道

最近、初めてAngularJSを使ったんですが、すごく便利でなぜ今までちゃんと触ってこなかったのかを後悔しています。 ただ、便利な面学習コストも高くて、なかなか使いこなすまでに時間がかかりそうです。 僕もまだ一部機能しか使えていませんが、これからAngu…

EC2でping監視をする時はセキュリティグループで許可しましょうという話

EC2のインスタンスをzabbixで監視していると、なぜかping監視のところでアラートが挙がる。 なぜだなぜだーと悩んでいたら、セキュリティグループで許可しない限りpingも到達しないからでした。 セキュリティグループの設定 Custom ICMP ruleを選択 TypeはEc…

サーバにhtpasswdだけインストールしたい

NginxだけでWebサーバを構築したけど、Basic認証はかけたいからhtpasswd使いたい!でもApacheはインストールしたくない!って時の方法です。 $ yum install httpd-tools htpasswdはhttpd-toolsというパッケージに分けられているみたいなので、これをインスト…

apache2.4からアクセス制限の書き方が変わってた

apacheがこんなエラーを吐いてくるので、なんだろうなーと思っていたらアクセス制限の書き方が2.4から変わってました。 client denied by server configuration・・・ 今までのこれが <Directory "/hoge"> Order allow,deny Allow from all </Directory> <Directory "/fuga"> Order deny,allow Deny from all </Directory> …

fluent-agent-liteのrpmを作成する

全部READMEに書いてあることなんですが、自分用にまとめます。 https://github.com/tagomoris/fluent-agent-lite rpm-buildのインストール rpmを作成するためにはrpm-buildが必要なので、インストールします。 $ yum install rpm-build インストールすると、…

serverspecをグループ分けして実行する方法

serverspecは、デフォルトの設定だとhost毎にspecファイルを書かなければいけません。 spec ├── spec_helper.rb └── example.com └── httpd_spec.rb そのため、同じミドルウェアがインストールされている場合、同じソースを書かなければいけないのが少し面倒…

【css】MediaQueryを使ってみた

css

PCとスマホのページを1ソースで作るために、ウィンドウの幅に応じてスタイルを変更する、css3のMediaQueryを使ってみました。 @media screen and (max-width: 640px) { body { background-color: red; } } MediaQueryを使用する時は、Mediaを明示的に指定し…

cssが適用される優先順位

css

たまに混乱してしまうのでまとめます。 idはclassより強い 階層が深いほうが強い styleを直接書くのが一番強い idはclassより強い この場合は、idの方が強いので背景色は赤色になります。 <div id="hoge" class="hoge"></div> #hoge { background-color: red; } .hoge { background-color: gree…

シェルスクリプトでif文を書く

すごく基礎的なことなんですが、毎回ググっているので自戒の念を込めて書きます。 if [ "hoge" == "hoge" ]; then echo true else echo false fi 重要なのは[]の中は半角スペースを必ず開けること。 if ["hoge" == "hoge"]; then echo true else echo false …

facebookの評判をチェックできるサイトを作りました

http://fb-checker.tanihiro.com/ どんなサイトか URLを入力して、そのURLのいいね数の内訳(share, like, comment)の数を表示します。 なおかつ、facebook上で公開範囲が全体になっている投稿からURLをキーワードにして検索をし、投稿を表示します。 作ろ…

【objective-c】UIWebViewでローカルにあるHTMLを表示する

xcode内にHTMLを格納して、そのHTMLをWebViewで表示する方法です。 // UIWebViewの初期化 UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; // htmlのパスの取得(今回はsample.html) NSString *path = [[NSBundle mainBundle] p…

日付期間の重複チェック

開始日時と終了日時を持っているデータがあって、その期間と重複しているデータがないかチェックするときの条件式のメモです。 start_date(開始日) end_date (終了日) start_date <= {対象終了日付} AND end_date >= {対象開始日付}

【ruby】rakeのデフォルトタスクを変更する方法

Rakefileに記述する Rakefileに記述して指定します。 task default: :about この様に書くと、タスクを指定せずrakeコマンドのみを実行した時にrake aboutと同じ挙動になります。 taskは複数設定することも可能です。 task default: [:about, :routes] about…

【Rails】migrationのchangeとup/downって何が違うの?

Railsでmigrationを作成する時、changeメソッドだけが定義されていたり、upとdownメソッドの2つが定義されている時があります。 class AddColumnHoge < ActiveRecord::Migration def change end end class ChangeColumnHoge < ActiveRecord::Migration def u…

【ruby】ActiveModelを使ってDBと関係ないFormを作成する【Rails】

RailsでFormを扱う時は、Modelと紐付けることで、validationなどの設定はModelに書くことができ、非常に便利です。 ですが、DBと関係ない場合は紐付ける対象のModelが生成されていません。 そこで使用するのがActiveModelです。 https://github.com/rails/ra…

【ruby】Railsでファイルアップロードをテストする

Rack::Test::UploadedFileを使用します。 http://rdoc.info/github/brynary/rack-test/master/Rack/Test/UploadedFile インスタンスを生成する際に、第一引数にファイルのパス、第二引数にcontent-typeを指定します。 Rack::Test::UploadedFile.new("/path/t…

【ruby】ブロックの変わりにProcオブジェクトを引数に渡す

ブロックを渡すようなメソッドは、Procオブジェクトを引数として渡すことも出来ます。 普通にブロックを渡すとこんな感じ。 hoge = %w(foo bar piyo) hoge.each do |val| puts val end これをProcオブジェクトを引数として渡すとこんな感じになります。 hoge…

【iOS】UIViewに背景画像を設定する方法

UIColorにcolorWithPatternImageというメソッドがあるので、背景画像を渡して対象となるviewのbackgroundColorにセットするだけ。 UIImage *backgroundImage = [UIImage imageNamed:@"bg.png"]; self.view.backgroundColor = [UIColor colorWithPatternImage…

納まりました

今年も無事納まりました。 無事でよかった。 今年はいろいろやりました。 Dir的なことをやったり SE的なことをやったり Railsで開発したり 一つのサービスのマークアップとJSをメインで作ったり objective-cを勉強してアプリも出したり ブログも書きだしたり…

githubのprojectページを作ってみた

簡単な静的ページを作りたい時はgithubのprojectページが便利ということで初めて試してみました。 http://pages.github.com/ 作り方 リポジトリを作ったら、「gh-pages」というブランチを作るだけ。 後は、そのブランチにファイルをコミットしていけば下記の…

bowerでjsのライブラリを管理する

javascriptのライブラリもgemとかcocoapodみたいに管理できないかなーとググってみたら良さそうなのがあったので使ってみました。 Twitter社製のbowerです。 http://bower.io/ install npmでインストールするので、npmが入っていない人はNodeJSからインスト…

アクセスログからアクセスの多いIPアドレスを算出する

cutでIPアドレスだけを抜き出して、uniqで数えた後、更に多い順にソートしています。 cat access.log | cut -f 1 -d ' ' | sort | uniq -c | sort -nr | head -10

UITabBarControllerとUINavigationControllerを同時に使う

標準のミュージックアプリの様な、UITabBarとUINavigationを同時に使う方法をまとめます。 どうやるのか UINavigationControllerの配列を作り、UITabBarControllerに渡してあげるだけです。 // 各タブのrootとなるViewControllerを指定して // UINavigationC…

iOSエンジニアにモテるAPIを作るための3つのこと

最近、自分でobjective-cをちょこちょこ書いていて、API作る側もちょっと気をつけた方がいいなーと思ったことがありました。 それは、プロパティ名です。 1. "id"を使わない objective-cにはid型があるので、プロパティ名でそのままidを使うとまぁややこしく…

Xcodeのデバッガってコマンド叩けたのね

Xcodeでブレイクポイントを設定して処理を止めた時とかに出てくるデバッガ。 こいつ。 よくわからないエラーとかも吐いてくるので、あんまり好きじゃありませんでした。 しかも左側に出てくる変数とかは、中身が見れそうで見れない。 そのチラリズムの精神は…

【facebook】access_tokenのexpire(有効期間)を延長する方法

facebookのaccess_tokenはデフォルトだと1~2時間ぐらいで無効になってしまい、再度access_tokenの取得が求められますが、「それはあまりにも短い!」という人のために、有効期間を延長する方法を提供しています。 公式ドキュメントを見る こちらに載っている…

RubyでExcelファイルからデータを取り出す

よく、マスターデータをExcelで管理してプログラムで一気にImportする、というようなことをするので、RubyからExcelファイルのデータを取り出す方法をまとめます。 spreadsheetを使用する spreadsheetというgemが公開されているので、こちらを使用します。 h…