Pythonで2分探索木の実装 (1)

完全2分木はターゲットせずに、ALDS1_8をターゲットとして考える。 二分探索木 挿入| アルゴリズムとデータ構造 | Aizu Online Judge 二分探索木 検索 | アルゴリズムとデータ構造 | Aizu Online Judge 二分探索木 削除 | アルゴリズムとデータ構造 | Aizu …

fluentdのqueued_chunks_limit_size利用時の挙動の検証

fluentdのv1.3.3 で queued_chunks_limit_size が設定可能になり、説明に以下のようにあったけどパッと理解できなかったので確認をしました。 If you set smaller flush_interval, e.g. 1s, there are lots of small queued chunks in buffer. This is not g…

cobraとviperで設定ファイルの値をフラグの値で上書きする

Go言語でコマンドを作ろうとしたときに、オプションの指定に設定ファイルの読み込みと、オプションで読み込んだ値を上書きをしたかったのでcobraとviperでの実現の仕方を確認する。 ロングオプションを利用する qiita.com を参考に。 記事にあるように、 vip…

filebeats でNginxのログを確認する

Ingest nodeと、FileBeatのモジュールがで利用できるようになって、とりあえず小規模でとりあえず導入するような構成ならLogstashとか、Fluentd無しのFilebeat + Elasticsearch + Kibanaの構成でなんとかなるんじゃ無いかと試してみる。 ある程度以上の規模…

Prometheusのec2 service discoveryを試す

Prometheusには ec2 service discovery機能があり、EC2インスタンスに監視用のagent(exporter) をインストールして、特定のタグを設定するだけで監視・モニタリングの対象とすることがでるので、設定方法を確認してみます。

Swift3でファイルを読み込む

