タグ

programmingに関するtgkのブックマーク (22)

  • C/C++のとんだ落とし穴(ハマっちまったよ) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    とあるC++コードがコンパイルエラーするんですが、原因がまったく分からなかったんですよ。「そんなバカな?!」という感じ。しばらくハマってしまいましたよ。 結局、C++でもCでも同じことが起きることが分かりました。次は、僕が遭遇したのと同じ現象が起きるC言語のソースコードです。 // -*- coding: sjis -*- // strange.c struct ThreeNums { int x; // 負の数も指定可能 int y; int z; }; int total(struct ThreeNums nums) { return nums.x + nums.y + nums.z; } コンパイルすると: $ type tdm-gcc tdm-gcc is aliased to `/c/Installed/TDM-GCC-64/bin/gcc.exe' $ tdm-gcc --ve

    C/C++のとんだ落とし穴(ハマっちまったよ) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    tgk
    tgk 2016/04/18
    「、C/C++の単一行コメントは、末尾のバックスラッシュによって行継続が出来る」「誰が使うんだよ、そんな機能」
  • 実行中のプログラムの進捗度を手っ取り早く確認したい - その手の平は尻もつかめるさ

    完了するまでに結構時間がかかるプログラムを実行している時,そのプログラムの進捗度を確認したくなることがままあると思います.ほんとに動いてんのかお前,みたいな. そうした時に考えうる最も簡単な方法は,こんな感じで進捗度を標準出力に流してしまうという方法でしょう. (1..100).each do |i| # 例えばここで何らかの重い処理をする (下のsleepはその「何らかの処理」の例) sleep 0.1 # ここで進捗を表示 (プログレスバーみたいなもっとリッチな感じでも可) puts "#{i}%" end 簡単なものだとこれで良いでしょうが,途中で端末のセッションが切れると「アッアッ」という感じになったり,そもそもプログラムの実行に際して端末が割り当てられいるとも限らないし,というか時間のかかるプログラムがその処理中ずっと端末を占領しているのはつらいので別の方法が欲しかったりします.

    実行中のプログラムの進捗度を手っ取り早く確認したい - その手の平は尻もつかめるさ
    tgk
    tgk 2014/11/26
    $0 = "#{orig_program_name}(#{i}%)" ...でpsでチェックするというアイデア
  • DMC(Dynamic Markov Coding)のによるデータ圧縮プログラムを書いてみた - 遥かへのスピードランナー

    最近Managing Gigabytes勉強会に参加しているのでせっかくなので、このに載っているアルゴリズムを使ってプログラムを組んでみました。 今回実装したのは、「2.5 SYMBOLWISE MODELS」の後半で説明されている「Dynamic Markov Coding(DMC)」です。書籍の他に、元論文「G. Cormack and R. Horspool, "Data compression using dynamic Markov modelling,"」を参考にしました。 実装はC++で行い、ソースはgithubに置きました。(CentOS 5.2+gcc 4.1.2で動作確認済) http://github.com/thorikawa/MG/tree/master/dmc 以下、アルゴリズムの概要と実装上の工夫などをまとめてみます。 意見・指摘などは絶賛大歓迎です。 DM

    DMC(Dynamic Markov Coding)のによるデータ圧縮プログラムを書いてみた - 遥かへのスピードランナー
    tgk
    tgk 2009/08/09
    力あるなあ
  • Martin Fowler's Bliki in Japanese - 流れるようなインターフェース

    http://www.martinfowler.com/bliki/FluentInterface.html 2005/12/20 数ヶ月前、Eric Evansと一緒にあるワークショップに参加した。 そこで彼がとあるインターフェースのスタイルについて語ったのだが、 我々はそれを「流れるようなインターフェース(fluent interface)」と名づけることにした。 一般的なスタイルではないが、もっと評価されるべき代物だ。 おそらく例を示したほうがいいだろうから、そうしてみることにする。 一番簡単な例は、EricのtimeAndMoneyライブラリだろう。 時間の間隔を作るには、通常は、以下のようにする。 TimePoint fiveOClock, sixOClock; ... TimeInterval meetingTime = new TimeInterval(fiveOClock,

  • XXXUtils の乱用をやめる - Calendar 編 - Aufheben - GLAD!! の日記

    標準のライブラリが使いにくいとき、つい XXXUtils のようなクラスを作ってしまいがちです。 例えば、悪名高き java.util.Calendar。来年の2月15日が何曜日か調べようと思ったら、次のようなコードを書かなければなりません。値の取得も設定も面倒で、なぜか月が0始まりになっています (歴史的な制約?)。 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 1); // 2月は month = 1 calendar.set(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 15); // 文字列に変換する場合は、DateFormat を使用する。 DateFormat df = new SimpleDateFormat("E

    XXXUtils の乱用をやめる - Calendar 編 - Aufheben - GLAD!! の日記
    tgk
    tgk 2009/04/09
    setterでthisを返すと流れるようなインターフェースになる
  • Graphviz チュートリアル

    Graphviz というツールは、 「DOT 言語」という言語で書かれたグラフ表現を GIF や PNG などのファイルフォーマットに変換してくれるシステムです。 家のホームページは http://www.graphviz.org/ です。 ここでは、Graphviz のインストールと使い方についてまとめてみました。 なお、ここでインストール/使用する Graphviz は version 2.4(2005-08-01 現在)です。 また、インストール先の環境は Cygwin です。 ダウンロードとインストール 簡単なサンプル グラフ全体の属性 ノードの属性 エッジの属性 その他の事項 レコード サブグラフ 無向グラフ 形の一覧 トップへ ↑

    tgk
    tgk 2009/03/19
    グラフの画像作成
  • BCDとは 「BCDコード」 (Binary Coded Decimal) ビーシーディー: - IT用語辞典バイナリ

    BCD フルスペル: Binary Coded Decimal 読み方: ビーシーディー 別名: BCDコード , 2進化10進法 , 2進化10進数 BCDとは、数値の表現方法の一種で、2進数の値を4桁用いて、10進数における1桁分の値を表現する方法のことである。 2進数を4桁使用すると、0から15まで全16通りの整数が表現できる。BCDでは、このうち0から9までを使用して、10進数の1桁分を表現している。10進数において桁が1つ上がるごとに、BCDでは4桁増えることになる。 例えば、10進数の「9」は2進数で「1001」と表し、同じく10進数の「5」は2進数で「0101」と表現する。そこで、10進数の「95」はBCDでは「10010101」として表すことができる。

  • リード・コピー・アップデート - Wikipedia

    リード・コピー・アップデート(read-copy-update、RCUと略記)とは、オペレーティングシステムにおいて一種の排他制御[note 1]を実装する同期機構であり、リーダー・ライターロック(英語版)の代替手段として使われることがある。参照において待ち状態が生じず、極めてオーバーヘッドが低い。しかしRCUにおけるデータ更新は、既存の参照者のために古い版のデータ構造を保持しつつ行うため、時間と空間(メモリ)をより多く必要とする。古い版のデータ構造は、既存の参照者が全てアクセスを完了した後で回収される。 概要[編集] RCUでは「参照側クリティカルセクション」という概念があり、通常 rcu_read_lock() と rcu_read_unlock() で挟まれた部分がそれにあたる。参照側クリティカルセクション内にない文は「不活性状態」と呼ばれ、RCUで保護されたデータ構造への参照を保持

  • アラン・ケイ - 「ソフトウェア工学」は矛盾語法か? [邦訳]

    アラン・ケイ Is “Software Engineering” an Oxymoron? By Alan Kay (訳注: 以下の文章は、http://d.hatena.ne.jp/sumim/20080806/p1 に紹介されていたアラン・ケイの文章 -- Is “Software Engineering” an Oxymoron? -- を訳したものです。原文もsumim さんのサイトからダウンロードしました。最初に書かれたのは 1999年から2000年ごろと少し古いので注意してください。日語で矛盾語法(oxymoron)とは聞き慣れない言葉ですが、ジーニアス英和大辞典によると an open secret (公然の秘密) や、living death (生き地獄) のような矛盾する二つの単語を組み合わせた熟語の事を言うらしいです。) 真のソフトウェア工学はまだ未来のものだ。一年と

    tgk
    tgk 2009/02/01
  • 正規表現に見切りをつけるとき

    Perl, Rubyなど手軽に使えるプログラミング言語に慣れてくると、あらゆるテキストデータの処理に正規表現(regular expression)を使ってしまいがちです。 けれど実は、正規表現の処理能力を超えるフォーマットというのが存在します。その典型的な例が、XMLやJSONのように、入れ子になったデータフォーマットです。

  • dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年5月時点の調査。

  • signalについて(前篇)

    はじめに シグナルはUNIXなどのOSにおける非同期イベントを通知する仕組みですが、「最古のプロセス間通信」「SysV系とBSD系で動きが違う」「昔のシグナルを使うと汎用性が無くなってしまう」「スレッドと相性悪し」といった理由からか、私の経験上、業務系アプリケーションではあまり使われていません。たまに使っているものを見ると、誤った使い方をしているものが多かったりします。 ところがこのシグナル、いろいろ調べていくと意外と奥が深く、有用に使えるのに、以外と情報が少ないことがわかりました。 今さらな感もありますが、ここでは私が知っている事や、調べた結果、今までの経験から得た知識などをまとめてみたいと思います。 ただし、環境によって動作が違うことが想定され、また一部のプログラムは環境に対し重大な影響を与えてしまうものもあります。プログラム等の使用に際しては十分に注意して頂き、ご自身の責任の範囲で行

    signalについて(前篇)
  • アルゴリズムコンテストの挑み方 (2) - d.y.d.

    21:25 08/10/27 論文 の締め切り終わったら頑張った自分へのご褒美(笑)であれとこれとそれをやる時間をとるぞー! ……みたいなことを思っていたはずなのに、いざ提出し終わると気が抜けて何一つやる気がでない問題。 困った困った。 ナイチル たくさん人がいらしてる今のうちに 「ナイトメア☆チルドレン」新装版 面白いよみんな買おうぜ! などと書いてみる。 自分のマンガの趣味はわりと平凡だと思ってて、 流行ってるマンガは大抵好きだし自分の好きなのはだいたい流行ってるし。 なのになぜだか藤野もやむ作品だけは唯一の例外で、とっても不思議でならない。 100回くらいアニメ化されてて然るべきだと思う。 何回か書いてますがとにかく最終話が好きで、 そこまでのシナリオが一気に集まって一つ一つのセリフが3倍の重みを持つように収斂していく幕引き。 あれは良い。 17:12 08/10/24 アルゴリズム

    tgk
    tgk 2008/10/25
    「パラメータ1個小さくした問題を先に解いておけば、そこから簡単に元の問題の答えも求まるんじゃない?」と考えてみる
  • ホワット・ア・ワンダフル・ワールド いろいろあって,就職することになりました

    2008 年 11月 21 日付けで,京都マイクロコンピュータ株式会社に入社することになりました. 「デバッガは神の手 (社長談)」 ということで,ハードウェアとソフトウェアの全てを掌握し支配するデバッガ技術を基幹として,ソフトウェア開発の世界を改革していけたら良いなと思っています. 社長の名言集 (ちなみに KμC は,社長が一番コードを書いてるという変な会社です) 「パートナー ※ が無い環境ではもうプログラミングできへんわ.逆に言うと,パートナーさえあれば,OS はなんでもかまへん.emacs 使う人が,emacs の中で全部やるのと同じやな」 (※ KμC が販売しているデバッガ.一番 KμC のデバッガを使っているのは,KμC の社員です) 「優れたデバッガがあれば,コードの書き方が変わる.うちの会社のコードはかなり独特で,普通のプログラマは追えないしわけわからんと思う.だけど,

    tgk
    tgk 2008/10/05
    「みんなまだ,あまりデバッガの可能性に気付いて無い」
  • 山口家の逆襲->perl-解説->クロージャ

    テーブルゲームで遊ぶなら人気No.1! ベラジョンカジノのオンラインテーブルがオススメです! 世界中のカジノは、運試しにゲームをし、人生を変えてしまうようなジャックポットを引き当てる様々なタイプの人間たちであふれている。カジノに来る人間のタイプは大方、予想可能で、いくつかのグループに分けられる。 タバコ好き TVシリーズ『Xファイル』に出てくる ” 煙草を吸う男” はミステリアスだが、カジノのスモーカーには謎めいたところなどない。彼らはただひたすらにタバコを吸い、ウエイトレスが灰皿をせっせと片付けなければならないだけだ。 タバコ好きたちは彼らの側を通りすぎる人たちとは違い、タバコの煙の刺激に慣れている。さらに、特に理由がなければ、誰も彼らの側にとどまりたくはないのだが、しょっちゅう咳をしては周りの注目を集めている。 酒飲み タバコと酒は切り離せない存在だ(もちろん、一概には言えない)。スロ

  • Katz's Site

    文字が小さくて見づらいとお感じの方へ ブラウザのメニューを操作して 文字のサイズを大きめに設定してください。 そうしても問題無く表示できるように作成しております。 更新は、現在、月に1回あるかどうか。 遅いです… このサイトはとにかく軽い事を目指しております。 そのため絵などは極力貼らないようにしています。 これは決して人の絵心の無さを暴露しない為の措置ではありません(^_^;) 背景色も黒にしてなるべく目に優しいページを目指しました。 見栄えの良さ (派手さ?) との兼ね合いもあり、 なかなかうまくいっていないのですが…。 その為に独特の雰囲気になってしまった感があります。 全体的に何となく怪しい印象になってしまいました。 中身は決して怪しくありません。 御検分の上、是非足跡を残して下さい。 励みになります。 小難しいお話を一席。 このページはXHTML適合文書です。 サイトタイトルや

  • Katz's Site - 算譜入門: オートマトンの基礎

    以上のような図や表によって象徴される、 状態とその間の遷移が定義された構造を 「状態機械」 と呼ぶ。 各々の状態の意味は考えない。 全く考えないのかといえばそうでもないのだが、 少なくとも理論上は状態として何を持ってきても構わない。 健康状態のように明らかな意味を持つモノを状態とする事もある。 何が何だかさっぱりわからないモノを状態とする事もある。 スゴロクの桝目のようなモノは後者の例と言えよう。 問題を解く為に最も便利なモノを状態として定義すればよい。 少し変わった状態機械の使用例: 虎と羊を連れた人が野菜を運んでいた。 ある所で川を渡る必要が生じた。 舟が一艘あったがとても小さい。 その人が乗るとあとは虎か羊か野菜の内のいずれか一つしか乗せられない。 しかし人が居ない所で虎と羊を一緒にすると虎は羊をべてしまう。 同様に人が居ないと羊は野菜をべてしま

  • Martin Fowler's Bliki in Japanese - 言語ワークベンチ

    以下の文章は、Martin Fowler による 「Language Workbenches: The Killer-App for Domain Specific Languages?」 の日語訳である。 ソフトウェア開発における新しい考えの多くは、実は古い考えの新しい組み合わせ方です。この記事では、その新しい組み合わせ方のひとつ、私が「言語ワークベンチ(Language Workbenches)」と呼んでいるツールについて説明します。これは、現在広まりつつある考え方で、たとえば、Intentional Software、JetBrainsのMeta Programming SystemMicrosoftのSoftware Factoriesなどが例として挙げられます。これらのツールは古い開発スタイルを採用しており、私はこれを「言語指向プログラミング(language oriente

    tgk
    tgk 2007/09/06
  • 理解することが書き直すことを意味するとき

    Jeff Atwood / 青木靖 訳 2006年9月18日 開発者に時間をどう使っているか聞いたなら、彼らはほとんどの時間コードを書いていると答えるだろう。 しかし、ソフトウェア開発者が時間を実際どう使っているか観察したなら、ほとんどの時間をコードの理解に使っていることがわかる。 ピーター・ハラムがこのことについて説明している。 どうしてコードを新規に書くより5倍もの時間をコードの修正に使っているのか? それは新規のコードはほとんどすぐに古くなるからだ。何か新しくコードを書く。コーヒーを飲んで一服する。すると突如として、コードは古いコードになっている。できたてのコードはせいぜい初期のデザインしか反映していないが、デザインの多くの部分は前もって現われるものではない。開発プロジェクトの多く が反復的開発手法を使っている。デザイン、コーディング、テスト、繰り返し。たくさんの繰り返し。すべてが新

    tgk
    tgk 2007/08/01
    何か大変重要なことが書いてある
  • 中里一日記: エズモンド・ピット『Javaネットワークプログラミングの真髄』(SoftBank Creative)

    エズモンド・ピット『Javaネットワークプログラミングの真髄』(SoftBank Creative) 書を全人類に薦める。 著者は物のプログラマであり、しかも超一流である。Javaともネットワークともプログラミングとも縁がない人でも、書は必読である。 以下29ページから引用する。 TCP/IPプロトコルとBerkeleyのソケットAPIに関してもっと驚くのは、両者を結び付ける公式のドキュメントがどこにもないことです。つまり、ソケットAPIの何がプロトコルの何に対応するのか、どんな状況で、プロトコルのどの成分をAPIのどの部分が発行したり受け取ったりするのか、…これらが未だにまったく公式に明確になっていないのです。 BSDソケットのはあり、TCP/IPのはある。しかし両者を対応させて書いているはなかった。その理由は、これなのだ。この事実を教えてくれたは、いままで一冊もなかった。

    tgk
    tgk 2007/05/14
    こういうこともあるのだなあ