nDiki : C++

C++

関連情報

.NET Framework 関連

  • C++/CLI
  • C++ マネージ拡張
    • Visual C++ 2008 では C++ マネージ拡張のサポートの使用は非推奨。将来のリリースで削除される予定。

2011年2月24日 (木)

今日のさえずり: 何で今日はオフィスのみんなが Facebook やってるの? 何かを超えたの?

2011年02月24日

  • 06:50 ATOK for Android の製品発表は今日のNTTドコモの製品発表にタイミングを合わせるため止めていると予想。
  • 10:35 Google Chrome 拡張も別プロセスなのか。
  • 11:26 「クラス宣言だけしか読んでないソースファイル内で delete してたのでデストラクタが呼ばれなくてメモリリーク」を C++ のコードで発見して潰した。あれぇなんで C4150 出てなかったんだ?
  • 12:10 弁当 350円。 (@ 向日葵 和泉町店・カレー食堂) http://4sq.com/hEDCFU
  • 12:13 prove の範囲でのメモリリークを全部潰した。おいしくお昼ごはんが食べられる。
  • 12:16 Android 用の ATOK は結局6月30日までトライアル版延長か。
  • 12:26 RT @atok_js: 予告させていただいた通り、大きく3つのポイントがあります。1. 利用期間を6月まで延長 2. 3キャリアそれぞれのTrial版を公開 3. マッシュルーム対応です。 http://ow.ly/42jZY #atok4android
  • 12:26 RT @atok_js: それと、基本的な機能も大きく強化しています。濁点/半濁点や半角スペースのフリック入力、本体メモリ使用量を削減、キーサイズの設定追加など、書ききれないぐらいの機能強化を施しています。#atok4android
  • 12:30 ATOK for Android のキーサイズ「小さく」に設定した。縦方向の誤打は今までほとんどないので。横幅が広くなるといいのだけれど、そうすると POBox Touch の真似するしかないのかな。 #atok4android
  • 13:37 「さくらのVPS 1G」月額1,480円。512MB は心もとなさそうで手を出さなかったけれど、1GB だといいんじゃない? http://bit.ly/i22R4o
  • 13:41 RT @yapcasia: 【仮】YAPC::Asia Tokyo 2011 は 10/13, 10/14, 10/15の予定。会場が決定していないのでまだ変更の可能性はあります。
  • 14:50 液晶プロジェクタの交換用ランプ定価44,625円か。結構するな。
  • 15:23 交換用ランプ買うなら新しいの買ったらという話になってる。
  • 17:21 RT @atok_js: 【初めてATOK for Androidをご利用される方へ】キーボード右側の矢印はフリックで上下左右に向きを変えることができます。カーソルの移動が楽になると思いますので試してくださいね。#atok4android
  • 17:48 何で今日はオフィスのみんなが Facebook やってるの? 何かを超えたの?
  • 18:19 ティオ 100円。
  • 18:35 Locale::Maketext で po ファイルを使うやり方。言語別にパッケージ作って %Lexicon 作るより管理が楽そう。 / Perl でつくった web サイトを L10N する方法 - TokuLog 改メ tokuh… http://htn.to/en3XyA
  • 19:02 「高速化に着手する。」
  • 19:41 みんなそろそろエイプリルフールの準備始めてるのかな。
  • 20:11 予想よりは高速化の結果はちょっぴりだった(そんなもん)。
  • 20:51 RT @tekiomo: PHPエラーメッセージでググるとそのエラーが実際に出ているページがひっかかる仕様をどうにかしてもらいたい
  • 20:59 あ、同時プリント受け取り忘れてる。
  • 21:59 せっかくいい記事だなと思ってmixiチェックボタンを押したのに、mixi Plugin のサービス設定で「〜をチェックしました。オススメです!」ってなるように定型文設定されてて萎えた。オススメ押し売りすぎ。
  • 22:39 RT @zakwa: 飲みの誘いを断る事に「申し訳ない感」よりも「勿体ない感」が明らかに強いのはなぜだろう。
  • 24:36 自分が昔買ったのより付属品が増えてて楽しそう。 / ASCII.jp:昔懐かしいD&Dの「赤箱」が最新版になって復活! http://htn.to/AHPa1X
