nginx Rails Mysql の構成で、アクセス負荷に耐えるためとりあえずやっておくこと

Too many open files nginx (/etc/nginx/nginx.conf) # CPU と同じ数 worker_processes 8; # worker_connections の 4倍程度 # failed (24: Too many open files) に対処できる。 worker_rlimit_nofile 40960; events { # とりあえずこの値 worker_connectio…

Feedlyに開発中のRSSが登録されてしまった場合

消すことは出来ません。 RSS自体のURLを変更し、サイト内のlinkタグを修正すれば、新しいRSSがキャッシュし直されます。

safari 使用時、ActiveAdmin で iframe を入力した文字があると、data:, というページにリダイレクトする

ActiveAdmin のバグです。 ActiveAdmin.register Hoge do controller do before_filter :disable_xss_protection def disable_xss_protection response.headers['X-XSS-Protection'] = "0" end end end こうします。

Whenever の schedule.rb 内の設定を環境ごとに変える

$ bundle exec whenever --update-crontab appname --set environment=productionこのように処理を実行した時、schedule.rb の中では、ENV['RAILS_ENV'] で取得できない。$ config/schedule.rb require File.expand_path(File.dirname(__FILE__) + "/environ…

Ruby で 連想配列を定義しつつ定数も定義する

class Status VALUES = { publish: PUBLISH = 0, pending: PENDING = 1, draft: DRAFT = 2, trash: TRASH = 3, } end このようにアクセスできる Status::PUBLISH Status::VALUES

Capistrano3 でRailsをデプロイするとき、current_path, shared_path などを正しく取得する

$ config/deploy.rb # config valid only for current version of Capistrano lock '3.4.0' set :application, 'hoge' set :repo_url, 'git@bitbucket.org:hoge/hoge.git' # Default value for :scm is :git set :scm, :git # set :rbenv_ruby, '2.2.1' # De…

heroku の Postgres のデータを、独自サーバーの mysql へ転送する

アップロード先 mysqlのサーバー起動 $ gem install taps $ gem install mysql $ taps server mysql://root@localhost/releasenote_stg?encoding=utf8 <basic認証名前> <basic認証パスワード> 5000 番ポートでサーバーが立ち上がります。 サーバーIP アドレスを確認しておく。 コピー元のheroku </basic認証パスワード></basic認証名前>…

Carrierwave で 独自のversion ファイルを保存する

例えば、wav ファイルを 保存したときに、別バージョンとして mp3 も保存するような場合。 version :mp3 do process :convert_mp3 # この名前が、最終的なファイル名になる。 # デフォルトで、 mp3_****.wav になっているので、リネーム def full_filename f…

Sails が pm2 で 起動しない場合

module.exports.models.migrate に、safe, alter, drop いずれかを指定しないと、処理がバックグラウンドで止まり、起動できない。

Sails config の書き方

把握するのに時間がかかったのでメモ。 ./config/* の中身が設定としてロードされる。記載されているルールとしては、例えば log.coffee (log.js) の場合は、 module.exports.log = { hoge: "aaaaa" } module.exports.log までをドットでアクセスして、ファ…

GridViewのCell などのサイズを比率で指定する

GridView は、横幅が自動計算されるため、比率を合わせるには、設定時に計算する必要がある。FrameLayout を入れていた場合は、以下のように onMeasure を オーバーライドし、height を再計算する。 xml の 属性に、layout_height_ratio="0.8" のように指定…

android で view のサイズを取得する

void checkSize (View view) { final Point size = getWindowSize(); // window のサイズを 通知する view.measure (size.x, size.y); // サイズ取得! final int w = view.getMeasuredWidth(); final int h = view.getMeasuredHeight(); } Point getWindowS…

Rails で Base64 エンコードされたデータを Carrierwave で保存する

class Api::FilesController < Api::ApplicationController def create # file = params[:data] data_str = params[:data_str] file = File.new # file.data = data file.data_str = data_str end end class File < ActiveRecord::Base mount_uploader :data…

Cloudn の Object Strage を PHP で S3 の代わりに使用する

composer で S3 の ライブラリを取得する $ curl -sS https://getcomposer.org/installer | php $ vi composer.json { "require": { "aws/aws-sdk-php": "*" } }$ php composer.phar install 利用する $ vi hoge.php

inputAccessoryView が iPhone6 で キーボードにめり込む

Storyboard や、 xib ファイルから viewController を取得し、view を取り出したものを指定すると、表示が崩れる。コード上でUIView や UIButton を生成し、inputAccessoryView に渡す必要がある。

Vagrant up でエラー

Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: mount -…

iOS8 AVPlayerItem を 変更時 アプリが落ちる

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance 0x17001f8c0 of class AVPlayerItem was deallocated while key value observers were still registered with it. Current observation info: ( Conte…

Google App Engine for Python を使うときは scaffold を使う

scaffold と言っても、rails の scaffold とは何も関係がありません。 Google社製の、簡易フレームワーク(設定ガイドライン)です。google/gae-secure-scaffold-pythonセキュリティの設定や、URLのディスパッチ、フォルダの構成、デプロイスクリプトなどが…

Xamarin Studio 5.3 で APNS に必ず失敗

Xamarin Studio 5.3 の不具合で、以下のコードが必ずエラーになる。 UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound; UIApplication.SharedApplication.…

Xamarin.iOS URL Encode 時、+ が残る

WebUtility.UrlEncode ("あい うえお"); こちらを使う System.Uri.EscapeUriString ("あい うえお");

C# で callback を受け付ける 関数を、async await に変換する

C#

void Sample () { Hoge hoge = new Hoge (); hoge.OnSuccess += (sender, e) => { Console.WriteLine ("end"); }; } async Task Sample () { var taskCompletionSource = new TaskCompletionSource<string>(); Hoge hoge = new Hoge (); hoge.OnSuccess += (sender, </string>…

アプリでシェアするために Facebook の申請をする時

審査期間は、今は1週間かからない程度です。 アプリが動く状態になっていなければなりません。 シェア文言にデフォルト文言を入れるのが目的の場合 iOS OS の機能を使ってシェアしてください。 規約違反ですが、問題なくデフォルト文言と画像が設定できます…

画面回転時、navigationItem の 画像サイズを調整する

縦画面時は44px、横画面時は32px の画像を用意する必要があるが、 元からその2種類を登録するメソッドがあった。 - (void)setupNavigationBar { UIBarButtonItem *refreshBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItem…

Coffeescript で 値を返さない

hoge = ()-> fuga = 1 return

Android で minSdkVersion は 対応しているのにインストール出来ない場合

N-06D のOS は 4.0.4 で minSdkVersion に 14 を指定しているのに、 インストール出来なかった。これは、N-06D のカメラに、オートフォーカスがないことが原因で、 permission に CAMERA を追加すると、自動でオートフォーカス必須に設定されてしまう。 そこ…

天気API

日本だけであればいくつかAPIが存在したが、 海外にも対応する必要があったので、海外のAPIだが、使用されているAndroidアプリの評価が高く、有料の、 wundergroundを使用してみた。http://www.wunderground.com/weather/api/d/docs?d=data/index&MR=1 サポ…

ScrollView の 影を消す

<ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:paddingTop="10dp" android:overScrollMode="never" > </ScrollView> android:overScrollMode="never" これで消えます。

Android で getMap() が null になる

これでは GoogleMap が null になってしまう。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); setupMap(); } private void setupMap () { final FragmentMa…

nginx で F5 アタックに耐えるための設定

IPアドレスによって、1秒間に1リクエストに制限する設定。 超えた場合は、503を返します。burst の設定がある場合は、rate を超えても、burst回数までは許容し、rate のペースでレスポンスを返します。 limit_req_zone $binary_remote_addr zone=one:10m rat…

nginx + php-fpm fastcgi で キャッシュする

fastcgi_cache_path /var/cache/nginx/fscgi levels=1:2 keys_zone=fscgi_dayo:10m inactive=10m; server { listen 80; server_name test.com; access_log /var/log/nginx/access_dayo.log ltsv; error_log /var/log/nginx/error_dayo.log warn; root /var/w…