ブログ

すこやかさん

|

国吉です。
先日、定期健康診断を受け、結果が返ってきました。

今年から検査項目に「胴囲」が加わりました。いわゆる「メタボ検診」の関係のようです。

「胴囲?それってどこを測るんだ?」と思っていると、おへその下で計測しているようでした。

確認のためよその会社で働く友人たちに話を聞くと、状況は同じようでした。
想像ですが、検診での測定位置には基準があるようです。

中には「一番くびれているところを測ってくれ!大したことないけど」という意見もありましたが、
「くびれ」の基準があいまいですし、測る人によって位置がバラバラだと正確なデータにならないので、
「おへその下」になったのではないか、と推測してみたり。

話は変わりますが、テレビ番組で「メタボ対策に力を入れている会社」の特集を見ました。
内容をかいつまんで説明すると、
「メタボ検診で不合格の従業員が多いと、会社はペナルティとして保険料の割増がくる。
 これは会社としても損失。だから今のうちから対策を打っている」
とのこと。
その会社では、休憩時間や定時後にジョーバやビリーズ・ブートキャンプ(まだまだ現役!)を
皆でやっておられました。

システムフレンドのオフィスには健康器具はありませんが、快適な作業環境があります。
下の写真は私の机越しに見える光景。少々わかりにくいですが熱帯魚が水槽でゆらゆら泳いでおり、
魚たちを眺めるていると、煮詰まった頭も落ち着きます。
そんな環境で仕事ができることが少なからず健康に関わっているかも、と思うこともあります。

方法はいろいろあれど、心身ともに健康な形で仕事ができれば理想ですね。

画像処理活用研究会

|

本日、広島県立総合技術研究所の主宰する画像処理活用研究会に出席しました。

システムフレンドではDirectXやOpenGLを使った画像処理に関する開発も行っています。

  • ライブグラフィ研究所の画像検索システム
    これはある画像を画像のデータベース、たとえば映像のシーケンスから検索するシステムです。
    ことばから画像を検索するのではなく、画像から画像を検索します。
    Web上でいうとgraffitoが近いところでしょうか。
    でも、こちらの画像検索システムは検索アルゴリズムがとてもよく、巨大な画像データからでも瞬時に類似画像を検索できちゃいます。
  • CCS-SURF
    これは株式会社イノテックさんの製品で無償評価版もあります。
    複数の画像を合成して、3D表示しその検体の計測を行うことができます。
    CCS-SURF(イノテックさんHPより)

今回の研究会にイノテックさんも参加しておられて
その後の交流会では、近畿大学の長谷川誠先生を紹介してくださいました。
お聞きすると、パターン認識の研究をしておられ、
なんでもウェーブレット変換などを組み合わせて画像の回転を平行移動に変えてパターンマッチングをするそうです。
複素平面を極形式に、冪乗を対数にみたいな感じかな。。

いずれにしても、パターン認識(Pattern recognition)はかなり応用の広い分野だと今回の研究会で認識しました。

広島じゃけん!

|

こんにちは、マエモトです。

今日はちょっと仕事もしているところも披露したいと思います!

システムフレンドは広島の会社です。広島っていうと、何を想像しますか?
お好み焼き、宮島、もみじ饅頭、原爆ドーム・・・最近は、広島名物といったらやっぱりなんといってもあれですかね。あれ。

