FC2ブログ

double negative

裏の裏は表
なんて事も言うが、プログラミングの世界でも、真偽は2値で、つまり、否定の否定は肯定である。

ところが現実社会はそんなうまい具合にゃぁいかない。
There Ain't No Such Things As A No Free Lunch.

You ain't heard nothin' yet.
に代表されるように、否定の否定はギザ否定みたいなのもありなんである。

ダメなダメはダメダメ、という状況をプログラミングで表現するにはどうしたらいいだろう。
真偽の論理値では表現できないので、数値の増減による表現になるんだが、例えば、
nice --;

のような書き方ではそのダメっぷりがはっきりしない。
じゃぁ重ねてみようかってことで、
#include <stdio.h>
int main(void) {
    int n;
    printf("%d\n", (n = 0, -- -- n));    // (1)
    printf("%d\n", (n = 0, -- n --));    // (2)
    return 0;
}

として、gccでコンパイルすると、
error : non-lvalue in decrement
error : non-lvalue in decrement

と、(1)も(2)もエラーとなる。

ところがこれを、g++でコンパイルすると、
error : non-lvalue in decrement

と、(2)だけがエラーとなる。(1)のみでコンパイルして実行すると、答えはちゃんと -2 と出力される。
ほぉ、ってことで、さらにくっつけてみる。
    printf("%d\n", (n = 0, ---- n));    // (3)

これもg++はエラーにならず、double decrementとして-2を吐いてくれる。
-------- n;と、そのダメっぷりを重ねていくと、値はきちんと-2, -3, -4...と減っていく。偉い偉い。
これならなんとかそのダメっぷりを表現できそうな気がしないでもない。


いや、なんちうか、ただこれだけの話。
規格上どうなのか、ってのを調べる元気がなく。

で、なんだっけ、そう、double negative
なんかもう疲れちゃって、俺はもうダメダメだぁって感じ。
うん、ただそれだけ。orz
スポンサーサイト

踊ってみたエヴァ(ニコ動)

ワークシェアリングだとかなんだとか大変な時期なんだとか就職難だとか言われているが、
こういう奴らを見ていると、まだまだニッポンは大丈夫なように思うんだ。

実行プログラムのモジュール名

実行プログラム自身が、自身のファイル名(フルパス)を必要とする場合がある。
良くあるのは、
「実行ファイルと同じディレクトリに置かれた設定ファイルを取得する」
というもの。

Win32では、GetModuleFileNameで難なく取得できる。

Linuxの場合は、/proc/self/exeをreadlink(2)で開く事で取得可能。

FreeBSDの場合は、dlinfoを使うのだろうか。(やってみてない)

HP-UXの場合はdlinfoが使えるのかなぁ・・・これはスキみて調査。

###
2009/03/25
HP-UXにはdlinfoは無かった。orz
pstatで取るのかなぁ・・・
というか、Unixでは”起動ディレクトリ”なんて使わないからいいんだけども。

メルト

勢いを増すばかりの初音ミク
卒業式でも歌われてるらしいね。

