iPhoneで縦の動画を撮ってS3にアップロードしてvideoタグ入れてChromeで表示すると横になっちゃう件

https://hirooka.pro/?p=1545
この辺のffmpegコマンド打てば直るのかな?

ffmpeg -i in.mov -vf "transpose=1" out.mov

最初はCSSで回転させればええやんって思ったけど再生ボタンの▽ボタンも横になってちがうちがう状態だったので。ちなみにsafariだと正常な状態で表示される。ブラウザっていろいろめんどくさいんですね。

Hello AngularJS

rails で angularjs 入門するためにちょっとメモ

基本的に下記のGMOメディア エンジニアブログさんで紹介されている方法そのままなので、見てない方は是非そちらを読んでください。

http://tech.gmo-media.jp/post/70940891525/angularjs-on-rails

前提として

  • railsの構築環境(rbenv,bundler,各種データベースなど)がインストールされている
  • ところどころはしょってるのでrailsの知識必須

スタート

railsプロジェクトを作成する用のGemfileを作成

cat << EOS > Gemfile
source "http://rubygems.org"
gem "rails", "3.2.17"
EOS

bundle インストール

bundle install --path vendor/bundle

angularjs用のプロジェクトを作成

bundle exec rails new example --skip-bundle

いらないファイルを削除

rm -f Gemfile*
rm -rf .bundle
rm -rf vendor/bundle

作ったプロジェクトに移動してGemfileを編集

cd example
# Gemfileを編集
gem "angular-gem", '~> 1.2.1'
gem "mysql2"
...

bundle install --path vendor/bundle
bundle exec rails g angular:install
bundle exec rails s

config/database.yml を適宜編集

http://localhost:3000/ でチェック

ビューを作成

./public/test.hml に以下を貼り付け
<!DOCTYPE HTML>
<html ng-app>
<head>
<script src="assets/application.js"></script>
</head>
<body>
<div>
<label>Name:</label>
<input type="text" ng-model="yourName" placeholder="Enter a name here">
<br/>
<font size="4">Hello {{yourName}}!</font>
</div>
</body>
</html>

http://localhost:3000/test.html
を確認してフォームに適当な文字列を打つとちゃんと動いていればangularjsは動いているので次

ここからは簡易的なAPIを作ってangularjsと連携させます

モデル作成

bundle exec rails g model article title description
bundle exec rake db:create
bundle exec rake db:migrate

データを作成

// ./db/seed.rb
1.upto(20) do |num|
Article.create(:title => "title#{num}", :description => "description#{num}")
end
bundle exec rake db:seed

コントローラー作成

bundle exec rails g controller articles index

// ./app/controller/articles_controller.rb
def index
@articles = Article.all
render json: @articles
end

もっかい
bundle exec rails s

http://localhost:3000/articles/index
にアクセスしてみる

それっぽいデータがでてれば次

モジュールを作成

# ./app/assets/javascripts/app.js.coffee
window.App = angular.module('ArticleSample', ['ngResource'])

サービス(モデル)を作成

# ./app/assets/javascripts/angular/services/articles.js.coffee
App.factory 'Articles', ['$resource', ($resource) ->
$resource '/articles/index'
]

コントローラーを作成

# ./app/assets/javascripts/angular/controllers/articles_ctrl.js.coffee
App.controller 'ArticlesCtrl', ['$scope', 'Articles', ($scope, Articles) ->
$scope.articles = Articles.query()
]

読み込むjsを変更. jqueryとかいらないので削除

# ./app/assets/javascripts/application.js
//= require angular
//= require angular-resource
//= require app
//= require_tree ./angular

ビューを作成

# ./public/test.html
<!DOCTYPE HTML>
<html ng-app="ArticleSample">
<head>
<script src="assets/application.js"></script>
</head>
<body>
<div>
<label>Name:</label>
<input type="text" ng-model="yourName" placeholder="Enter a name here">
<br/>
<font size="4">Hello {{yourName}}!</font>
</div>
<div ng-controller="ArticlesCtrl">
<div ng-repeat="article in articles">
<p>{{article.title}}:{{article.description}}</p>
</div>
</div>
</body>
</html>

http://localhost:3000/test.html
にアクセス

/articles/index のAPIのデータ(titleとdescription)が表示されていればOK

angularjs というか rails 難しい

Objective-C の Observer ふむふむなう

いいslideを見つけたのでメモ。

でobserverについてもググってみた。

キー値監視を使ってみよう - たーせる日記

observerは監視者である。ということで、上記サイトでは値の監視を行う方法がコードレベルで記載されている。

[super addObserver:observer // 追加する観察者オブジェクト
forKeyPath:kKeyPath // 観察対象のプロパティ(ここではnumber)
options:NSKeyValueObservingOptionNew // 変更後の値を監視
context:NULL]; // 通知を受け取るメソッド(ここではNULL)

気になるのは観察対象のプロパティの指定方法。なんかNSStringを指定すると同名のプロパティが指定されるっぽい。ふーん。NSObject にaddObserver... のメソッドがあるので NSObject を継承してあげるそう。

オプションも気になるのでググった。

EZ-NET: プロパティへの書き込みを外から監視する : Objective-C プログラミング

まあ試してみないと良くわかんないです change で受け取れる内容が変わったりするみたい。
NSKeyValueObservingOptionNew
NSKeyValueObservingOptionOld
NSKeyValueObservingOptionInitial
NSKeyValueObservingOptionPrior

で、slildeに戻って「Model からEditor への通知方法」で使うってどの部分で使うの?...非同期で取得したデータをdatasourcesみたいなプロパティに入れた時にリロードする?んー

mac vim で rspec を個別実行するためにやったこと

qiitaにあったのを参考に。(qiitaの記事はコメントにある通りtypoしてるので気をつけてくださいませ)

tmuxとvim-rspecとvim-dispatchで快適なRSpec生活 - Qiita

~/.vimrc に必要なプラグインを記載

NeoBundle 'tpope/vim-dispatch'
NeoBundle 'thoughtbot/vim-rspec'

:NeoBundleInstall を実行

するとインストールされます。

で、とりあえず適当な spec ファイルを vim で開いて以下のどれかを実行

:call RunCurrentSpecFile()
:call RunNearestSpec()
:call RunLastSpec()
:call RunAllSpecs()

ちゃんと実行されるか確認。

僕の環境の場合は rbenv を使っているためか vim で実行される ruby のバージョン(:!ruby -v)とターミナルで実行される ruby (ruby -v) のバージョンが異なっていたので、~/.zshenv に以下のファイルを作成しました。

if [ -d ${HOME}/.rbenv ] ; then
PATH=${HOME}/.rbenv/bin:${PATH}
export PATH
eval "$(rbenv init -)"
fi

これで vim でもターミナルでも同じバージョンの ruby が使われたことを確認。

あとは tmux を brew でインストール

brew install tmux

して spec ファイル内で各種コマンド(:call Run...)を実行すれば別ウィンドウで rspec が動きました。やっぱ vimプラグイン環境はすごい。知らないこといっぱい。vim楽しい。

qiitaに投稿してる人のgif画像ではなんかvim内の補完機能で :call RunNearestSpec() を実行していたけどあれ何のプラグイン?なのか分かる人いませんか?んーvim本買おうかな。

vimrc のメモ

NeoBundle 'tpope/vim-dispatch'
NeoBundle 'thoughtbot/vim-rspec'
let mapleader=" "
let g:rspec_command = "Dispatch rspec {spec}"
nmap c :call RunCurrentSpecFile()
nmap n :call RunNearestSpec()
nmap l :call RunLastSpec()
nmap a :call RunAllSpecs()

self.view.frame は呼び出すタイミングで取得する数値が異なる

ことを覚えておいたほうがいい。
タブバーを無理やり隠したりしている仕様だとタブバーの隠れる前と隠れた後ではサイズが異なる。

//iphone5
568 = 504 + 64 (ナビゲーションバー44 + ステータスバー20)

20とか44とか固定値使うとダサいらしいよ。

Rails の devise を使った複数モデルでのアカウント認証について

これ、Userモデルの場合は該当コントローラーの before_filter に

before_filter :authenticate_user!

こう書くと思うけど Adminモデルの場合は

before_filter :authenticate_admin!

こう書くとそれっぽく動くんだけどあってるのかな?

もちろん rails generate devise モデル名 で作った devise model が必要。

plataformatec/devise · GitHub

登録出来ないようにする場合は

devise :database_authenticatable,
#:registerable, :recoverable,
:rememberable, :trackable, :validatable

registerable と recoverable をコメントアウトする

(ちょっと前に)イベント管理系のサイトをブクマしていったのでついでにまとめ

いっぱいある
僕が実際に使ったことあるのはatnd,connpass,Zusaar。
atndはbetaだけ残るらしいですね。ややこしいですね。
peatixはこの前初めて知った。チケット販売推しなんですかね。
Doorkeeperはトップページの上の画像が意識高い系でオシャンティでリア充っぽいのが受け入れがたいですね。
Zusaarは「ずさー」ってよむんですかね。どうでもいいですね。
個人的にはアプリもあるしconnpassがすきですね。でもどう読むんですかね。
とにかく読み方に不安になるサービスは誰かに紹介しにくいからロゴにふりがな振ってもらえると自信もって紹介できますね。その点ピーティックスはすばらしいですね。あ、でもピーティックスの人ではないですからね。

アプリがあるかないかとか決済方法とか誰か比較してもらえるといいんじゃないですかね。
しなくてもいいと思いますけど、じゃまた。