2013年9月2日月曜日

本当に顧客がファーストなのか

顧客は大事だが、それよりチームメンバー、具体的に人間を大事にしないと先はない。簡単にマネージャーと呼ばれる人は、俺はもっと働いてるんだからお前らも文句言わずに働けというが、マネージャーのそれと言われる側のそれはわけが違うわけです。
「自分の意思」があるかないか、強制的かどうか、今日の退社時間を自分で決められるかどうかなどは、もっとも働く人間のやる気を左右する要素であります。マネージャーと呼ばれる人たちは、チームメンバーより「自分の意思」で多めに含まれていることから、単純に俺は一日15時間働いてるからお前らは少なくとも12時間はいいだろっていう命題は成立しない。
残業がしょうがいない状況なら、やむを得ず残業をしないといけない状況とどうすればこの状況から脱出できるか解決策の共有、そして共感、そして同意が先である。根拠もなくこのタスクを明日まで終わらせろ、仕事は山ほどあるから定時に帰るくらいだったらもっと働けなんかの奴隷扱いでは、奴隷ならではの受動的な結果しか出てこない。だって、精神は疲れているのに帰るなっていうなら、帰れる時間(終電)まで仕事するフリをするしかないからだ。明日になっても定時に帰れる見込みがないなら気持ちはそのまま。これで新しいアイディアが生まれると思うか。頭を使う仕事をする人たちがなぜそれがわからない。後になってそのやる気のないアウトレットを直すのにもっとリソースが必要なのは当たり前だよ。
一番ベストなのは、やる気と向上心と体力と、、えーといろいろほぼ満点のメンバーたちを集めて働かせることだろ。映画的に例えるとアベンジャーズ的な。それが無理ならもっとチームメンバーを大事にしたプロジェクト運営をすべきである。歴史に例えるとルネサンス的な。

2013年5月20日月曜日

【C#】動的に(C/C++)のDllを読み込む際に、「PInvokeStackImbalance が検出されました」と出る件について

元のソース

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
        private delegate int xxx(ushort wMode,uint dwLon, uint dwLat, ushort wLevel, ushort wFlg);



int ret = 0;
            xxx drawMap = (xxx)Marshal.GetDelegateForFunctionPointer(funcAddressDrawMap, typeof(xxx));
            ret = drawMap((ushort)p, (uint)dwLon, (uint)dwLat, (ushort)wLevel, (ushort)p_2);
            return ret;

だと、「PInvokeStackImbalance が検出されました」とうざいメッセージが表示される。
で、いろいろ調べた結果
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
→[UnmanagedFunctionPointer(CallingConvention.Winapi)]
に変えたら出なくなった。
なぜなのかはこれから調べる。

2012年11月2日金曜日

残業


朝から、今日は遅いよなんか言いながら仕事して、
やる気がでるだろうか。
「絶対定時内に終わらせる」と思いながら仕事するやつより
成果がいいだろうか。
長くいることが評価されるなら会社の問題、
長くいる自身を評価してほしいと思うなら個人の問題、
長くいなきゃ十分なPayを頂けないならこの業界、もしくは社会問題か。
いずれにせよ、生産的とは言えない。
なぜなら、結局「人」が犠牲になるから。

2012年11月1日木曜日

メルカトル図法でypixelと緯度との関係

メルカトル図法で、1Ypixelの角度は固定ではない。
苦労したが、下の数式で計算できた。
static double latitudeToPixelY(double latitude, byte zoom) {
    double sinLatitude = Math.sin(latitude * (Math.PI / 180));
    return (0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI))
        * 地図全体のPixel数);
  }
static double pixelYToLatitude(double pixelY, byte zoom) {
    double y = 0.5 - (pixelY / (地図全体のPixel数));
    return 90 - 360 * Math.atan(Math.exp(-y * (2 * Math.PI))) / Math.PI;
  }


圧縮(?,最適化)されたJavascriptを戻す

http://jsbeautifier.org/
ここでソースをコピペしてボタン押したら戻る。超便利。