でもっていまさらの感だけども(^^;、
名曲数々あれど、まごうことのない代表作と呼ばれるものの一つ、メルト
いいねぇ~

でまたガゼルさんが歌ったものがこれまた大評判だったのだが・・・
【ガゼル】メルト うたってみた【ゴメン】
とりあえずメドレーもまだ残っていた。
ガゼルメドレー (ニコ動)

でまたガゼルさんバージョンにバンドを合わせたバージョン。
【真mp3配布】初音MIKU メルト-Band Edition~ガゼルさんVer.-【最終調整夢幻合成版】

もーいったい何なのこの楽しさ。(^^
未曾有の不景気なんだが、こういうのを見てると捨てたもんじゃないぜニッポン。

ちぃと最近のあちこち動向も探らねば(^^

求職中

東京作業も大詰め、もうすぐ終了。
半年に渡るホテル暮らしとも、ようやくオサラバ、、と喜びたいところなんだがしかし、4月の仕事がありませぬ(T_T)

なんだかんだとせちがらい昨今、さてどうしましょ。
ちょっと休みたいけど家計が許してくれないしなぁ、、

とまぁ相変わらず危機感の無い元祖ゆとり世代のオサーンなのであります。(^O^)

自愛語

ここのところ若い人から言われる事が多いんだが、

「ちょっと質問よろしいでしょうか」

正しくは、
  • 質問してもよろしいでしょうか
  • 質問させて頂いてよろしいでしょうか

なのだが、この方は自分の質問を大層敬っておられるようだ。
こういうのは尊敬語でも謙譲語でもないので、自愛語と呼ぶ事にした。

同様なものに、
「ご連絡してもよろしいでしょうか」
がある。
  • 連絡差し上げても宜しいでしょうか
  • ご連絡頂けますか?
くらいにして欲しいものなんだが。

驚くべきは、こういう言い回しをするのが一人や二人ではない事。そして例外なく大卒で教育を受けている人間であること。
そして、30代の人間にもいることで。

「役不足ですが○○させて頂きました」なんてぇ言い回しをする人間は40代にもいたりする。
「俺ってすげー」というにも程がある、と腹を立ててはいけない。こいつは知らんのだから。
技術屋で敬語が苦手なら使わなきゃいいだろうに。

普通に、
  • 質問してもいいですか?
  • 電話してもいいですか?
  • ○○しました

でいいじゃねーか。

会社側も技術屋に余計な(いい加減な)事教えんじゃねーよ(--#

クラウド

クラウド・コンピューティングなる呼称がちまたに出回っている。
クラウドコンピューティング - Wikipedia

サーバサイドのサービス提供の形態全般をふんわりと包含した大雑把な呼称なんだが、クラウド(cloud=雲)という味わいが、営業マンにはうれしいのかもしれない。

SUN(Java)やOracleでは以前から提唱/提供しているものなので、いまさら「クラウド」と呼ぶことに反発もあるようだが、Googleを一言で表すには適した言葉だろう。まぁそんな感じ。

かつてMicrosoftが、DDEやOLE、ActiveXをCOMと呼び、それは「概念」であると言い放った時のように、ある場面では非常にわかりやすく、またある場面では曖昧すぎて困ったことになったりするようだ。

ただこの”クラウド”と呼ばれる形態はこれまでのグリッドコンピューティングであったりSaaSであったりしたものが漠として含まれるわけなんだが、既にグリッドコンピューティングやSaaSという呼び名自体も拡散し過ぎていて、ある場面では曖昧すぎる状態となっている事を考えると、そういったものを説明したい時には使いやすい表現ではなかろうかと。

新し物好きのこの業界では例によって、クラウドまんせーな記事が先行する事になるんだが、まだまだサーバサイドのサービス提供を利用できる場面てぇのは限られているのは自明の理で、「これからはこれしかない的な情報はいかがなものか」というような反論の方が鼻に付く。

低コストで簡単なつり橋の宣伝に対して、「石橋じゃないから叩けない」ってわざわざ言わなくてもいいんだってば、みたいな。

とまぁ呼称については喧々諤々なクラウドコンピューティングだが、
自社システムを子会社にして、サービスとして金を回す
以外に現状では業務レベルで満足するものは少ないのは確かで。
今後どこまでそのサービスが充実するのか見ものではある。

忘れちゃならないのは、「ネットワーク自体は金を生まない」という原則で、作られた仕組みが何かを生み出す事はなく、その仕組みを利用して何を行うかが重要だっちうこと。

で、その重要な何かってのは何だ、ってぇのがわかってれば俺は今頃こんなホテルの回線に繋いでブログ書いてたりしないっちうの。orz

液晶TV

出張から帰ると待っていたのは、壊れたテレビ

これまで観ていたのは、VICTOR AV-29KB1。
ブラウン管だがフラットな表面のBSチューナ内臓の激重なやつ。
現在リコール対象のようだが、電源周りのトラブルも多く、何度か修理経験有。
まぁいよいよか、って時期でもあり、「明日の朝のアニメが見たい!」との要望もあり、そのままヨドバシへ。

どうせ殆どゲームで使うので、高いのを買ってもしょうがないってことで、セール品の
TOSHIBA REGZA 32V-C7000
を選択。
regza1

ネット上での最安値は6万円台中盤だが、ヨドバシでは7,8000円+ポイント20%。
まぁまぁか、ってことで即座に決定。
古いTVの処分代と5年保障をつけてお持ち帰り。

一人でらくらく持てる重量にまず感激。
なんだか良くわからんまま地デジへ移行してしまったわけで、データボタンにさらに感激。

でもやっぱり一日の殆どはWiiの画面・・・
まぁ5年もてば御の字なんだろうけど。

std::stringのtrim_right

C++のstd::stringは何かと便利ではあるんだが、素のままでは貧弱な面も多々。

例えば、以外に頻度が高い、trim_right
文字列右の空白を除去するものだが、STLのstringにはこのメソッドは無い。

最も推奨はboost C++ librariesを使う事。
boostにはtrim/trim_right/trim_left/trim_copy/trim_if/trim_copy_ifなどの装備が充実している。
#include <boost/algorithm/string.hpp>
...
    std::string s = "1234 ";
    ...
    std::string str = boost::trim_right_copy(s);

boostが使えない環境の場合は、こんな書き方もできる。
    std::string s = "1234   ";
    std::string::const_reverse_iterator rit
        = std::find_if(s.rbegin(), s.rend()
            , std::not1(std::ptr_fun(isspace)));
    std::string str(s.begin(), rit.base());

find系は見た目分かりずらいので、(ASCIIだけでいいし)というのであれば
    std::string s = "1234   ";
    size_t len = s.length();
    std::string::const_reverse_iterator rit;
    for (rit = s.rbegin(); rit != s.rend(); rit++) {
        if ((*rit) == '\x20') len--;
        else break;
    }
    std::string str = s.substr(0, len);

とかが分かりやすいだろか。
いろいろ限定された環境だと3番目で作っちゃうかもしれないな・・・
ちうか、今日書いた。 orz

てぇことで、可能な限りboostくらい入れちゃおうぜ

現場のセキュリティ

この業界もセキュリティ云々とあれこれうるさくなって、やりずらいことこの上ない。

開発環境の皆無な客先での開発作業を強いられたり、個人の契約内容に億単位の賠償の話が載せられたり、しかもその到底受け入れ難い注文を、受け入れて当然のように押し付ける。
かと言って、注文する側に相応のリスクを負担する覚悟はまるで無しときている。
これじゃぁ使える人から順に離れていきまっせ、旦那。

で本題のセキュリティなんだけれど、そもそも末端の人間が手にしなければならない情報はごくごく限られている。漏れて困る情報など本来はないに等しい。
問題は、末端へ情報が渡ってしまうこと自体にある。

対応策は、他の業種でもかなり前からいろいろされているように、いろいろある。
打ち合わせ資料を回収する
これは既にあちこちで当たり前になっているんだが、打ち合わせ資料を番号をつけ管理する。打ち合わせが終わったら回収して、修正点は差し替えて次にまた使う。

だいたいの現場ではこれらの資料が新旧混じって担当者の机の上に山積みとなっている。シュレッダー待ちの紙も倉庫並に積まれて崩れかけている。
これが 「お前ら信用ならないから賠償請求するからな!」 という契約書に書かれた重要な文書の実態。
文書類は作成段階から版管理・一元管理する
作成した文書は、ローカルPCにあり、共有フォルダにあり、打ち合わせフォルダにあり、BAKフォルダにあり、NEWフォルダにあり、日付フォルダにあり、、と、誰にどの版で指示したのかはおろか、どれが最新なのかさへ不明な状況のまま、さらにコピーが増殖していく。

簡単にVSSなり、CVSなりSubversionなりを使えば履歴管理できるのだから、使えば良さそうなものだが、なぜか使わない。
\\共有サーバ\プロジェクト名\概要\担当者\work\20090301\最新\変更\最新\リリースの下に入っています」と平気で言うんだが、アカウントで管理しているわけでもないので消せちゃったりするんですけども。
それもこれも「お前ら信用ならんから」なのに、「責任はとらせるからな」、って、信用ならん人間にどんだけ期待寄せてるんだか。

たったこれだけでも、末端へ流れる情報量は激減してくれると思うのだけれどなー。
”Excelのファイル名で管理します"
なんて堂々と言い切る輩にゃぁ理解してもらえないんだけれども。

プロフィール

f_yamaki

Author:f_yamaki

アクセスカウンタ
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク