定期的にPingを打った結果を一覧表示する死活監視ツール作った

こんな見た目です。ターミナル上で動作します。 Interop Tokyoで使われていたツールを真似して作ってみました。というかほとんどそのままです。 そのツールはPerlで書かれていたのですが、Rubyで書いてみました。 $ gem install pingman でインストールでき…

メールを送信することなくそのメールアドレスが存在するかどうか調べる

SMTPプロトコルに従ってメールを送ると、以下のようなやりとりがあります。(微妙に違っていたらごめんなさい) telnetを使えば、手元でも試すことができます。 参考: telnetでメール送信 '>'がクライアント→サーバで、' < 220 smtp.example.com ESMTP > HELO …

Windows Liveメールアカウント設定ファイル(iafファイル)のパスワードを解析してみた

家族が普段使っているプロバイダのメールのアカウントのパスワードが分からなくなってしまい、困っていたので、rubyで設定ファイルからファイル内の情報を読み取り、列挙するプログラムを書いてみました。 iafファイルとは Outlook ExpressやWindows Liveメ…

Rubyで指定ディレクトリ以下のファイルを全てrequireする方法

プログラムを書いていて、指定ディレクトリ以下のファイルをまとめてrequireするのに、うまい書き方ないかなーと思っていたのですが、pryのソースコード中にお手本になりそうな部分があったので、紹介します。こんな感じのディレクトリ構成です。 とあるディ…

Amazon SNSを使ってAndroid端末にPush通知を送る

