個人事業主11年目
8月頭で。
10年続けられた、なのか、10年しかなのか。
第一回Kakyoin.rb
8月9日 14時から、Kakyoin.rbの一回目のMeetupを片平堂で行います。
内容は、特に決めておらず、集まった人たちでRubyに関する何かをやります。
なお、参加希望は受け付けていません。
事前に声がけした近隣のRubyistの皆様で一杯になってしまったので。
片平堂の事務所は狭いので、6人ぐらいも入ると場所的に限界です。
じゃあ、なんでブログに書いたかといいますと、需要があるのか知りたいなと。
参加希望の需要があるのかとか。
後、会場貸せるよとか、この場所いいよなんて情報が寄せらたりしないかと。
何らかの反応を送りたいという方は、Twitterなりこのブログなり何らかの手段で片平に送りつけてください。
そんな感じで。
AngularJSの$httpや$resourceでのリクエストにAuthorizationヘッダーでの認証を付加する
個別のリクエストではなくインターセプターを使ってまとめて追加。 インターセプターを作って$httpProvider.interceptors配列に追加するだけ。 下記コードは、サーバからのtokenを取得済みなら、Authorizationヘッダーに追加してリクエストするようになる例。
#auth_interceptor.coffee "use strict" angular.module("myApp") .factory("AuthInterceptor", (AuthToken)-> "request": (config) -> config.headers ?= {} if AuthToken.isToken() #Authorizationへの記述形式は、サーバの認証方式による。例:Token token="abcdefg...." config.headers.Authorization = AuthToken.getTokenString() config ).config ($httpProvider)-> $httpProvider.interceptors.push("AuthInterceptor")
One-time bindingと$resourceで気をつけること
前提
AngularJS1.3からOne-time bindingという最初の一回だけバインディングする仕組みが入った。 $resourceはpromiseではなく、先に空配列を返す。
問題
なので、下記のようにngRepeatをOne-time bindingにすると、空配列評価されて、何も表示されなくなったりする。 あ、下のindex()はquery()と読み替えて問題なし。
#sample.coffee angular.module("myApp") .controller "SampleCtrl", ($scope, Group) -> $scope.groups = Group.index()
<!--index.html--> <div ng-repeat="group in ::groups"> {{::group.name}} </div>
解決
プロミスで処理しよう。 個人的には$resourceは出来るだけpromiseにしたほうがいいと思う。
#sample.coffee angular.module("myApp") .controller "SampleCtrl", ($scope, Group) -> Group.index().$promise.then((groups)-> $scope.groups = groups )
OS X YosemiteにアップデートしたらHomebrewでインストールして自動起動設定にしていたnginxのサイトにアクセスできなくなった
こういう設定で家庭内で食材検索のWebアプリを動かしていたが、動作させていたMac miniをYosemiteにアップデートしたらアプリのサイトにアクセスできなくなってしまった。
で、調べようとする過程でbrew doctorしようとしたらbrewコマンドも使えなくなってた。
$ brew doctor /usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 26: /usr/local/Library/brew.rb: Undefined error: 0
ので、まずこちらを解決する。
Yosemiteの/System/Library/Frameworks/Ruby.framework/Versionsの下はCurrent と 2.0になっていて、Currentは2.0のシンボリックリンクになっている。
brew.rbを編集。
$ vi /usr/local/Library/brew.rb #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0 <- これを #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0 <-こう変える
これでbrew updateとかdoctorとかしようとすると当然怒られるので以下のように。
$ cd /user/local $ git commit -a -m "ruby version 2.0" $ brew update
OK.
本題のnginxとunicornの確認。 まず、unicornのポート5000番にブラウザからアクセスしてみると、こちらはアクセス出来ている。
nginxがダメなようだ。
plistをunloadしてnginxを手動で起動して確認してみる。
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist $ nginx nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /usr/local/etc/nginx/nginx.conf:2 nginx: [emerg] mkdir() "/usr/local/var/run/nginx/client_body_temp" failed (2: No such file or directory)
ディレクトリ作成に失敗というメッセージが出たので、手動で作ってみた
$ mkdir -p /usr/local/var/run/nginx/client_body_temp $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
OK.ブラウザから8080番にアクセスしたところ無事アクセス出来た。