あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

JavaScript

簡易的なuniqメソッド(文字列限定)を書いたので、underscore.jsのuniqメソッドとベンチマーク取ってみました

グリモンを書いてて、uniqメソッドを自前で作ろうと思ったのですが、少し面白い方法を見つけたので、jsPerfでベンチマークしてみました。文字列専用ですが。 自前のuniqメソッド オブジェクトを構築する際に、キーはひとつのオブジェクトに対してユニークに…

たらい回しの塔

たらい回し関数(竹内関数)とProcessing.jsを使って塔を建てる。たらい回しの塔 - jsdo.it - share JavaScript, HTML5 and CSSえげつなさが可視化される。 参考 竹内関数 - Wikipedia

よりSchemerフレンドリなJavaScriptへ in kyoto.lisp

土曜日にKyoto.lispに行ってきました。無謀にもスピーカー枠で参加したので、ちょっとドキドキでしたが、話したいことは話せたので良かったです。スライドは以下に置いておきました。よりSchemerフレンドリなJavaScriptへ 感想 Lispの勉強会というのは、東京…

流行りっぽいツールを組み合わせたミニマルpjaxサンプル書いた

先日、Meteorっていうツールが話題になっていて、いろいろ見てみたんですけど、pjaxいいなぁと思って、今まで実装したことなかったので、Mojolicious::Liteで実装してみました。ついでに流行りっぽいツールを組み合わせてみました。 利用したツール Mojolici…

富豪的プログラミングにおける関数合成の効用

あくまで富豪的プログラミングが許される時という前提付きですが、関数合成がとても有用だと思うので、記事にしてみます。なお、ソースコードはCoffeeScriptで記述しているので*1、JavaScriptはわかるけど、CoffeeScriptはわからないという方は、適宜、Coffe…

JavaScriptでswitchの再発明

先日、Underscore.jsを弄っていて、なんでも関数化したい病にかかり始めたので、書いてみました。when$when関数の返り値がtrueになっても継続するオプションを設けてもいいかもしれない。 追記 default関数っていうのを定義してましたが、予約語と名前が被る…

Underscore.jsの全メソッドを表にまとめてみた

JavaScript Advent Calendar 2011 (フレームワークコース) の9日目です。せっかくの機会だったので、ものすごく気になってたけど、触る機会がなかった、Underscore.jsをいろいろと弄ってみました。配列関係の便利メソッドの集合ライブラリなイメージでしたが…

CoffeeScriptでカリー化関数を書いて遊ぶ

CoffeeScript、食わず嫌いしてたのですが、使ってみると便利で、書いてて楽しいですね。記法が簡潔なので、JavaScriptだとreturn function地獄になるカリー化関数書くのが苦ではなかったので、カリー化関数を書いて遊んでみました。 calc.coffee これがCoffe…

Arrayのconcatメソッドが何気に便利だった

え、今さら?感満載ですけど。配列を結合するメソッドという頭でいましたが、要素を追加して、ついでに要素追加反映後の配列コピーを返すメソッドと考えると結構便利な気がします。Arrayオブジェクトのメソッドは、sortとかreverseとかmapとかfilterとかのよ…

型とかオブジェクトとか基本的なことを理解する

今日は、kanazawa.js v1.2です。もうちょっとしたらしゃべることになるんですけど、大変申し訳ないことに、下書きはなんとか出来上がりつつあるものの、文章を要約して、スライドにまとめる時間はなさそうなので、この記事をプレゼン資料にしちゃうことにし…

reduce関数は結構有用っていうお話

JavaScriptに限った話ではないのですが、reduce関数を持つプログラミング言語がいくつかあります。 JavaScriptに関しては、一応、ECMAScript5の仕様に登場するようで、将来的にはどのブラウザでも使えるようになりそうな気配はあります。 Standard ECMA-262 …

body要素のid属性またはclass属性をJavaScriptのディスパッチャーに使う

最近、実案件で実験していたのですが、仕様が固まってきたのでメモしておきます。JavaScriptを特定のページで実行したいというニーズがあるけれど、head要素内に書くとか、body要素内に書くとか、そのページ限定でscript要素を使って読み込むとかいろんな方…

JavaScriptでIteratorを書く

最近、Wordpress絡みでPHPを書くことが多くて、かつバージョンも5.2だったりするので、高階関数とか無名関数とかが無性に使いたくなります。ということで、JavaScriptでIteratorでも書いて心の平静を保つことにします。 クロージャ版Iterator これが書けるJa…

激しくガイシュツだけど、JavaScriptでiPad(iPhone)用にソース表示ブックマークレットを作った

iPadでプレゼンする時に、ソースが表示できないと不便だという話だったので、散々ガイシュツだけど、iPadでソース表示するためのブックマークレットを作りました。利用技術はJavaScriptオンリーで、シンタックスハイライトは、Google Code Prettifyを使いま…

関西開発合宿でnode.jsとsocket.ioを使った「そう簡単には読ませてあげませんったー」っていうTwitterアプリ作った

タイトルなげぇよ。はい。昨日から、明日の昼まで、関西開発合宿に参加しています。頭ん中さんの、関西で開発合宿へ行ってきたよ - 頭ん中っていうエントリーが前回の様子とのことです。開発合宿初めてだったので、何を作ろうか漠然としながら、とりあえず、…