[ 2月24日全て ]

2011年5月23日 (月)

Perl での一時変数のインライン化はコンテキストの変化に注意

Perl ではスカラーコンテキストとリストコンテキストが肝の一つなんだけれど、ここ最近 C++ を使うことが多かったこともありリファクタリングでちょっとポカった。

 #!/usr/bin/perl
 
 use warnings;
 use strict;
 use Data::Dumper;

 sub f { return; }
 sub g { return undef; }

 my $f_value = f;
 my $g_value = g;

 my $f_hash = { a => 1, b => $f_value, c => 3};
 my $g_hash = { a => 1, b => $g_value, c => 3};

 print Dumper($f_hash, $g_hash);

 #$VAR1 = {
 #          'c' => 3,
 #          'a' => 1,
 #          'b' => undef
 #        };
 #$VAR2 = {
 #          'c' => 3,
 #          'a' => 1,
 #          'b' => undef
 #        };

リファクタリング前のコード。$f_hash も $g_hash も同じ。 ここでリファクタリングのスタンダード「一時変数のインライン化」を行う。

 my $f_hash = { a => 1, b => f, c => 3};
 my $g_hash = { a => 1, b => g, c => 3};

 print Dumper($f_hash, $g_hash);

 #Odd number of elements in anonymous hash at test.pl line 13.
 #$VAR1 = {
 #          'a' => 1,
 #          '3' => undef,
 #          'b' => 'c'
 #        };
 #$VAR2 = {
 #          'c' => 3,
 #          'a' => 1,
 #          'b' => undef
 #        };

ああ。f の呼び出しがリストコンテキストに変わるので、 return; が undef ではなく () を返すようになり無名ハッシュを生成するリストの中で消えてしまうため、キーと値の組み合わせがずれてしまう(そして無名ハッシュを奇数個の要素で作ろうとする警告も出る)。

コンテキストは理解しているんだけれど、リファクタリング前のコードでスカラー変数で受けているので、つい f がスカラー値だけを返すサブルーチンだと錯覚してしまうと。

g みたいに明示的に return undef; してればいいかというと、これはこれで落とし穴があり、一般的には return; の方が推奨されている。

Perl での一時変数のインライン化は JavaC++ に比べて要注意ってことで。

[ 5月23日全て ]

2011年6月21日 (火)

今日のさえずり: $this-> とか書いちゃって、C++ の何かが頭からとろけてきた感じ

2011年06月21日

  • 07:46 今日は T シャツでいいよね。
  • 09:20 上履きの役目を果たしたコンバースのスニーカー履いて通勤中。地面のデコボコの感触があるの新鮮。
  • 09:24 RT @yasa_gurek0: 車窓からチラ見した富士山はまだまだが残ってました。あそこ行ってビール飲みたい。今日はスーパードライな気分。
  • 09:38 昼のサンドイッチとパン 446円。 (@ ローソン 渋谷三丁目東店) http://4sq.com/kIrLg8
  • 09:50 そっか、襟なしだとネックストラップがちょっとキモい。
  • 11:47 あ、今 Perl コード書いているのに $this-> とか書いちゃって、C++ の何かが頭からとろけてきた感じ。
  • 13:25 iThoughtsHD イジり中。Dropbox に保存/から読み込みできたり、PDFPNG なら Evernote for iPad に送れたりと運用は快適そう。
  • 13:28 Dropbox はタイムリーにセキュリティ障害があったところではあるけれども。
  • 15:15 ああ co した trunk が壊れてただけか。……だけか!
  • 19:06 お、明日から DMS か。
  • 19:50 退勤。
  • 20:17 今日こそシュウマイ。
[ 6月21日全て ]

2012年2月12日 (日)

今日のさえずり: ミカンの白い筋の名称は「アルベド(albedo)」「中果皮(mesocarp)」

rimage:/nDiki/Flickr/6859987205.jpg

