タグ

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

  • C 言語の共用体とビットフィールドの簡単なサンプル - Qiita

    はじめに C / C++ では Java などの他の言語では使えない「共用体」と「ビットフィールド」という機能があります。これらは、システム記述言語として C らしい機能です。 共用体とは まず、共用体ですが構造体に似ていますが、構造体と異なり1つのメモリ領域を使います。したがって、あるフィールドが変更されると、他のフィールドが影響を受ける場合があります。 共用体の使い道ですが、あるワードの上位バイトと下位バイトを入れ替えるとか、いくつかのバイトからなるデータを1回でクリアしたいとかなどが考えられます。 共用体のサンプル # include void main() { union LongWord { long int lw; int iw[2]; short sw[4]; unsigned char b[8]; }; union LongWord ld; ld.lw = 0; ld.sw

    C 言語の共用体とビットフィールドの簡単なサンプル - Qiita
  • lambda フォームの使いどころ - Qiita

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

    lambda フォームの使いどころ - Qiita
    pipehead
    pipehead 2015/03/12
    > lambda form とは、フォームの先頭が、通常のように関数名ではなく (lambda (...)...) であるようなフォームのことです。
  • 【Javascript】値渡しと参照渡しについてあらためてまとめてみる - Qiita

    var a, b; a = 0; b = a; b = 5; console.log(b); // 5 console.log(a); // 0 (aは変わらない) var c, d; c = [0,1,2]; d = c; d[0] = 5; console.log(d) // [5,1,2] console.log(c) // [5,1,2] (cも変わる) 値渡しと参照渡しについて理解されている方ならなんの問題もないですが、これは上のコードを見て ***??????***となった方向けの記事です。 結論から言うと、Javascriptにおいて プリミティブ型は値渡し、オブジェクト型は参照渡しとなります。 ざっくり言うと、値渡しはその値そのものの情報を別の変数に渡していて、参照渡しはメモリ上のどこを参照しているかの情報を別の変数に渡しているか、という違いですね。 ちなみに、Javasc

    【Javascript】値渡しと参照渡しについてあらためてまとめてみる - Qiita
    pipehead
    pipehead 2015/03/11
    > Javascriptにおいて プリミティブ型は値渡し、オブジェクト型は参照渡しとなります
  • モノモーフィズム(単相性)について – JavaScriptのパフォーマンスを例に | POSTD

    JavaScriptのパフォーマンスに関する講演やブログ記事では、よく単相的コードの重要性が強調されています。しかしながら、モノモーフィズム(単相性)/ポリモーフィズム(多相性)とは何なのか、それがどうパフォーマンスに影響してくるのかということについては、あまり分かりやすく説明されていません。私自身の講演でも、<< 1.良い型、2.悪い型 >>的な二者択一のスタイルに要約してしまうことが少なくありません。パフォーマンスに関するアドバイスを求められることがありますが、そういう時に最もよくリクエストされるのは、 モノモーフィズムとは実際のところ何なのか 、ポリモーフィズムがなぜ生じ、それがなぜ悪いのか、ということを説明して欲しいというものです。 困ったことに、そもそも「ポリモーフィズム」という用語そのものが相当に多重定義されています。昔ながらのオブジェクト指向プログラミングにおいては、 ポリモ

    モノモーフィズム(単相性)について – JavaScriptのパフォーマンスを例に | POSTD
    pipehead
    pipehead 2015/03/11
    http://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html の和訳; JavaScript VM の最適化の話; インライン・キャッシュ (IC), hidden class (map, shape), 単相型 (monomorphic), 多相型 (polymorphic)
  • scrollIntoView :: 任意のElement位置まで画面をスクロールさせるメソッド - Qiita

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

    scrollIntoView :: 任意のElement位置まで画面をスクロールさせるメソッド - Qiita
  • エスケープシーケンス - コンソール制御 - 碧色工房

    コンソール制御の話をしていこうと思う。 ここでは必要となる基的な制御コードと、 その記述に必要なエスケープシーケンスについて説明する。 制御コード まず制御コードについて簡単に説明する。 現在一般的に使用されている、半角英数字を表現するのに使われている1byteコードは、 ASCII(American Standard Code for Information Interchange)コードである。 ASCIIコードは1byte=8bitのうち、7bitを利用し、各番号に文字が割り当てていて、その羅列で文字列を表現する。 しかし、英語圏で使われる、英数字、記号は合わせて割り当てても、7bit=128パターンにあまりがある。 その余った領域に表示文字以外の意味が割り当てられている。これを制御コードと呼んでいる。 制御コードと言われると、何やら難しい物を想像するかもしれないが、何も特別なもの

    エスケープシーケンス - コンソール制御 - 碧色工房
    pipehead
    pipehead 2015/03/07
    \xXX, \ooo, \uxxxx, \Uxxxxxxxx
  • ANSIエスケープコード - コンソール制御 - 碧色工房

    前回は、 一般的な文字列リテラルに、制御コード等を記述するためのエスケープシーケンスについて解説した。 これの発展形、というか、より柔軟な指定ができ自由度の高い制御方法として、ANSIエスケープコードというものがある。 以前の記事で、簡単な一覧を紹介したことがあるが、 改めて整理して紹介してみようと思う。 そもそもエスケープシーケンスは、狭義にはエスケープコードから始まるシーケンスなので、 むしろこちらのほうが来のエスケープシーケンスというべきかもしれない。 ANSIエスケープコードとは 詳細な一覧は Wikipedia英語ではあるが載っている。 できることは大まかにいうと、 コンソール上のカーソル位置の移動、出力済みテキストの消去、コンソールのスクロール、 テキストフォントの種別指定、前景色、背景色の指定、といったところになる。 いわゆる端末エミュレータと呼ばれるコンソールでこのシ

    ANSIエスケープコード - コンソール制御 - 碧色工房
  • JavaScriptベストプラクティス Part 2 | POSTD

    ThinkfulはWeb/スマートフォンアプリの技術などを学ぶことができるオンラインスクール。プロフェッショナルな開発者がメンターとして1対1で伴走するため、他の同様サービスよりも続けることができる。 「ベストプラクティス」パート2でも、引き続きMozillaのWebエバンジェリストであるChristian Heilmannが提供するスライドショーから内容を抜粋します。パート1同様、ご紹介するのはメンテナンス性が高く効率の良いコードを書く手助けとなるJavaScriptのベストプラクティス例です。JavaScriptがソフトウェア開発で大きな割合を占めているような場合、不要なものがなく読みやすいコーディングがより重要になってきます。 もしWeb開発についてもっと学びたいと思うのであれば、私たちが提供しているフロントエンドWeb開発コース、もしくはAngularJSコースを覗いてみてください

  • 関数型プログラミング入門 | POSTD

    多くの関数型プログラミングに関する記事が教えてくれるのは、抽象的な関数型のテクニックです。つまり関数合成やパイプライン、高階関数などです。この記事では違います。ここでは、プログラマが毎日書く、命令型で非関数型のコードの例を示し、それを関数型の形式へ書き換えます。 最初のセクションでは、短いデータ変換のループを取り上げ、map関数やreduce関数に書き換えていきます。2つ目のセクションではより長いループを取り上げ、ユニットに分解し、それぞれのユニットを関数型に書き換えます。3つ目のセクションでは、連続した長いデータ変換のループを関数型のパイプラインに分解します。 ここではPythonでの例を取り扱います。というのも多くのプログラマはPythonを読むのは簡単だと思っているからです。多くの例では、mapやreduce、パイプラインなどの多くの言語に共通する機能を例示するため、Python的な

    関数型プログラミング入門 | POSTD
  • 2015年の最優先事項は関数型プログラミング! | POSTD

    —もはやOOP(オブジェクト指向プログラミング)は”クラウドモンスター”から私たちを守りきれない おそらくあなたは、”Clojure”、”Scala”、”Erlang”といった言葉や、”Javaにラムダ式が導入された”という話を聞いたことがあるでしょう。そしてそれらの言葉が”関数型プログラミング”と関連があるのをご存じかもしれません。プログラミングコミュニティに参加していれば、おそらく既にこのテーマが議題に上がっているでしょう。 Googleで”関数型プログラミング”を検索しても、目新しいものは何も見つかりません。言語の中で2番目に古い言語は、関数型プログラミングを利用しています。1950年代に登場した、Lispという言語です。では一体なぜ人々は、今になって関数型プログラミングに沸き立っているのでしょうか? およそ60年も経っているのに? 初期の頃、コンピュータは実に遅かった 信じられない

    2015年の最優先事項は関数型プログラミング! | POSTD
    pipehead
    pipehead 2015/02/19
    https://medium.com/@jugoncalves/functional-programming-should-be-your-1-priority-for-2015-47dd4641d6b9 の和訳; 第一級関数, 高階関数, 純粋関数, クロージャ, 不変状態
  • 連結リスト(リンクリスト)とは - IT用語辞典 e-Words

    連結リストとは、基的なデータ構造の一つで、複数のデータを格納することができ、各データが一つ前あるいは後(もしくはその両方)のデータへの参照情報(リンク、ポインタ)を持っている構造のこと。 同種の要素を複数格納できる「コンテナ」(container)あるいは「コレクション」(collection)と呼ばれるデータ構造の一種である。各要素はデータ自体の他に自分の隣の要素を指し示す所在情報(リンク)を持っている。これをたどることで、各要素に順番にアクセスすることができる。 前あるいは後ろの要素は一つだけ持つことができ、途中で枝分かれはしない。先頭から末尾まで数珠繋ぎに要素を連結したものを「線形リスト」(linear linked list)、すべての要素が円環状に連結されていて先頭や末尾が存在しないものを「循環リスト」(circular linked list)という。 各要素が自分の次(後ろ

    連結リスト(リンクリスト)とは - IT用語辞典 e-Words
  • jQuery(JavaScript)でHTMLエスケープするときの注意点と対処法

    HTMLエスケープの注意点 昨日、このような記事がはてブに上がっていた。 innerText(textContent)/innerHTMLを使ったHTMLエスケープは充分でないので今すぐやめろ、お前たちはもう終わりだ 要約するとreturn $('<div />').text(content).html()を使用したやり方だと「"」などをエスケープしないので.replaceで置き換えたものを使いましょうという話。 ただし、元記事のコードだと`(グレイヴアクセント)の置換処理が入っていなかったので下記のように書き換えるほうが良さそうだ。 var str = '& < > ` " ' + "'"; var escapeHtml = (function (String) { var escapeMap = { '&': '&amp;', "'": '&#x27;', '`': '&#x60;',

    jQuery(JavaScript)でHTMLエスケープするときの注意点と対処法
  • 小さく始める JavaScript のテスト - Qiita

    JavaScript のテスト 書かないと怒られるし、書きたいとは思っているが、書くまでの敷居がやたらと高くなってしまった気がしている人へ。 最小のテスト 質的にテストを書くのにフレームワークはいらない。 assertion だけあればいい。 isomorphic にしたいなら、 node の assert モジュールすら使わず console.assert だけで書ける。 // assert function assert(actual, expected) { console.log('.'); console.assert(actual === expected, '\nact: ' + actual + '\nexp: ' + expected); } function TestSum() { assert(1+2, 3); } // exec TestSum(); あとは普通に

    小さく始める JavaScript のテスト - Qiita
  • JavaScriptのモジュールシステムの歴史と現状 - Qiita

    社内向け資料。自分が書いたコードを説明するために資料作る羽目になった。 昔のことはうろ覚えで雰囲気で書いてる部分もあるので、そこらへん勘弁。 古の時代(~2010) 前提としてJavaScriptは名前空間がwindowの一つしかない。 昔Prototype.jsがあった。もうみんな忘れたけどあの時期はプリミティブなオブジェクトのprototypeを生やしまくって、それが衝突しまくってprototype良くない的な雰囲気が生まれたり生まれなかったりした。 その反省があってか(歴史的に若干微妙な気がするが) jQueryは名前空間を一つに集約した。いわゆる jQueryPlugin は、jQueryのプロトタイプにヘルパを生やしまくっていた。グローバルを汚すのは駄目だけどjQueryの名前空間を汚すのはいいよね、ぐらいの考え。 jQuery非依存なライブラリは、「GoodParts」として、

    JavaScriptのモジュールシステムの歴史と現状 - Qiita
  • 単純なマッチで複数回replaceするのと、文字クラスを使って一回replaceするのでは、どちらが速いか - anti scroll

    qiitaでこんな記事がありました。 innerText(textContent)/innerHTMLを使わずJavaScriptHTMLエスケープ - Qiita で、思い出したのですが「文字クラスでreplaceを一度で済ますより、単純なマッチを直列で繰り返したほうが速い」って話しをどこかで聞いた覚えがあるので、どのぐらい差があるのか、ちょっと試してみました。 念のため、元記事の関数でテーブル参照をしないバージョン(escapeCharClassEx)も用意。 3パターンのescape関数 // 元記事の関数 var escapeCharClass = function(content) { var TABLE_FOR_ESCAPE_HTML = { "&": "&amp;", "\"": "&quot;", "<": "&lt;", ">": "&gt;" }; return co

    単純なマッチで複数回replaceするのと、文字クラスを使って一回replaceするのでは、どちらが速いか - anti scroll
  • JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips | POSTD

    この記事のオリジナルは voxxed に投稿されたものです。 JavaScript関連の問題を抱えるチームをサポートする仕事を通じて、いくつか共通の問題点があることに気づきました。もしあなたもJavaScriptに対するイライラを感じているのであれば、この記事は何らかの助けになるかもしれません。おことわり:私がお教えするヒントはすでにご存知のものもあるとは思いますが、うまくいけば、多少なりとも有用な情報があるかもしれません。特にエンタープライズアプリケーションやCMSソリューションを構築する際に有効なヒントです。チームの誰もが話したがらないCMSのコードについてお話しします。いずれも必要に応じて採用できるものです。 debuggerステートメント 大半のブラウザでサポートされているにもかかわらず、JavaScriptを書く際に最も活用しきれていない機能の1つです。debuggerステートメ

    JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips | POSTD
    pipehead
    pipehead 2015/02/03
    http://blog.mitemitreski.com/2014/12/how-to-not-hate-java-script-tips-from.html の和訳; debugger, console.table(), console.trace(), Object.observe(), MutationObserver
  • ES6時代のJavaScript - クックパッド開発者ブログ

    こんにちは会員事業部の丸山@h13i32maruです。 最近のWebフロントエンドの変化は非常に激しく、ちょっと目を離した間にどんどん新しいものが出てきますよね。そんな激しい変化の一つとしてES6という次期JavaScriptの仕様があります。このES6は現在策定中で、執筆時点ではDraft Rev31が公開されています。 JavaScriptはECMAScript(ECMA262)という仕様をもとに実装されています。 現在のモダンなWebブラウザはECMAScript 5.1th EditionをもとにしたJavaScript実行エンジンを搭載しています。 そして次のバージョンであるECMAScript 6th Editionが現在策定中で、略称としてES6という名前がよく使われます。 今回は、他の言語にはあってJavaScriptにも欲しいなと思っていた機能や、JavaScriptでよ

    ES6時代のJavaScript - クックパッド開発者ブログ
    pipehead
    pipehead 2015/02/02
    Class, Function Arguments, Arrow Function, Promise, Generator
  • Railsに慣れたRubyistに捧げるUnderscore.js便利メソッド 5選 - Money Forward Developers Blog

    マネーフォワードではサーバーサイドのエンジニアRails/JavaScriptともに担当しています。 どうしてもRailsに比べJavaScriptは記述量が気になることが多かったのですが、Underscore.jsを入れてから劇的に便利になりましたので、ご紹介します! http://underscorejs.org/ 1. where, findWhere published_books = books.where(published: true) ActiveRecordを使っているとこのようにとてもシンプルにかける処理ですが、JavaScriptで基に則って書くと、 var publishedBooks = []; var l = books.length; for (var i = 0; i < l; i++) { if (books[i].published === true

    Railsに慣れたRubyistに捧げるUnderscore.js便利メソッド 5選 - Money Forward Developers Blog
    pipehead
    pipehead 2015/02/02
    where, findWhere; keys, values; times, each; uniq, compact; after
  • Pythonのjsonモジュールの便利機能 - cloverrose's blog

    PythonでJSONを読み書きする機会が割りとあったんですが、改めて調べたり、公式ドキュメントをちゃんと読んだら便利な機能を知ったのでメモしておきます。 jsonファイルの辞書を順番通りにloadしたい 設定ファイルとしてJSONを使っている時、普通にloadすると辞書の順番は保たれません。 でも、プログラム内部で設定を書き足してdumpするような場合、人間が書いた部分がごちゃごちゃになるとよろしくありません。 Pythonのjsonモジュールでは次のようにすると順番通りに読み込めます。 import json import collections decoder = json.JSONDecoder(object_pairs_hook=collections.OrderedDict) with open('conf.json') as conf_file: conf = decoder

    Pythonのjsonモジュールの便利機能 - cloverrose's blog
  • コードを書くことは無限の可能性を捨てて一つのやり方を選ぶということ

    なにかの機能を実現するためにコードを書いているというのに、そこから脱線して意味不明なコードを書く人たちがいる。汎用性は高いつもりらしいけど無意味に難しいものを作りたがったり、必要がないのに「念のため」に既存の機能を残したがったりする人たちがいる。どうやら柔軟性あるいは汎用性が至上の価値であって、その価値に反するものはなんであれよくないものだと思っている人たちがいるようだ。 そういう考え方は間違っていると思う。 ある機能を実現するにはいろいろな方法がある。プログラマはそのうち一つの方法を選んでそれを実装しなければいけない。機能を実装する前は無限の可能性がありえたが、機能を実装したあとは具体的に実装したこと以外のことはできない。芸術家が大きな大理石のブロックから一つの彫刻を削りだすように、具体化することによってそれ以外のありえた形というのがなくなってしまうが、それは避けられないことだ。全部の可