Newest Webmonkey ArticlesNewest articles on Webmonkeyhttp://www.webmonkey.com/rss/latestWed, 23 Jul 2008 17:05:08 -0400 (EDT)http://www.webmonkey.com/tutorial/Make_an_Animated_Short_Film_OnlineTutorial:Make an Animated Short Film Onlinehttp://www.webmonkey.com/tutorial/Make_an_Animated_Short_Film_OnlineWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<p>Maybe you have a great idea for an animated cartoon, but you suck at drawing and when it comes to animation, you don't have the slightest notion of where to begin? </p><p>Start with <a href="http://www.fuzzwich.com/" class="external text" title="http://www.fuzzwich.com/" rel="nofollow">Fuzzwich's</a> Minivid, an online web application for fast and short animated movie creation. </p><p><iframe src="http://www.wired.com/wired/archive/webmonkey/fuzzwich_minivid.html" align="middle" name="Page1" frameborder="0" height="300" scrolling="no" width="400"></iframe> </p> <table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1"><a href="#Getting_Familiar_With_the_Fuzzwich_MiniVid_Recorder"><span class="tocnumber">1</span> <span class="toctext">Getting Familiar With the Fuzzwich MiniVid Recorder</span></a></li> <li class="toclevel-1"><a href="#Basic_Parts"><span class="tocnumber">2</span> <span class="toctext">Basic Parts</span></a> <ul> <li class="toclevel-2"><a href="#Music"><span class="tocnumber">2.1</span> <span class="toctext">Music</span></a></li> <li class="toclevel-2"><a href="#Background"><span class="tocnumber">2.2</span> <span class="toctext">Background</span></a></li> <li class="toclevel-2"><a href="#Actors"><span class="tocnumber">2.3</span> <span class="toctext">Actors</span></a></li> </ul> </li> <li class="toclevel-1"><a href="#Making_it_Happen"><span class="tocnumber">3</span> <span class="toctext">Making it Happen</span></a> <ul> <li class="toclevel-2"><a href="#Movement"><span class="tocnumber">3.1</span> <span class="toctext">Movement</span></a></li> <li class="toclevel-2"><a href="#Speech"><span class="tocnumber">3.2</span> <span class="toctext">Speech</span></a></li> </ul> </li> <li class="toclevel-1"><a href="#Preview_and_Publish"><span class="tocnumber">4</span> <span class="toctext">Preview and Publish</span></a></li> <li class="toclevel-1"><a href="#The_Basics_Aren.27t_Enough.3F"><span class="tocnumber">5</span> <span class="toctext">The Basics Aren't Enough?</span></a> <ul> <li class="toclevel-2"><a href="#Scaling"><span class="tocnumber">5.1</span> <span class="toctext">Scaling</span></a></li> <li class="toclevel-2"><a href="#Actions"><span class="tocnumber">5.2</span> <span class="toctext">Actions</span></a></li> </ul> </li> <li class="toclevel-1"><a href="#Fin.21"><span class="tocnumber">6</span> <span class="toctext">Fin!</span></a></li> </ul> </li> </ul> </td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script> <a name="Getting_Familiar_With_the_Fuzzwich_MiniVid_Recorder"></a><h2> <span class="mw-headline">Getting Familiar With the Fuzzwich MiniVid Recorder</span></h2> <p>When you first load <a href="http://www.fuzzwich.com/minivids" class="external text" title="http://www.fuzzwich.com/minivids" rel="nofollow">The Minivid Recorder</a>, you are presented with what we call the "stage" in the center of the screen, the "actors list" along the left, the "time line" across the bottom (along with the "play head" that shows you where you are along the time line). </p><p><br /> You've probably also noticed that the Minivid recorder has already randomly selected a background and three actors for you. What you might not have noticed is that it has also picked out some background music as well. Usually the pre-selected stuff is as haphazard as the plot to the new Indiana Jones film, but every once in a while you'll get set up with the groundwork for a piece of genius like: Godzilla and his pet bunny in their sitting room with a proper British bobby, having a cup of tea and listening to Timbaland. I'd suggest you just run with that one. </p> <a name="Basic_Parts"></a><h2> <span class="mw-headline">Basic Parts</span></h2> <p>There are three different elements to any Minivid. </p> <a name="Music"></a><h3> <span class="mw-headline">Music</span></h3> <p>If a brilliant plot doesn't land in your lap, choosing your music will be the first order of business, as the song you choose will determine the length of your animation. To do so, simply click on the "Music" button near the top of the recorder, which will take you to the music selection screen. Here you can scroll through a list showing the available song clips and their duration. </p> <div class="thumb tnone"><div class="thumbinner" style="width:289px;"><a href="/special/image/Fw_music.jpg" class="image" title="Change Music Button"><img alt="Change Music Button" src="/mediawiki/images/Fw_music.jpg" width="287" height="142" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Change Music Button</i></div></div></div> <p>When you find a song you're interested in, click on it to load the song and preview it so you know what you're getting yourself into. Once you've found what you want, click "use it". </p> <div class="thumb tnone"><div class="thumbinner" style="width:686px;"><a href="/special/image/Fw_musicselection.jpg" class="image" title="Music Selection Screen"><img alt="Music Selection Screen" src="/mediawiki/images/Fw_musicselection.jpg" width="684" height="368" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Music Selection Screen</i></div></div></div> <a name="Background"></a><h3> <span class="mw-headline">Background</span></h3> <p>As any good director will tell you, setting is important. Because of this, Fuzzwich has provided a set of backgrounds you can use to frame the mood for your piece de resistance. Whether you're looking for a romantic cityscape or a desolate wasteland, you can use the "prev bg" and "next bg" buttons located directly left and right of the background to change the setting. </p><p><br /> </p> <div class="thumb tnone"><div class="thumbinner" style="width:427px;"><a href="/special/image/Fw_changebackground.jpg" class="image" title="Change Background Buttons"><img alt="Change Background Buttons" src="/mediawiki/images/Fw_changebackground.jpg" width="425" height="254" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Change Background Buttons</i></div></div></div> <a name="Actors"></a><h3> <span class="mw-headline">Actors</span></h3> <p>The next step is, of course, to choose your stars. First, you can select an actor by clicking on it, and you'll see it highlight with a colored box so you know you've actually selected it. You've probably noticed the three icons appear as well. If you aren't thrilled with the randomly chosen actors, you can delete them by either clicking the "X" icon, pressing the "delete key," or clicking the "X" that appears to the right of the actor's portrait in the actor's list when you move the mouse over it. As for the other two icons that appeared when we selected the actor, we'll get to those later. </p> <div class="thumb tnone"><div class="thumbinner" style="width:220px;"><a href="/special/image/Fw_actor.jpg" class="image" title="Add/Delete Actor Buttons"><img alt="Add/Delete Actor Buttons" src="/mediawiki/images/Fw_actor.jpg" width="218" height="203" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Add/Delete Actor Buttons</i></div></div></div> <p>Once we've deleted the ones we don't want, we can choose new actors by clicking on the "Actors" button at the top of the recorder. </p><p>On the actor selection screen, you're free to choose from a selection of the actor's Polaroid headshots. You can select or double-click the actor you want to hire. </p> <div class="thumb tnone"><div class="thumbinner" style="width:434px;"><a href="/special/image/Fw_actorselection.jpg" class="image" title="Actor Selection Screen"><img alt="Actor Selection Screen" src="/mediawiki/images/Fw_actorselection.jpg" width="432" height="219" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Actor Selection Screen</i></div></div></div> <p><br /> </p> <a name="Making_it_Happen"></a><h2> <span class="mw-headline">Making it Happen</span></h2> <p>Ok so you have a scene, a soundtrack, and some actors, now all we need is a compelling story! </p> <a name="Movement"></a><h3> <span class="mw-headline">Movement</span></h3> <p>Fuzzwich uses a simple "what you move is what you get" or "WYMIWYG" system. Basically, this means you just have to hit the "record" button, and then drag your actors around the screen, and Minivid will record the movement for you. </p> <div class="thumb tnone"><div class="thumbinner" style="width:209px;"><a href="/special/image/Fw_record.jpg" class="image" title="Click Record, move your actors"><img alt="Click Record, move your actors" src="/mediawiki/images/Fw_record.jpg" width="207" height="92" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Click Record, move your actors</i></div></div></div> <p>Once you're finished with the movement of one actor, just hit the record button again and record the movement of the second actor. You can see that the movement of your first actor gets played back when you're recording the motion for the second actor. This way you can build up a complex scene one actor at a time. Simple as that! </p> <a name="Speech"></a><h3> <span class="mw-headline">Speech</span></h3> <p>It's time to add your bit of eloquent dialog. So remember those two icons from before -- appearing when we were selected an actor for movement? Well, we're going to use one now to add a speech bubble. First though, you'll want to take the play head and move it to the place in the time line where we want the speech bubble to show up. Once it's there, click on the speech bubble icon. </p><p><br /> </p> <div class="thumb tnone"><div class="thumbinner" style="width:175px;"><a href="/special/image/Fw_addspeech.jpg" class="image" title="Adding Speech"><img alt="Adding Speech" src="/mediawiki/images/Fw_addspeech.jpg" width="173" height="210" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Adding Speech</i></div></div></div> <p><br /> Now you should see a speech bubble pop up above the actor with some text in the box that says "Hello!" While the greeting is nice, I'm sure that you have a better bit of dialog in mind, so just go ahead and delete the "Hello!" and type in something more interesting. You might notice that when you add a speech bubble to an actor, a colored icon appears down in the time line. The color, of course, matches the color of the box around the actor when it's highlighted so you know whose text bubble is whose. </p><p><br /> Now that your text is in, you don't have to worry about making the text bubble disappear. It'll go away after a bit on its own. Also, if you decide later you don't want a particular text bubble, you can always delete it by either deleting all the text out of the bubble, or selecting the text bubble in the timeline and clicking the "X" delete button. </p><p><br /> Since all comedy is in the timing, the cool thing here is that if you're not happy with the timing of the speech, you can actually move it within the timeline so that it appears exactly when you want it to. </p><p><br /> </p> <div class="thumb tnone"><div class="thumbinner" style="width:502px;"><a href="/special/image/Fw_texttiming.jpg" class="image" title="Changing Text Timing"><img alt="Changing Text Timing" src="/mediawiki/images/Fw_texttiming.jpg" width="500" height="115" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Changing Text Timing</i></div></div></div> <p><br /> </p> <a name="Preview_and_Publish"></a><h2> <span class="mw-headline">Preview and Publish</span></h2> <p>Congratulations! You've just gone through everything you need to create a basic Minivid! Before you release your bit of brilliance to the world, you'll probably want to see what it will look like to everyone else. Just click on the "Preview" button in the top right, and sit back and take it all in. </p><p><br /> </p> <div class="thumb tnone"><div class="thumbinner" style="width:253px;"><a href="/special/image/Fw_preview.jpg" class="image" title="Preview and Publish"><img alt="Preview and Publish" src="/mediawiki/images/Fw_preview.jpg" width="251" height="109" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Preview and Publish</i></div></div></div> <p><br /> The last step is to actually get your Minivid out to the world, so everyone can gawk in amazement over its awesomeness. To do this, simply click the "Publish" button, give your work of art a title, and put you name on it so everyone can send you money. </p> <a name="The_Basics_Aren.27t_Enough.3F"></a><h2> <span class="mw-headline">The Basics Aren't Enough?</span></h2> <p>Alright, so you've had your chance to make a couple of fun Minivids but you need something more to spice them up? There are two advanced features that I'll briefly cover that'll get your Minivids to really pop: scaling and actions. </p><p><br /> </p> <a name="Scaling"></a><h3> <span class="mw-headline">Scaling</span></h3> <p>Previously, when we were selecting our actors to move them around, you may have noticed a little scroll bar appear to the right of the Minivid stage. You can use the bar on the right to increase and decrease the size of your actors. Up is bigger, down is smaller. Pretty simple. </p><p><br /> </p> <div class="thumb tnone"><div class="thumbinner" style="width:149px;"><a href="/special/image/Fw_scaling.jpg" class="image" title="Scaling Bar"><img alt="Scaling Bar" src="/mediawiki/images/Fw_scaling.jpg" width="147" height="256" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Scaling Bar</i></div></div></div> <p><br /> Now here's cool thing number one: the scaling is recorded at the same time as the motion is, which means that we can go in after we do all of our movement, and then do the scaling, so we can make something shrink and grow at the same time that it's moving around! Nice. </p><p><br /> Here's the second cool thing you can do: Close ups. Just like on the big screen, you can zoom in during crucial points in your story and give some added emphasis. </p><p><br /> </p> <div class="thumb tnone"><div class="thumbinner" style="width:434px;"><a href="/special/image/Fw_closeup.jpg" class="image" title="Using Scaling for a Close-Up"><img alt="Using Scaling for a Close-Up" src="/mediawiki/images/Fw_closeup.jpg" width="432" height="219" border="0" class="thumbimage" /></a> <div class="thumbcaption"><i>Using Scaling for a Close-Up</i></div></div></div> <a name="Actions"></a><h3> <span class="mw-headline">Actions</span></h3> <p>Finally (and most excitingly), we can talk about one of the most fun parts of Minivid: Actions. The actors in Minivid all have their own special actions that you can make them do. Guapo can leap, the Professor can have an experiment blow up in his face, Bobby can write you a ticket, and so on. </p><p>So, how do we make it happen? All we have to do is select the actor you want to use, and click on the "*" button to the left of the speech bubble button. This will pop-out a menu that has a list of all the actions that your actor can perform. </p> <a name="Fin.21"></a><h2> <span class="mw-headline">Fin!</span></h2> <p>We hope you enjoyed this short jaunt through the Minivid world. Now that you're an expert, dive into Minivid, show your friends your skills, and add your wit to the pile! </p><p><br /> <i>This tutorial was originally submitted by Chris Patton, vice president of business development at Fuzzwich. It is a <b>wiki,</b> so if you have extra advice to share, feel free to log in and add it.</i> </p>]]>http://www.webmonkey.com/reference/How_Streetread_Was_Developed_-_jQuery_and_DrupalReference:How Streetread Was Developed - jQuery and Drupalhttp://www.webmonkey.com/reference/How_Streetread_Was_Developed_-_jQuery_and_DrupalWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Article"></a><h2> <span class="mw-headline"> Article </span></h2> <p>Streetread automatically aggregates the latest headlines from over 20 of the leading finance sites on the web, as well as all of the stocks you choose to follow, and all within a single-page, easy to use, auto-loading interface. The site aims to dramatically simplify the daily activities people undergo in order to stay updated with Wall Street activity, in terms of news and data. The goal of development was to make the site as easy as possible to use, while making the interface similar to that of a regular desktop application. </p><p>This article explains the development process and shares with you, great tips and techniques that power the site. </p><p><a href="http://www.streetread.com/blog/how-streetread-was-developed" class="external text" title="http://www.streetread.com/blog/how-streetread-was-developed" rel="nofollow">How Streetread Was Developed - jQuery and Drupal</a> </p>]]>http://www.webmonkey.com/reference/Aoc_goldReference:Aoc goldhttp://www.webmonkey.com/reference/Aoc_goldWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Article"></a><h2> <span class="mw-headline"> Article </span></h2> <p>I have played about 45 hrs worth of AoC to make it to lev 35. In those 45 hrs I have done NOTHING but mindless, boring quest grinding. So much so that I can't bring <a href="http://itemrate.com/Cheap.065.Age_of_Conan_-_US.G.aspx" class="external text" title="http://itemrate.com/Cheap.065.Age_of_Conan_-_US.G.aspx" rel="nofollow">link title</a>AoC gold to continue the game. I am not quiting though. The game promises epic PvP battles which I would love to partake in, however I do not know if I will ever make it that far as the 150 hrs of game play to reach lev 80 might be too much for me. This brings me to my next point. Why the hell do many MMORPG require you to AoC gold<a href="http://brogame.com/Cheap.065.Age_of_Conan_-_US.aspx" class="external text" title="http://brogame.com/Cheap.065.Age_of_Conan_-_US.aspx" rel="nofollow">link title</a> waste 100+ hrs of your time before you get to the good parts of the game? AoC is the perfect example of this. "Hey we have an awesome game where players can build there own cities, attack other players and cities and battle for dominance. Oh, btw, none of that is possible until you have played 100+ hrs in our boring as ass retarded game." Here's an idea, if you make a really fun game, don't add an ton of bullshit before it. I'm not sure how many of you played the first Jedi Knight game, but you didn't get a lightsaber for the first 6-7 hrs of the game. Guess what? When Jedi Knight 2 came out they decided not to be retards and gave you a lightsaber right away. You know why? The AoC gold<a href="http://www.mygamestock.com/Cheap.013.World_of_Warcraft_-_US.aspx" class="external text" title="http://www.mygamestock.com/Cheap.013.World_of_Warcraft_-_US.aspx" rel="nofollow">link title</a> game was called Jedi FUCKIN Knight! Nobody wanted to play those first 6-7 hrs without a lightsaber. MMORPG developers need to stop being stupid and cut out the bullshit. I don't want to waste 100+ hrs of my life before I get to anything that is remotely fun. And if that is the case then shut the hell up about how awesome your game is and say "Boring as hell for the first 100 hrs, then it gets <a href="http://www.oforu.com/Cheap.065.Age_of_Conan_-_US.aspx" class="external text" title="http://www.oforu.com/Cheap.065.Age_of_Conan_-_US.aspx" rel="nofollow">link title</a>AoC gold". People then will not get mad when they start playing the game cause they know what to expect. I'll try to continue in AoC and give my review once I hit lev 40, however it probably won't be pretty. Honestly, if there was ever a reason to buy a top level account from one of those selling sites it's <a href="http://gosuperplayers.com" class="external text" title="http://gosuperplayers.com" rel="nofollow">link title</a>AoC gold. </p> <a name="Suggested_readings"></a><h2> <span class="mw-headline"> Suggested readings </span></h2> <p>Hey we have an awesome game where players can build there own cities, attack other players and cities and battle for dominance. Oh, btw, none of that is possible until you have played 100+ hrs in our boring as ass retarded game." Here's an idea. </p>]]>http://www.webmonkey.com/reference/Wow_goldReference:Wow goldhttp://www.webmonkey.com/reference/Wow_goldWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Article"></a><h2> <span class="mw-headline"> Article </span></h2> <p>At level 40, players are able to purchase a mount with wow gold<a href="http://www.item4sale.com" class="external text" title="http://www.item4sale.com" rel="nofollow">link title</a> based on their character's race and reputation which can be summoned at will. These are expensive to purchase and train, but add to the player’s status and significantly increase their speed of travel. Unfortunately, players may not engage in combat while on a mount. The level cap in World of Warcraft is 60, with rewards for successful raids at this level being in the form of rare loot. What keeps players interested in playing WoW and what draws new players to a game where so many people have already reached max level? In fact, they are many MMO players out there who never played anything but <a href="http://www.item4sale.com" class="external text" title="http://www.item4sale.com" rel="nofollow">link title</a>wow gold<a href="http://www.hao2xia.blogbus.com" class="external text" title="http://www.hao2xia.blogbus.com" rel="nofollow">link title</a> (you really need to feel bad for them). Additionally, they have become the hurdle that almost every new fantasy based MMO must jump, so much so that most emerging games are accused of being “WoW clones”. Even with these credits, the question is “After three years can WoW and [<a href="http://yatou0714.mylivepage.com" class="external free" title="http://yatou0714.mylivepage.com" rel="nofollow">http://yatou0714.mylivepage.com</a> </p> <pre>link title]wow gold still hold a player’s interest?” With more and more subscribers keeping their eye on the next MMO, how will WOW stay competitive in an evolving and expanding MMO world? One of the challenges that World of Warcraft faces is keeping the interest their current players while recruiting new subscribers. Sure, WoW’s subscriber numbers are high, but how many of those are active players? By active players I am referring to the gamers out there. The folks that play the game as intended: questing, raiding, and PVPing. Not the folks using the game to turn a profit. WoW Gold[<a href="http://mywowgold3000.blogspot.com/" class="external free" title="http://mywowgold3000.blogspot.com/" rel="nofollow">http://mywowgold3000.blogspot.com/</a> link title] hot news&nbsp;: World of Warcraft Reaches 10 Million Players ---- World of Warcraft's community continues to grow, recently hitting a new high of 10 million subscribers around the world. In the three years since the game was first released, the way it has been embraced around the world has far surpassed our expectations, and we're grateful to all of the players who made that possible. We just wanted to take a moment to share the news, welcome the many new and returning players who entered the game over the holidays, and thank all of you for your ongoing support and enthusiasm. [<a href="http://mywowgold3000.blogspot.com/" class="external free" title="http://mywowgold3000.blogspot.com/" rel="nofollow">http://mywowgold3000.blogspot.com/</a> link title]wow gold,[<a href="http://blog.chinaunix.net/u2/67047/" class="external free" title="http://blog.chinaunix.net/u2/67047/" rel="nofollow">http://blog.chinaunix.net/u2/67047/</a> link title]wow gold, </pre>]]>http://www.webmonkey.com/tutorial/Make_money_from_publishing_your_digital_media_onlineTutorial:Make money from publishing your digital media onlinehttp://www.webmonkey.com/tutorial/Make_money_from_publishing_your_digital_media_onlineWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Introduction"></a><h2> <span class="mw-headline"> Introduction </span></h2> <p>Step by Step guide for turning your videos,stories and images into cash </p> <a name="What_you.27ll_need"></a><h2> <span class="mw-headline"> What you'll need </span></h2> <p>By Jim Grady and T.K. Flowers Founders of the citizen journalism site www.Babelation.com [2] </p><p>Everyone wants to make more money. Everyone has a story to tell. Why not combine the two and make money on the Internet from your stories? </p><p>Introduction: </p><p>The fastest growing segment of the online information market is user-generated content, now referred to as digital media content. User-generated digital media content is the powerful marketing force that has spurred the growth of several start-ups like YouTube and Facebook. These Internet businesses have gone from zero to multi billion-dollar values in less than four years. </p><p>The mission of this article is to outline how producers of digital media content, including bloggers, writers, vloggers etc. can, by self-publishing their own content online, harness the powerful social-marketing force of digital content to build their own virtually unlimited lifetime income streams. </p><p>Digital Media Content </p><p>Digital media content is any and all content that is produced, stored, transmitted, saved and/or distributed through or on a computer or digital device and the Internet. It includes, but is not limited to written opinions, articles, videos, photographs, Podcasts, audio recordings, software, games and messages. </p><p><br /> Digital Media Distribution What’s wrong with this picture? Current Online media distribution and why you do not make money. </p><p>MySpace, Flikr and YouTube helped pioneer the online user-generated digital content creation and distribution platform. All had different reasons behind their foundation, but the underlying force generating their explosive usage is the same; it is the power to publish, transmit and distribute personal digital content. These pioneers are all great companies, provide great value to consumers and are now worth millions of dollars; they are worth millions of dollars because of your digital content. Digital media content draws hundreds of millions of visitors to sites daily. Advertisers then bid to place ads targeted toward their large volume of unique visitors. Google, the most profitable of ad-supported Internet companies, uses ad bidding in online searching to create gross revenues of $15 billion a year. The Internet ad market is estimated close to $20 billion a year and expected to double within seven years. </p><p>During its infancy, research laboratories, universities and government sectors had posted huge amounts of research-related material on the Internet. These initially content- rich sites drew people to the Internet and got them started posting their own content on the first Web sites. Once the Web spawned millions of sites, the average, everyday user of the Internet faced the daunting challenge of finding specific information, which led to the creation of listing services like Yahoo and then search engines like Google. Everything Yahoo lists and everything Google searches is someone’s digital content. Then social platforms like MySpace and YouTube came along and changed the Internet's trend from mainly publishing corporate/entity/business content to that of users’ personal content. Social media companies are now valued in the billions of dollars, but 99 percent of all personal content producers are not receiving a single cent from the billions of dollars being spent to advertise directly to its market. Why do producers of digital media content receive little to no compensation? To answer that question, it is important to understand the history of social media companies. </p><p>YouTube, MySpace, Facebook, Flickr and Wikipedia were not initially set-up to create any revenue streams. So when they actually started turning a profit, it was based on these companies generating income to pay back investors or to increase market value. Basically, these companies are growing exponentially by billions of dollars a year solely through the FREE content of their users. This begs the question: in what other creative market do media content generators get zero reward while the distributor gets 100 percent? The answer to that question is none! In the music industry, hundreds of people became multimillionaires through their songs. Film, TV, print, radio, music and publishing markets all pay handsome rewards for good content. J.K. Rowling, author of the Harry Potter series, is worth more than a billion dollars thanks to her wizard fantasy books. So what is your content worth? We will show you how to make money from self-publishing your digital media content online. </p><p>Self-Publishing: The Solution“Content Producers” as the center of new media distribution. </p><p>The premise of this article is to outline how self-publishing digital content can be a powerful new shift in the online information market and to illustrate how citizen journalists can profit from this new trend. Our definition of self-publishing is when the content producer is responsible for the production, publishing, distribution and monetization of their own digital content. Our assertion is that the content producer must take control of every aspect of their digital content in order to profit from it and create a lifelong stream of income. </p><p><br /> How Content Makes Money </p><p>Google is the most profitable Internet-based company. Google’s secret is simple; it uses other people’s digital content. Google searches and indexes Web sites all over the Internet and makes them findable for users. Google then sells advertising that is associated with keywords contained in the users search. Marketers pay Google for specific keywords in a search associated with their ad campaigns. </p><p>Social Media, User-generated Content and Advertising </p><p>MySpace, Facebook, YouTube and Flickr are the leading platforms in their target markets for user-generated content. These sites billion dollar values in a few short years for two reasons; they have large member audiences and enormous amounts of user-generated content. </p><p><br /> The Audience and Digital Content TV programming is developed for and dependent upon segmented audiences. There are specific TV markets that drive content an example audience are those that love to observe how the legal system works, so there are several variations of Law and Order. For aspiring celebrities, American Idol. Good content attracts great audiences, and advertisers pay billions of dollars to target them. Another prime example is the Super Bowl, where advertisers will pay $1 million to $2 million for a 30-second commercial to be viewed by an audience of 100 million. </p><p>The TV analogy has moved to the Internet, but in micro-fashion. When Google sells a keyword associated with a search, it has just sold a specific audience of one to a marketer. For that specific audience, Google can charge a fortune. </p><p><br /> The Digital Rate Game: </p><p>What Google and other online ad servers do is auction the specific audience to the marketers at differing rates based on demographics and demand. For example, an American searching for expensive wine might cost more to target than someone from a Third-World country looking for a description of a tree. Online rates can vary based upon whether the user clicks on the ad (CPC, pay per click advertisement ) or just because the ad was viewed (CPM, cost per one thousand impressions). There are many variations of ads but we are using these two as examples. The ads are bought and sold on volume of 1,000 consumers seeing the ads. Ads run from one cent per thousand to as high $100 per thousand, with video ads normally getting the highest averages. </p><p>The Monetization Game </p><p>We recently attended a Blog conference with about 50 companies advertising on how to monetize your Blog. Our challenge and question is why stop at your Blog? Why not monetize all of your digital content? That’s exactly what the social media sites are doing; they are building advertising campaigns based around your social communications and digital content! So why not just do it yourself? </p><p><br /> Monetizing Self Publishing </p><p>We all know that Web sites and other people are making money off of your content. So how do you go about making money and building income for yourself? In order to find out, we must look inside typical content sites, utilizing a news-based site as an example. We will call our news site Newsnewsnow.com </p><p>Newsnewsnow.com receives from Google or another ad server $5 per one thousand impressions per unique visitors on average, and has two such ads per page for a total of $10 CPM. </p><p>If 1 million people viewed a story on Newsnewsnow.com, then Newsnewsnow.com would gross $10,000. If the owner of the story had negotiated an agreement to share revenues from all of their content with Newsnewsnow.com before they published the story, say for instance at a 10% revenue share, then the content producer would earn $1,000. If that same story had 10 million views, the content owner could receive $10,000 under this scenario. </p><p>Now let’s look at videos, which carry higher advertising rates. Say a producer published a video at Newsnewsnow.com and it received a higher ad rate of $25 CPM; the producer could receive $2,500 or$25,000 using the same formula above. This may not seem like a lot, but read on: </p><p>Building Long-Term Income: Your Digital Assets </p><p>Receiving $2,500 from a video may not seem like much, but what if you had 100 videos or 500 articles, or 1,000 pictures/images. Getty makes hundreds of millions of dollars just supplying digital images. Let’s look at the same scenario above, but now using bulk numbers of content. We will use the news video here to make it easier to see and explain. </p><p>In two months, content producer ABZ has produced 100 news videos and published them at Newsnewsnow.com. Newsnewsnow.com is receiving $25 per 1,000 views (CPM) per video. ABZ’s digital video assets would generate revenue as follows: </p><p>1: ABZ’s 100 videos are each getting an average of 10,000 monthly views. This would equal 1 million views for all of ABZ’s content, which, if ABZ has a 10% revenue share, would generate $2,500 in monthly gross revenue. </p><p>2: ABZ’s videos average 100,000 views each month at the same rate, ABZ generates $25,000 a month in revenue. </p><p>3: ABZ’S videos average 1 million views in a month, ABZ would generate $250,000 in monthly revenue. </p><p>Side note: There are many videos on YouTube each month that generate 1 million views or more </p><p>Lets add Text and images to ABZ’s revenues. </p><p>Digital Images </p><p>ABZ publishes 1,000 images with each receiving 1,000 views a month equaling 1,000,000 unique image views a month at a rate 1/5 of above stated rates for videos. The images would generate about $500 a month. </p><p>Text/Image /Articles </p><p>ABZ has 500 published text articles, each receiving 2,000 unique views per month, equaling 1 million unique views. Text articles receive twice the rate of standalone images and would generate $1,000 a month. </p><p>ABZ’s portfolio of video, text articles and images *100 videos=$2500 *Images=$500 *Text articles=$1,000 The totaling of each group of Content with 1 million unique views equal $4,000 a month in revenue. </p><p><br /> Future Trend/The Multimedia Informative: </p><p>We believe there will be a growing trend to integrate text, images and video into a single online multimedia presentation that we call Informatives. Integrated Informatives will be a powerful new class of storytelling media. </p><p>Where Self-Publishers Go To Make Money/The Rise of Revenue-Sharing User Generated Publishing Portals: </p><p>Social media sites like MySpace and YouTube were the first phase of user-generated content; the next phase is publishing portals that enable content producers to publish digital content and also share revenues. </p><p>We outline three such Revenue-Sharing Portals </p><p>A new phase of portals is beginning to come to market that will help the content producers immensely, and change the dynamics of Digital Content markets. We term these Revenue Sharing Publishing portals. These portals will share revenue generated by content with the content producers. Below are three Revenue Sharing Publishing Portals </p><p>(A) Associated Content.Com </p><p>Associated Content acts like an article submission directory but with the added feature of paying commissions to content producers; below is the business description found on their website. </p><p>Associated Content is a platform that enables everyone to publish their content in any format on any topic and then distributes that content to engaged audiences through its website and content partners. Those who contribute to Associated Content's ad-supported collection of original text, video, audio and images gain exposure and often earn cash for their participation. The amount of money you make at Associated Content is unlimited. All of the content you publish can earn you money via Performance Payments, which currently pays you a baseline PPM™ rate of $1.50 for every thousand page views your content receives. As you generate more page views and submit more content, your clout level rises - and your Performance Payments do too! Performance Payments allow you to earn unlimited cash from your text, video, slideshow and audio submissions long after they have been published. You earn money for every thousand-page views your content generates (PPM™ rate). The baseline PPM™ rate is currently $1.50 – meaning if you generate 30,000 page views, your paid $45.00 in Performance Payments. The more content you submit and more page views it generates, the higher your PPM™ rate gets. </p><p><br /> (B) Babelation.com </p><p>Babelation is a user-generated news and information-focused portal. It is the creation of this article’s authors. Babelation was founded in order to fulfill the need for a portal that highlights and broadcasts, in real-time, user–generated news as well as supplying a platform for content producers to monetize their content. Babelation enables publishing of video, text and images alone and/or in combination. Babelation pays a varying monthly rate to content producers The minimum revenue share is 10% and can be as high as 25%. Babelation‘s model differs from Associated Content in that the content producer receives the same percentage of revenue generated by their content even when higher rates are gained. Associated Content pays out the same rate for video/text and or image even if they gain a higher rate. Babelation, in some instances, would pay out a higher percentage to a content producer when it receives higher CPM rates, for instance, when a video would garner a higher rate than a text-based article. Babelation’s philosophy behind its percentage rates versus standardized rates enables it to offer more lucrative revenue return to content producers for their high demand content. </p><p>(c). Revver </p><p>Revver is a video-sharing platform. It is not focused in a single category, but is more diverse like YouTube, with the exception that Revver pays content producers a percentage of revenues ala Babelation; Revver limits content to just video. </p><p><br /> Marketing Your Digital Content/How to Draw Traffic to your Content and Get Paid </p><p>All over the web, as outlined in this article, audiences and content must be drawn together. In order for you to make money from your digital content you must create marketing campaigns to drive traffic to your content wherever you have it published. The more traffic is directed toward your content, the more eyes are viewing it, which increases your revenue. Simply put, the more your content is viewed, the more money you make. We urge you, the content producer, to grab the bull by the horns and market your own content and not just rely on the publishing site’s traffic. Below are some methods for building profitable traffic sources to your content </p><p>Using Keywords </p><p>Keywords are the words people type into search engines like Google when they’re looking for something online. The search engines use the keywords to decide which web pages to deliver. Since search engines match content with keywords, they become crucial when trying to attract search engine results to your digital content. Content producers should use Keyword Tools to develop the title and the descriptive body of all digital content published. Once you have researched the best Keyword strategy for your content, post it within the best or as within as many Revenue Sharing Publishing portals as you like. </p><p><br /> Using Bookmarking Services to market your content </p><p>Social book marking services’ primary function is to store bookmarked Website pages online, which allows you to access the same bookmarks from any computer and add them from anywhere. They enable you to see the interesting links that your friends and other people bookmark, and share links with them in return. Because of the ability for many people to see what others on the Net are bookmarking, the services themselves have been turned into powerful marketing tools for getting content noticed by users all over the worldwide web. Once you have posted your “keyworded” Digital Content on a Revenue Sharing Publishing Portal, you should immediately start a bookmarking campaign targeted at the bookmarked services sites that best fit your content. Do a little homework; different sites work well with varying categories of content. Your goal is to use keywords and bookmarking together to reach your target audience. </p><p><br /> Article Directory Submissions </p><p>Article directories are websites that let anyone publish full or partial text articles. The major article directories have hundreds of thousands of users seeking content. Article directories also can be used to link back to full articles posted at revenue sharing portals. Articles increase traffic directly from their users and provide higher linking rates to your content as rated by Search engines, collectively drawing more traffic to your content. </p><p>In conclusion, there are many ways to skin this cat! You can start your own Web site and promote it. You can publish your content on MySpace, YouTube, Associated Content, Babelation or wherever. The bottom line is that you should be doing it all! Your goal should be to publish your content wherever and whenever you can. If you decide to publish your videos on Babelation and you have a MySpace account, you need to drive traffic from them to where you can make money! Shameless self-promoting is ok and welcomed at our site. You can and should put your own website or Blog address on everything you post! Eyeballs are the name of the game! The more eyes that see what you have to offer, the more money you make! </p> <a name="Steps"></a><h2> <span class="mw-headline"> Steps </span></h2> <p>Create content,choose revenue sharing portal,use bookmarking service to market your content </p>]]>http://www.webmonkey.com/tutorial/Use_URL_Patterns_and_Views_in_DjangoTutorial:Use URL Patterns and Views in Djangohttp://www.webmonkey.com/tutorial/Use_URL_Patterns_and_Views_in_DjangoWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<p>Last time around, we <a href="/tutorial/Install_Django_and_Build_Your_First_App" title="Tutorial:Install Django and Build Your First App"> installed Django</a> and started building a blog application. We got Django's built-in admin system up and running and explored some third-party libraries like the <a href="http://code.google.com/p/django-tagging/" class="external text" title="http://code.google.com/p/django-tagging/" rel="nofollow">django-tagging</a> project. </p><p>So far we have some cool administrative tools, but no website for the rest of the world to see. This time around, we'll work on displaying our content to the world by building the URL patterns and constructing some "views" -- a term with a very specific meaning within the Django framework. </p><p>Everything we're going to do will make more sense if you understand how Django processes your visitor's request. We went over some of this in our introduction, but here's a quick refresher course. </p> <table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1"><a href="#How_content_is_presented"><span class="tocnumber">1</span> <span class="toctext">How content is presented</span></a></li> <li class="toclevel-1"><a href="#Working_with_urls.py"><span class="tocnumber">2</span> <span class="toctext">Working with urls.py</span></a></li> <li class="toclevel-1"><a href="#Thoughts_on_URLs"><span class="tocnumber">3</span> <span class="toctext">Thoughts on URLs</span></a></li> <li class="toclevel-1"><a href="#Being_Generic_is_Good"><span class="tocnumber">4</span> <span class="toctext">Being Generic is Good</span></a></li> <li class="toclevel-1"><a href="#Go_your_own_way"><span class="tocnumber">5</span> <span class="toctext">Go your own way</span></a></li> <li class="toclevel-1"><a href="#Conclusion"><span class="tocnumber">6</span> <span class="toctext">Conclusion</span></a></li> </ul> </td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script> <a name="How_content_is_presented"></a><h2> <span class="mw-headline">How content is presented</span></h2> <p>The Django flow goes something like this: </p><p>1) Visitor's browser asks for a URL.<br /> 2) Django matches the request against its urls.py files.<br /> 3) If a match is found, Django moves on to the view that's associated with the URL. Views are generally found inside each app in the views.py file.<br /> 4) The view generally handles all the database manipulation. It grabs data and passes it on.<br /> 5) A template (specified in the view) then displays that data.<br /> </p><p>Designer and coder Jeff Croft has put together a visual representation of this flow that makes it even easier to understand: </p> <div class="center"><div class="floatnone"><span><a href="/special/image/Django_flowchart.png" class="image" title="Django flowchart.png"><img alt="" src="/mediawiki/images/Django_flowchart.png" width="277" height="361" border="0" /></a></span></div></div> <p>See the full size original (along with explanatory text) at <a href="http://www.flickr.com/photos/jcroft/432038560/sizes/o/" class="external text" title="http://www.flickr.com/photos/jcroft/432038560/sizes/o/" rel="nofollow">Flickr</a>. </p><p>With that in mind, let's start building our public site by creating some URL patterns. </p> <a name="Working_with_urls.py"></a><h2> <span class="mw-headline">Working with urls.py</span></h2> <p>Remember the <code>urls.py</code> file where we set up our admin URLs in the <a href="/tutorial/Install_Django_and_Build_Your_First_App" title="Tutorial:Install Django and Build Your First App"> last lesson</a>? Open that file in your favorite text editor. </p><p>Now, we could define all our URLs in this file. But then what happens if we want to reuse this blog in an entirely separate project? We'd get a mess. </p><p>A far better approach is to define all your app-specific URLs in a file that lives inside the app itself. In this case, we're going to use a file inside the blog app, which will also be named <code>urls.py</code>. </p><p>However, before we start with that file, we need to tell Django about it. So add this line to the project-wide <code>urls.py</code> file, just below the line that defines the admin URLs, like so: </p> <pre> from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')), (r'^blog/', include('djangoblog.blog.urls')), ) </pre> <p>OK, now head into the blog app folder and create a new <code>urls.py</code> file, which we'll use to hold all the URLs related to our blog application. </p> <a name="Thoughts_on_URLs"></a><h2> <span class="mw-headline">Thoughts on URLs</span></h2> <p>One of the nice things about Django is that it forces you to think about your URL designs, something many people don't spend much time considering. If, perchance, you've never spent too much time thinking about URLs, now is good time to <a href="http://www.w3.org/Provider/Style/URI" class="external text" title="http://www.w3.org/Provider/Style/URI" rel="nofollow">read the W3C guide on the subject</a>. </p><p>As the W3C points out, good URLs never change. In fact, even bad URLs never change -- people change them. But when you change your URLs, you break everyone's bookmarks and inbound links. So, spend a bit of time designing a good URL scheme from the beginning and you shouldn't need to change things down the road. </p><p>I would actually add one item to the W3Cs guidelines: good URLs are hackable. What do I mean by hackable? Let's say our blog has URLs like: </p> <pre> http://mysite.com/blog/2008/jul/08/post-slug/ </pre> <p>That URL would display the blog post with the slug named "post-slug" which was published on July 8, 2008. </p><p><b>Note:</b> "Slug" is an old newspaper term. An article about fires in Nevada would probably be slugged "nv-fires" for easy identification. In this context, the slug refers to the last bit of the URL and can contain letters and dashes rather than spaces. </p><p>Ideally, if the user heads up to their browser's location bar and chops off the <code>post-slug/</code> bit, they would see all the blog entries from July 8, 2008. If they were to chop off <code>08/</code>, they would see all the posts from July 2008, and so on. </p><p>In other words, the URL is hackable. Now, most people probably won't do that. But in addition to making your site easier to navigate for the hands-on types, this rule also enforces an easy-to-use structure around which to build your site. In this case, the date-based structure was probably already obvious. But what about tags? </p> <pre> http://mysite.com/blog/tags/tag-slug/ </pre> <p>This URL structure uses the same idea, but one-ups it. Not only can you hack the URL to get to a list of all tags (provided you create such a page), it should be obvious that you could plug just about any word into the "tag-slug" part of the URL and it effectively functions like a tag-based search engine. </p><p>So, how do we actually build the URLs? </p> <a name="Being_Generic_is_Good"></a><h2> <span class="mw-headline">Being Generic is Good</span></h2> <p>Let's get started. Paste this code into your <code>blog/urls.py</code> file: </p> <pre> from django.conf.urls.defaults import * from djangoblog.blog.models import Entry from tagging.views import tagged_object_list info_dict = { 'queryset': Entry.objects.filter(status=1), 'date_field': 'pub_date', } urlpatterns = patterns('django.views.generic.date_based', (r'(?P&lt;year&gt;\d{4})/(?P&lt;month&gt;[a-z]{3})/(?P&lt;day&gt;\w{1,2})/(?P&lt;slug&gt;[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug',template_name='blog/detail.html')), (r'^(?P&lt;year&gt;\d{4})/(?P&lt;month&gt;[a-z]{3})/(?P&lt;day&gt;\w{1,2})/(?P&lt;slug&gt;[-\w]+)/$', 'object_detail', dict(info_dict, template_name='blog/list.html')), (r'^(?P&lt;year&gt;\d{4})/(?P&lt;month&gt;[a-z]{3})/(?P&lt;day&gt;\w{1,2})/$','archive_day',dict(info_dict,template_name='blog/list.html')), (r'^(?P&lt;year&gt;\d{4})/(?P&lt;month&gt;[a-z]{3})/$','archive_month', dict(info_dict, template_name='blog/list.html')), (r'^(?P&lt;year&gt;\d{4})/$','archive_year', dict(info_dict, template_name='blog/list.html')), (r'^$','archive_index', dict(info_dict, template_name='blog/list.html')), ) </pre> <p>Now, remember when I said that the URL patterns determine which view Django will use to grab data from our database? In that scheme, we would write our regular expressions and then point each pattern to a function in <code>views.py</code>. </p><p>But we're cheating a little bit here by taking advantage of some built in views that Django provides. These are known as "generic views." </p><p>Django's developers wisely figured that date-based archives were likely to be a common problem that just about every site has at least some use for, so they baked in some generic data-based views. </p><p>What we've done here is take advantage of the built in views to construct our URLs. </p><p>Let's start with <code>info_dict</code>, which is just a Python dictionary that holds two things: a queryset containing all of our public blog entries and the name of our date field in the database. </p><p>It's important to realize that Django querysets are lazy -- Django only hits the database when the queryset is evaluated, so there's no performance penalty for defining a queryset that looks for everything, then filtering it on a case-by-case basis. This happens to be essentially what we've just done. </p><p>Passing the queryset to the generic view enables Django to automatically do whatever date sorting we need, for instance, to show all the entries from a single month or year. For more info on querysets, check out the <a href="http://www.djangoproject.com/documentation/db-api/" class="external text" title="http://www.djangoproject.com/documentation/db-api/" rel="nofollow">database API docs</a> on the Django site. </p><p>That's all the URL patterns list is: a regular expression that looks at the URL and figures out what view to use. The view then determines which entry or list of entries to show. </p><p>Let's break it down and go through each part of the URL pattern. We'll use the first line as an example: </p> <pre> (r'(?P&lt;year&gt;\d{4})/(?P&lt;month&gt;[a-z]{3})/(?P&lt;day&gt;\w{1,2})/(?P&lt;slug&gt;[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug',template_name='blog/detail.html')), </pre> <p>The first bit: </p> <pre> (?P&lt;year&gt;\d{4})/(?P&lt;month&gt;[a-z]{3})/(?P&lt;day&gt;\w{1,2})/(?P&lt;slug&gt;[-\w]+)/$ </pre> <p>is the regular expression. In this case, the expression will match our permalink URLs and capture the year, month, day and slug of a particular entry. That information will then be passed to the next bit, <code>object_detail</code>, which is the name of the generic view that will pull out a single entry. </p><p>The full path to object_detail is actually <code>django.views.generic.date_based.object_detail</code>, but since we started our urlpattern definition by including the <code>django.views.generic.date_based</code> bit, there's no need to retype it every time, we just need to call the individual function, in this case object_detail. </p><p>After we grab the URL info and pass it to the <code>object_detail</code> function, we also pass along a dictionary of data. Most of the time you can just pass <code>info_dict</code> here. The <code>object_detail</code> generic view is something of an exception because it needs to pass along the slug_field variable as well. </p><p>I wanted to show some of the other data you can include as well, so I wrapped it in the <code>dict</code> your see above. In this case, we've passed <code>info_dict</code>, the slug_field and the name of the template Django should use to display the data. </p><p>The rest of the patterns just work their way back up the URL using ever-shortening regular expressions until we get to nothing, which would be the URL: http:/mysite.com/blog/. </p><p>We'll be using that URL as the location of our archive page. So, I guess you can think of this as a tumblelog rather than a traditional blog, which would probably have separate archive and home pages. Naturally, you can tweak the URL patterns to fit whatever design you'd like. </p><p>Django's generic views are incredibly powerful, and there are quite a few other options beyond just the date-based ones we've used here. There's also a super-handy built-in pagination system for some generic views. Be sure to read through the <a href="http://www.djangoproject.com/documentation/generic_views/" class="external text" title="http://www.djangoproject.com/documentation/generic_views/" rel="nofollow">documentation on the Django website</a> and also have a look at <a href="http://www.b-list.org/weblog/2006/nov/16/django-tips-get-most-out-generic-views/" class="external text" title="http://www.b-list.org/weblog/2006/nov/16/django-tips-get-most-out-generic-views/" rel="nofollow">James Bennett's excellent guide</a> to the various ways you can wrap and extend generic views. </p> <a name="Go_your_own_way"></a><h2> <span class="mw-headline">Go your own way </span></h2> <p>Django's generic views can save you quite a bit of time, but you will probably encounter some situations where they don't quite do exactly what you want. When that happens, it's time to write your own views. </p><p>Fear not, writing a custom view isn't hard. </p><p>We've pretty much covered our blogs URLs, from date-based archives to the detail pages, but what about the pages that display our entries by tag? </p><p>The tagging application actually includes some views that we could use. But for the sake of example, we'll write some custom views. Rather than overwriting what's already in the tagging application, we're just going to create a views file that lives on its own in our main project folder. </p><p>So, inside the "djangoblog" folder create a new file named <code>tag_views.py</code>. Remember, before we get started there, we need to tell Django about the <code>tag_views</code> file, so open up <code>djangoblog/urls.py</code> and add the last line below what's already there: </p> <pre> urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')), (r'^blog/', include('djangoblog.blog.urls')), (r'^tags/(?P&lt;slug&gt;[a-zA-Z0-9_.-]+)/$', 'djangoblog.tag_views.tag_detail'), ) </pre> <p>Here, we haven't included another <code>url.py</code> file like we did with the lines above. You could argue that we should, but just to show that you don't <i>have</i> to, we'll just point directly to our <code>tag_views.py</code> file which will soon have a function named <code>tag_detail</code>. Note that in the tag URL, we're capturing the slug paramater. We'll use that in just a minute to filter our blog entries by tag. </p><p>Now it's time to create the tag_detail function in the <code>tag_views.py</code> file. Open up that file in your text editor and paste in this code: </p><p><br /> </p> <pre> from django.views.generic.list_detail import object_detail from tagging.models import Tag,TaggedItem from blog.models import Entry def tag_detail(request, slug): unslug = slug.replace('-', ' ') tag = Tag.objects.get(name=unslug) qs = TaggedItem.objects.get_by_model(Entry, tag) return object_list(request, queryset=qs, extra_context={'tag':slug}, template_name='tags/detail.html') </pre> <p>What's going on here? Well, ignore the first line for now, we'll get to that in a minute. We import all the things we need -- in this case, the Tag and TaggedItem classes from django tagging and then our own Entry class. Then we define the <code>tag_detail</code> function, which is just an ordinary Python function that takes two parameters. The first is <code>request</code> which Django passes to all view functions, and the second is the slug paramater we defined in our URL pattern above. </p><p>Now because we're using a slug for our tag URLs, but strings of words with spaces for our tags, we need to get rid of the dashes and replace them with spaces (Remember, a slug can contain letters and dashes, but not spaces). </p><p>Because our slug parameter is just a string, we can use the normal Python string function to make that replacement. </p><p>In the next line, we look up our tag name in the database using the <code>objects</code> manager. Then we take advantage of django-tagging's built in function <code>get_by_model</code> to grab all the entries with the given tag. </p><p>The last step is to return something so that Django can load our template and display the entries to our visitor. To do that we're going to use another of Django's generic view functions -- <code>object_detail</code> from the generic list views. </p><p><code>Object_detail</code> requires a few things. First is the request object, then the queryset of results. After that, I've added an extra context variable named tag, so our template will be aware not just what entries to display, but also the current tag. Finally, the last item simply tells Django which template to use. </p><p>We haven't yet created a URL for <code><a href="http://mysite.com/blog/tags/" class="external free" title="http://mysite.com/blog/tags/" rel="nofollow">http://mysite.com/blog/tags/</a></code> to list all our tags, but that's a good stepping stone to practice writing a view function on your own. Here's a hint: you can use pretty much the same code we used for the <code>tag_detail</code> function, but you don't need to worry about the <code>slug</code> param. And instead of looking up TaggedItems, just grab all the tags (i.e. <code>qs = Tag.objects.all()</code>) </p> <a name="Conclusion"></a><h2> <span class="mw-headline"> Conclusion </span></h2> <p>And there you have it, a quick and dirty overview of how URL patterns and view work in Django. </p><p>If you point your browser to our development URL (<a href="http://127.0.0.1:8000/blog/" class="external free" title="http://127.0.0.1:8000/blog/" rel="nofollow">http://127.0.0.1:8000/blog/</a>) you should see a Django error page complaining that the template blog/list.html does not exist. This is true, since we haven't created it yet (visiting the tag pages will give you "list index out of range" error, also due to the missing templates). </p><p>But don't worry -- in the next lesson, we'll dive into Django's template system and explore all the cool things we can do, including how to write custom template filters and more. </p><p>See you then! </p><p><br /> </p> <div id="series"> <div class="series_hdr">From the Django Tutorial series</div> <table width="620" style="background:#e5f9ff;"> <tr> <td> <p><a href="/tutorial/Get_Started_With_Django" title="Tutorial:Get Started With Django"> Lesson 1: Get Started With Django</a><br /> <a href="/tutorial/Install_Django_and_Build_Your_First_App" title="Tutorial:Install Django and Build Your First App"> Lesson 2: Install Django and Build Your First App</a><br /> <strong class="selflink"> Lesson 3: Use URL Patterns and Views in Django</strong> </p> </td></tr></table> </div> ]]>http://www.webmonkey.com/reference/RMWTUG_Virtualization_ConferenceReference:RMWTUG Virtualization Conferencehttp://www.webmonkey.com/reference/RMWTUG_Virtualization_ConferenceWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Article"></a><h2> <span class="mw-headline"> Article </span></h2> <p>The Rocky Mountain Windows Technology User Group (<a href="http://www.rmwtug.org" class="external text" title="http://www.rmwtug.org" rel="nofollow">RMWTUG</a>) is hosting a Virtualization mini-conference in Denver on September 29, 2008. The RMWTUG will present Microsoft Hyper-V and VMware ESX from a neutral point of view. Features and functions that are common to these technologies will be demonstrated, and features and functions that are unique to one or the other will also be demonstrated. </p><p>This special mini-conference is open to the public and free of charge, but registration is required. We need to have an accurate attendance count for food and beverage, and to make sure we have enough seats. </p><p>Register <a href="http://rmwtug-2008-09-virtualization-webmonkey.eventbrite.com/" class="external text" title="http://rmwtug-2008-09-virtualization-webmonkey.eventbrite.com/" rel="nofollow">here</a> </p>]]>http://www.webmonkey.com/reference/Redsail_ChinaReference:Redsail Chinahttp://www.webmonkey.com/reference/Redsail_ChinaWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Article"></a><h2> <span class="mw-headline"> Article </span></h2> <p>&lt;meta http-equiv="Content-Type" content="text/html;charset=UTF-8"&gt; &lt;meta name="Author" content="Tonglei Li"&gt; &lt;meta name="Copyright" content="Tonglei Li, Redsail"&gt; &lt;meta name="description" content="Low cost, reliable Cutting Plotter, Vinyl cutter, Laser Cutting Machine, Laser Engraving Machine from China"&gt; &lt;meta name="keywords" content="laser cutting, laser cutter, laser engraver, laser engraving machine, vinyl cutter, vinyl cutters, laser cutting machine, cutting plotter, cutters, plotters, redsail"&gt; &lt;meta name="Rating" content="General"&gt; &lt;meta name="Robots" content="All"&gt; &lt;META name="robots" content="index, follow"&gt; &lt;META name="revisit" content="7 days"&gt; </p><p>&lt;style type="text/css"&gt; &lt;/style&gt; </p> <p><strong>VINYL CUTTER</strong> for Sign Making-Excellent Vinyl cutter from Redsail China</p> <p> Redsail, have developed <strong>vinyl cutter</strong> for the sign industry and with our own technology, we have the copyright of the firmware, we have 4 patents in China. By applying the latest software algorithm and the mechanism for precision machine manufacturing, which was obtained from a long experience in related industries. we are the leader in the China sign industry, we can provide the total solution in Sign making field. We believe we supply <strong>vinyl cutter</strong> with the unbeatable prices and excelent quality in the World. Most machines are in stock for immediate dispatch. If you require help or advice please call our sales team or visit our website. We believe Redsail vinyl cutter can help you to make success in the Sign market.</p> <p><br /> </p> <p>signmaking, sign making, summa, newstar, omega, vinyl cutters, vinyl cutter, summagraphics, graphtec, mimaki, mutoh, summa, desktop laser engraver, cocut, signtools, coreldraw, signmakers, signs, cutter, flexisign, laser engraver, laser engraving machine, vinyl, laser engravers, laser cutting machine, laser cutter, roland, camm1, ioline, houston, cadlink, amiable, signlab, flexisign, casmate, dongle, sandblast, rubber stamp, stamp, manufacturers, exporters, Suppliers, traders, companies, factories, redsail, easycut.</p> <table width="743" border="0" align="center"> <tr> <td><div align="center">&lt;img src="<img src="http://www.hflaser.com/image/machine/rs1360c.jpg" alt="rs1360c.jpg" />" /&gt;</div></td> <td><div align="center">&lt;img src="<img src="http://www.hflaser.com/image/machine/5070c.jpg" alt="5070c.jpg" />" /&gt;</div></td> </tr> </table> <p>&nbsp;</p> <p>&nbsp;</p> <p><br /> </p> <p> <span class="STYLE1"> <span class="STYLE1">&lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;low cost laser engraver&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser engraver&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser engraving&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser cutting machine&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser engraving machine&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;cutting plotter&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser engravers&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser cutters&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;cutting plotter blade&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;vinyl cutter plotters&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;used vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;roland vinyl cutters&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;vinyl cutter software&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;vinyl cutter reviews&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;vinyl cutting plotter&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;best laser cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;best laser engravers&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;low cost laser engraver&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser engraver&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser engraving&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser cutting machine&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser engraving machine&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;cutting plotter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser engravers&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser cutters&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;cutting plotter blade&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;vinyl cutter plotters&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;used vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;roland vinyl cutters&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;vinyl cutter software&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;vinyl cutter reviews&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;vinyl cutting plotter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;best laser cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/default.htm" class="external free" title="http://easycut.sulekha.com/default.htm" rel="nofollow">http://easycut.sulekha.com/default.htm</a>"&gt;best laser engravers&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;low cost laser engraver&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser engraver&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser engraving&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser cutting machine&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser engraving machine&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;cutting plotter&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser cutter&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser engravers&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser cutters&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;cutting plotter blade&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;vinyl cutter plotters&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;used vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;roland vinyl cutters&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;vinyl cutter software&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;vinyl cutter reviews&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;vinyl cutting plotter&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;best laser cutter&lt;/a&gt; &lt;a href="<a href="http://cuttingplotter.trustpass.alibaba.com/productlist.html" class="external free" title="http://cuttingplotter.trustpass.alibaba.com/productlist.html" rel="nofollow">http://cuttingplotter.trustpass.alibaba.com/productlist.html</a>"&gt;best laser engravers&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;low cost laser engraver&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser engraver&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser engraving&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser cutting machine&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser engraving machine&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;cutting plotter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser engravers&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser cutters&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;cutting plotter blade&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;vinyl cutter plotters&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;used vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;roland vinyl cutters&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;vinyl cutter software&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;vinyl cutter reviews&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;vinyl cutting plotter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;best laser cutter&lt;/a&gt; &lt;a href="<a href="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" class="external free" title="http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm" rel="nofollow">http://easycut.sulekha.com/blog/post/2005/10/low-cost-reliable-vinyl-cutters-laser-engraver-from.htm</a> "&gt;best laser engravers&lt;/a&gt; &lt;a href="<a href="http://easycut.blogspot.com" class="external free" title="http://easycut.blogspot.com" rel="nofollow">http://easycut.blogspot.com</a>"&gt;low cost laser engraver&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/cp.html" class="external free" title="http://www.hflaser.com/cp.html" rel="nofollow">http://www.hflaser.com/cp.html</a>"&gt;vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mle.html" class="external free" title="http://www.hflaser.com/mle.html" rel="nofollow">http://www.hflaser.com/mle.html</a>"&gt;laser engraver&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mle.html" class="external free" title="http://www.hflaser.com/mle.html" rel="nofollow">http://www.hflaser.com/mle.html</a>"&gt;laser engraving&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/lc.html" class="external free" title="http://www.hflaser.com/lc.html" rel="nofollow">http://www.hflaser.com/lc.html</a>"&gt;laser cutting machine&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mle.html" class="external free" title="http://www.hflaser.com/mle.html" rel="nofollow">http://www.hflaser.com/mle.html</a>"&gt;laser engraving machine&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/lc.html" class="external free" title="http://www.hflaser.com/lc.html" rel="nofollow">http://www.hflaser.com/lc.html</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mcp.html" class="external free" title="http://www.hflaser.com/mcp.html" rel="nofollow">http://www.hflaser.com/mcp.html</a>"&gt;cutting plotter&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/lc.html" class="external free" title="http://www.hflaser.com/lc.html" rel="nofollow">http://www.hflaser.com/lc.html</a>"&gt;laser cutter&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mle.html" class="external free" title="http://www.hflaser.com/mle.html" rel="nofollow">http://www.hflaser.com/mle.html</a>"&gt;laser engravers&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/lc.html" class="external free" title="http://www.hflaser.com/lc.html" rel="nofollow">http://www.hflaser.com/lc.html</a>"&gt;laser cutters&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/lc.html" class="external free" title="http://www.hflaser.com/lc.html" rel="nofollow">http://www.hflaser.com/lc.html</a>"&gt;laser cutting&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/cp.html" class="external free" title="http://www.hflaser.com/cp.html" rel="nofollow">http://www.hflaser.com/cp.html</a>"&gt;cutting plotter blade&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mcp.html" class="external free" title="http://www.hflaser.com/mcp.html" rel="nofollow">http://www.hflaser.com/mcp.html</a>"&gt;vinyl cutter plotters&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/cp.html" class="external free" title="http://www.hflaser.com/cp.html" rel="nofollow">http://www.hflaser.com/cp.html</a>"&gt;used vinyl cutter&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mcp.html" class="external free" title="http://www.hflaser.com/mcp.html" rel="nofollow">http://www.hflaser.com/mcp.html</a>"&gt;roland vinyl cutters&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com" class="external free" title="http://www.hflaser.com" rel="nofollow">http://www.hflaser.com</a>"&gt;vinyl cutter software&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com" class="external free" title="http://www.hflaser.com" rel="nofollow">http://www.hflaser.com</a>"&gt;vinyl cutter reviews&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/cp.html" class="external free" title="http://www.hflaser.com/cp.html" rel="nofollow">http://www.hflaser.com/cp.html</a>"&gt;vinyl cutting plotter&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/cp.html" class="external free" title="http://www.hflaser.com/cp.html" rel="nofollow">http://www.hflaser.com/cp.html</a>"&gt;best laser cutter&lt;/a&gt; &lt;a href="<a href="http://www.hflaser.com/mle.html" class="external free" title="http://www.hflaser.com/mle.html" rel="nofollow">http://www.hflaser.com/mle.html</a>"&gt;best laser engravers&lt;/a&gt;</span></span> </p> ]]>http://www.webmonkey.com/codelibrary/Buying_viagraCodeLibrary:Buying viagrahttp://www.webmonkey.com/codelibrary/Buying_viagraWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="looking_for_a_quality_product_without_the_adverse_effect_of_lower_price.3F_VIAGRA_do_everything_softly.2C_and_at_the_right_moment.vash_penis_will_be_hard_as_steel_all_night._VIAGRA_with_your_partner_will_always_be_just_happy"></a><h2> <span class="mw-headline"> looking for a quality product without the adverse effect of lower price? <a href="http://pill-online.stimulhosting.com/buy_brand_viagra_en-us.html" class="external text" title="http://pill-online.stimulhosting.com/buy_brand_viagra_en-us.html" rel="nofollow">VIAGRA</a> do everything softly, and at the right moment.vash penis will be hard as steel all night. <a href="http://viagra.gpills.com/?aff_id=8047&amp;tr=9001" class="external text" title="http://viagra.gpills.com/?aff_id=8047&amp;tr=9001" rel="nofollow">VIAGRA</a> with your partner will always be just happy </span></h2> <p>Online pharmacies are waiting for your order. No Prescription-No Fees. Fast Customer Support! 100% Privacy, 100% Guarantee!!! NO prescription needed, WORLDWIDE shipping. Get free advice and all necessary information on viagra. <a href="http://viagra.gpills.com/?aff_id=8047&amp;tr=9001" class="external text" title="http://viagra.gpills.com/?aff_id=8047&amp;tr=9001" rel="nofollow">Click HERE</a> to order Cheap viagra Online! <a href="/special/image/Buying_viagra.jpg" class="image" title="Image:Buying_viagra.jpg"><img alt="Image:Buying_viagra.jpg" src="/mediawiki/images/Buying_viagra.jpg" width="530" height="480" border="0" /></a> </p><p><br /> <a href="http://pill-online.stimulhosting.com" class="external text" title="http://pill-online.stimulhosting.com" rel="nofollow">INDIAN DRUGS</a> </p>]]>http://www.webmonkey.com/tutorial/Mash_up_Data_Sources_to_Find_iPhonesTutorial:Mash up Data Sources to Find iPhoneshttp://www.webmonkey.com/tutorial/Mash_up_Data_Sources_to_Find_iPhonesWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<p>When the iPhone 3G was released, it was a difficult item to find. To help communicate about inventory, Apple created an availability tool which listed all the stores in a particular state and whether each had stock of the three models. </p><p>We at Webmonkey thought that was great, but that extreme Apple fanboys would want to know more. The truly committed might even drive across state lines to get their hands on just the right color iPhone. We knew we needed to be able to check inventory not just by state, but by proximity. </p><p>This article details how we made the <a href="http://duvinci.com/projects/iphone-inventory/" class="external text" title="http://duvinci.com/projects/iphone-inventory/" rel="nofollow">iPhone locator</a> from an Apple feed, a Google Map and a little Web 2.0 baling wire. </p><p><a href="http://www.duvinci.com/projects/iphone-inventory/iphone-inventory-source.zip" class="external text" title="http://www.duvinci.com/projects/iphone-inventory/iphone-inventory-source.zip" rel="nofollow">Download the source files</a> and follow along below. </p> <table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1"><a href="#What_You_Need_to_Know"><span class="tocnumber">1</span> <span class="toctext">What You Need to Know</span></a></li> <li class="toclevel-1"><a href="#Apple.27s_JSON_Feed"><span class="tocnumber">2</span> <span class="toctext">Apple's JSON Feed</span></a></li> <li class="toclevel-1"><a href="#Apple_Store_Locations"><span class="tocnumber">3</span> <span class="toctext">Apple Store Locations</span></a> <ul> <li class="toclevel-2"><a href="#Find_the_List_of_Locations"><span class="tocnumber">3.1</span> <span class="toctext">Find the List of Locations</span></a></li> <li class="toclevel-2"><a href="#Use_Microformats_to_Extract_Address"><span class="tocnumber">3.2</span> <span class="toctext">Use Microformats to Extract Address</span></a></li> <li class="toclevel-2"><a href="#Geocode_Each_Address"><span class="tocnumber">3.3</span> <span class="toctext">Geocode Each Address</span></a></li> </ul> </li> <li class="toclevel-1"><a href="#Incorporate_Google_Ajax_Map_With_Search"><span class="tocnumber">4</span> <span class="toctext">Incorporate Google Ajax Map With Search</span></a></li> <li class="toclevel-1"><a href="#Calculate_Proximity"><span class="tocnumber">5</span> <span class="toctext">Calculate Proximity</span></a></li> <li class="toclevel-1"><a href="#Check_Stock"><span class="tocnumber">6</span> <span class="toctext">Check Stock</span></a></li> <li class="toclevel-1"><a href="#Go_Forth_And_Mash"><span class="tocnumber">7</span> <span class="toctext">Go Forth And Mash</span></a></li> </ul> </td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script> <a name="What_You_Need_to_Know"></a><h2> <span class="mw-headline">What You Need to Know</span></h2> <p>This tutorial puts together a whole bunch of different web technologies. We can't go in depth into each of them, but we'll do our best to point to other resources to fill in the gaps. </p><p>That qualified out of the way, you will get more out of this tutorial if you have: </p> <ul><li> Knowledge of JavaScript and HTML </li><li> Familiarity with JSON and/or JavaScript objects </li><li> Willingness to dig through someone's code </li></ul> <p><br /> </p> <a name="Apple.27s_JSON_Feed"></a><h2> <span class="mw-headline">Apple's JSON Feed</span></h2> <p>The crux of this mashup is the data available via <a href="http://www.apple.com/retail/iphone/feeds/3g_us_inv.json" class="external text" title="http://www.apple.com/retail/iphone/feeds/3g_us_inv.json" rel="nofollow">Apple's JSON feed</a>. An example copy of the original feed is available in the source as <b>3g_us_inv.json</b>. </p><p>JSON is a format for describing data that is easily converted to most programming languages, especially JavaScript. In fact, the J in JSON stands for JavaScript. The code from a JSON file can look like gobbledygook, but it's highly organized gobbledygook. </p><p>Here's a shortened version of Apple's feed: </p> <pre> {&quot;date&quot;:&quot;Wed, 16 Jul 2008 00:00:00 -0700&quot;,&quot;locations&quot;:{ &quot;AL&quot;:[{&quot;name&quot;:&quot;The Summit&quot;,&quot;storeid&quot;:&quot;R225&quot;,&quot;city&quot;:&quot;Birmingham&quot;,&quot;url&quot;:&quot;\/retail\/thesummit\/&quot;,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:true,&quot;white16&quot;:false}},{&quot;name&quot;:&quot;Bridge Street&quot;,&quot;storeid&quot;:&quot;R266&quot;,&quot;city&quot;:&quot;Huntsville&quot;,&quot;url&quot;:&quot;\/retail\/bridgestreet\/&quot;,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:false,&quot;white16&quot;:false}}], &quot;AZ&quot;:[{&quot;name&quot;:&quot;Chandler Fashion Center&quot;,&quot;storeid&quot;:&quot;R026&quot;,&quot;city&quot;:&quot;Chandler&quot;,&quot;url&quot;:&quot;\/retail\/chandler\/&quot;,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:true,&quot;white16&quot;:false}},{&quot;name&quot;:&quot;Biltmore&quot;,&quot;storeid&quot;:&quot;R031&quot;,&quot;city&quot;:&quot;Phoenix&quot;,&quot;url&quot;:&quot;\/retail\/biltmore\/&quot;,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:true,&quot;white16&quot;:true}},{&quot;name&quot;:&quot;La Encantada&quot;,&quot;storeid&quot;:&quot;R086&quot;,&quot;city&quot;:&quot;Tucson&quot;,&quot;url&quot;:&quot;\/retail\/laencantada\/&quot;,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:false,&quot;white16&quot;:false}},{&quot;name&quot;:&quot;SanTan Village&quot;,&quot;storeid&quot;:&quot;R267&quot;,&quot;city&quot;:&quot;Gilbert&quot;,&quot;url&quot;:&quot;\/retail\/santanvillage\/&quot;,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:false,&quot;white16&quot;:false}}], ... ... }} </pre> <p>In <a href="http://www.webmonkey.com/tutorial/Get_Started_With_JSON" class="external text" title="http://www.webmonkey.com/tutorial/Get_Started_With_JSON" rel="nofollow">Get Started With JSON</a> we dive deep into how to structure JSON files, but here's a quick run-down of the data in Apple's feed: </p> <ul><li> The date the feed was published </li><li> A locations object which contains an array of states, each containing an array holding an object for every store in that state. </li><li> Within each individual state object, we have the name of the store, its ID, the URL to the store off the Apple homepage, and the availability data for the three models of iPhone. </li></ul> <p>Since JavaScript works so well with JSON, it just takes one line to convert JSON text into a JavaScript object. Assuming the entire text feed is stored in a variable called <b>jsontext</b>, here's the magic line of code: </p> <pre> jsonobj = eval(&quot;(&quot; + jsontext + &quot;)&quot;); </pre> <p>Now you can access individual pieces of data within the feed. For example, here's how you retrieve the name of the first Arizona store: </p> <pre> jsonobj[&quot;locations&quot;][&quot;AZ&quot;][0][&quot;name&quot;] </pre> <p>The result, as those who are able to read through the JSON code above will see, should be <b>Chandler Fashion Center</b>. Success! We are able to get at the availability data in Apple's feed. Now we're going to have to put this JSON feed on the back burner while we figure out a few more pieces to the puzzle. </p><p><br /> </p> <a name="Apple_Store_Locations"></a><h2> <span class="mw-headline">Apple Store Locations</span></h2> <p>One important piece of information missing from Apple's feed is the location of each Apple Store. We know the city, but not the address, and certainly not the geo-coordinates (latitude and longitude) that will be necessary to compute the closest store. </p> <a name="Find_the_List_of_Locations"></a><h3> <span class="mw-headline">Find the List of Locations</span></h3> <p>Luckily, we already have a list of locations. Even better, we have the link to each location's homepage, where the address is listed. From the JSON text, we found each URL, visited the site, and extracted the address. </p><p>This section will not go into detail of how we coded scripts to harvest the Apple Store geo-coordinates, but we will look at the technologies used. </p> <a name="Use_Microformats_to_Extract_Address"></a><h3> <span class="mw-headline">Use Microformats to Extract Address</span></h3> <p>Apple made it easier to retrieve addresses on their store websites by using a Microformat called <a href="http://www.webmonkey.com/tutorial/Make_Contact_With_hCards" class="external text" title="http://www.webmonkey.com/tutorial/Make_Contact_With_hCards" rel="nofollow">hCard</a>. Microformats allow content producers to add additional tags to their HTML to signify special content. In the case of hCard, the tags explain the individual pieces of contact information. </p><p>On the website of my local <a href="http://www.apple.com/retail/pioneerplace/" class="external text" title="http://www.apple.com/retail/pioneerplace/" rel="nofollow">Portland Apple Store</a>, for example, here's what the code of the address section looks like: </p> <pre> &lt;div class=&quot;hcard&quot;&gt; &lt;strong&gt;Address:&lt;/strong&gt; &lt;p&gt; &lt;span class=&quot;fn org&quot;&gt;Apple Store, Pioneer Place&lt;/span&gt; &lt;span class=&quot;adr&quot;&gt; &lt;span class=&quot;street-address&quot;&gt;700 Southwest 5th Avenue, Suite #1035&lt;/span&gt; &lt;span class=&quot;locality&quot;&gt;Portland&lt;/span&gt;, &lt;span class=&quot;region&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;postal-code&quot;&gt;97204&lt;/span&gt; &lt;/span&gt; &lt;span class=&quot;tel&quot;&gt;(503) 222-3002&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; </pre> <a name="Geocode_Each_Address"></a><h3> <span class="mw-headline">Geocode Each Address</span></h3> <p>After retrieving an address for each store, we had to convert it to geo-coordinates. To do this we used <a href="http://www.webmonkey.com/tutorial/Get_Started_With_Google_Geocoding_via_HTTP" class="external text" title="http://www.webmonkey.com/tutorial/Get_Started_With_Google_Geocoding_via_HTTP" rel="nofollow">Google's HTTP Geocoder</a>. The CSV output option made it very easy to only get the pieces of data we wanted: the latitude and longitude points. </p><p>Unfortunately, several addresses were unable to be geocoded. Since many Apple Stores are in malls, they often have suite numbers. These caused problems almost every time they were present. In some cases, like my local store, the latitude would be 20 degrees off! We couldn't have that throwing off searches for nearby iPhones. </p><p>We decided to give up a little granularity in exchange for reliability. Instead of full store addresses, we used Zip codes. </p><p>Like in the previous section, we won't go into detail about geocoding all 188 Apple Stores. You can find out more about geocoding in our <a href="http://www.webmonkey.com/tutorial/Get_Started_With_Google_Geocoding_via_HTTP" class="external text" title="http://www.webmonkey.com/tutorial/Get_Started_With_Google_Geocoding_via_HTTP" rel="nofollow">Google Geocoder tutorial</a>. You can also find the individual store coordinates in the file <b>stores-geocoded.txt</b> in the source files. </p><p>As a final step with geocoding, I needed to add the latitude and longitude coordinates to the JSON file. I inserted them after the URL, but before the availability information. For example, here is the Chandler Fashion Center portion of the JSON file, this time with geocode information: </p> <pre> {&quot;name&quot;:&quot;Chandler Fashion Center&quot;,&quot;storeid&quot;:&quot;R026&quot;,&quot;city&quot;:&quot;Chandler&quot;,&quot;url&quot;:&quot;\/retail\/chandler\/&quot;, &quot;lat&quot;: 33.266332, &quot;long&quot;: -111.943009,&quot;available&quot;:{&quot;black8&quot;:false,&quot;black16&quot;:false,&quot;white16&quot;:false}} </pre> <p><br /> </p> <a name="Incorporate_Google_Ajax_Map_With_Search"></a><h2> <span class="mw-headline">Incorporate Google Ajax Map With Search</span></h2> <p>Now that our data sources are in order, it's time for the fun stuff. We started with <a href="http://code.google.com/apis/maps/documentation/examples/geocoding-simple.html" class="external text" title="http://code.google.com/apis/maps/documentation/examples/geocoding-simple.html" rel="nofollow">Google's simple Ajax geocoding example</a>. It has a text box for address input, a feature we wanted for our tool, too. </p><p>In Google's version, when the user input is geocoded, it is then placed on the map. We wanted to step into the middle of that process. Instead of mapping the point, we wanted to compare the point to all the coordinates of Apple Stores. </p><p>These two lines in the searchStores function start the process: </p> <pre> currentPoint = point; getStores(); </pre> <p>The first line stores the user's point globally. The second line is a function that grabs the JSON text and sends it off for perusal. </p><p>We chose to grab the text with Ajax using the <a href="http://www.prototypejs.org/" class="external text" title="http://www.prototypejs.org/" rel="nofollow">Prototype JavaScript framework</a>. We could have hard coded the JSON in JavaScript, but using an external file makes it easier to update. </p><p><br /> </p> <a name="Calculate_Proximity"></a><h2> <span class="mw-headline">Calculate Proximity</span></h2> <p>Finally, we made it to the part where we find the closest Apple Store. When the <b>findClosest</b> function is called, we already have the user's location, as well as the JSON text for every store, including its coordinates. </p><p>To determine proximity, we decided to iterate through each store and calculate its distance from the user's point. At each step, if we found a store closer than the previous closest it gets stored as the current winner. When we've considered every store, the current winner is the closest of all stores. </p><p>Calculating the distance between two pairs of coordinates requires a little math. It's essentially based on the Pythagorean theorem, which makes it more complicated than it is. We want to find the hypotenuse of a right triangle. The hypotenuse represents the distance between the two points, as the crow flies. </p><p>Here is a function to calculate the proximity of two coordinate pairs: </p> <pre> function calculateDistance(pt1, pt2) { var xdist = 69.1 * (pt2.x - pt1.x); var ydist = 53.0 * (pt2.y - pt1.y); var dist = Math.sqrt(xdist*xdist+ydist*ydist); return dist; } </pre> <p><br /> </p> <a name="Check_Stock"></a><h2> <span class="mw-headline">Check Stock</span></h2> <p>You may be feeling pretty good at this point. We have located the closest Apple Store! Unfortunately, we have not checked stock at any stores, which was the point of this tool. </p><p>Before declaring a current winner for closest store, we must check that the store has iPhones. Here we employed an if statement and only declare a current winner if the statement is true. </p><p>Assuming <b>thisstore</b> contains the JSON object for the current store we are checking, here is the if statement: </p> <pre> if (thisstore.available[&quot;black16&quot;] || thisstore.available[&quot;black8&quot;] || thisstore.available[&quot;white16&quot;]) </pre> <p>This says that if a black 16 GB iPhone is available, or a black 8 GB is available, or a white 16 GB is available, then the store has stock. In other words, if the store has at least one model in stock, count it. </p><p>Of course, in our tool, we offer the option to search for a specific model of iPhone. That required a little bit of logic play. Essentially, if the user wants to search for only one model, that is all we check. Otherwise, we use the above statement to check for any model. </p><p><br /> </p> <a name="Go_Forth_And_Mash"></a><h2> <span class="mw-headline">Go Forth And Mash</span></h2> <p>We don't expect your will create mashups with iPhone inventory. By the time you're reading this, the iPhone 3G is probably obsolete. Through this process, we hope you have gained some ideas about how to piece together the many different web technologies to create something altogether new. </p><p>If you have questions, check out the <a href="http://www.webmonkey.com/tutorial/Mash_up_Data_Sources_to_Find_iPhones/discussion" class="external text" title="http://www.webmonkey.com/tutorial/Mash_up_Data_Sources_to_Find_iPhones/discussion" rel="nofollow">discussion tab</a>. If you have advice to add, please consider editing this article. </p>]]>http://www.webmonkey.com/reference/M_ArshadReference:M Arshadhttp://www.webmonkey.com/reference/M_ArshadWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Article"></a><h2> <span class="mw-headline"> Article </span></h2> <a name="COSMOS_LINKS"></a><h2> <span class="mw-headline"> COSMOS LINKS </span></h2> <p><a href="http://www.marshad.com" class="external text" title="http://www.marshad.com" rel="nofollow">link title</a> <a href="/special/image/upload/destination/Arshad" class="new" title="Image:Arshad">Image:Arshad</a> </p>]]>http://www.webmonkey.com/tutorial/Complete_a_successful_business_card_transactionTutorial:Complete a successful business card transactionhttp://www.webmonkey.com/tutorial/Complete_a_successful_business_card_transactionWed, 23 Jul 2008 17:05:08 -0400 (EDT)<![CDATA[<a name="Introduction"></a><h2> <span class="mw-headline"> Introduction </span></h2> <p>The use of a business card is essential in modern transactions and networking and yet many small businesses and self employed professionals still don't have this essential tool or don't know how to use it. <a href="http://www.kqzyfj.com/click-3082959-10508756" class="external text" title="http://www.kqzyfj.com/click-3082959-10508756" rel="nofollow">A 3.5"x2" piece of stock paper </a> can be the single most powerful marketing tool in your arsenal. </p> <a name="What_you.27ll_need"></a><h2> <span class="mw-headline"> What you'll need </span></h2> <p>The card can be given to just about anyone you encounter and once you pass it along, the recipient can obviously either keep it, use it, or not. They can refer to it, pass it to someone else, or worse case: trash it. </p><p>There is more to passing along your card to everyone, here are a few tips: </p><p>1. Build rapport. Be friendly and memorable. Someone who likes you will be more inclined to using your card. Don't just think business, think "I'm making a new friend". If you think this, it will show and it works! </p><p>2. Write something on the card. If you add an extra content such as a second contact person or an opportunity for a discount, it increases the value of the card by up to 82% (based on sample survey) </p><p>3. Ask for a card in return. If you receive a card in return, look at it. Ask a question about the title or what they do. This way, it creates a memorable experience and lets the other person know you care and are interested in them. </p><p>4. Take your time in this process. Some people actually get nervous about exchanging business cards, Don't! Treat this like a dance. If you go slowly, you lead and show you are in control. </p><p>5. Never give out a bent or dirty card! </p>]]>http://www.webmonkey.com/tutorial/Creat