タグ

ブックマーク / w0.hatenablog.com (37)

  • J

    Cで汎用ライブラリをつくってると、void*の嵐になって型安全が無くなると思う。 ちょっとした手間で、それをなんとかする話。 struct varray { int nelem; void *values; }; #define VSET( t, a, i, e ) (((t*)a##t.values)[i] = e) #define VDECL( t, name ) struct varray name##tこんなふうにして。 int main() { VDECL( int, a ); VSET( int, a, 0, 4 ); }こんなふうにする。 変数宣言がちょっとキモくなるのと、配列アクセスが、キモくなる。のと、配列アクセスするときに型の名前がいる。 のだけど、 int main() { VDECL( int, a ); VSET( float, a, 0, 4.0 ); }こうい

    J
  • J - SEA & FSIJ 合同フォーラム 2006年12月

    というわけで、前回の経験を活かして帰ったらすぐ書くのだった。(雑談忘年会のが結局書いてないままだし…) 6人だったという。なんて贅沢な。 とりあえず、単語だけメモったので、それをもとに。 メンテナが増えた Wikiの内容が大変充実 テスト環境が充実してます メモリ使用量も自動でテストし続けてるらしい。たまーに、メモリ使い過ぎるパッチがあるけど、それの早期発見に役立ってるとか。(今見つけた→http://gcc.gnu.org/benchmarks/ 色々ベンチマークしてんだなー) section anchor(http://gcc.gnu.org/wiki/Section%20Anchor%20Optimisations) 複数の変数をまとめて、一個のシンボル + 複数のオフセットにする。GOTのエントリが減る。MIPSとかだとエントリが減ると大変助かる…らしい。 CILを生成するバックエ

    J - SEA & FSIJ 合同フォーラム 2006年12月
  • J - thisとメソッド

    PS3売ってた!けど、目の前で無くなってしまった。 生姜おろそうと思ったら、おろし金がなかった。 昔、おろし生姜使ったおぼえがあるので、どっかにあると思ってたんだけどなー。以前は、チューブのやつを使ってたらしい。 しかたないので、なんか代わりになるものを捜したところ、でこぼこしゃもじが使えそうだったので、やってみたら、ギリギリなんとかなった。若干つらかったけど。 というわけで、でこぼこしゃもじは、おろし金のかわりにもなる大変すばらしい物体ですという話でした。 しかし、そろそろ、おにいちゃんとかいう年齢じゃないよな!キモい死ねよ。 http://www.hondanojo.com/emshamoji.html ふむ。まあ、210円だったら、なんかほほえましいといえる範囲かな… また僕はCでハッシュテーブル書いてるやん!ハッシュテーブル書くの何回目だろうか。 どう考えても、ハッシュテーブルとか

    J - thisとメソッド
  • 2006-11-26

    つまり、 template < typename Arg > class N { typedef Arg type; }; N<int> // ← この瞬間は、関数に引数をbindしただけ、というところか。 N<int> // ← 引数のbind :: // ← 関数呼び出し type // ← 結果参照eval_ifは #include <boost/bind.hpp> #include <boost/functional.hpp> int loop( int n ) { return loop( n-1 ); } int ret0( ) { return 0; } template < typename Then, typename Else > typename Else::result_type eval_if( bool b, Then t, Else e ) { if ( b

    2006-11-26
    oto-oto-oto
    oto-oto-oto 2006/11/27
    boost bind
  • 2006-11-25

    さむいわ。 俺ルールとして、「constなメンバはpublicにしてもよい」というのがある。 class Nanika { int var; public: int const cons_t; };そんなことしてメンバ晒せば、結合度上がっちゃう、という指摘はもっともなんだけど、getXXXとかのアクセサを作っても、それはほとんど一緒なはず。 一緒じゃない点に、アクセサを使えば、将来、その値が毎回再計算しないといけないとかになった場合に、変更が外部へ及ばなくてよろしい。 class Nanika { int var; int const cons_t; public: int getConst() const { return cons_t; } };こうしとけば、 class Nanika { int var; int const cons_ts[10]; public: int getC

    2006-11-25
  • J - 関数型言語はC言語よりも高速

    23 やべーやる気出ねー。 一週間ぐらい放置してたらやる気出るかと思ってたんだけど、全然何もしてないのだった。 というわけで、リハビリがてらなんか書こう。関数型言語がC言語よりも高速だという話。 http://d.hatena.ne.jp/w_o/20050924#p2 ここらへんの話の関連。C言語では、操作が、「メモリを変更する」という具体的なものになってしまうので、最適化が難しいという話。 次のコードを考えよう。 struct stack { char *buf; int pos; }; void push( struct stack *stk, char v ) { stk->buf[stk->pos] = v; ++stk->pos; } void pop( struct stack *stk ) { --stk->pos; }; void nop( struct stack *s

    J - 関数型言語はC言語よりも高速
  • J - Binary Hacks

    あいかわらずやるきでないのだけどそれならまずねるべきだとおもった。 カテゴリ分けが適当すぎる。 のはいいとして、あんまり何もやってないので、最近読んだの感想でも書こうと思ったのだった。 最近C++にかぶれてたので読んだ。 C++関連のは役に立つかどうかはともかく、読んで面白いが多いのでよいですな。 しかし、うちにあるC++は偏りすぎじゃないかとおもう。 Exceptional C++ Style (Exceptional C++は無い) More Effective C++ (Effective C++は無い) C++設計と進化 (PLC++とかは無い) Effecitive STL (STLはこれだけ) Modern C++ Design (おもにネタ) いや、うん、ネタ的に面白そうなやつばっかり読んでたら、なんか… (More…は More じゃないほうがおもしろいかも。あれ

    J - Binary Hacks
    oto-oto-oto
    oto-oto-oto 2006/11/07
    Binary Hacks
  • J (2006-08-08)堕落したCプログラマのレベル10

    「偽札対応済み」って書いてある両替機。 川口市立中央図書館屋の上にある図書館。に行ってきた。特に何もないけど。あと、マイコンショップ川口つぶれてた。 ある程度能力を持ってるなら、成果を残せるか残せないかは自信を持ってるか持ってないかの違いだけかもしれないというような話。 最近思うのだけど、使えない奴(例えば、僕のような)の特徴として、「どうせ自分が何をどうやっても、何もどうにもならない」的な思考があると思う。 例えば、上の一行で言うと、「使えない奴(例えば僕」とか、そういったような思考。 こういった思考は、いったん根付いてしまうと、循環するので、なかなかやめられない。「どうせ自分は何もできないんだ→何もできないから何もやらない→何も成果を残せない→どうせ自分は何もできないんだ」とかいった感じで。 矯正しようと思っても、「いや、こういう性格だから、矯正は無理だし。」と、いう思考になってし

    J (2006-08-08)堕落したCプログラマのレベル10
  • スタックマシンで学ぶ template expression - w_o’s diary

    例は考えてあったんだった。template expressionを使えるようになりましょうという話。 template expressionが使えるようになれば、今日からあなたも大量のエラーメッセージとお友達になれること間違いなし! (ネタ以外に、boost::lambdaのエラーメッセージが読めるようになるとかの効果があるかもしれん) もうちょっとまともなのを読みたい人は http://homepage1.nifty.com/herumi/prog/prog81.html こちらのほうがよいかと思いますよ。 emit_bytecode( ( x + y + 3 ) )とかやると、 LOAD_VAR 0xnnnnn LOAD_VAR 0xnnnnn ADD LOAD_CONST 3 ADDとかって出力されるプログラムを作ってみ…と見せかけて、実際には無理なのでちょっと妥協して、 emit_

    スタックマシンで学ぶ template expression - w_o’s diary
  • 2006-10-30

    忘れたような何もなかったような。あー。そう。ブログラマになろう! http://www.itmedia.co.jp/news/articles/0610/25/news070.html うーん。もし、Jが会社バレとか面接官バレとかしたらどうなるかは際どいところのような気が。 面接官(以下、面)「あなたのブログ拝見させていただきました。」 w「ブログじゃないと書いておいたはずですが?」 面「めっちゃ喧嘩腰やん!」 w「…」 面「ところで、すごくおっぱいが大きいけど、得するの?」 w「いや、おっぱいなんて無いですが?」 面「ふーん。なるほど。ぺたんこ…と」 w「いや、ぺたんこて」 面「ふむふむ…ところで、ぺたんこ属性はありますか?」 w「面接で属性を尋ねるのはセクハラにあたりますよ」*1 面「いや、でも、ほら、ブログに…シエスタよりもルイズのほうがよいって…」 w「書いてないです」 参考 まあ

    2006-10-30
  • 2006-10-21

    E17って生きてたんだね!ていうことで、WMをE17にしてみる。 E17がそこらの派手WMと一線を違えてるのは、borderの設定に、borderlessとかpixelとかそういうのがある点ではないかと!これ、壁紙なしにして、シェルフ(ドックみたいなやつ)消して、ボーダー無しにして、影無しにしたら、とてもアレね! http://shinh.skr.jp/m/?date=20061019#p14 いまのところ不安定とかではないです。よく動いてます。 どう見ても説明が足らなすぎる。情報量が皆無なのだった。 http://www.enlightenment.org/Enlightenment/Get_Enlightenment/Build_Notes/ まず、ここ見て。 http://enlightenment.freedesktop.org/ 必要なものをここからダウンロード。軟弱じゃない人は

    2006-10-21
  • 2006-10-18

    http://morihyphen.hp.infoseek.co.jp/files/go-.tar.gz 名前はてきとう。 READMEすら書いてねー。 go-はLispモドキC++なんちゃらかんちゃらです。libgaucheがいります。 int main(){ using namespace goshpp; Scm_Init( GAUCHE_SIGNATURE ); init_goshpp(); Symbol a("a"); Symbol b("b"); Symbol c("c"); write( eval (_(lambda >> (a>>b) >> (plus>>a>>b)) >> 3 >> 4) ) ; write( "\n" ); write( eval (let >> (_(a >> 4) >> (b >> 5)) >> (plus >> a >> b)) ); write(

    2006-10-18
  • 2006-10-16

    なんかもう16日だなぁ… 捕鯨捕鯨 http://alohakun.blog7.fc2.com/blog-entry-497.html 公開すると、 よくわからないユーザーがソース見る ソースについて質問してくる ソースコードはサポート外です サポート外てなんじゃそりゃボケェてめぇのサポートはその程度かー というような状況になってしまう人もいるのかも。 企業とかが、ソース公開しないのって、技術流出よりも、そういう状況を回避するためにやってるような気がする。 ソースコード弄って、カスタムバージョン作れます、となったら、そのカスタムバージョンのサポートはどうなるのか。とか、そういう話になっていって、面倒だから、公開しないほうがよい。とか、そんな感じ。 いや、僕の書くコードは、一発ネタだから大丈夫だろうけど。 まあ、それはいいとして。 なんだったっけ。僕がソースコード公開してるのは、なんか、まあ

    2006-10-16
  • 2006-10-12

    忘れた。 どうも、知識があいまいなので、若干まとめておく。間違ってたら、適当に指摘していただけると助かります。 Windowsの場合。 Windowsでややこしいのは、リンクに使うオブジェクト(COFFとか)と、.exe、.dll(PE)のオブジェクトの形式が違う点。(ヘッダが違うだけ?中身一緒?) 共有ライブラリを直接リンクできない。(ような気がする) なので、.dll→.def→.lib てな感じで、一旦DLLがエクスポートしてるシンボルを取得したあと、それをもとにオブジェクトファイル作って、そのオブジェクトをリンクする。 .libの形式が謎。コンパイラ依存かも。 tccは直接.defを読んでるような気がするんだけど、どこで処理してるかわかんない。あとで調べる(←未来) 実行時のリンクは誰がやってるかわからないという。あとで調べない。 実行時の関数呼び出しにDS:とかが見えたので、セグ

    2006-10-12
  • C++ for Haskeller

    http://haskell.g.hatena.ne.jp/mr_konn/20061006/1160138831 Haskellから入った人には、cinとかcoutとか微妙すぎてよくないだろ、と、思ったので、適当に。 対象読者は、Haskellわかるし、C++もわかる人(意味ねー)。ネタを理解できる人です。 C++とは C++とは、以下のような特徴を持ったプログラミング言語です 参照透明(!) 出現評価(occurrence evaluation) (などといういかがわしい単語をつくる) パターンマッチできる 全く直感的でない構文 IOモナドを書くための大量のsyntax sugarがある 説明していくと長くなるので、それぞれ、おいおい必要になったときに説明するようにします。 C++の型 C++には、次の型があります。 整数 真偽値 連想配列 まあ、おいおい説明。(はやくも飽きてきた)

    C++ for Haskeller
  • J - C++の素晴らしさ

    SOFSはC++で書いてた。C++といえば、僕の趣味は、ときどき、C++の素晴らしさについて考えることなんだけど、そういう話。 まず、C++に触ったことないのに、どっかの誰かの受け売りで、「C++はキモくてヤバい」というような考えを抱いてる人がいたとすれば、それは、まあ、つまらない人生を送ってるよね、というような話なのである。 確かに、C++の素晴らしさは、大体にして時間の無駄なので、わざわざ時間を割いて勉強するものではないと思うのだけど、C++は、憎むべき点が山のようにあるのと同じように、愛すべき点も他の言語の愛すべき点を++したぐらいはあるのだ! どっかのだれかの受け売りでC++に全く触らないのというのは、非常に正しいのだけど、間違っているのである!STL極めて、Boost極めて、その後で、「やっぱり、まともな構文とまともなコンパイル時間と、まともなエラー表示が欲しいわ」と、そこまで至

    J - C++の素晴らしさ
  • 2006-09-27

    コード書く。 なんかやろうとして飽きた↓ http://morihyphen.hp.infoseek.co.jp/files/sexpr-spirit.tar.gz 飽きたのを置いとくというのもアレなんだけど… まあ、つまり、boost::spiritすばらしいです。というような。 integer = int_p[ integer.val = construct_<TaggedVal>(arg1) ]; symbol = (+(alpha_p | ch_p('-') | ch_p('_')))[ symbol.val = phoenix::bind(&symval)(arg1,arg2) ]; list_elem = (sexp[list_elem.val = arg1] >> list_elem[list_elem.val = construct_<TaggedVal>(list_ele

    2006-09-27
  • DEC - w_o’s diary

    DECは「3分で締めきった」っていう話を見て、その存在を知ったのだった!(確か12:30くらい) もうなんていうかアレだぜ! というわけで、ひとりDevelopment Environmentなんちゃらの関係で(というほど、最近デベロップしてないんだが。)俺の.emacsを公開だ! ;;; 日語環境設定 (set-language-environment "Japanese") (set-default-coding-systems 'euc-jp) ;;; IMEの設定 (iswitchb-mode) ;; ;;; カーソルの設定 ;; ;; (set-cursor-type 'box) ; Meadow-1.10互換 (SKK等で色が変る設定) ;; ;; (set-cursor-type 'hairline-caret) ; 縦棒キャレット ;;; マウスカーソルを消す設定 (gl

    DEC - w_o’s diary
  • 2006-08-29

    というわけで、大阪から帰ってきた(のは大分前) あんまり休みすぎると、家から、IKITERUKA(原文ママ)確認するメールが届くようになるので、そうならない程度に…って同じこと前書いた。 なんとなく、ねえ、まあ、最近調べものするたびに、「こんなこと調べてても仕事の役に立たんのよなー」って、そればっかり考えてて、なんか、立派な社会人にも、研究者にもなりそこねた駄目っぽい感じがしてたので、そういうの考えないようにしたくなったのだった。休んでたのは、そこらへんの影響。 追記: いや、ちょっと待てx86だと動かないような。 追記: やっぱ動かない…。x86-64とかだと動くかも。 http://d.hatena.ne.jp/yupo5656/20060828/p1 http://d.hatena.ne.jp/shinichiro_h/20060829#1156788161 負けてられないので(何の

    2006-08-29
  • 2005-12-17

    二日続けて飲んでしまったよ。しかも、おとといは、「終電に間に合わなくて帰れないサラリーマン」ソリューションの実現に成功してしまうことに。 30歳前後に見えるらしい… メールは早く返すほうが良い。できるハッカーは2分で返事(らしい) 二次会は回避。(カラオケに行ったかどうかは知らない) あまりにもネタが思い付かないのでHaskellを勉強することに いくつか、Haskellで挫折しないようにする方法を見つけたので書いておく Monadを理解しない → 変に気合い入れてMonadを理解しようとするとそこで挫折します IO a の a を取り出すには do n <- nanika こんな感じ IO() 型が欲しいときはとりあえずreturn () → 何もしないmainが書けなくて悩んだりしなかったですか!? あんまり細かいことを気にしない → 気にしたら挫折します 名前が短かくてなんかわからな

    2005-12-17