Let's jQuery - ひとりでできるもん

先週土曜日に、WCAFのイベントでセッションを担当しました。ターゲットはWebデザイナーとマークアップエンジニアなので、比較的簡単な内容です。セッション内容をそのまま加筆して記事にすることにします。では、以下、その内容。 jQueryの流行 jQueryは2005…

node.jsでスクレイピングしてみた

node.jsの記事を最近チラホラ見かけるので、入門してみました。node.jsはサーバー書いてこそって感じなんだろうと思いますが、ネットワークプログラミングの経験がないので、まずは他の言語で簡単にできることをnode.jsで書いてみようという趣旨です。 node.…

JSerが比較コードを書きながらPerlのデータ構造を学ぶ

厳密に言うと間違ってるかもしれないことを感覚的に書いているので、あまり間に受けない方がいいかもしれません。JavaScriptは、自分が触ったことがある言語の中では、最も仕様を理解している言語になると思います。そろそろ真面目にサーバーサイドの言語も…

JavaScriptでclearfixみたいなものを実装する実験

clearfixの記述を見てて、contentプロパティで内容追加して、blockにして、高さを消すとかやってるので、JavaScriptでもできるんじゃね?と思ったら、実際できたので、実用性は抜きにしてメモとして投稿しておきます。 CSSでのclearfixの記述 いろいろあるみ…

配列内包表記

最近、エキスパートPythonプログラミングをぼちぼち読み進めてます。自分には難しい内容で読み応えがあります。Pythonのリスト内包表記っていうのがありますが、これコードを簡潔にしようと思うと、割と自然に使い始める代物で、Firefox限定でPythonからJava…

jstudyで「JavaScriptとLisp」ってタイトルのLTしました

昨日、jstudyの第一回目のイベントがめでたく開催されました。Twitterで見かけて、速攻で申し込んだんですが、せっかくだからLTしたいなと思い、稚拙ながら「JavaScriptとLisp」というタイトルでLTをさせていただくことができました。発表するまで、ネタとし…

Google Font API でWebサイトのCopyrightを書く

という記事を読んで、copyrightくらいだったら画像用意しなくても別に良い気がしたし、最近発表されたGoogle Font APIで少し見た目を整えるだけで十分実用的かなと思ったのでエントリーに起こしてみました。 Google Font APIとは? 19日のGoogleI/Oにて発表…

applyとcallの使い方を丁寧に説明してみる

JavaScriptに、applyとcallというメソッドが用意されていますが、自分なりにapplyとcallの丁寧に説明をしてみようと思ってこのエントリーを書くなどをしてみます。applyとcallは非常に似たメソッドなので、まずはcallから説明します。 callメソッドとは? ca…

File APIとJavaScriptを使って、テキストファイルを加工する便利ツールを作った

昨日、たまたま仕事で、CSV形式の名簿を加工する必要があって、最近はこういう時、JavaScriptを使って加工することがあります。昨日の話で言うと、具体的には以下のようなCSVファイルを、 ほげ株式会社,jdg,jdg@example.com 株式会社ふが,taiju,taiju@exampl…

partial関数は引数の最後に関数を指定できるとネストした時に見やすい

letみたいなものをJavaScriptに実装しようと思っていろいろやってた時に感じたことなんですけど、Pythonとか、Python志向なMochikitなどに導入されているpartial関数は、引数の最後に関数を指定できると、ネストした時にが見やすいと思いました。好みはある…

JavaScriptでLispのような再帰的なリストを作るlist関数を作ってみた

Lispの勉強をする際に、まだLisp慣れを全然してないので、JavaScriptで書くとどうだろう?ということを考えることが多々あります。その勉強方法の良し悪しは置いといて、JavaScriptでLispのサンプルプログラムを書いてみようと思った場合、一番ネックなのが…

Pythonのrange関数をJavaScriptで再帰を使って実装してみたものをGaucheに移植してみた

今朝投稿した、Pythonのrange関数をJavaScriptで再帰を使って実装してみた - あと味の続き。JavaScript版は基本的な関数で実装したので、おそらくGauche(Scheme)にも簡単に移植できると思って取り組んでみたものの、正直、慣れてなさすぎて超大変でした。…

Pythonのrange関数をJavaScriptで再帰を使って実装してみた

Pythonにrange関数という数列を作る関数があるんですが、JavaScriptにもrange関数みたいなのがあると便利かもしれないと思って実装してみました。関数型言語慣れするために再帰で書いたので、あまり長い数列は作れません。 Pythonのfor文 Pythonでは1から10…

メソッドチェーンの作り方

メソッドチェーンはわかりやすくて便利です。jQueryなどではメソッドチェーンが効果的に使えるように設計されているので、jQueryでメソッドチェーン使用している人も多いと思います。このメソッドチェーンですが、作り方を解説するページがあまりない気がす…

ページズーム機能がないブラウザで、画像の拡大を含めたエラスティックレイアウトを実現するサンプルを作った

文字数で幅を指定できるエラスティックレイアウトが好きです。CSSでレイアウトする時、各ブラウザがページズーム機能を導入した今はほとんど必要ないことかもしれませんが、一行あたりの文字数は読みやすい数というものがきっとあると思っています。エラステ…