2012年02月11日

  • 09:31 インフルエンザ包囲網がハンパない。
  • 16:19 Turbo C++ とか懐かしい。
  • 17:51 C は C MAGAZINE 付録LSI C-86 試食版で学んだクチです。
  • 19:02 みかんのあの白い奴の名前がいまだに家族内で統一されていないのでこれから調べる。
  • 19:04 Wikipedia のウンシュウミカンのページでは「白い筋」ですまされてる……。
  • 21:45 ミカンの白い筋の名称は「アルベド(albedo)」「中果皮(mesocarp)」。
  • 22:56 マネープランとかやってみた。もっと黒くてもいいと思うの……。

2012年02月12日

  • 11:36 手作りのバレンタインチョコレート! http://t.co/yBk2M5id
  • 12:33 歌手って何か説明するのに「サボさんみたいな人」って……。
  • 15:33 やはり LSI C-86 試食版はおーるどえんじにあホイホイだった。
  • 16:20 うちはタニタ。 RT @lapis25: タイマーってソニー製品に限らずあるよね
  • 16:36 アニメ番組中にデータ放送の案内が出るのは DVD BOX 買わせる戦略。
[ 2月12日全て ]

2013年1月10日 (木)

今日のさえずり: ハイムリック法は調子にのってバックドロップしそうで怖いです

  • 08:43 朝に風呂掃除をしていてシャワーを浴びたの2度目なので再発防止したい。
  • 09:29用語増えるのいいけど、先にテレパシーをマスターしたい。
  • 09:43 鉄分売ってたので買った。 (@ セブンイレブン 渋谷3丁目六本木通り店) http://t.co/1lpXbONT
  • 10:34 一発ミーティング済み。 (@ 株式会社ミクシィ (mixi, Inc.)) http://t.co/o9EgSZ4p
  • 13:17 Arrow まだサービス継続してた。 http://t.co/zISYA8Xj
  • 13:37 IKEA BJURSTA 伸長式テーブルの組み立て説明書 PDF ファイル見ている。ふたり人が登場する。
  • 17:03 若干昨日の反動がきている。
  • 17:04 「うちの女性ディレクターが餅を早食いする気満々」じゃないかと心配している。
  • 17:07 @yasa_gurek0 固さ次第ですね。
  • 18:28 不具合調査 >> 餅
  • 19:36 女性ディレクターに「縁起ものだから」と食べないと祟られるような勢いで説教されたので、餅いただきます。
  • 19:50 Joel on Software 21章 報奨金有害論
  • 20:53 OOP 理解するの、Java でも C++ でもいいのでインタフェースを宣言するようなコードを書く言語もさわってもらってた方がいいな(Perl だけじゃなくてという意味で)。
  • 21:03 ハイムリック法は調子にのってバックドロップしそうで怖いです。
  • 21:11 Display PostScript は死んだの?
  • 21:18 お金大好きです。
[ 1月10日全て ]

2013年8月28日 (水)

PerlTest::More の is 呼び出しで () つけないと動かなくなるのはなぜ?

テストスクリプトで 「クラスメソッドの返り値のアサーションで、is に括弧をつけると動くけれど、とると動かなくなるのはなぜ?」とチームメンバに質問された。

 #!/usr/bin/perl

 use warnings;
 use strict;
 use 5.10.0;

 package MyClass;

 sub color { 'blue' };

 package main;

 use Test::More;

 is(MyClass->color, 'blue');
 is MyClass->color, 'blue'; # wrong!

 done_testing;

簡略化すると上のような感じ。実行すると、

 Useless use of a constant (blue) in void context at sample.t line 16.
 ok 1
 Can't locate object method "is" via package "MyClass" at sample.t line 16.
 # Tests were run but no plan was declared and done_testing() was not seen.

となる。

これは間接オブジェクト構文(indirect object syntax)の罠にハマったケースだね。 間接オブジェクト構文は、例えば C++ の new っぽく

 my $obj = new MyClass;

と書ける構文(MyClass::new が呼ばれる)。前述では MyClass::is 呼ぼうとして怒られていると。間接オブジェクト構文は perldoc perlobj で説明されている。

ちなみにis じゃなくて組み込み関数だと違う解釈になる。

 say(uc MyClass->color);

とすると MyClass::uc が呼ばれるのではなくて uc(MyClass->color) と解釈されるので "BLUE\n" が出力される。

