malmrashedeの日記

基本的に独り言です。ネガティブ多め。

お正月があけてしまいましたが、、、

今年もよろしくお願いします。

先週から仮復職し、なんとか先週3日こなせました。
休職中気にかけていただいた方々、ありがとうございました。

このまま続けられるか、続けていくのかはまだ自分でも分かりませんが、無理せずにすすめたいと思います。

開く コメント(0)

開く トラックバック(0)

あけましておめでとうございます。

今年もよろしくお願いしますm(_ _)m

開く コメント(0)

開く トラックバック(0)

[memo]20110619

なんとなく、書きたくなった。

現在の上司が欝に理解のある人で、その人の勧めで心療内科にいった。
「適応障害(or うつなりかけ)」と診断されて、レキソタンとジェイゾロフトという薬を飲みつつ3ヶ月
実はもう治ってて、生活習慣が乱れているだけなのか、本当に病気なのか、未だ良くなってるのか悪くなっているのか自分でも良く分からない状態が続いている。

寝付きが悪い状態と1日じゅうお腹下しているのは改善されつつある。突然朝起きられなくなるのがつらい。
「サボリ病と思われるのがつらい」とは聞いていたけど、 周りの人がどんなに寛容(今のチームは非常に寛大だと思う。本当にありがたい。。。)でも、 自分のものさしがあやふやな状態だとどうしても頭の中で、いろいろ悪口が聞こえてくる。

薬を否定するつもりは全くないけど、 レキソタン(その前はワイパックス)は自分にあわないのか、眠くなるだけで正直不安に効いている気がしない。(効いてるのかもしれないけど、実感がない。) 
心のなかの悪口への対処は、イヤホンして音楽を流すか(仕事中イヤホンOKなのはありがたい。。。)、 なんちゃって数息観(呼吸するときに息の数を数える、途中で数が分からなくなったら、一からやり直す。 ≒素数を数えるんだ!)が今のところ効果を感じられる。ダメなときはダメだけど。。。

ちょっと複雑なことを考えようとすると、とたん頭が回らなくなる。ただ元の状態がもう思い出せないので、本人の実力なのか病気のせいなのかやっぱりわからない。 比較的単純な作業とか、よく知ってるシステムの調査とかは割と調子が戻ってきた気がするのだが、、、

あと、自分は何か一からシステムを作りあげたことってほとんどないということに気づいた。。。。

なんか他に書きたいことがあったけど、まとまらない

開く コメント(1)

開く トラックバック(0)

[memo]眠りつつ。

連休をほとんど昼夜逆転して過ごしてしまったのだが、ぼーっとしつつとりとめもなく考えてた。

お金より自由な時間がほしい。何かをしなければならない時間でなく、何をしても何もしなくてもいいときが。

開く コメント(0)

開く トラックバック(0)

[memo]遅くなりましたが、あけましておめでとございます。今年もよろしくお願いします。&PC買い換えた


12月の頭くらいにPC買い換えた。以前使っていたdynabookがファンの音がひどくなって、ディスクも不良セクタがでたりしてそろそろ限界だったので。

MacBook Airも格好良くて結構迷ったのですが、結局これにしました。

http://kakaku.com/item/K0000157302/

買ったとき4万円切ってて、安いなと思ったのですが、今見たらさらに3万円台まで下がってる。すごい。
6年前dynabook買ったとき、(保証込みで)30万くらいした。。

ネットブックからの流れを考えると、イノベーションのジレンマの本そのままのことが起きててびっくりする。
今のところいれたソフト

chrome,google IME,skype,Avira

まだvmware入れてない。mysqlconnectorとmysql spider engineの検証やりたい。

開く コメント(0)

開く トラックバック(0)

[c++][memo]mysqlconnector/c++ メモ


前回c用のAPIを使って接続したが、結構面倒くさい。
PreparedStatementが特に。。。

探したらmysqlにつなぐc++用のライブラリがあって、mysql開発のmysqlconnectorとサードパーティ製のmysql++がある。

mysql++の方が先に出て、割と枯れている(?)
mysqlconnectorの方が後発。ほとんどjdbcと同じ感覚で使える。使ってみたけどかなりよさげ。

mysql++

MySQL++とmyqlconnector/c++の比較

How does MySQL++ compare to MySQL’s Connector/C++?

Connector/C++ is a new C++ wrapper for the MySQL C API library, fully developed under the MySQL corporate aegis. By contrast, MySQL++ has a long, complex development history. MySQL++ started out as a third-party library, was maintained and enhanced by MySQL for several years, then got spun back out again, this time probably for good. MySQL does still host our mailing list, for which we thank them, but they don’t control the hosting or development of MySQL++ any more.
MySQL decided to create a competing library for two reasons. First, having the entire thing to themselves mean they can do the same dual-licensing thing they do with the C API library. Second, after Sun bought MySQL, they wanted to put MySQL support into OpenOffice, and wanted a JDBC style API for that support.
By contrast with Connector/C++’s Java-style database API, MySQL++ is very much a native C++ library: we use STL and other Standard C++ features heavily. If you are a Java developer or simply admire its database interface design, you may prefer Connector/C++.
Another way to look at it is that Connector/C++ is new and therefore perhaps less crufty, while MySQL++ is mature and featureful.

mysql connector c+++

バイナリのパッケージには、ヘッダファイルとライブラリ類が入ってる。
がこれだけだとどう使っていいのかわからない。
ソースコードのパッケージにサンプルが入っているので、こちらも落としておくと確認しやすい。
ライブラリのビルドのときにboost必要って書いてある。(加えて、今の最新の1.1.0は、ライブラリをつかったプログラムをビルドするときもboostが必要)

pdfのマニュアルが一番わかり易い。
http://downloads.mysql.com/docs/connector-cpp-en.pdf

開く コメント(0)

開く トラックバック(0)

[c++]c/c++で使えるテンプレートエンジン

寒すぎて体調崩した。。。月曜からひどい。。。

c/c++で使えるテンプレート・エンジンとして、ClearSilverとctemplateを調べた。
自前の環境が遅すぎて、make終わらなかったので調べ物だけ

ClearSilver


ClearSilverとは - はてなキーワード

C言語によるテンプレートエンジン。
非常にシンプルで、かつ高速に動作する。
C言語、Python、Perl、Java、Ruby等の言語から利用できる。
プロジェクト管理ツールであるTracがPythonバインディングを使用していることで有名。
また、Bloglines、Google Groups等の著名サイトでも使用されている。


特徴

phpやjsp等に比べて、アプリケーションのロジックと表示の分離を厳密に行う。

他のテンプレートエンジンとの比較
http://www.clearsilver.net/docs/apples_to_oranges.hdf

http://www.clearsilver.net/docs/manual.hdf
The templates only have access to a static dataset of strings. The dataset strings are contained in a hierarchical namespace that is populated by application code prior to the template rendering stage.

http://www.clearsilver.net/docs/concepts/

大まかな処理の流れ

1. HDFオブジェクトを作って、データを詰め込む
2. CSオブジェクトを作って、テンプレートにhdfを渡して、レンダリング

構文

ロジックは載せないといっている割に、構文は割りと強力
制御構造
<?cs if ?>などjspや、phpに近い構文
イテレーター、組み込み関数、フィルター、マクロ構文など、けっこう高機能
変数の記法がちょっと冗長だけど、気にならない範囲
ぱっと見ただけだが、直感的で書きやすそう。
外部テンプレートインクルード あり

テンプレートに渡すデータ構造

- HDFという独自のデータ構造(記法)を仕様(YAMLやjsonのような)
- プログラムからデータ構造を生成するときは、XPathのような記法で階層構造を指定して、値をいれる。
使ってみないと使いやすいか分からない。

STLコンテナの入れ子よりは格段によさそう。

インストール

yumでもはいるみたい。 http://www.wysiwyg.jp/tips/tpl/p1.htm#3.

サンプル

あとで

参考

google-ctemplate

Google が開発したテンプレートエンジン。googleのウェブ検索等で使われている(?)と

特徴

極力機能を絞ることで、アプリケーションとロジックの分離を重視する設計。
テンプレートに制御構造がない(セクションという仕組みで実現) くらいなので、かなり徹底している

大まかな処理の流れ

  1. TemplateDictionaryというオブジェクトを生成、テンプレートファイルを読み込む。
  2. TemplateDictionaryにデータをセット
  3. ShowSectionメソッドで表示したいセクションを指定
  4. テンプレートにデータをexpandする。

テンプレートに渡すデータ構造

google::TemplateDictionary キーがstringのハッシュ。入れ子にすることで階層構造を表現可能

インストール(自分のディレクトリにお試しでいれる)

[malmrashede@localhost ctemplate-0.98]$ mkdir ~/usr
[malmrashede@localhost ~]$ wget http://google-ctemplate.googlecode.com/files/ctemplate-0.98.tar.gz
--03:57:30--  http://google-ctemplate.googlecode.com/files/ctemplate-0.98.tar.gz
google-ctemplate.googlecode.com をDNSに問いあわせています... 72.14.203.82
google-ctemplate.googlecode.com|72.14.203.82|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 779396 (761K) [application/x-gzip]
Saving to: `ctemplate-0.98.tar.gz'

100%[=======================================>] 779,396      326K/s   in 2.3s

03:57:33 (326 KB/s) - `ctemplate-0.98.tar.gz' を保存しました [779396/779396]
[malmrashede@localhost ~]$ tar xvfz ./ctemplate-0.98.tar.gz
[malmrashede@localhost ~]$ cd ./ctemplate-0.98/
[malmrashede@localhost ctemplate-0.98]$ ./configure --prefix=$HOME/usr
[malmrashede@localhost ctemplate-0.98]$ make install

vmwareにメモリ64MBしか割り当てていなかったので、make終わらなかったorz

サンプル

より

