Options:
- # Session Start: Tue Sep 25 00:00:00 2007
- # Session Ident: #whatwg
- # [00:15] * Joins: brodie (n=brodie@75.126.245.50)
- # [00:41] * Quits: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
- # [00:41] * Quits: jgraham (n=jgraham@81-86-210-17.dsl.pipex.com) (Read error: 110 (Connection timed out))
- # [00:48] * Joins: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
- # [00:52] * Quits: tndH (i=Rob@adsl-87-102-83-139.karoo.KCOM.COM) ("ChatZilla 0.9.78.1-rdmsoft [XULRunner 1.8.0.9/2006120508]")
- # [00:54] * Quits: grimeboy (n=grimboy@85-211-244-198.dsl.pipex.com) (Read error: 110 (Connection timed out))
- # [00:55] * Joins: KevinMarks (i=KevinMar@nat/google/x-f4f80cc1f29a33c0)
- # [00:59] * om_sleep is now known as othermaciej
- # [01:19] * Quits: billmason (n=billmaso@ip156.unival.com) (".")
- # [01:36] * Joins: om_sleep (n=mjs@17.255.111.173)
- # [01:39] * Joins: om_sleep_ (i=mjs@nat/apple/x-1a0f04a60d9a8ac3)
- # [01:40] * Quits: othermaciej (i=mjs@nat/apple/x-ab3f14c76b24ca23) (Read error: 104 (Connection reset by peer))
- # [01:54] * Quits: doublec (n=doublec@202.180.114.137)
- # [01:55] * Quits: om_sleep (n=mjs@17.255.111.173) (Connection timed out)
- # [02:07] * Joins: weinig_ (n=weinig@17.203.15.140)
- # [02:10] * Joins: doublec (n=doublec@202.180.114.137)
- # [02:23] * Quits: weinig (i=weinig@nat/apple/x-3cde8a195f2d8bd7) (Read error: 110 (Connection timed out))
- # [02:31] * Joins: MikeSmith (n=MikeSmit@eM60-254-221-154.pool.emnet.ne.jp)
- # [02:39] * Joins: aaronlev (n=chatzill@209-6-168-245.c3-0.arl-ubr2.sbo-arl.ma.cable.rcn.com)
- # [02:51] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [03:06] * Quits: aaronlev (n=chatzill@209-6-168-245.c3-0.arl-ubr2.sbo-arl.ma.cable.rcn.com) ("ChatZilla 0.9.78.1 [Firefox 2.0.0.7/2007091417]")
- # [03:08] * Lachy_ is now known as Lachy
- # [03:25] * Quits: h3h (n=w3rd@66-162-32-234.static.twtelecom.net) ("|")
- # [03:30] * Quits: kingryan (n=kingryan@corp.technorati.com)
- # [03:31] * Joins: aaronlev (n=chatzill@209-6-168-245.c3-0.arl-ubr2.sbo-arl.ma.cable.rcn.com)
- # [03:35] * Joins: yod (n=ot@dhcp-247-29.mag.keio.ac.jp)
- # [03:40] * Quits: MikeSmith (n=MikeSmit@eM60-254-221-154.pool.emnet.ne.jp) ("Less talk, more pimp walk.")
- # [03:52] * Quits: aroben (i=aroben@unaffiliated/aroben) (Read error: 110 (Connection timed out))
- # [04:08] * om_sleep_ is now known as othermaciej
- # [04:12] * Quits: aaronlev (n=chatzill@209-6-168-245.c3-0.arl-ubr2.sbo-arl.ma.cable.rcn.com) (Read error: 104 (Connection reset by peer))
- # [04:18] * Joins: csarven (n=nevrasc@modemcable130.251-202-24.mc.videotron.ca)
- # [04:19] * Quits: psa (n=yomode@posom.com) (Remote closed the connection)
- # [04:27] * Joins: MikeSmith (n=MikeSmit@eM60-254-212-178.pool.emnet.ne.jp)
- # [04:35] * Joins: aroben (n=aroben@unaffiliated/aroben)
- # [04:44] * Quits: weinig_ (n=weinig@17.203.15.140)
- # [04:46] <Hixie> aa: ping
- # [04:47] <Hixie> aa: the second example in http://code.google.com/p/google-gears/wiki/HigherLevelDatabaseAPI uses |row| without declaring it
- # [05:08] * Quits: MikeSmith (n=MikeSmit@eM60-254-212-178.pool.emnet.ne.jp) ("Less talk, more pimp walk.")
- # [05:11] <othermaciej> Hixie: presumably the intent is var row = rows[i] inside the loop
- # [05:14] <Hixie> i assume so, yeah
- # [05:16] <othermaciej> Hixie: I think it would be better to use a pseudo-array for the rows instead of a literal JS array, and especially so for the object representing an individual result row
- # [05:16] <Hixie> but we want it to inherit whatever is on the Array prototype
- # [05:17] <othermaciej> most functions on the Array prototype are generic, so it's possible to require inheriting them without requiring being an array
- # [05:17] <Hixie> sounds complex
- # [05:18] <othermaciej> ("generic" in the sense that they are required to work on any JS object that has numeric properties and a property named "length")
- # [05:18] <othermaciej> (by ECMAScript)
- # [05:18] <Hixie> other than increasing the complexity of the spec, what is gained by making it not an object?
- # [05:18] <Hixie> er
- # [05:18] <Hixie> not an Array
- # [05:19] <othermaciej> it's harder to do lazy computation tricks while literally subclassing JS array, and it's not clear if the few non-generic Array methods are desired here
- # [05:19] <othermaciej> in any case, it's more obvious to me for the objects representing a row, since you want both named and indexed access
- # [05:19] <Hixie> the objects representing the row are just Object elements
- # [05:19] <Hixie> er
- # [05:19] <Hixie> Object objects
- # [05:19] <Hixie> as it were
- # [05:20] <othermaciej> yes, I know
- # [05:20] <othermaciej> that leaves out any way to do index-based operations
- # [05:20] <Hixie> just enumerate them
- # [05:20] <othermaciej> (thought if they chose to implementations could still do lazy computation for the properties)
- # [05:20] <Hixie> for (field in row) { ... }
- # [05:21] <othermaciej> for..in loops are somewhat inefficient in JS, and while you can do similar things to forEach, filter and map, being able to use functional programming style directly can be handy
- # [05:21] <Hixie> i guess we can make them custom objects implementing interfaces specific for this case, but that basically just makes the spec complicated without an obvious gain as far as i can tell
- # [05:22] <Hixie> i don't really see what the use case is for non-named access to the fields
- # [05:24] <Hixie> (debugging being the exception, but it's not like performance is a high priority there)
- # [05:35] <othermaciej> indexed access is likely to be higher-performance than named access, even in a non-looping context
- # [05:36] <othermaciej> though probably harder to read, if you just did that directly
- # [05:36] <othermaciej> FWIW in WebKit we'd probably implement it as a custom object subclass anyway, if only to make conversion from SQLite API data types to JS types lazy
- # [05:37] <othermaciej> at which point is seems gratuitous not to offer indexed as well as named access
- # [05:38] <Hixie> i'd expect it to be implemented as a subclass, yes
- # [05:38] <Hixie> i can make the object have non-enumerable numeric properties
- # [05:39] <Hixie> but i don't want to give it a "length" property
- # [05:39] <Hixie> or any other named properties for that matter (like namedItem())
- # [05:39] <Hixie> since anything i add here is a column name you can't use
- # [05:41] <othermaciej> well, it would be a column name that it would be inconvenient to use, at the very least (since you could always use function accessors for such a column, if there were a complete set)
- # [05:42] <Hixie> that would be really confusing
- # [05:42] <othermaciej> non-enumerable numeric properties are somewhat less valuable without "length", since you can't use any array functions
- # [05:42] <Hixie> i agree
- # [05:42] <Hixie> but "length" seems like something you'd want to call a column relatively often
- # [05:42] <othermaciej> but it does seem like "length" might be a likely column name
- # [05:43] <Hixie> we could put the number of fields on SQLResultSet, though that doesn't help you use generic methods
- # [05:43] <othermaciej> I guess I'm sort of convinced that it's better not to have a special interface
- # [05:44] <Hixie> it's a weird set of constraints
- # [05:44] <Hixie> i don't really know how best to handle it
- # [05:44] <othermaciej> it looks like the only array methods that are not rebindable are toString and toLocaleString
- # [05:44] * Quits: csarven (n=nevrasc@modemcable130.251-202-24.mc.videotron.ca) ("http:/www.csarven.ca")
- # [05:45] <othermaciej> so if you override those it's possible to inherit the array prototype without inheriting from the Array implementation is the "class" sense
- # [05:45] <othermaciej> (that's in reference to the rows array)
- # [05:46] <Hixie> is that preferable to just implementing an Array internally?
- # [05:46] <Hixie> it's distinguishable at the JS level, so it's not like the spec can punt on this
- # [05:47] * Hixie notes that having a variadic set of arguments on sqlExecute in the _middle_ of the arguments list is probably going to cause issues in non-JS languages
- # [05:47] <Hixie> but you really want the callback at the end
- # [05:47] <Hixie> maybe we should always require the array syntax
- # [05:47] <Hixie> executeSql(['sql', arguments...], callback)
- # [05:47] <Hixie> no wait
- # [05:47] <Hixie> it would be
- # [05:47] <Hixie> executeSql([['sql', arguments...]], callback)
- # [05:47] <Hixie> boy is that ugly
- # [05:47] <othermaciej> yeah
- # [05:48] <othermaciej> non-JS languages could certainly implement only the array version
- # [05:48] <othermaciej> you can't really express the other version well in the type system of any statically typed language
- # [05:49] <Hixie> not without a buttload of overloads, no
- # [05:50] <othermaciej> how is it distinguishable at the JS level whether you subclass Array or just have its prototype in your prototype chain?
- # [05:50] <Hixie> well if it's not, it doesn't matter what the spec says
- # [05:51] <Hixie> but as far as I can tell, an Array doesn't have a prototype chain
- # [05:51] <Hixie> so you could distinguish by checking to see if it had one
- # [05:52] <othermaciej> an Array instance does have a prototype chain
- # [05:52] <othermaciej> however anything that was either a subclass of Array or for other reasons had a prototype chain that included Array's prototype would have a longer prototype chain
- # [05:53] <othermaciej> your spec, if read literally, would possibly rule out a custom subclass of Array
- # [05:53] <Hixie> why?
- # [05:53] <othermaciej> since it says "must return a native array of objects"
- # [05:53] <othermaciej> assuming you mean "native" in the sense of the ECMAScript spec
- # [05:54] <Hixie> you can implement a native array however you like
- # [05:54] <Hixie> it does disallow a different prototype chain length, though, yes
- # [05:54] <Hixie> (var x = new Array(); x.__prototype__; returns 'undefined' in mozilla.)
- # [05:55] <othermaciej> I think the property is named __proto__
- # [05:55] <Hixie> ah
- # [05:55] * Hixie checks that
- # [05:56] <Hixie> var x = new Array(); x.__proto__ == Array.prototype; returns true
- # [05:56] <Hixie> so yes
- # [05:56] <othermaciej> so anyway that constraint seems of marginal value to JS coders and would make it hard to implement as a custom Array subclass in at least Gecko and WebKit afaik
- # [05:57] <othermaciej> (probably not impossible, but shouldn't simplicity of implementation trump simplicity of the spec?)
- # [05:57] <Hixie> yes it should
- # [05:57] <Hixie> so what would you want it to say?
- # [05:58] <othermaciej> I'm not sure
- # [05:58] <othermaciej> another issue with Array is that it has to allow adding arbitrary array properties and those must be reflected in "length" and in behavior of the array methods
- # [05:58] <othermaciej> which would make a completely custom implementation that used a different backing store even harder
- # [05:59] <Hixie> yeah i'd be ok with making it immutable
- # [05:59] <Hixie> so you'd want something that had a length and an item() method?
- # [05:59] <Hixie> we really need a way to make these objects enumerable in JS
- # [05:59] <Hixie> same problem with NodeList, et al
- # [06:00] <othermaciej> yes, NodeList's non-arrayness is inconvenient
- # [06:01] <othermaciej> thinking...
- # [06:01] <othermaciej> I think giving the row list item(), a read-only length, indexed access via array syntax, and requiring that it have all normal methods of Array would make implementation not too hard and would give JS coders all they need
- # [06:02] <othermaciej> similar requirements could be placed on NodeList et al for convenience
- # [06:02] <othermaciej> the downside is you couldn't use any of the mutating array methods usefully since they all modify length
- # [06:02] <othermaciej> maybe it is better not to have them than to have non-working versions
- # [06:02] <Hixie> yeah i'm not sure how to require that though
- # [06:04] <Hixie> i'm really not sure how to handle errors with the array form of executeSql
- # [06:04] * Hixie doesn't really want to add it
- # [06:04] <othermaciej> "all methods available on Array instances except those that may modify any property of the array
- # [06:04] <othermaciej> Hixie: the form that lets you pass an array of statements?
- # [06:04] <Hixie> yeah
- # [06:04] <othermaciej> it doesn't seem super essential
- # [06:05] <othermaciej> but you could say in case of error the callback is delivered after the first error, with only as the ResultSets for the successful statements up to the first failing one, plus the first failing one
- # [06:15] * Quits: aroben (n=aroben@unaffiliated/aroben) (Read error: 110 (Connection timed out))
- # [06:36] * Quits: Lachy (n=Lachy@124-170-203-157.dyn.iinet.net.au) ("ChatZilla 0.9.78.1 [Firefox 2.0.0.6/2007072518]")
- # [07:05] * Joins: MikeSmith (n=MikeSmit@tea12.w3.mag.keio.ac.jp)
- # [07:18] <othermaciej> Hixie: should I send my comments about the "native array" requirement to the list? (you've explained away my concerns about the row objects themselves)
- # [07:40] * Quits: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
- # [07:50] * Joins: jgraham (n=jgraham@81-86-218-186.dsl.pipex.com)
- # [07:55] * Quits: othermaciej (i=mjs@nat/apple/x-1a0f04a60d9a8ac3)
- # [07:55] * Quits: doublec (n=doublec@202.180.114.137)
- # [07:58] * Joins: aroben (n=aroben@unaffiliated/aroben)
- # [08:17] * Joins: jruderman (n=jruderma@c-67-180-15-227.hsd1.ca.comcast.net)
- # [08:45] * Joins: om_sleep (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
- # [08:52] * Quits: om_sleep (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
- # [09:13] * Joins: virtuelv (n=virtuelv@pat-tdc.opera.com)
- # [09:19] * Quits: Yudai_ (n=Yudai@pae2f7e.tokyte00.ap.so-net.ne.jp) (Read error: 110 (Connection timed out))
- # [09:21] * Joins: Yudai_ (n=Yudai@p8029e0.tokyte00.ap.so-net.ne.jp)
- # [09:28] * Quits: virtuelv (n=virtuelv@pat-tdc.opera.com) (Read error: 104 (Connection reset by peer))
- # [09:32] * Quits: yod (n=ot@dhcp-247-29.mag.keio.ac.jp) ("Leaving")
- # [09:32] * Joins: tantek (n=tantek@adsl-69-105-224-140.dsl.pltn13.pacbell.net)
- # [09:38] * Joins: virtuelv (n=virtuelv@pat-tdc.opera.com)
- # [09:39] * Quits: tantek (n=tantek@adsl-69-105-224-140.dsl.pltn13.pacbell.net)
- # [09:43] * Quits: wakaba_ (n=w@79.163.210.220.dy.bbexcite.jp) (simmons.freenode.net irc.freenode.net)
- # [09:43] * Quits: Dashiva (i=Dashiva@15.84-48-60.nextgentel.com) (simmons.freenode.net irc.freenode.net)
- # [09:43] * Quits: gavin_ (n=gavin@firefox/developer/gavin) (simmons.freenode.net irc.freenode.net)
- # [09:43] * Quits: jeremyb (n=jeremy@unaffiliated/jeremyb) (simmons.freenode.net irc.freenode.net)
- # [09:43] * Quits: hendry (n=hendry@nox.vm.bytemark.co.uk) (simmons.freenode.net irc.freenode.net)
- # [09:45] * Joins: wakaba_ (n=w@79.163.210.220.dy.bbexcite.jp)
- # [09:45] * Joins: hendry (n=hendry@nox.vm.bytemark.co.uk)
- # [09:45] * Joins: jeremyb (n=jeremy@unaffiliated/jeremyb)
- # [09:45] * Joins: gavin_ (n=gavin@firefox/developer/gavin)
- # [09:45] * Joins: Dashiva (i=Dashiva@15.84-48-60.nextgentel.com)
- # [09:51] * Joins: Lachy (n=Lachy@203-214-146-132.perm.iinet.net.au)
- # [09:51] * Quits: KevinMarks (i=KevinMar@nat/google/x-f4f80cc1f29a33c0) ("The computer fell asleep")
- # [10:07] * Quits: aroben (n=aroben@unaffiliated/aroben) (Read error: 110 (Connection timed out))
- # [10:17] <Lachy> Hixie, yt?
- # [10:17] <Lachy> what's the point of the version parameter in the openDatabase() function?
- # [10:21] * Joins: othermaciej (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
- # [10:24] * Joins: BenWard (i=BenWard@nat/yahoo/x-8c8122b76e53b8f3)
- # [10:26] * Joins: Ducki (n=Ducki@nrdh-d9b98377.pool.mediaWays.net)
- # [10:26] <Hixie> Lachy: lets you ensure the database is using the schema you expect
- # [10:29] <Hixie> othermaciej: yeah, send mail, in case i forget
- # [10:56] <Lachy> ok, so authors can check the version number and then, if necessary, run some ALTER TABLE queries or whatever to upgrade to the right schema
- # [10:57] <Hixie> yeah
- # [10:57] <Hixie> and if they do that while any other pages are using the db
- # [10:57] <Hixie> those pages will start raising exceptions instead of corrupting the database
- # [10:58] <othermaciej> Hixie: another possible coment I had was that maybe version should be an integer and only be allowed to go up, but I'm not really sure if that's better
- # [11:00] <othermaciej> actually I think it is good
- # [11:00] <othermaciej> since there is no atomic test-and-set of the version, there is no way right now to tell if you are overwriting a newer version with an older one
- # [11:00] <Hixie> seems to artificially impose a constrain on the developer
- # [11:01] <Hixie> we could add an atomic change
- # [11:02] <othermaciej> it would have to be atomic test-and-set and you'd need to pass all versions you know how to upgrade
- # [11:02] <Hixie> database.changeVersion(oldVersion, newVersion) -> bool (true if changed, false if old version didn't match)
- # [11:02] * Joins: ROBOd (n=robod@89.123.24.243)
- # [11:02] <Hixie> no just get the old version, check that you like it and can upgrade it, and if you can call db.changeVersion(oldVersion, '1.4');
- # [11:03] <Hixie> it
- # [11:03] <Hixie> it's not like it's gonna change frequently
- # [11:03] <othermaciej> I guess you'd have to possibly loop in case of partial upgrade in between
- # [11:03] <Hixie> the only clash you're likely to get is that the update was done for you
- # [11:03] <othermaciej> true, it's kind of an edge case
- # [11:04] <othermaciej> but it is nice to have a design that at least can possibly work in the odd case that you end up running v1, v2 and v3 schema code all at once
- # [11:05] <othermaciej> another issue - should you bump the version before or after the upgrade transaction?
- # [11:05] <othermaciej> seems like it has to be done as part of an exclusive transaction
- # [11:06] <Hixie> i'd bump it twice
- # [11:06] <othermaciej> but the version itself is not subject to the exclusive access lock
- # [11:06] <Hixie> once to a temporary "upgrading" version, and once to the final version
- # [11:06] <othermaciej> makes sense
- # [11:06] <Hixie> and do all the changes in one transaction
- # [11:06] <othermaciej> you could bump to upgrading before the upgrade transaction, and to the final inside the transaction at the very end
- # [11:07] <othermaciej> (inside the transaction you'd have to retest that it's still the expected upgrading value)
- # [11:07] <Hixie> and if you find the version is in an "upgrading" stage, you could wait a few seconds and if it doesn't change offer the user to "fix the corruption" somehow
- # [11:08] * Joins: annevk (n=annevk@c5144430c.cable.wanadoo.nl)
- # [11:08] <Hixie> i was originally considering just extending SQL to have a SET VERSION statement
- # [11:08] <Hixie> but that seemed more trouble than it's worth
- # [11:11] <othermaciej> it would certainly solve the atomic test and set problem (indeed, atomic test old version, perform upgrade and set new version)
- # [11:11] <Hixie> yeah
- # [11:11] <Hixie> it would also solve the problem of the db being in an inconsistent state
- # [11:12] <Hixie> as you'd be able to set the version in the same transaction as the changes
- # [11:12] <Hixie> and so a rollback would roll everything back
- # [11:12] <othermaciej> it's hard to do better than only being able to change version inside a transaction
- # [11:12] <Hixie> yeah
- # [11:12] <Hixie> but i fear it puts too much burden on the implementors
- # [11:12] <Hixie> they'd all have to hack sqlite to do it
- # [11:13] <othermaciej> or use a dedicated table with a reserved name
- # [11:15] <Hixie> that's rather heavy-weight
- # [11:15] <Hixie> and you have to do things like prevent it from being dropped, etc
- # [11:16] <Lachy> the biggest problem I see will be that different UAs will use different DBs on the backend. Mozilla and Safari will probably use SQLLite, but IE will probably use some MS database, and there will be differences in the supported SQL features
- # [11:18] <Hixie> we'll have to define the sql subset before the latter happens
- # [11:18] <othermaciej> at some point the query language has to be specced
- # [11:19] <Lachy> yeah, add SQL5 to your todo list :-)
- # [11:20] <othermaciej> some relatively easilly defined subset of SQL92 might be sufficient
- # [11:20] <Hixie> i'll have to get a copy of SQL9x
- # [11:21] <Lachy> why not SQL:2006 or at least 2003?
- # [11:21] <Hixie> i've updated the spec to have a locking changeVersion()
- # [11:21] <Hixie> Lachy: whichever is latest is fine by me. i haven't been able to find _any_ version of that spec.
- # [11:21] <Lachy> SQL 2006 is ISO/IEC 9075-14:2006 (according to wikipedia)
- # [11:22] <Hixie> yeah
- # [11:22] <Hixie> ISO specs aren't free
- # [11:22] * Joins: KevinMarks (n=KevinMar@c-76-102-254-252.hsd1.ca.comcast.net)
- # [11:22] <hsivonen> is SQL one of those standards that are kept secret in Geneva?
- # [11:22] <Lachy> http://en.wikipedia.org/wiki/SQL#Standardization
- # [11:22] * Joins: zcorpan (n=zcorpan@pat.se.opera.com)
- # [11:22] <Hixie> othermaciej: the only issue really with changeVersion() now, afaict, is that if the script somehow dies without setting the version properly, the db can be left in a messy state
- # [11:22] <Hixie> othermaciej: but that could happen whatever do, really
- # [11:22] <hsivonen> whoa. they've added XML to SQL
- # [11:24] <Lachy> Do ISO specs require interop before becoming standards?
- # [11:24] <othermaciej> Hixie: well, atomic commit/rollback would reduce the likelihood if the version change were part of the transaction
- # [11:24] <othermaciej> Lachy: I do not believe so, as a general rule
- # [11:24] <othermaciej> I don't think they even require op, let alone interop
- # [11:25] <othermaciej> but I think individual technical committees can set their own rules
- # [11:25] <othermaciej> obviously SQL needs to be fully AJAX compliant
- # [11:27] * Quits: MikeSmith (n=MikeSmit@tea12.w3.mag.keio.ac.jp) ("Less talk, more pimp walk.")
- # [11:29] <Lachy> Hixie, I think there may be a problem with the way .insertId is defined.
- # [11:29] <othermaciej> mapping from SQL types to JS types will also need defining at some point
- # [11:29] <Lachy> it says "If the statement inserted multiple rows, the ID of the last row must be the one returned"
- # [11:29] <othermaciej> not sure how many non-obvious cases there will be
- # [11:30] <Lachy> but I was reading in the MySQL docs that the LAST_INSERT_ID returns the id of the first row
- # [11:30] <Lachy> (I know it's unintuitive, but the MySQL docs said there was a reason for it)
- # [11:36] <Hixie> Lachy: what does sqlite do?
- # [11:37] <Hixie> othermaciej: yeah, a transaction would make it easier to do the right thing, but i doubt that would actually result in many more cases of the right thing. ;-)
- # [11:38] <Lachy> Hixie, I tried looking for that, but the sqllite docs were very unclear
- # [11:38] <annevk> see http://nl.php.net/manual/en/function.sqlite-last-insert-rowid.php
- # [11:38] <annevk> for some reason I'm on wanadoo and freenode, this can't last long
- # [11:38] <othermaciej> Hixie: I'll try to get you implementation feedback on the versioning thing
- # [11:38] <Hixie> othermaciej: k
- # [11:39] <Hixie> othermaciej: in the meantime, we have a readonly version and a method changeVersion(old, new)
- # [11:39] <othermaciej> (and the rest of it)
- # [11:42] * Quits: KevinMarks (n=KevinMar@c-76-102-254-252.hsd1.ca.comcast.net) ("The computer fell asleep")
- # [12:03] * Quits: annevk (n=annevk@c5144430c.cable.wanadoo.nl) (Read error: 110 (Connection timed out))
- # [12:07] * Joins: Ducki_ (n=Ducki@nrdh-d9b98074.pool.mediaWays.net)
- # [12:12] * Quits: Ducki (n=Ducki@nrdh-d9b98377.pool.mediaWays.net) (Read error: 113 (No route to host))
- # [12:16] <hsivonen> weird. when Gecko adds Zapfino ligature support, WebKit regresses it
- # [12:27] * Joins: doublec (n=doublec@202-74-210-5.ue.woosh.co.nz)
- # [12:36] * Joins: met_ (n=Hassman@b14-4.vscht.cz)
- # [12:56] <othermaciej> did WebKit ever have it?
- # [12:56] <othermaciej> as far as I know, our fast code path never supported ligatures or other contextual forms
- # [12:56] <othermaciej> but the code paths that require shaping do
- # [13:18] * Joins: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [13:48] * Quits: doublec (n=doublec@202-74-210-5.ue.woosh.co.nz)
- # [13:52] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [13:58] * Quits: met_ (n=Hassman@b14-4.vscht.cz) ("Chemists never die, they just stop reacting.")
- # [14:02] <hsivonen> othermaciej: http://weblogs.mozillazine.org/roc/archives/2007/09/textalicious.html look different (better) in Safari 2.0.4 than it does in the latest WebKit nightly
- # [14:02] <hsivonen> s/look/looks/
- # [14:03] * Joins: Ducki__ (n=Ducki@nrdh-d9b98065.pool.mediaWays.net)
- # [14:05] <hsivonen> with a dualcore CPU, I'd like to get my share of the shaping eyecandy for English as well.
- # [14:23] <Philip`> executeSql('sql', arguments).addCallback(callback)
- # [14:25] <Philip`> (to avoid callback argument after varargs)
- # [14:25] <Philip`> or steal more from Twisted and have
- # [14:25] <Philip`> executeSql('sql', arguments).addCallback( function (res) { return executeSql('sql2', res.rows[0].id) }
- # [14:25] <Philip`> ).addCallback( function (res) { alert('Okay') }
- # [14:25] <Philip`> ).addErrback( function (err) { alert('Oops') }
- # [14:25] <Philip`> )
- # [14:25] * Philip` wonders why he keeps losing newlines when pasting into IRC
- # [14:28] * Quits: Ducki_ (n=Ducki@nrdh-d9b98074.pool.mediaWays.net) (No route to host)
- # [14:59] * Joins: grimeboy (n=grimboy@85-211-244-198.dsl.pipex.com)
- # [15:01] * Joins: yod (n=ot@softbank221018155222.bbtec.net)
- # [15:22] * Joins: MikeSmith (n=MikeSmit@eM60-254-220-110.pool.emnet.ne.jp)
- # [15:29] * Joins: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
- # [15:54] * Joins: hasather (n=hasather@90-227-221-48-no62.tbcn.telia.com)
- # [15:58] * Joins: Ducki (i=Ducki@Nb4c2.n.pppool.de)
- # [16:06] * Quits: yod (n=ot@softbank221018155222.bbtec.net) ("Leaving")
- # [16:14] * Quits: Ducki__ (n=Ducki@nrdh-d9b98065.pool.mediaWays.net) (Read error: 113 (No route to host))
- # [16:25] * Quits: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) (Remote closed the connection)
- # [16:35] * Quits: Ducki (i=Ducki@Nb4c2.n.pppool.de) (Read error: 110 (Connection timed out))
- # [16:35] * Joins: billmason (n=billmaso@ip156.unival.com)
- # [16:36] * Joins: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
- # [16:47] * Joins: tndH (i=Rob@adsl-87-102-83-139.karoo.KCOM.COM)
- # [17:20] * Joins: weinig (n=weinig@17.203.15.140)
- # [17:33] * Joins: annevk (n=annevk@c5144430c.cable.wanadoo.nl)
- # [17:33] * Quits: annevk (n=annevk@c5144430c.cable.wanadoo.nl) (Remote closed the connection)
- # [17:33] * Joins: annevk (n=annevk@c5144430c.cable.wanadoo.nl)
- # [17:56] <Philip`> Argh, it's harder doing APNG tests now that I've got one which segfaults Opera
- # [17:58] * Quits: annevk (n=annevk@c5144430c.cable.wanadoo.nl) (Read error: 110 (Connection timed out))
- # [18:00] <virtuelv> Philip`: file a bug, please
- # [18:00] <virtuelv> (I know you will, but I'd be interested in knowing the bug number)
- # [18:03] <Philip`> virtuelv: 287173
- # [18:04] <virtuelv> ty
- # [18:04] * Philip` removes it from his test-case page for now
- # [18:07] * Joins: Lachy_ (n=Lachy@203-214-146-132.perm.iinet.net.au)
- # [18:11] <virtuelv> Philip`: out of curiosity: Which tools do you use for APNG?
- # [18:12] <Philip`> Perl :-)
- # [18:13] <Philip`> at least for creating APNG test cases
- # [18:13] * Joins: Ducki (i=Ducki@nrdh-d9b980cd.pool.mediaWays.net)
- # [18:14] <Philip`> I used the Firefox APNG Editor extension for http://philip.html5.org/demos/apng/sierpinski.png (with canvas code to draw each frame)
- # [18:20] * Joins: _Ivo (n=ivo@89-180-165-131.net.novis.pt)
- # [18:24] * Quits: Lachy (n=Lachy@203-214-146-132.perm.iinet.net.au) (Read error: 110 (Connection timed out))
- # [18:31] * Quits: virtuelv (n=virtuelv@pat-tdc.opera.com) ("Leaving")
- # [18:32] <othermaciej> hsivonen: always using shaping APIs can cause overall page loading (not just text drawing) to be 20-25% slower
- # [18:34] <othermaciej> hsivonen: we haven't yet come up with a way to do contextual forms as fast as we do normal latin text, but we're certainly thinking about it
- # [18:46] * Quits: jruderman (n=jruderma@c-67-180-15-227.hsd1.ca.comcast.net)
- # [18:49] * Joins: aroben (i=aroben@unaffiliated/aroben)
- # [18:53] * Joins: h3h (n=w3rd@66-162-32-234.static.twtelecom.net)
- # [18:57] <Philip`> http://philip.html5.org/tests/apng/ - now with more tests
- # [18:57] <Philip`> I think my use of the alt attribute is non-conforming, but I'm not terribly concerned about how this page works in non-graphical UAs
- # [19:00] * Lachy_ is now known as Lachy
- # [19:07] * Joins: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
- # [19:13] * Joins: psa (n=yomode@posom.com)
- # [19:26] <zcorpan> Philip`: things like alt="FAIL" is ok for test cases :)
- # [19:27] <zcorpan> test cases don't need to comply with document conformance criteria from the specs they are using or testing
- # [19:34] * Joins: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [19:38] * Joins: tndH_ (i=Rob@adsl-87-102-114-133.karoo.KCOM.COM)
- # [19:58] * Quits: tndH (i=Rob@adsl-87-102-83-139.karoo.KCOM.COM) (Read error: 110 (Connection timed out))
- # [19:58] * Joins: bewest (n=ben@httpcraft/bewest)
- # [20:00] * Joins: Lachy_ (n=Lachy@203-214-146-132.perm.iinet.net.au)
- # [20:03] * Joins: Ducki_ (i=Ducki@nrdh-d9b980c6.pool.mediaWays.net)
- # [20:07] * Quits: BenWard (i=BenWard@nat/yahoo/x-8c8122b76e53b8f3) ("Fades out again…")
- # [20:14] * Joins: virtuelv (n=virtuelv@51.80-203-76.nextgentel.com)
- # [20:15] * Quits: Lachy (n=Lachy@203-214-146-132.perm.iinet.net.au) (Read error: 110 (Connection timed out))
- # [20:15] * Quits: MikeSmith (n=MikeSmit@eM60-254-220-110.pool.emnet.ne.jp) (Read error: 110 (Connection timed out))
- # [20:19] * Joins: MikeSmith (n=MikeSmit@eM60-254-213-58.pool.emnet.ne.jp)
- # [20:20] * Joins: kingryan (n=kingryan@corp.technorati.com)
- # [20:21] * Quits: Ducki (i=Ducki@nrdh-d9b980cd.pool.mediaWays.net) (Read error: 113 (No route to host))
- # [20:23] * Quits: grimeboy (n=grimboy@85-211-244-198.dsl.pipex.com) (Read error: 110 (Connection timed out))
- # [20:23] * Quits: othermaciej (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
- # [20:27] * Quits: Ducki_ (i=Ducki@nrdh-d9b980c6.pool.mediaWays.net) (Read error: 104 (Connection reset by peer))
- # [20:27] * Joins: Ducki (n=Ducki@nrdh-d9b980c6.pool.mediaWays.net)
- # [20:48] * Joins: KevinMarks (i=KevinMar@nat/google/x-0a943f1a60b5808a)
- # [21:05] <Hixie> Philip`: your .addCallback() idea would i'm sure result in people taking a reference to that object and then doing really evil things with it
- # [21:06] * Joins: Philip`_ (n=philip@zaynar.demon.co.uk)
- # [21:07] <Hixie> <Hixie> Philip`: your .addCallback() idea would i'm sure result in people taking a reference to that object and then doing really evil things with it
- # [21:12] * Quits: kingryan (n=kingryan@corp.technorati.com) (Read error: 104 (Connection reset by peer))
- # [21:13] * Joins: kingryan (n=kingryan@corp.technorati.com)
- # [21:13] <Philip`_> In Twisted, the asynchronous methods return a Deferred (which indicates either a result or a soon-to-be-a-result), and you can keep it forever and do addCallback whenever, and the callback is either called immediately (if the Deferred has the result already) or later (when the result becomes available)
- # [21:13] <Philip`_> so there's not really anything evil you can do with the object
- # [21:14] <Hixie> you can keep the transaction open forever
- # [21:15] <Hixie> e.g. if you don't add a callback it'll never close
- # [21:15] <Philip`_> I guess it's harder in JavaScript since GC isn't immediate, so you'd have to keep all the result data just in case someone's still got a reference to the deferred result
- # [21:15] <Philip`_> Ah, transactions sound harder too :-)
- # [21:16] <Hixie> i like the api concept though
- # [21:17] * Joins: othermaciej (i=mjs@nat/apple/x-d490bd04777b664e)
- # [21:19] * Joins: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
- # [21:21] * Quits: Philip` (n=philip@zaynar.demon.co.uk) (Read error: 110 (Connection timed out))
- # [21:22] * Quits: zcorpan (n=zcorpan@pat.se.opera.com) (Read error: 110 (Connection timed out))
- # [21:24] * Joins: aaron__ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
- # [21:33] * Philip`_ is now known as Philip`
- # [21:41] * Quits: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) (Read error: 110 (Connection timed out))
- # [21:43] * Quits: aaron__ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) ("ChatZilla 0.9.78.1 [Firefox 3.0a9pre/2007092504]")
- # [21:43] * Joins: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
- # [21:47] * Joins: zcorpan (n=zcorpan@c-0922e353.1451-1-64736c12.cust.bredbandsbolaget.se)
- # [21:51] * Quits: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) (Read error: 110 (Connection timed out))
- # [21:57] * Quits: ROBOd (n=robod@89.123.24.243) (Remote closed the connection)
- # [22:01] * Joins: Ducki_ (n=Ducki@Nbb10.n.pppool.de)
- # [22:13] * Joins: ROBOd (n=robod@89.123.24.243)
- # [22:20] * Quits: Ducki (n=Ducki@nrdh-d9b980c6.pool.mediaWays.net) (Read error: 113 (No route to host))
- # [22:28] * Quits: Ducki_ (n=Ducki@Nbb10.n.pppool.de) (Read error: 104 (Connection reset by peer))
- # [22:29] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [22:30] * Joins: jgraham_ (n=jgraham@81-86-223-139.dsl.pipex.com)
- # [22:41] * Quits: jgraham (n=jgraham@81-86-218-186.dsl.pipex.com) (Read error: 110 (Connection timed out))
- # [22:45] * Quits: ROBOd (n=robod@89.123.24.243) ("http://www.robodesign.ro")
- # [22:51] * Quits: gsnedders (n=gsnedder@host86-137-237-196.range86-137.btcentralplus.com) ("Don't touch /dev/null…")
- # [22:53] * Joins: gsnedders (n=gsnedder@host86-137-237-196.range86-137.btcentralplus.com)
- # [22:59] * Lachy_ is now known as Lachy
- # [23:02] * Quits: zcorpan (n=zcorpan@c-0922e353.1451-1-64736c12.cust.bredbandsbolaget.se) (Read error: 110 (Connection timed out))
- # [23:04] * Joins: othermaciej_ (n=mjs@17.255.111.173)
- # [23:06] * Quits: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) ("ChatZilla 0.9.78.1 [Firefox 3.0a9pre/2007092504]")
- # [23:18] * Quits: othermaciej (i=mjs@nat/apple/x-d490bd04777b664e) (Read error: 110 (Connection timed out))
- # [23:31] * Quits: othermaciej_ (n=mjs@17.255.111.173) (Success)
- # [23:35] * tndH_ is now known as tndH
- # [23:35] <Hixie> any preference as to which object the app cache api is on?
- # [23:35] * Joins: webben (n=benh@dip5-fw.corp.ukl.yahoo.com)
- # [23:35] <Hixie> window? window.navigator?
- # [23:36] <Hixie> window.cache?
- # [23:38] <virtuelv> isn't the window.navigator object already overloaded with all kinds of crap?
- # [23:38] <Hixie> yup
- # [23:38] <Hixie> so's window
- # [23:38] * Quits: _Ivo (n=ivo@89-180-165-131.net.novis.pt) (Remote closed the connection)
- # [23:38] <virtuelv> heh, yeah
- # [23:39] <virtuelv> window.cache sounds more descriptive
- # [23:39] <Hixie> but it adds yet another singleton
- # [23:39] * Joins: tantek (n=tantek@adsl-69-110-18-13.dsl.pltn13.pacbell.net)
- # [23:39] <Hixie> which is expensive
- # [23:52] <Hixie> this is, in a nutshell, the misunderstanding that the pro-required-alt camp is stumbling upon, i think:
- # [23:52] <Hixie> "The issue is not to do so much with what the AT UA can do with an image
- # [23:52] <Hixie> without the alt attribute, it is about what the UA cannot do.
- # [23:52] <Hixie> -- http://html4all.org/pipermail/list_html4all.org/2007-September/000401.html
- # [23:53] <Hixie> It cannot reliably differentiate between an important image without an alt
- # [23:53] <Hixie> attribute and an unimportant image."
- # [23:53] <Hixie> (the problem being that _regardless_ of what the spec says, a UA cannot _reliably_ differentiate between an important image and an unimportant image)
- # [23:54] <Hixie> (as henri later points out in http://html4all.org/pipermail/list_html4all.org/2007-September/000409.html)
- # [23:58] <Hixie> wow that thread is sad
- # [23:58] <Hixie> henri explains the problem: http://html4all.org/pipermail/list_html4all.org/2007-September/000409.html
- # [23:58] <Hixie> steven completely blanks on understanding it: http://html4all.org/pipermail/list_html4all.org/2007-September/000410.html
- # [23:58] <Hixie> henri explains it again: http://html4all.org/pipermail/list_html4all.org/2007-September/000411.html
- # [23:59] <Hixie> steven doesn't even reply: http://html4all.org/pipermail/list_html4all.org/2007-September/000412.html
- # [23:59] <Hixie> good lord
- # Session Close: Wed Sep 26 00:00:00 2007
The end :)