また以下みたいに、意図しないまま動いちゃう場合もあるので注意かな。

 #!/usr/bin/perl

 use warnings;
 use strict;
 use 5.10.0;

 package MyClass;

 sub color { 'blue' };

 sub is { 'MyClass2' }

 package MyClass2;

 sub color { 'red' };

 package main;

 use Test::More;

 is MyClass->color, 'green';

 done_testing;

これだと MyClass::is が呼ばれて 'MyClass2' が返ってきて、そして MyClass2 の color が呼ばれて 'red' が返ってくる(そして 'green' は使われないし、Test::More::is も実行されない)。

 Useless use of a constant (green) in void context at sample.t line 21.
 1..0
 # No tests run!

困ったらカッコつけようぜ。

[ 8月28日全て ]

2013年9月20日 (金)

今日のさえずり: 「藤井システム」なんて言葉があるんだ。藤井さんなんかかっこいい。

2013年09月20日

[ 9月20日全て ]

2014年2月27日 (木)

Perl でインスタンス変数とか言うの気持ち悪いので attribute と呼ぶことにする

インスタンスオブジェクト毎に固有の変数といえばインスタンス変数である。コンテキストによって呼び名が微妙に違ったりして、C++ だとメンバ変数と呼ばれている。オブジェクト指向一般論ではなく、特定のプログラミング言語における話ではできるだけその世界の用語を使うようにしている。

けどそういえば Perl だと何て呼ぶのだろう。これだという話もあまり聞かない。あと Perl だとインスタンスは bless された何かであってインスタンス毎の値をどう格納するかはまちまちのなので「変数」と呼ぶのも何か気持ち悪い。なのでつい「スロット」と呼んでいたのだけれどどっちかというと Lisp 方面的な呼び方だし、多分チーム内でも伝わっていなかったと思う。

ということで Perl のドキュメントを漁ったら perlootut で attribute って呼んでいた。

なのでとりえず Perl コンテキストでは attribute と呼ぶことにしよう。


[ Perl 用語 ]

今日のさえずり: これで切っても安心

2014年02月27日

rimage:/nDiki/Flickr/12813816284.jpg

  • 10:13 一度行きたいと思っていた家の近所のカレー屋が閉店したとの報。ああ、また論の時と同じ過ちをしてしまった。
  • 13:18 “マンガで分かる心療内科・精神科in渋谷 第74回「フランクル〜人が生きる3つの意味」 | 渋谷/心療内科/ゆうメンタルクリニック 渋谷駅0分 渋谷駅・精神科・東京・カウンセリング” http://bit.ly/N5yzTp
  • 13:18 メーテル! / “アニメ「銀河鉄道999」のコンセプトルーム、ホテルグランパシフィックに登場 - 東京ベイ経済新聞http://bit.ly/1jBS8hc
  • 19:38 そういえばインスタンス変数/メンバ変数のことをついスロットと呼んでしまうのだけれど通じているのかな。
  • 19:57 Perl でインスタンス変数とか言うの気持ち悪いのでそう呼んできたのだけれど。 perlootut では attribute って呼んでいるので Perl コンテキストではそう呼ぶことにしよう。
  • 20:31 Tiarra 移設した。ディレクトリごとコピーのみで動いた。グー。
  • 20:49 デバッグ進んだので良き日。 (@ 株式会社ミクシィ (mixi, Inc.)) http://4sq.com/1ftsciQ
  • 21:09 @py0n 一般論なら一般的な用語使うし、言語固有の話題ならその言語に合わせた用語をできるだけ使うよ。 C++ ならメンバ変数って言う。
  • 22:12 これで切っても安心。 http://flic.kr/p/kwja9Y
  • 25:33 こんな時間にたまごっちぴーすが荷造り。
[ 2月27日全て ]

2015年8月22日 (土)

YAPC::Asia Tokyo 2015 2日目

rimage:/nDiki/Flickr/20794290452.jpg

今日も朝から YAPC::Asia Tokyo 2015 の2日目です。まずは一杯の無限オレンジジュースからスタート。最初はトラックCから。 C の部屋に入れたのはこれが初めてです。なるほど狭め。