テンプレート.tpl
{{#セクション名}}
{{変数名}}
{{/セクション名}}

コード側たぶん動かない。概念だけ
dict.SetValue("変数名", "値");
dict.ShowSection("セクション名");
google::Template *tpl = google::Template::GetTemplate("テンプレート.tpl", google::DO_NOT_STRIP);
tpl->Expand(&out, &dict);

制御構造

  • テンプレート側には、制御構文がない。
  • データを詰め込むところで、表示するセッションを指定することで、制御を行う。ちょっと独特
    • 条件によって表示を変えたり、検索結果の表示のように繰り返し表示したい場合は表示のまとまりにセクションというタグを埋め込んでおく。

条件分岐

テンプレート.tpl
{{#セクション名1}}
{{変数1}}
テンプレート
{{/セクション名1}}

{{#セクション名2}}
テンプレート
{{/セクション名2}}

コード側たぶん動かない。概念だけ
TemplateDictionary = dict("テンプレート.tpl");
dict.SetValue("変数名1");
if(特定の条件のときに) {
dict.ShowSection("セクション名1"); //セクション1だけ表示
}else{
dict.ShowSection("セクション名2"); //セクション2だけ表示
}

繰り返しの表現(検索結果など)

AddSectionDictionaryメソッドを使い、TemplateDictionaryを入れ子にすることで実現する。

TemplateDictionary *追加した_dictionary = 親のdictionaly->AddSectionDictionary(繰り返したいセクション);

サンプルより
テンプレート.tpl
{{#ONE_RESULT}}
    {{! Note: there are two SUBITEM_SECTIONs. They both show or hide together}}
    {{#SUBITEM_SECTION}}<blockquote>{{/SUBITEM_SECTION}}
    {{! LEAD_LINE is received HTML-escaped from the backend.}}
    <p><a href="{{JUMP_TO_URL:html_escape}}"  target=nw>{{LEAD_LINE}}</a><font size=-1>
・・・
{{/ONE_RESULT}}

コードより抜粋

  ResultsList *results = query->GetResults();
  int resCount = 0;
//検索結果の数繰り返す
  for (ResultsList::const_iterator iter = results->begin();iter != results->end();++iter) {
    QueryResult *qr = (*iter);
    // Create a new sub-dictionary named "Result Dict <n>" for this entry
    ++resCount;
    TemplateDictionary *result_dictionary = dictionary->AddSectionDictionary(ksr_ONE_RESULT);//セッション追加
    result_dictionary->SetValue("ほげほげ","ふがふが");

参考


まとめ

  • どっちも高速かつ、アプリケーションロジックと機能の分離を重視。
  • ctemplateのほうがより厳密。しかしその分ちょっとくせがある。
  • ClearSilverのほうが、他のテンプレートと似ている分書きやすそう。

開く コメント(0)

開く トラックバック(0)

[c++]2010年12月時点で分からないこと

- ちゃんとメモリを解放できているか分からない。。
- vectorとか配列にオブジェクトを突っ込むときに、値をいれてるのか、アドレスいれてるのか分からなくなる。オブジェクトだからアドレスの気がきがするんだけど、この関数抜けたらオブジェクト消えちゃうのか否かとかメモリ解放しないといけないのか。
- 分割コンパイルができない。分割したファイルのどれにinclude書けばいいのか分からない。
- ヘッダファイルに何を書けばいいのか分からない。
- ライブラリ標準c用ライブラリとc++用のライブラリが混在して気持ち悪い気がする。
- 引数の渡し方がなんだか独特。結果をいれる変数を関数の引数にするのになれない。関数の結果はreturnで返したいのだけど、

開く コメント(0)

開く トラックバック(0)

CentOSでlibmemcachedを使う

c/c++使うことになりました。。。環境整えるだけで休日オワタ

インストール

CentOSの開発環境、設定手順(with VirtualBox)
http://nplll.com/mutter/archives/2009/10/centoswith_virtualbox.php

を参考にmemcachedとlibmemcachedをインストール 

rpmforgeリポジトリを追加すれば、memcachedはyumで入る。

サンプルを動かす

サンプル
http://wiki.yulii.net/memcached/libmemcached

[libmemcached] libmemcachedを使ってみる
http://atkonn.blogspot.com/2008/05/libmemcached-libmemcached.html

リンクのソースを参考に、コンパイルして
error while loading shared libraries: libmemcached.so.3: cannot open shared object file

コンパイルコマンドが参考になった。

ライブラリが読み込めてない?
ldconfigコマンドでいけそうなんだけど、効果なし

/etc/ld.so.conf に
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/300sharelib.html

/usr/lib
/usr/local/lib

を追加して、ldconfigコマンド

ldconfigコマンドでsu -でrootにならないと実行できない模様

メモリを解放するところが分からない。

開く コメント(0)

開く トラックバック(0)

内側に駆動するものがない

長いこと火が入っていない
わくわくする感じがしない。「厄介ごと」としか認識されない。
「自分にはできない」と「やったことがない」が次にくる。

「恥ずかしい」という感情だろうか。

平日はずっと腹痛(健康診断で医者に笑われて怒れた)
あと頭皮はがれすぎ(皮膚科行った。)

人が怖い=憎しみや妬みが漏れ出すのが怖い

自分がいかに身を削っていても、自分のやることに価値を見出せない。

開く コメント(0)

開く トラックバック(0)

[ すべて表示 ]


.

Yahoo! Choctle
楽しい話題がいっぱい(Y! Suica)

プライバシーポリシー -  利用規約 -  ガイドライン -  順守事項 -  ヘルプ・お問い合わせ

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事