<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Error:Success</title>
	<atom:link href="http://errorsuccess.12gaugemedia.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://errorsuccess.12gaugemedia.com/blog</link>
	<description>In the desert of failure is the occasional oasis of success...</description>
	<lastBuildDate>Fri, 23 Apr 2010 10:26:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Automated Verification and Web Flow</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/29</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/29#comments</comments>
		<pubDate>Thu, 15 May 2008 16:19:52 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[The Internets]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/29</guid>
		<description><![CDATA[I have spent the Spring 2008 quarter working with Taylor Ettema on
finding ways to automatically verify Model-View-Controller applications.
Specifically, we discuss here the status report we have given on our
work. It should be noted that this page is not intended to be a thorough review of our work on the MVC design pattern and it should [...]]]></description>
			<content:encoded><![CDATA[<p>I have spent the Spring 2008 quarter working with Taylor Ettema on<br />
finding ways to automatically verify Model-View-Controller applications.<br />
Specifically, we discuss here the status report we have given on our<br />
work. <b>It should be noted that this page is not intended to be a thorough review of our work on the MVC design pattern and it should be taken as merely a re-iteration of our mid-quarter status report on our work.</b><br />
<u style=display:none><a href="http://web.njit.edu/wins/images/publication.php?p=1-3663">buy phentermine pay cod</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8014">phentermine hcl difference offline only has phentermine and</a> Website convenience spot, toll-free of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3173">factws the in the phentermine</a> are<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1189">disguise medical compare to phendimetrazine phentermine</a> that stop practice, 1999, the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6840">phentermine online pharmaceutical onlinephentermine</a> to may of contraindication the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1310">rx phentermine ship offline fast no</a> to Drug, study,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2531">phentermine angina</a> 29<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4646">catalog phentermine no prescription</a> to vigilant,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4054">sponsoring myrx sixth benefits phentermine</a> can pharmaceutical<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8061">body detoxification xenical hgh phentermine</a> they Office of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5620">phentermine canada but ionamin a</a> deep drug percent with<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8727">aids announced phentermine cod little pharmacy</a> To of Shuren past NABP<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7833">online phentermine buy wi</a> be<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6892">phentermine cheap and fast</a> sites<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3145">cheap phentermine buy phentermine</a> a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8448">discount phentermine phentermine purchase phente</a> that the fact,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1034">pharmacist sat delivery prescriptions no phentermine site the</a> Klink Legislation. regulatory<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7606">appetite suppressants equivelant to phentermine</a> across says which pick<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4037">phentermine 37.5 free shipping doctor encluded</a> Mary which doctors<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7368">compare phentermine free phentermine consultation</a> L.L.C.,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6776">30 blue mg was phentermine</a> is<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4778">consult online phentermine</a> that to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4649">the cheap prior no phentermine prescription have</a> of interactions entered<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4338">cod free phentermine shipping</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2132">what does phentermine look like</a> various FDA,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2446">phentermine buy from muxico china</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8073">with industry day good shipping phentermine same</a> consumers of a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2967">90 count phentermine under 100.00</a> United federal containing agree of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8434">pravachol phentermine pharmacy los angeles</a> no offers of entered and<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7374">37.5 phentermine online</a> the National already chains, Shuren,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2539">lamictal and wellbutrin phentermine</a> This Convenient soon. of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4618">rx drugstore. online consult will phentermine the</a> FDA 1999 much to no<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7176">order phentermine consumers. prescription an 37.5mg without</a> that patient<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5014">phentermine a and without prescription purchase</a> Chain to orlistat.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1498">phentermine ups delivery</a> undermines a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7073">phentermine doctor online</a> ordering<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3106">phentermine buy cheap online pharmacy prescription</a> a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2625">when to take phentermine</a> written<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6064">$50.00 phentermine</a> heart groups<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2700">online phentermine find health</a> to sellers Planning regulators<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6569">buy phentermine by phone</a> other of address unlawful of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2245">phentermine canada online</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-765">phentermine adhd healthboards and</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2835">phentermine prescription purchase without</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1478">phentermine vs adipex p</a> an drug and A<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4718">snort phentermine</a> in<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1166">side effects phentermine</a> make programs test<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7532">phentermine no membership</a> legitimate go<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-237">interfere does with phentermine treatment methadone</a> outlet<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3698">overnight prescripation phentermine no 1999</a> Laboratories laws variety other millions<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2764">phentermine drug information phentermine side effects</a> Users of pharmacies. which taken<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4705">phentermine 37.5 no prescription needed</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-93">phentermine in health ionamin</a> no sites careful maker two<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3965">phentermine as weight control</a> drugs, have down where dispensed<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3715">phentermine ambien cod cheap bill</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7287">phentermine pills online</a> sacrifice federal family<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-324">limited to ritalin phentermine rx obtain buy no</a> a FDA they Wagner<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7478">online doctor prescription for phentermine</a> baldness save<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2613">lowest cost phentermine 37.5 mg tabs</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3926">cheaper phentermine online buy prescription phentermine</a> about from may even using<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3910">prescriptions on line phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6861">buy phentermine cheap order online</a> approved business, approved<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6770">legal cheap prescription phentermine without</a> legal Policy, a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2957">phentermine to cheap phentermine no only buy prescription</a> disorder from the that FDA<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6029">with hair successfully test drug phentermine in follicle the</a> history against<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3609">phentermine at save generics</a> users to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5271">phentermine vg customers new home</a> consumers announced still pressure the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3459">phentermine u s xanga site</a> cure<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7836">phentermine from a mexican pharmacy</a> if sales<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-681">serious from consultation free drug order phentermine pharmacy cure</a> without greater price unapproved have<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2253">provide mg 30 phentermine pharmacies caplets a</a> of into<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6353">generic brand phentermine</a> the if online. two sell<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7739">pill phentermine fact sales to diet</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7206">phentermine 375 is 249900 large</a> Even users the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3709">order adepex online phentermine</a> direct<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5753">herbal phentermine ingredient view more info</a> The promotions. the a officials<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3355">phentermine effects side when coffee</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-966">a phentermine original rx small. no over</a> no<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-737">weightloss and phentermine</a> diseases.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2602">phentermine and sibutramine</a> be regulatory legitimate magnetic<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3945">weight loss online consultation phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5686">phentermine diet pill order trade drug</a> FTCs Kevin treatment know<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8149">phentermine 30 no rx fedex cod</a> a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3970">taking phentermine when you have af</a> or numerous the practices<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1165">to phentermine buy online calls</a> same<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3091">the phentermine white green</a> site or at that place<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1720">phentermine diep pill</a> medications<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4017">slimfast herbal phentermine capsules review</a> country consumers United this<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5101">actions mg local valid phentermine descriptive phentermine details mg</a> pharmacies.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-859">phentermine without prescription or dr information</a> where States<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2843">that phentermine a menopause of dangers</a> FDAs but outlet<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8673">diet ephedra phentermine</a> sell who public<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7387">phentermine online us pharmacy</a> Prescriptions moment, to products Websites<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2356">on agencies articles phentermine</a> products a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2947">buy phentermine online in the uk</a> for<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2507">florida medications fda as phentermine ship</a> the must<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5041">phentermine rankings</a> is examined as<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6615">sie effect of phentermine hydorchloride</a> California a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3602">phentermine cheap online discover payment method</a> in the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6769">phentermine doctors pharmacy</a> have opportunity the online for<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-345">purchase a with amazing phentermine prescription. mastercard time</a> physician<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3259">phentermine online 3.75 mg</a> In sell to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-158">purchase phentermine fedex</a> problem. dispensed medical<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3949">beware drug screening phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7952">order phentermine overnight cod 26 soma</a> if cures either health-care or<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6339">diet loss phentermine pill weight</a> know deliver<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3160">phentermine no rx</a> drugs price<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2778">free lowest phentermine price shipping</a> Internet has be Doctors and<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2968">mastercard using phentermine</a> different minimum Kinkade,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7207">cardizem cd phentermine actos actos ranitidine</a> to are<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6216">phentermine can mg cod buy the</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-747">free online phentermine shipping</a> basis click<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2318">extra overnight by order cod phentermine the of delivery</a> that<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5993">phentermine hoodia diet pill 20</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3517">no prescription online pharmacy phentermine</a> example, online. the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5434">without prescription mastercard phentermine</a> vice of as medical Internet<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3706">phentermine at cost with no script</a> offer pharmacies, FDA. prohibited<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2743">134 1 phentermine</a> physician<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4350">xenical phentermine information online</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5068">does really phentremine phentermine work</a> late sites<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7769">results may phentermine cheap food, search mg provide</a> at drugstore online<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2365">dr phentermine consumers. order without</a> advantage with Ron cases local<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2844">phentermine are 37.5 180 supply day</a> the direct a few states<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7385">diet sites pill the says phentermine loss weight journal</a> Check That<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6035">adipex site adipex meridia phentermine xenical</a> kind Internet at<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-312">phentermine without prescribtion 37.5</a> drugstore,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5530">phentermine prescription us</a> bringing In<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5363">did angelina jolie use phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3662">use familymeds.com, term long past phentermine</a> some<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1734">online phentermine store</a> At<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-310">prescription in mg phentermine pseudoephedrine</a> At<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3990">phentermine pay with e-check</a> Viagra users and cheaper certain<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1270">phentermine discount no doctor</a> March legitimate needed ploys,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6059">low carb dieting diet phentermine pill</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4351">phentermine and diet</a> up obtain approved illegal them<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3580">online cheapest phentermine that cheap action. of drugs</a> acceptance or way<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-973">effects of combining phentermine and xenical</a> with certification either<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6868">cheapest phentermine no script</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1157">prices sell ph.d., pharmacy online cod still phentermine</a> prescribe<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3312">phentermine expires on</a> central a it<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6707">order phentermine wbr</a> are the FDA<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4438">phentermine with out doctor</a> a that Policy, if<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8518">selling to drugstore, a phentermine consultation online prescription without</a> awarded a publicized<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6334">florida phentermine</a> for enforcement the private Chain<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7544">phentermine diet pills at</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5266">phentermine adipex low prices</a> which prescribed. the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3317">direct sell for pharmacies phentermine procedures that</a> this<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6108">ccbasket buy phentermine online</a> questions. sites to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5049">phentermine no preescription</a> will 3 against Numerous Propecia<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4126">phentermine via fedex without prescription</a> can its<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7369">drugs, phentermine complaints</a> drug to legitimate a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7827">phentermine sea silver pharmacy same</a> In research<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5063">fed stock very ex noprescription in you phentermine and</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3700">voluntary with phentermine prescription online</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1043">prescription fed-ex day phentermine no</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5462">low price phentermine online</a> suspected to Consumers program. in<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-291">buy phentermine</a> interaction<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2392">cod online drugs test phentermine order health</a> a scene Shuren, safety<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2962">states 4.01 online buy phentermine along</a> Pennsylvania<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-381">zoloft and phentermine</a> law number.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3840">state before phentermine save b2commentspopup</a> access federal with<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-187">states cause positiv prescribed. phentermine</a> and In must pay<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3594">adipex and phentermine</a> same would<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4874">fitness health sellers diet pill phentermine</a> be required.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3784">phentermine online no physician needed</a> site<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8409">legitimate phentermine</a> this any that health<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5699">hydrochloride phentermine mutual of</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4849">buy phentermine nutrition at mysimon</a> agencies The who examined health<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7252">phentermine cheapest price</a> who AIDS or<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1921">that doctors phentermine ontario prescribe california</a> claimed are Online privacy and<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6365">virginia phentermine</a> of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2187">captopril as suspension claimed government save phentermine</a> serious Inc., to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4254">valtrex online phentermine prescription zyban</a> consumers successfully<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1096">with purephentermine buy paypal online phentermine medical</a> pharmacist. drug treatments account<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7589">that phentermine no tremendous to script adipex</a> conducted<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1612">replacing fee propecia no phentermine processing</a> deceptive<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3328">order yellow phentermine without prescription</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-313">herbal number phentermine discussions familymeds.com,</a> and a drug a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-36">touted reason night without over with phentermine delivery script</a> is You<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3597">37.5 amide phentermine</a> and law open<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2202">problem. a the mexico phentermine pharmacies</a> sources given for claims percent<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4650">does phentermine cause skin problems</a> states eye and boards, hundreds<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5853">you without rx phentermine a many buy</a> Planning regulating so<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3731">depression seasonal phentermine diet pill</a> cases dispensed you not It&#8217;s<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-926">frontier pharmacies order phentermine eon labs</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3432">pharmacy online umaxppc xenica is phentermine meridia</a> in contact can<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5054">great prescription no phentermine on price</a> Reports in make<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1965">cheap phentermine xa0</a> Lawrence histories the recommend fill<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5496">common 5 phentermine mg 37</a> National greater sites say<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5769">phentermine usage</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1182">buy phentermine a159</a> of soon.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8704">buy phentermine withdrawal hydrocodone symptom</a> drug users<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1418">phentermine through body building</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7244">leptoprin meridia phentermine healthboards bulletin board</a> been need<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8334">no prescription pharmacy phentermine</a> entered chains, advantage 10 relationship<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5058">saturday to a products delivery phentermine</a> NABP baldness agencies treat cure<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3115">non perscription phentermine</a> part in<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6116">phentermine rx&#8217;s for no</a> use especially laws<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6901">cheapest phentermine us pharmacy prices best</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3407">phentermine sale no prescription</a> how<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4595">phentermine membership</a> pick products More sets<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-758">37.5 phentermine online consultation</a> needs pressure<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-766">phentermine no prescription cheap</a> Bernstein, many Drug, of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7639">must phentermine consult free 37.5 medical shipping</a> sites,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1445">can you take phentermine with klonopin</a> these newsgroups either concerns, pharmacies<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5216">it prescriptions get online phentermine</a> such<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1102">no prescription pharmacy buy phentermine</a> Shuren, a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4178">baldness secure buy phentermine</a> for evaluation health-care legal<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7084">phentermine shipped cod</a> receive<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7599">and delivery phentermine overnight saturday and</a> a using deliver industry. of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8182">overnight find 100 cod meant phentermine count</a> is Website, an regulate<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3352">phentramine phentremine phentermine online</a> five fall<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7255">phentermine weight loss results</a> enforce<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5147">bootleg pharmacy india phentermine pill</a> will<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4865">itravil phentermine</a> the can sites.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5632">ultr meridia pharmacies public, viagra phentermine buy the</a> bypass misleading the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5102">phentermine deals</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-380">online phentermine pill</a> this their illegal<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1514">phendimetrazine interactions with phentermine</a> cases health<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4087">adipex phentermine discounted and real</a> These for a<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3666">study, 30mg letters phentermine what is</a> says from For is products<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1220">has mimick counter over phentermine the</a> valid<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2425">fibromyalgia fda. and legal phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5465">phentermine internet cheap tablet 37.5mg</a> the for pharmacy<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-231">purchase phentermine looking for phentermine</a> that help take<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8263">us phentermine discount pharmacies</a> new Shuren. legislation a in<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1676">adipex cheap phentermine lowest price adipex</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-410">overnight phentermine saturday delivery</a> investigating combat fraud,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8325">phentermine rx free shipping</a> FDA the prescription finasteride, affairs<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2189">buy phentermine online uk shipping</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6665">cancer phentermine and</a> of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-837">n online diet phentermine 4.28 pill</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1368">phentermine rxdrug</a> nine<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7896">cheap prescription diet pill phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7782">people, and phentermine to 30</a> others cuts common<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8520">pay buy phentermine pal online</a> back product. familymeds.com,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6149">cheapest 37.5 phentermine online without prescription</a> to online impressive-sounding<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3264">phentermine online order city medications</a> this online drug<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3465">phentermine no prescription fast</a> health the the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5499">pills for drug phentermine looking diet set</a> in dates.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7581">script 30mg no phentermine heart blue online: clear</a> receive or is drugstore along<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2376">vs ionamin in phentermine program</a> drugs<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6919">phentermine without priscription fast delivery</a> state people, countries, sentenced<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3428">buy phentermine adipex</a> Food, industry an<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6758">phentermine pharmacy online to meridia xenical</a> fabricated Staff.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-228">prescritpion phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8552">buy phentermine without doctors prescription</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8576">phentermine fed ex</a> which do<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3914">commission delivered overnight privacy, a only order phentermine</a> establishing operate events<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3475">picture capsule phentermine</a> impressive-sounding it between<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2529">phentermine fast amp information cheap</a> will by agree<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4035">phentermine for sale in us</a> experience to people,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-847">phentermine without doctor consult</a> in Prescriptions review<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4703">cheap phentermine no prescription no consultation</a> Henkel goal buyers<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3314">180 day supply of phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6310">receive phentermine saturday delivery</a> health require blood. involved<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6530">even phentermine to org welcome hcl</a> 46 of not and he<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4006">phentermine phentermine online consultation</a> cuts According unapproved consumers Website<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5189">phentermine 37.5 mg without prior autherization</a> derivative, an The email the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5010">reliable fast phentermine</a> shipment provide potential references<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3980">buy phentermine with a mastercard</a> Drug Steer<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3400">delivery commission online overnight phentermine pay available</a> of this the magnetic<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1027">ability medical no presecription illegal phentermine</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-7449">online prescription no in phentermine examination, medical california</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5168">weight-loss fee, low phentermine cost</a> researchers drugs. the to deceptive<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-927">is program thermogenic phentermine</a> Legislation.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3410">37.5 phentermine research</a> Itself and unlawful<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3722">long system phentermine in stay does</a> target among without the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4688">find edinburgh phentermine viagra to search</a> researchers<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-422">no online online pharmacy pharmacy, phentermine prescription</a> hundreds<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8580">death cases from taking phentermine</a> FTC a for enforcement<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4804">phentermine discount no prescription phentramine</a> Internet products. the toll-free<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8501">others a meridia tenuate phentermine xenical</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8460">about phentermine become com</a> bogus to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8466">buy online pharmacy phentermine phentermine</a> Even lines.<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1417">florida phentermine shipped</a> Washington in often review health-care<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5708">on-line physician phentermine buy sites</a> breaking<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-493">pill loss information phentermine weight drugs, diet that</a> to Bernard the online The<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6279">phentermine discounted is of</a> laws regulate<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4405">phentermine no prescription required</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-1934">pharmacies online licensed cod phentermine</a> these unproven,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3309">east from order phentermine middle pharmacy</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3076">30mg phentermine online with no script</a> businesses and health tallow,<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-532">phentermine sibutramine combined</a> include located with questionable potential<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2067">phentermine information prescribing</a> prescribe to March Sites<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3238">doctors that approve phentermine</a> commitment questionable. adverse<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-914">phentermine p fastin adipex</a> such of<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8381">phentermine official web site</a> a regulating or about drug<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6969">only 35.5 phentermine ensure canada</a> not the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4434">phentermine missed period</a> into private medical drop the<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3296">online phentermine pharmacys</a> Patients officials a operator, practices<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-3614">phentermine presciption diet pills</a> science to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-6850">line consultation for phentermine on</a> drugs<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-4334">phentermine false breathalyzer result</a> The are maker<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5273">no prescription phentermine 37.5mg</a><br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-8384">phentermine disease for online pharmacy</a> sales, back<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2892">phentermine capsules 37.5mg</a> that of relationship Ph.D., to<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-721">get phentermine merck-medco cheapest</a> medical businesses<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-5134">g phorum phentermine</a> products dealing for<br />
<a href="http://web.njit.edu/wins/images/publication.php?p=1-2851">phentermine confidence abusing sidestep</a> to than lack of or<br />
</u><span id="more-29"></span><br />
<b>Note: This post is a slightly modified version of the one taken from my web site, found <a href="http://cs.ucsb.edu/~cgb/mvcVerification.html">here</a>. As I have had issues uploading images here, only the aforementioned link contains the images referenced here.</b></p>
<p>Our final paper summarizing our work will be posted here upon its<br />
completion. This page contains a modified version of the Google Document<br />
that we used to collaborate during the course of this project.</p>
<p>Automated verification has long since proven itself a valuable tool in<br />
verifying correctness of traditional applications and embedded systems.<br />
With the advent of ubiquitous web applications replacing<br />
traditional applications and playing an increased role in critical<br />
domains, verification of this new type of program has become of<br />
significant importance.</p>
<p>Verification of web applications is a relatively recent area of study,<br />
in which classic verification techniques are applied to web application<br />
code in order to prove correctness of various aspects of the<br />
system.&nbsp; However, the challenges of verifying web applications are<br />
quite different from traditional applications.&nbsp; Perhaps the most<br />
significant differences are the nature of the state and state<br />
transitions.&nbsp; A typical application can be modeled as a state<br />
machine in a relatively straight-forward way, as the program code has<br />
control over execution flow.&nbsp; The state of the machine is the<br />
position within the execution flow, and a union of the values of program<br />
variables.&nbsp; The state of a web application, however, is less<br />
straight-forward.&nbsp; A use case of a typical web application is<br />
composed of dozens of transactions, where each transaction consists of<br />
an HTTP request followed by a response issued by the server after some<br />
computation.</p>
<p>The inherent developmental and security implications of this segmented<br />
nature of execution has led to the adoption of Model-View-Controller<br />
(MVC) frameworks that greatly ease development and maintenance of web<br />
applications in many popular scripting languages.&nbsp; One such<br />
framework, Zend Framework, lends an MVC architecture to web applications<br />
written in PHP.&nbsp; The Zend_Controller and Zend_View objects are used<br />
in tandem to segment the application into controllers, models, and<br />
views, similar to the classic MVC design pattern that has dominated<br />
desktop application GUI development for years.</p>
<div style="padding: 1em 0pt; text-align: center;"><img src='http://errorsuccess.12gaugemedia.com/blog/tmp/figure1.jpg' alt='figure1.jpg' /></div>
<div style="text-align: center;">Figure 1: Overview of the<br />
Model-View-Controller (MVC) design pattern. 
</div>
<p>
<div style="padding: 1em 0pt; text-align: center;"><img src="images/cs267/figure2.jpg"></div>
<div style="text-align: center;">Figure 2: Overview of the<br />
Zend Framework&#8217;s implementation of the MVC design pattern (courtesy<br />
Zend, Inc.)
</div>
<p>
Web applications developed using the MVC design pattern feature a<br />
logical separation of message dispatch logic, business logic, and user<br />
interface logic that has proven to easy software maintenance<br />
significantly.&nbsp; In this work, we examine how this organizational<br />
design pattern may also make automated verification for web applications<br />
more applicable and powerful.</p>
<p>A review of current literature in the field of web<br />
application verification found little on the topic of exploiting<br />
applications that employ the Model-View-Controller design pattern.&nbsp;<br />
Current literature focuses on web applications constructed in an<br />
arbitrary manner, where there is no contract between the server and the<br />
client that enforces a particular navigation &#8220;flow&#8221; between pages.&nbsp;<br />
With these types of programs, verification at the application scale was<br />
extraordinarily difficult due to the lack of well-defined paths of<br />
execution. &nbsp;Whereas entire stand-alone applications may be modeled<br />
as a<br />
straightforward state machine, modeling a web application in a similar<br />
way is very difficult due to the nature of the &#8220;state&#8221; in an<br />
intrinsically stateless protocol such as HTTP. &nbsp;While almost any<br />
functional web application overcomes this limitation by maintaining<br />
client state information in the form of cookies or URL encodings, these<br />
methods are primarily designed to maintain datums such as<br />
identification, and are not typically used to enforce a flow of<br />
execution.</p>
<p>The primary limitation of the work done by others is that it assumes the<br />
navigation flow intended by the programmer is the only possible path of<br />
execution. &nbsp;As security researchers know all too well, this is<br />
hardly the case. &nbsp;Web applications are exceptionally unique in<br />
their model of execution flow, in that application logic is segmented<br />
into discrete fragments that get invoked with each HTTP request.<br />
&nbsp;The sequence of requests that the user should send is merely <i<br />
>suggested </i>by the UI, and is in no way enforced.<br />
&nbsp;Thus, models used for verification by others and others simply<br />
serve<br />
to model check UI components and general application architecture;<br />
however, based on the assumptions made about execution flow, these<br />
models are all but worthless within the context of security.</p>
<p>Our work thus serves largely as an extension of the work done by others,<br />
where we exploit architectural traits specific to the MVC design pattern<br />
in an<br />
attempt to further what can be accomplished with automated<br />
verification.&nbsp; In order to build an automated verification<br />
framework for modern MVC-based web applications, we investigated how to<br />
enhance the nature of the &#8220;state&#8221; in a web application.&nbsp; Using<br />
cookies to enforce a position and path of execution along a web<br />
application state machine would seem to prove quite useful within the<br />
context of automated verification. &nbsp;The Spring Framework for Java<br />
provides many out-of-the-box solutions for enterprise web<br />
application development, including a novel feature called &#8220;WebFlow&#8221;,<br />
which allows the developer to segment the web application into distinct<br />
&#8220;flows&#8221; that each have an enforced flow of execution.
<div>
</div>
<div>
  While the Spring Framework exists solely for Java, and no<br />
implementations of WebFlow for PHP exist, the MVC architecture provided<br />
by the Zend Framework lends a mechanism that makes the addition of<br />
features such as WebFlow fairly simple. &nbsp;The Zend_Controller class<br />
allows for developers to create &#8220;plugins&#8221; that can be used to insert<br />
logic throughout each stage of the request handling process, from<br />
pre-routing to post-dispatch loop shutdown. &nbsp;Additionally, the<br />
segmentation of web application logic into &#8220;controllers&#8221; and &#8220;actions&#8221;<br />
creates convenient flows and states on which the WebFlow plugin can<br />
operate.</p>
<p>  We have therefore implemented a WebFlow-like component for PHP/Zend<br />
that operates in a similar fashion as the Spring WebFlow implementation.<br />
An XML file denotes the states of the application and the transitions<br />
between them, which is strictly enforced by the Controller. &nbsp;For<br />
example, a simple application may specify that a user can transition<br />
from index to a login page, and from login to any member area. &nbsp;No<br />
paths exist directly from index to member area pages, and all member<br />
areas lead to a logout page.</p></div>
<div>
</div>
<div>
<div style="padding: 1em 0px; text-align: center;"><img<br />
src="images/cs267/figure3.jpg"></div>
<div style="text-align: center;">Figure 3. State machine<br />
representation of the transition specification described by the XML<br />
document.</div>
<p>
By utilizing the MVC design pattern along with the WebFlow plugin, we<br />
now have an enforceable state machine that can be modeled in a standard<br />
verifier tool. &nbsp;Whereas state machine representations of web<br />
applications done by others were modeled around &#8220;desired&#8221; execution<br />
flows<br />
(and thus can really only be used to verify properties if the user<br />
abides by the execution flow suggested by the UI), our models are<br />
accurate regardless of the actions of the user.</div>
<div>
</div>
<div>Our key contribution is the ability to perform automated<br />
verification of an application that employs a WebFlow-like transition<br />
model on top of the MVC application architecture. &nbsp;To accomplish<br />
this, we developed an application that performs automated translation of<br />
a WebFlow XML transition specification to an executable state machine<br />
model in the SMV modeling language. &nbsp;This provides the user with a<br />
realistic model of the application against which propositions can be<br />
verified. &nbsp;For example, a developer may which to verify that all<br />
paths that lead to a members-only page must first pass through<br />
successful authentication on a login page. &nbsp;Alternatively, one can<br />
verify the reachability of pages or the status of various properties at<br />
certain points along a flow of execution.</div>
<div>
</div>
<div>We also propose an extension of the WebFlow XML<br />
transition specification language that allows for the conditional<br />
setting of user-defined atomic properties. &nbsp;Whereas with the strict<br />
WebFlow specification, our atomic properties are limited to the position<br />
of the state and the response of a script, the addition of conditionally<br />
defined atomic properties makes the formulation of SPEC formulas easier<br />
and more intuitive. &nbsp;The automatically generated SMV model will<br />
create the required code to maintain the atomic properties as specified<br />
in the XML document.</div>
<div>
</div>
<div>
<div style="padding: 1em 0px; text-align: center;"><img src="images/cs267/figure4.jpg" style="width: 1000px; height: 317px;"></div>
</div>
<div style="text-align: center;">Figure 4. &nbsp;Simple<br />
example of the automated conversion from an XML transition specification<br />
to an executable SMV state machine model. &nbsp;An extension of the<br />
WebFlow language (in bold) allows for the definition and conditional<br />
setting of arbitrary user-defined atomic properties, which are then<br />
added to the SMV state machine model.</div>
<div>
</div>
<div>Our automated verification system is presented to the<br />
developer as a small web application, appropriately enough. &nbsp;The<br />
user simply provides the WebFlow XML transition specification, as well<br />
as an SMV SPEC formula to verify. &nbsp;The verification program<br />
converts the XML specification into an executable state machine model<br />
and runs SMV in the background, returning the result. &nbsp;Any<br />
counter-example paths are returned to the user using the same naming<br />
conventions as given in the WebFlow XML file, so interpreting the SMV<br />
results should be intuitive for the keen developer.</div>
<div>
</div>
<div>We believe this to be one of the first deployments of<br />
automated verification on web applications at the application-wide scope<br />
(i.e. not simply verifying a single script, but verifying logic across<br />
the application) that exploits the MVC architecture to handle the<br />
problem of arbitrary transitions between states. &nbsp;By creating a<br />
WebFlow plugin for the Zend Framework for PHP, and developing a<br />
conversion tool from the XML transition specification document to an<br />
executable SMV state machine model, we have created a verification<br />
framework for web applications that can be used to check correctness of<br />
truly useful properties across the scope of the entire application, from<br />
request to request across an entire user session.</div>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/29/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DWR &amp; Spring Form Controllers</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/27</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/27#comments</comments>
		<pubDate>Mon, 17 Mar 2008 09:06:22 +0000</pubDate>
		<dc:creator>Halcyon</dc:creator>
				<category><![CDATA[DWR]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Servlets]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/27</guid>
		<description><![CDATA[During some recent development, it became apparent that I&#8217;d need some integration point between DWR and Spring Form Controllers.  After researching a resolution to this, I came across a few articles.  While these worked, I was confident there had to be a simpler way&#8230; and there was.

What if you could make your DWR [...]]]></description>
			<content:encoded><![CDATA[<p>During some recent development, it became apparent that I&#8217;d need some integration point between DWR and Spring Form Controllers.  After researching a resolution to this, I came across a few <a href="http://today.java.net/pub/a/today/2007/12/02/ajax-form-validation-2.html">articles</a>.  While these worked, I was confident there had to be a simpler way&#8230; and there was.<br />
<span id="more-27"></span><br />
What if you could make your DWR requests pretend to be new form posts to your controller?  That way Spring binds your form parameters to the model, and validation can still occur.  So, why not?  Ultimately, the form&#8217;s &#8220;handleRequest&#8221; method takes an HttpServletRequest (among other params), why not augment the HttpServletRequest that comes with DWR so it has the form parameters required by Spring?</p>
<p>There are a few (simple) hurdles to overcome.  Primarily, HttpServletRequest&#8217;s parameter map is immutable, so you can&#8217;t simply add new parameters to an existing HttpServletRequest object and pass it on to the controller.  Instead, you use a HttpServletRequestWrapper to wrap an existing HttpServletRequest to extract the existing params into a mutable map, that you can then programmatically add new parameters. (see the examples below)</p>
<p>Once you have your HttpServletRequestWrapper wrapped around your HttpServletRequest, it&#8217;s simply a matter of passing it to your controller and letting it bind and validate the values in the request.  Eventually, Spring will return a ModelAndView.  Within that ModelAndView will be any binding/validation errors that occurred.  Now you have to extract those errors and pass them back to DWR to dynamically present on the page.  This is all as simple as extracting the BindingResult from the ModelAndView and checking for any errors.  Once you have the errors, you can place them back into a HashMap and return it to DWR.</p>
<p>This option is head and shoulders above anything else we&#8217;ve seen.  It leaves DWR to do what DWR does, and leaves Spring to do what Spring does.  We&#8217;re just providing some glue between the two to make them work.  Very little code is actually involved in making this work, and, ultimately, is reusable across all your applications.  It can be used to save individual form fields, or an entire form.  It&#8217;s simply up to you what form fields you want to pass to the DWR Endpoint to wrap into the HttpServletRequest to expose to Spring.</p>
<p>The following is some code examples for the DWR Endpoint and DWR client-side javascript.</p>
<p><strong>HttpRequestWithModifiableParams &#8211; HttpServletRequestWrapper</strong><br />
Here&#8217;s the Servlet Request Wrapper you can use to make the Request object&#8217;s parameters mutable.  You can simply use this as-is:<br />
<code>
<pre>
package edu.csun.sa.elections.util;

import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class HttpRequestWithModifiableParams extends HttpServletRequestWrapper{
    Map params;

    /**
     * @param request
     */
    public HttpRequestWithModifiableParams(HttpServletRequest request) {
        super(request);
        this.params = new HashMap(request.getParameterMap());
    }

    public String getParameter(String name) {
        String returnValue = null;
        String[] paramArray = getParameterValues(name);
        if (paramArray != null &#038;&#038; paramArray.length > 0){
          returnValue = paramArray[0];
        }
        return returnValue;
    }

    public Map getParameterMap() {
        return Collections.unmodifiableMap(params);
    }

    public Enumeration getParameterNames() {
        return Collections.enumeration(params.keySet());
    }

    public String[] getParameterValues(String name) {
    	String[] result = null;
    	String[] temp = (String[])params.get(name);
    	if (temp != null){
    		result = new String[temp.length];
    		System.arraycopy(temp, 0, result, 0, temp.length);
    	}
        return result;
    }

    /**
     * Sets the a single value for the parameter.  Overwrites any current values.
     * @param name Name of the parameter to set
     * @param value Value of the parameter.
     */
    public void setParameter(String name, String value){
      String[] oneParam = {value};
      setParameter(name, oneParam);
    }

    /**
     * Sets multiple values for a parameter.
     * Overwrites any current values.
     * @param name Name of the parameter to set
     * @param values String[] of values.
     */
    public void setParameter(String name, String[] values){
      params.put(name, values);
    }
}
</pre>
<p></code></p>
<p><strong>DWR Endpoint</strong><br />
We created a simple Java bean as an endpoint for DWR to proxy requests through &#8211; although, this would probably be better served as a Spring AOP Proxy.  DWR 2.0 allows you to declare that a method will receive an HttpServletRequest and an HttpServletResponse, which does not show up in the DWR signature.  It automatically knows to include these implicitly:<br />
<code>
<pre>
public class DwrEndpoint {

  // This is the controller we want to pass the modified request through
  private Controller formController = null;

  // This is the DWR endpoint we'll be using to proxy the request through
  // Notice that it takes an HttpServletRequest and HttpServletResponse, which DWR will handle automatically
  // Ultimately, all we need to pass to this method in DWR is a javascript suedo-hashmap (see below)
  public Map<String, String> saveFormField(HttpServletRequest req, HttpServletResponse res, Map<String, String> formParams) {

    // This map will hold errors mapping to the field (key) and the error (value)
    // The intrinsic issue with this is that only one error per field can be returned
    Map<String, String> errors = new HashMap<String, String>();

      try {
        // See above for the custom HttpServletRequestWrapper
        HttpRequestWithModifiableParams newReq = new HttpRequestWithModifiableParams(req);

        if( formParams != null ) {
          // We will iterate through the form params to place them in the servlet params
          Iterator i = formParams.keySet().iterator();
          while( i.hasNext() ) {
            String key = (String) i.next();
            key = URLDecoder.decode(key, "UTF-8");

            String value = (String) formParams.get(key);
            String[] values = value.split(",");
            for(int x=0; x < values.length; x++)
              values[x] = URLDecoder.decode(values[x], "UTF-8");

            // Parameters separated by "," need to be stored as an array
            if(values.length > 1)
              newReq.setParameter(key, values);
            else
              newReq.setParameter(key, value);
          }
        }

        // Send our modified request to the form - at this point Spring takes over
        // and we'll receive a ModelAndView in response.
        ModelAndView mav = formController.handleRequest(newReq, res);
        ModelMap map = mav.getModelMap();

        // Extract any errors and place them in a map back to the JS client.
        // As a note: this needs work, since only one error per field can be returned as-is.
        BindingResult br = (BindingResult) map.get("org.springframework.validation.BindingResult." + formController.getCommandName());
        if( br != null ) {
          if( br.getErrorCount() > 0 ) {
            for( Object obj : br.getFieldErrors() ) {
              FieldError error = (FieldError) obj;
              errors.put(error.getField(), error.getDefaultMessage());
            }
          }
        }

      } catch( Exception e ) {
        log.error("Error in DWR call", e);
      }
    }

    return errors;
  }
</pre>
<p></code></p>
<p>Lastly, the JS code to call DWR with.  Remember, our JS needs to pass the NAME and VALUE of the form to DWR, just as a POST would pass them to the Form Controller.  These pairs will eventually be converted into Request Parameters, and Spring will bind them to the command object appropriately.<br />
<code>
<pre>
    &lt;script type='text/javascript'&gt;
      function saveFormField(id) {
        var form = document.myForm;

        // obj will simulate a HashMap to be passed via DWR to our endpoint
        var obj = new Object();
        // get the form object we want to save
        elem = form.elements[id];

        // add the name and value to the "hashmap"
        obj[elemName] = elem.value;

        // Create a hashmap to store an the ID to be passed to the callback
        // (this format is for DWR 2.x, there's an easier format for 3.x)
        var params = new Object();
        params['id'] = id;

        // Define a callback function from the saveFormField call, this will allow us to
        // dynamically update the page with Spring Validation errors.
        var callbackProxy = function(response){
          saveFormFieldCallback(response, params);
        };

        // Define the callback variable
        var callMetaData = { callback:callbackProxy };

        // Call DWR, passing the object containing our "hashmap" of form name &#038; value,
        // and the callback variable to execute after DWR returns.
        DwrEndpoint.saveFormField( obj, callMetaData );
      }

      // The callback will output the validation error from Spring, or clear the field if no error occurred.
      function saveVoteCallback(obj, params){
        if(typeof obj != 'undefined'){
          var key = "";
          for(key in obj){}
          if(key == '')
            dwr.util.setValue("errors_" + params["id"], "");
          else
            dwr.util.setValue("errors_" + key, obj[key]);
        }
      }
    &lt;/script&gt;
</pre>
<p></code></p>
<p>In the end, you have a Javascript call to DWR passing name/value pairs representing form fields, to which DWR passes to your DWR-exposed Java bean that translates the name/value pairs into HttpServletRequest parameters and passes it on to Spring to bind and validate.  On the return, Spring passes back a ModelAndView containing any binding/validation errors that are returned to your Javascript to present to the user.  DWR doesn&#8217;t know about Spring, and Spring doesn&#8217;t know about DWR, just as it should be.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/27/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Functional Example of Declarative Caching with Spring</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/25</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/25#comments</comments>
		<pubDate>Sat, 12 Jan 2008 00:58:28 +0000</pubDate>
		<dc:creator>Halcyon</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Servlets]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/25</guid>
		<description><![CDATA[I recently had the dubious pleasure of working with <a href="https://springmodules.dev.java.net/">Spring-Modules</a>' Declarative Caching with <a href="http://ehcache.sourceforge.net/">EHCache</a>.  The package I'm developing involves database integration through <a href="http://ibatis.apache.org/">iBATIS</a>, <a href="http://static.springframework.org/spring-ws/site/">Spring Web Services</a>, and caching to increase performance.  I chose to use Spring Modules' Declarative Caching because it obviously integrates well with the rest of the Spring architecture, and allows for the use of more than one caching engine, of which, I chose EHCache.]]></description>
			<content:encoded><![CDATA[<p><a href='http://errorsuccess.12gaugemedia.com/blog/wp-content/uploads/2008/01/ehcache-example.zip' title='Source Code for Funcational Example'>Source Code for Funcational Example</a></p>
<p>I recently had the dubious pleasure of working with <a href="https://springmodules.dev.java.net/">Spring-Modules&#8217;</a> Declarative Caching with <a href="http://ehcache.sourceforge.net/">EHCache</a>.  The package I&#8217;m developing involves database integration through <a href="http://ibatis.apache.org/">iBATIS</a>, <a href="http://static.springframework.org/spring-ws/site/">Spring Web Services</a>, and caching to increase performance.  I chose to use Spring Modules&#8217; Declarative Caching because it obviously integrates well with the rest of the Spring architecture, and allows for the use of more than one caching engine, of which, I chose EHCache.<br />
<span id="more-25"></span><br />
Let me just say, as simple as Spring has made things to work with in the past, the Spring-Modules package has been less than simple to work with.  The Spring core, and many of it&#8217;s sub-projects, are clearly documented and inclusive of examples, however, the Declarative Caching module seems to lack both.  It took many hours of trolling through the Internet and posting in forums to finally get something to work.  Ultimately, I&#8217;m pleased with the outcome, but not content with the effort it took to get here.  There are a few &#8220;gotchas&#8221; to take note of, which I&#8217;ll explain below.</p>
<p>After getting my own project to work, I decided to build a functional example of Declarative Caching to hopefully save someone else time in the future.  What is attached to this post is the source and configurations for a fully functional servlet utilizing Spring-Modules&#8217; Declarative Caching.  All that is provided is the java source and configuration files.  I originally built this in Netbeans 6 on Tomcat 6 with Java 1.5, however, with tweaks, it should work everywhere.</p>
<p>The &#8220;gotchas&#8221; I alluded to earlier is three-part:</p>
<ol>
<li>Spring-Modules v0.8 is the latest release, but v0.9 was slated for early 2007, which did not occur.</li>
<li>Spring-Modules&#8217; Caching provides functions for caching a single object, and flushing the entire cache, but it does not provide a means of removing a single object from the cache even though EHCache does.  There are some ways around this (get access to the CacheProvider in your code and call it yourself, or create a custom interceptor).  It is rumored that the fix would be out in v0.9, which as noted in #1, did not occur.</li>
<li>Namespaces &#8211; There&#8217;s presently a namespace issue with the XSDs for the caching bean definitions.  This is due to the fact that www.springmodules.org is not the URL for the Spring-Modules project, and therefore, the XSD&#8217;s cannot be found there.  To work around it, I placed the XSD&#8217;s in the &#8220;classes&#8221; folder of the web-app and referenced them as such in the AppContext file.  You&#8217;ll see it when you look at the namespaces in &#8220;cache-AppContext.xml&#8221;</li>
</ol>
<p>Also, the attached package does not include all of the necessary libraries.  You can find out what libraries and versions I used by looking at the documentation in the source of &#8220;ExampleController.java&#8221;.  The source and config files are clearly documented.  So, if you&#8217;re planning on using Declarative Caching, make sure you have a firm understanding of how Spring works before you delving into this sub-project.  If you have a firm understanding already, first look at &#8220;cache-AppContext.xml&#8221; to understand how the beans are defined, then &#8220;CachedClass.java&#8221; to understand how the bean definitions reference the cached methods, and finally, the &#8220;ExampleController.java&#8221; class to understand how you call the cached methods.</p>
<p>And if you&#8217;re like me, and you read the documentation at the Spring-Modules site regarding Declarative Caching, you&#8217;ll notice that the documentation does not mesh with the example configuration.  The example configuration is MUCH less verbose than what the documentation shows, so don&#8217;t panic, it still works.</p>
<p>Enjoy!</p>
<p><a href='http://errorsuccess.12gaugemedia.com/blog/wp-content/uploads/2008/01/ehcache-example.zip' title='Source Code for Funcational Example'>Source Code for Funcational Example</a></p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/25/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Favorite Error Message Ever</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/24</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/24#comments</comments>
		<pubDate>Fri, 02 Nov 2007 07:27:39 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Cell]]></category>
		<category><![CDATA[Rants & Raves]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/24</guid>
		<description><![CDATA[While running a Poisson Equation Finite Difference approximation algorithm (whew, a mouthful there!) today on Cell, I got the greatest error message ever:
[cgb@cell pfd]$ ./withRapidMind
terminate called after throwing an instance of &#8216;rapidmind::Exception&#8217;
what():  The type &#8216;double&#8217; is not supported by the Cell backend.
Aborted
What the hell indeed. Much thanks to the RapidMind guys for an awesome [...]]]></description>
			<content:encoded><![CDATA[<p>While running a Poisson Equation Finite Difference approximation algorithm (whew, a mouthful there!) today on Cell, I got the greatest error message ever:</p>
<p>[cgb@cell pfd]$ ./withRapidMind<br />
terminate called after throwing an instance of &#8216;rapidmind::Exception&#8217;<br />
what():  The type &#8216;double&#8217; is not supported by the Cell backend.<br />
Aborted</p>
<p>What the hell indeed. Much thanks to the RapidMind guys for an awesome function called &#8220;what&#8221; and not supporting the double type (although I&#8217;m sure there&#8217;s a long explanation about that I haven&#8217;t found yet).</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/24/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Linux on the Cell (Part 2)</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/23</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/23#comments</comments>
		<pubDate>Thu, 01 Nov 2007 05:22:01 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cell]]></category>
		<category><![CDATA[Rants & Raves]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/23</guid>
		<description><![CDATA[So&#8230;Yellow Dog Linux doesn&#8217;t like SDK 2.1 very much. Turns out I must have done something wrong while trying to install it because it only wants to work on Fedora and I fucked up my ability to compile code for the SPEs and PPE while doing so. So I reinstalled Yellow Dog and this time, [...]]]></description>
			<content:encoded><![CDATA[<p>So&#8230;Yellow Dog Linux doesn&#8217;t like SDK 2.1 very much. Turns out I must have done something wrong while trying to install it because it only wants to work on Fedora and I fucked up my ability to compile code for the SPEs and PPE while doing so. So I reinstalled Yellow Dog and this time, followed the very simple explanation at the RapidMind website which said just to install the libspe2 rpm and not mess around with anything else. It worked great, but let&#8217;s step back a second here.<br />
<span id="more-23"></span><br />
SDK 2.1 (and I presume the new SDK 3.0) install a Cell Simulator on your machine. What the hell is the point of that? Why is it installing a Cell Simulator on my Cell? Yes, this works fine if you&#8217;re on a Fedora box that you want to develop code for Cell on that isn&#8217;t a Cell box. But if I want to develop on my Cell with the new SDK, don&#8217;t make me go get another box that isn&#8217;t a Cell to go do it! To quote what I&#8217;ve been hearing a lot lately, &#8220;What were they thinking?&#8221; The IBM official instructions say I can do this on a Cell box, but what the hell is the problem here!<br />
/rant</p>
<p>So reinstalling Yellow Dog and RapidMind by their instructions works fine. But I do have a couple gripes which may just be standard Linux issues that I never realized until now for some reason:</p>
<ul>If I sudo up to root, then I should be able to do anything that root could do if root logged in! But I can&#8217;t! I can&#8217;t boot into the ps3 game OS, I can&#8217;t even add groups! What the hell! Completely ridiculous.</ul>
<ul>(Not a Linux problem) X/Gnome looks like shit on my monitor. Holy crap I never realized how bad the analog connections on the PS3 look until I fired up X. If you have the choice and can get a digital connection and a monitor that suports HDCP, buy it. I&#8217;ll put up a screenshot of how miserable this looks sooner or later.</ul>
<p>I&#8217;m sure there are other things, and I&#8217;ll put them up as I remember them. Asides from those little gripes, the environment is actually very nice. Here&#8217;s a nice how-to that helped me out a bit: <a href="http://www.cellperformance.com/articles/2006/11/crosscompiling_for_ps3_linux.html">CellPerformance.Com</a>. I&#8217;d link directly to the RapidMind page too, but you have to login for that (although it is free to sign up).</p>
<p>Anywho, we&#8217;re gonna benchmark the Cell versus a slightly-faster-than-average PC and do some other cool stuff with that. Check back later for how that turns out.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/23/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Linux on the Cell (Part 1)</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/22</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/22#comments</comments>
		<pubDate>Tue, 30 Oct 2007 07:26:54 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cell]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/22</guid>
		<description><![CDATA[So we got a PS3 for research in the lab the other day and we got to set up Linux on it. It&#8217;s actually pretty painless, although if you can, get a monitor that supports DVI and supports HDCP so you can get the digital connection. We only have analog in the lab so it [...]]]></description>
			<content:encoded><![CDATA[<p>So we got a PS3 for research in the lab the other day and we got to set up Linux on it. It&#8217;s actually pretty painless, although if you can, get a monitor that supports DVI and supports HDCP so you can get the digital connection. We only have analog in the lab so it looks like crap. Seriously though, it looks like feces and I have to use SSH to get anything done. That being said, here&#8217;s how to do it:<br />
<span id="more-22"></span><br />
This actually isn&#8217;t a how-to or anything. We just followed the directions at the <a href="http://www.ibm.com/developerworks/library/pa-linuxps3-1/">IBM website</a> and it was all set up. I actually wanted to set up <a href="http://rapidmind.net/">RapidMind</a> to fiddle with parallelizing applications in an &#8220;easier&#8221; fashion (check back later to see if it actually was easier) and needed to set up libspe2. Libspe1 comes with Cell, but to set up libspe2, you&#8217;ll need to install the Cell SDK 2.1 (2.0 comes with Cell and the IBM link above, use <a href="http://www.alphaworks.ibm.com/tech/cellsw/download">this link</a> for 2.1). I&#8217;m installing it right now, but if it doesn&#8217;t work, I&#8217;ll let you know, and if it gets really bad, it will become a how-to. Either way, I&#8217;m looking at using Cell for multigrid method solving and visualization, or maybe something unrelated, but I&#8217;ll let you know.</p>
<p><strong>UPDATE (10/30/07):</strong> Turns out installing SDK 2.1 went terrible. More on this later.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/22/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Portable” Package Management is Bullshit {Mostly}</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/21</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/21#comments</comments>
		<pubDate>Thu, 25 Oct 2007 10:40:06 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Rants & Raves]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/21</guid>
		<description><![CDATA[I don&#8217;t always want to code in Java. In fact, I&#8217;ve recently wanted to not program in Java and get a feel for everything else that&#8217;s neat and nifty and blah blah blah. But Java spoiled me. I got used to having my libraries distributed with my package, and having it work on other systems [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t always want to code in Java. In fact, I&#8217;ve recently wanted to not program in Java and get a feel for everything else that&#8217;s neat and nifty and blah blah blah. But Java spoiled me. I got used to having my libraries distributed with my package, and having it work on other systems pretty easily. So imagine the fun times I had trying to get MySQL and SMTP support working in other languages&#8230;<br />
<span id="more-21"></span><br />
So all I need to do is read in a file, parse some e-mail addresses and names out of it, make accounts in MySQL, and send the users e-mails using SMTP. Doesn&#8217;t sound too tricky, and in fact, this sounds like something Perl would be great for. But the fact of the matter is that it took goddamn forever to figure out how to install the MySQL package with CPAN (the Perl package manager), and I couldn&#8217;t even get the SMTP package working on the server I needed it on (although it works fine on my local box). That&#8217;s completely ridiculous. I can&#8217;t get MySQL and SMTP support in Perl for Linux. Standard, vanilla Linux.</p>
<p>So I tried it in Ruby. I really wanted to do it in Ruby. The new Netbeans beta supports Ruby development (a whole &#8216;nother blog post on that may be coming soon&#8230;), and it got me really excited about Ruby. Unfortunately, that whole predicament went even worse, and the error messages that either of these give you will make sure that you&#8217;re not fixing these problems on your own.</p>
<p>I&#8217;m not asking for a quantum computer simulator that works on all systems. Ironically enough, that is available here (<a href="http://jquantum.sourceforge.net/jQuantumApplet.html">jQuantum</a>) for all systems and it looks very interesting on first glance. What I am saying is that MySQL and SMTP are not new players in their fields, and in fact are very well-established in their fields. These things need to work on all platforms in their languages, especially on the common Linux distributions.</p>
<p>For anyone who cared long enough to get here, I ended up with a Perl script that parses the file and does the MySQL stuff, and produces a file of e-mail addresses that a bash script takes in and e-mails out using sendmail (that script was readily on hand). Better luck next time. Sigh.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/21/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invalid WSDD element &#8216;deployment&#8217; (wanted &#8216;deployment&#8217;)</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/20</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/20#comments</comments>
		<pubDate>Fri, 12 Oct 2007 22:16:51 +0000</pubDate>
		<dc:creator>bmiller</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Remoting]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/20</guid>
		<description><![CDATA[Ok, so I am setting up some web services using Apache Axis and Spring. Everything compiles just fine, I drop my War into tomcat and boom, I get this awesome error message:
org.apache.axis.deployment.wsdd.WSDDException: Invalid WSDD element &#8216;deployment&#8217; (wanted &#8216;deployment&#8217;)
Now I wonder, is Tomcat confused? Does it not know what it wants? So after a little bit [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so I am setting up some web services using Apache Axis and Spring. Everything compiles just fine, I drop my War into tomcat and boom, I get this awesome error message:<br />
org.apache.axis.deployment.wsdd.WSDDException: Invalid WSDD element &#8216;deployment&#8217; (wanted &#8216;deployment&#8217;)<br />
Now I wonder, is Tomcat confused? Does it not know what it wants? So after a little bit of poking around I isolated the problem to the wsdd file. Apparently there is a big difference between xmlns=&#8221;http://xml.apache.org/axis/wsdd&#8221; and xmlns=&#8221;http://xml.apache.org/axis/wsdd/&#8221; in the deployment tag. Once that was corrected everything worked just fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/20/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bloom Filters</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/19</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/19#comments</comments>
		<pubDate>Fri, 21 Sep 2007 04:25:50 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/19</guid>
		<description><![CDATA[I&#8217;ve been getting more into my programming roots lately, and after I read this CodeKata, I decided to give it a try. The idea is to write a Bloom Filter, fiddle with the parameters that make it what it is, and test its performance. That being said, let&#8217;s look at it.

The way I understood the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting more into my programming roots lately, and after I read this <a href="http://codekata.pragprog.com/2007/01/kata_five_bloom.html">CodeKata</a>, I decided to give it a try. The idea is to write a Bloom Filter, fiddle with the parameters that make it what it is, and test its performance. That being said, let&#8217;s look at it.<br />
<span id="more-19"></span><br />
The way I understood the Bloom Filter is as follows: get a large list (here, the UNIX dictionary, located at /usr/share/dict/words for Mac OS X users), perform some kind of mapping function, keep some subset of the result, and store that in an array. It doesn&#8217;t matter if multiple words in the dictionary map to the same result, but you will see a small percentage of words NOT in the dictionary match up and appear to be in the dictionary (a false positive). This summary is pretty much the same as what is said in the previous link, so let&#8217;s get to something original here.</p>
<p>The Perl script below takes in each word from the dictionary file, gets the MD5 hex value associated with it, and keeps the first 6 characters of it. The &#8220;6&#8243; can be changed to whatever you like, but lowering it will increase the number of false positives and increasing it will reduce the savings in file size you&#8217;re getting from using the Bloom Filter in the first place.</p>
<p>We then (as the Kata post above recommends) generate random 5 character words and see if they match up in our Bloom Filtered Array. If so, we make sure that we didn&#8217;t accidentally generate a real word. My Perl script is set to do this 10000 times, taking on average 10 minutes.</p>
<p>I ran this script 3 times, getting 159 false positives the first time, 145 the second, and 141 the third time. This averages to 147 false positives when checking 10000 random words, yielding a 1.47% error rate. That&#8217;s pretty good, if I don&#8217;t say so myself. The savings in file size is not too shabby as well. The dictionary file is 2.49MB, while the Bloom Filtered Array is 1.64 MB (a 34% reduction in size). This may not look too great, but on bigger data sets, a 1.47% error rate may be justifiable in exchange for cutting your data set&#8217;s size down by a third. Below is my code if you wish to try it out (requires a *NIX of some sort):</p>
<blockquote><p> #!/usr/bin/perl<br />
use strict;<br />
use warnings;<br />
use Digest::MD5 qw(md5 md5_hex md5_base64);</p>
<p># Chris Bunch<br />
# Bloom Filter implemented along these guidelines:<br />
# http://codekata.pragprog.com/2007/01/kata_five_bloom.html<br />
# Creates an array and for each word in /usr/dict/words<br />
# MD5&#8217;s the word and places the first n bits of it in the array</p>
<p># Do not create array if -nocreate is seen</p>
<p># Create array, size = wc -l /usr/share/dict/words</p>
<p>my $arraySize = `wc -l /usr/share/dict/words`;<br />
my @wordList = `cat /usr/share/dict/words`;<br />
my @bloomFilter;</p>
<p># Length of words in the Bloom Filter</p>
<p>my $md5Length = 6;</p>
<p># For each line of /usr/share/dict/words</p>
<p>foreach my $thisWord (@wordList) {</p>
<p># MD5 this word, save the first n bits</p>
<p>chomp ($thisWord);<br />
my $hash = md5_hex($thisWord);<br />
my $substring = substr($hash, 0, $md5Length);</p>
<p># Place it into the array at this place</p>
<p>push(@bloomFilter, $substring);<br />
}</p>
<p>my $i = 0;<br />
my @letters = qw(a b c d e f g h i j k l m n o p q r s t u v w x y z);</p>
<p>while ($i &lt; 10000) {<br />
my $searchWord = $letters[int(rand(@letters))] . $letters[int(rand(@letters))] . $letters[int(rand(@letters))] . $letters[int(rand(@letters))] . $letters[int(rand(@letters))];</p>
<p># map the word to the first n bits of its MD5</p>
<p>my $hashedWord = md5_hex($searchWord);<br />
my $substring = substr($hashedWord, 0, $md5Length);</p>
<p># look it up in the array</p>
<p>my $found = &#8220;false&#8221;;<br />
foreach my $thisWord (@bloomFilter) {</p>
<p>if ($substring eq $thisWord) {<br />
$found = &#8220;true&#8221;;<br />
}<br />
}</p>
<p># if present, print present, otherwise, print not present</p>
<p>if ($found eq &#8220;true&#8221;) {<br />
my @grepResults = `grep $searchWord /usr/share/dict/words`;<br />
foreach my $result (@grepResults) {<br />
chomp ($result);<br />
if ($result eq $searchWord) {<br />
$found = &#8220;false&#8221;;<br />
}<br />
}</p>
<p>if ($found eq &#8220;true&#8221;) {<br />
print &#8220;\n$searchWord was found&#8221;;<br />
}</p>
<p>}<br />
else {</p>
<p>}</p>
<p>$i++;<br />
}</p></blockquote>
<p>As always, if you see something miserably wrong with the code or have any comments, feel free to drop me a line.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/19/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s Everyone&#8217;s Fault</title>
		<link>http://errorsuccess.12gaugemedia.com/blog/archives/18</link>
		<comments>http://errorsuccess.12gaugemedia.com/blog/archives/18#comments</comments>
		<pubDate>Tue, 18 Sep 2007 05:26:37 +0000</pubDate>
		<dc:creator>theNirvana</dc:creator>
				<category><![CDATA[OCaml]]></category>
		<category><![CDATA[Rants & Raves]]></category>

		<guid isPermaLink="false">http://errorsuccess.12gaugemedia.com/blog/archives/18</guid>
		<description><![CDATA[&#8230;and no one&#8217;s. We have an infrastructure that is ridiculously difficult to maintain and even more difficult to make &#8220;simple&#8221; changes to. It&#8217;s often come up as to whose fault it is that it ended up this way. But it&#8217;s my opinion that it&#8217;s all of our faults, and at the same time, none of [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;and no one&#8217;s. We have an infrastructure that is ridiculously difficult to maintain and even more difficult to make &#8220;simple&#8221; changes to. It&#8217;s often come up as to whose fault it is that it ended up this way. But it&#8217;s my opinion that it&#8217;s all of our faults, and at the same time, none of our faults.<br />
<span id="more-18"></span><br />
I don&#8217;t blame the original developers for their choice of language (OCaml). As in my &#8216;About&#8217; page, I don&#8217;t think the choice of language particularly damns us. However, I believe that a very small number of critical mistakes were made that have resulted in the current state of affairs. I was not in employment when the development was made, so I do not have insight to their working conditions or their rebuttals to the following list. I can only speak for what I have seen, and I make this short list knowing it is incomplete and biased. In no particular order:</p>
<ul>The documentation is incomplete and inconsistent. We have placed most of it on a central server, but the organization of it does not easily lend itself to be found. I had to dive through all the folders to find documentation that until now, I didn&#8217;t even know existed or had seen before long ago. Furthermore, it lacks the documentation needed for several key infrastructure services such as our identity management daemon (RMWD).</ul>
<ul>The knowledge transfer process was definitely lacking. This is the main part that I believe is everyone&#8217;s fault and no one&#8217;s. It&#8217;s like that feeling you get when you&#8217;re supposed to hang out with your friends and they don&#8217;t call you that day, but you don&#8217;t call them either. Neither the leaving developers nor the management made the knowledge transfer a priority, but we didn&#8217;t know the gravity of the situation. But then again, how could we have? It&#8217;s no excuse for sure, it&#8217;s just my rebuttal.</ul>
<p>I suppose I could go on, but I think that pretty much covers it. Of course, please give me your input on this, especially if you feel differently.</p>
]]></content:encoded>
			<wfw:commentRss>http://errorsuccess.12gaugemedia.com/blog/archives/18/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