Amazon SNSというサービスがありまして、これを使うと、管理画面やAPI経由でAndroid, iPhone, Kindleといった端末にPush通知を送ったり、メールで通知をしたりすることが簡単にできます。 Amazon SNS (メッセージ通知サービス Amazon Simple Notification S…

Java 1.7.0_06でStringが仕様変更されたのでベンチマークをしてみた

Java 1.7.0_06でJavaの基本型であるStringが仕様変更されたので、それがパフォーマンスにどの程度影響するのか簡単なベンチマークをして、比較をしてみました。 何が変わったのか String型の仕様が変更されたのを知ったのは、下記の記事がきっかけで、変更内…

プログラミング初心者が一番簡単にプログラミングを体感できる環境を考えてみた

ここ最近、他学科、他学部の友人に「プログラミングってどうやるの?難しそうだよね。」みたいな話をよくされます。今日もリプライで聞かれました。自分なりに最も簡単にプログラミングができてかつ、興味を持ちやすい環境はなんなのか考えてみました。 初め…

ブログを11日間書き続けてたらホッテントリ入りした話

今日でブログを連続で書くのは12日目になります。 今までも不定期に記事を書いていたのですが、ここまで連続で書いたのは初めてです。 連続で書こうと思った理由は特になくて、挙げるとすると、1月末で大学の試験が終わり、春休みが始まったので、毎日やった…

Dockerのコンテナを操作できるWebアプリを作ってみた

Dockerの操作は、コマンドからだけではなく、リモートAPI経由でもできます。 APIの説明はここにあります。 http://docs.docker.io/en/latest/api/docker_remote_api/今回は、このAPIを使ってコンテナを簡易的に操作できるWebアプリを作ってみました。 とりあ…

RubyからDockerコンテナを作ってsshで操作できるようにする

Dockerは操作をするためのAPIも用意されていて、便利そうなのでRubyからコンテナを自動起動するための方法をメモしておきます。 sshが使えるコンテナを作る ubuntuのイメージを使用します。 標準のイメージだとsshは使えないのでいったんシェルログインし、…

SoftEther VPNを使ってVPNサーバを立ててみたものの、速度が出ない

今日は大雪で、大変でしたね。SoftEther VPNを使ってVPNサーバを立てて見たのですが、VPN接続(IPSec)した状態でWeb閲覧したところ、異常に速度が出ないので、現状をメモしてみました。 どなたかアドバイスを頂けると嬉しいです。 サーバ環境 OS: Ubuntu Serv…

netcatコマンドでコードを書かずにお手軽チャット環境作ってみる

nc(netcat)コマンドという万能コマンドがありまして、これを使うと簡単にTCPやUDPを使ってパケットの読み書きができます。 以下の例だと、HOSTの行と次の空行まで入力すれば、htmlの文章が返ってきます。 $ nc www.example.com 80 GET / HTTP/1.1 HOST:www.e…

Docker0.8でMac OS Xがサポートされたので仮想化環境構築してみた

以前、Dockerを使って仮想環境を作ってみた - くろの雑記帳という記事を書きましたが、本日Docker0.8がリリースされ、Mac OS Xがサポートされたようなので、環境構築をしてみました。 VirtualBoxをインストールする 単体で動作する仕組みができたのかと思っ…

Macで拡張ファイル属性やアクセス制御リストの属性を消す

Macのファイルシステムでは、拡張ファイル属性(Extended Attributes, EA)やアクセス制御リスト(Access Control List, ACL)というものがあり、前者は通常のファイル名やパーミッション、所有者とグループといったものとは別に属性情報を付与することができ、…

Javaで全角英数文字を半角に、半角カナを全角に変換する

Javaでテキストの処理をしていた時に、入力されたテキストのうち、全角英数文字を半角に、半角カナを全角に変換して統一する必要があったので、方法を調べていたら、標準ライブラリの中に便利なものがあったので、紹介します。 java.text.Normalizer java.te…

rubyで自分のツイートデータから頻出語を見つける

ふと自分のツイートデータを使って頻出語リストを作ってみたいなと思ったのでやってみました。 環境 Mac OS X 10.9.1 (Mavericks) ruby 2.0.0 必要なものをインストールする MeCab MeCab(めかぶ)とはオープンソースの形態素解析エンジンで、これを使うと、文…

20分でテスト付きのgemを作って公開する

20分程度で、テストコード付きのgemを作って公開するところまでやってみました。 1. gemのひな形を作ります。 $ bundle gem sudden_death -b -t $ git commit -m "first commit" git initとgit addが自動的に行われるので、コミットしておきましよう。 2. su…

英語苦手だけどプルリクエスト送ってみた話

1ヶ月ちょっと前の話です。 プルリクエストをしたのは人生で2回目で、プルリクエスト初心者ですが、バグと思われる挙動を見つけたので、原因を調査し、プルリクエストに挑戦してみました。 バグと思われる挙動に出会ったきっかけ RubyのPryという対話型コン…

mrubyを試してみた

最近、またmrubyの話題をよく聞くようになって、試してみたくなったので、最低限の導入だけやってみました。 ソースコードを取得する $ git clone https://github.com/mruby/mruby.git ビルドする $ cd mruby $ make テストする 正常に動作するか、一応テス…

zsh5.0.5を入れたら、PATHがおかしくなった

homebrewで入れたzsh5.0.5で、pingやtraceroute, netstat, ipconfigといったコマンドを使おうとしたら、以下のように、コマンドが使えなくなっていました。 $ ping zsh: command not found: ping いやそんなはずはない…と思ったのですが、ターミナルを立ち上…

Rubyに標準出力をバッファリングさせないようにする

Rubyでバッチ処理のようなものを書いていたときに、一件出力するごとに結果を標準出力に吐くようにプログラムを書いた時の話です。 処理が進んでいるにもかかわらず、結果が出力されず、しばらく経ってから一気に出力されました。調べてみると、Rubyは標準出…

pdfをpngファイルに変換する

pdfを1ページごとにpngファイルに変換するには、ghostscriptを使うのが手っ取り早いようです。document.pdfを1ページごとにdocument-1.png, document-2.png ... と出力するには、以下のようなコマンドを実行します。 $ gs -dSAFRE -dBATCH -dNOPAUSE -sDEVIC…

はがきデザインキット2014がインストールできない

はがきデザインキットという年賀状のデザインツールが日本郵政から無料で出ていて、家族が使おうと思ったら、インストールできなかったので、対処方法をまとめておきます。 症状 はがきデザインキットはAdobe Airで動いていて、通常は指示に従ってダウンロー…

Dockerを使って仮想環境を作ってみた

最近、Docker*1が盛り上がっているようなので、僕も試してみました。 とりあえず簡単に使ってみたので、簡単に動かすところまで流れを書いておきます。 この記事を参考にしました。 Dockerとは dotcloudが公開している、オープンソースの仮想化ソフトウェア…

「あなたとの続柄」

年末調整の季節ですね。給与所得者の扶養控除の紙の「世帯主の氏名」の下にある「あなたとの続柄」という欄。 バイト先に提出するのに、毎回なんて書いていいのか迷うのでメモっておきます。 世帯主が父親の場合 「あなたとの続柄」には「父」と書きます。「…

ドコモのAPIを使って自然言語でユーザと会話ができるプログラムを作成する

docomoが11/11日にdocomo Developer supportというサイトを公開しました。 ここで公開されたAPIは、 音声認識 環境センサー 雑談対話 知識Q&A 文字認識 位置情報 ドコモケータイ払い の7つです。(11/19現在)この中で、雑談対話APIが簡単で面白そうだったので…

「実践Vim」レビュー

はじめに 先々月、 @kaoriyaさんに、「実践Vim」のレビュワーとして選んでいただき*1、「実践Vim」を頂きました。ありがとうございます。 新人枠として採用されたようなので、初心者目線ということでレビューを書いていきたいと思いますが、その前に、Vimに…

C4SAをGithubと連携させて、最新版コードが自動で反映されるようにする

ニフティのC4SAは、アプリケーションの開発から運用までが簡単にできる便利なクラウド環境です。 標準でGithub連携機能があるのですが、C4SA上のリポジトリにGithubにpushされた最新版コードを反映する作業を自動にしたかったので、解決方法を探してみました…

三端子レギュレータでハマった

久しぶりに電子工作をして、三端子レギュレータをつかったら勘違いでハマってしまった。 何にハマったのか 手元に余っていた表面実装タイプの3.3V出力の三端子レギュレータを使いました。(NJU7223) 上の写真を見るとわかりますが、レギュレータのチップから…

facebookで自分のライフイベント一覧を表示する

たまに確認しようと思って、どこにあるか毎回探してしまうので、書いておきます。 場所 自分のプロフィールのトップページ ↓ 基本データ ↓ 全てを表示 ↓ この年にあったこと これで自分のライフイベントが見られます。