「Perfume」(http://www.amuse.co.jp/perfume/)

結構聴いてるとクセになりますねー。クルマで聴いてるといろんなメーターがうなぎのぼりです!
破竹の勢いなの納得です!

で、Perfumeはどうでもいいんですけど、広島といったらやっぱあれですよ。広島弁
東京にいたときは全く出なかった広島弁がいまや広島弁メーター振り切り全開です。
「これ、バグじゃろ~」「これは、まずいじゃろ~」「どうなっとん」・・・「もうだめぢゃ・・・」

3泊4日の沖縄旅行から帰ってきたらうちなー弁になっていたくらい朱に交わると赤くなっちゃう男なんですよね(笑)

で、今日の話題は東京で使っていたシステムを広島でも使いたい!という依頼が舞い込んだときどうするかです!
当然発生するのが標準語から広島弁へのローカライズ作業です。
一般的にはローカライズはロケール依存の文字(リテラル)をリソースとしてプログラムの外に定義しておいて、ユーザーの言語に応じて差し替えるというのがセオリーです。
でも、それにはそれらリテラルをリソース化するという作業が当然必要となります。
プログラムの中に文字が直接埋め込まれてしまっている場合、ローカライズ作業は大幅なプログラム改修とテストを要する作業になってしまうことがあります。

でも、ちょっとした変更でこんなことできないですよね。
じゃあどうするか?ってことで今日はJava サーブレット に 自作のサーブレットフィルタを被せて、HTML内の文字を好きなように作り変えてユーザーに送ってしまう技についてちょっと書きます。

1.サーブレットの出力ストリームクラスをオーバーライドして、出力をバッファに溜め込むクラスを作成します。

import java.io.CharArrayWriter;
import javax.servlet.ServletOutputStream;

public class SampleServletOutputStream extends ServletOutputStream {
 private CharArrayWriter buffer = null;
 public SampleServletOutputStream(CharArrayWriter buffer) {
  super();
  this.buffer = buffer;
 }
 public void write(int c) {
  this.buffer.write(c); // ストリームへの書き込みをバッファリング
 }
}

2.サーブレットのレスポンス(レスポンスラッパー)を拡張し、1.で作成したストリームを使用して出力をバッファリングするようにします。

import java.io.CharArrayWriter;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class SampleResponseWrapper extends HttpServletResponseWrapper {
 private CharArrayWriter writer = null;
 public SampleResponseWrapper(HttpServletResponse response) {
  super(response);
  this.writer = new CharArrayWriter();
 }
 public String toString() {
  return writer.toString();
 }
 public PrintWriter getWriter(){
  return new PrintWriter(writer);
 }
 public ServletOutputStream getOutputStream(){
  return new SampleServletOutputStream(writer); // SampleServletOutputStreamを使用する
 }
}

3.下準備ができましたので肝心の広島弁フィルタークラスを作りましょう。
フィルタークラスは、Servlet API の Filterインターフェイスを実装します。
フィルタ処理は、doFilter()メソッド内で行います。

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class HiroshimaBenFilter implements Filter {
 public void init(FilterConfig filterConfig) throws ServletException { }
 public void destroy() {}

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws   IOException, ServletException {
  // レスポンス・ラッパーを作り変えます
  HttpServletResponse servletResponse = (HttpServletResponse)response;
  SampleResponseWrapper wrapper = new SampleResponseWrapper(servletResponse);

  // 後続のフィルタやサーブレットを実行します
  filterChain.doFilter(request, wrapper);

  // サーブレット実行後のレスポンスが戻ってきます。
  // レスポンス・ラッパーを作り変えているので、レスポンスはバッファリンクされています。

  PrintWriter writer = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));

  // バッファからレスポンスを文字列として取り出します。
  String htmlString = wrapper.toString();

  // 広島弁へ変換!!
  htmlString = htmlString.replaceAll("広島だから", "広島じゃけん");
  htmlString = htmlString.replaceAll("なにしてるの?", "なにしよるん?");
  htmlString = htmlString.replaceAll("でしょっ?", "じゃろっ?");
  htmlString = htmlString.replaceAll("あれはね", "ありゃーのー");
  htmlString = htmlString.replaceAll("面倒くさいな", "たいぎいのう");
  htmlString = htmlString.replaceAll("帰ろう", "いぬろう");
  htmlString = htmlString.replaceAll("あなた", "おどりゃー");
  htmlString = htmlString.replaceAll("そうなんだ", "そうなんじゃー");
  htmlString = htmlString.replaceAll("大丈夫", "死にゃーせん");
  htmlString = htmlString.replaceAll("びっくりした!", "たまげた!");
  htmlString = htmlString.replaceAll("遊園地", "ナタリー");
  htmlString = htmlString.replaceAll("おなかすいた", "ひもじい");
  htmlString = htmlString.replaceAll("ものもらい, "めぼ");
  htmlString = htmlString.replaceAll("破壊する", "めぐ");
  htmlString = htmlString.replaceAll("朝ごはん", "お好み焼き");
  htmlString = htmlString.replaceAll("昼ごはん", "お好み焼き");
  htmlString = htmlString.replaceAll("晩ごはん", "お好み焼きとビール");
  htmlString = htmlString.replaceAll("奇妙な", "いなげな");
  htmlString = htmlString.replaceAll("カオス", "わやくそ");

  writer.write(htmlString);
  writer.flush();
  writer.close();
 }
}

4.あとはweb.xmlにフィルターの利用を定義するだけです!
ここではstrutsとの連携を仮定として、URL末尾が*.doの場合に広島弁フィルターが発動するように定義しています。

<filter>
 <filter-name>HiroshimaBenFilter</filter-name>
 <filter-class>xxxx.yyyy.zzzz.HiroshimaBenFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>HiroshimaBenFilter</filter-name>
 <url-pattern>*.do</url-pattern>
</filter-mapping>

というかんじです。簡単にローカライズできそうでしょ?

