unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
インターネットで調べ物をしているときや、パソコンの前に座って集中して作業していると、あっという間に時間が過ぎてしまっている、なんてことはありませんか。そこで、時間を忘れてしまうことがないよう、今回は、15分ごとに時報を読み上げる、おしゃべり時計を作ってみます。 実はこれ、Mac OS Xには、はじめから付いている機能なのですが、かなり便利なので、Windows用にJavaScriptで作ってみました。 プログラムを動かす準備 Windowsで読み上げを行なうためには、音声合成エンジンをインストールする必要があります。Microsoft Speech Platformのランタイム、および、各国語用の言語パッケージをダウンロードし、インストールしてください。 しかし、ファイルを選んでインストールするのは面倒なので、まほろば「Microsoft Speech Platform 簡単インストーラー
今年の2月に WHATWG の XMLHttpRequest (XHR) の仕様に追加された responseURL プロパティが、先日 Firefox に実装された (https://bugzil.la/998076) のでそのことについて書く。 responseURL は XHR のリクエストに対するレスポンスの URL を文字列で返すプロパティで、リダイレクトが発生した場合は最終的なリダイレクト先の URL を返すようになっている。つまり Greasemonkey の GM_xmlhttpRequest にある finalUrl で取得できる情報と同じものを取得できるプロパティだと言える。 responseURL が XHR の仕様に追加される以前の状態でも、 xhr.responseType === "document" の場合に xhr.response.URL 経由で fina
【今回の内容】 掲題の通り、HTMLとjavascriptの分離について紹介する そもそもなぜHTMLとjavascriptの分離するのかー HTMLとjavascriptの分離が分離されていないと以下のようなことが起こりうる ・関数を変えたいとき、HTMLを変える時、間違いが生じる可能性が出る ・デザイナーとエンジニア側で分業しにくい ※もっとありそうだけど、、、 ■悪い事例 <html> <body> <form> <input type="text" id="item1" value="" ></input> <input type="button" id="item2" value="value2" onclick="test()"></input> </form> <script> function test(){ alert(""); } </script> </body> <
JavaScript (Node.js) で開発する上で避けては通れない 非同期処理、コールバックについて考えてみたい。 自分なりのお勧めの方式を書いてみた。 いろいろなものを試した結果である。 ※この記事でのお勧めの方法は ES2015 (ES6) で実装された generators (yield) の技術を使用しています。 実はまだ Babel(6to5) 等を利用するか Node.js v4~v8 でしか 実質的に使用できない技術だと思います。悪しからず。 (早く全てのブラウザに広く普及する事を祈っています) まだブラウザでは独自ライブラリか Promise (Deferred) 等を使っています。 ※2015/10/15: 記事の内容を npm aa (async-await) に対応させました。 ※2015/04/19: 記事の内容を npm co@4 に対応させました。 ※20
最近自分で非同期前提のプラグイン書くときはThenableな感じで書いてることが多い。 Thenableってのはどういうことかというと、typescirptのes6-promises では次のように定義してある。 interface Thenable<R> { then<U>(onFulfilled: (value: R) => Thenable<U>, onRejected: (error: any) => Thenable<U>): Thenable<U>; then<U>(onFulfilled: (value: R) => Thenable<U>, onRejected?: (error: any) => U): Thenable<U>; then<U>(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenab
最近調べたnode.jsのstreamに関連した雑多な内容を、思いつくままに適当に書く。 例えば、 function* createPiGenerator() { var result = 0; for (var i = 1;; i += 4) { yield result * 4; result += 1/i - 1/(i + 2); } } こんな感じのジェネレータがあったとして、それをファイルに出力したい場合 function createPiStream() { var r = new require('stream').Readable(); r.setEncoding('UTF-8'); // バッファじゃなくてstringとして処理したい var g = createPiGenerator(); // piの計算をするジェネレータ var tid; r._read = fun
Callbacks, promises, generators - asynchronous javascriptAI-enhanced description This document discusses callbacks, promises, and generators for handling asynchronous code in JavaScript. It begins by explaining callbacks and the issues they can cause like "callback hell". It then introduces promises as an alternative using libraries like Q that allow chaining asynchronous operations together. Gene
Web制作者/開発者が「今後、使いたい」JavaScriptライブラリおよびWeb技術を、ランキング形式で発表。2014年度前半はこれらを押さえよう。 ← 前回 連載 INDEX 次回 → 今年の初めに「人気上昇中のJavaScriptライブラリを調べてみた[ジャンル別に比較]」という記事を公開したことで、JavaScriptライブラリの人気ランキング情報へのニーズは高いことが分かった。しかし、その記事でのランキング決定では、検索キーワードの流行を調査可能な「Googleトレンド」を用いた。このため、ライブラリ名が一般的な英単語(例えば「LESS」など)の場合、どうしてもライブラリとは無関係の検索も含まれてしまっていることが懸念された(※それでも「人気上昇中かどうか」を計測する面ではある程度有効な手段だと考えている)。 そこで今回、より正確な情報を読者に提供するために、実際にWeb制作者/
ここしばらく気が狂ったようにGithubのAtomのコードを読んでた。 コードリーディングの成果はここに貼ってる。まだ更新するかもしれない atom-reading.md で、大体のコードを読んだのはいいとしてなんか作らないと勿体無い気がしたので、エディタ内でgit-grepの結果見てジャンプできるやつ作った。 mizchi/atom-git-grep 自分で作っといてなんだけどくっそ便利だと思う。Sublimeで作りたかった。 プラグインの作り方の大雑把な概要 nodeのモジュール使って、普通のブラウザっぽいUIを組む。基本パーツはatom側に揃ってるので継承して使う。 必要なインスタンスはだいたいatom変数以下に入ってる。shift+cmd+I でデバッガ開いて叩きまくるとだいたい察することができる。 プラグインのスケルトン生成 shift+cmd+p でコマンドパレット出して、 P
おシゴトでJSONを扱うことになりました。どこぞのサーバがWeb-serviceをホストしてて、サービスとのやりとり(リクエストとその応答)がJSONで行われるらしく、C++でJSONを読み取る方法をリサーチしてくれとのこと。 Web-serviceのインターフェースはXMLがよく用いられますが、近頃はJSONが増えてきたみたいです。JSONはXMLに比べフォーマットが単純で伝文がコンパクト、軽量インターフェースなのでスマホのような(デスクトップ機よりは)非力なクライアントでも楽に扱えますからね。そんなわけでC++でJSONを扱うべくリサーチを始めました。 JSONの構造 JSON:JavaScript Object Notation(JavaScriptオブジェクト記法)、RFC4627(PDF)で規定されています。英文とはいえ10ページにも満たない小さな規格ですからさほどの苦労もなく理
こんにちは、清田です。 最近、フロントエンド開発においてGruntにお世話になっている方も多いかと思います。 私も日ごろ大変お世話になっています。私としては、Gruntにあまり不満はないのですが、多少体感としてちょっと遅いかなぁくらいの印象を持つくらいでした。 そんな中、タスクランナーツールとして後発ながらGulp.jsという名前を聞くようになってきたので、実際に試してみました。 Gulp.jsとは? Gulp.js公式サイト 皆さんご存知のフロントエンド開発でタスクランナー&ビルドツールとして有名なGrunt.jsですね、弊社ブログでも何度かご紹介させていただいたかと思います。 Gulp.jsも同じく、タスクランナー&ビルドツールとしての立ち位置とのこと。 Gruntと何がちがうの? いろいろなエントリーを拝見し以下の意見がありました。 ビルドファイルが書きやすい 並列処理のため、実行速
kintoneはJavaScriptを使って自由にカスタマイズできます。 カスタマイズにより独自のリッチなUIを構築したり、新しい機能を追加したりできますが、セキュアなコーディングをしないと クロスサイトスクリプティング (以下、XSS)などの脆弱性を作り込んでしまう危険性があります。 この記事では、JavaScriptでセキュアなコーディングをするための基本的なポイントを解説します。
こんにちは。kintone開発チームの天野 (@ama_ch) です。 最近はJavaScriptのテストツールが著しく進歩し、日々新しいツールが登場しています。kintoneの開発もこれらのツールによって支えられています。 kintone開発チームでは、昨年末頃からテスト環境の改善に取り組み、モダンなツールセットに乗り換えました。今回は、現在のkintoneのJSユニットテスト環境について紹介します。 kintoneとJSユニットテスト 数年前からユニットテストと自動化の仕組みはあったのですが、ごく一部のユーティリティ関数に書かれているのみで、普段の開発には活用されていませんでした。 ここ1,2年ほどで テストスケルトンを生成するジェネレータスクリプトを作る テストの書き方をまとめたドキュメントを用意する MTGで「ユニットテストを書かなくていいのは小学生まで」などと煽る コードレビュー
JavaScript: More than meets the eye JavaScript can seem like a very easy language to learn at first. Perhaps it’s because of its flexible syntax. Or perhaps it’s because of its similarity to other well known languages like Java. Or perhaps it’s because it has so few data types in comparison to languages like Java, Ruby, or .NET. But in truth, JavaScript is much less simplistic and more nuanced tha
こんにちは、エンジニアなのにダンクができないのびすけです。今月から記事を書かせていただきます。 さてみなさん「Node.js」って知っていますか? 僕も最近Node.jsの勉強を始めたので「Node.jsを使ったことがないけど使ってみたい」と思っている人に向けて、Node.jsの入門的な内容を紹介したいと思います。 ▼2020年最新版はこちら! Node.jsとは 一言で言うとアツいJavaScriptです。 通常、JavaScriptはユーザーのブラウザで動作するプログラミング言語ですが、Node.jsはサーバー側で動作するJavaScriptであり、Web業界ではかなり注目されています。大量の処理に対応するために、ノンブロッキングI/Oというモデルを採用しています。 例えば、データベースから大量の情報を取得してWebページ上に表示をする処理をおこなう場合、通常はデータベースへアクセスし
TypeScript (と TypeScript コンパイラ)を用いて JavaScript で利用可能なクラスの定義を作成(生成)することができます。 各サンプルはシンプルな HTML ファイル(index.html)と JavaScript ファイル(app.js)の2ファイルの構成です。ただし、app.js は app.ts (TypeScript 言語で書かれたソースファイル) をコンパイルすることによって自動生成されるものとなっています。 ちなみに私はエディター(開発環境)として Visual Studio Professional 2012 Update 4 を用いています。(TypeScript for Visual Studio 2012とWeb Essentials 2012をインストールしています) index.html で jquery.min.js を script
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く