tech

WHATWG Streams APIについてのメモ

こんにちは丸山@h13i32maruです。 WHATWG Streams APIを少し触ってみたので、そのメモです。 ドキュメント WHATWG Streams このメモはLast Updated 21 January 2015を元に書いた whatwg/streams サンプルやリファレンス実装などがある このメモはcommit 8799…

ES6でWebブラウザ向けにアプリを作るためのスケルトン

こんにちは丸山@h13i32maruです。 最近ES6で色々書くことが多いので、自分用にスケルトンを作りました。 h13i32maru/es6-skeleton 採用したスタックはこんな感じです。 ES6 6to5 Module Browserify Test mocha power-assert karma Doc JSDoc3 CI Travis CI …

ES6 Generatorを使ってasync/awaitを実装するメモ

こんにちは丸山@h13i32maruです。 ES6のGeneratorを勉強する題材としてasync/awaitを実装してみたので、そのメモです。 Genratorとは ES6のGeneratorとは「任意の時点で処理を中断/再開することができる関数」というもの。一般的にはコルーチン(coroutine)と…

モダンぽいJavaScriptテスト環境の構築メモ

こんにちは丸山@h13i32maruです。 ES6でアプリコード、テストコードを書いてテストをするための環境を作ったので、そのメモです。 目標 ES6で書いたアプリコードとテストコードをnpm run testでテストする 最終的な環境 最終的にはこんな環境になった。リポ…

Androidのdpについて

こんにちは丸山@h13i32maruです。 最近は2年ぶりくらいにAndroidを触る機会が増えてきました。そこで当時も曖昧のまま過ごしていたdpという単位についてまじめに考えてみたので、そのメモです。(間違っていたらごめんなさい) 背景 Androidは解像度、画角イン…

AndroidのCipher.java問題

こんにちは丸山@h13i32maruです 最近AndroidのCipher.javaで問題に遭遇して解決したので、そのメモです。 問題 AndroidでCipher.javaを使ってデータを暗号化するときに暗号化処理方式として[AES/CTR/PKCS5Padding]を使用するとAndroid4.4とそれ以外のAndroid…

NavyJSというJavaScriptフレームワークとNavyCreatorというIDEを作りました

http://navyjs.org 今流行のMV*系(AngularJS/Ember.js/Knockout/Vue.js/Backboneなど)とは少し違った方向のフレームワークになっています。 NavyJS モバイル端末向けのフレームワークです View、レイアウト、SPA、アセット、画面ライフサイクルなどをサポー…

Heap Snapshotを使った時のsetIntervalの罠

Chrome DevtoolsにはHeap Snapshopという機能があり、この機能を使うと任意のタイミングでJavaScriptのメモリの詳細を見ることができます。インスタンスがどれだけ存在するかやどの変数から参照されているかなどがかなり細かくわかります。 このHeap Snapsho…

WebStormによるJavaScript開発のすすめ

Qiita JavaScript - Client Side - Advent Calendar 2013 12月20日の記事です。 みなさんはJavaScriptをどんなエディタで書いていますか?僕はこれまでVimで開発していたんですが、最近はもっぱらWebStorm(PhpStorm)を使ってJavaScriptを書いています。 とい…

rebuild.fmに憧れてCode Lunchという技術系ポッドキャストを録ってみました

@miyagawaさんが主催されているrebuild.fmというポッドキャストを最近よく聞いていて、職場の人とrebuild.fm面白いよねーって話をしていました。で、僕達でも真似してやってやってみない?というノリで僕(@h13i32maru)と@iizukakさんで録音してみました。内…

ブログを書くまでがHTML5 Conference 2013

2013/11/30にHTML5 Conference 2013が行われました。 運営の方々、スピーカーの方々お疲れ様でした。当日は風邪を引いてしまい、参加できなかったのですが、YouTubeでリアルタイムに見みることができて非常にありがたかったです。 で、ブログを書くまでがHTM…

HTML文字列に含まれるscriptを実行する

HTMLの文字列をXHRで動的に取得してきて、それをdocument.bodyなんかに突っ込む場合があると思います。 その時に文字列中にscriptタグが含まれる場合、elm.innerHTML = html;ってしてもscriptは実行されません。 jQuery.fn.loadはそのへんが考慮されていてsc…

