XPS15が届いた
2/28に注文して今日届いた www.dell.com
帰宅後一通りフィルムを貼ったりセットアップをした
このフィルムを購入したが、ベゼル部分までフィルムの幅があるので端の方に空気が入らざるを得ない感じで少し残念だった
本体は片手で持てるぐらい軽いのでとても満足している
スペックのよさげなPCが手に入ったので3D系で何かやりたいな
ボクセルコーントレーシングの2bounce以上について考えていた
今日はボクセルコーントレーシングで2Bounce以上はどうやって実現するんだろうと考えてました
unityで有名なこちらのアセットを30分ほど眺めてみたところ、どうやらフィードバックループによって実現しているみたいでした
フレーム間で交互にボクセライズとバウンスをしてる箇所
ボクセライズ時に過去のバウンスボリュームを合成している箇所
深く追っていないのでよくわからないのが、カメラを急激に動かした際のポッピングはどう対応しているのだろうか?
今のところ対応箇所を見つけれていない
フィードバックの係数を指定できるようになっているのでそちらで調節する感じなのか??
golangとGmail APIで大量の未読メールを既読にする
きっかけ
メールを3年ぶりに整理しようとしたところ、未読メールが20万件ほど溜まっていたので適当に検索して出てきた未読メールの一括既読を試してみたのですが、どうも件数が多すぎてエラーを吐かれているらしい
ブラウザから一括既読する方法についての記事
発生したエラー
上記の方法でも100件ずつすれば問題ないのですが2000回も反復作業はできないので、gmailのAPIを利用して分割して既読にすることにしました
今回作成したコードはこちら
動作環境
~$ go version go version go1.8.3 linux/amd64
OAuth認証
googleのAPIにアクセスするためには認証をしないといけないのでこちらのクイックスタートを見て認証を終えた(認証部分やアクセストークンの保存等の実装は丸まる拝借した)
https://developers.google.com/gmail/api/quickstart/go
後はマニュアルを見つつ、既読にするコードに変更していく
未読メールを100件取得する
メールを取得するメソッドはこちら
https://godoc.org/google.golang.org/api/gmail/v1#UsersMessagesService.List
ただし、上記のメソッドをそのまま利用すると未読既読関係なく最新のメールを100件取得してしまうのでクエリパラメータを加える、それが以下のメソッド
https://godoc.org/google.golang.org/api/gmail/v1#UsersMessagesListCall.Q
上記のメソッドに文字列でブラウザのgmail上で利用できる検索ボックスと同じものを指定して取得するメールを限定できる、今回は未読メールなので is:unread
を指定しました
以上を踏まえて、未読100件のメールを取得するコードは以下のようになる
mes, err := srv.Users.Messages.List(user).Q("is:unread").Do() if err != nil { log.Fatalf("Error: %v", err) }
ちなみに、取得時に件数が0の場合はエラーになる
メールを既読にする
APIのスコープを変更する
未読メールには UNREAD
というラベルが設定されているので、そのラベルをメールから削除して既読にする
チュートリアルのサンプルではAPIのスコープがReadOnlyになっているので、スコープを gmail.GmailModifyScope
に変更しました
config, err := google.ConfigFromJSON(b, gmail.GmailModifyScope) if err != nil { log.Fatalf("Unable to parse client secret file to config: %v", err) }
一度に100件既読にする
メールの状態を変更するメソッドは Modify
と BatchModify
があるが、今回は100件一気に変更したいので BatchModify
を利用する
https://godoc.org/google.golang.org/api/gmail/v1#UsersMessagesService.Modify
https://godoc.org/google.golang.org/api/gmail/v1#UsersMessagesService.BatchModify
先程取得した100件のメールからIDのスライスを作成して UNREAD
ラベルを削除するリクエストの構造体を作成後に実行すれば未読100件の既読が達成できる
ids := []string{} for _, e := range mes.Messages { fmt.Println(e.Id) ids = append(ids, e.Id) } request := &gmail.BatchModifyMessagesRequest{ Ids: ids, AddLabelIds: []string{}, RemoveLabelIds: []string{"UNREAD"}, ForceSendFields: []string{}, NullFields: []string{}, } err = srv.Users.Messages.BatchModify(user, request).Do() if err != nil { log.Fatalf("Error: %v", err) }
未読0件になるまで繰り返す
実は100件の未読メールを取得する際に、取得件数が0の場合はエラーを返すようになっているので、上記の流れをループすればOK
3秒毎に100件ずつ既読にしているので結構時間がかかりますが一日寝かせてみます
apacheからnginxに乗り換える2
昨日の続き
php-fpmをインストールする
php5.6を使っているのでremiリポジトリを追加後インストールする
sudo yum install yum --enablerepo=remi-php56,remi,epel install php-fpm
その他は下記記事を参考に設定 qiita.com
/etc/nginx/conf.d/default.conf
は最終的にこうなった
server { listen 80; server_name localhost; root /var/www/html; location / { index index.php index.html index.htm; } location ~ .php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/html; } }
文字化け
デフォルトだとutf-8が文字化けして配信されてしまったので
/etc/nginx/nginx.conf
のhttpブロックの先頭に↓を追加した
charset UTF-8;
apacheからnginxに乗り換える
思うところがあり、今動いているrailsアプリケーションをnginxに移している
まだまだやることはあるけど今日やった作業の備忘録を残す
環境
- CentOS6
- rails 5.0.1
yumからインストール
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm sudo yum -y install nginx
config関連作成
こちらの記事を参考にconfigを作成した
一点ハマったのは unicorn.rb
の pid '/var/www/rails/sampleApp/pids/unicorn.pid'
がこちらの環境ではフォルダが存在せず
unicorn起動時にエラーになってしまうので pid '/var/www/rails/sampleApp/tmp/pids/unicorn.pid'
と変更した
動かす
sudo service nginx start bundle exec unicorn_rails -c /home/kaneta/rails/kakin/config/unicorn.rb -E development -D
メモ
- 最初unicornをproductionで動かしたらrailsのエラーページがでるだけだった
- どうやらアセットパイプラインと言うものが絡んでそう
- developmentは自動でアセットをコンパイルする設定らしいが、productionは手動でやる必要がある
- ひとまずdevelopmentで動かす
- developmentでアセットが読み込まれない
- 自動ビルドしたアセットは
path/to/public
に置かれない? - nginxの設定では
path/to/public
しか見れないようになっている config.assets.debug = false
をconfig/environments/development.rb
に追記
- 自動ビルドしたアセットは
2017/08/04
お盆は実家に帰るつもりだったけど仕事が山積みで帰れないかもしれない..
明日は休日出勤なので頑張ろう
最近Goを書いているので、この土日でやったことまとめれるといいな
2017/07/24
昨日の記事の通知ボットのチャンネルを使ってるところがよろしくなくバグってるっぽいので今週目処に書き直したいな