mojavy.com

95/5 Mbps とは

August 30, 2015 at 04:22 PM | categories: tips, internet |

AkamaiのBilling Center API では、95/5 Mbpsという単位のデータが取得できる。

95/5 Mbps というのは、特定の期間の平均Mbpsを5分間隔でサンプルしたものをソートした時の95パーセンタイルの値ということらしい。

なぜこのような数字が使われるのかというと、単純にピークのトラフィックを基準にして課金されると利用者側にとってつらいという問題があるからだ。 インターネットのトラフィックは往々にしてスパイクが発生するので、それだと普段はほとんど帯域を使わないのに一瞬のアクセス急増があっただけでコストが大きく増大してしまう。

そこで、あるISPが95/5 Mbpsで課金するようにしたところ市場で支持を得たため、これが一般的な課金形式として広まったらしい。

参考



gitlab 6.6.4 CE のゆるふわセットアップ

March 11, 2014 at 02:08 AM | categories: chef, git, tips, gitlab |

gitlabもCentOSとUbuntuにはパッケージが提供されるようになったので、大分インストールが簡単になりました。

とはいえ、このパッケージはgitlab専用のマシンにインストールすることを前提にしているのか、小規模プロジェクトのために軽く使いたいよう場合ではつらいデフォルト設定となっています。安いvpsとかだと確実にメモリ不足でまともに動きません。

以下はとりあえずプライベートgitリポジトリが欲しいだけのような人のためのgitlabの設定の紹介です。

準備

https://www.gitlab.com/downloads/

ここからgitlabのパッケージをダウンロードします。 omnibus-ruby でつくられた全部入りパッケージなのでインストールでのコンフリクトは発生しないはずですが、既に稼動中のサービス(apache等)のことはあまり考慮されてないので使用するポートについては個別対応が必要です。

特に以下は注意が必要です。

  • nginx
  • redis
  • postgresql

ここでは、apacheが稼動しているubuntuにインストールします。

インストール

普通にインストールします。

$ sudo dpkg -i gitlab_6.6.4-omnibus-1.ubuntu.12.04_amd64.deb 
$ sudo gitlab-ctl reconfigure

ちなみにgitユーザが既に存在しているとこけるので消しておきます

$ sudo userdel -r git

gitlabの設定

gitlabの設定は /etc/gitlab/gitlab.rb に設定をかいて、chefで設定します。

$ cat /etc/gitlab/gitlab.rb
external_url "http://gitlab.example.com:8081"
unicorn["worker_processes"] = 1
postgresql["shared_buffers"] = "128MB"
postgresql["effective_cache_size"] = "32MB"

とりあえずpostgresqlがメモリを大量に食うので適当に減らします。

unicornもメモリ食いがちなので1プロセスにします。

external_urlにポートも含めたURLをかきます。apacheが80番で起動してるとnginxが起動できないので適当にはずします。ちなみに8080はデフォルトだとgitlabのunicornがつかっています。

このあたりは環境に応じて適当に設定してください。

gitlab-ctl reconfigure すると設定が反映されます。

その他の設定できる項目は /opt/gitlab/embedded/cookbooks/gitlab 以下のcookbookをみるといいです。

webサーバの設定

80番で起動しているapacheがいる場合はnginxにproxyします。

<VirtualHost *:80>
  ServerName gitlab.example.com

  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

  CustomLog  /var/log/apache2/gitlab_access.log combined
  ErrorLog   /var/log/apache2/gitlab_error.log

  ErrorDocument 502 /502.html

  <Directory "/opt/gitlab/embedded/service/gitlab-rails/public">
    Options FollowSymLinks
  </Directory>

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyVia On
  ProxyPreserveHost On

  ProxyRequests Off
  ProxyPass /assets/ !
  ProxyPass /uploads/      !

  ProxyPass / http://localhost:8081/ retry=1
  ProxyPassReverse / http://localhost:8081/

</VirtualHost>

以上ができたらapache再起動して、 http://gitlab.example.com にアクセスしてみてうまく表示できれば完了です。



TOMLノススメ

April 26, 2013 at 08:21 PM | categories: tips, toml |

github

TOMLとは

https://github.com/mojombo/toml

Tom's Obvious, Minimal Language (TOML) とはgithubの中の人が提案している設定ファイルのためのミニ言語で、以下のような特徴があります。

  • 人間が読み書きしやすい
  • 標準的なデータ型が利用できる
  • 曖昧さが発生する余地が極力排除されている
  • パーサをかくのが簡単

なぜTOML?

例えば、YAMLを設定ファイルに使っているシステムは多いですが、YAMLの仕様書は80ページもあり正しく使うのは意外と大変です。1

またJSONはカッコやダブルクオートの割合が多すぎますし、コメントも使えません。2

TOMLをつかえばそのようなストレスはありません。

TOMLの使い方

TOMLの書き方は本家のドキュメント をみてもらえばすぐわかると思います。

TOMLのライブラリは各種言語に対応したものが既にたくさんあります。 言語によっては複数の実装が存在するものもありますが、とりあえずはgithub上でのstarの数が一番多いものから試すといいと思います。

わざわざ説明するほどの内容でもないですが、ここでは一応rubyでの使い方を紹介します。 gem install tomlでインストールして、以下のようにするだけです。YAMLの場合と大体同じですね。

require 'toml'

TOML.load("thing = 9")
# => {"thing" => 9}

