2010-01-01から1年間の記事一覧

Perlのワンライナー(XMLの特定の要素を抽出、加工する。)

こんなXMLの内容の、「カテゴリ」の要素を引っこ抜きたい場合。 <lst name="facet_fields"> <lst name="カテゴリ"> <int name="カテゴリ1">70794</int> <int name="カテゴリ2">61133</int> <int name="カテゴリ3">51198</int> <int name="カテゴリ4">30447</int> <int name="カテゴリ5">26365</int> <int name="カテゴリ6">24425</int> <int name="カテゴリ7">16539</int> </lst></lst>

HA構成を作ってみる

サーバー/インフラを支える技術を少しずつ読み始めている。とりあえず一番最初の「冗長化の基本」に出てくるフェイルオーバーのシェルの中身を見てみた。 #!/bin/sh # failover.sh VIP="192.168.0.60" DEV="eth0" healthcheck(){ # ① # -cは何回パケットを…

ssh周りの設定

そもそも設定したことがなかったんだけど、 自宅のサーバーに対して数千回ログインのトライがあり、 ヤバイと思ったので、いろいろ設定してみた。まずはrootでsshログインできないようにする設定。 これは/etc/ssh/sshd_configのPermitRootLoginの設定をnoに…

LinuxでNTPサーバーを利用して時刻を合わせる。

そういえば、LinuxでNTPってつかったことなかったなぁ。 こんなに簡単にできるんだ。 # ntpdate 133.100.9.2参考:NTPによる時刻合わせ http://www.oiden.net/Flets/bangai02/

sedで+は使えない?

secureログのrhostのIPアドレスを抜くためにsedでフィルタ書いてたんだけど を使っているといつまでたってもマッチしない。 を*に変えたらうまくマッチした。+つかえないんだっけ?sedって? sedで使用できる正規表現演算子 POSIX 1003.2で規定されているsed…

KVMのゲストOSをインストールしてみる

会社のサーバーにゲストOSを入れてみたいってことでちょっと調べてみる。 なんかXenの情報もごっちゃになってるんだけどとりあえずlibvirtってのを使って 仮想マシンを管理できるものがあるらしい。とりあえずそれでやってみることにする。 yum install kvm …

ブックマークレットの作り方

とても役に立つ、かつ勉強になった。 http://www.teria.com/~koseki/memo/bookmarklets/tips.html変数を汚染しないってのは全然きにしてなかった。。 それってどうなんだ俺wwwこのエントリ、2,3週間前くらいに書いたつもりだったんだけどなァ。

環境を移行したdjUnitのテストが動かない。

原因は簡単。Eclipse画面上部メニューの プロジェクト→プロパティ→djUnitのVirtual Mock Objectsタブから 「Virtual Mock Objectsを使用する」にチェックを付ける。 これで動くようになる。

Javaでの正規表現で特定の文字列を含まないマッチのさせ方。

正規表現で1文字単位での特定の文字を含まないマッチのさせ方は知っていたけど 特定の文字「列」を含まないマッチのさせ方は知らなかったのでメモ。 否定的先読みの機能を使ってマッチさせることによって実現可能になる。 ※先読みが使えない場合のやり方もあ…

djUnitのVirtual Mock Object

とても簡単にモックと同じことができるというので早速つかってみた。 確かに戻り値や例外を自在に発生させることができ、面倒なモックの記述もないのでとってもベンリなんだけど デバッグでステップ実行させるとスルーするメソッドを通ってしまい、原因の追…

Javaで正規表現で指定したグループのパターンが複数マッチした場合の取り方。

やっと作業が一段落したので。 正規表現で指定したグループのパターンが複数マッチした場合の取得方法。PHPとかだとpreg_matchとかの関数をかけると一発で配列になって 返ってきてくれるんだけどJavaの場合、ライブラリとかを導入しない限り ループを回して…

java.lang.NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext

Tomcat起動時にこんなエラーがでた。 原因はWEB-INF/lib配下に「jsp-api.jar」や「jsp-2.1.jar」が置かれていたせいだった。 ファイルが足りないせいで怒られるのは今までよく経験したけど いらんファイルが置かれていたせいで怒られるってのはあんまり覚え…

Solrプラグイン開発環境その2

