タグ

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

  • 静的スコープと動的スコープ・浅いアクセスと深いアクセス - ksmakotoのhatenadiary

    目的 静的スコープと動的スコープ・深いアクセスと浅いアクセスについて、現代的でまとまった解説が検索では見つからないようなので書いてみる。 余談1: スコープとエクステント プログラミング言語において「スコープ」(可視範囲)と同様程度に習得すべき概念に「エクステント」(生存期間・寿命)がある。エクステントも重要だが、この文章では必要最低限を除いて触れない。 グローバル(スコープ)とローカル(スコープ) この文章を読むための前提として、スコープについてグローバルとかローカルといったものについては既に理解しているものとする。モジュールあるいは関数などを「またいで」可視なものがグローバル、モジュール内だけや関数内だけといった「狭められた範囲だけ」に可視なものがローカル、といった程度の理解で良い(どうせ厳密にはそれぞれの言語and・or実装により異なる)。 静的スコープと動的スコープ 手続き(関数)

    静的スコープと動的スコープ・浅いアクセスと深いアクセス - ksmakotoのhatenadiary
    pipehead
    pipehead 2015/01/30
    クロージャ, 環境
  • JavaScript ベストプラクティス Part 1 | POSTD

    ThinkfulはWeb/スマートフォンアプリの技術などを学ぶことができるオンラインスクール。プロフェッショナルな開発者がメンターとして1対1で伴走するため、他の同様サービスよりも続けることができる。 Javascript ベストプラクティス パート1 2つのパートに分けてお届けする「ベストプラクティス」のパート1では、MozillaのWebエバンジェリストであるChristian Heilmannが提供する人気のスライドショーから内容を抜粋しています。JavaScriptにはひどく扱いにくい特徴がいくつかありますが、それはこれまで以上にソフトウェア開発において重要になっています。この「ベストプラクティス」ではより読みやすく、効率の良いコードを書く手助けとなるサンプルコードやその使用例を紹介していきます。 もしWeb開発についてもっと学びたいと思うのであれば、私たちが提供しているフロントエ

  • 遅すぎたUnderscore.js詳述 - Arrays編 - Qiita

    いまどこ? 配列に関する章です 1 . 遅すぎたUnderscore.js入門 - 全体像 2 . 遅すぎたUnderscore.js詳述 - Collections編 3 . 遅すぎたUnderscore.js詳述 - Arrays編 ←いまここ 4 . Functions 5 . Objects 6 . Utility 7 . Chaining この章の全体的な感想 最初は「配列かー、JS標準機能で十分と思ったけど、どうしてやるんだろ?」てなくらいに思っていたのですが、見て行くうちにその背景には_.initialでargumentsオブジェクトを配列として捉えることとか、色々深そうな話があると思ったのですが、掘り下げはそこそこにしてAPIを淡々とみていきます。 あとまぁ、ぶっちゃけこれはやりすぎじゃね?っていう逆に煩雑だなって思うところもありましたが、やりすぎるのがUnderscore

    遅すぎたUnderscore.js詳述 - Arrays編 - Qiita
  • マイナーな? rem を推してみる。 - なんだこれは

    Common Lispの剰余計算は二種類ある。 mod と remだ。common lispで剰余というと、多くは mod があげられる。マイナーな remがかわいそうです。 計算結果を比べてみる。 HyperSpec の計算例を引用すると、 引数の符号が異なる場合に返り値が異なるが、両方符号が同じ場合は同じになる。 (rem -1 5) ;=> -1 (mod -1 5) ;=> 4 (mod 13 4) ;=> 1 (rem 13 4) ;=> 1 (mod -13 4) ;=> 3 (rem -13 4) ;=> -1 (mod 13 -4) ;=> -3 (rem 13 -4) ;=> 1 (mod -13 -4) ;=> -1 (rem -13 -4) ;=> -1 (mod 13.4 1) ;=> 0.4 (rem 13.4 1) ;=> 0.4 (mod -13.4 1) ;

    マイナーな? rem を推してみる。 - なんだこれは
    pipehead
    pipehead 2015/01/25
    > 引数の符号が異なる場合に返り値が異なるが、両方符号が同じ場合は同じになる。
  • エレベーターゲームで学ぶプログラミング『Elevator Saga』 | 100SHIKI

    初心者向けとは言いがたいが、なかなかおもしろかったのでご紹介。 Elevagtor Sagaではエレベーターのシミュレーションを通じてプログラミングを学べるサイトだ。 レベルごとに課題が与えられて、独自のアルゴリズムを組むことでクリアーしていく。 APIなどはサイトで公開されているのでそれを組み合わせればいいだろう。 自分なりのコードを組んで「Start」ボタンを押すとグラフィカルに結果がわかってなかなか楽しい。ちょっと難しいかもしれないが興味がある人は是非どうぞ。

    エレベーターゲームで学ぶプログラミング『Elevator Saga』 | 100SHIKI
  • Python と型ヒント (Type Hints) - forest book

    先日、Python の静的型チェッカーとして mypy を紹介しました。 mypy で静的型付け Python プログラミング - forest book 私には難しくてまとめきれないため、Guido が参照している漸進的型付け (Gradual Typing) も含め、また別の機会に、、、。 とか言っているうちに1ヶ月ほど経ってしまいました。 そうこうしているうちに PEP のドラフトも出てきたので区切りとしてまとめておきます。一通り調べたことを基にして書いていますが、私の誤解や勘違いもあるでしょうから怪しいところがあったら調べ直してみてください。もちろんツッコミも大歓迎です。 型ヒント (Type Hints) を導入するという提案 PEP 483 - The Theory of Type Hints | Python.org PEP 484 - Type Hints | Python

    Python と型ヒント (Type Hints) - forest book
  • インタフェースと抽象クラスどっち使ったらいいんだ? - Qiita

    どういうケースでどちらを使うかとか知りたかった。 まず結論からいうと多様な議論があるようだった。 だからこれを読んだかたは鵜呑みにせずにいっしょに考えてもらいたい。 インタフェースと抽象クラス 結論、インタフェースって? クラスの型(仕様)を定義するもの。 カプセル化と多態性を要求する意味あいが強い。 結論、抽象クラスって? 継承関係をもつ実装の再利用をできる。 継承と多態性を要求する意味あいが強い。 インタフェースとは インタフェースのメンバ変数は必ず定数。自動でfinal public staticとなる。 抽象メソッドのみ記述可能。自動でpublic abstractとなる。 実装クラスは、全ての抽象メソッドを実装する必要ある 多重継承できる。ミックスインというらしい。 多重継承できるけど、メンバ変数は一意でなければならん メソッドの場合は実装をもたないのでダブってても競合せず問

    インタフェースと抽象クラスどっち使ったらいいんだ? - Qiita
    pipehead
    pipehead 2015/01/23
    > 抽象クラスと派生クラスは「継承」の関係はIS A関係と呼ばれている対して、インターフェイスと実装クラスの「実装」の関係はCAN DO関係と呼ばれているそうです。
  • Island Life - 入れ子のバッククオート

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 米国の大学進学無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...More... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチェ on ハイポハ

    Island Life - 入れ子のバッククオート
    pipehead
    pipehead 2015/01/23
    > ポイントは comma-quoteが互いにキャンセルするということ。後は右側から展開されてく。
  • 遅すぎたUnderscore.js詳述 - Collections編 - Qiita

    いまどこ? 基の関数をひとつずつ見ていく章です 1 . 遅すぎたUnderscore.js入門 - 全体像 2 . 遅すぎたUnderscore.js詳述 - Collections編 ←いまここ 3 . 遅すぎたUnderscore.js入門 - Arrays編 4 . Functions 5 . Objects 6 . Utility 7 . Chaining 前回でUnderscore.jsの全体像を見終わったので、今回からひとつずつAPIをみていきます。 基的に家サイト(underscorejs.org)の章立てに合わせていきたいと思います。 この章は最初が重たいですが、だんだんと被ってくるので最初を抜けたら楽になります。 注意点 家のコードを加筆・書き換えしたり、メタファー(たとえ)としてあえて厳密でない言葉で書いたりしていますのでご了承願います。 また、重複する説明が削

    遅すぎたUnderscore.js詳述 - Collections編 - Qiita
  • 文芸的プログラミング - Strategic Choice

    literate programmingどういうこと?プログラムそのものを、ドキュメンテーションにする、というプログラミング手法です。柱となっているのは「プログラマーが書くのはプログラムではなく、ドキュメントである」という単純な考え方です。文芸的プログラミングでは、ドキュメントを記述するための言語が、プログラミング言語と密接に結び付けられています。ここでのドキュメントは、まず第一に、何がプログラミングされているのかを明らかにするための説明ですが、それは同時に、コンパイルされてプログラムに組み込まれる対象でもあります。ソースコードはドキュメントでもあり、ドキュメントはソースコードでもあるのです。文芸的プログラムは、ほとんど物語のように書かれています。そのコードは、人間が筋道をたどりながら容易に読むことができます。言語の解析器に適した順序や制約に従って記述する必要はありません。これは単にコメン

    文芸的プログラミング - Strategic Choice
    pipehead
    pipehead 2015/01/21
    literate programming
  • アーキテクチャ、技術、そしてアンチパターン「溶岩流」

    あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

    アーキテクチャ、技術、そしてアンチパターン「溶岩流」
    pipehead
    pipehead 2015/01/20
    > 一貫した設計戦略や設計哲学がないプロジェクトでは、新しい設計や実装を導入できるが、それが、古いものを完全に置き換えることはほぼあり得ない。
  • Python でダミーサーバーを立てよう! - もろず blog

    2015年一発目の記事です! 今年もよろしくお願いします さて、開発していく中で外部APIとの連携、メール送信などのテストのためにダミーのサーバーが必要になる場面はよくあると思います 最近仕事でまた必要になったんですが、わざわざ専用のサーバーを入れるほどでもなかったので Python で動くスタブのサーバーをつくりました いろいろインストールして準備する必要がないように CentOS 6.4 にデフォルトで入っている Python 2.6.6 上で動かせるようにします この記事では 1. ダミーサーバーの立て方 2. ダミーサーバーをカスタムする 3. ダミーサーバーをデーモン化する 4. まとめ について説明します 1. ダミーサーバーの立て方 今回は以下の2つのダミーサーバーを用意します 外部 API をシミュレートする Web サーバー メール送信時に接続する SMTP サーバー ま

    Python でダミーサーバーを立てよう! - もろず blog
  • What is Gradual Typing: 漸進的型付けとは何か - Qiita

    稿は Python に型アノテーションを追加するという PEP 483 - The Theory of Type Hinting の提案で参照されている Jeremy Siek (@jeremysiek) 氏と Walid Taha 氏が開発した漸進的型付けについての入門記事の翻訳です。 What is Gradual Typing Python 3.5 で導入された型アノテーションについて興味がある方は以下を参考にしてください。 Python と型ヒント (Type Hints) と #pyconjp [翻訳] PEP 0484 -- 型ヒント (Type Hints) Revenge of the Types: 型の復讐 私自身、型システムに明るくないため、一部未訳の部分があったり、勘違いや誤訳もあると思います。そういった誤りを見つけたら編集リクエストを送ってもらえると助かります。

    What is Gradual Typing: 漸進的型付けとは何か - Qiita
  • JavaScript で DOM 要素の絶対座標を取得する方法 - tmlife

    備忘録. スペニット的に使ってもらえれば幸いです. DOM 要素の絶値座標を取得する element.scrollTop とかだと親からの相対値になっちゃいます. getBoundingClientRect() を使えば絶対座標を取得できます. window.onload = function() { var element = document.getElementById('hoge'); // hoge というIDがついたやつを取得する var rect = element.getBoundingClientRect(); console.log(rect.left); // x座標(絶対座標) console.log(rect.top); // y座標(絶対座標) console.log(rect.width); // 幅 console.log(rect.height);

    pipehead
    pipehead 2015/01/14
    getBoundingClientRect()
  • jQueryとSizzleの関係について - console.lealog();

    事の発端。 jQueryの使わない機能があまりに多いのでカスタムビルドすることにした Sizzleも外せることを知る(容量がgzipで20KB分くらい減る) 外すと何が変わるか気になる <- いまここ ってなモチベーションで調べた一連の内容です。 jQueryとSizzleの関係 あらためて一応。 「jQueryといえば」な以下のようなコード。 var $hoge = $('#hoge'); // こういうのとか var $fuga = $('.fuga'); // こういうのとか $hoge.find('.foo'); // こういうのとか $hoge.text(); // 実はこういうのも そう、いわゆるこのセレクタの実態がSizzleなのです。 正確にはもう少し他のメソッドにも関係があります。 jquery/sizzle で、そのSizzleがjQueryの中でどういう動きをしてるか

    jQueryとSizzleの関係について - console.lealog();
  • 10年間JavaScriptをコピペしていた僕がJavaScript本格入門して知った驚愕のJavaScript言語仕様覚書 | niwatako$

    JavaScriptをなめていた私が勉強しなおした結果、色々驚愕の事実が発覚したお話。JavaScriptをご存じの方には当然の内容かもしれません。 むかしむかし 私にとってJavaScriptといえば、高校生時代(10 […]

  • jQueryとAngularJSにおけるAjaxの微妙な違い | ゆっくりと…

    AngularJS の勉強、始めました。 最初はそのプログラミングに関する独特のお約束事項にイラッとしましたが、キモであろう DI を「疎な関係のクラスを(実行時に)結びつけるのに必要な仕組み」と割り切り、DI – 猿でも分かる! Dependency Injection: 依存性の注入 で引用されている ITpro 記事 の クラス図 をコードから想像できるようになったところで、それなりに面白くなってきました。 何より「jQuery が要らなくなる!」のがとっても快感なんです (つらい時もあるけど…)。 さて今回は、jQuery まみれのページを AngularJS で書き換えた時に気付いた Ajax の動作 − 非同期通信の戻り値をいつどこで DOM に反映するか − に関する話題を書いてみます。 jQueryの場合 検索のクエリを渡すと Github のリポジトリを返す関数を例にとっ

  • Revenge of the Types: 型の復讐 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 稿は Python に型アノテーションを追加するという提案が行われたときに起こった Python コミュニティの議論の後、2014年8月24日 (日) に Armin Ronacher (@mitsuhiko) 氏によって書かれた記事の翻訳です。 Revenge of the Types Revenge of the Types by Armin Ronacher : Python (REDDIT) Revenge of the Types | Hacker News Python 3.5 で導入を検討している型アノテーションについて

    Revenge of the Types: 型の復讐 - Qiita
    pipehead
    pipehead 2015/01/10
    /* http://lucumr.pocoo.org/2014/8/24/revenge-of-the-types/ の和訳 */ > 静的型付けが意味をなすには、型システムが良いものである必要があります。2つの型を与えられたとき、型が互いにどう関係しているか分かるような型システムがそれ
  • Lispの悟りが分かっちゃう新春ポエム - Qiita

    こんにちは、悟っちゃったLisperです。 皆さんにLispの悟りとは何かを悟らせたいと悟ったので、今回はLispの悟りを解説したいと思います。 まず、Lispの悟りが良く口にされるようになったのは、エリック・レイモンド氏が無責任に適当なことを書いたからです。 ハッカーになろう (How To Become A Hacker) LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。 この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。 たとえ、実際には LISP そのものをあまり使わなくても。 彼の言う悟りが結局なんのことなのかは不明ですが、悟りですので、理解できなくても良いのです。 ちなみに、今回述べることは、レイモンド氏の主張とも矛盾しないものです。 TL;TR Lispの悟りを感覚として理解するのは非常に簡単です。 貴方は、データ処理を頼

    Lispの悟りが分かっちゃう新春ポエム - Qiita
    pipehead
    pipehead 2015/01/08
    > ちなみに、LISPのリストが即ちASTという風にはマッカーシ先生も考えてはいません。Lispにおいては、実質ASTのようなもの位の解釈のようです。
  • 参照透過なランダム関数を探してたら、謎の数字と出会う - Qiita

    9301 49297 233280 この数字に見覚えのある奇特な方はいますか? まさかいないですよね・・・ Math.random()は毎回違う結果が出る( != 参照透過) 最初に確認しておきたいのは、参照透過とはざっくり言うと「同じ環境では毎回同じ結果になる」ということです。 しかしMath.random()はたしか時間をもとにしてるので同じ環境でも時間が違うから同じ結果にならないということですね。(同じ時空に戻れば同じ結果になると思いますがw) 関数型言語が特にQiitaで盛り上がっていますよね。 そこにちょっと気になった文章がありました。 Math.randomは呼び出すごとに異なる値を返す可能性があるので参照透明ではありません。 from 関数型言語のウソとホント たしかに・・・ そうきたら・・・ ( ´_ゝ`) < JSでも参照透過な乱数を見てみたい... 探してみた いや、も

    参照透過なランダム関数を探してたら、謎の数字と出会う - Qiita