タグ

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

  • ステップアップのためのJavascriptデザインパターン入門(4) 【リビーリングモジュールパターン】

    今回はリビーリングモジュールパターンを紹介します。 リビーリングモジュールパターン このパターンはクリスチャン・ヘイルマンという人による、モジュールパターンを改良したパターンです。 全ての関数と変数をプライベートスコープ内で定義し、パブリックメンバとして公開したいプライベートメンバへのポインタを持つ無名オブジェクトを返します。 var myRevealingModule = function() { var privateVar = 'Hoge', publicVar = 'Foo'; function privateFunction() { console.log('Name:' + privateVar); } function publicSetName(strName) { privateName = strName; } function publicGetName() { pr

    ステップアップのためのJavascriptデザインパターン入門(4) 【リビーリングモジュールパターン】
    pipehead
    pipehead 2014/09/14
    Revealing Module パターン
  • デバッグを必修科目にするべき理由 | POSTD

    更新版: まずはここで私がコンソール ロギングでのデバッグを非難したり、無視しようとしているのではないということをはっきりさせておきたいと思います。コンソール ロギングは組み込み型プログラムやIDEがソースコードをスタックフレームに正しくマッピングできない場合、ブレークポイントが進捗を妨げてしまう場合等、様々な場合に使われます。要は他に適した方法がある時にコンソール ロギングを使うことを悪いと思っているのです。 プログラミングでは新しい機能を加える代わりに、 コードのメンテナンス と問題の解決にそのほとんどの時間を費やされるということが常識になっています。また、デバッグを通じて問題を発見できてもそのバグの解決方法がわからないということが多いのです。また ハイゼンバグやネッシーバグ のような再現できないバグに遭遇することもありますが、通常はどこを探すべきかが全くわからない状態で、大規模なコー

    デバッグを必修科目にするべき理由 | POSTD
  • "Microservices"を読んだ

    James Lewis氏とMartin Fowler氏による"Microservices"を読んだ.以前ざっと目を通したが,最近よく耳にするようになったのでちゃんと読んだ.以下はそのメモ. 概要 "Microservices" とはソフトウェアシステムの開発スタイルである 近年このスタイルでの開発を見てきて良い結果が出ている 初出は 2012 年の 3 月の"Micro services - Java, the Unix Way" Microservice は一連の小さなサービスで 1 つのアプリケーションを開発する手法 それぞれのサービスは自身のプロセスで動いており,軽量な機構(e.g., HTTP API)を通じて情報をやりとりする これらのサービスは独立して自動デプロイされる 一枚岩として構築される Monolithic スタイルのアプリケーションと比較すると分かりやすい 一般的なエ

    "Microservices"を読んだ
  • オブジェクト指向の法則集 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事は、故石井勝さんが1999年に書いた記事を Qiita に転載するものです。オブラブ(objectclub.jp)にて記事をホスティングしていましたが、現代でも十分に読める内容なので、たくさんの方に読んでもらいたいと思い、若干の編集(リンクとコンテキスト追加)を平鍋が行い、転載します。今でも、読みやすく、カジュアルな語り口のよい記事です。 オブジェクト指向の法則集(転載元:http://objectclub.jp/community/memorial/homepage3.nifty.com/masarl/article/oo-p

    オブジェクト指向の法則集 - Qiita
    pipehead
    pipehead 2014/09/10
    OCP, LSP, DIP, ISP, REP, CRP, CCP, ADP, SDP, SAP, デメテルの法則
  • プログラムコードを画像化できる「Instacode」 | ライフハッカー・ジャパン

    「Instacode」はプログラムコードを画像化できるサービスです。JavaScriptPythonRubyなどプログラミング言語でコードを書くとそのコードが画像として出力できます。ぼかしたり、影をつけたり加工をすることもできますよ。 以下に使ってみた様子を載せておきます。 まずInstacodeへアクセスしましょう。コードを書いて、シンタックスハイライトを選んで画像化します。 画像化されたあとにぼかしを入れたり影をつけたり加工することができますよ。単なる文字列のコードが加工された画像として表示されるとなんだかカッコよくなりますね。コードを画像として共有したいときにぜひ。 Instacode (カメきち)

    プログラムコードを画像化できる「Instacode」 | ライフハッカー・ジャパン
  • ステップアップのためのJavascriptデザインパターン入門(3) 【モジュールパターン】

    前回はコンストラクタパターンについて紹介しました。 今回はモジュールパターンについて紹介します。 モジュールパターン 従来のJavascript以外でのモジュールパターンというのは、クラスにパブリックとプライベートの両方のカプセル化をもたらす方法でした。 しかし、前回Javascriptにはクラスの概念が無いということを書きました。 Javascriptではクラスのような実装をモジュールパターンで再現することができます。 モジュールパターンを使用することで、1つのオブジェクトにパブリック・プライベートなメソッドや変数を取り込み、グローバルから特定の部分を隠蔽できます。 グローバル空間での変数名や関数名の衝突がしづらくなるわけです。 モジュールパターンでは、クロージャを使い変数やメソッドの隠蔽を実現します。 var testModule = (function() { // カウンタ変数 v

    ステップアップのためのJavascriptデザインパターン入門(3) 【モジュールパターン】
    pipehead
    pipehead 2014/09/10
    Module パターン
  • ステップアップのためのJavascriptデザインパターン入門(2) 【コンストラクタパターン】

    前回は第1回目ということで、そもそもデザインパターンとはなんぞや?という話に触れました。 今回から具体的なデザインパターンについて紹介していきます。 コンストラクタパターン コンストラクタ(Constructor)とはオブジェクトを作成し、初期化する関数のことです。 コンストラクタはJavascript以外の言語では「クラス」と呼ばれています。 プロトタイプベースの言語であるJavascriptでは、クラスの概念がありませんが、コンストラクタを作成することでクラスに似たオブジェクトを作成することができます。 コンストラクタは、オブジェクトを使用するための準備を行い、引数を受け取りオブジェクトの初回作成時にメンバのプロパティやメソッドに値を設定するのに利用します。 // コンストラクタを定義する function Person(name, age) { this.name = name; t

    ステップアップのためのJavascriptデザインパターン入門(2) 【コンストラクタパターン】
    pipehead
    pipehead 2014/09/09
    Constructor パターン
  • Pythonのモジュールについてまとめてみたよ

    Pythonのモジュールについて復習&まとめてみました。 基 Pythonでは拡張子が「py,pyc,pyo」のファイルをモジュールとして読み込むことができます。 モジュールはimportによって読み込まれた時点で実行され、モジュールオブジェクトとしてアクセスできるようになります。 Pythonにおけるグローバルスコープはモジュールに限定されており、 意図的に書き換えない限り実行されたコードが他のモジュールの値に影響を及ぼすことはありません。 また、グローバルスコープに宣言されたオブジェクトはモジュールオブジェクトの属性としてアクセスすることができます。 これはグローバル変数やモジュール変数と言ったりします。 このあたりについて詳しく知りたい方は以下をを参照ください。 https://note.crohaco.net/2017/python-scope/ Pythonでは名前空間という言

    Pythonのモジュールについてまとめてみたよ
  • jQueryの.each()に潜む罠 - 暮らしの技術

    .each()の話 jQueryの.each()を使うと,JavaScriptのオブジェクトか配列を対象にした繰り返しを簡単に記述できる.*1 var list = [0,1,1,2,3,5,8,13]; $.each(list, function(index, elem){ console.log(elem * 2); }); // 0 VM2035:4 // 2 VM2035:4 // 2 VM2035:4 // 4 VM2035:4 // 6 VM2035:4 // 10 VM2035:4 // 16 VM2035:4 // 26 VM2035:4 で,このeachにはもう一つ書き方がある. var list = [0,1,1,2,3,5,8,13]; $.each(list, function(){ // さっきは引数にindex, elemを指定していた console.log(

    jQueryの.each()に潜む罠 - 暮らしの技術
    pipehead
    pipehead 2014/09/08
    > $(selector).each()ではなく$.each()の方のお話.
  • Javaプログラマから見たJavaScriptデザインパターン(アクセス制御編 其の壱) - Qiita

    シリーズは、構想段階ではデザインパターンを淡々と列挙していく記事にしようと思っていたが、なかなかまとまらないので、備忘録ついでに今考えていることをそのまま投稿してしまうことにした。 (訳:いきあたりばったりで体系的ではありません。) ## 出来ればそのうち整理しよう…。 ※ JSの知識には自信ないので間違った点に気付いた方がいらしたらコメント等でご指摘いただけると助かります。 ※ 稿は直接的な「デザインパターン」についてはあまり焦点があたっていないのでご了承ください。 0.はじめに 編案内 Moduleパターンを利用したアクセス制御について紹介する。 編を通して、JSにおけるアクセス制御の一例を見てみる。 シリーズ案内 Javaプログラマから見たJavaScriptデザインパターン(導入編) シリーズの前提条件及びModule、Singleton、FactoryMethodパター

    Javaプログラマから見たJavaScriptデザインパターン(アクセス制御編 其の壱) - Qiita
    pipehead
    pipehead 2014/09/07
    Interceptor パターン
  • 【JavaScript】 MutationObserverの使い方 個人的まとめ - はりをきば

    DOMの変更を検知するイベントが非推奨になり 代わりに新しく作られたMutationObserverなるもの。 MutationObserver - Web API インターフェイス | MDN https://developer.mozilla.org/ja/docs/Web/API/MutationObserver DOM変更検知は結構よく使うもの(特にユーザースクリプト)なのに 日語の解説サイトが↑のMDNとMSDN、ここくらいしかなく その都度ググったり手探りで片っ端から試すのが面倒なので以下に自分用にまとめる。 コンストラクタ まずインスタンスを作る。 window.MutationObserverコンストラクタの引数に、DOM変更を検知した際に実行する関数を渡す。 function omega(data1, data2) { alert("ワレハメシアナリ"); consol

    【JavaScript】 MutationObserverの使い方 個人的まとめ - はりをきば
  • クラスの命名のアンチパターン - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 昔から「名は体を表す」と言ひます。クラスの名前がクラスの果たす役割と一致してゐるかどうか常に考へ続けませう。 ImageInfo, AccountData, etc. Info って何やねん? Data って何やねん? ImageInfo って Image とはどう違ふねん?? FooInfo や FooData よりも好ましいかもしれない名前の例: FooAttribute, FooProperty, FooMetadata, FooDescription FooConfiguration, FooSetting, FooParame

    クラスの命名のアンチパターン - Qiita
  • 型安全性とは何か | POSTD

    以前書いた(C言語についての) メモリ安全性について定義した記事 について、型安全性について説明する記事も投稿してほしいというコメントがありました。型安全性についてはかなりよく知られてきていると思いますが、ズバリこうだと簡単に定義できるほどにはまだ理解が浸透していません。特に誰かが”Javaは型安全な言語だ”と言った場合、これは厳密に何を意味するのでしょう。全ての型安全な言語はある意味”同じ”と言えるでしょうか。ある特定の言語について、そして一般的な意味で、あなたを悩ませる型安全性とは何でしょうか。 実際のところ、型安全性が何を意味するのかは言語の型システムの定義によります。最もシンプルなケースでは、型安全性はプログラムの動作が正しく定義されるように保証します。もっと一般的な話をすると(この記事ではそのあたりをカバーするつもりですが)、言語の型システムはそのプログラムの正確さと安全性を推論

    型安全性とは何か | POSTD
  • Pythonのロギングについてお勉強したメモ

    >>> import logging >>> logging.log(100, 'test') Level 100:root:test # [ばっど] 書式文字列はその場で組み立てずに >>> logging.warn('test %s,%s' % (1, 2)) WARNING:root:test 1,2 # [ぐっど] 引数として渡す >>> logging.warn('test %s,%s', 1, 2) WARNING:root:test 1,2 # 文字列以外が渡されると文字列に変換される >>> logging.warn({'a': 1}) WARNING:root:{'a': 1} 書式文字列をその場で組み立てないほうがよい理由は、 後述するハンドラやフィルタによってそれぞれの引数を参照することができるからです。 また、出力関数は引数に文字列以外が渡されると文字列に変換されて

    Pythonのロギングについてお勉強したメモ
    pipehead
    pipehead 2014/09/01
    logging モジュール
  • Javaプログラマから見たJavaScriptデザインパターン(導入編) - Qiita

    仕事などでJSを書くようになって少々経つが、Java信者で頭が固い僕にとってはどうもJSというのは柔らかすぎてしっくりこない部分が多い。 考え方を整理するにはデザインパターンを知るのが早いと、最近思い立ったので改めて調べてみた。 ということで、Javaは大体分かるし、JSも書くけどそこまで詳しくない人向け(つまり自分主体)にまとめておく。 今のところシリーズ化予定。 ※ JSの知識には自信ないので間違った点に気付いた方がいらしたらコメント等でご指摘いただけると助かります。 ※ デザインパターンとして挙げているコードは、個人的にアレンジしている場合がありますので、ご了承ください。 0.はじめに 編案内 内容に入る前に、予備知識をおさらい。要点ではないのでざっくり。 シリーズ案内 Javaプログラマから見たJavaScriptデザインパターン(導入編) Javaプログラマから見たJavaSc

    Javaプログラマから見たJavaScriptデザインパターン(導入編) - Qiita
    pipehead
    pipehead 2014/08/27
    Module パターン, Singleton パターン, FactoryMethod パターン
  • http://kwatch.houkagoteatime.net/blog/2014/08/24/python-pitfalls/

  • 即時関数のメリットと主な用途|もっこりJavaScript|ANALOGIC(アナロジック)

    即時関数の構文 即時関数はスコープを汚染せずに新たなスコープを作成するための唯一の手段 即時関数が使われるケース まとめ JavaScriptには「即時関数」という構文があります。即時関数は関数を定義すると同時に実行するための構文で、この即時関数を使ってコードを書いたことのある方も多いのではないかと思います。 JavaScriptに慣れている方にとっては「何を今さら」といった書き出しかもしれませんが、私はこの即時関数を初めて知った時、その必要性がイマイチ見出せませんでした。それは、「関数を定義と同時に実行するのは分かるけど、別に普通に関数を定義して、その関数を呼び出せばいいじゃん」って思ったからです。 確かに、一度しか使われないような関数をいちいち名前付きで定義してそれを呼び出すというコードは冗長的かもしれません。そのような場合は即時関数を使った方がよりスマートなコードになるでしょう。です

  • intro-to-aop

    複雑なアプリケーションではロギング、 トレーシング 、メトリクスといったサポートの機能により、関数にすぐ負荷がかかってしまいます。これらのコードブロックはあらゆるコードベース上でそれぞれ少し変形して繰り返し使用されるのですが、これを 横断的関心事(cross-cutting concerns) と言います。 アスペクト指向プログラミング (AOP)は、アスペクトと呼ばれるモジュール内にコードブロックを引き入れて、 関心の分離 (separation of concerns)を手助けします。 AOPの実装 Phoneクラス ^(1) 不自然な例だというのは承知の上で、 dial メソッド1つを使って簡単なPhoneクラスを構築してみました。 function Phone() {}; Phone.prototype.dial = function (friend) { var start =

    intro-to-aop
    pipehead
    pipehead 2014/08/20
    https://abstractowl.github.io/2014/07/09/intro-to-aop.html の和訳; meld で関数からトレーシングとロギングを分離
  • アルゴリズムとプログラミングをビジュアルで一挙に理解できる「VisuAlgo」

    アルゴリズムを理解するのにビジュアル化することは非常に有効で、プログラムをビジュアル化することで理解が進むのもまた同じ。そこで、アルゴリズム・プログラミングの理解が進むようにと、アルゴリズムを記述したプログラムコードを一挙にビジュアル化することで、アルゴリズム&プログラミングを同時に学習できる一挙両得なサービス「VisuAlgo」が公開されています。 VisuAlgo - visualising data structures and algorithms through animation https://visualgo.net/en 上記のVisuAlgoサイトで試しにソートアルゴリズムの基プログラム「バブルソート」をビジュアル化してみます。「Sorting」の「bubble」をクリック。 検索窓の下に「bubble」と表示されたのを確認したら「Sorting」の画像をクリック。

    アルゴリズムとプログラミングをビジュアルで一挙に理解できる「VisuAlgo」
  • switch文を使ってはいけない

    昔Qiitaで書いた内容なんですが、PHPswitch文は悪名高い「==」演算子で比較を行います。 <?php switch (true) { case 0: echo '数字の0'; break; case '0': echo '文字列の0'; break; case '0.0': echo '文字列の0.0'; break; case true: echo '真偽値のtrue'; break; } このコードは「文字列の0.0」を出力します。大変分かりにくいですね。 この点はif ... elseif ...を使えば解決するんですが、switchで書きたくなるようなコードをelseifにするとおそらく読みにくくなるでしょう。 ではどうするか。 正解はオブジェクトのポリモーフィズム(多態性)機能を使うことです。 といっても、多態性で調べて出てくる記事とか書籍に関しては抽象的な説明が多い

    switch文を使ってはいけない
    pipehead
    pipehead 2014/08/14
    State パターン