タグ

programmingに関するpipeheadのブックマーク (1,627)

  • LWPでリクエストヘッダ付 Web アクセス(proxy込) / [HTTP][perl] | 戯術者の日記

    use LWP::UserAgent; use HTTP::Request; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new( GET => 'http://www.example.org/' ); $ua->agent("perl-wget"); $ua->proxy('http', 'http://proxy.example.org:8080'); $req->header( 'X-Header1' => 'hoge', 'X-Header2' => 'foobar', ); my $res = $ua->request($req); $res->as_string; // レスポンス(ヘッダ+ボディ)は $res->headers_as_string; // レスポンスヘッダ $res->content; // レ

  • 可変長引数 / [programming][c] | 戯術者の日記

    めも 各変数を自前で取り出して使う場合 #include <stdarg.h> /* 引数を全部足して返す */ int sumall(int n, ...) { va_list ap; int total = n; int n_tmp = 0; va_start(ap, n); /* 最後の固定変数を指定し,最初の可変長引数をセットする */ while ((n_tmp = va_arg(ap, int)) != 0) { total += n_tmp; /* 型を指定することで引数を一つ取り出す. ap には次の引数がセット */ } va_end(ap); /* 後始末 */ return total; } というわけで,va_xxx には「引数の最後」が何かを知る術はないようなので,固定引数部分に引数の個数を入れるか,番兵を使うかするっぽい.(上のコードは 0 があったら終了する)

  • 「単独varパターン」のススメ|もっこりJavaScript|ANALOGIC(アナロジック)

    概要 「単独varパターン」とは? 単独varパターンのメリット ループ用変数はどうする? 余談:コメントの位置について JavaScriptは他のプログラミング言語に比べ特に柔軟性のある言語だと思います。そのため、コーディングスタイルも人それぞれです。 これは、目的を遂げるための手段が非常に多く用意されているとも言えますが、JavaScript初級者にとってはこの柔軟性がかえってネックになったりもします。つまり、「どのようなコーディングがベストなのか?」ということが、とても分かりづらいのです。(私がそうでした)。 JavaScriptのコーディングスタイルに正解、不正解などは無いかもしれませんが、推奨されているコーディングスタイル(コーディングパターン)はあります。JavaScriptのような柔軟性に富んだ言語を覚える場合、このコーディングパターンを身に着けていくことが上級者への近道だと

  • 知らないと怖い「変数の巻き上げ」とは?|もっこりJavaScript|ANALOGIC(アナロジック)

    概要 とりあえず問題 なぜこうなるのか? まとめと予防策 JavaScriptには、他の言語ではあまり聞かない(あるいは存在しない)「変数の巻き上げ(hoisting)」という概念があります。これは(たぶん)JavaScript特有のもので、かつ重要なポイントです。 この「変数の巻き上げ」が原因でコードが思った通りの動作をしなかった場合、この概念を知らないと、いくらコードを見直しても問題を発見することができません。ドツボにはまります。 そういう意味でも、この「変数の巻き上げ」の概念をおさえておくことは重要です。 とりあえず問題 変数の巻き上げを説明するには、文章で説明するよりもコードを見てもらった方が理解できると思います。 まずは次のコードを見てください。 var myname = "global"; function func() { console.log(myname); //出力内

    pipehead
    pipehead 2013/05/01
    hoisting (ホイスティング)
  • 食べられないほうのカリー化入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    食べられないほうのカリー化入門 - Qiita
    pipehead
    pipehead 2013/04/30
    > 『2引数以上の関数を、1引数の関数の定義だけで同じ機能を持つように定義を書き換えること』を カリー化 といいます。もちろん2引数に限らず、引数の数がそれ以上であってもカリー化することは可能です。
  • Taso.compute(more);: javascriptは代入モデルではなく束縛モデルである

    世界一誤解された言語javascriptとecmascriptの話。 ──この誤解に関して、私は真に驚くべき証明を見つけたが、このブログはそれを書くには狭すぎる。 JavaFXはじめました。 javascriptの変数は代入モデルではなくて束縛モデルです。ただし、破壊的代入もシャドウイングも出来ます。const宣言はそれら2つを無効にします。 まずは束縛モデルを知らない人向けに説明していきます。新たなオブジェクトを利用するにはそれに名前をつけて識別できるようにすることが必要です。これを束縛といいます。「変数にオブジェクトを束縛する」と言います。一度束縛された変数は変更できません。 しかし、中には束縛を変更できる束縛モデルも存在します。それが破壊的代入と隠蔽(shadowing)です。隠蔽とカプセル化を混同している人がいるので注意しましょう。それらの違いについてはここでは説明しません。 破壊

    pipehead
    pipehead 2013/04/28
    > javascriptの変数は代入モデルではなくて束縛モデルです。ただし、破壊的代入もシャドウイングも出来ます。const宣言はそれら2つを無効にします。
  • JavaScriptの変数宣言は難しすぎる! - Qiita

    …またややこしいタイトルにしてしまった。 予め伝えておきますが、この記事は「JavaScript訳わかんねえんだよ何がvarだスクリプト言語ならもっと気軽に変数を使わせろスコープややこしいわファッキュー」みたいなものではありません。 JS(色んな意味で)を愛する人が書いています。 いやー、にしても、JavaScriptの変数の宣言って難しいですよねー。何がって? インデントが、ですよ奥さん。 var というキーワードを先頭に置かなきゃならないという厄介な規則のせいで、綺麗なインデントにするのに四苦八苦するわけですよ。var による明示的な変数の宣言によって、JavaScriptのクロージャが真価を発揮するわけですが、それにしても邪魔くさい…。 まあ普通はコーディングスタイルをきちんと決めるべきなんですけど、個人でちゃちゃっと小さいプログラムを組むときにこの変数宣言のインデントで結構悩んだり

    JavaScriptの変数宣言は難しすぎる! - Qiita
    pipehead
    pipehead 2013/04/25
    変数宣言の作法
  • http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html

    http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html
    pipehead
    pipehead 2013/04/19
    一様乱数; 線形合同法と Mersenne Twister の比較
  • awkのprintfは切捨てでも四捨五入でもない? - アウトプットができる技術者に

    printfを利用することで小数点第N位での切捨てが簡単にできる...と思ったていたら、不思議な結果になりました。 「0.5」が四捨五入になりません。 でも「0.51」は四捨五入になるようです。 echo "0.124" | awk '{printf("%0.2f", $1)}' # => 0.12 echo "0.125" | awk '{printf("%0.2f", $1)}' # => 0.12 echo "0.1251" | awk '{printf("%0.2f", $1)}' # => 0.13 echo "0.126" | awk '{printf("%0.2f", $1)}' # => 0.13 ... これwindows cygwinのawkだけ? それとも、他の言語のprintfでもそうなのかな?? そのうち 検証します

    awkのprintfは切捨てでも四捨五入でもない? - アウトプットができる技術者に
    pipehead
    pipehead 2013/04/15
    偶数丸め
  • JavaScriptの「this」は「4種類」?? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    JavaScriptの「this」は「4種類」?? - Qiita
  • 対話によるCommon Lisp入門 29 末尾再帰 - by shigemk2

    (defun gcd$ (m n) (if (= (mod m n) 0) n (gcd$ n (mod m n)))) [1]> (load "gcd.l") ;; Loading file gcd.l ... ;; Loaded file gcd.l T [2]> (gcd$ 300 45) 15 [3]> (trace gcd$) ;; Tracing function GCD$. (GCD$) [4]> (gcd$ 300 45) 1. Trace: (GCD$ '300 '45) 2. Trace: (GCD$ '45 '30) 3. Trace: (GCD$ '30 '15) 3. Trace: GCD$ ==> 15 2. Trace: GCD$ ==> 15 1. Trace: GCD$ ==> 15 15 [5]> (gcd$ 30 18) 1. Trace: (GCD$

    対話によるCommon Lisp入門 29 末尾再帰 - by shigemk2
    pipehead
    pipehead 2013/04/09
    > 値を返す直前の関数呼び出しのことを末尾呼び出しといい、再帰呼び出しから返されてきた値をそのまま自分の答えとして返すような再帰の方法を末尾再帰という。
  • Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

    A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team

    Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
    pipehead
    pipehead 2013/04/07
    > 「ローカル変数の宣言はスコープ先頭で行ったことになる」現象のことを「ホイスティング」とか「宣言の巻き上げ」とか呼ぶ
  • 対話によるCommon Lisp入門 20 最後の要素を取り出す方法3つ - by shigemk2

    リストの最後の要素を取り出す方法は3つある。 lengthを使う方法。 reverseを使う方法。 そしてlastを使う方法。 [8]> (setf x `(a b c d)) (A B C D) [9]> (elt x (- (length x) 1)) D [10]> (first (reverse x)) D [11]> (last x) (D)

    対話によるCommon Lisp入門 20 最後の要素を取り出す方法3つ - by shigemk2
    pipehead
    pipehead 2013/04/04
    length, reverse, last
  • コードクローンと品質 - プログラマーの脳みそ

    コードクローンと品質について話題になっている。元ネタはこちら。 ソースコードの品質についても、みずほ証券は問題を指摘している。今回のバグがあったプログラム全体について、「ソースコードの著しい重複が見られるなど、エラーの潜在する率が極めて高い作り方をされており、品質が極めて低い」と主張。これに対して東証は「コードクローン(記述の重複)を含むプログラムは、含まないプログラムと比較して信頼性が高いことが定量的な研究で裏付けられている」と反論した。 [論点3]どんな開発手法を適用すべきか | 日経 xTECH(クロステック) この「コードクローンを含むプログラムのほうが信頼性が高い」というのはどこからきた話題なのかという話。 僕が昔読んだ論文で似たような話があったなと思って探してみた。 コードクローンに基づくレガシーソフトウェアの品質の分析(PDF) 論文では,20年以上前に開発され,拡張COB

    コードクローンと品質 - プログラマーの脳みそ
  • ヌルポインタ - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "ヌルポインタ" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2021年4月) ヌルポインタ(英: null pointer 英語: [nʌl pɔɪntə(ɹ)])とは、何のオブジェクトも指していないことを表す特別なポインタの値である。 プログラムではヌルポインタを、不定長のリストの終端を表したり、何らかの動作の結果が失敗であることを表したりするのに使用する。後者の用法は、nullable型やオプション型の Nothing 値(None 値)を使用することもできる。 ヌルポインタの値や型がいかなるものかという詳細は言語によって異なる

    pipehead
    pipehead 2013/04/03
    /* null pointer */ > 言語仕様上の意味としては普通「アドレス0(あるいは他のアドレス)を指し示すポインタ」ではなく、どこも指し示さないものとされる。ヌルポインタを未初期化のポインタと混同してはならない。
  • 対話によるCommon Lisp入門 10 コンス - by shigemk2

    空リスト以外のリストをコンスという。 コンス以外の全てのデータはアトムである。 なお、空リストはNILでもある。 nilはアトムであり、同時にリストであることにもなる。

    対話によるCommon Lisp入門 10 コンス - by shigemk2
    pipehead
    pipehead 2013/03/28
    > 空リスト以外のリストをコンスという。コンス以外の全てのデータはアトムである。なお、空リストはNILでもある。nilはアトムであり、同時にリストであることにもなる。
  • 対話によるCommon Lisp入門 9 束縛と代入 - by shigemk2

    新しく変数を作って値を与えることを束縛といい、 すでに存在する変数の現在の値を変更することを代入ということが多いようだ。

    対話によるCommon Lisp入門 9 束縛と代入 - by shigemk2
    pipehead
    pipehead 2013/03/28
    > 新しく変数を作って値を与えることを束縛といい、すでに存在する変数の現在の値を変更することを代入ということが多いようだ。
  • 第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp

    なぜアルゴリズムを学ぶのか GCによる停止時間が長くなり、アプリケーションの処理時間が短くなると、業務に使える時間が短くなってしまいます。その問題を解決するために、GCをチューニングすることで、アプリケーションの停止時間を短くすることが考えられます。 その際大事なのは、GCのアルゴルズムを把握しておくことです。 GCのチューニングを行うときは、GCで行われている処理の内、どの処理に時間がかかっているかをモニタリング⇒分析⇒チューニングする、という流れになります。しかし、GCのアルゴリズムを知らないと、モニタリング結果を見てもどこに問題があるかがわからず、分析やチューニングを行うことができません。 今回は、以下の4つのアルゴリズムをご紹介します。 マーク&スイープGC コンパクション コピーGC 世代別GC GCのアルゴリズムはJVMの実装によって異なりますが、多くの場合、上記4つのアルゴリ

    第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp
    pipehead
    pipehead 2013/03/27
    マーク & スイープ GC, コンパクション, コピー GC, 世代別 GC
  • 動的に追加されるDOM要素に対応する方法あれこれ - Qiita

    Chrome拡張を作っていると,最近のモダンなWebサイトが後から動的にDOM要素を追加してきて困ることがある.毎度対処方法をぐぐっているので,ここにまとめておく. 追加される要素にイベントハンドラを付加したい jQueryのonメソッドにselectorを渡すことで,あとから動的に追加された子要素に対してもイベントを発火することができる. liveメソッドでも同様のことが出来たが,1.7で廃止された. 要素が追加されたことそのものを検出する DOMNodeInserted: 非推奨 要素が追加されたときに発火するDOMNodeInsertedというイベントが存在する.少し前に試した時はモダンなブラウザでは動いた. DOMに要素が挿入される度にイベントを起こすDOMNodeInsertedの扱い方 - 三等兵 にあるように,処理をブロックしないように非同期処理を行うべきだろう. 現在,DO

    動的に追加されるDOM要素に対応する方法あれこれ - Qiita
    pipehead
    pipehead 2013/03/25
    MutationObserver, webkitAnimationStart
  • NodeListを配列に変換するのにArray.applyを使うのはどうか - rikubaのブログ

    NodeListやHTMLCollectionを配列(Array)に変換する方法の一つに、Array.prototype.sliceを使う方法がある。 var array = Array.prototype.slice.call(document.getElementsByTagName('A')); でも、最近の実装であればArray.applyもその用途に使える。 var array = Array.apply(null, document.getElementsByTagName('A')); ES3ではFunction.prototype.applyの第二引数には配列(Array)かargumentsしか取れなかったけど、ES5でその制限が緩和され、NodeListなどの array like オブジェクトも渡せるようになった。 なお、IE8以下ではどちらの方法でもエラーになるので

    NodeListを配列に変換するのにArray.applyを使うのはどうか - rikubaのブログ
    pipehead
    pipehead 2013/03/22
    > argumentsの配列化にArray.applyは使えない。argumentsは要素が単一の数値だけになる可能性があり、その場合意図しない結果になる。