これはあくまでおちゃらけサンプルですが、もっと複雑な変換をお望みの方はどうぞお気軽に弊社にご相談下さいWink

23,945歩

|

先週の土曜日に2度目の登山に行ってきました。
5月の連休中に三瓶山に行って以来ですが,前回の登山ツアーでの経験を踏まえ,1,000メートル程度の山であっても,まだまだ単独で登ることは難しいと判断し,「中高年」と言うところに少しのわだかまりを感じつつ,広島NHK文化センターが主催している「中高年のための登山入門」教室に入校し,その教室の第3回目の講座で,湯来町にある東郷山に上ってきました。

ネットで東郷山を調べてみると,東郷山は標高977メートルで広島市内の最も高い山であり,四本杉(しほんすぎ)が有名らしいとのこと。


一本の幹が四本に枝分かれしているので,幹が倒れないように金属のたががかけられている。

きっと素晴らしい景色が見えると期待しつつも,前回の苦い経験を踏まえ,夏用の雨具も購入し準備万端で出発日を迎えると,悲しいかなやはり雨(涙)
まあ梅雨時期なのででしょうがないとあきらめ,歩数計をゼロにセットし家を出発しいたしました。

表題の数値は,家を出てから帰るまでの私の歩数です。
ちなみに妻の歩数は私の2割増しでした(笑)

次回は,その23,945歩の汗と涙の強行軍の内容をお伝えいたします。

SEのスキル

|

先頃お客様から"タケウジさんはブログを書いていない!"というご指摘を受けまして
(ブログを見ていただけているというのはうれしい限りです)
この前の続きを書いておきます。

先日図書館で借りたGLUTの本を返却する期日になりました。
夜まで開いてはいませんが、返すのはいつでもいいので返却ポストへイン。

ちなみに工大図書館は平日21:00まで開館です。先日、今やっている案件で論文を探しに行きましたが、さすが私学はサービスよいですね。
見たところ学会誌の数も多そうでした。

それはともかく、せっかく大塚まで行ったので、本を返してからフタバのMEGAへ。大きな書店では、2時間でも3時間でも時間を過ごせちゃいます。
ということで、1つ立ち読みした本を紹介します。

『SEのための価値ある「仕事の設計」学』

SEのための価値ある「仕事の設計」学
目次に従ってちょっと内容に触れるながら。。
SEって結局 何でも屋 なんですよね。じゃあ求められるスキルは?というと

ソフトウェア方式設計力 これはアルゴリズムやプログラムが分かったり、フレームワークに精通していたりということですね。
それから、インフラ設計力 これも実地で求められますね。ハードやネットワークについて知っておかないといけませんし、DBについてもしかり。
あとなぜかこの項目で見積能力も取り上げられていて、これはいま弊社も取り組んでいるFP法(ファンクションポイント)のことが書いてありました。
そして最後に業務理解 私は苦手ですね。上2つは閉じてる分野ですが、業務となると多岐にわたります。その都度お客様に沿って勉強という姿勢が大事でしょうか(私は業務アプリの開発はあまりしていないのですが)。
技術寄りに言うと上のようなスキルが求められますね。

そして、プロマネになるためにはPMBOKをおおよそ頭に入れて、品質管理もしっかりやらなければいけません。
あとは、ビジネススキルとしてプレゼンテーション能力やハーバード流交渉術なども書かれてありました。

簡単な読み物としてよさそうでした。

お好み焼き

|

朝山です。昼はよく近所のお好み焼き屋の「ぼう」に食べに行きます。

最近、「ぼう」のホームページができて、店長がブログを書いています。
http://www.okonomibou.jp/

「ぼう」のお好み焼きはうまいです。お好み焼きにもしっとりタイプとかぱりっとしたタイプとかお店によっていろいろですが、「ぼう」はぱりっとしてます。そのぱりっと感がクセになります。それから、店長はイケメンです。今年からはクーラーも入って、涼しくお好み焼きが食べられます。ぜひ行ってみてください。

で、今日は珍しく一人で食べに行ってましたので、店長といろいろしゃべりました。ホームページの製作者から、ブログをまめに打つといいよとアドバイスされて、結構がんばってるとのことでした。店長のブログは飾らない感じな人柄が伝わってきていい感じです。

SFには出前に来てもらうこともあるので、店員のお姉さんとかも、パソコンの話になって、、子供が勝手にインターネットを触るので有害サイトブロックを入れたら、自分が見たいサイトも全部見れなくなって再設定が大変だった、とか話してくれました。今頃は小学生くらいでも普通にパソコンを触れてすごいですね。

ページ

RSS - ブログ を購読