BLOGTIMES
«Prev || ... 1023 · 1024 · 1025 · 1026 · 1027 · 1028 · 1029 · 1030 · 1031 ·... | | Next»
2010/06/27

C と C++ と void*

c  cpp 

先日、 malloc() の返り値は void* なので、ずっと明示的にキャストしないといけないと思ってた(というか、そう教わったからそういうものだと思ってた)けど、実はそうではないらしい*1ということが分かったので忘れないうちにメモ。

test.c

#include <stdlib.h> int main(){ int* i = malloc(sizeof(int)); return 0; }

実際に上記のようなプログラムを書いてコンパイルしてみると、Cのときは特にエラーも出なくて、C++にするとコンパイラが怒るのがわかります。

$ gcc test.c $ g++ test.c test.c: In function 'int main()': test.c:3: error: invalid conversion from 'void*' to 'int*'

クセとしてはいつでもキャストするように覚えておいたほうが都合いいから、教える方がそうしていたということなんでしょうか。ただ、 C でも void* を間接参照して値を格納しようとするとエラーになるので、型チェックの仕様はちょっと謎。もともと方言が多い処理系だからあまり深くつっこんじゃいけない部分なのかもしれませんが。


at 19:02 |
2010/06/27

802.11a/b/g/n同時利用できるWR8700N を購入

networking 
NEC Aterm WR8700N(HPモデル) PA-WR8700N-HP

ゴールデンウィークのときに実家に無線LANルータを寄付してしまったので、家には無線LAN環境がないままで不便だったのですが、発売されたときから目をつけていたWR8700Nが1万円切ったら買う!と心に決めてずっと我慢していました。

さっき不意に一万円を切っているお店を発見してしまったので、反射神経的にそのままポチってしまいました。久しぶりに届くのが楽しみな機械です。

2010/07/04追記

