/irc-logs / freenode / #whatwg / 2007-09-25 / end

Options:

  1. # Session Start: Tue Sep 25 00:00:00 2007
  2. # Session Ident: #whatwg
  3. # [00:15] * Joins: brodie (n=brodie@75.126.245.50)
  4. # [00:41] * Quits: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
  5. # [00:41] * Quits: jgraham (n=jgraham@81-86-210-17.dsl.pipex.com) (Read error: 110 (Connection timed out))
  6. # [00:48] * Joins: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
  7. # [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]")
  8. # [00:54] * Quits: grimeboy (n=grimboy@85-211-244-198.dsl.pipex.com) (Read error: 110 (Connection timed out))
  9. # [00:55] * Joins: KevinMarks (i=KevinMar@nat/google/x-f4f80cc1f29a33c0)
  10. # [00:59] * om_sleep is now known as othermaciej
  11. # [01:19] * Quits: billmason (n=billmaso@ip156.unival.com) (".")
  12. # [01:36] * Joins: om_sleep (n=mjs@17.255.111.173)
  13. # [01:39] * Joins: om_sleep_ (i=mjs@nat/apple/x-1a0f04a60d9a8ac3)
  14. # [01:40] * Quits: othermaciej (i=mjs@nat/apple/x-ab3f14c76b24ca23) (Read error: 104 (Connection reset by peer))
  15. # [01:54] * Quits: doublec (n=doublec@202.180.114.137)
  16. # [01:55] * Quits: om_sleep (n=mjs@17.255.111.173) (Connection timed out)
  17. # [02:07] * Joins: weinig_ (n=weinig@17.203.15.140)
  18. # [02:10] * Joins: doublec (n=doublec@202.180.114.137)
  19. # [02:23] * Quits: weinig (i=weinig@nat/apple/x-3cde8a195f2d8bd7) (Read error: 110 (Connection timed out))
  20. # [02:31] * Joins: MikeSmith (n=MikeSmit@eM60-254-221-154.pool.emnet.ne.jp)
  21. # [02:39] * Joins: aaronlev (n=chatzill@209-6-168-245.c3-0.arl-ubr2.sbo-arl.ma.cable.rcn.com)
  22. # [02:51] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
  23. # [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]")
  24. # [03:08] * Lachy_ is now known as Lachy
  25. # [03:25] * Quits: h3h (n=w3rd@66-162-32-234.static.twtelecom.net) ("|")
  26. # [03:30] * Quits: kingryan (n=kingryan@corp.technorati.com)
  27. # [03:31] * Joins: aaronlev (n=chatzill@209-6-168-245.c3-0.arl-ubr2.sbo-arl.ma.cable.rcn.com)
  28. # [03:35] * Joins: yod (n=ot@dhcp-247-29.mag.keio.ac.jp)
  29. # [03:40] * Quits: MikeSmith (n=MikeSmit@eM60-254-221-154.pool.emnet.ne.jp) ("Less talk, more pimp walk.")
  30. # [03:52] * Quits: aroben (i=aroben@unaffiliated/aroben) (Read error: 110 (Connection timed out))
  31. # [04:08] * om_sleep_ is now known as othermaciej
  32. # [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))
  33. # [04:18] * Joins: csarven (n=nevrasc@modemcable130.251-202-24.mc.videotron.ca)
  34. # [04:19] * Quits: psa (n=yomode@posom.com) (Remote closed the connection)
  35. # [04:27] * Joins: MikeSmith (n=MikeSmit@eM60-254-212-178.pool.emnet.ne.jp)
  36. # [04:35] * Joins: aroben (n=aroben@unaffiliated/aroben)
  37. # [04:44] * Quits: weinig_ (n=weinig@17.203.15.140)
  38. # [04:46] <Hixie> aa: ping
  39. # [04:47] <Hixie> aa: the second example in http://code.google.com/p/google-gears/wiki/HigherLevelDatabaseAPI uses |row| without declaring it
  40. # [05:08] * Quits: MikeSmith (n=MikeSmit@eM60-254-212-178.pool.emnet.ne.jp) ("Less talk, more pimp walk.")
  41. # [05:11] <othermaciej> Hixie: presumably the intent is var row = rows[i] inside the loop
  42. # [05:14] <Hixie> i assume so, yeah
  43. # [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
  44. # [05:16] <Hixie> but we want it to inherit whatever is on the Array prototype
  45. # [05:17] <othermaciej> most functions on the Array prototype are generic, so it's possible to require inheriting them without requiring being an array
  46. # [05:17] <Hixie> sounds complex
  47. # [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")
  48. # [05:18] <othermaciej> (by ECMAScript)
  49. # [05:18] <Hixie> other than increasing the complexity of the spec, what is gained by making it not an object?
  50. # [05:18] <Hixie> er
  51. # [05:18] <Hixie> not an Array
  52. # [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
  53. # [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
  54. # [05:19] <Hixie> the objects representing the row are just Object elements
  55. # [05:19] <Hixie> er
  56. # [05:19] <Hixie> Object objects
  57. # [05:19] <Hixie> as it were
  58. # [05:20] <othermaciej> yes, I know
  59. # [05:20] <othermaciej> that leaves out any way to do index-based operations
  60. # [05:20] <Hixie> just enumerate them
  61. # [05:20] <othermaciej> (thought if they chose to implementations could still do lazy computation for the properties)
  62. # [05:20] <Hixie> for (field in row) { ... }
  63. # [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
  64. # [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
  65. # [05:22] <Hixie> i don't really see what the use case is for non-named access to the fields
  66. # [05:24] <Hixie> (debugging being the exception, but it's not like performance is a high priority there)
  67. # [05:35] <othermaciej> indexed access is likely to be higher-performance than named access, even in a non-looping context
  68. # [05:36] <othermaciej> though probably harder to read, if you just did that directly
  69. # [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
  70. # [05:37] <othermaciej> at which point is seems gratuitous not to offer indexed as well as named access
  71. # [05:38] <Hixie> i'd expect it to be implemented as a subclass, yes
  72. # [05:38] <Hixie> i can make the object have non-enumerable numeric properties
  73. # [05:39] <Hixie> but i don't want to give it a "length" property
  74. # [05:39] <Hixie> or any other named properties for that matter (like namedItem())
  75. # [05:39] <Hixie> since anything i add here is a column name you can't use
  76. # [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)
  77. # [05:42] <Hixie> that would be really confusing
  78. # [05:42] <othermaciej> non-enumerable numeric properties are somewhat less valuable without "length", since you can't use any array functions
  79. # [05:42] <Hixie> i agree
  80. # [05:42] <Hixie> but "length" seems like something you'd want to call a column relatively often
  81. # [05:42] <othermaciej> but it does seem like "length" might be a likely column name
  82. # [05:43] <Hixie> we could put the number of fields on SQLResultSet, though that doesn't help you use generic methods
  83. # [05:43] <othermaciej> I guess I'm sort of convinced that it's better not to have a special interface
  84. # [05:44] <Hixie> it's a weird set of constraints
  85. # [05:44] <Hixie> i don't really know how best to handle it
  86. # [05:44] <othermaciej> it looks like the only array methods that are not rebindable are toString and toLocaleString
  87. # [05:44] * Quits: csarven (n=nevrasc@modemcable130.251-202-24.mc.videotron.ca) ("http:/www.csarven.ca")
  88. # [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
  89. # [05:45] <othermaciej> (that's in reference to the rows array)
  90. # [05:46] <Hixie> is that preferable to just implementing an Array internally?
  91. # [05:46] <Hixie> it's distinguishable at the JS level, so it's not like the spec can punt on this
  92. # [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
  93. # [05:47] <Hixie> but you really want the callback at the end
  94. # [05:47] <Hixie> maybe we should always require the array syntax
  95. # [05:47] <Hixie> executeSql(['sql', arguments...], callback)
  96. # [05:47] <Hixie> no wait
  97. # [05:47] <Hixie> it would be
  98. # [05:47] <Hixie> executeSql([['sql', arguments...]], callback)
  99. # [05:47] <Hixie> boy is that ugly
  100. # [05:47] <othermaciej> yeah
  101. # [05:48] <othermaciej> non-JS languages could certainly implement only the array version
  102. # [05:48] <othermaciej> you can't really express the other version well in the type system of any statically typed language
  103. # [05:49] <Hixie> not without a buttload of overloads, no
  104. # [05:50] <othermaciej> how is it distinguishable at the JS level whether you subclass Array or just have its prototype in your prototype chain?
  105. # [05:50] <Hixie> well if it's not, it doesn't matter what the spec says
  106. # [05:51] <Hixie> but as far as I can tell, an Array doesn't have a prototype chain
  107. # [05:51] <Hixie> so you could distinguish by checking to see if it had one
  108. # [05:52] <othermaciej> an Array instance does have a prototype chain
  109. # [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
  110. # [05:53] <othermaciej> your spec, if read literally, would possibly rule out a custom subclass of Array
  111. # [05:53] <Hixie> why?
  112. # [05:53] <othermaciej> since it says "must return a native array of objects"
  113. # [05:53] <othermaciej> assuming you mean "native" in the sense of the ECMAScript spec
  114. # [05:54] <Hixie> you can implement a native array however you like
  115. # [05:54] <Hixie> it does disallow a different prototype chain length, though, yes
  116. # [05:54] <Hixie> (var x = new Array(); x.__prototype__; returns 'undefined' in mozilla.)
  117. # [05:55] <othermaciej> I think the property is named __proto__
  118. # [05:55] <Hixie> ah
  119. # [05:55] * Hixie checks that
  120. # [05:56] <Hixie> var x = new Array(); x.__proto__ == Array.prototype; returns true
  121. # [05:56] <Hixie> so yes
  122. # [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
  123. # [05:57] <othermaciej> (probably not impossible, but shouldn't simplicity of implementation trump simplicity of the spec?)
  124. # [05:57] <Hixie> yes it should
  125. # [05:57] <Hixie> so what would you want it to say?
  126. # [05:58] <othermaciej> I'm not sure
  127. # [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
  128. # [05:58] <othermaciej> which would make a completely custom implementation that used a different backing store even harder
  129. # [05:59] <Hixie> yeah i'd be ok with making it immutable
  130. # [05:59] <Hixie> so you'd want something that had a length and an item() method?
  131. # [05:59] <Hixie> we really need a way to make these objects enumerable in JS
  132. # [05:59] <Hixie> same problem with NodeList, et al
  133. # [06:00] <othermaciej> yes, NodeList's non-arrayness is inconvenient
  134. # [06:01] <othermaciej> thinking...
  135. # [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
  136. # [06:02] <othermaciej> similar requirements could be placed on NodeList et al for convenience
  137. # [06:02] <othermaciej> the downside is you couldn't use any of the mutating array methods usefully since they all modify length
  138. # [06:02] <othermaciej> maybe it is better not to have them than to have non-working versions
  139. # [06:02] <Hixie> yeah i'm not sure how to require that though
  140. # [06:04] <Hixie> i'm really not sure how to handle errors with the array form of executeSql
  141. # [06:04] * Hixie doesn't really want to add it
  142. # [06:04] <othermaciej> "all methods available on Array instances except those that may modify any property of the array
  143. # [06:04] <othermaciej> Hixie: the form that lets you pass an array of statements?
  144. # [06:04] <Hixie> yeah
  145. # [06:04] <othermaciej> it doesn't seem super essential
  146. # [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
  147. # [06:15] * Quits: aroben (n=aroben@unaffiliated/aroben) (Read error: 110 (Connection timed out))
  148. # [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]")
  149. # [07:05] * Joins: MikeSmith (n=MikeSmit@tea12.w3.mag.keio.ac.jp)
  150. # [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)
  151. # [07:40] * Quits: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
  152. # [07:50] * Joins: jgraham (n=jgraham@81-86-218-186.dsl.pipex.com)
  153. # [07:55] * Quits: othermaciej (i=mjs@nat/apple/x-1a0f04a60d9a8ac3)
  154. # [07:55] * Quits: doublec (n=doublec@202.180.114.137)
  155. # [07:58] * Joins: aroben (n=aroben@unaffiliated/aroben)
  156. # [08:17] * Joins: jruderman (n=jruderma@c-67-180-15-227.hsd1.ca.comcast.net)
  157. # [08:45] * Joins: om_sleep (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
  158. # [08:52] * Quits: om_sleep (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
  159. # [09:13] * Joins: virtuelv (n=virtuelv@pat-tdc.opera.com)
  160. # [09:19] * Quits: Yudai_ (n=Yudai@pae2f7e.tokyte00.ap.so-net.ne.jp) (Read error: 110 (Connection timed out))
  161. # [09:21] * Joins: Yudai_ (n=Yudai@p8029e0.tokyte00.ap.so-net.ne.jp)
  162. # [09:28] * Quits: virtuelv (n=virtuelv@pat-tdc.opera.com) (Read error: 104 (Connection reset by peer))
  163. # [09:32] * Quits: yod (n=ot@dhcp-247-29.mag.keio.ac.jp) ("Leaving")
  164. # [09:32] * Joins: tantek (n=tantek@adsl-69-105-224-140.dsl.pltn13.pacbell.net)
  165. # [09:38] * Joins: virtuelv (n=virtuelv@pat-tdc.opera.com)
  166. # [09:39] * Quits: tantek (n=tantek@adsl-69-105-224-140.dsl.pltn13.pacbell.net)
  167. # [09:43] * Quits: wakaba_ (n=w@79.163.210.220.dy.bbexcite.jp) (simmons.freenode.net irc.freenode.net)
  168. # [09:43] * Quits: Dashiva (i=Dashiva@15.84-48-60.nextgentel.com) (simmons.freenode.net irc.freenode.net)
  169. # [09:43] * Quits: gavin_ (n=gavin@firefox/developer/gavin) (simmons.freenode.net irc.freenode.net)
  170. # [09:43] * Quits: jeremyb (n=jeremy@unaffiliated/jeremyb) (simmons.freenode.net irc.freenode.net)
  171. # [09:43] * Quits: hendry (n=hendry@nox.vm.bytemark.co.uk) (simmons.freenode.net irc.freenode.net)
  172. # [09:45] * Joins: wakaba_ (n=w@79.163.210.220.dy.bbexcite.jp)
  173. # [09:45] * Joins: hendry (n=hendry@nox.vm.bytemark.co.uk)
  174. # [09:45] * Joins: jeremyb (n=jeremy@unaffiliated/jeremyb)
  175. # [09:45] * Joins: gavin_ (n=gavin@firefox/developer/gavin)
  176. # [09:45] * Joins: Dashiva (i=Dashiva@15.84-48-60.nextgentel.com)
  177. # [09:51] * Joins: Lachy (n=Lachy@203-214-146-132.perm.iinet.net.au)
  178. # [09:51] * Quits: KevinMarks (i=KevinMar@nat/google/x-f4f80cc1f29a33c0) ("The computer fell asleep")
  179. # [10:07] * Quits: aroben (n=aroben@unaffiliated/aroben) (Read error: 110 (Connection timed out))
  180. # [10:17] <Lachy> Hixie, yt?
  181. # [10:17] <Lachy> what's the point of the version parameter in the openDatabase() function?
  182. # [10:21] * Joins: othermaciej (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
  183. # [10:24] * Joins: BenWard (i=BenWard@nat/yahoo/x-8c8122b76e53b8f3)
  184. # [10:26] * Joins: Ducki (n=Ducki@nrdh-d9b98377.pool.mediaWays.net)
  185. # [10:26] <Hixie> Lachy: lets you ensure the database is using the schema you expect
  186. # [10:29] <Hixie> othermaciej: yeah, send mail, in case i forget
  187. # [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
  188. # [10:57] <Hixie> yeah
  189. # [10:57] <Hixie> and if they do that while any other pages are using the db
  190. # [10:57] <Hixie> those pages will start raising exceptions instead of corrupting the database
  191. # [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
  192. # [11:00] <othermaciej> actually I think it is good
  193. # [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
  194. # [11:00] <Hixie> seems to artificially impose a constrain on the developer
  195. # [11:01] <Hixie> we could add an atomic change
  196. # [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
  197. # [11:02] <Hixie> database.changeVersion(oldVersion, newVersion) -> bool (true if changed, false if old version didn't match)
  198. # [11:02] * Joins: ROBOd (n=robod@89.123.24.243)
  199. # [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');
  200. # [11:03] <Hixie> it
  201. # [11:03] <Hixie> it's not like it's gonna change frequently
  202. # [11:03] <othermaciej> I guess you'd have to possibly loop in case of partial upgrade in between
  203. # [11:03] <Hixie> the only clash you're likely to get is that the update was done for you
  204. # [11:03] <othermaciej> true, it's kind of an edge case
  205. # [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
  206. # [11:05] <othermaciej> another issue - should you bump the version before or after the upgrade transaction?
  207. # [11:05] <othermaciej> seems like it has to be done as part of an exclusive transaction
  208. # [11:06] <Hixie> i'd bump it twice
  209. # [11:06] <othermaciej> but the version itself is not subject to the exclusive access lock
  210. # [11:06] <Hixie> once to a temporary "upgrading" version, and once to the final version
  211. # [11:06] <othermaciej> makes sense
  212. # [11:06] <Hixie> and do all the changes in one transaction
  213. # [11:06] <othermaciej> you could bump to upgrading before the upgrade transaction, and to the final inside the transaction at the very end
  214. # [11:07] <othermaciej> (inside the transaction you'd have to retest that it's still the expected upgrading value)
  215. # [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
  216. # [11:08] * Joins: annevk (n=annevk@c5144430c.cable.wanadoo.nl)
  217. # [11:08] <Hixie> i was originally considering just extending SQL to have a SET VERSION statement
  218. # [11:08] <Hixie> but that seemed more trouble than it's worth
  219. # [11:11] <othermaciej> it would certainly solve the atomic test and set problem (indeed, atomic test old version, perform upgrade and set new version)
  220. # [11:11] <Hixie> yeah
  221. # [11:11] <Hixie> it would also solve the problem of the db being in an inconsistent state
  222. # [11:12] <Hixie> as you'd be able to set the version in the same transaction as the changes
  223. # [11:12] <Hixie> and so a rollback would roll everything back
  224. # [11:12] <othermaciej> it's hard to do better than only being able to change version inside a transaction
  225. # [11:12] <Hixie> yeah
  226. # [11:12] <Hixie> but i fear it puts too much burden on the implementors
  227. # [11:12] <Hixie> they'd all have to hack sqlite to do it
  228. # [11:13] <othermaciej> or use a dedicated table with a reserved name
  229. # [11:15] <Hixie> that's rather heavy-weight
  230. # [11:15] <Hixie> and you have to do things like prevent it from being dropped, etc
  231. # [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
  232. # [11:18] <Hixie> we'll have to define the sql subset before the latter happens
  233. # [11:18] <othermaciej> at some point the query language has to be specced
  234. # [11:19] <Lachy> yeah, add SQL5 to your todo list :-)
  235. # [11:20] <othermaciej> some relatively easilly defined subset of SQL92 might be sufficient
  236. # [11:20] <Hixie> i'll have to get a copy of SQL9x
  237. # [11:21] <Lachy> why not SQL:2006 or at least 2003?
  238. # [11:21] <Hixie> i've updated the spec to have a locking changeVersion()
  239. # [11:21] <Hixie> Lachy: whichever is latest is fine by me. i haven't been able to find _any_ version of that spec.
  240. # [11:21] <Lachy> SQL 2006 is ISO/IEC 9075-14:2006 (according to wikipedia)
  241. # [11:22] <Hixie> yeah
  242. # [11:22] <Hixie> ISO specs aren't free
  243. # [11:22] * Joins: KevinMarks (n=KevinMar@c-76-102-254-252.hsd1.ca.comcast.net)
  244. # [11:22] <hsivonen> is SQL one of those standards that are kept secret in Geneva?
  245. # [11:22] <Lachy> http://en.wikipedia.org/wiki/SQL#Standardization
  246. # [11:22] * Joins: zcorpan (n=zcorpan@pat.se.opera.com)
  247. # [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
  248. # [11:22] <Hixie> othermaciej: but that could happen whatever do, really
  249. # [11:22] <hsivonen> whoa. they've added XML to SQL
  250. # [11:24] <Lachy> Do ISO specs require interop before becoming standards?
  251. # [11:24] <othermaciej> Hixie: well, atomic commit/rollback would reduce the likelihood if the version change were part of the transaction
  252. # [11:24] <othermaciej> Lachy: I do not believe so, as a general rule
  253. # [11:24] <othermaciej> I don't think they even require op, let alone interop
  254. # [11:25] <othermaciej> but I think individual technical committees can set their own rules
  255. # [11:25] <othermaciej> obviously SQL needs to be fully AJAX compliant
  256. # [11:27] * Quits: MikeSmith (n=MikeSmit@tea12.w3.mag.keio.ac.jp) ("Less talk, more pimp walk.")
  257. # [11:29] <Lachy> Hixie, I think there may be a problem with the way .insertId is defined.
  258. # [11:29] <othermaciej> mapping from SQL types to JS types will also need defining at some point
  259. # [11:29] <Lachy> it says "If the statement inserted multiple rows, the ID of the last row must be the one returned"
  260. # [11:29] <othermaciej> not sure how many non-obvious cases there will be
  261. # [11:30] <Lachy> but I was reading in the MySQL docs that the LAST_INSERT_ID returns the id of the first row
  262. # [11:30] <Lachy> (I know it's unintuitive, but the MySQL docs said there was a reason for it)
  263. # [11:36] <Hixie> Lachy: what does sqlite do?
  264. # [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. ;-)
  265. # [11:38] <Lachy> Hixie, I tried looking for that, but the sqllite docs were very unclear
  266. # [11:38] <annevk> see http://nl.php.net/manual/en/function.sqlite-last-insert-rowid.php
  267. # [11:38] <annevk> for some reason I'm on wanadoo and freenode, this can't last long
  268. # [11:38] <othermaciej> Hixie: I'll try to get you implementation feedback on the versioning thing
  269. # [11:38] <Hixie> othermaciej: k
  270. # [11:39] <Hixie> othermaciej: in the meantime, we have a readonly version and a method changeVersion(old, new)
  271. # [11:39] <othermaciej> (and the rest of it)
  272. # [11:42] * Quits: KevinMarks (n=KevinMar@c-76-102-254-252.hsd1.ca.comcast.net) ("The computer fell asleep")
  273. # [12:03] * Quits: annevk (n=annevk@c5144430c.cable.wanadoo.nl) (Read error: 110 (Connection timed out))
  274. # [12:07] * Joins: Ducki_ (n=Ducki@nrdh-d9b98074.pool.mediaWays.net)
  275. # [12:12] * Quits: Ducki (n=Ducki@nrdh-d9b98377.pool.mediaWays.net) (Read error: 113 (No route to host))
  276. # [12:16] <hsivonen> weird. when Gecko adds Zapfino ligature support, WebKit regresses it
  277. # [12:27] * Joins: doublec (n=doublec@202-74-210-5.ue.woosh.co.nz)
  278. # [12:36] * Joins: met_ (n=Hassman@b14-4.vscht.cz)
  279. # [12:56] <othermaciej> did WebKit ever have it?
  280. # [12:56] <othermaciej> as far as I know, our fast code path never supported ligatures or other contextual forms
  281. # [12:56] <othermaciej> but the code paths that require shaping do
  282. # [13:18] * Joins: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
  283. # [13:48] * Quits: doublec (n=doublec@202-74-210-5.ue.woosh.co.nz)
  284. # [13:52] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
  285. # [13:58] * Quits: met_ (n=Hassman@b14-4.vscht.cz) ("Chemists never die, they just stop reacting.")
  286. # [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
  287. # [14:02] <hsivonen> s/look/looks/
  288. # [14:03] * Joins: Ducki__ (n=Ducki@nrdh-d9b98065.pool.mediaWays.net)
  289. # [14:05] <hsivonen> with a dualcore CPU, I'd like to get my share of the shaping eyecandy for English as well.
  290. # [14:23] <Philip`> executeSql('sql', arguments).addCallback(callback)
  291. # [14:25] <Philip`> (to avoid callback argument after varargs)
  292. # [14:25] <Philip`> or steal more from Twisted and have
  293. # [14:25] <Philip`> executeSql('sql', arguments).addCallback( function (res) { return executeSql('sql2', res.rows[0].id) }
  294. # [14:25] <Philip`> ).addCallback( function (res) { alert('Okay') }
  295. # [14:25] <Philip`> ).addErrback( function (err) { alert('Oops') }
  296. # [14:25] <Philip`> )
  297. # [14:25] * Philip` wonders why he keeps losing newlines when pasting into IRC
  298. # [14:28] * Quits: Ducki_ (n=Ducki@nrdh-d9b98074.pool.mediaWays.net) (No route to host)
  299. # [14:59] * Joins: grimeboy (n=grimboy@85-211-244-198.dsl.pipex.com)
  300. # [15:01] * Joins: yod (n=ot@softbank221018155222.bbtec.net)
  301. # [15:22] * Joins: MikeSmith (n=MikeSmit@eM60-254-220-110.pool.emnet.ne.jp)
  302. # [15:29] * Joins: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
  303. # [15:54] * Joins: hasather (n=hasather@90-227-221-48-no62.tbcn.telia.com)
  304. # [15:58] * Joins: Ducki (i=Ducki@Nb4c2.n.pppool.de)
  305. # [16:06] * Quits: yod (n=ot@softbank221018155222.bbtec.net) ("Leaving")
  306. # [16:14] * Quits: Ducki__ (n=Ducki@nrdh-d9b98065.pool.mediaWays.net) (Read error: 113 (No route to host))
  307. # [16:25] * Quits: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) (Remote closed the connection)
  308. # [16:35] * Quits: Ducki (i=Ducki@Nb4c2.n.pppool.de) (Read error: 110 (Connection timed out))
  309. # [16:35] * Joins: billmason (n=billmaso@ip156.unival.com)
  310. # [16:36] * Joins: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
  311. # [16:47] * Joins: tndH (i=Rob@adsl-87-102-83-139.karoo.KCOM.COM)
  312. # [17:20] * Joins: weinig (n=weinig@17.203.15.140)
  313. # [17:33] * Joins: annevk (n=annevk@c5144430c.cable.wanadoo.nl)
  314. # [17:33] * Quits: annevk (n=annevk@c5144430c.cable.wanadoo.nl) (Remote closed the connection)
  315. # [17:33] * Joins: annevk (n=annevk@c5144430c.cable.wanadoo.nl)
  316. # [17:56] <Philip`> Argh, it's harder doing APNG tests now that I've got one which segfaults Opera
  317. # [17:58] * Quits: annevk (n=annevk@c5144430c.cable.wanadoo.nl) (Read error: 110 (Connection timed out))
  318. # [18:00] <virtuelv> Philip`: file a bug, please
  319. # [18:00] <virtuelv> (I know you will, but I'd be interested in knowing the bug number)
  320. # [18:03] <Philip`> virtuelv: 287173
  321. # [18:04] <virtuelv> ty
  322. # [18:04] * Philip` removes it from his test-case page for now
  323. # [18:07] * Joins: Lachy_ (n=Lachy@203-214-146-132.perm.iinet.net.au)
  324. # [18:11] <virtuelv> Philip`: out of curiosity: Which tools do you use for APNG?
  325. # [18:12] <Philip`> Perl :-)
  326. # [18:13] <Philip`> at least for creating APNG test cases
  327. # [18:13] * Joins: Ducki (i=Ducki@nrdh-d9b980cd.pool.mediaWays.net)
  328. # [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)
  329. # [18:20] * Joins: _Ivo (n=ivo@89-180-165-131.net.novis.pt)
  330. # [18:24] * Quits: Lachy (n=Lachy@203-214-146-132.perm.iinet.net.au) (Read error: 110 (Connection timed out))
  331. # [18:31] * Quits: virtuelv (n=virtuelv@pat-tdc.opera.com) ("Leaving")
  332. # [18:32] <othermaciej> hsivonen: always using shaping APIs can cause overall page loading (not just text drawing) to be 20-25% slower
  333. # [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
  334. # [18:46] * Quits: jruderman (n=jruderma@c-67-180-15-227.hsd1.ca.comcast.net)
  335. # [18:49] * Joins: aroben (i=aroben@unaffiliated/aroben)
  336. # [18:53] * Joins: h3h (n=w3rd@66-162-32-234.static.twtelecom.net)
  337. # [18:57] <Philip`> http://philip.html5.org/tests/apng/ - now with more tests
  338. # [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
  339. # [19:00] * Lachy_ is now known as Lachy
  340. # [19:07] * Joins: jruderman (n=jruderma@corp-241.mountainview.mozilla.com)
  341. # [19:13] * Joins: psa (n=yomode@posom.com)
  342. # [19:26] <zcorpan> Philip`: things like alt="FAIL" is ok for test cases :)
  343. # [19:27] <zcorpan> test cases don't need to comply with document conformance criteria from the specs they are using or testing
  344. # [19:34] * Joins: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
  345. # [19:38] * Joins: tndH_ (i=Rob@adsl-87-102-114-133.karoo.KCOM.COM)
  346. # [19:58] * Quits: tndH (i=Rob@adsl-87-102-83-139.karoo.KCOM.COM) (Read error: 110 (Connection timed out))
  347. # [19:58] * Joins: bewest (n=ben@httpcraft/bewest)
  348. # [20:00] * Joins: Lachy_ (n=Lachy@203-214-146-132.perm.iinet.net.au)
  349. # [20:03] * Joins: Ducki_ (i=Ducki@nrdh-d9b980c6.pool.mediaWays.net)
  350. # [20:07] * Quits: BenWard (i=BenWard@nat/yahoo/x-8c8122b76e53b8f3) ("Fades out again…")
  351. # [20:14] * Joins: virtuelv (n=virtuelv@51.80-203-76.nextgentel.com)
  352. # [20:15] * Quits: Lachy (n=Lachy@203-214-146-132.perm.iinet.net.au) (Read error: 110 (Connection timed out))
  353. # [20:15] * Quits: MikeSmith (n=MikeSmit@eM60-254-220-110.pool.emnet.ne.jp) (Read error: 110 (Connection timed out))
  354. # [20:19] * Joins: MikeSmith (n=MikeSmit@eM60-254-213-58.pool.emnet.ne.jp)
  355. # [20:20] * Joins: kingryan (n=kingryan@corp.technorati.com)
  356. # [20:21] * Quits: Ducki (i=Ducki@nrdh-d9b980cd.pool.mediaWays.net) (Read error: 113 (No route to host))
  357. # [20:23] * Quits: grimeboy (n=grimboy@85-211-244-198.dsl.pipex.com) (Read error: 110 (Connection timed out))
  358. # [20:23] * Quits: othermaciej (n=mjs@dsl081-048-145.sfo1.dsl.speakeasy.net)
  359. # [20:27] * Quits: Ducki_ (i=Ducki@nrdh-d9b980c6.pool.mediaWays.net) (Read error: 104 (Connection reset by peer))
  360. # [20:27] * Joins: Ducki (n=Ducki@nrdh-d9b980c6.pool.mediaWays.net)
  361. # [20:48] * Joins: KevinMarks (i=KevinMar@nat/google/x-0a943f1a60b5808a)
  362. # [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
  363. # [21:06] * Joins: Philip`_ (n=philip@zaynar.demon.co.uk)
  364. # [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
  365. # [21:12] * Quits: kingryan (n=kingryan@corp.technorati.com) (Read error: 104 (Connection reset by peer))
  366. # [21:13] * Joins: kingryan (n=kingryan@corp.technorati.com)
  367. # [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)
  368. # [21:13] <Philip`_> so there's not really anything evil you can do with the object
  369. # [21:14] <Hixie> you can keep the transaction open forever
  370. # [21:15] <Hixie> e.g. if you don't add a callback it'll never close
  371. # [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
  372. # [21:15] <Philip`_> Ah, transactions sound harder too :-)
  373. # [21:16] <Hixie> i like the api concept though
  374. # [21:17] * Joins: othermaciej (i=mjs@nat/apple/x-d490bd04777b664e)
  375. # [21:19] * Joins: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
  376. # [21:21] * Quits: Philip` (n=philip@zaynar.demon.co.uk) (Read error: 110 (Connection timed out))
  377. # [21:22] * Quits: zcorpan (n=zcorpan@pat.se.opera.com) (Read error: 110 (Connection timed out))
  378. # [21:24] * Joins: aaron__ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
  379. # [21:33] * Philip`_ is now known as Philip`
  380. # [21:41] * Quits: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) (Read error: 110 (Connection timed out))
  381. # [21:43] * Quits: aaron__ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) ("ChatZilla 0.9.78.1 [Firefox 3.0a9pre/2007092504]")
  382. # [21:43] * Joins: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net)
  383. # [21:47] * Joins: zcorpan (n=zcorpan@c-0922e353.1451-1-64736c12.cust.bredbandsbolaget.se)
  384. # [21:51] * Quits: aaronlev (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) (Read error: 110 (Connection timed out))
  385. # [21:57] * Quits: ROBOd (n=robod@89.123.24.243) (Remote closed the connection)
  386. # [22:01] * Joins: Ducki_ (n=Ducki@Nbb10.n.pppool.de)
  387. # [22:13] * Joins: ROBOd (n=robod@89.123.24.243)
  388. # [22:20] * Quits: Ducki (n=Ducki@nrdh-d9b980c6.pool.mediaWays.net) (Read error: 113 (No route to host))
  389. # [22:28] * Quits: Ducki_ (n=Ducki@Nbb10.n.pppool.de) (Read error: 104 (Connection reset by peer))
  390. # [22:29] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
  391. # [22:30] * Joins: jgraham_ (n=jgraham@81-86-223-139.dsl.pipex.com)
  392. # [22:41] * Quits: jgraham (n=jgraham@81-86-218-186.dsl.pipex.com) (Read error: 110 (Connection timed out))
  393. # [22:45] * Quits: ROBOd (n=robod@89.123.24.243) ("http://www.robodesign.ro")
  394. # [22:51] * Quits: gsnedders (n=gsnedder@host86-137-237-196.range86-137.btcentralplus.com) ("Don't touch /dev/null…")
  395. # [22:53] * Joins: gsnedders (n=gsnedder@host86-137-237-196.range86-137.btcentralplus.com)
  396. # [22:59] * Lachy_ is now known as Lachy
  397. # [23:02] * Quits: zcorpan (n=zcorpan@c-0922e353.1451-1-64736c12.cust.bredbandsbolaget.se) (Read error: 110 (Connection timed out))
  398. # [23:04] * Joins: othermaciej_ (n=mjs@17.255.111.173)
  399. # [23:06] * Quits: aaron_ (n=chatzill@c-66-31-86-217.hsd1.ma.comcast.net) ("ChatZilla 0.9.78.1 [Firefox 3.0a9pre/2007092504]")
  400. # [23:18] * Quits: othermaciej (i=mjs@nat/apple/x-d490bd04777b664e) (Read error: 110 (Connection timed out))
  401. # [23:31] * Quits: othermaciej_ (n=mjs@17.255.111.173) (Success)
  402. # [23:35] * tndH_ is now known as tndH
  403. # [23:35] <Hixie> any preference as to which object the app cache api is on?
  404. # [23:35] * Joins: webben (n=benh@dip5-fw.corp.ukl.yahoo.com)
  405. # [23:35] <Hixie> window? window.navigator?
  406. # [23:36] <Hixie> window.cache?
  407. # [23:38] <virtuelv> isn't the window.navigator object already overloaded with all kinds of crap?
  408. # [23:38] <Hixie> yup
  409. # [23:38] <Hixie> so's window
  410. # [23:38] * Quits: _Ivo (n=ivo@89-180-165-131.net.novis.pt) (Remote closed the connection)
  411. # [23:38] <virtuelv> heh, yeah
  412. # [23:39] <virtuelv> window.cache sounds more descriptive
  413. # [23:39] <Hixie> but it adds yet another singleton
  414. # [23:39] * Joins: tantek (n=tantek@adsl-69-110-18-13.dsl.pltn13.pacbell.net)
  415. # [23:39] <Hixie> which is expensive
  416. # [23:52] <Hixie> this is, in a nutshell, the misunderstanding that the pro-required-alt camp is stumbling upon, i think:
  417. # [23:52] <Hixie> "The issue is not to do so much with what the AT UA can do with an image
  418. # [23:52] <Hixie> without the alt attribute, it is about what the UA cannot do.
  419. # [23:52] <Hixie> -- http://html4all.org/pipermail/list_html4all.org/2007-September/000401.html
  420. # [23:53] <Hixie> It cannot reliably differentiate between an important image without an alt
  421. # [23:53] <Hixie> attribute and an unimportant image."
  422. # [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)
  423. # [23:54] <Hixie> (as henri later points out in http://html4all.org/pipermail/list_html4all.org/2007-September/000409.html)
  424. # [23:58] <Hixie> wow that thread is sad
  425. # [23:58] <Hixie> henri explains the problem: http://html4all.org/pipermail/list_html4all.org/2007-September/000409.html
  426. # [23:58] <Hixie> steven completely blanks on understanding it: http://html4all.org/pipermail/list_html4all.org/2007-September/000410.html
  427. # [23:58] <Hixie> henri explains it again: http://html4all.org/pipermail/list_html4all.org/2007-September/000411.html
  428. # [23:59] <Hixie> steven doesn't even reply: http://html4all.org/pipermail/list_html4all.org/2007-September/000412.html
  429. # [23:59] <Hixie> good lord
  430. # Session Close: Wed Sep 26 00:00:00 2007

The end :)