TOML.load_file("my_file.toml")
# => {"whatever" => "keys"}

その他

  • TOMLでは日付型も定義されていて、それもUTC固定というのが地味にいいです
  • githubのコードハイライトは既にTOMLに対応してます
  • emacsユーザはtoml-modeというのがmelpaに登録されているので、M-x list-packagesからインストールできます。

まとめ

TOMLという設定ファイルのための新しいフォーマットを紹介しました。 設定ファイルにYAMLやJSONつかってるひとはTOMLに移行すると幸せになれるかもしれません。


  1. 仕様を正確に実装したYAMLパーサはほとんど存在しないとかいう話もちらほら 

  2. https://github.com/mojombo/toml/issues/2  



Mac OSXでシェルスクリプトをキーボードショートカットに登録する方法

March 28, 2013 at 02:50 AM | categories: mac, shell, tips |

automator

概要を以下にメモ

  1. Automatorを起動
  2. サービスを選択
  3. 右ペインの上部、「次の選択項目を受け取ります」を入力なしにする
  4. 左ペインからシェルスクリプトを実行をダブルクリック
  5. デフォルトでcatになっている内容を任意のシェルスクリプトにする
  6. 右上の実行ボタンからテスト
  7. 適当な名前をつけて保存して閉じる
  8. システム環境設定>キーボードを開く
  9. キーボードショートカットのタブを選択
  10. サービスを選択してさっき保存したautomatorの名前をみつける
  11. 好きなショートカットを設定する

参考: http://superuser.com/questions/45740/fast-user-switching-apple-menu/46308#46308

備考

  • 新規作成したworkflowは保存して閉じるまでシステム設定のキーボードショートカットの項目に反映されない
  • workflowは$HOME/Library/Services に保存される


telnetでメールを送信する方法

February 23, 2013 at 06:17 PM | categories: postfix, tips, smtp |

lisp

何回やってもpostfixの設定の仕方を覚えられないので、今更ながら最低限のプロトコルを理解するためにtelnetからsmtpでメールを送信してみようと思い立ちました。

以下は自分のgmailアドレスにtelnetでメールしてみたときの個人的な手順メモです。

手順

1. 該当メールアドレスのMXレコードを調べる

普通のメールアドレスの@以下はドメイン名になっている場合がほとんどですが、DNSのAレコードに登録されているのはホスト名なのでメールサービスを提供しているホスト名を調べる必要があります。そのときに使うのがMXレコードで、nslookupでも以下のようにして調べることができます。

% nslookup -type=mx gmail.com
Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
gmail.com       mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.

Authoritative answers can be found from:

複数のホストが優先度をつけて登録されているので、この場合は gmail-smtp-in.l.google.com を使えばいいということになるみたいです。

2. telnetで25番ポートに接続してsmtpを話す

smtpはテキストベースのプロトコルなのでtelnetからそのままサーバとやりとりできます。 smtpプロトコルの詳細は省略しますが、最低限必要なコマンドは以下の5つだけ。

  • HELO - 通信開始
  • MAIL FROM - 送信元メールアドレス。ドメインのIPと送信元のIPが一致している必要がある。dynamic DNSのドメイン名でも大丈夫。ユーザ名部分は実際に存在しなくてもよい(その場合は返信を受けとれない) smtpサーバ側次第。postfixの設定によっては任意に設定できる。
  • RCPT TO - 送信先メールアドレス
  • DATA - メール本体の開始。'.'(ピリオド)だけの行で本文終了。本文のFromとToはなんでもよい。普通のメーラのfromやtoで表示されるのはここの情報
  • QUIT - 通信終了
% telnet gmail-smtp-in.l.google.com 25
Trying 173.194.79.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP k8si26817952pax.291 - gsmtp
HELO
250 mx.google.com at your service
MAIL FROM:<username@yourhostname>
250 2.1.0 OK k8si26817952pax.291 - gsmtp
RCPT TO:<username@gmail.com>
250 2.1.5 OK k8si26817952pax.291 - gsmtp
DATA
354  Go ahead k8si26817952pax.291 - gsmtp
Subject: xxx
From: yyy
To: zzz

.
250 2.0.0 OK 1361347877 k8si26817952pax.291 - gsmtp
QUIT
221 2.0.0 closing connection k8si26817952pax.291 - gsmtp
Connection closed by foreign host.

3. メールの確認

gmail上でメールがきているか確認します。DATA部分を適当に書くとスパム判定されてしまいますが一応届くはず。

postfixの設定メモ

上記は直接gmailのsmtpサーバで送信しましたが、mailコマンドからローカルのpostfix経由で送るにはpostfixを適切に設定する必要があります。

MAIL FROMのドメイン部分を省略した場合は、myoriginの値になった MAIL FROMで使われるのはmyoriginの値になるようなので、送信だけでよいのであればmyoriginのIPが送信元のグローバルIPに一致するように設定しさえすればよいということですかね。

ちなみに、debianのaptからpostfixを「ローカルのみ」の設定でインストールしてしまうと、デフォルトのmain.cfにリレーしない設定になっているので、main.cfを以下のようにコメントアウト。

# default_transport = error
# relay_transport = error

あと、sakura vpsのお試し期間中はメール送信できない仕様なので、sakura vpsで試す際は注意。

http://vps.sakura.ad.jp/terms.html



About Me

pic
mojavy

Recent posts






Categories



Badges