CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Fri, 01 Aug 2025 14:40:56 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20100210231917
location: https://web.archive.org/web/20100210231917/https://www.oreillynet.com/pub/au/156
server-timing: captures_list;dur=0.490807, exclusion.robots;dur=0.017166, exclusion.robots.policy;dur=0.008877, esindex;dur=0.009360, cdx.remote;dur=24.706699, LoadShardBlock;dur=273.255771, PetaboxLoader3.datanode;dur=113.449393, PetaboxLoader3.resolve;dur=116.507435
x-app-server: wwwb-app210
x-ts: 302
x-tr: 323
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: SERVER=wwwb-app210; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Fri, 01 Aug 2025 14:40:57 GMT
content-type: text/html; charset=UTF-8
x-archive-orig-date: Wed, 10 Feb 2010 23:19:12 GMT
x-archive-orig-server: Apache
x-archive-orig-p3p: policyref="https://www.oreillynet.com/w3c/p3p.xml",CP="CAO DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONo OUR DELa PUBi OTRa IND PHY ONL UNI PUR COM NAV INT DEM CNT STA PRE"
x-archive-orig-connection: close
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: iso-8859-1
memento-datetime: Wed, 10 Feb 2010 23:19:17 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Wed, 27 Jun 2001 16:49:41 GMT", ; rel="prev memento"; datetime="Mon, 08 Feb 2010 15:57:41 GMT", ; rel="memento"; datetime="Wed, 10 Feb 2010 23:19:17 GMT", ; rel="next memento"; datetime="Mon, 08 Mar 2010 07:42:05 GMT", ; rel="last memento"; datetime="Mon, 11 Jul 2022 07:53:24 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 51_14_20100210204123_crawl103-c/51_14_20100210231742_crawl101.arc.gz
server-timing: captures_list;dur=0.608787, exclusion.robots;dur=0.024289, exclusion.robots.policy;dur=0.011453, esindex;dur=0.011733, cdx.remote;dur=15.067246, LoadShardBlock;dur=171.152962, PetaboxLoader3.datanode;dur=495.950526, PetaboxLoader3.resolve;dur=390.903536, load_resource;dur=792.790608
x-app-server: wwwb-app210
x-ts: 200
x-tr: 1154
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
David Flanagan
O'Reilly Community | Authors | David Flanagan
David Flanagan
Biography
David Flanagan is a computer programmer who spends most of his time
writing about JavaScript and Java. His books with O'Reilly include Java
in a Nutshell, Java Examples in a Nutshell, Java Foundation Classes in a
Nutshell, JavaScript: The Definitive Guide, and JavaScript Pocket
Reference. David has a degree in computer science and engineering from
the Massachusetts Institute of Technology. He lives with his wife and
children in the U.S. Pacific Northwest bewteen the cities of Seattle,
Washington and Vancouver, British Columbia. David has a blog at
www.davidflanagan.com.
Books
Blog
David's blog posts are hosted at:
https://davidflanagan.com
https://davidflanagan.com
December 07 2009
I've been focusing on JavaScript recently, so I missed this when it first came out: Closures for Java. I think it is interesting that the motivation for finally doing this is to facilitate APIs for concurrency. Sun will not be... read moreDecember 07 2009
I've been focusing on JavaScript recently, so I missed this when it first came out: Closures for Java. I think it is interesting that the motivation for finally doing this is to facilitate APIs for concurrency. Sun will not be... read moreA module loader with simple dependency management
November 25 2009
I've written another version require2.js of my CommonJS module loader require() function. This one has two interesting features. First, you can "pre-load" modules by mapping the module filename to the module function in the require._module_function object. If you do this,... read moreCommonJS Modules implementation
November 24 2009
I've implemented the CommonJS Modules 1.0 specification with the code in this file. It appears to pass the compliance tests when run in Firefox and Chrome on Linux, and also when run standalone in Tracemonkey, Rhino or V8. Note that... read moreFunctions as Namespaces, and How to Peek Inside
November 21 2009
It has become common in modern JavaScript programming to use functions as namespaces. If you put your code inside a function, then your variables and functions are local to the containing function and do not clutter up the global... read moreGoogle Closure Library and Optimizer
November 06 2009
Google has open-sourced the javascript library and optimizer they use in gmail and other web applications. They call it "Closure" and you can read about it here. While the optimizer looks very cool, I think the library is most... read moreMy Ruby Book on your iPhone. Cheap!
August 24 2009
O'Reilly has just released The Ruby Programming Language as a standalone iphone app! Looks like you can get your hands on it for just $5 (The cover price of the print edition is $40.) I don't have an iphone, but... read moretypeof, isFunction vs. isCallable, now and in ECMAScript 5
August 24 2009
Function objects in JavaScript are callable: you can invoke them. Other, non-function objects are allowed to be callable, however. Host objects in IE (things like Window.alert()) are callable, but are not native function objects. (Other browsers implement DOM methods as... read moreArray.some is like forEach() with an early termination option
August 19 2009
I was recently writing some documentation for the Array.forEach() method (part of ES5, but most browsers other than IE support it now) and worrying about the fact that there is no clean way to terminate the iteration prematurely. Nothing like... read moreGood algorithms are better than clever code
August 18 2009
Yesterday, I posted an entry about a clever way to implement string multiplication in JavaScript using Array.prototype.join() In comments, redraiment challenged me, suggesting that an implementation based on string doubling would be more efficient. Sure, I thought, for really large... read moreString Multiplication in JavaScript
August 18 2009
In Ruby, the "*" operator used with a string on the left and a number on the right does string repetition. "Ruby"*2 evaluates to "RubyRuby", for example. This is only occasionally useful (when creating lines of hyphens for ASCII tables,... read moreProposed coding convention for closures
May 15 2009
By now, many of us have gotten used to using closures in JavaScript to define a scope that holds private variables and utility functions so that we don't have to put these in the global namespace. The idiomatic code... read moreNew version of Jude, plus Java 1.5 server JVM bug
April 27 2009
I've just released Jude version 1.07. This is a relatively minor bug-fix release. Thanks to B.L. for reporting the bugs and helping to isolate them. Interestingly, one of the bugs reported against the previous version was an ArrayIndexOutOfBoundsException at a... read moreNew ECMAScript version numbering scheme
March 30 2009
Per a post today on the es-discuss mailing list, the next version of the JavaScript standard will be ECMAScript 5. This version was previously called ECMAScript 3.1, and is a relatively small and long-overdue update to the language. Version 4... read moreNovember 14 2008
While researching Ruby's new-in-1.9 Object methods untrusted?, untrust, and trust, I discovered something I did not know about the $SAFE variable: in addition to being Thread-local, it is also Proc-local. Proc objects (both procs and lambdas) have their own... read moreBuy Now and Save
Buy 2 books, get the 3rd FREE!
Use discount code: OPC10

All orders over $29.95 qualify for free shipping within the US. See details.
Use discount code: OPC10

All orders over $29.95 qualify for free shipping within the US. See details.
![]() ©2010, O'Reilly Media, Inc. (707) 827-7000 / (800) 998-9938 All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. |
About O'Reilly
Academic Solutions Authors Contacts Customer Service Jobs Newsletters O'Reilly Labs Press Room Privacy Policy RSS Feeds Terms of Service User Groups Writing for O'Reilly |
Content Archive Business Technology Computer Technology Microsoft Mobile Network Operating System Digital Photography Programming Software Web Web Design |
More O'Reilly Sites
O'Reilly Radar Ignite Tools of Change for Publishing Digital Media Inside iPhone makezine.com craftzine.com hackszine.com perl.com xml.com Partner Sites InsideRIA java.net O'Reilly Insights on Forbes.com |