数日使っていますが、設定も簡単でした。うちの場合は上流がADSLなので普段はECOモード(100M固定・無線オフ)で使って、ノートパソコン使うときだけECOモードを解除するようにすると消費電力も少なくて良さそうです。11nでの無線通信速度は思っていたよりもずっと早くて驚きました。


    at 13:18 |
    2010/06/26

    glibcのdouble free検知

    c 

    C 言語についていろいろ調べていて、わざとダブルフリーするようなプログラムを書くと glibc がスタックトレースを吐いて ABORT することに気づきました。バリバリ C を使う人にとっては当たり前の挙動なのかもしれませんが、プログラミングの道には最初から Java で入ってしまったので、メモリ管理を自分でやる言語をほとんどメインで使ったことがない自分にとっては興味深い挙動でした。

    test.c

    #include <stdio.h> #include <stdlib.h> int main(){ int *i = malloc(sizeof(int)); free(i); free(i); return 0; }

    例えば上記のようなプログラムを実行すると下記のような出力になるようです。

    $ gcc test.c $ ./a.out *** glibc detected *** ./a.out: double free or corruption (fasttop): 0x09ae0008 *** ======= Backtrace: ========= /lib/libc.so.6[0x2215a5] /lib/libc.so.6(cfree+0x59)[0x2219e9] ./a.out[0x804840a] /lib/libc.so.6(__libc_start_main+0xdc)[0x1cde9c] ./a.out[0x8048321] ======= Memory map: ======== 00199000-001b4000 r-xp 00000000 08:02 53674048 /lib/ld-2.5.so 001b4000-001b5000 r-xp 0001a000 08:02 53674048 /lib/ld-2.5.so 001b5000-001b6000 rwxp 0001b000 08:02 53674048 /lib/ld-2.5.so 001b8000-0030a000 r-xp 00000000 08:02 53674260 /lib/libc-2.5.so 0030a000-0030c000 r-xp 00152000 08:02 53674260 /lib/libc-2.5.so 0030c000-0030d000 rwxp 00154000 08:02 53674260 /lib/libc-2.5.so 0030d000-00310000 rwxp 0030d000 00:00 0 003e1000-003ec000 r-xp 00000000 08:02 53674904 /lib/libgcc_s-4.1.2-20080825.so.1 003ec000-003ed000 rwxp 0000a000 08:02 53674904 /lib/libgcc_s-4.1.2-20080825.so.1 009f8000-009f9000 r-xp 009f8000 00:00 0 [vdso] 08048000-08049000 r-xp 00000000 08:02 40763512 /tmp/a.out 08049000-0804a000 rw-p 00000000 08:02 40763512 /tmp/a.out 09ae0000-09b01000 rw-p 09ae0000 00:00 0 [heap] b7f1e000-b7f1f000 rw-p b7f1e000 00:00 0 b7f31000-b7f32000 rw-p b7f31000 00:00 0 bfc55000-bfc6a000 rw-p bffea000 00:00 0 [stack] Aborted

    ちなみにこの挙動についてはMALLOC_CHECK_で調整できるようです。

    [glibcのdouble free検知 の続きを読む]

      at 23:44 |
      2010/06/26

      日本対デンマーク戦は3,283TPS

      twitter 

      W杯の日本対デンマーク戦は仕事の関係もあって熟睡していましたが、へんな時間だったにもかかわらずTwitterでの秒間Tweet数が過去最高の3283TPSを記録したようです。TPSはTweets-Per-Secondの略のようですが、コンピュータの世界にはTPSといえばTransaction Per Secondという立派な単位がすでにあって、こちらでも十分意味が通じるので別の単位を再定義するのはちょっとなぁという感じがしなくもないです。

      Twitterブログ: 大記録: パート2

      ところが、日本対デンマーク戦(日本が3-1で勝利!)での試合終了直後の数字は、NBA優勝決定戦でロサンゼルス・レイカーズがボストン・セルティックスを破った時よりも、上回りました!審判が日本対デンマーク戦の試合終了のホイッスルを吹いた瞬間、最高記録を更新し、秒間ツイート数3,283を記録しました(同時刻に開催されていたオランダ対カメルーン戦は、日本対デンマーク戦よりも6分早く終了していました)。

      それはそうと、この3,283TPSという数字はなかなかにすごいですね。Twitterのサービス自身は機能的にはそれほど難しくないですが、これだけの更新トランザクションを捌きつつ、それ以上に入ってくる参照トランザクションの処理も同時にやってのけなければならない性能要求はなかなかにシビアです。2007年時点のTwitterの負荷対策の資料には600 requests per secondと記載されているので、3年足らずでトランザクション数が5倍以上になっているんですね。今となってはアーキテクチャもだいぶ変わっていると思いますが、くじらを出しつつも良く耐えていると思います。


        at 13:58 |
        2010/06/25

        麻こころ茶屋

        curry  saitama 
        ワンダフルカリーライス - 麻こころ茶屋外観 - 麻こころ茶屋

        このあたりに似つかわしくないハンバーガーが食べられるお店があるということで、さっそく行ってきました。営業日が変則的(金・土・日・月営業)で、不定期に営業時間が変わっていたりするので、あらかじめお店のウェブで営業日を確認しておいたほうがいいかもしれません。

        運悪くお昼のいい時間に着いてしまって、開店から1順目のお客さんでちょうど席が埋まった状態だったので、、店外でだいぶ待つことになりました。席数がそんなに多いわけでもないので、開店直後に入るか、13時過ぎてからの来店を考えたほうが良さそうです。ちなみに店員さんに連絡先を伝えれば、席が空いたら連絡してもらうことも可能みたいです。

        ヘンプバーガーをオーダーするつもり満々で来たのですが、残念ながら品切れだったのでワンダフルカリーにしてみました。オーガニック系の食材を売りにするお店のようなので、メニューもそんな感じのものがたくさん並んでいます。運ばれてきたカレーのプレートは、店員さんが一品ずつ食材の説明してくれます。カレーも含めて、全般的に味付けは控えめで、素材とスパイスの味で食べさせようというこだわりが感じられる料理でした。

        店内におおきな乾燥したスイカというか爆弾(ちょうどこんな感じ→●~)のような置物があって気になったので、店員さんに聞いてみたらかんぴょうでできたスピーカーとのこと。ひょうたんのスピーカーというのは聞いたことがありましたが、かんぴょうがスピーカーにできるとは知りませんでした。インテリアも一風変わっていて、ゆっくりランチをするにはいい場所だと思います。

        [麻こころ茶屋 の続きを読む]

          at 13:40 |
          2010/06/24

          GoogleCLをインストールしてみた

          google  cli 

          コマンドラインからGoogleAPIを叩くことができるgoogleclをインストールしてみました。

          Google、コマンドラインツール「GoogleCL」を公開 - ITmedia News

          米Googleは6月18日(現地時間)、コマンドラインからGoogleのサービスを操作するためのツール「GoogleCL」をリリースしたと発表した。Google Codeのプロジェクトページからダウンロードできる。Linux、Windows、Macに対応し、利用するにはPythonとGoogle Data APIs Python Client Libraryのインストールが必要。

          初めはgooshのようなGoogleの検索のCUIなのかと思ったら、検索ではなくbloggerやカレンダー、docsにコマンドラインからアクセスすることができるユーティリティでした。

          以下、導入メモ。

          [GoogleCLをインストールしてみた の続きを読む]

            at 18:32 |

            0x1F歳になりました


            16進にするとぎりぎり10代ですが・・・・・・と、自分で書いていてむなしくなってきました。
            ということで、今日から31歳です。

            相変わらず上り坂がきつくて、いつになったら峠を越えられるんだろうと不安になることもあります。
            どちらにせよ、来年にはケリがついているはずなので、悔いがのこらないように今年は無理したいと思います。


              at 00:39 |
              2010/06/23

              CCライセンスのRoRプログラミング教科書

              ipa  ruby  mysql  opensource  courseware 

              IPAのサイトでRubyによるWebアプリケーション開発に関する教材がクリエイティブコモンズライセンスで公開されているのを見つけました。MySQLとRubyの基本的な使い方から、最終的にはRuby on Rails開発が一通りできるようになるまでのテキスト、講義ノート、理解度テストがセットになった全4編構成。内容が比較的平易に書かれていると思うので、自習用教材としてはいいかもしれません。

              情報処理推進機構:オープンソフトウェア:OSS人材育成:OSSモデルカリキュラム導入実証

              ○テーマ RubyによるWebアプリケーション開発 教育プログラム導入実証

              ○概要 OSSモデルカリキュラムから、Light Weight Languageに関する知識およびRDBに関する知識を中心に、以下の全4科目に再編した教育プログラムを開発し、導入実証を行った。

              サイトを良く見るとOSSモデルカリキュラムで公開されている教科書類は全部クリエイティブコモンズライセンスですね。IPAがこうやって税金で入門書を作らせて無償公開させているというのは知りませんでした。IPA、もうちょっとプロモーションがうまければなぁ。


                at 23:16 |

                岡崎市立中央図書館事件の当事者のまとめ

                scrape  law 

                岡崎市立中央図書館をアクセスするクローラーを書いて、実行したために偽計業務妨害で逮捕されてしまった本人自らがまとめと見解を発表するサイトを公開していたのでメモ。

                僕も被疑者が逮捕されたときからちょっと変だとは思っていました。起訴猶予ですが、結局20日間も拘留されてしまったのですね。

                このサイトをご覧の方々へ | Librahack : 岡崎市立中央図書館HP大量アクセス事件まとめ

                騒がしくなった原因は、コンピュータやネットを生業とする方々と、新聞記者を含む一般の方々との、知識のギャップにあるのではと予想しています。例えば、リクエスト33,000回という定量的な値ひとつとってみても、正反対の印象を受けたのではないでしょうか。

                たしかにこれはあるかもしれません。エンジニアであれば1日が86400秒であることはマジックナンバーとして覚えている人が多いはずです。秒間1件のアクセスをしたとしても大量アクセスをした積算時間は9時間ちょっとに過ぎず、1日あたりのアクセス時間は1時間にも満たないことや、そのようなアクセスで毎日のようにサーバを再起動しないといけない状態にウェブサーバがなっていたという事実は新聞には載っていないですからね。

                このあたりなかなか難しいところがありますが、アクセス社団等の措置をとらずにいきなり逮捕されたというのはやっぱり疑問ですね。そういえばウチのサイトでも楽天ファストモバイルサーチが秒間10件アクセスしてくるということをやらかしてくれたという事件があったなぁということを思い出しました。


                  at 21:48 |
                  2010/06/22

                  SSH総当り攻撃が増加?

                  ssh 

                  SSHへのブルートフォース攻撃が増加しているようです。

                  SSHブルートフォース攻撃が増加、SANSが対策を紹介 - ITmedia エンタープライズ

                  米セキュリティ機関のSANS Internet Storm Centerは、SSHを狙ったブルートフォース攻撃(ユーザー名・パスワード総当り攻撃)が急増しているようだと伝えた。多数のネットワークが攻撃に遭っているとの報告がSANSに寄せられているという。SANSによると、攻撃元のIPアドレスがまちまちな状況などから判断して、攻撃はボットネットから分散して仕掛けられているもようだという。このような攻撃では、「たった1人でも弱いパスワードを使っているユーザーがいればセキュリティを破られ、さらなる攻撃を招く恐れがあるため、この機会に改めて認識を高めておいた方がいい」と忠告している。

                  ちなみにSANS ISCの元記事は「Distributed SSH Brute Force Attempts on the rise again」みたいです。

                  僕の管理下にあるサーバについてはそれほど攻撃が多くなっているようには感じないんですけどね。防御については5年前に導入したipt_recentを使った方法(エヴァンゲリオンにかけて、666プロテクト.shと呼んでいます)を使っていますが良く効いています。

                  [SSH総当り攻撃が増加? の続きを読む]

                    at 22:37 |
                    «Prev || ... 1023 · 1024 · 1025 · 1026 · 1027 · 1028 · 1029 · 1030 · 1031 ·... | | Next»