カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

正規表現を使ってhostnameを抽出する

完全に自分用のメモですが、FQDNにhostnameが含まれるようなドメインがあった場合に、hostnameだけを抽出したくなったので、そのときのメモ。 Pythonで書くとこんな感じ。 def extract_hostname(fqdn): __pattern = r'([^\\.]+)' regex = re.compile(__patte…

Facebookへ特定ドメイン含む投稿をしたらスパム扱いされた話

少し前の話になるのですが、Facebookに特定ドメインを含めた投稿をすると、警告が出るようになり、その調査をしたので、書いてみます。 現象は以下のとおり。 サービスリリース 拡散のためにFacebookにそのサービスのドメインを含めた投稿をする 以下のよう…

constants manager was released!!

Now on release constants manager!!. This library helps you to manage constants for python. It recommends to see README.md to use. The features are below. use different constants with environments variables. return default constants if ther…

pypiにパッケージを登録して、setup.pyの「scripts」と「console_scripts」の違いを比較してみた

みなさま、Pythonのパッケージ化はしたことありますでしょうか?最近以下のような記事を書きましたが、ツールを作ったものの、それを配布しようとなると、Pythonのパッケージ化に関して分からないことがあり、pypiにパッケージを登録して試してみました。 Py…

SSL/TLS通信できないときのハマりポイント9選

サービスをSSL/TLS化する上で、簡単にうまくいくこともあれば、何か設定が抜けていたり、間違っていたりして、どうもうまくいかないことがあります。そういうときに、僕が確認しているポイントを書いてみたいと思います。後半の2つは少しマニアックな感じな…

Pythonでコマンドラインツールを作りたいときには、setup.pyには何を書くべきか

前回のPython製コマンドラインツールのディレクトリ構成について。その考察。の続きです。 はてブコメントやFBでのコメントでsetup.pyに関する言及がいくつかあったので、どのようなことを書いたほうがいいのか調べてみました。 setup スクリプトを書くやい…

Python製コマンドラインツールのディレクトリ構成について。その考察。

はじめに 去年ぐらいからPython製のコマンドラインのツールをいくつか作っていて、構成もだいぶ固まってきたので、まとめてみる。規模としては1ファイルでは終わらないぐらいで、関数の数も数十になってユーティリティを作ったり、クラスをいくつか作らない…

今まで作ったPython, Ruby, Bashの関数を色々晒してみる

華金なのに飲みもないので、ブログでも書こう。今日は、今までに書いた関数をいくつも晒してみようと思う。RubyとかPythonとかbashとか必要に応じて色々作った関数もそこそこあるので、誰の役に立つかわからないけど、晒してみる。 importとかまでは記してな…

touchコマンドはファイルを作成するだけではないという話

Linuxでファイルを作成するときによくお世話になるtouchコマンド。そんな使い方をするコマンドだと思ってましたが、どうも誤解をしていました。 まず普通にファイルを作ってみましょう。 $ touch 01.txt $ touch 02.txt $ touch 03.txt $ ls -l 合計 0 -rw-r…

コールバック関数

今までコールバック関数をちゃんと把握してなかったので、メモ。 今回はnode.jsを使います。加算を2段階で行う処理。 function add(a,b,callback) { console.log(a+b) callback(a+b) } function add10(base) { console.log(base + 10) } add(1,2,add10) 実行…

Rubyでリトライとか、SSH経由でコマンドとか

実家にいるとどうも時間持て余してしまうので、昔書いたスクリプトを備忘録的に残しておく。一年以上前に書いたやつだな。。。 リトライ たとえば、特定のURLに対して並列でGETしたい、ただステータスコードがおかしかったりしたら、キャッチしておきたいよ…

2014年振り返り。2015年抱負。

仕事も無事納まり、今年の振り返りをしてみる。 仕事振り返り サイバーエージェントに入社したのが2011年12月。 早いもので3年過ぎ、4年目に入りました。今年は新サービスに関わっていたこともあり、今までとは違う新しい技術が触れてよかった年ですね。 今…

父さんありがとう、そして本当にお疲れ様でした!!

通夜、告別式ともに無事に終わり、今の気持ちを整理する意味でも文章に残しておく。 小さい頃はキャッチボールやポーカーをしたりして遊んでくれた父。小学校ぐらいまでは、嫌になるまで温泉に連れてってくれた父。高校大学大学院と私立にまで行かせてくれ、…

IntelliJでJUnitの設定をする

IntelliJでJUnit周りの環境を揃えたときの備忘録。自分が使ってるのはIntelliJ IDEA12。13では試せてないけど、多分そんな変わらないはず。 pom Mavenでプロジェクト管理してるのでまずpom.xmlに以下が設定されてることを確認する。IntelliJはデフォルトで設…

Elasticsearchに触れてみたい人がやることをまとめてみた

Elasticsearch(以下ES)を触ってみたい人が周りにもちょくちょくいるので、書いてみる。半分は備忘録。 1. まずはインストール 公式サイトのインストールページ にRPMとかがあるので、インストールする。 このページにあるように、レポジトリの登録をして、…

zawを一週間使ってみての所感

自分がよく作業するターミナル環境に関しては、もう2,3年近くzshを使ってるのですが、zawが先週バズっていて、気になったので軽く使ってみました。 自分が普段使ってる.zshrcはこれ。ちょくちょく微調整してる進化系のコンフィグであります。 ↑の設定使って…

MongoDB2.4系で、セカンダリのノードをパッシブにしてみた

MongoDBのバージョンは2.4.10。セカンダリになってるやつをパッシブにしてみるにはどうしたらいいかわからなかったので、試してみた。 まず起動。 mkdir -p /data/{mongo10101,mongo10102,mongo10103,mongo10104,config,logs} # mongod /usr/local/mongodb/b…

「Partition 1 does not start on physical sector boundary.」エラーの対応

fdisk叩いたら以下の様な「Partition 1 does not start on physical sector boundary.」というエラーっぽいものが出たので、その対応。 物理セクタサイズ4096バイトのもので、開始セクタの位置が63になってるとこんな感じのメッセージが出る。 Linux で 4096…

どうして「InnoDBのREPEATABLE READでハマった話」という記事を書いたのか ver2

以下のような記事を書いたのですが、@sh2ndさんに指摘されてひと通り整理できたので、まとめ。 InnoDBのREPEATABLE READでハマった話 - カイワレの大冒険 Third どうして「InnoDBのREPEATABLE READでハマった話」という記事を書いたのか - カイワレの大冒険 …

どうして「InnoDBのREPEATABLE READでハマった話」という記事を書いたのか

今日@kuwa_twさんとチャットで、あの記事ゴチャゴチャしてて、最後まで読むのツライと言われたので、要点を絞って書いてみます(@kuwa_twさんをdisってるわけではないですよ!!!)。 該当の記事はこちら。 blog.masudak.net まず、MySQL5.5系のInnoDBのト…

環境による設定の差異を吸収するにはSettingslogicがいいという話

だいぶ前に使った内容なので、今は少し違うかもしれませんが、アウトプット大事ということで備忘録。 環境に応じて処理内容を変えたいということはよくあるかと思います。 DEVだったら、この設定を読むとか、APIの呼び元はこっちにするとか。 僕がよく遭遇す…

InnoDBのREPEATABLE READでハマった話

MySQL5系で、REPEATABLE READな環境があったのですが、ん?と思うことがあったので、備忘録。 結論から言うと、MySQL5.5 + InnoDBでファジーリードやファントムリードと思われる挙動が確認できた(気がする)。 テスト用のテーブル定義は以下。 mysql> CREAT…

Packerのcompression_levelオプションを試してみた

Packerにcompression_levelというオプションがあったので、使ってみた。 以下のような感じで、post-processorsでcompression_levelを指定するだけ。0から9まで指定できて、0が圧縮せず、9が圧縮率最大。デフォルトは1。 "post-processors": [ { "type": "vag…

Flashとフォワードプロキシ

寒すぎて風呂が常に恋しくなる@masudaKです。 FLASHで作られたサービスに長く携わっていることもあり、ちょっとハマったので、残しておきます。 やりたいことは、FLASHで作られたゲームをフォワードプロキシ経由で表示させること。 要は、こんな感じ。 自分…

WiresharkでHTTPリクエストのメソッドの比率を出してみる

ボードゲームとカメラにハマってる@masudaKです。 一定期間において、HTTPのメソッドの比率(GETこれぐらいとか)を出したいとおもった時に、 諸事情により、一部のメソッドしかログってなかったりして、現状よく分からんってときにたまに使うので、備忘録も…

CloudFrontで署名付きURLによるストリーミング配信をしてみた(Ruby編)

夏の角部屋はパンチ力があるなと痛感している@masudaKです。 AWSにはCloudFrontというCDNがありますが、CloudFrontではストリーミング配信をすることができたりします。 さらに、特定の条件による配信をするために、署名付きURLというものを使うことができま…

Hadoop SlaveサーバとJBODとRAID

夏はビールがことごとくうまいなと感じる@masudaKです。 少し前にHadoop専用サーバの環境構築をする機会に恵まれたのですが、ディスク構成をどうするかでわりと目新しいことばかりだったので、備忘録も兼ねて文字に起こしておきます。 前提として、HadoopのM…

PURGE MASTER LOGS構文でbinlogファイル名を指定する必要はなかった

小さい頃からあまり量を食べることができず、年取って量食えなくなったら、霞しか食えなくなるんじゃないかと思っている@masudaKです。 たまにはRuby以外の話をば。 MySQLを運用していれば、expire_logs_daysはどこかで出会うシステム変数でしょう。 The num…

RubyでOSの外部コマンドを実行したいときに、spawnを使うと便利だった件

またもや、Rubyネタ。ちょくちょく更新して参ります。 外部コマンドを実行するやり方については、このサイトにまとまっています。 んで、なんかいいライブラリないかと。 が、今回僕が欲しかった機能として、 コマンドが叩ける(当然 標準出力・標準エラー出…

Rubyでハッシュの値の比較を行う

どうやるか分からなかったので。ハッシュ同士ではなく、値の比較をしたいとき。 2つのハッシュがあって、キーが同じなのに値が違うとか、そもそもキーがないとか。そういうとき。 ActiveSupportでは、以下のようなオープンクラス?が用意されていて、diffの…