tips

opensslによる暗号化/復号化

自分用のメモ。 概要 OpenSSLを使ってファイルの暗号化と復号化を行う C++にて実装 自前のプログラムとopensslコマンドで双方でファイルの暗号化/復号化が出来るようにする 単純に自前のプログラム内で暗号化/復号化する方法はGoogleで検索すれば見つかった…

Amazon SES SMTP Credentialsをpythonやrubyで作ってみる

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html の下の方に書いてあるJavaのコードをスクリプト言語で書くとどうなるかというのを試してみる。AWS SECRET ACCESS KEYをそのまま書くわけにはいかないので、そこは適当な文字で…

vmstatで時刻を表示する

sarコマンドを実行すると、先頭に時刻を表示する。 # sar 1 Linux 3.2.0-4-amd64 (linux) 2014年02月14日 _x86_64_ (8 CPU) 20時17分02秒 CPU %user %nice %system %iowait %steal %idle 20時17分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00 20時17分04秒 all…

0から2147483647までの間の乱数を取得する

bashだと$RANDOMで乱数は取得できるけど、0〜32767までしか取得できない。それ以上の乱数を手っ取り早く取得できないかと思い探している内に以下に落ち着いた。 コード #!/usr/bin/env bash while :; do random32=$((($RANDOM & 1)<<30 | $RANDOM<<15 | $RAN…

bash用ロガースクリプト

単純にechoでメッセージ表示するだけでも良かったのだけど、環境変数でログレベルを切り替えて表示出来るように実装してみた。DEBUG、INFO、WARN、ERRORのみ指定出来、それ以外だとINFO扱いにする。 logger.sh # LOG_LEVELの設定 declare -A _LOG_LEVEL _LOG…

netcatによるワンライナーWebサーバ

起動方法 /bin/bash -c "while :; do echo -ne 'HTTP/1.0 200 OK\r\nContent-Length: 0\r\n\r\n' | nc -l -p 8080 -w 30; done" 終了方法 psコマンドでpidを確認後、killコマンドで終了させる。 kill -9 プロセスID終了直後にncコマンドのプロセスが残ってい…

Redmineのバージョンアップ

alminiumで入れたRedmineのバージョンが2.3.1で、最新のバージョンが2.3.2に上がっていたので入れ替えた。この手順ですべてにおいて正しいのかはちょっと不明。一応動いてはいるっぽい。 MySQLのバックアップとかもして置いた方が良いだろうが、同一サーバ内…

bashとzshで連想配列

shellの中で連想配列を使ってみたかったので備忘録。bashとzshで試してみたけど、結果にちょっと違いがあった。 bashの場合 $ declare -A hoge $ hoge["A"]="a" $ hoge["B"]="b" $ echo ${hoge} $ echo ${hoge["A"]} a $ echo ${hoge["B"]} b $ unset hoge $…

htpasswdコマンドを使用せずにopensslコマンドでパスワードファイルを作成する

echo "username:"$(openssl passwd password) >> .htpasswd "username:passwordのハッシュ"文字列が.htpasswdファイルに追記される。

curlコマンド

curlコマンドでダウンロードしたHTMLをそのままgzip圧縮する。 curl http://www.yahoo.co.jp | gzip > yahoo.gz 解凍する場合はgunzipコマンドを使用する。-cオプションを使うと標準出力する。 gunzip -c yahoo.gz

xargsの-Pオプション

xargsで-Pオプションを使うと、プロセスが複数立ち上がると言うことで試してみる。コマンド実行前後をdateコマンドで挟んで、1〜10までの数を引数で渡してsleepする。 /Users/junya% date && echo 1 2 3 4 5 6 7 8 9 10 | xargs -n 1 -P 20 sleep && date 20…

JavaScriptのスコープについて