swiftファイルと同じ場所にある、sample.txtを読み込むコードは以下のようになる。 let path = Bundle.main.path(forResource: "sample", ofType: "text")! if let data = NSData(contentsOfFile: path){ print(String(NSString(data: data as Data, encodin…

Capistrano3のコードを読んでみる1 ~設定ファイルのパス設定~

Capistranoを実行時に利用するconfig/deploy.rbとかproduction.rb、staging.rbのパスを変更できるのか気になったのでソースコードを読んでみました。 結論としては、変更可能ですがcapistrano/setupをCapfileでrequireする前にsetする必要があります。 また…

Nginxのモジュールの作り方 C言語でHandlers編

概要 モジュールの種類 Nginxで開発できるmoduleの種類は、ざっくりとわけると以下の3種類があります。 Handlers・・・locationを指定して処理が可能 Load balancers・・・upstream moduleやload balancer moduleと連携して使う。load balancer moduleにはRo…

TerraformをDigital Oceanで試してみる3 - provisionerにchefを使う

Terraformのprovisionerとしてchefを使うにはChefサーバが必要になります。 Chefサーバの準備が面倒な場合は、Hosted Chefで代用できます。Hosted Chefの設定については前回の記事が参考にしてください。 Chef Clientのインストール provisionerにChefを指定…

Hosted Chefを使ってみる

サーバがインターネットに接続可能でChefサーバを建てるまではないけど、少しChefサーバを使ってみたいというようなときにHosted Chefが便利なので使ってみました。 Chef 12のオープンソース版と25ノード制限について を見ると、5ノードまでは問題なく使える…

TerraformをDigital Oceanで試してみる2 環境情報の外出し

前回では、do.tfファイルの中に全ての情報を書き込みました。 それではtoken情報やssh keyの値などはgitなどで管理しづらいので、ssh_keysとtokenを別のファイルで管理します。 ファイルを外出しするようになると、以下の様な構成になります。 . ├── do.tf ├…

TerraformをDigital Oceanで試してみる1

Digital Oceanの情報取得 Terraform を Digital Ocean で触ってみた (初級編) を参考にDigital Ocean のtokenを作成します。 Degital OceanのAPI V2を利用して、curlからSSH鍵の情報を取得します。 参考:https://developers.digitalocean.com/documentation…

gorillaでAPIサーバを書く 1

gorillaを使ってAPIサーバを書く。 ディレクトリ構成としては、以下を想定。 .api │ ├── handlers │ ├── core.go │ └── router.go └── api.go それぞれのファイルは大まかに以下のような役割になります。 api.goはサーバの起動設定などを記載 router.goはフ…

SICPを読む会 1 問題1.3

読む会でSICPを黙々と読む。 SICP Support for DrRacketのインストールを参考にDrRacketをインストールして実行環境を作成します。 DrRacketで言語宣言ペイン(上側のペイン)で、#lang planet neil/sicp と書いて実行しても調べたページとは違う挙動しまし…

goのお勉強1

スコープ 変数や関数名で1文字目が小文字だとパッケージ内からのみ見える。大文字だとパッケージ外からのみ見える。 ポインタ ポインタは、C言語と同様に利用できる。 package main import "fmt" func main() { a := 5 var pa *int = &a // *intはint型のpoi…

Omnibus InstallerでインストールしたChefのRubyでserverspecを実行する

chefのバージョンを確認する。 # chef-client -v Chef: 12.0.3 Rubyのバージョンを確認する。 /opt/chef/embedded/bin/ruby -v ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux] rubyなどはchef/embeddedに入っているので、serverspecのインスト…

パーフェクトRuby写経 特異メソッドの作り方

特異メソッドとは、クラスに定義されたメソッドの他に、そのオブジェクト固有のメソッド持つことができ、それを特異メソッドといいます。 特異メソッドを定義するには、メソッドを定義したいオブジェクトをメソッド名の前に指定してメソッドを記述します。 …

chefdashを試す

chefdash by sidebolt を試してみます。 chefdashはchef-clientのノードの登録や、environment毎やserver毎にcookbookを実行するWebUIを提供するWebアプリケーションです。 必要なものを事前にインストールしておきます。 sudo apt-get install git git-core…

VagrantのCentOS 6.4にChef-Serverをインストールしようとはまった

sudo chef-server-ctl reconfigureを実行しようとしたら、次のようなエラーが出た。 Expected process to exit with [0], but received '22' ---- Begin output of curl -sf http://127.0.0.1:8000/_status ---- STDOUT: STDERR: ---- End output of curl -s…

CentOSにchef-zeroのインストール

chef-zeroとは chef-zero とは、Chef 11 Server 同等の REST API インターフェースを備えた軽量で簡易な Chef Server です。認証やデータの永続的な保存などを行わない代わりに導入が大変簡単で、Chef Clientなどのテストに有用です。 とのこと。 chef-zero…

ChefのCookBookで、virtualenvを使えるようにする

poise/python · GitHub を使ってPython環境を作ると、自作のCookBookでpipやvirtualenvが使えるようになります。 poise/python · GitHub で は、Pythonのインストール、pipのインストール、virtualenvのインストールを行います。 インストールする場合はbuil…

opscodeのCookBook(selinux)を読む

まずは、比較的難しいことをしておらず、シンプルなopscodeのCookBookを読んでみます。 今回の読んでみるCookBookは、opscode-cookbooks/selinux · GitHub です。 ディレクトリ構成は次のようになっています。 `-- selinux |-- CHANGELOG.md |-- CONTRIBUTIN…

chefのレシピを読み書きするときに知っておくと便利なこと1

only_if only_ifは評価結果がtrue(return値が0)の時に実行。 ruby_block ruby_blockを使うと、rubyのコードが記述可能になる。 ruby_block "{リソース名}" do block do Rubyのコードを記述 : end action {:create(Rubyのコードを実行する)|:nothing(何も…

CentOSに最新のgitをインストールする

必要なパッケージをインストールする。 # yum install -y zlib-devel perl-devel gettext gcc curl-develDownloads - git-core - Git - the stupid content tracker - Google Project Hostingから最新版をダウンロードする。 # wget http://git-core.googlec…

Chefのお勉強2 - recipeの登録、利用

Workstation(今回はChefサーバ)で実行 利用するレシピはOPSCODEのgetting-started。レシピをChef Serverにアップロードする。 getting-startedはホームディレクトリに、chef-getting-started.txt を作成するレシピ。 # git clone https://github.com/opsco…

Chefのお勉強1 - CentOSでのChef Server環境の構築

今回はChefサーバ(Chef Server、兼Workstation(Chef Client))と、管理対象ノード(Nodes)の2台構成(CentOS 6.4)で環境を作ります。 事前準備 ホスト名を解決出来るようにしておく。 DNSを使わない場合は、/etc/hosts、/etc/sysconfig/networkを修正して、…