<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:series="http://unfoldingneurons.com/"
><channel><title>Larry Ullman &#187; MySQL</title> <atom:link href="http://www.larryullman.com/category/mysql/feed/" rel="self" type="application/rss+xml" /><link>http://www.larryullman.com</link> <description>Translating Geek Into English</description> <lastBuildDate>Wed, 08 Feb 2012 21:58:37 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Top 100 E-Commerce Tips</title><link>http://www.larryullman.com/2012/02/03/top-100-e-commerce-tips/</link> <comments>http://www.larryullman.com/2012/02/03/top-100-e-commerce-tips/#comments</comments> <pubDate>Fri, 03 Feb 2012 15:31:35 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[e-commerce]]></category> <category><![CDATA[ecom]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2982</guid> <description><![CDATA[I just recently came across this somewhat old post titled Top 100 E-commerce Tips from WebmasterWorld. Despite the fact that the article was published over four years ago, and it&#8217;s based upon a slightly older forum thread, there&#8217;s still a lot of material in the article worth reading if you do any e-commerce. Even though [...]]]></description> <content:encoded><![CDATA[<p>I just recently came across this somewhat old post titled <a
href="http://www.soloseo.com/blog/2007/06/18/top-100-e-commerce-tips-webmasterworld/">Top 100 E-commerce Tips from WebmasterWorld</a>. Despite the fact that the article was published over four years ago, and it&#8217;s based upon a slightly older forum thread, there&#8217;s still a lot of material in the article worth reading if you do any e-commerce. Even though there are a full 100 tips here, they&#8217;re short—most are just a single sentence—and quite valid. Admittedly, I disagree with a couple, and feel like a few could be tossed out, but there are many good points made, and many reminders of things that perhaps you&#8217;ve forgotten to emphasize on your most recent e-commerce. project.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/02/03/top-100-e-commerce-tips/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Examples from &#8220;Building a Web Site with Ajax: Visual QuickProject&#8221;</title><link>http://www.larryullman.com/2011/12/27/examples-from-building-a-web-site-with-ajax-visual-quickproject/</link> <comments>http://www.larryullman.com/2011/12/27/examples-from-building-a-web-site-with-ajax-visual-quickproject/#comments</comments> <pubDate>Tue, 27 Dec 2011 22:18:56 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[ajax]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2936</guid> <description><![CDATA[Although I don&#8217;t normally do this, per a reader request, I&#8217;ve made the book&#8217;s examples available to be seen and used here. The book has three primary examples, each in an Ajax and non-Ajax form. The pages are: dept_form.html This page returns all of the employees in a selected department. add_employee.html This page uses Ajax [...]]]></description> <content:encoded><![CDATA[<p>Although I don&#8217;t normally do this, per a reader request, I&#8217;ve made the book&#8217;s examples available to be seen and used here. The book has three primary examples, each in an Ajax and non-Ajax form. The pages are:</p><dl><dt><a
href="http://demo.larryullman.com/ajax/examples/dept_form.html">dept_form.html</a></dt><dd>This page returns all of the employees in a selected department.</dd><dt><a
href="http://demo.larryullman.com/ajax/examples/add_employee.html">add_employee.html</a></dt><dd>This page uses Ajax to add an employee to the database (note: the version running on this site does not actually execute the INSERT query that updates the database.)</dd><dt><a
href="http://demo.larryullman.com/ajax/examples/search_form.html">search_form.html</a></dt><dd>This page provides a simple search to retrieve employees by last name.</dd></dl><p>There&#8217;s no navigation within or among the pages. You&#8217;ll need to click Back to return to this page to see another example. To run one of the examples without Ajax (to see what that&#8217;d be like for visitors that can&#8217;t use the Ajax version), disable JavaScript in your Web browser.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/12/27/examples-from-building-a-web-site-with-ajax-visual-quickproject/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Security &amp; Privacy Made Simpler</title><link>http://www.larryullman.com/2011/12/24/security-privacy-made-simpler/</link> <comments>http://www.larryullman.com/2011/12/24/security-privacy-made-simpler/#comments</comments> <pubDate>Sat, 24 Dec 2011 15:42:04 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[e-commerce]]></category> <category><![CDATA[ecom]]></category> <category><![CDATA[ecommerce]]></category> <category><![CDATA[privacy]]></category> <category><![CDATA[security]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2931</guid> <description><![CDATA[When I was writing my book, I naturally did a bunch of research, particularly with regards to the various laws that apply. Understanding the programming behind an e-commerce site is relatively simple; understanding all the applicable laws and implications of doing e-commerce is complex. One of the sites I found to be quite useful was the U.S. [...]]]></description> <content:encoded><![CDATA[<p>When I was writing my <em></em><a
href="http://www.larryullman.com/books/effortless-e-commerce-with-php-and-mysql/">Effortless E-Commerce with PHP and MySQL</a> book, I naturally did a bunch of research, particularly with regards to the various laws that apply. Understanding the programming behind an e-commerce site is relatively simple; understanding all the applicable laws and implications of doing e-commerce is complex. One of the sites I found to be quite useful was the U.S. <a
href="http://www.bbb.org">Better Business Bureau</a> (BBB).</p><p>I&#8217;m currently going through some items in my &#8220;to read&#8221; folder, and am reading, or perhaps re-reading, the Better Business Bureau&#8217;s PDF titled &#8220;<a
href="http://www.bbb.org/us/corporate-engagement/security/">Security &amp; Privacy &#8211; Made Simpler</a>&#8220;. If you do any e-commerce, or even just Web development, it&#8217;s worth reading. It&#8217;s a 22-page document that discusses almost every facet of e-commerce, such as:</p><ul><li>Developing a security and privacy plan</li><li>Creating and communicating your security and privacy policies</li><li>Good employee screening and policies</li><li>Common hack/theft strategies</li><li>General Internet security</li><li>Proper handling of customer data</li><li>Payment processing</li><li>What to do in the event of a data breach</li><li>A preview of international e-commerce considerations</li></ul><p>The document also has many resources listed in these and other categories. You can download the PDF from that page, but there are also related FAQs and more on the BBB&#8217;s site.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/12/24/security-privacy-made-simpler/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Finding Book Bonus Content</title><link>http://www.larryullman.com/2011/12/20/finding-book-bonus-content/</link> <comments>http://www.larryullman.com/2011/12/20/finding-book-bonus-content/#comments</comments> <pubDate>Tue, 20 Dec 2011 19:27:36 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[C and C++]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Ruby]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[phpmysql4]]></category> <category><![CDATA[phpvqs4]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2925</guid> <description><![CDATA[For many of my books, bonus content is made available through the publisher. Sometimes this is material that was intended for the book but had to be cut, such as an appendix or a chapter, and sometimes the material is a true bonus, such as a video screencast. Because it&#8217;s not clear for everyone how [...]]]></description> <content:encoded><![CDATA[<p>For many of my books, bonus content is made available through the publisher. Sometimes this is material that was intended for the book but had to be cut, such as an appendix or a chapter, and sometimes the material is a true bonus, such as a video screencast. Because it&#8217;s not clear for everyone how to access this bonus material, I thought I&#8217;d quickly post instructions here.</p><ol><li>Head to <a
href="http://www.peachpit.com">Peachpit.com</a> (almost all of my books are published by Peachpit Press)</li><li>Click on <a
href="https://memberservices.informit.com/my_account/login.aspx?partner=52">Account Sign In</a> at the top of the page.</li><li>If you don&#8217;t already have an account with Peachpit.com, click the <a
href="https://memberservices.informit.com/my_account/register.aspx">Create a new one&#8230;</a> link to register.</li><li>After you have registered, login.</li><li>On your account page (after logging in), click <em>Registered Products</em>.</li><li>On the Registered Products tab, click <em>Register Another Product</em>.</li><li>Follow the instructions to register the book.</li><li>Return to the Registered Products page.</li><li>For the book in question, click the <em>Access Bonus Content</em> link. That will take you to a page with all the bonus content for a given book.</li></ol><p>Besides being able to access bonus content, there are other benefits to registering at Peachpit&#8217;s site. And while you&#8217;re there, you can also check out <a
href="http://www.peachpit.com/authors/bio.aspx?a=2a14d669-06f6-48cf-a5b8-907169808b9f">my author page</a>, which lists the books I&#8217;ve written for Peachpit, the articles I&#8217;ve published there, and the blog postings I&#8217;ve published there. Both the articles and blog postings are viewable without registration or logging in.</p><p>I hope that helps anyone having trouble finding the material they&#8217;re looking for.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/12/20/finding-book-bonus-content/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>My Yii Book Update</title><link>http://www.larryullman.com/2011/11/03/my-yii-book-update/</link> <comments>http://www.larryullman.com/2011/11/03/my-yii-book-update/#comments</comments> <pubDate>Fri, 04 Nov 2011 01:48:50 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[books]]></category> <category><![CDATA[framework]]></category> <category><![CDATA[mvc]]></category> <category><![CDATA[yii]]></category> <category><![CDATA[yiibk]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2853</guid> <description><![CDATA[I&#8217;ve received a few comments and questions lately about my intentions to write a book on the Yii framework. I&#8217;ve never formally discussed the idea, and so it seems like it&#8217;s about time I do so. I first started using the Yii framework about two and half years ago. I&#8217;ve never been much of a framework [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve received a few comments and questions lately about my intentions to write a book on the <a
href="http://yiiframework.com/">Yii framework</a>. I&#8217;ve never formally discussed the idea, and so it seems like it&#8217;s about time I do so.</p><p>I first started using the Yii framework about two and half years ago. I&#8217;ve never been much of a framework person, but Yii really felt right to me, quite similar to <a
href="http://rubyonrails.com/">Ruby on Rails</a>, which I also always liked. Being a writer, after learning to use the framework, I wrote an <a
href="http://www.larryullman.com/series/learning-the-yii-framework/">introductory series on the subject</a>, which has been quite popular. In all modesty, many have suggested it&#8217;s the best documentation available. In fact, the creator of Yii liked my series so much that he listed it prominently on the official Yii documentation page (it&#8217;s now under <a
href="http://www.yiiframework.com/tutorials/">tutorials</a>). Some time after writing that series, I started thinking about writing a full book on Yii, because <a
href="http://www.larryullman.com/books/">that&#8217;s what I do</a>.</p><p>When I decided to write a book on Yii, I figured I&#8217;d self-publish it, for a couple of reasons. First, even though I have a wonderful relationship with <a
href="http://peachpit.com/">Peachpit Press</a>, I&#8217;m not sure they&#8217;d want to do a book on Yii, as the market is kind of small. Second, even if Peachpit would publish such a book, I doubt I&#8217;d make much money on the project, considering the small market. By comparison, if I self-publish, I can make 4-5 times per book what I&#8217;d make if I went through a publisher. The higher per copy amount could be enough to make up for the smaller sales, ending up with a project that&#8217;s financially worth my time to do (sorry to be crass about the money, but writing a book is a lot of work and I do have bills to pay!). Fourth, I&#8217;ve been intrigued about self-publishing for some time. And, fifth, self-publishing would give me the opportunity to distribute the book in unique formats and channels, such as a chapter at a time.</p><p>If I had my act together (which is to say, if my life were other than it is, in about ten ways), I would have been on the ball and published this book a year or more ago. Sadly, that has not been the case. I keep fairly busy work-wise, and I don&#8217;t actually have the time (due to personal constraints) to put in 40-hour weeks, so it&#8217;s really hard to add new projects, especially on the level of an entire book. Moreover, self-publishing means no guaranteed money, so I&#8217;d have to not do paying work while not making money working on the Yii book, which is a tough situation to be in.</p><p>All that being said, <em>it is still my intention to write and self-publish a book on Yii</em>. The only question is: when? This is the question I&#8217;m getting asked a lot lately. Before I do anything towards a book on Yii, I still have to:</p><ul><li>Finish my <em>Modern JavaScript: Develop and Design</em> book (which I&#8217;m weeks late on as is)</li><li>Write one more article in support of my <em>PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide (4th Edition)</em> [I've written two out of three articles, but I'm weeks late on that, too.]</li><li>Come up with a list of videos to do in support of my <em>Modern JavaScript: Develop and Design</em> book</li><li>Actually do those videos</li><li>Continue doing the Web development and other work I have for my clients</li></ul><p>So&#8230;yikes. Don&#8217;t get my wrong: I&#8217;m quite fortunate to be busy, but yikes! I&#8217;ll be crying if I haven&#8217;t finished all of the above by the end of this year, which means in theory I can begin the Yii book at the beginning of 2012. However, I have the third edition of my <em>PHP 5 Advanced: Visual QuickPro Guide</em> due at the end of April. That does give me four months, but I&#8217;d like actually make that deadline for a change (my publisher is wonderfully understanding, but&#8230;).</p><p>Also, along with writing the Yii book, I&#8217;m going to have to come up with a site and an ecommerce system and so forth (I already have the software that can output PDFs, ePubs, and mobis). If I&#8217;m being optimistic, perhaps in 2012 I can do two Yii chapters per month, but the <em>PHP 5 Advanced</em> book will need to be my first priority. I also don&#8217;t want to start the Yii book, get some people paying for it (in part or in whole), and then have the project drag out. I don&#8217;t know. We shall see.</p><p>I very much thank everyone for their interest in my writing a book on Yii and I hope to make that happen. If you follow the blog and/or subscribe to my newsletter, you&#8217;ll get updates as to how this is progressing, when and if it does actually progress.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/11/03/my-yii-book-update/feed/</wfw:commentRss> <slash:comments>37</slash:comments> </item> <item><title>What is Larry Thinking? #45 =&gt; Olio</title><link>http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/</link> <comments>http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#comments</comments> <pubDate>Sun, 18 Sep 2011 16:16:58 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[hosting]]></category> <category><![CDATA[html5]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[newsletter]]></category> <category><![CDATA[nosql]]></category> <category><![CDATA[phpmysql4]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2800</guid> <description><![CDATA[In this edition… About This Newsletter What Were You Thinking? =&#62; Storing Uploaded Files in Multiple Directories On the Web =&#62; NoSQL Standouts On the Web =&#62; Optimizing Web Page Performance On the Web =&#62; Dive into HTML5? On the Blog =&#62; How Web Hosts Prey on Beginners What is Larry Thinking =&#62; Looking Both [...]]]></description> <content:encoded><![CDATA[<p>In this edition…</p><ul><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#about">About This Newsletter</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#you">What Were You Thinking? =&gt; Storing Uploaded Files in Multiple Directories</a></li><li><a
href="http://www.larryullman.com/2011/09/1831/what-is-larry-thinking-45-olio/#web1">On the Web =&gt; NoSQL Standouts</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#web2">On the Web =&gt; Optimizing Web Page Performance</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#web3">On the Web =&gt; Dive into HTML5?</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#blog">On the Blog =&gt; How Web Hosts Prey on Beginners</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#thinking">What is Larry Thinking =&gt; Looking Both Ways</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#giveaway">Book Giveaway =&gt; “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide” (4th Edition)</a></li><li><a
href="http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/#news">Larry Ullman’s Book News =&gt; “PHP and MySQL for Dynamic Web Sites” (4th Edition) and “Modern JavaScript”</a></li></ul><p><span
id="more-2800"></span></p><h2 id="about">About This Newsletter</h2><p>I used to regularly do crossword puzzles, although I sadly don’t anymore (I don’t get a regular newspaper and I just can’t get into doing crossword puzzles on the computer). If you’ve done crossword puzzles, or know someone that does, you know that what crossword puzzles really teach you is an esoteric list of words that are unusable in daily life. <em>Olio</em> is one such word: a miscellaneous collection of things. This newsletter has no discrete theme, so when searching for a title, I thought of olio. Olio: that’s what you’re getting here. And, if you’re lucky, it may also be the answer to 44 Down.</p><p>A couple of notes… First, in my previous newsletter I had suggested that this issue might have my thoughts about doing mobile development with Flex 4.5, which I’ve been playing with for the past month. I haven’t gotten around to writing up anything yet, and there’s enough to say on the subject that I’ll probably just cover the material through several blog posts. Or maybe it will be in the next newsletter. Who knows? Second, I’m giving away copies of the fourth edition of my “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide” in this newsletter, as I just received my copies of the book last week.</p><p>As always, questions, comments, and all feedback are much appreciated. And thanks for your interest in what I have to say and do!</p><h2 id="you">What Were You Thinking =&gt; Storing Uploaded Files in Multiple Directories</h2><p>In <a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#qa1">the previous newsletter</a>, I answered a question about storing uploaded files in multiple directories. Jamie was kind enough to bring to my attention a video in which a member of the YouTube development team <a
href="http://video.google.com/videoplay?docid=-6304964351441328559">explains how they made YouTube scalable</a>. The video is an hour long, but if you’re curious about how a site like YouTube is developed and how to design scalable Web sites, it’s worth your time (although some of it is a bit high-end technical). Around the 13:50 time marker, the speaker begins talking about handling thumbnails, which is when YouTube got in a position where they could no longer accept new videos, as they had maxed out the number of files allowed per directory. Another point being made in the presentation, which I might expound upon in a future newsletter, is that YouTube’s main concern wasn’t the site’s performance but rather the performance of their developers, which is to say: How quickly one can make changes to the system on the fly was a much higher priority.</p><p>Thanks, Jamie, for the reference!</p><h2 id="web1">On the Web =&gt; NoSQL Standouts</h2><p><a
href="http://www.infoworld.com">InfoWorld</a> recently posted a good and long article discussing <a
href="http://www.infoworld.com/d/data-explosion/no-sql-new-databases-new-applications-400?source=IFWNLE_nlt_daily_2011-09-05">the particular strengths and weaknesses of various NoSQL (aka, non-relational) databases</a>. If you’re intrigued about what NoSQL databases are all about, and maybe even thinking about starting to play around with one, it’s well worth your time to read.</p><p>As for me personally, CouchDB and MongoDB are still most attractive, in some part due to their use of JavaScript and JSON, and in part because of existing PHP libraries for interacting with these database applications.</p><p><a
href="http://www.eweek.com">eWeek</a> also had a recent article discussing NoSQL databases, titled <em><a
href="http://www.eweek.com/c/a/Database/Does-NoSQL-Matter-for-Your-Organization-367801/?kc=EWKNLLIN09132011STR2">Does NoSQL Matter for Your Organization?</a></em>. This is a great question, because the benefit of non-relational databases—significant speed and scalability improvements—is something that only a small subset of sites really needs. The article also has a couple of good links to more useful information on the subject of non-relational databases.</p><h2 id="web2">On the Web =&gt; Optimizing Web Page Performance</h2><p>While doing some research, I came across an article describing <a
href="http://yuiblog.com/blog/2007/04/11/performance-research-part-4/">how browsers download Web page resources</a>. The article explains that the HTTP/1.1 specification recommends that browsers download page components—images, CSS, JavaScript, and other media—two at a time. This means that if your site has two CSS scripts, two JavaScript inclusions, and 12 images, that the browser has to go through eight series of downloads, not counting the initial request for the HTML. However, the specification is per hostname, meaning that if some of the content is set to come from, say, <strong>www1.example.com</strong> and some from <strong>www2.example.com</strong>, that effectively doubles the number of downloads that can be made simultaneously, thereby greatly improving the site’s performance. As the article points out, in their tests, performance got worse when they attempted to use more than four hostnames (and most browsers have a limit to how many things they can download simultaneously regardless of the points of origination).</p><p>Anyway, this is an older article, but worth the quick read. The article contains links to two other good (but dated) discussions of this and related issues. This article is part of a larger <a
href="http://yuiblog.com/blog/2006/11/28/performance-research-part-1/">four-part series on optimizing Web page performance</a>.</p><h2 id="web3">On the Web =&gt; Dive into HTML5</h2><p>Some time ago I came across a book titled “Dive Into HTML5”, written by Mark Pilgrim. Although the work was also published as an O’Reilly book titled “HTML5: Up and Running”, you can read the content online at diveintohtml5.org. It’s a very clear, well-written, informative book, and a lovely Web site, too.</p><h2 id="blog">On the Blog =&gt; How Web Hosts Prey on Beginners</h2><p>I was recently reading <a
href="http://www.popsci.com">Popular Science</a> (which I get a lot out of), when I ran across an ad for a major, well-known Web hosting company. Obviously the company focuses on cheap hosting—the company’s plans start at $5 (US) per month, but a few things in the ad caught my eye. In particular, the ad reminded me of how many Web hosting companies, particularly those that provide cheap hosting, prey on the ignorance of beginning Web developers. And so I wrote about <a
href="http://www.larryullman.com/2011/08/28/how-web-hosts-prey-on-beginners/">How Web Hosts Prey on Beginners</a> in a blog post.</p><h2 id="thinking">What is Larry Thinking? =&gt; Looking Both Ways</h2><p>I randomly came across this quote, attributed to a person named Doug Linder:</p><blockquote><p>A good programmer is someone who looks both ways before crossing a one-way street.</p></blockquote><p>I have no idea who Doug Linder is (perhaps three of you will email me with this information), but it’s a really good quote. Restated, good programmers don’t rely upon expectations. I would suggest this corollary:</p><blockquote><p>A bad programmer makes assumptions.</p></blockquote><p>That may be a bit harsh—perhaps more nicely said as “An amateur programmer makes assumptions”, but the fact is that making assumptions leads to bugs, user interface issues, and security vulnerabilities. One of the hardest things as a developer, I think, is imagining how other people might use the software you create. Maybe it’s just me, but when I program, I have a sense of what the application (including Web sites) should do and how it should be used. It’s very difficult for me to manufacture what other things people might try to do with the system I’ve created. But it’s exactly the ability to properly handle non-standard, including malicious, uses of a site or application that elevates the program’s security level and professionalism.</p><p>As an example, one of the first things I do when testing the usability and security of a script is to submit its form without doing anything to the form at all (i.e., enter no data; make no selections). What happens then? Are server-side errors shown, such as PHP’s <em>undefined variable</em>? The same goes for pages that expect to receive values in the URL: What happens if no value is present in the URL? What happens if the value is a string instead of an integer? What if it’s a negative integer instead of a positive one? Smartly written software works as it should when used correctly and responds with appropriate messages—not server errors—to the end user when used incorrectly.</p><p>As another example, when many beginning programmers write a PHP script that handles an HTML form, there’s an assumption made that the PHP script will only handle the form as written. What most beginners don’t realize is that it’s very easy to fake an HTML form and submit any type of form data to your PHP script. For example, a site has <strong>form.html</strong> which gets submitted to <strong>form.php</strong>. And let’s say that the form has a gender dropdown menu, with option values of <em>M</em> and <em>F</em>. An assumption might be that the PHP script will only receive either of those characters, making that associated variable safe to use in a query such as <code>INSERT INTO users (…, gender, …) VALUES (…, '{$_POST['gender']}', …)</code>. This actually leaves the script vulnerable to SQL Injection attacks…</p><p>I could create on my own computer a form that contains a textarea named <em>gender</em> and any other necessary elements in order to pass whatever other validation the server-side script is performing. I set the form’s <strong>action</strong> attribute to point to the site’s <strong>form.php</strong> script, even though the form is loaded from my own computer. Into that textarea, I enter <em>&#8216;;DROP DATABASE users;</em>. This turns the query into <code>INSERT INTO users (…, gender, …) VALUES (…, '';DROP DATABASE users;', …)</code>. The theory is that the initial apostrophe I used terminates the query, making it syntactically invalid, and then the <strong>DROP DATABASE users;</strong> query gets executed instead. Not good. In this particular case, that security hole would be easily closed by actually verifying that gender has a value of <em>M</em> or <em>F</em>, not assuming it does just because your HTML form is written that way.</p><p>This is just one example that’s easy enough to both do and undo. But I want to stress that assumptions don’t just create security holes for malicious people to exploit, they also create pits for your site’s users to fall into, thereby making your site less usable or entirely unusable. I’ve certainly been to many sites where I had no idea what was expected of me (from a user interface perspective) or what I needed to do to continue using the site. In short, assumptions were being made on the front and end that I wasn’t privy to.</p><p>So, your assignment, should you choose to accept it, is to revisit a legacy script or piece of code you’ve written and see what, if any, assumptions you’ve made. Because you never know when some idiot is driving down the wrong way of a one-way street!</p><h2 id="giveaway">Book Giveaway =&gt; “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide” (4th Edition)</h2><p><em>You must be subscribed to the newsletter to qualify for the book giveaway.</em></p><h2 id="news">Larry Ullman’s Book News =&gt; “PHP and MySQL for Dynamic Web Sites” (4th Edition) and “Modern JavaScript”</h2><p>I’m pleased to say that on Friday, September 9th, I received my hardcopies of the latest edition of “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide”. This would suggest that the book should be available for purchase, or in bookstores, now or very soon. For details about the book, please see <a
href="http://www.larryullman.com/books/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition/">its corresponding pages</a>. I’ve also created a <a
href="http://www.larryullman.com/forums/index.php?/forum/31-php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition/">new forum for this edition</a>. Thanks to everyone for their interest in the book!</p><p>I’m also pleased to say that I’ve officially begun writing my next book, “Modern JavaScript: Develop and Design.” The first two chapters are on their way to the editors! The first chapter presents a history of JavaScript in Web development terms, ending with today’s conventions. It’s a short chapter that could have been used as a long introduction, but I think there’s an argument to understanding JavaScript’s history in order to best use it today. Also, you’re likely to run across legacy code, so it’s beneficial to be able to recognize what you should no longer be doing.</p><p>The second chapter covers the importance of the <strong>DOCTYPE</strong> and then introduces HTML5. I will be using HTML5, in a limited way, in this book for all of the examples. This is partly because HTML5 has some great new form elements that are usable now and partly because HTML5 is clearly the future standard. Next, the chapter discusses key approaches to Web development and JavaScript programming: <em>graceful degradation</em>, <em>progressive enhancement</em>, and <em>unobtrusive JavaScript</em>. If you’re not already using these last two approaches, they’ll change the way you think about Web development and design. The chapter then jumps right into a real-world use of JavaScript—form validation, in order to whet your appetite and provide a sense of what you’re working towards.</p><p>After I send off this newsletter, I’ll begin writing Chapter 3. It goes through the “tools of the trade”: browsers, validators, debuggers, Web resources, and so on. And that concludes Part 1 of the book; Part 2 starts teaching JavaScript as a standalone language.</p><p>I believe the book will be made available online as I write it, and I’ll post details about that once I have them.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/09/18/what-is-larry-thinking-45-olio/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>&#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; (4th Edition) Now Available! (-ish)</title><link>http://www.larryullman.com/2011/09/11/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition-now-available-ish/</link> <comments>http://www.larryullman.com/2011/09/11/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition-now-available-ish/#comments</comments> <pubDate>Sun, 11 Sep 2011 20:26:37 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[books]]></category> <category><![CDATA[phpmysql4]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2793</guid> <description><![CDATA[I&#8217;m pleased to say that on Friday, September 9th, I received my hardcopies of the latest edition of &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221;. This would suggest that the book should be available for purchase, or in bookstores, now or very soon. For details about the book, please see its corresponding [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;m pleased to say that on Friday, September 9th, I received my hardcopies of the latest edition of &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221;. This would suggest that the book should be available for purchase, or in bookstores, now or very soon. For details about the book, please see <a
href="http://www.larryullman.com/books/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition/">its corresponding pages</a>. I&#8217;ve also created a <a
href="http://www.larryullman.com/forums/index.php?/forum/31-php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition/">new forum for this edition</a>.</p><p>Thanks to everyone for their interest in the book!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/09/11/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition-now-available-ish/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>What is Larry Thinking? #44 =&gt; Web Development</title><link>http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/</link> <comments>http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#comments</comments> <pubDate>Fri, 26 Aug 2011 14:34:00 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[book]]></category> <category><![CDATA[html5]]></category> <category><![CDATA[newsletter]]></category> <category><![CDATA[nosql]]></category> <category><![CDATA[oop]]></category> <category><![CDATA[smush]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2750</guid> <description><![CDATA[In this edition… About This Newsletter On the Web =&#62; Build Seven Good Object-Oriented Habits in PHP On the Web =&#62; Improving Site Performance: &#8220;Smushing&#8221; Images On the Blog =&#62; Great Web Developer Resources On the Blog =&#62; More on Non-Relational Databases Q&#38;A =&#62; Uploading Images to Multiple Directories Q&#38;A =&#62; How Do You Price [...]]]></description> <content:encoded><![CDATA[<p> In this edition…</p><ul><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#about">About This Newsletter</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#web1">On the Web =&gt; Build Seven Good Object-Oriented Habits in PHP</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#web2">On the Web =&gt; Improving Site Performance: &#8220;Smushing&#8221; Images</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#blog1">On the Blog =&gt; Great Web Developer Resources</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#blo2">On the Blog =&gt; More on Non-Relational Databases</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#qa1">Q&amp;A =&gt; Uploading Images to Multiple Directories</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#qa2">Q&amp;A =&gt; How Do You Price a Freelance Project?</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#thinking">What is Larry Thinking =&gt; The JavaScript Problem</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#giveaway">Book Giveaway =&gt; &#8220;PHP for the Web: Visual QuickStart Guide&#8221; and &#8220;Effortless Flex 4 Development&#8221;</a></li><li><a
href="http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/#news">Larry Ullman&#8217;s Book News =&gt; &#8220;PHP and MySQL for Dynamic Web Sites&#8221; (4th Edition) and &#8220;Modern JavaScript&#8221;</a></li></ul><p> <span
id="more-2750"></span></p><h2 id="aboutthisnewsletter">About This Newsletter</h2><p>When it&#8217;s time for another newsletter to go out, about three weeks after the last one shipped, I take a look at my pool of possible newsletter links, questions, tidbits, and thoughts, and grab those I&#8217;m most intrigued by. As I organize them, sometimes a theme appears, sometimes not, and sometimes I can force a theme upon the newsletter. It turns out that this newsletter falls under the very broad theme of <em>Web Development</em>, covering the full range of HTML, CSS, JavaScript, PHP, and databases. This is where my professional IT career began, twelve years ago, and what most of my work and writing still orbits around today. I gather that <em>Web Development</em> is what most of you do, too. So for many of us involved on the two sides of this newsletter, this one could be titled <em>Doing What We Do</em>. I hope you&#8217;ll find a thing or two that piques your interest.</p><p>In the next newsletter, I think I might write about my experiences developing mobile applications using Flex 4.5 and Flash Builder 4.5 for PHP. And perhaps do a book giveaway for the fourth edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book.</p><p>As always, questions, comments, and all feedback are much appreciated. And thanks for your interest in what I have to say and do!</p><h2 id="web1">On the Web => Build Seven Good Object-Oriented Habits in PHP</h2><p>I recently <a
href="http://www.stumbleupon.com">StumbledUpon</a> a pretty good article titled &#8220;<a
href="http://www.ibm.com/developerworks/opensource/library/os-php-7oohabits/index.html">Build Seven Good Object-Oriented Habits in PHP</a>&#8220;. As the name states, the article presents seven key qualities of good OOP programming, specifically in PHP (although the principles apply to most OOP languages). The best feature of the article is that it demonstrates each point using both bad and good code, clearly making the case for each recommended habit. The article begins with some basic and specific OOP—for example, not making properties public—and moves on to more advanced and abstract OOP theory, such as cohesion and design patterns. All in all, well worth the read if you&#8217;re doing OOP in general and OOP in PHP more specifically.</p><h2 id="web2">On the Web => Improving Site Performance: &#8220;Smushing&#8221; Images</h2><p>In trying to improve my site&#8217;s performance, starting with using the <a
href="http://developer.yahoo.com/yslow/">YSlow!</a> Firefox extension, I came across the concept of &#8220;smushing&#8221; images. <a
href="http://www.smush.it">Smush.it</a> is a Yahoo! service (which is why it&#8217;s tied to YSlow!) that optimizes images in such a way as to reduce their size without adversely affecting image quality. I believe I reduced my site&#8217;s total image size by about 10-15%, which isn&#8217;t huge, but when you&#8217;re talking about Web site optimization, every little bit helps. The only thing to be aware of is that sometimes GIFs will get turned into more efficient PNGs, meaning you&#8217;ll need to change your HTML accordingly (e.g., from <b>image.gif</b><b> to </b><b>image.gif.png</b><b>).</b></p><h2 id="blog1">On the Blog => Great Web Developer Resources</h2><p>Earlier this month, I <a
href="http://www.larryullman.com">posted on my blog</a> a few really <a
href="http://www.larryullman.com/2011/08/09/great-web-developer-resources/">great Web developer resources</a> that I came across while doing a last wave of research before writing my JavaScript book. In particular, both <a
href="https://developer.mozilla.org/">Mozilla</a> and <a
href="http://dev.opera.com/">Opera</a> have excellent articles discussing the core components of Web development: HTML, CSS, and JavaScript. (Mozilla maintains JavaScript, so that site also has the official JavaScript language reference.) You can definitely get lost following all the threads, but there&#8217;s a lot of excellent information presented on just these two sites.</p><h2 id="blog2">On the Blog => More on Non-Relational Databases</h2><p>In <a
href="http://www.larryullman.com/2011/04/16/what-is-larry-thinking-39-how-i-got-here-and-the-future/#blog1">a newsletter a while back</a>, I posted a blip about <a
href="http://www.mongodb.org/">MongoDB</a>, one of several new non-relational (aka, no-SQL) databases that have come up in the past couple of years. <a
href="http://www.larryullman.com">On my blog</a>, I&#8217;ve <a
href="http://www.larryullman.com/2011/07/29/more-on-non-relational-aka-nosql-databases/">posted a few more resources</a>, including links to longer articles about several different non-relational databases and the concept as a whole.</p><h2 id="qa1">Q&amp;A => Uploading Images to Multiple Directories</h2><p>In his reply to my previous book giveaway, Steven had asked what benefits there are to using multiple directories and subdirectories to store file uploads (he had noticed that Facebook does this). The key benefit, to me, is that taking this approach doesn&#8217;t break the server! Most of us never encounter this problem, but there are actual limits as to how many files and folders can be in a single directory. The exact allowed value differs from operating system to operating system (and, depending upon the operating system, the selected file system format can also have an impact), and the value is normally quite large. However, if you take a site like Facebook, with a half a billion (or whatever) users, and if each user uploads just ten images, that&#8217;s five billion files! The simple fact of the matter is that if you expect a site to have more than a few hundred uploaded files, you <em>have to</em> store files within multiple directories.</p><p>The second reason for dividing where files are stored is it will improve the site&#8217;s performance and possibly some of the user interface aspects. Any page that has to list the contents of a directory would benefit from that directory being just one of many, storing a subset of the entire body of files.  On a project I worked on years ago, with the potential for thousands (or more) of users, we used a directory structure <strong>X/Y/name</strong>, where X was the first letter of the user&#8217;s last name, Y was the second, and name was a unique identifier, such as the person&#8217;s username. So, in that scheme, if I registered with a username of &#8220;trout&#8221;, my images directory would be <strong>u/l/trout</strong>. That particular site never lasted long enough to put this approach to the test, but I have reason to believe it would have held up.</p><p>A follow up question, then, is how to handle a lot of simultaneous file uploads. The HTTP protocol, through which most Web pages are loaded in the browser, is <em>not</em> a good protocol for transferring large amounts of data. A better solution is to embed a Java or Flash application in the Web page and have that application transfer the data (such applications can do so over other protocols).</p><h2 id="qa2">Q&amp;A => How Do You Price a Freelance Project?</h2><p>I was recently asked by someone via email how to go about pricing freelance projects. I don&#8217;t know if I&#8217;ve discussed this before, and I thought it worth some paragraphs here.</p><p>There are two broad factors for determining a rate: <em>global</em> and <em>personal</em>. The global subfactors include supply and demand, implied technical difficulty, regional considerations, and so forth. For example, Web development is still in high demand, but there are a lot of people doing it, so that lowers the general rate. Mobile app development is in high demand and there aren&#8217;t quite so many people doing that, so that raises the general rate. Oracle database administration and design is implicitly more technically difficult, and therefore pays better, than MySQL database administration and design. In theory, people in, say, England will charge more than those in, say, Vietnam. But due to a global economy, this consideration is far less binding for many jobs. All of these global factors create a range of rates, from $X to $Y. Before looking at your own situation, you should be aware of a reasonable global rate range (a little research should do it), as you probably don&#8217;t want to be charging less than $X or more than $Y, regardless of your personal details. (With some exceptions: when someone hires <a
href="http://meyerweb.com/">Eric Meyer</a> to do a CSS project, he can probably charge whatever he wants.)</p><p>The personal subfactors start with your own level of expertise and experience. If you&#8217;ve been doing, say, Web development for ten years, and have a nice portfolio, it&#8217;s reasonable to charge more than if you&#8217;re just starting out. If you&#8217;ve written a book on a particular subject, you can apparently charge more, whether that&#8217;s reasonable or not! Next, you need to factor in your own supply and demand: how busy you are, how badly you need the job, and so forth. One of the hard things about working independently is saying &#8220;No&#8221; to work, regardless of how busy you already are. But if you really need the work, it&#8217;s natural to charge less (in the hopes of improving the odds of getting the job), and if you don&#8217;t need the work so much, charge more (with the mentality of &#8220;if I am going to do this job, it has to be worth my while&#8221;). Finally, you may have to consider your business principles. For example, I get paid nothing for a fair amount of the work I do, such as answering questions in the <a
href="http://www.larryullman.com/forums/">support forums</a> or via email, or sending these newsletters (actually, those things all cost me some money, but there&#8217;s a marketing benefit to them), and I charge educational organizations and non-profits a fraction of my commercial rate. All of these personal factors go into tweaking the global rate to come up with your specific rate, and these personal factors differentiates the price you would quote for a job compared to the price that the person in the building next to you would estimate for the same job.</p><p>If there are two broad factors, there is one specific one: the project itself. I charge less if I&#8217;m interested in the project, if it&#8217;s in an area I&#8217;d like to get more involved with, if I feel good about the client (such as the likelihood of more work from that same client), and so forth. I charge more if the opposite is true. And, of course, the total amount has to be commensurate to the complexity and demands of the project itself. And when coming up with a project price, remember that projects almost always take more effort than you were expecting, and how much more effort is equal to how new the technologies and processes involved are to you (e.g., it&#8217;s taking me a few days to do my first mobile app using Flex but it&#8217;ll probably take me just a couple days to do the next one).</p><h2 id="thinking">What is Larry Thinking? => The JavaScript Problem</h2><p>I&#8217;m beginning to work full-time (or nearly full-time) on my next book, &#8220;Modern JavaScript: Develop and Design&#8221;. This book is based upon a proposal that I did about two and a half years ago (I think) for a different publisher. The goal of the book is not just to teach JavaScript but to address what I&#8217;m calling <em>The JavaScript Problem</em>. The JavaScript Problem is that the language&#8217;s design, capabilities, and history make it unlike any other language. Let&#8217;s look at these criteria in reverse order (Chapter 1 of the book, which is nearly written, discusses all of this in more detail).</p><p>JavaScript&#8217;s history is an ugly one and the end result is that today&#8217;s JavaScript is a vastly different beast than that created in 1996. In the late 1990&#8242;s, basically you had JavaScript for the Netscape Navigator browser and JScript (similar, but not the same) for Internet Explorer. Programming in JavaScript required lots of conditionals checking not only the browser type but its version, as there would be significant changes from versions 4 to 4.5 to 5. And, at best, JavaScript was used for form validation, but mostly it was used to create annoying alert messages, pop-up windows, and trivial applications of eye candy. Because JavaScript was used entirely within the Web browser, and because it wasn&#8217;t taken very seriously by &#8220;real&#8221; programmers, JavaScript was mostly the domain of client-side Web developers.</p><p>Thanks largely to Ajax, JavaScript today is a much more useful tool than it was fifteen years ago. And ironically, even though there are more types of browsers in use—Netscape became Firefox, Apple has Safari, Google has Chrome, and Opera still gets the occasional mention—and therefore more versions, programming to account for the variations has become much easier. Odd as that may sound, it&#8217;s due to a change in approach. In today&#8217;s JavaScript, instead of coding for the browser or version, one programs for <em>what the browser and version can support</em>. For example, instead of checking the browser version and knowing that these browsers can perform, say, DOM manipulation, JavaScript programmers now just run a test to see if the browser, regardless or type or version, can handle DOM manipulation:</p><blockquote><p> <code>if (document.getElementById) { // Go ahead!</code></p></blockquote><p>This change in approach is both simple and brilliant. If you want to see if it&#8217;s safe to use the <b>getElementById()<br
/> </b> method, just check if the Web browser supports it! Part of the reason this new approach works is that even though there are more browsers out there, they have come a long ways towards adopting standards (even Internet Explorer is better, albeit not where it should be).</p><p>JavaScript&#8217;s history is a problem for three reasons. First, people not up to date with what JavaScript can do, or how to program JavaScript properly, are inevitably misusing or underusing the language. Second, those of us who&#8217;ve been working with JavaScript since the early days have to undo our own bad habits. Third, those new to the language will no doubt run across older code, thereby running the risk of picking up their own bad habits, even when learning from fresh. I personally believe that part of the reason there aren&#8217;t more good JavaScript books out there is that most of these books are just updates upon updates of books written about the old, now thoroughly-outdated, JavaScript.</p><p>In terms of JavaScript&#8217;s capabilities, what used to be a language for playing sounds in the browser (ugh) or creating scrolling tickers (ugh), can now do dramatic and wonderful things: DOM manipulation, server-side requests via Ajax, <em>useful</em> animation, and more. &#8220;Web 2.0&#8243;—a term I despise—is largely JavaScript-based (Rich Internet Applications, RIAs, using Flash still use JavaScript, too). In fact, just a few of the ways that today&#8217;s JavaScript can be used, besides in a Web page, include:</p><ul><li>In PDFs</li><li>Internally in many of Adobe&#8217;s applications</li><li>To create desktop applications</li><li>As a server-side alternative to PHP or the like</li></ul><p>JavaScript is still mostly used as a Web browser enhancement, but what you <em>can</em> do with the language far exceeds that.</p><p>Finally, there&#8217;s JavaScript&#8217;s design. To start, JavaScript is an object-oriented language, but it&#8217;s not your typical object-oriented language. In fact, it&#8217;s a <em>prototypical</em> object-oriented language. What does that mean? In a typical OO language, which is to say almost all of them, programmers define classes and then create instances of those classes. The typical OO language also has its own defined classes, for common types like Strings, and common needs. JavaScript has its own defined classes, too, but programmers do not create their own classes. Instead, in JavaScript you can create your own object, with its own properties (variables) and methods (functions), and then use that. You can also, thanks to the <em>prototype</em> property, dynamically change the definition of any object, including the core JavaScript objects like String. In simple terms, this means you can alter what information an object can store and what that object can do on the fly (Ruby allows for this, too, although Ruby is not a prototyped language). This key difference in how JavaScript is designed is what makes it possible for true JavaScript wizards (such as <a
href="http://ejohn.org/">John Resig</a>, who created <a
href="http://jquery.com">jQuery</a> and worked for <a
href="http://www.mozilla.org">Mozilla</a> until recently, or <a
href="http://crockford.com/">Douglass Crockford</a>, a JavaScript expert at Yahoo!) to do the magic that they do. It&#8217;s also what makes modern JavaScript, on the high end, daunting for some new to the language.</p><p>The goal of &#8220;Modern JavaScript: Develop and Design&#8221; is to thoroughly teach today&#8217;s JavaScript, of course, so that readers can do what they want/need to do. But it&#8217;s important to me that the readers understand <em>why</em> that&#8217;s the way to do it, too. JavaScript as a language has plenty of baggage that comes with it, and that baggage needs to be opened and examined, and much of it tossed, in order to fully grasp and appreciate this lovely little language.</p><h2 id="giveaway">Book Giveaway => &#8220;PHP for the Web: Visual QuickStart Guide&#8221; and &#8220;Effortless Flex 4 Development&#8221;</h2><p>There was a nice response to the book giveaway announced in the previous newsletter, with equal interest in the &#8220;<a
href="http://www.larryullman.com/books/php-for-the-web-visual-quickstart-guide-4th-edition/">PHP for the Web: Visual QuickStart Guide</a>&#8221; (4th edition) and &#8220;<a
href="http://www.larryullman.com/books/effortless-flex-4-development/">Effortless Flex 4 Development</a>&#8221; books. (I suspect that Flex&#8217;s ability to create mobile apps, thanks to Flex 4.5 and Adobe AIR 2.6 has increased the interest in Flex.)</p><p>My thanks to everyone for their interest in the books. I will be giving away copies of the fourth edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickStart Guide&#8221; in September, I expect.</p><h2 id="news">Larry Ullman&#8217;s Book News => &#8220;PHP and MySQL for Dynamic Web Sites&#8221; (4th Edition) and &#8220;Modern JavaScript&#8221;</h2><p>As of Thursday, August 18th, the fourth edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book is at the printer, which means it should be available at a store (or online) soon. The estimated date I have from the publisher is September 9th.</p><p>Almost all of the planned extra material (i.e., the stuff new in this edition) did make it into the printed book.  This includes:</p><ul><li>Extra material on database design, JOINs, advanced SQL, and advanced MySQL functions</li><li>A new chapter introducing the <a
href="http://jquery.com">jQuery</a> JavaScript framework, walking through form validation, DOM manipulation, and Ajax</li><li>A new chapter introducing Object-Oriented Programming (OOP) in PHP, focusing on the basic syntax and principles, with examples recreating earlier MySQL-based scripts and another example performing date and time validation and manipulation</li></ul><p>And this edition has a &#8220;Review and Pursue&#8221; section at the end of each chapter. That section, as in the fourth edition of my &#8220;PHP for the Web: Visual QuickStart Guide&#8221; book, has review questions on the material just introduced and prompts for how you can extend the newfound knowledge.</p><p>Unfortunately, due to space constraints, it was decided to pull out the appendix and make that a freely available PDF, to be downloaded from the publisher&#8217;s Web site. As the appendix is mostly about installation, I don&#8217;t think that&#8217;s too much of a sacrifice. The appendix also includes in this edition about a dozen pages on server (i.e., <a
href="http://httpd.apache.org">Apache</a>) configuration and manipulation. But you can download the PDF to read that material. I don&#8217;t have any details as to how you go about finding the appendix on the publisher&#8217;s Web site, but will post that information when I have it.</p><p>For the first time ever, I&#8217;m doing screencasts to accompany the text. These videos will be embedded in some electronic versions of the book and made available separately (as I understand it). Most of the videos demonstrate and expand upon specific book content. I&#8217;m hoping to wrap up those videos in the next couple of days.</p><p>I&#8217;ve been wrapping up my initial extra research for my next book, &#8220;Modern JavaScript.&#8221; I&#8217;m looking forward to writing this and have a good sense of what the book will be. I&#8217;ve got a good bulk of the first two chapters written, and am hoping I&#8217;ll be able to make good progress in September.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/08/26/what-is-larry-thinking-44-web-development/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>&#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; (4th Edition) Off to the Printer!</title><link>http://www.larryullman.com/2011/08/18/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition-off-to-the-printer/</link> <comments>http://www.larryullman.com/2011/08/18/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition-off-to-the-printer/#comments</comments> <pubDate>Thu, 18 Aug 2011 15:00:47 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[book]]></category> <category><![CDATA[phpmysql4]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2732</guid> <description><![CDATA[I am very happy to say that the fourth edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book is officially off to the printer today! That means it should be available for purchase soon. Update: I believe the &#8220;release date&#8221; is September 9th. The widget below shows Amazon&#8217;s current price [...]]]></description> <content:encoded><![CDATA[<p>I am very happy to say that the fourth edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book is officially off to the printer today! That means it should be available for purchase soon.</p><blockquote><p><strong>Update: I believe the &#8220;release date&#8221; is September 9th.</strong></p></blockquote><p>The widget below shows Amazon&#8217;s current price for the book. Thanks to everyone in advance for their interest in this book (or any of them)!<br
/> <iframe
style="width: 120px; height: 240px;" src="http://rcm.amazon.com/e/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;nou=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=larrullm09-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;ref=tf_til&amp;asins=0321784073" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="320" height="240"></iframe></p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/08/18/php-and-mysql-for-dynamic-web-sites-visual-quickpro-guide-4th-edition-off-to-the-printer/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>MAMP Pro Sale</title><link>http://www.larryullman.com/2011/08/05/mamp-pro-sale/</link> <comments>http://www.larryullman.com/2011/08/05/mamp-pro-sale/#comments</comments> <pubDate>Fri, 05 Aug 2011 13:48:42 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Mac OS X]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[mamp]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2717</guid> <description><![CDATA[I don&#8217;t normally do this kind of thing, but I saw a deal today at MacUpdate Promo, which is 58% off of MAMP Pro. In US dollars, that brings the price from $59 down to $25. If you were ever considering paying for the pro version of MAMP, today&#8217;s the day! Unfortunately the offer ends [...]]]></description> <content:encoded><![CDATA[<p>I don&#8217;t normally do this kind of thing, but I saw a deal today at <a
href="http://www.mupromo.com/">MacUpdate Promo</a>, which is <a
href="http://www.mupromo.com/deal/1592/7024/mamp-pro">58% off of MAMP Pro</a>. In US dollars, that brings the price from $59 down to $25. If you were ever considering paying for the pro version of <a
href="http://www.mamp.info/en/index.html">MAMP</a>, today&#8217;s the day! Unfortunately the offer ends shortly, but hopefully some people will be able to take advantage of it. (And, no, I&#8217;m not affiliated with either MacUpdate or MAMP).</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/08/05/mamp-pro-sale/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Served from: www.larryullman.com @ 2012-02-09 14:42:34 by W3 Total Cache -->
