Browser wars. They started with Mosaic (good) vs Netscape (evil). Netscape won. Then they started again with Netscape (good) vs Microsoft (evil). Microsoft won. Evil always wins. Interestingly, Microsoft bought the Mosaic code base and built MSIE 2 out of it, so in a way Mosic won. Most popular web browsers. Firefox at 30%? On specialist sites like W3schools, sure, but that certainly isn't the global average! Also, Mozilla, Netscape and Firefox should all be grouped together since they are the same program. Safari has a much higher share than Opera, but isn't on the list. HTTP transaction. The server closes the connection. The client does not (unless you count internal housekeeping when it sees the connection has been closed or you are counting user-triggered aborts). The HTTP Response. I think you mean "Response includes a header and optional body" Text Boxes. Nit: actualy text boxes allow more than one line of text. The user can copy multiple lines, then paste them into the text box. I'm not sure if this 'feature' works on all platforms, but it can cause interesting errors. Hidden control. User can not _easily_ see or change the value. (I take this back if it is addressed later on). Menus (Continued) You mean "grouped" hierarchically? Text Properties: white-space Very poorly supported by browsers. I'd drop this slide for a couple of years. unicode-bidi Bidirectional text flow. Allows English blocks to flow left to right, while Arabic/Hebrew flows right to left. On the same page. Getting Google applications to support this has been fun! CGI: Sending the Reply "it's" -> its Perl What are the brackets for in print("hello world")? Print doesn't use brackets (though extra brackets are harmless). This doesn't do what you expect: print('This is a single-quoted string\n'); For the same reason, the next page is completely broken. Interesting, I didn't know you could use this syntax: open(my $fp, "<", "infile.txt"); I've always used: open FP, "< infile.txt"; More than one way to do it, I guess. Special characters Use \w+, not \w*. The example allows blank filenames which would match the directory! The Return value. Nit: Hope you don't have a Jean-Luc or an O'Brien in the data! More seriously, what's the first \s* for? Currently it does nothing. Maybe you intended to have a ^? Midterm review (and HTML) Nit: HTML documents have three parts, but the third part may well be a frameset. Midterm review HTTP Messages: Content-type and Content-length are mis-capitalized. JavaScript Cons Requires a user who trusts their BROWSER enough to run the code the server provides. Like Java applets, JavaScript's only danger to the user is if their browser has a security hole. You should be able to point your browser at the most evil JavaScript imaginable, execute it, and be entirely safe. JavaScript1, page 14 Missing return on showConfirm function page 15 It is safer to leave a dangling operator at the end of a line: a = "alpha" + "beta"; Rather than the beginning: a = "alpha" + "beta"; Because the JavaScript engine can treat line breaks as an end of statement (semicolons are optional in practice). The listed example on page 15 is fine since there's an open bracket that keeps the line going, but it's not a good practice. Speaking of missing semicolons, see page 17. With no brackets holding that line open, and with the + operator on the next line, a JavaScript engine may choose to merge those lines, or simply declare an error. JavaScript2, page 5 Don't forget about NaN. There may be others, that's the only one that pops to mind. page 6 is false. if (1) { var h = "hello"; } alert(h); The above shows that scope is not limited. page 8 Const is not supported in IE, which makes it practically useless. page 19 Typo on last line. Should be '2'. page 29 Warning: row and col can never be 0. Better is: this.row = (typeof i == "undefined") ? -1 : i; page 35 "it's" -> "its" Ajax, page 7 Info: Yes, Google Suggest is server intensive with a lookup per keystroke (caching is helpful early on). That's why it is not on the front page of Google.com. However, it is on the front page of Google.cn since Chinese characters narrow down the search space much faster and fewer keystrokes happen when typing Chinese. Topics, page 19 Usually this is _not_ true. Unless both the client and server are plugged into the same network hub, there will be routers between you. Possibly a couple of dozen routers (try tracetroute command). Each of these routers can listen to the stream and record or alter the traffic. page 33 Ah, if only XSS were that simple to solve. See my earlier email with JavaScript commands embedded in the photo of the Trex. Of course this is an unpatched flaw in IE, not JavaScript itself.