GalaxyS4のWebViewで要素を削除しても表示が残るバグ

GalaxyS4のWebViewである要素をremoveChildしても画面に表示が残り続けるバグを踏みました。 removeChildした後に当該要素をquerySelectorしてみてもnullになるので、DOMツリー上からは消えてるみたい。 で、その要素がposition:absoluteだったのでおそらく…

Webフロントエンドのパフォーマンスチューニングについて

社内の勉強会でWebフロントエンドのパフォーマンスチューニングについて発表してきました。 Webフロントエンドパフォーマンスチューニング // Speaker Deck JavaScript、Chrome DevTools、チューニングのステップ、ボトルネック、ポイントなんかについて触れ…

QCompleterを部分一致補完させる

最近「NavyJS & NavyCreator」というモバイルWebフレームワークとそれ専用の開発環境(簡易IDE)を作ってます。 そのNavyCreatorはC++/Qtを使って実装していて、Qt便利ですごくありがたいなーと思ってます。 QCompleter NavyCreatorでコンボボックス(ファイル…

Sencha Animatorで作るCSSアニメーションがすごく良い感じ

最近Android, iOS上のWebブラウザでのアニメーションについてちょっと調べています。 有名所だと、こんな感じのがあります。 CreateJS LWF AdobeEdge ただ、どれもJSをゴリゴリ使ってタイムラインの制御と各フレームでのオブジェクトの状態を計算しています…

JavaScriptでクラスを実現する「nClass.js」

JavaScriptでクラスを実現するためにnClass.jsというものを作ってみました。 nClass https://github.com/h13i32maru/nclass MITライセンス クラスの生成 (new演算子と共につかう関数) コンストラクタ関数 (インスタンス生成時に自動実行される関数) クラスの…

なぜBTreeがIndexに使われているのか

※この内容は個人的な考察なので、間違っている箇所もあると思います。そういう部分を見つけた際はぜひ教えて下さい。 RDBMSの検索を早くするためにIndexって使いますよね。例えばこんなテーブル CREATE TABLE user ( id INT UNSIGNED NOT NULL, name VARCHAR…

Webサーバの性能測定

先月にWebサーバの性能測定、負荷試験、パフォーマンスチューニングというようなことをやっていました。初めてのことで周りの人に色々アドバイスをもらいながら取り組み、結構面白かったです。で、その内容をまとめてみようと思いながらも1ヶ月以上がたって…

Sphinxを使ってプログラムドキュメントを楽しく書こう

今日はソフトウェアのドキュメントツールの紹介です。 ソフトウェアってプログラムだけじゃなくて、「テスト」と「ドキュメント」も大事だなと最近思うようになってきました。 僕は今までプログラムは書いてきたけど、テストもドキュメントもさっぱりでした…

Google Closure Compilerを使ってみた

最近JavaScriptでちょっとしたフレームワークを作ろうと思ってちょこちょこコードを書いています。で、そこで困ったことは「機能的に複数のファイルに分割した*.jsをどうやってまとめるか」です。単にcatで結合するだけでもできるかもしれないですが、何か良…

はてなダイアリーからGitHub Pagesに引っ越しました

先週あたりからごそごとと準備をしていたんですが、今日ようやく移行作業が終わって晴れて新しいブログに引越しが完了しました。 なぜ引っ越したか はてなにロックインされたくなかったから はてな重すぎるから MarkdownもしくはreSTで書きたいから JavaScri…

リクエスト単位で独立したコンテキストをtornadoで使用する

今の案件ではtornadoを使ってるですが、リクエスト単位でまとまったログを出したいなと思って、色々調べてみました。 (と言っても数時間かけてtornadoのソースとにらめっこして何となくできたコードを元に@methaneさんに色々教えてもらった。python知らない…

JavaScriptプロトタイプマップ

最近JavaScriptを触ることが多いのですが、JavaScriptのプロトタイプについて調べてもすぐに忘れてしまうので、ちょっとまとめてみました。 プロトタイプベース プロトタイプベースってそもそも何だろうと。僕の理解ではこんな感じです。 オブジェクトの振る…

CoffeeScript言語リファレンスを日本語訳しました

最近CoffeeScriptというものを知って少し調べてみたら、本家の言語リファレンスがそんなに多くなかったので日本語訳に挑戦してみました。 http://coffeescript.org/ CoffeeScriptとはJavaScriptにコンパイル可能なシンプルな言語です。クラスベースのオブジ…

一日の摂取カロリーを記録するアプリ「32Calorie」をリリースしました!

詳細はこちら。 https://market.android.com/details?id=jp.h13i32maru.calorie

Androidアプリをリリースしました「32Cart」&「32Task」

最近Androidアプリを2つリリースしました。32Cartという買物メモアプリと32Taskという起動中のタスク管理アプリです。マーケットを探せば高機能なものはいくつも出てくるのですが、僕はシンプルですっきりした物が好きなので好みに合うものがなかなかありま…

C2DMアプリ「Chrome to Phone」を改造しました。

C2DMってご存知ですか?C2DMはAndroidアプリに外部からデータをプッシュ配信できる仕組みです。 そのC2DMを使ったアプリでGoogleが開発している「Chrome to Phone」というのがあります。このChrome to Phoneを使うと、AndroidへGoogleChromeからURLを送信で…

FireMobileSimulatorにホストごとに端末設定できる機能を作りました

僕の会社(KLab)では携帯電話やスマホコンテンツを作ってるので、結構みんなFireMobileSimulator(FMS)を使っています。 で、先日同僚がこんなこと言ってました。 接続先のホストごとに端末の設定変えれたら良いのに よし、じゃあその機能作りましょう!という…

ListViewの簡単な使い方

アプリで良く見かけるListViewのサンプルです。 文字だけを表示するListViewを作るのはAndroid組み込みのレイアウトを使うため凄く簡単です。layout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >…</linearlayout>

豆腐ぶっかけ丼サイトを作りました

豆腐ぶっかけ丼があまりにも好きすぎて、豆腐ぶっかけ丼の写真共有サイトを作りましたw 豆腐ぶっかけ丼 ユーザ登録すると自分の豆腐ぶっかけ丼写真を投稿できるようになります。 (写真をみるだけならユーザ登録不要です)

Android端末にインストールされているアプリ一覧の取得

Androidの端末にインストールされているアプリ一覧を取得するサンプルプログラムです。 ポイントはこの2点。 探したいアプリの条件をIntentに設定する PackageManagerで条件(Intent)にあうアプリの一覧を取得 import java.util.List; import android.app.Act…

画像を使わずCSSだけで星形のチェックボックスを作る

CSSだけを使って星形のチェックボックスを作ってみました。ただしWebKitだけ。AndroidのChromeLiteでもOKです。 input[type="checkbox"]{ -webkit-appearance:none; line-height:5em; width:5em; height:5em; border:solid 1px #ddd; background:-webkit-gra…

剰余(あまり)の計算について

最近、仕事で暗号技術を使うことがあり、暗号技術入門として有名なアリス本を読んでみました。 すごくわかりやすいので、おすすめです! アリス本には公開鍵暗号の1つRSAについて計算方法が詳しく書いてあります。RSAでは剰余(あまり)を求める計算を暗号の基…

レインボーテーブルを使ったハッシュの復号とSalt

会社の勉強会で発表したネタです。 レインボーテーブルという方法を使ってパスワードハッシュを復号してみようと言うお話と、パスワードハッシュを作るときにSaltを使おうというお話です。 ちなみに僕が実装したレインボーテーブルはhttp://h13i32maru.jp/mi…

java.langでBase64実装

AndroidアプリでBase64を使う必要があったのですが、どうやらAndroidには入っていないようです。 (ドキュメントには存在するんだけどなー Base64 | Android Developers)ないなら作るか。というわけで、Base64を実装してみました。 先に白状しておくと、非常…

TwitterをGoogle風にするスクリプト「CustomTwitter」を新Twitterに対応させました

新Twitterになってから、動作してなかったCustomTwitterをようやく更新することができました!CustomTwitter for Greasemonkey これは何? TwitterのサイトをGoogleの検索結果風のデザインに変更できます 特定ユーザのツイートを強調表示、非表示にできます …

Android超入門 - JDK,Eclipse,AndroidSDK -

業務でAndroidアプリを作ることになったということもあり、Androidの勉強をしています。Java , Eclipseも初めてなので、色々苦労しながらやっております。 JDKのインストールから、AndroidでHelloWolrdを表示するまでのメモです。 参考書籍は「Android2.1プ…

プログラミングコンテストチャレンジブックのAnts問題が面白い!

最近友達3人でRubyの勉強会を週一回しています。「プログラミング言語 Ruby」を20ページくらいみんなで読んでいきます。読み終えたらRubyで一つプログラムを書いて、みんなで検討するというゆるい感じの勉強会です。 最近は「プログラミングコンテストチャレ…

vim再入門

僕はかれこれ5年くらいvimを使ってるんだけど、それにしてはvimを知らなさすぎると思って、勉強しなおしてみました。 参考書籍は「オライリー 入門vi」なのでvimじゃなくてviの基礎から勉強。 で、今まで使っていたコマンドと、新たに覚えた使えそうなコマン…

VirtualBoxのGuestOSにSSHで接続する

僕はMacなので、VMWareじゃなくてVirtualBoxを使っています(VMWare Fusionは有料)。で、そのGuestOSにSSHで接続する設定をしたのでメモ。 ネットワークはNATを使っているので、ポートフォワードの設定が必要です。 Macのターミナルを立ち上げて以下のコマン…

Rubyでメモ化を使ってフィボナッチ数を求める

最近友達と始めたRubyの勉強会でお題として、フィボナッチ数を求めるプログラムを書いてみました。 メモ化という仕組みを実装したり、そのメモ化をさらに改善したり、再帰じゃない方法で書いてみたりと色々面白かったので、ちょっとまとめておきます。 フィ…

Ubuntu10.04のtracにTracAccountManagerプラグインをインストール

最近個人的にtracを構築したのですが、TracAccountManagerの入れ方がわからず、色々困ったのでメモ。 最終的にはeasy_installを使えばすんなりいけました。 tracのバージョンは0.11.7です。 AccountManagerをインストール 参考 : http://trac-hacks.org/wiki…

時間の比較は文字列と数値のどちらが早い?

最近会社でapacheのアクセスログ解析というのをperlを使って行っています。例えばこんな感じのログがテキストファイルに保存されています。 ... 2010-09-20 21:30:12 A.B.C.D http://example.com/hoge.html ... 2010-09-20 21:30:13 W.X.Y.Z http://example.…

Ubuntu10.04へのtracのインストール覚え書き

個人的にwikiが必要になったのでUbuntu10.04にtracをインストールしました。今回はその覚え書きです。 The Trac Project Trac is an enhanced wiki and issue tracking system for software development projects. wiki + ticket + svnは社内でも結構使われ…

オブジェクトの作り方

「5継承」からのメモ 一般的なクラス型言語では元となるクラスを定義し、そのクラスからオブジェクトを作ります。 var $h = new Hoge(); javascriptはプロトタイプ型言語なので、クラスというものがありません。ではどういう風にオブジェクトを作るのかとい…

PHPカンファレンス2010テックデイに行ってきたよ

昨日は友達(PHPは全く使わない)をさそってPHPカンファレンス2010テックデイに行ってきました。 PHPカンファレンス2010 僕はこういうカンファレンス(外部の勉強会も)行ったことがなくて、どんなのかなーと思ってたら意外とゆるい感じで楽しかったです。今回…

これでクロージャも怖くない

「4.10クロージャ」からのメモ。 javascriptにはブロックスコープがありません。しかし関数スコープが通常の言語の関数スコープとは異なっていて、クロージャという機能をもっています。 クロージャ - Wikipedia クロージャ(クロージャー、closure、閉包)…

クロージャを使ってメモ化

「4.15メモ化」からのメモ。 この本によるとメモ化とは 関数は、不要な処理を省略するために、前回の操作結果をオブジェクトに記憶しておくことができる。この最適化はメモ化と呼ばれる クロージャの説明と同じく、これも言葉だけじゃわかりづらいと思うので…

関数の呼び出し

「4.3関数の呼び出し」からのメモ。 ある関数が呼び出されたときその関数内でのthisの指し示すものは、関数の呼び出し方によって4つの場合がある。 メソッド呼び出し 関数呼び出し コンストラクタ呼び出し apply呼び出し メソッド呼び出し オブジェクトのメ…