タグ

programingに関するkwryのブックマーク (146)

  • 値の一意性を保証したいときに気をつけるべきこと - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    たまに以下のようなロジックで値の一意性を保証しようとしているコードを見かけます。 if ( 既に値が存在するか ) { ...(1) print "別の値にしてください" } else { 値をどっかに保存する処理 ...(2) print "保存しました" } 一見うまく動きそうなんですけど、これは複数プロセスや複数スレッドが同時に実行されるような環境ではうまく動きません。 例えばwebアプリでDBに値を保存する場合などは、こういうことが考えられます。 ユーザーAが nyan という値を送ってきます まだ DB には nyanという値が存在しないので、 (1) で else 節に入ります ここでユーザーBも偶然 nyan という値を送ってきました まだ DB には nyan という値が存在しないので、 (1) で else 節に入ります else 節に入ったユーザーAのリクエストは(2)

    値の一意性を保証したいときに気をつけるべきこと - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • ビット演算

    ビット演算 ○バイトとビット これまで,何回か主記憶(メモリー)の構造を図をつかって説明してきました. 主記憶は,1バイトのメモリーが1列に連続的に並んだもので,1バイト単位にアドレスがついていると説明してきました.また,int型の整数やfloat型の実数は4バイト,double型の変数は8バイトで表現されると説明してきました.(整数は4バイトでない場合もありますが). CPUがデータを読み書きするときは,バイトを単位に読み書きします.しかし,この1バイトのメモリには,更に微細な構造があります.すなわち,1バイトのメモリーはより細かく見ると8個のセルで構成されています.図で表現すると次のようになります. この1個のセルのことをビットとよびます.ビットは記憶の最小単位で,1または0(つまり2進数)を記憶します.これら,8個のビットは切り離すことはできないと考えて下さい.CPUはメモリーのデー

  • 「オブジェクトをイミュータブルにしろ」って言うけど、それってたとえば状態が変わったらオブジェクト作り直すってことでしょ、ちょう非効率じゃん。って思ってたんだけど、 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    オブジェクトの内部の値がイミュータブルであれば、今後もその値は変更されないことが保証されているので、新しい状態を持った新しいオブジェクトの内部の値のうち、変更のない部分(つまり値のうちのほとんど)は古いオブジェクトの値をそのまま参照すればよく、コピーする必要がないということを @takkkun が言っていて(正確には、イミュータブルなリストに新しい値を追加した新しいリストを作るときには、中身をコピーする必要ない。変更されないことが保証されてるから、という話だった)目から鱗が落ちたのでここに記して置こうとおもった。 で終わろうと思ったんだけど、もう少しちゃんと書く。 ミュータブルな世界では同一性の問題がある。 たとえば playerA と playerB の HP がたまたまおなじ 10 であったとしても playerA と playerB の HP 変数が同じ数値オブジェクトを参照していた

    「オブジェクトをイミュータブルにしろ」って言うけど、それってたとえば状態が変わったらオブジェクト作り直すってことでしょ、ちょう非効率じゃん。って思ってたんだけど、 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • おそらくはそれさえも平凡な日々: たとえばgetを避ける

    プログラムでは複数の意味を持ちうる単語は避けるというのがある。noとかrightとかが良い例だ。個人的に最近はgetも気をつけたほうが良いと思っていて、メソッド名にgetを使いたくなったときは大体間違えている。 Javaなんかのgetter/setter的なやつは、オブジェクト指向以前のパラダイムの名残でしかないと思ってる。手続きの内容をメソッド名にしているという、手続き型のパラダイムを引きずっている感。 例えば、 user.get_money みたいなコードがあった場合に、ユーザーがお金を獲得するのか、ユーザーの所持金額を取り出したいのかが分からない。オブジェクト指向的には前者が正しいのだけど、歴史的経緯から後者の意味合いで使わえる事が多い。プロパティの値を取り出すことが期待されてしまう。それが気持ち悪いので、getは極力使わないようにしている。 オブジェクト志向では、メソッド名はオブジ

  • 2010-12-26

    リアクティブプログラミングは、「時間とともに変化する値」=「振る舞い」同士の関係性を記述することでプログラミングを行うパラダイムです。 GUIなどのようにインタラクティブなシステムや、シミュレーションやアニメーションのようにダイナミックに状態が変化するようなシステムを宣言的に記述することができます。 これらの「変化する状態」や「外部とのやりとり」が支配的なシステムは、純粋関数型言語が、その強みを発揮しにくい部分でもあります。 稿では、リアクティブプログラミングが副作用を含む系を宣言的に記述することを可能にし、状態の管理という厄介な問題からプログラマを開放する可能性があることを示したいと思います。 (割と独自研究に基づく解釈ばかりなのでその点ご了承ください。あと例としてでてくるコードは、Pythonベースの擬似コードで具体的なライブラリに基づくものではありません。) Why Reactiv

    2010-12-26
  • ChucKの軽量スレッド - koyachiの日記

    Chuckの論文を斜め読みした。ホームページトップにもあるようにChucKはリアルタイム音声合成/作曲/パフォーマンスを目的としたシステムで、強力に正確な時間(strongly-timed)なこともウリにしている。論文ではその時間管理の部分と軽量スレッドの関係についても触れられていた。 ChucKで音を出すには、D/A Converter(dac)へ何らかのオシレーターを接続し、必要ならオシレーターの設定をした後、音をならしたい時間を指定する。最後の音をならす時間指定の前までがChucKでの軽量スレッドの実行単位(Shredと呼ばれている)となり、鳴らす音の時間指定した時点で音声エンジンによって音声処理され、Shred切り替え処理(Shredulerと呼ばれる)でキューにいるShredが処理される。以下は単一Shred時のフロー(論文だとp.77, fig.3.34) 複数Shredを並列

    ChucKの軽量スレッド - koyachiの日記
  • プログラマの常識:変数と値 - 檜山正幸のキマイラ飼育記

    プログラマの常識っぽいネタ。 「変数は入れ物で、値は中身」とか僕は説明するんですが、それほど単純でもないですね。 とりあえず即物的に、変数はメモリ内に確保された領域で、値はそこに格納されているビットコンビネーションと捉えましょう。プログラミング言語はたいてい型概念を持つ*1ので、値であるビットコンビネーションには高級な(たとえば整数としての)意味付けがされています。 変数は入れ物(実体は連続したメモリセル)なので先頭アドレスを考えることができますが、値自体にアドレスは考えにくい; 例えば整数変数xに値3が格納されているとき、xのアドレスは取れますが、3のアドレスって意味不明。-- と、そんなことを言ったりもします。が、これもアヤシイよね。 整数値3は、それ自身でアイデンティティを持つので、3が4に変わったりはしない(変わった結果はもはや3じゃない)のですが、「3をインクリメントしたら4」と

    プログラマの常識:変数と値 - 檜山正幸のキマイラ飼育記
  • Loading...

  • http://morchin.sakura.ne.jp/generic/index.html

    Programmer's Gate /ジェネリックプログラミング入門 ジェネリックプログラミング入門 ジェネリックプログラミングというものが存在する。 C++で言えば、Templateの機能を使ってコードを汎用化、抽象化する方法である。 JavaやC#では、Genericsに当たる。 ここでは、C++Templateに焦点を当てて何ができるかを探ってみよう。 ジェネリックの基 TraitsとPolicy

  • コードポケット - アプリケーションをささっと作るコツ - (ひ)メモ

    誰に教えられたのでもないのですが、ぼくは冬眠前のリスのようにコード片を溜め込んでいます。 コード片とは、ライブラリにするほどまとまった大きさではない、数行〜十数行のコードのことで、溜め込んだコード片は、アプリケーションやツールを作るときに使っています。 例えば「Perlでメール送るのどう書くんだっけかな」とか「Pythonでファイル開いて全部読むのどう書くんだっけかな」とかというときに、溜め込んだ中からコード片をさっと取り出してコピペした後、なじむようにちょっと修正して使っています。 コードポケット コードを溜め込んでいるディレクトリをぼくは「コードポケット」と名付けていて、コード片を取り出すことを「ポケットからコードを取り出す」と呼んでいます。先日、知り合いが似たようなことを実践していて、その人は「コードスケッチ」と呼んでました。いい名前ですね。 ぼくの場合、コードポケットは ~/lan

    コードポケット - アプリケーションをささっと作るコツ - (ひ)メモ
  • プログラミングにおける英語作文的要素 - D-6 [相変わらず根無し]

    プログラミングにおける英語作文的要素 プログラミングは作文に近いと思うのです。プログラムを書いている時に築いているロジックというのは、「まずこのデータをこっちにおいて、その後これに3.14をかけて、2倍にして、それを標準出力にプリント」みたいな感じで、情緒はないだけであとはまるっきり作文しているのと一緒なわけです。 でもって、作文と一緒で色んな書き方で同じ事に到達できる。さっきのは円の円周を求める式だけど、答えを出すだけなら、こういう説明の仕方もできる:「一時変数に3.14を格納後2倍にし、一変数にさらに引数としてもってきたデータを乗算し、しかるのちに標準出力に出力する」。まぁこの程度のロジックならほぼどんな書き方をしても理解できるよね。 面倒くさくなるのはオブジェクトとかがでてきたり、プログラムの流れそのものがあんまりストレートじゃなくなってきた時。これがプログラミング言語が基的に英語

  • Whitespace

    What is Whitespace? Most modern programming languages do not consider white space characters (spaces, tabs and newlines) syntax, ignoring them, as if they weren't there. We consider this to be a gross injustice to these perfectly friendly members of the character set. Should they be ignored, just because they are invisible? Whitespace is a language that seeks to redress the balance. Any non whit

  • IT Professionals

    メタソフト CTO 早川てつろう 最終回 「語りえぬこと」〜言語の限界〜とは この連載も,いよいよ最終回となった。最後に,「論考」の結びの言葉である「語りえぬものについては沈黙せざるをえない」と,プログラミング言語の関係について考えてみたい。 メタソフト CTO 早川てつろう 第11回 オブジェクトは現実世界の像だ 前回,オブジェクトと変数について話をした。今回は,このテーマを補足する意味で,ウィトゲンシュタインの「像」という概念について説明する。 メタソフト CTO 早川てつろう 第10回 オブジェクトは変数だ プログラムを作るには,どんなプログラムを作るかという設計図が必要だ。この設計図のことを通常,「詳細仕様書」や「プログラム仕様書」と呼ぶ。プログラマは,それらの仕様書に従ってプログラムを作る。 メタソフト CTO 早川てつろう 第9回 プログラミングと実行 プログラミング言語で書か

  • お手軽パーザー

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • Concepts + Principles - プログラミングの原則 - Concepts + Principles - Top

    ここはプログラミングの原則を集める Wiki です。巨人の肩に乗って、ふつうの人がよいプログラムを書くための指針を集めたいなと思ってます。 目次 よいデザインのための Concepts + Principles DRY (Don'tRepeatYourself) 名前重要 直交性 トラッシュではなくクラッシュ DuckTyping よいルーチンを書く 凝集性 結合性 契約による設計 (DesignByContract) ルーチンを作る正当な理由 よいモジュールを書く 適切なモジュール性を確保するために守らなければならない5つの原則 開放/閉鎖原則 (OpenClosedPrinciple) よいアプローチのための Concepts + Principles 曳光弾 可逆性

  • Phidgets RFID開発キット インストールガイド on MacOSX

    最近ではコンピューター、ウェブ、モバイルでゲームを楽しめるようになりました。これらのゲームプログラミングについて学びましょう。 ゲームプログラミングの特徴 ゲームプログラミングは比較的新しいジャンルです。 ゲーム開発に使用される言語は、C#、C++JavaScriptSwiftRubyです。ゲームでは通常のアプリケーションと異なり複雑なビジュアルを操作するパフォーマンスと速度が要求されますので、プログラム言語もそれに特化している言語がおすすめです。 ゲームプログラミングは今後も人気の職種です。習得してステップアップを目指しましょう。 Oracle PLのプログラミング言語について学びましょう。 Oracle PLの特徴 SQL、T-SQLと同様にOracle PLもデータベースを処理するための言語です。違いとしてはOracle PLは世界最大のデータベースのひとつであるOracle

  • http://www.idd.tamabi.ac.jp/art/wiki/index.php?Programming

    kwry
    kwry 2007/06/09
    [max/msp][jitter]多摩美情デのwiki
  • まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro

    第0回 あらためてRuby入門 まつもとゆきひろ氏自身による「Ruby入門」をお届けします。日経Linuxの連載開始前の特別企画(2005年4月号)として,Rubyが他のスクリプト言語やオブジェクト指向言語とどこが違うのか,なぜ便利なのかを中心に解説してもらったものです。 ● 基と他言語との違い ● 実装とRuby誕生の秘密 第1回 プログラミングとオブジェクト指向の関係 プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。 ● その1 ● その2 ● その3 第2回 抽象データと継承 オブジェクト指向プログラミングを構成する3原則のうち,前回は「ポリモーフィズム」を学びました。今回はオブジェクト指向の歴史を復習した後,残りの「データ抽象」と

    まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro
  • ポケットサイズのガジェットの作り方

    イベント・セミナー集客プラットフォーム 「こくちーずプロ」を使えば、驚くほど簡単で安全なイベント告知・集客ができます。誰でも使えるシンプルさ、とことんまでイベント集客の手助けができる拡張性、大規模なイベントの大量な申し込みも安心して受付ができる高機能を併せ持っています。 一般的なイベントだけでなく講演会や、定期的に開催する地域セミナー、クローズドな社内勉強会、大規模な学会など様々なイベント形態にあわせた募集が可能です。 サービスのトップへ セミナー会場検索サービス 「こくちーずスペース」は、イベント・セミナーの開催に適したセミナー会場(貸し会議室・ホール)を所有する全国2,700箇所以上の公共施設を掲載!リーズナブル・格安で安心して利用できる貸し会議室やレンタルスペースを中心にイベントの規模や設備など目的にあった施設を簡単に検索できます。 今まで見つけにくかった公共施設の詳細な情報をまとめ

    ポケットサイズのガジェットの作り方
    kwry
    kwry 2007/04/12
    web programingいろいろまとめ
  • PHP入門講座 実践編

    $_FILES,filesize,file_exists,ereg,opendir,readdir,closedir