Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
この文章について OOP(オブジェクト指向プログラミング、オブジェクト指向パラダイム)について プログラミング勉強中の大学生さんに説明する機会が何度かあったので、 自分の中で整理するために書きました。 中には適切でない説明もあります。ばっさり省いているところもあります。 詳細より イメージを掴んでもらうことを優先しているためです。 「それにしてもあんまりだなー」という表現がありましたらご連絡いただけると嬉しいです。 大学生さん 大学生さんたちはいろんな背景を持っています。 プログラミングを始めたばかりの人 独学で Objective-C や JavaScript を書いた経験がある人 Web やコンピュータの仕組みについてもこれから勉強する予定の人 使用言語 大学生さんたちはプログラミングの第一歩として JavaScript と PHP を使っています。ここでは説明に PHP のコードを使
順序付けられた複数の要素で構成される組。日本語で「~つ組」と表現される要素の集合で、もとは数学の概念だが、プログラミング言語などの中には同様の構造を持つタプルという名称のデータ型が用意されている。 数学では、3つ以上の要素を並べたものを「三つ組」(3-tuple)、「四つ組」(4-tuple)などと呼び、一般にこれらをまとめてタプルと呼ぶ。要素の並び順が意味を持ち、同じ値を含んでいても順序が異なれば別のタプルとなる。例えば、 (A, B, C) と (C, B, A) は異なるタプルである。このような順序付きの構造は、座標、関係、データのまとまりなどを表現する際に特に有用である。 コンピュータ上では、複数の値を一つのデータとして扱うためのデータ型やデータ構造をタプルと呼ぶ。タプル型を用意しているプログラミング言語の多くは、異なる型の値を同時に格納できるようになっており、数値、文字列、真偽値
「HackerNews翻訳してみた」が POSTD (ポスト・ディー) としてリニューアルしました!この記事はここでも公開されています。 Original article: Fast scraping in python with asyncio by Georges Dubus ウェブスクレイピングについては、pythonのディスカッションボードなどでもよく話題になっていますよね。いろいろなやり方があるのですが、これが最善という方法がないように思います。本格的なscrapyのようなフレームワークもあるし、mechanizeのように軽いライブラリもあります。自作もポピュラーですね。requestsやbeautifulsoup、またpyqueryなどを使えばうまくできるでしょう。 どうしてこんなに様々な方法があるかというと、そもそも「スクレイピング」が複数の問題解決をカバーしている総合技術だ
JavaScriptのお勉強 をしたいなーと思い、実行環境は簡単に揃えられないものかなあ、 とインターネッツをさまよっていたらjsbin.comというサービスを知った。 JavaScript、HTMLのテンプレートを書いていき、レンダリング結果がOutputペインに表示される。 CDNを提供しているプロダクトは、大抵"Add Library"で選択できるようになっている。 このサービスはすでに3年前から稼働しており、 今まで把握していなかった... ざっくりした使い方 jsbin.comにアクセス "Add Library"をクリックし、使いたいライブラリを選択する JavaScriptのペインについては書けば自動でロードされる レンダリング結果はOutputペインに表示される "Add Library"に好みのライブラリが無い場合は CDNが使われていないプロダクトのライブラリを利用した
これまで業務ではJavaScriptを場当たり的にコーディングしてきたので、今年は基本的なところから見直そうと思っています。JavaScriptの実装でいつもに気になっていたのがオブジェクトの生成で、どういった書き方が定石なのか、本で調べてもネットで調べてもいろいろ意見があって悩ましいところでした。 その中で、良さそうと思ったのが『JavaScriptデザインパターン』の中でも紹介されている「リビーリングモジュールパターン(Revealing Module Pattern)」です。 JavaScriptデザインパターン 作者: Addy Osmani,豊福剛,サイフォン合同会社出版社/メーカー: オライリージャパン発売日: 2013/05/25メディア: 大型本この商品を含むブログ (6件) を見る Revealing Module Patternによるオブジェクトの作り方 『JavaSc
JavaScript で人為的に例外を発生させるには、大きく分けると以下の2種類があります。 throw new しない書き方 throw "ソフトウェアでエラーが発生しました。サポート担当者に連絡し、この問題を報告してください。"; o_o は String 扱いで、o_o.stack も undefined になっています。 throw new する書き方 throw new Error("一般的なエラーだよ"); throw new TypeError("型がちがうよ"); throw new SyntaxError("文法おかしいよ"); throw new URIError("URIちがうよ"); 他にも、RangeError, ReferenceError, MediaError, FileError, EvalError などがあります。 throw new した場合は、o_
By Kai Schreiber IT技術の進化のスピードには目を見張るものがありますが、それを支えているのはアルゴリズムと呼ばれる処理方法(技術的アイデア)です。さまざまなアルゴリズムの中でも、コンピュータの進化に革命的な影響をもたらしたとされる偉大なアルゴリズムは以下の通りです。 Great Algorithms that Revolutionized Computing http://en.docsity.com/news/interesting-facts/great-algorithms-revolutionized-computing/ ◆ハフマン符号(圧縮アルゴリズム) Huffman coding(ハフマン符号)は、1951年にデービッド・ハフマン氏によって開発されたアルゴリズム。頻出頻度の大小によって対戦するトーナメントツリーを考えて、ブロックごとに0と1の符号をもたせる
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
スタックトレースとは、実行中のコンピュータプログラムにエラーが発生した際に、直前に実行していた関数やメソッドなどの履歴を表示すること。 プログラムを構成する関数やメソッド、サブルーチンなどの呼び出し(コール)や実行終了(リターン)などの制御はメモリ上のコールスタックと呼ばれる領域で行われており、関数内で別の関数が呼び出される度にスタックの末尾に実行途上の関数についての情報が追加されていく。 スタックトレースはプログラムが異常終了した際などに、その瞬間のスタックの内容を写しとったものである。最後尾には停止時に実行されていた関数が記載され、その関数の呼び出し元の関数、呼び出し元をさらに呼び出した関数…という具合に実行途上の関数を順に遡っていくことができる。 スタックトレースは開発者がプログラムを修正するデバッグ過程で用いられ、コード上のどのような実行経路を経て問題が発生したかを知ることができる
[追記] この記事は2014年、私が文系大学生の頃、手探りでプログラミングを独学し始めた頃の記事です。温かい気持ちで見ていただけたら幸いです。 ーー !! おことわり !! このブログには、いわゆる「技術記事」は一切ありません!!!(書きたくても書けない) ただの「勉強記録ノート」です!!! プログラミング初学者の勉強記録ノートです!「日記」です!! 生暖かい目で見ていただけたらさいわいですヽ(;▽;)ノ Index “型のありがたみ”を覗く “型付けの弱い世界”を知る 動的型付けと静的型付け 型付けによる比較 “型付け”と”型変換” 強い型付けと弱い型付け まとめ 追記 (あとで読むリストなど) Introduction よくTwitterのタイムラインで「型安全」という言葉を見ます。 でも、その意味を私は全く分かっていませんでした…そもそも「型安全」という言葉は 「安全な型」を指す(だ
Angular, Ember, Backbone:どのJavaScriptフレームワークを選ぶべきか? JavaScriptフレームワークの選択は、開発者の好みよりもプロジェクトとの相性が大切だ。 JavaScriptベースのアプリケーションやウェブサイトのアイデアを思いついたとして、次にしなければならないのが正しいオープンソース・フレームワークを選ぶことだ。 この記事を読んでいるということは、あなたはまだ初心者や見習いの開発者かもしれない。あるいは自分のアイデアの開発を外部に委託しようと考えているのかもしれない。Angular、Ember、Backboneの名前ぐらいは聞いたことがあるかもしれないが、それらがどういったもので、なぜそれらがウェブ開発の助けになるかについてまでは知らないかもしれない。 開発者はJavaScriptを様々なウェブ・アプリケーションに使用している。それはJa
こんばんは、south37です。 最近はEffective JavaScriptを読んでるのですが、知らなかった事がポロポロ出てくるので、とても勉強になっています。これからはちょいちょい、そーやって勉強した事をまとめていけたらいいなと思います。 って事で、今日は関数定義の話をしたいと思います。 関数宣言と関数式 JavaScriptにおける関数定義には、大きく分けて3つの方法があります。 function文を使う方法(関数宣言) function演算子を使う方法(関数式) Functionコンストラクタを使う方法 1と2が一般的によく使われる方法ですね。 // 方法1 function multi(x, y) { return x * y; } // 方法2 var multi = function(x, y) { return x * y; }; // これも方法2 var multi
友人から「しんぺいさん DI について書いてほしい」みたいな話をだいぶ前からされてたんだけど書く気力ずっとなかった。でも仕事の気分転換にちょっとずつ書いたやつがいい量まとまったので公開するです。たいしたことは書いてないっていうか知ってるひとにはあたりまえのことしか書いてない。サンプルコードはわたしの趣味で Scala で書いてあるが、Java が読めればなんとなく読めると思います。 DI ってなに Dependency Injection、日本語で言えば依存性の注入です。おしまい。 で記事を終えてもいいんだけど、そもそも依存性とはなんなのか、それを注入するとはどういうことなのか、なぜ DI が必要となるのかみたいな話をこれからします。 そもそも依存性ってなあに 例を出します。入力された文字列をもとにおみくじをひいて、その結果を twitter に投稿するプログラムにしましょう。 まずは普通
// 関数式でのクラス宣言 var Hoge = function(){}; Hoge.prototype = { foo: 'foo', getFoo: function(){ return this.foo; } }; // 関数文でのクラス宣言 function Piyo(){ this.bar = 'bar'; this.getBar = function(){ return this.bar; }; } console.log(Hoge.name); // "" console.log((new Hoge).constructor); // function Object(){ [native code] } console.log(Piyo.name); // "Piyo" console.log((new Piyo).constructor); // function Piy
backbone.jsなどのjsライブラリで画面生成されるアプリだと、javascript部分のパフォーマンスがアプリのさくさく感にすごい影響を与える。特に、レンダリング部分がトロいと、画面スクロールとか最初の画面生成にもたつきが発生して、いちいち引っ掛かりを感じるアプリとなってしまう。 では実際のところ、どう書いたら性能良くなるの?、ということでネットをさまよってると、「DOM操作を極力なくせ」、というのが共通の見解のようだ。 例えば、イテレーションの中で一つ一つappendするのではなくてまとめてappendしたほうが良いとか、そもそもappendじゃなくて文字列でinnerHTMLに入れたほうが良い、一度作ったDOM構成をcloneして使うと良い、cloneしたDOMを操作してからreplaceしたほうが良い、とかいろいろTIPSが出てくる。 そんなわけで、自分として気になるtips
Lispと言えば関数型言語という印象を持つ人が多いようです。 まあ正直に言うと、Common Lispに関して言えば違うんですけどね。Common Lispは効率のためと言えばループも代入も使いまくるし、構造体もクラスもある。実際書かれたコードも関数型プログラミングとは程遠いことも多くて、たとえば僕が作ったClackのコードを見ればオブジェクト指向言語だって言っても信じると思います。 僕自身、繰り返しをわざわざ再帰で書くよりもloop使うことが多いです。最近loopに頼りすぎてて良くないなーと思うことが多く、Common Lispでも性能が重要でないところは関数型っぽく書く癖をつけないとなー、と思っていろいろ考えています。なんでもloopだと可読性が悪い。 特に、僕が今作っているCommon Lisp方言の「CL21」では関数プログラミングをもっとしやすくする機能を入れたいと思っています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く