「Mackerel開発におけるScalaとGo、そしてPerl」 songmu @songmu 氏 #yapcasiaC

言語の特性にあわせて様々なプログラミング言語を活用しているというトーク。サーバサイドで使われているということでちょっと Scala が気になりますが、やはりここでもコンパイルが遅いという話が出ていました。

Go は小さなシングルバイナリを作れるというところがやはり大きな利点。あとはやっぱり Perlビルドなどのためのツールを作るのに便利だよねという話でした。

Perl 5.22 and You」 Ricardo Signes @rjbs 氏 #yapcasiaA

Ricardo Signes 氏のトークを聞くのは YAPC::Asia Tokyo 2013 1日目の時(記事)以来です。

前回同様 Perl の機能追加・削除についての話が中心。直観に反するような挙動が修正されるというところは言語としての完成度があがって良いなと。一方、さらに experimental として追加される文法は、ますます変態的になっていくなという印象もありました。

ランチ

今日は一人でぶらりとTFTビルへ。

「Adventures in Refactoring」 Ben Lavender @bhuga 氏 #yapcasiaA

リファクタリングを行う理由の中で「Developer Education」という話があって、理解のためにリファクタリングをしてもらうのも良いと言っていて、ああそうだよなと思いました。リファクタリングの素養はあるけれども、チームのコードは知らないという状態の時にはいいなと思います。

あとは、基本的には Martin Fowler の「リファクタリング」を読んでいれば OK な感じです。

ちょっとうつらうつらしてました。あと「カレのヒゲ」はマイクにこすれるので通訳的に要注意のようでした。

「Parallelism, Concurrency, and Asynchrony in Perl 6」 Jonathan Worthington @jnthnwrthngtn 氏 #yapcasiaA

Perl 6 における 並列・並行・非同期処理の話。 Perl 6 では言語レベルでこのあたりのサポートがしっかり入ってくるという印象でした。昨日聞いたトークといい、やはり Perl 6 が気になってきました。

Go Debugging, Profiling, and Optimization」 Brad Fitzpatrick @bradfitz 氏 #yapcasiaA

Go の各種ツールを使って時間やメモリを消費している部分を見つけてどんどん削っていく様子をライブで実演してくれました。なるほど、ちょっとしたコードでも工夫すると劇的に最適化できるみたいです。

実演中アセンブラコードをチェックしているところや、データが 1 word から 3 words で管理されているという説明などをみて、ああやっぱり Go は C/C++ 的なマシンへの近さやコンパクトさがあるよなとあらためて感じました。

「Lightning Talks Day 2」 #yapcasiaA

YAPC::Asia Tokyo 最後のトーク(になるかもしれない)となった LT は Kuniwak (@orga_chem) 氏の「Vim script性的解析の光と闇」でした。

CONBU さんが LT の時間内で設営・撤収デモまで実演していて、その素早さに驚嘆でした。まさに神業のレベルです。会期中お世話になりました。

「Wrap Up!」 Daisuke Maki @lestrrat 氏 #yapcasiaA

今年はキーノートが無いので LT が終わるとクロージングです。

今年の参加者はなんと約2,130人。今の形での開催は最後と言われている YAPC::Asia は今後どうなっていくのでしょうか。 YAPC::Asia Tokyo 2015 は「The End.」のスライドで幕を閉じました。皆さんお疲れさまでした。

YAPC::Asia Tokyo 2015 を終えて

去年の YAPC::Asia Tokyo 2014 では Go 言語の勢いを感じ、その後ちょっとした規模ですが業務ツール開発に使ってみたりしました。

YAPC::Asia Tokyo 2015 では近年になく Perl のトークを見た気がします。しかも今回は Perl 6 のコードををよく見た気がするのは気のせいでしょうか。今回はこれを機に Perl 6 にチャレンジしていきたいと思います。

[ 8月22日全て ]

2018年3月3日 (土)

今日のさえずり: C++ コンパイラはお金出して買ってた。学生の自分には高かったなぁ

2018年03月03日

[ 3月3日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.081004s / load averages: 0.24, 0.27, 0.25