タグ

Programmingに関するshozzyのブックマーク (135)

  • オブジェクト制約言語(OCL)の基本

    今回はUMLよりOCL 今回は、UMLではなくUMLモデルを補助しそのモデル要素にかかわる制約を正確に表現することを目的に導入されたOCL(Object Constraint Language:オブジェクト制約言語)について簡単にご紹介しましょう。 なぜUMLだけでは足りないのか 皆さんの中にはUMLさえあれば、オブジェクト指向でモデルを完全に記述できるのではないかとお考えの人も多いでしょう。実際、UMLを利用することで、自然言語のあいまいさを減らして業務領域やシステム化対象の構造をより正確に表現できたり、逆にJavaで書いた何万行ものソースコードそのままよりは、それらのコードの構造や振る舞いを抽象化してビジュアルな全体感を持つのに有効そうと実感されているエンジニアの皆さんは多いと思います。 しかし、ビジュアルなモデルだけでは表現できない内容が普通に存在します。それは、クラス図がインスタン

    オブジェクト制約言語(OCL)の基本
  • まつもと直伝 プログラミングのオキテ 第13回 プログラムを高速化する:ITpro

    プログラムの高速化はプログラマにとって永遠の課題です。しかし,そこには知られざる暗黒面が隠れています。そもそも高速化に意味があるのかを調べなければなりません。次に,どの部分をどの程度高速化するのかが重要です。アルゴリズムの効率にも目配りが必要です。 コンピュータの処理速度は驚くべき勢いで向上しています。現在私たちが使っているパソコンは一昔前のスーパーコンピュータをしのぐ性能を備えていますし,半世紀前に登場したばかりの計算機と比較すると数十万倍の性能に相当します。 このように高速なコンピュータを持っているにもかかわらず,人間の欲望は限りがないものです。プログラムの実行速度はプログラマにとっての永遠の課題のようです。プログラムを高速化していると,「そんなに急いでどこに行く」という気になることもあります。 今回は,プログラムの高速化にまつわるさまざまな「秘密」と「限界」,そして「戦略」について解

    まつもと直伝 プログラミングのオキテ 第13回 プログラムを高速化する:ITpro
    shozzy
    shozzy 2007/09/28
  • shi3zの日記 - Webプログラマーがデュアルディスプレイで作業する理由

  • COBOL屋の呪縛 - masayang's diary

    今回の日出張ではいくつかのプロジェクトの状況をみてきた。で、思ったこと。 「COBOL時代のデータ構造を引きずることで、生産性や保守性が落ちている」 フラグだらけのマスター 物のコードをだすわけにはいかないので、すごく簡略化した例で説明したい。あるシステムを利用できるユーザのマスターテーブルがあるのだけど、そいつには「なんちゃらサービス利用可否フラグ」みたいなのがたくさんついているのね。 この方式の問題は以下の通り。 テスト負荷 フラグがあるということはそれをチェックするif文があるということ。 if文があればテスト件数は最低2件は増える。 入れ子になれば、4件、8件...と増えていく。andやorでも同じ。 コードの冗長性 「あるユーザがサービスAを使えるか」を調べる処理と「あるユーザがサービスBを使えるか」を調べる処理はほぼ同様になることは明らか。 「サービスAを使えるユーザ」を調

    COBOL屋の呪縛 - masayang's diary
    shozzy
    shozzy 2007/09/23
    よくある。自分が設計しなおせるところはもちろんきれいに作るけど。
  • ベジエ曲線の仕組み (3) - 3次ベジエ曲線 - てっく煮ブログ

    asちょっと息切れしてきたのでサンプルプログラムでごまかし。黒い点をドラッグすると、制御点を移動できます。赤いボタンの上にマウスを置くと、1つ目の2次ベジエ曲線を描きます。緑のボタンの上にマウスを置くと、2つ目の2次ベジエ曲線を描きます。青いボタンの上にマウスを置くと、1つ目と2つ目のベジエ曲線の間を描きます。これが3次ベジエ曲線だよ。3次ベジエ曲線といえども、2次ベジエ曲線を2つ書いてその間をとるだけです。簡単ですね!目次ベジエ曲線の仕組み (1) - 昔話ベジエ曲線の仕組み (2) - 2次ベジエ曲線を詳しくベジエ曲線の仕組み (3) - 3次ベジエ曲線ベジエ曲線の仕組み (4) - ActionScript 3.0 でベジエ曲線を描くソースコードソースコードは以下に(270行)。ちょっと凝ったことをすると、ソースコードが長くなるなぁ。 package { import flash.

  • 機械語ではマシンの挙動は理解できない - 未来のいつか/hyoshiokの日記

    実のところ機械語はマシンに対する高レベルな挙動を示す命令であって実行を厳密に写像したものではない。(何を言っているんだわたしは?) 「マシン語ってどんな感じか知りたくなった方へ」という大人気のエントリと、ニコニコ動画を見て、昨今の最新マイクロプロセッサでは機械語がもはや機械の挙動と一対一に対応しなくなっちゃったのである、というツッコミをしたくなった。http://d.hatena.ne.jp/shi3z/20070913 「水野拓宏のTK-80講座」これが素敵すぎる。http://www.nicovideo.jp/watch/sm1048903 最近のプロセッサ(Pentium 4とかXeonとか)は機械語を機械が直接実行するのではなく(じゃあ、なんで機械語というだよというツッコミは諸般の事情で却下(w))、機械語をμOPという機械語と一対Nに対応する命令に変換し実行するのである。Java

    機械語ではマシンの挙動は理解できない - 未来のいつか/hyoshiokの日記
    shozzy
    shozzy 2007/09/18
    よーするに「マシン語知ってなきゃダメとか色々言い出すとキリがないから、さらっと基本概念さえ知ってればそれでいいじゃん」という話として読んだ。/にしてもすごいな。
  • 「車輪の再発明をするな」の流行は孔明の罠 - きしだのHatena

    なんかの実装がオープンソースで公開されているときに、同じ機能の実装を行うのは「車輪の再発明」で無駄な行為だといわれた時期がありました。 でも、それは「再発明」ではなく「再実装」であって、とても大切な行為です。 車輪にしたって、ブリヂストンも横浜ゴムもタイヤの開発をいまもって続けてるわけです。タイヤだけでなく、ホイールからベアリングからドライブシャフトから、「車輪」の部品については、いまだにいろいろな会社が切磋琢磨して再実装を続けているのです。 世の中に出ているライブラリを自分で実装してみるとわかることは、自分の実装を持っているという強さです。 たとえ世の中のライブラリに機能的に性能的に負けていたとしても、自分の実装というのは自分のニーズに合わせるという点でとてもいい。特に、処理の途中の値を使えるというのがいいのです。ライブラリでは、入力したら出力が返ってくるまで中身が見れないですからね。

    「車輪の再発明をするな」の流行は孔明の罠 - きしだのHatena
    shozzy
    shozzy 2007/09/11
    「「車輪の再発明をするな」の流行は孔明の罠」 言われてみればたしかにそうだな。
  • SQLで木と階層構造のデータを扱う――入れ子集合モデル

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 頭の中にプログラムを入れる

    Paul Graham / 青木靖 訳 2007年8月 いいプログラマは、自分のコードに集中しているとき、それを頭の中に保持しておくことができる。数学者が取り組んでいる問題を頭の中に入れているのといっしょだ。数学者は学校で子供たちが習っているように、紙の上で問題の解いているわけではない。彼らは多くの部分を頭の中でやっているのだ。問題の領域をよく把握しようと努めることで、普通の人が記憶にある育った家の中を歩き回れるように、数学者は頭の中で問題空間を歩き回ることができる。最高の状態で行われるプログラミングもそうだ。プログラムの全体を頭の中に入れたなら、それを思い通りに操れるようになる。 これはプロジェクトのはじめにおいては特に価値がある。それはプログラムを作り始めるときに最も重要なことが、やっていることを変えられるということだからだ。単に問題の解き方を変えるという ことではなく、解いている問題

    shozzy
    shozzy 2007/08/27
    あるあるある。いろいろ考えているうちに、バラバラだった破片が1つの輪につながる感覚。/集中して考えられないときは、(時間はかかるけど)無意識レベルに放り込んでおくとつながることもある。
  • Visual C++の勉強部屋

    理工系、特に電気系、の学生と技術者を対象としたVisual C++の解説を行います。Visual C++を始めたいが、よく分からないという人は、これを参考にしてください。ただし、初めてプログラムを学ぶ全くの初心者向けではありません。 資料の一部のJava版が(株)翔泳社のウエブサイトCodeZineにありますので、こちらもご利用ください(Java版とある場所をクリックして下さい)。Visual C++ 6.0版(現在は全部削除)が最初に公開され、そのJava版がCodeZineに寄稿され、その後に現在のVisual C++ 2005 Express Edition版が作成されています。 Java版は、すべてアプレットになっていますので、ブラウザから試してみることができます(Javaランタイム必要)。 Visual C++ 2008 Express Editionが無償でダウンロード

    shozzy
    shozzy 2007/08/21
    Java版(CodeZine)へのリンクもあり
  • 404 Blog Not Found:怠翻 - JavaScriptでありがちな9つのシマッタ

    2007年08月17日01:15 カテゴリ翻訳/紹介Lightweight Languages 怠翻 - JavaScriptでありがちな9つのシマッタ 私自身結構シマッタしちゃうので。 Nine Javascript Gotchas 尻カンマ注意 以下のコードはFireFoxでは動きますが、Internet Explorer (以下IE)では問題になります。 var theObj = { city : "Boston", state : "MA", } 最後にカンマが入らないよう注意しましょう。 浮気なthisは何を見てるやら 以下のコードで、thisは何を指しているでしょうか。 <input type="button" value="Gotcha!" id="MyButton" > <script> var MyObject = function () { this.alertMess

    404 Blog Not Found:怠翻 - JavaScriptでありがちな9つのシマッタ
  • ホワット・ア・ワンダフル・ワールド 全てのプログラミング言語は C コード生成器と割り切るべき

    これは至言だと思う. イネムリネズミ日記 2007-06-17 梅雨が中休みするなら俺だって 業務系のシステムを作りたい人には申し訳有りませんが、世界の進歩のスピードは言語の成長のスピードを超えています。バグのない、安定したプログラムを作りたければ、熟練したプログラマに C で書かせるのが最も良い選択肢でしょう。バグがあるかもしれないけど、とりあえずできればいいや、ナンチャッテ、次のリリースで直すから許してチョという代物は軽量言語で書くのを僕はお勧めします。 僕にとって、軽量言語とはそういうものです。 しかし,いくらなんでも C コードを最初から人間が手書きするような時代では無い.C/C++ では,マシン間の互換性を取るだけでも,ifdef の塊になるし. となると,Haskell とかで型システムなどによる検証済みの C コードを吐くとか,そういう方向になってくる.つまり,Ruby とか

    shozzy
    shozzy 2007/06/18
    だよね
  • https://xtech.nikkei.com/it/article/COLUMN/20070604/273453/hyo2.jpg

    shozzy
    shozzy 2007/06/14
    これってあくまでプログラミング言語のサブセットだよね…
  • Geekなぺーじ:エンジニアは下らない質問をする

    「バナナはおやつに入るんですか?」という質問をしたことがあるエンジニアは多いと思います。 私も真っ先にそのような質問をした覚えがあります。 で、実際にバナナを持ってくる人がいるかというと、私は見たことがありません。 エンジニアって一般人から見ると変な、もしくは下らない質問が大好きな人種なのではないかと思う事があります。 エンジニアというよりもプログラマかもしれませんが、全ての事をswitch case文で考えて、条件分岐の白黒をはっきりさせたがってしまうのではないかと思うのです。 以前、マンション営業をする友人に「職業がエンジニアな人がお客さんだと面倒なときがある」と言われた事があります。 最後に契約書を確認する際に、非常に細かいところを確認したがって面倒であるそうです。 (私は細かく確認しない大多数の人の方が間違っているとは思いますが。。。) 細かい話になってくると、例えば受け渡しの前に

    shozzy
    shozzy 2007/06/07
    あるあるw/例外処理は十羽一からげにしておいて、何かが起きたらその時対処する、ってのができる環境ならそこまでしないで済むんだけどなぁ。
  • jpn.ph

    This domain may be for sale!

  • 習作UI: 縁日の金魚を再現してみた

    Flashでプログラムを書く機会があったら一度は作らねばと思っていたのが、鳥や魚の群れ(flock)のシミュレーション。そこでカスタムクラスのプログラミングの練習も兼ねて作ったのがこれ。アルゴリズムそのものは、良く知られた(1)仲間と同じ方向に泳ごうとする気持ち、(2)仲間と一緒に泳ごうとする気持ち、(3)衝突を避ける気持ち、をそれぞれの魚に持たせて泳ぐ方向を少しずつ変化させる、というものである。 プログラムはそれほど時間をかけずに作ることができたのだが、苦労したのがそういった「気持ち」の部分を表現するのに必用な具体的なパラメーター(どのくらい離れた仲間まで認識しているか、どのくらいの距離までの接近を許すか、など)を見つけ出す部分。金魚すくいの水槽の中の金魚の動きをちょうど良い感じで再現するためのパラメーターを見つけるのにかなりの試行錯誤が必要であった。 しかし、これを作って思ったのは、F

  • ブロックを組み立てるようにプログラミングを簡単に学べる『Scratch』がすごいかもしれません | POP*POP

    MITのメディアラボで開発されている開発ツール「Scratch」が話題になっています。 小さなお子さんでもプログラミングに親しんでもらおう、という目的で作られたツールです。 この時代、誰でもプログラミングを学びたいものですよね。この「Scratch」、どれほど簡単なのでしょうか。 以下に詳しく見ていきましょう。 ↑ 起動直後の画面。左側からアクションを選んで組み立てていきます。 ↑ まずはを動かしましょう。左側から「Move 10 Steps」を選び、横のエリアにドラッグします。それをダブルクリックするとが横に動きます。もちろん「10」の値は好きに変えられます。 ↑ 次にさっきのブロックの下に「Say Hello for 2 seconds」をくっつけます。これでこのブロックをダブルクリックすると「横に動いてHelloと2秒間言う」というアクションがつくれました。 ↑ こうしてできたア

    ブロックを組み立てるようにプログラミングを簡単に学べる『Scratch』がすごいかもしれません | POP*POP
  • TAKESAKO @ Yet another Cybozu Labs: 連載企画 FizzBuzz ではじめる Code Golf (x86 32bit) 入門

    Code Golf とは? Matzにっき(2006-10-05) より ゴルフとは如何に少ないストロークでホールインするかを競う競技である。 コードゴルフとは、如何に少ないキーストローク(バイト数)で、プログラムを実装できるかを競う競技である。 先日FizzBuzz.com (MS-DOS 16bit版) を作ってみたら、32bit版のプログラムにも挑戦したくなりましたので、x86 32bitで命令長を減らすテクニックについて紹介したいと思います。 ※まずはコード長の比較のみで実行クロック数は競わないことにします。 ■ x86 32bit コード最適化 【問題】EBXレジスタに1を、EAXレジスタに4を代入したい できるだけ短いバイト数でコードを実現するためには、いろいろなx86命令をフル活用することを考えます。 自分の思いついた解答をNASMの記法で書いてみます。 (1) 10byte

    shozzy
    shozzy 2007/05/15
    FizzBuzzに釣られたw
  • どうしてプログラマに・・・プログラムが書けないのか?

    Jeff Atwood / 青木靖 訳 2007年2月26日 レジナルド・ブレイスウェイトが書いていることを読んだとき、私はそんなわけないだろうと思っていた。 私と同様、この著者は、プログラミングの仕事への応募者200人中199人はコードがまったく書けないということで苦労している。繰り返すが、彼らはどんなコードも書けないのだ。 彼が引用している著者というのはイムランのことで、彼は単純なプログラムも書けないプログラマをたくさん追い払っているということだ。 かなりの試行錯誤の末に、コードを書こうともがいている人たちというのは、単に大きな問題に対して苦労しているのではないことがわかった。やや小さな問題(連結リストを実装するというような)に対して苦労するということでさえない。彼らはまったくちっぽけな問題に苦労しているのだ。 それで、そういった類の開発者を見分けるための質問を作り始め、私が「Fizz

    shozzy
    shozzy 2007/05/08
    javascript:function f(){var d='';for(i=1;i<101;i++){d+=i%2515==0%3f'FizzBuzz':i%255==0%3f'Buzz':i%253==0%3f'Fizz':''+i;d+=' ';}return d;}document.body.innerHTML=f(); アドレスバー用
  • プログラマの権利宣言

    Jeff Atwood / 青木靖 訳 2006年8月24日 企業は開発者に給与として60-100kドル支払いながら、ひどい作業環境と汚い使い古しのハードウェアによって彼らを損なっている。信じられない話だ。そんなのはビジネス的に理屈に合わない。ところがそういうのをどこでも目にする。ソフトウェア開発者が成功するために不可欠なものを与えていな い企業がいかに多いかは驚くばかりだ。 そこでプログラマの権利宣言を採択し、成功に不可欠な基的なことを否定する企業からプログラマの権利を守ることを提案する。 すべてのプログラマは2つのモニタを持つ権利を有する 下落する液晶ディスプレイの価格と、遍く存在するデュアル出力ビデオカードのことを考えるなら、開発者を1つのディスプレイに制限するのはばかげた話だ。ディスプレイを2つにすることによって得られる生産性の利益については、今では十分に説明されている。開発者の

    shozzy
    shozzy 2007/04/13
    そうだそうだー!