タグ

ブックマーク / qiita.com (87)

  • uWSGI の spare2 cheaper algorithm を作った - Qiita

    [uwsgi] ... processes=10 cheaper-algo=spare2 cheaper=2 cheaper-initial=2 cheaper-step=2 cheaper-idle=30 process=10 は最大ワーカープロセス数です。 cheaper=2 が最小プロセス数になり、この間で調整されることになります。 cheaper-initial=2 が起動直後のワーカー数になります。 spare2 アルゴリズムは、 cheaper で指定された数の idle 状態のワーカー数を維持しようとします。 例えば idle 状態のワーカー数が 1 つになった場合、 2 - 1 = 1 個のワーカーを起動します。 cheaper-step=2 は一度に起動するプロセス数の上限です。 cheaper が大きいときに、 cheaper-step であまりたくさんのプロセスを一気

    uWSGI の spare2 cheaper algorithm を作った - Qiita
  • docker-machine を使って boot2docker から脱却する - Qiita

    結論 ローカルで docker 環境をいじりたいけど、ローカルのリソースを使いたくない人には docker-machine が便利です。 さらに、複数の docker ホスト仕事で使ってる人とかは、切り替えも簡単なので、とてもお薦め。 概要 自分は Mac で開発してるのですが結構な頻度で docker build で image を作っては試しの繰り返しをしたりしています。 MBA だとマシンパワーが残念な感じなので、docker-machine を使って Digital Ocean に docker 環境を用意してしまいます。 あたかもローカルで docker run しているけど、実は Digital Ocean に繋いでいるという感じを構築します。 注意 別に boot2docker が嫌いとかではないです。単にローカルのマシンパワーを吸い取られるのがイヤなだけです。 環境 Ma

    docker-machine を使って boot2docker から脱却する - Qiita
  • nginxのパラメータチューニングとh2o - Qiita

    (追記:タイトルが少々煽り気味な気がしたので微妙に変更しました。) h2oとnginxの性能比較 nginxよりも速いとされるh2oですが、実際に自分でもローカルでベンチマークを取ってみました。環境は以下の通りです。 EC2のc4.8xlargeインスタンス gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) Linux ip-172-31-13-40 3.14.35-28.38.amzn1.x86_64 #1 SMP Wed Mar 11 22:50:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux nginx-1.8.0 h2o-1.2.1-alpha1 wrk(ベンチマーク) ベンチマークコマンド 実行するベンチマークコマンドは以下になります。なお、オプションはできるだけRequest/secが大きくなるように調

    nginxのパラメータチューニングとh2o - Qiita
  • ansible で role の vars を分割する - Qiita

    tl;dr 結論から言うと include_vars を使えばできる。 roles/*/tasks/main.yml: - include_vars: private_key.yml - name: prepare private key copy: dest=~/.ssh/id_rsa content="{{ private_key }}" mode=0600 - name: prepare ssh config copy: dest=~/.ssh/config src=ssh_config mode=0600 ただし色々とハマりポイントがあった。 vars/main.yml からインクルードしたかった roles/*/vars/main.yml でこういう風に書きたかったんだけど、 vars はただの YAML なので、これはできないみたい。

    ansible で role の vars を分割する - Qiita
  • Chef-soloからItamaeに完全移行した話 - Qiita

    ※2016/04/24 追記 昨年末にItamae meetupで話した時のスライドリンクを追記しました。 Databag > itamae-secret の話やConsul連携の話が追加されています。 http://www.slideshare.net/tsuyoshitorii5/itamae-meetup-vol1public 現在自分が運用管理しているChef-soloプロビジョニングの仕組み 1 を Itamaeに移行した時のお話をしようと思います。 管理規模としては大規模ではなく、小〜中規模的なところかと思います。 (ロールによってレシピ切り分けたり、環境毎にレシピ用意したりなど…) 最初に: Itamaeについて https://github.com/itamae-kitchen/itamae 軽量なChef と考えればよいでしょう。 Chefの複雑さを取り除き、必要十分な部

    Chef-soloからItamaeに完全移行した話 - Qiita
  • JavaScriptのモジュールシステムの歴史と現状 - Qiita

    社内向け資料。自分が書いたコードを説明するために資料作る羽目になった。 昔のことはうろ覚えで雰囲気で書いてる部分もあるので、そこらへん勘弁。 古の時代(~2010) 前提としてJavaScriptは名前空間がwindowの一つしかない。 昔Prototype.jsがあった。もうみんな忘れたけどあの時期はプリミティブなオブジェクトのprototypeを生やしまくって、それが衝突しまくってprototype良くない的な雰囲気が生まれたり生まれなかったりした。 その反省があってか(歴史的に若干微妙な気がするが) jQueryは名前空間を一つに集約した。いわゆる jQueryPlugin は、jQueryのプロトタイプにヘルパを生やしまくっていた。グローバルを汚すのは駄目だけどjQueryの名前空間を汚すのはいいよね、ぐらいの考え。 jQuery非依存なライブラリは、「GoodParts」として、

    JavaScriptのモジュールシステムの歴史と現状 - Qiita
  • FoundationDB と Django ORM で遊ぶ - Qiita

    Multi-Model Database — FoundationDB 毎秒1400万回のライト(write)を行うNoSQLデータベースFoundationDB、ACIDの条件も満たす - TechCrunch FoundationDBのNoSQLデータベースがACIDトランザクションをサポート FoundationDB というのが TL に流れてきて、読んでたら面白そうだったので触ってみた。ただ触るだけだと面白くないので Django 経由で触ってみることに。 結論 Django 1.6 系でちゃんと python manage.py syncdb してデータが入る。これはすばらしい。 データの取り出しも問題ない。何か意識する必要もないので良い感じ。 性能はまだ 環境 Mac OS X 10.9.5 Python 2.7.9 Python 関連はこの辺入れた

    FoundationDB と Django ORM で遊ぶ - Qiita
  • phpの参照渡しはメモリを食うって本当? - Qiita

    はじめ phpでむやみに参照渡しすると、メモリうという。 ↓ここら辺で検証されているが、果たしてphp5.4でも状況は変わらないのか検証したい。 http://tanakahisateru.hatenablog.jp/entry/2013/12/12/012728 http://qiita.com/dkkoma/items/7fd216795ee2b90d90c6 検証環境 linux PHP 5.4.17 (cli) (built: Aug 21 2013 18:22:59) ソースコード 参考にしているソースそのままだが、下記。 <?php function profile($funcname) { $bigarray = range(1, 1000000); echo $funcname . "\n"; if ($funcname) { $start = microtime(tru

    phpの参照渡しはメモリを食うって本当? - Qiita
  • Ansible コーディング規約 (の例) - Qiita

    (これは http://tdoc.info/blog/2014/10/09/ansible_coding.html の転載です) edXgithub上でAnsibleのコーディング規約を公開しています。 このリポジトリは GNU AGPLv3です。翻訳の場合でもおそらく大丈夫だと思いますので、ここで翻訳して公開してみます。 一般 YAMLファイル すべてのyamlファイルは2スペースのインデントで、 .yml を拡張子に 付けてください。 変数 jinja変数の形式を使ってください。 $var ではなく {{ var }} です。 jinjaの変数名の前後に空白を入れてください。 {{var}} ではなく {{ var }} です。 環境独自で上書きされる必要がある変数名は全部大文字としてください。 ロール内で完結する変数名は全部小文字としてください。 ロール内で定義する変数名は、先頭

    Ansible コーディング規約 (の例) - Qiita
  • PhantomJS のラッパー Nightmare を試してみる - Qiita

    var Nightmare = require('nightmare'); new Nightmare() .goto('http://yahoo.com') .type('input[title="Search"]', 'github nightmare') .click('.searchsubmit') .screenshot('yahoo.png') .run(); var casper = require('casper').create(); casper.start('http://google.fr/', function() { this.fill('form[action="/search"]', { q: 'casperjs' }, true); }); casper.then(function() { this.capture('google.png'); }); c

    PhantomJS のラッパー Nightmare を試してみる - Qiita
  • Docker上でRedmineをすぐに使い始める - Qiita

    はじめに 飛ぶ鳥を落とす勢いのDockerですが、まだまだ番環境には使うのは怖いです。 今のところは開発用のRedmine動かすのに使うくらいがちょうどよさそうです。 あらかじめ配布されているコンテナイメージを使って素早くDocker上のRedmineを使い始めてみます。 構成 今回はVagrantでCoreOSを立ち上げて、CoreOS上にRedmineのコンテナを立ち上げる構成とします。 Vagrantのインストール 記事ではVagrantのインストールの詳細は割愛します。 "vagrant インストール" などで検索してみてください。 CoreOSのイメージダウンロード CoreOSはDockerホストOSとして必要最小限の機能だけを持った軽量なOSです。 githubにCoreOSのVagrantファイルがあるので落としてきます。

    Docker上でRedmineをすぐに使い始める - Qiita
    tell-k
    tell-k 2014/10/02
    docker pull sameersbn/redmine
  • Python で rsocket で通信が爆速でやばい. - Qiita

    漢なら RDMA でデータ送りたいですね! とりあえず手っ取り早く rsocket http://syoyo.wordpress.com/2012/12/06/rsocket-new-way-of-rdma-aware-programming/ を使い, 既存の python スクリプトで高速転送を実現してみましょう. 構成 Server と Client は InfiniBand QDR と, 1 GbE で物理的に繋がっています. InfiniBand のレイヤは IPoIB で繋がっているものとします. テストスクリプト Client から 1GB のデータを送り, Server 側はそれを受け取るだけというスクリプトです(単方向データ通信). # server.py import socket import itertools HOST = '' PORT = 8081 s = s

    Python で rsocket で通信が爆速でやばい. - Qiita
  • serverspecの高度なヒント - Qiita

    |-- Rakefile `-- spec |-- app | `-- ruby_spec.rb |-- base | `-- users_and_groups_spec.rb |-- db | `-- mysql_spec.rb |-- proxy | `-- nginx_spec.rb `-- spec_helper.rb require 'rake' require 'rspec/core/rake_task' hosts = [ { :name => 'proxy001.example.jp', :roles => %w( base proxy ), }, { :name => 'proxy002.example.jp', :roles => %w( base proxy ), }, { :name => 'app001.example.jp', :roles => %w( bas

    serverspecの高度なヒント - Qiita
  • 非デザイナーエンジニアが一人でWebサービスを作るときに便利なツール32選 - Qiita

    非デザイナーエンジニア(Rubyist)の私が、一人でこんなWebアプリを作ってみました。 まだβ版ですが、Pocketやfeedlyの未読コンテンツの中から、 重要度が高いものだけをリマインドしてくれるサービス「Reminderr」です。 Reminderr:http://www.reminderr.me/ 要するに、私自身のPocketとかRSSがカオスになっているので、 その中で重要なものだけ教えてほしかったので、 自分で作っちゃえ!って思って作りました。 そのときに使った便利ツールたちをまとめておいたら便利そうだったので、 今回使ったもの+αを全てまとめてみました。 紹介するツールたちを駆使すれば、 非デザイナー&デザインセンス0の私が、 1週間程度でこれくらいのアプリをリリースできるので、 他のエンジニアにも便利なツールがいっぱいあると思います。 Bootstrap系 Boots

    非デザイナーエンジニアが一人でWebサービスを作るときに便利なツール32選 - Qiita
  • wsgi, Bottle, Flask の速度差 - Qiita

    ISUCON の季節ですね。 ISUCON では慣習的に各言語で代表的なマイクロフレームワークが使われるのですが、 Python では今のところ Flask がずっと使われています。 Flask は確かに、簡単なサンプルアプリを書くときの見た目はマイクロフレームワークになっています。 しかし、構造的には沢山のフック、シグナルがあったりしていて、重量級の設計になっています。 Flask 体と Werkzeug を合わせると数万行のサイズです。単なる Hello World アプリでも、数十の関数呼び出しが裏で動いています。 Bottle も、 Flask と同じくマルチスレッド対応で、スレッドローカルを使ったコンテキストスタックがある、拡張機能もあるフレームワークですが、構造は Flask よりも大分質素です。 ソースコードも1ファイル3000行代で、その分フレームワークのオーバーヘッドも

    wsgi, Bottle, Flask の速度差 - Qiita
  • Terraform入門 日本語訳 - Qiita

    Intro の参考訳です。Terraform に対する理解の手助けになればと思います。※v0.1.0に対する記述のものであり、バージョンが変わると、内容にに変更が加わる可能性があります。 変更リクエスト大歓迎です。 Terraform 入門 Introduction http://www.terraform.io/intro/index.html Terraform 入門ガイドへようこそ! こちらのガイドは、これから Terraform を始めるために役立つものです。ガイドでは、Terraform とは何か、どのような問題を解決するのか、既存のソフトウェアとの違いは何か、そして Terraform のクイックスタートから構成されます。 既に Terraform の基に慣れているのであれば、Documentation は利用可能な全ての機能や、内部実装に関するリファレンスとなるガイドを提供

    Terraform入門 日本語訳 - Qiita
  • Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita

    まえがき データにIDを持たせたいとき、単純な方法としては、DBの提供するauto incrementを使う場合やUUIDを利用することがある。それぞれの方法の利点欠点は以下の通り。 データベースのauto incrementを使う場合 利点: 特別な実装が必要ない 欠点: DBを1台で運用するとデータベースがパフォーマンス・障害のボトルネックになる DBを二台にするとIDのユニークさや順序の保証が困難 UUID(v4)※1を利用する場合 利点: 分散環境で各々がIDを生成しても衝突しない IDを公開したくない場合に、推測されにくいIDを生成できる 欠点: 128ビット必要、DBのインデクシングやプログラミング言語で扱うときに不利なことがある IDから時間の情報が失われる、例えば2つのIDを比べてどちらが古い投稿か判断できない 世界の大企業がどうしてるか 調べてみると多くの企業がブログなど

    Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita
  • Linuxファイルシステムをまとめてみました - Qiita

    【ext2からの追加機能】ジャーナリング複数のブロックにまたがるディレクトリに対してのツリーベースのディレクトリインデックスオンラインファイルシステムリサイズ(拡張のみ) 【デメリット】2038年1月18日以降の日付に対応していない。fsckがクソ遅い

    Linuxファイルシステムをまとめてみました - Qiita
  • Python 3の正規表現で \d を使うな! - Qiita

    案外知られていないようなのですが、Python 3 標準の reモジュールの正規表現では\dがいわゆる全角数字にもマッチします。 実際に試してみます。 >>> import re >>> re.findall(r"\d", "012012") ['0', '1', '2', '0', '1', '2'] >>> \dが'0'、'1'、'2'にもマッチしていますね。 この挙動があまり知られていない原因としては、 Python 3の公式ドキュメントの「正規表現 HOWTO」の説明が、かなり誤解を招きやすい書き方になっている。 \dがいわゆる全角数字にマッチするかどうかをわざわざテストする人は少ない 敬虔なPythonistaは正規表現を使わないやり方を好む傾向がある 等の理由が考えられますが、他の原因もあるかもしれません。 \dを[0-9]にだけマッチさせるには、\dの代わりに[0-9]を使う

    Python 3の正規表現で \d を使うな! - Qiita
  • iptablesの設定メモ - Qiita

    以下の通りの方針に従って設定を行う 入力(INPUT),転送(FORWARD)は許可したもの以外は破棄(DROP) 出力(OUTPUT)は基的に許可(ACCEPT) 入力で許可するもの以下のとおり sshサーバへの接続は許可 ローカルループバックインターフェースからの接続は許可 pingなどICMPパケットを許可 自サーバから接続済みの通信に関するパケットを許可 ip偽装攻撃対策 プライベートIPアドレスからの接続は破棄 ローカルループバックからの接続は拒否 特殊なアドレス(リンクローカル,TEST-NET,クラスD,クラスE)からの接続は拒否 Smarf攻撃対策 ブロードキャストのパケットを破棄 上記に対応する iptables の設定は以下 # Generated by iptables-save v1.4.7 on Wed Apr 2 03:07:56 2014 *filter #

    iptablesの設定メモ - Qiita