オブジェクト指向JavaScriptという本を読んでいて、「へえ、そうなんだ」と思うところが有ったので。 JavaScriptのスコープはコードブロックではなく、関数スコープである 以下のコードを実行した場合、alertダイアログには1が表示される。 (function a() { …

値を引数にセットして返す方法

引数で渡された参照に対して、文字列をセットして返す方法が自分の中でシックリこなかったので、簡単にまとめ。一つは文字列の参照を渡す方法で、もう一つはポインタのポインタを渡す方法。見た目的にもコード的にも参照で渡してセットする方が簡単かな。 サ…

Xerces-C++のサンプルコード

後々使うことになりそうだったので、備忘録として残しておく。 読み込んでいるXMLファイルは、Xerces-C++にサンプル用として含まれていたもの。 サンプルコード #include <iostream> #include <xercesc/dom/DOM.hpp> #include <xercesc/dom/DOMElement.hpp> #include <xercesc/dom/DOMNode.hpp> #include <xercesc/dom/DOMText.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include </xercesc/parsers/xercesdomparser.hpp></xercesc/dom/domtext.hpp></xercesc/dom/domnode.hpp></xercesc/dom/domelement.hpp></xercesc/dom/dom.hpp></iostream>

std::listとstd::vectorの相互変換

例えばJavaだと、java.util.ArrayListとjava.util.Vectorはどちらもjava.util.Listインタフェースを持っているので、そもそも相互に変換する必要は無いのだが、C++の場合だとどうもそうじゃないようなので。C++の場合、listとvectorのコンストラクタにイテレ…

C++による文字列切り出し

IPアドレスをドットを区切り文字にして、各アドレスを取り出す方法。 C言語ならstrtokなどを使うところなんでしょうが。 #include <iostream> #include <string> #include <sstream> int main(int argc, char **argv) { std::istringstream iss("192.168.0.1"); std::string token; whil</sstream></string></iostream>…

C++によるURL文字列解析

Javaの場合、java.net.URLを使うと、URL文字列からホスト名やパス名を抽出することが出来る。C++の場合、どうやれば良いんだろうといろいろ探した結果、uriparserを使えばいけることが分かった。 調べた感じではcpp-netlibでも行けそうな感じだったけど、こ…

C++のswitch文でオブジェクトを生成しようとするとエラーになる

きっと知っている人にとっては当たり前なんでしょうが、ハマッたので備忘録として。 サンプルコード(コンパイルエラー版) #include <iostream> using namespace std; struct Hoge { int i; }; Hoge get_hoge(int i) { switch(i) { case 1: // { Hoge hoge = {1}; ret</iostream>…

テンプレートのサンプルコード

あとで使おうと思って調べたので備忘録として。 create関数にクラス名を渡すと、オブジェクトを生成して返してくれる。 サンプルなのでnamespaceとかはなくても良かったが、実際使うときにはnamespaceも使うつもりだったので合わせて。 サンプルコード #incl…

ウィンドウを半透明化する

~/.emacs.elファイルに以下を記述する。 本当は最大化した上で、半透明化したかったけどEmacs23での方法がまだ分かっていない。 ;; 半透明化 ;;Color (if window-system (progn (set-background-color "Black") (set-foreground-color "LightGray") (set-cur…

JSONモジュールとJSON::PPモジュールの共存

JSONモジュールとJSON::PPモジュール、どちらかが使えれば基本的には問題ないでしょうが、もし何かしらの理由で両方使いたくなった場合にどうするか。 普通にuse JSON、use JSON::PPと書いただけでは、"Prototype mismatch: sub main::decode_json"のような…

ホスト名からIPアドレスを引く

サンプルコード import java.net.InetAddress; import java.net.MalformedURLException; import java.net.URL; import java.net.UnknownHostException; public class NSLookup { public static void main(String[] args) throws MalformedURLException, Unkn…

マルチスレッドプログラムサンプル

サンプルコード 5つのスレッドを立ち上げて、それぞれのスレッドで処理を実行する。サンプルなので、内部ではThread.sleepを呼び出しているだけの単純な処理。 すべてのスレッドが終了した後に、"end"という文字列を出力するため、whileループで同期を取って…

CentOS5.5の仮想マシンマネージャーでDebianを入れる場合

CentOS5.5の仮想マシンマネージャーを使って、Debianを入れる場合に指定する値。Installation media URLには以下を指定する。 http://ftp.debian.org/debian/dists/lenny/main/installer-i386/ キックスタートURLには以下を指定する。 http://ftp.debian.org…

Debian3.1の場合、SSHのパスワード認証がデフォルトで無効にされる

Debian3.1で「apt-get install ssh」した場合、デフォルトでパスワード認証が無効にされる。 外部に公開するとかで無ければ、これだと面倒だったので、設定ファイルを修正して再起動する。/etc/ssh/sshd_configファイルで、下記場所を修正。 # sshd_configフ…

VMwareでDebian3.1とDebian4.0を入れる場合

テストとか検証とかで、古いDebian環境が必要な場合にどうしたら良いか。結論としては、ネットワークインストールで最低限ものを入れた後に、/etc/apt /sources.listを修正して対応する # Debian3.1の場合 deb http://archive.debian.org/debian/ sarge main…

シェルの2重起動を防止する方法

シェルの二重起動を防止するのにはどうしたら良いのか調べていて、pidofコマンドを使えば出来ること分かったので、備忘録として残しておく。 以下はサンプル。2重起動の動作確認をするため、わざとsleepさせてます。これを"./test.sh &"みたいにして呼び出し…

clojureでgmailを使ってメールを送信してみる

Clojureでgmailを使ってメール送信するコードを書いてみた。サンプルなのであくまで単純に。 leiningenを使っているので、project.cljも一緒に乗せておく。 commons-emailを使っているので、dependenciesに記述しています。 (defproject send-gmail "1.0.0-S…

「メタキーとしてoptionキーを使用」

備忘録として。 Macのterminal上でemacsを使用しているときに、「M-v」キーを押しても1画面分戻らず、チェックマークのような記号が表示されるという現象が発生。原因が分かったので、忘れないように残しておく。[ターミナル]-[環境設定...]で設定画面を表示…

jarファイルのパスを連結する

leiningenのスクリプトを見ていて、これ良いなと思ったので。 特定ディレクトリにあるjarファイルのパスを連結するだけだけど、1行で書けるので地味に便利だと思う。 #どちらもlibディレクトリのファイルのパスを連結する。 #こっちはleinに記述されていたも…