前述した方法だと、フツーに開発はできるんだけど SVN管理の機能をEclipse側から使えないということが発覚したので ちょっと考えることに。真っ先に考え付いたのがSVNプロジェクトとして作ってしまい、 Solrのソースとかをインポート後にsvn:ignoreに突っ込…

Solrプラグイン開発環境

今まで作ってjarにして動かしてテストといった感じでテストしてきたんだけど いい加減この方法に限界を感じてきたのでローカルEclipse側の環境を整えることに。基本的にはContribと同じような感じでトップレベルのディレクトリに一つ ソースのツリーを追加し…

FileListEntityProcesserを使おうとしたけど・・・・

結局断念することになりそう。理由はFileEntityProcesserを使うと、ファイルごとにネストしたプロセッサのnextRowとかが 呼ばれてしまうためAファイルとBファイルの情報を集計。といった感じの 処理には向かないと気付いたから。新しくデータソースを実装し…

複数のファイルを一つのストリームで処理。

ここを参考にさせてもらいました。 http://www.javaroad.jp/java_io6.htmこんなこともできるんだ。今DataImportHandlerのデータソースとプロセッサクラスを実装しようとしてたんだけど データソース、データプロセッサが分離しちゃってるため、うまい実装方…

Apache Solrのデータインポートハンドラ

すっかりやり方を忘れてしまっていたので記録しておく。 まず、solrconfig.xmlに以下の記述を追加 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">dataconfig.xml</str> </lst> </requestHandler>次にsolrconfig.xmlと同じ場所にdataconfig.xmlを作成。 今回はexamples-DIHディレクトリ内…

JavaScriptのapply

このメソッドの理解には本当に時間がかかった。手持ちのリファレンスには 現在の関数オブジェクトに渡された引数全て、 あるいは一部を他のオブジェクトに渡して呼び出すメソッドですと書いてあるけどいくら考えてもサッパリ分からず、 いくつかのサイトや詳…

Pythonのif文とのfor文

ちょっと面白かったので書いておく。 PHPとかだとif文って基本的にはこんな感じで書くけど # if 文 if ( $a == $b ){ echo $a; } # for文 for ($i=0;$i<10;$i++){ echo $i } Pythonではif文やfor文こんな形で書けるらしい。 sum_of_squares=sum([pow(prefs[p…

sendmailで送信だけする場合の設定。

数か月前に散々ハマった部分。 今回設定してみたら意外とさっくり行けたので忘れずに書いておく。 ただ、あくまでrootでしか試してないのと、余分な部分もあったりする可能性があるので こんどインストール直後のVMでもう一度設定を試してみる。submit.mc dn…

SSHの戻り値

SSHでリモートのスクリプトを叩いてその戻り値を取るってどうやるんだろうって ふと考えたんだけど、何も考えずに$?で取れた。接続失敗とかの場合に255が返ってくる以外は スクリプトの終了ステータスがそのまま返ってくるっぽい。 直観的でステキね。(゚ω゚ )

SSHのノンパス設定

これは忘れたってわけじゃないけど3か月したら確実に記憶から消えているのであらかじめメモ。 ちなみにこれはrootでローカルホストに直接SSHできるようにする設定。(実際は公開鍵をリモートサーバーに置くようにする) # 秘密鍵と公開鍵を作る。 [root@loca…

> /dev/null 2>&1

これもいつも忘れる。 身近にサンプルが大量にあるのでぱっとかけるけど別のところにいったら絶対ググるだろうなw $ ls -ltr > /dev/null 2>&1 参考サイト http://hrgs.xrea.jp/2007/09/11/about_misunderstand_of_shell_redirecting http://sonic64.com/20…

Perlでpsqlコマンドを実行して戻り値を取得する。

という簡単なスクリプトだったはずなのに ややこしいコマンドを叩いていたため非常にハマった。 $ echo "show work_mem" | psql -U user -h host_name dbname | sed '/^$/d' | sed 's/^ *\(.*\)/\1/g' なんていうコマンドの戻り値を取ろうとしていたんだけど…

Perlの文字列内に$があるときはエスケープしないとエラーになる。

こんな動きあったっけなー。 すっかり忘れてる。 ○ print "sed '/^\$/d'"; × print "sed '/^$/d'"; これはたまたま$と/が予約語でそれが隣接したからだと思うけど ちょっとめんどくさいね。

sedで空行を削除

これっていっつもググるんだよね。 こっちに書いておこう。 $ cat testfile | sed '/^$/d'