<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-705477899976079362</id><updated>2011-09-30T09:35:49.267-07:00</updated><category term='SGN workshop'/><category term='Rickshaw'/><category term='funding'/><category term='SOL meeting'/><category term='India'/><category term='databases'/><title type='text'>solgenomics</title><subtitle type='html'>A blog about bioinformatics, genomics, genome sequencing and databases, including technical aspects and funding issues, but also gossip.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>solgenomics</name><uri>http://www.blogger.com/profile/18418257920658356259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-4895113940452049319</id><published>2011-09-30T09:33:00.000-07:00</published><updated>2011-09-30T09:35:49.300-07:00</updated><title type='text'>Call for abstracts, Solanaceae workshop, Plant and Animal Genome meeting, San Diego, Jan 14, 2012</title><content type='html'>&lt;div&gt;&lt;div bgcolor="#ffffff" text="#000000"&gt;&lt;div&gt;&lt;div&gt;Continuing a tradition started last year, some of the talks will be selected from           abstracts submitted by the Solanaceae community. The work           should be advanced, and either address a fundamental -omic           question, or use -omics approaches to address a fundamental           biological question in the field of Solanaceae. The abstract           should be accompanied by a half page indicating the status of           the work (preliminary findings, manuscript in preparation,           manuscript submitted) and justifying why it should be selected           for an oral communication.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The abstract and accompanying half           page should be sent &lt;b&gt;by&lt;/b&gt; &lt;b&gt;Monday, Oct 10 &lt;/b&gt;to:&lt;/div&gt;         &lt;div&gt;&lt;a send="true" href="mailto:douchesd@msu.edu"&gt;douchesd@msu.edu&lt;/a&gt;&lt;/div&gt;         &lt;div&gt;&lt;a send="true" href="mailto:giovanni.giuliano@enea.it"&gt;giovanni.giuliano@enea.it&lt;/a&gt;&lt;/div&gt;         &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Selected speakers will be notified by mid-October. Please           note that the PAG organization does not refund travel or lodging expenses. &lt;/div&gt;         &lt;div&gt;&lt;br /&gt;&lt;/div&gt;         &lt;div&gt;David S. Douches, Michigan State University&lt;/div&gt;         &lt;div&gt;Giovanni Giuliano, Italian National Agency for New           Technologies, Energy and Sustainable Development&lt;/div&gt;         &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-4895113940452049319?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/4895113940452049319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2011/09/call-for-abstracts-solanaceae-workshop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/4895113940452049319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/4895113940452049319'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2011/09/call-for-abstracts-solanaceae-workshop.html' title='Call for abstracts, Solanaceae workshop, Plant and Animal Genome meeting, San Diego, Jan 14, 2012'/><author><name>Rob Buels</name><uri>http://www.blogger.com/profile/13919649482680123095</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZYJ_B25f994/TCOn-jUpdTI/AAAAAAAAAAM/cS0IXlX2j_E/s1600-R/2b58e6fd798a51ca881eb33e3e339c74.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-7290267799064437604</id><published>2010-09-13T13:26:00.000-07:00</published><updated>2010-09-13T13:28:47.535-07:00</updated><title type='text'>Call for abstracts: Solanaceae workshop, PAG 2011, San Diego, Jan 18, 2011</title><content type='html'>&lt;div&gt;&lt;div bgcolor="#ffffff" text="#000000"&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Call for abstracts, Solanaceae workshop, Plant and animal           Genome meeting, San Diego, Jan 18, 2011&lt;/b&gt;&lt;/div&gt;         &lt;div&gt;&lt;br /&gt;        &lt;/div&gt;         &lt;div&gt;This year, we'd like to introduce an innovation in the way           we select the speakers for the workshop. Next to the           traditionally invited speakers, we'd like to select some from           abstracts submitted by the Solanaceae community. The work           should be advanced, and either address a fundamental -omic           question, or use -omics approaches to address a fundamental           biological question in the field of Solanaceae. The abstract           should be accompanied by a half page indicating the status of           the work (preliminary findings, manuscript in preparation,           manuscript submitted) and justifying why it should be selected           for an oral communication. The abstract and accompanying half           page should be sent &lt;b&gt;by&lt;/b&gt; &lt;b&gt;Friday, Sept 30 &lt;/b&gt;to:&lt;/div&gt;         &lt;div&gt;&lt;a send="true" href="mailto:douchesd@msu.edu"&gt;douchesd@msu.edu&lt;/a&gt;&lt;/div&gt;         &lt;div&gt;&lt;a send="true" href="mailto:giovanni.giuliano@enea.it"&gt;giovanni.giuliano@enea.it&lt;/a&gt;&lt;/div&gt;         &lt;div&gt;Selected speakers will be notified by mid-October. Please           note that the PAG organization does not refund any expenses or           levy registration fees for the speakers. Therefore, before           submitting your abstract please check that you have the           financial coverage to come to San Diego.&lt;/div&gt;         &lt;div&gt;&lt;br /&gt;        &lt;/div&gt;         &lt;div&gt;Looking forward to a high profile Solanaceae genomics           workshop!&lt;/div&gt;         &lt;div&gt;&lt;br /&gt;        &lt;/div&gt;         &lt;div&gt;David S. Douches, Michigan State University&lt;/div&gt;         &lt;div&gt;Giovanni Giuliano, Italian National Agency for New           Technologies, Energy and Sustainable Development&lt;/div&gt;         &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-7290267799064437604?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/7290267799064437604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/7290267799064437604'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2010/09/call-for-abstracts-solanaceae-workshop.html' title='Call for abstracts: Solanaceae workshop, PAG 2011, San Diego, Jan 18, 2011'/><author><name>Rob Buels</name><uri>http://www.blogger.com/profile/13919649482680123095</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZYJ_B25f994/TCOn-jUpdTI/AAAAAAAAAAM/cS0IXlX2j_E/s1600-R/2b58e6fd798a51ca881eb33e3e339c74.jpeg'/></author></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-9158634610118584510</id><published>2010-08-15T18:41:00.000-07:00</published><updated>2010-08-15T19:37:07.406-07:00</updated><title type='text'>Stumbling on Subtle Errors</title><content type='html'>As a budding programmer - and perhaps not the most logical one - I have probably done more debugging than the average person. However, it has allowed me to notice small details which some of the better programmers may not notice (because they are wiser and never make those weird mistakes). Below, I will expand on my numerous problems, and hope that maybe it will be useful to some new intern with a crazy mindset like me.&lt;br /&gt;&lt;br /&gt;Most of my work was related to the SGN database. Thus, I needed to use postgreSQL and DBIx::Class (a Perl module which allows the user to access the database through Perl code instead of SQL). Here we go!&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;strong&gt;1. The query does not end until you add a semicolon, no matter how many times you press enter.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The database does not necessarily work like the terminal, even though you're still technically typing in the terminal. In the terminal, the query ends the moment you press enter, even if you get an error message. However, in the database, you have to type a semicolon first, or it will simply assume that your query is ongoing.&lt;br /&gt;&lt;br /&gt;For example, when creating a table, you can split your query into several lines:&lt;br /&gt;&lt;br /&gt;CREATE TABLE Persons&lt;br /&gt;(&lt;br /&gt;p_id int,&lt;br /&gt;lastname varchar(255),&lt;br /&gt;firstname varchar(255),&lt;br /&gt;address varchar(255),&lt;br /&gt;city varchar(255)&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;Or you can put it all on one line and let the text wrap:&lt;br /&gt;&lt;br /&gt;CREATE TABLE Persons (p_id int, lastname varchar(255), firstname varchar(255), address varchar(255), city varchar(255));&lt;br /&gt;&lt;br /&gt;The downfall of entering a query on several lines is that you cannot go back to fix your mistakes. (Well, you could try to open an editor and fix it there, but that's a pain.) You are better off typing it all on one line, adding a semicolon at the end, and then hitting enter. But if you find yourself stuck in a query, type &lt;strong&gt;Ctrl + C&lt;/strong&gt; to get out of it.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;strong&gt;2. In the database, put strings in single quotes.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It doesn't like double quoted strings, so just don't do it.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;strong&gt;3. In DBIx::Class, find() returns a row object, and search() returns a resultset.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The find() method will give you only one row of information. Use it when you know that there should be only one result returned. You can easily access information by typing the column name. For instance:&lt;br /&gt;&lt;br /&gt;my $pet = $schema-&gt;resultset('Animals')-&gt;find({name =&gt; 'Jojo'});&lt;br /&gt;my $type_of_animal = $pet-&gt;type;&lt;br /&gt;&lt;br /&gt;The search() method returns several rows of information. Thus, I usually try to store this result in an array, because I find it easier to access. However, storing it in a scalar and using -&gt;next() to access the next row of info is fine, too. Here is an example:&lt;br /&gt;&lt;br /&gt;my @pet = $schema-&gt;resultset('Animals')-&gt;search({name =&gt; 'Jojo'});&lt;br /&gt;my $type_of_animal = $pet[0]-&gt;type;&lt;br /&gt;&lt;br /&gt;(You may need to type $pet-&gt;get_column('type'); This is especially when there is more than one result after doing the search.)&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;strong&gt;4. When typing in the resultset and search_related arguments, use the module names, not the database names.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Try to follow this example:&lt;br /&gt;&lt;br /&gt;1. Let's say we create two tables called “dog” and “cat” in the database (all lowercase letters).&lt;br /&gt;2. Then we created perl modules called Dog.pm and Cat.pm.&lt;br /&gt;3. In Dog.pm, let's say some programmer decided to write:&lt;br /&gt;__PACKAGE__-&gt;has_many(“cats”, “Schema::Cat”, {“foreign.id” =&gt; “self.id”})&lt;br /&gt;4. In Cat.pm, he wrote:&lt;br /&gt;__PACKAGE__-&gt;has_many(“dogs”, “Schema::Dog”, {foreign.id” =&gt; “self.id”});&lt;br /&gt;&lt;br /&gt;Here's how you would use this info:&lt;br /&gt;my $pet = $schema-&gt;resultset('Dog')-&gt;search_related('cats', {id =&gt; 3});&lt;br /&gt;my $pet = $schema-&gt;resultset('Cat')-&gt;search_related('dogs', {id =&gt; 25});&lt;br /&gt;&lt;br /&gt;Notice that for the resultset(), you use the module name. For search_related(), you use the table name found in that module, not the table name found in the database (like I instinctively wanted to use when I first started).&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;strong&gt;5. Some helpful database, SQL and DBIx::Class syntax which is not as easily found online:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Going through the database:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\dn&lt;/strong&gt; – shows the schemas in the database&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\dt &lt;/strong&gt;– shows the tables in the current schema&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\d table_name &lt;/strong&gt;– shows the columns and other info for that specific table&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SET search_path TO schema_name &lt;/strong&gt;– use this to go to a different schema&lt;br /&gt;&lt;br /&gt;**********************************************************&lt;br /&gt;&lt;em&gt;Some SQL:&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;For searching for parts of a string:&lt;br /&gt;&lt;br /&gt;SELECT * FROM table_name WHERE column_name ilike '%string%';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another way to join tables - use USING instead of ON (as shown in &lt;a href="http://www.w3schools.com/"&gt;http://www.w3schools.com/&lt;/a&gt;), but make sure to include parentheses around the column name:&lt;br /&gt;&lt;br /&gt;SELECT * FROM table_name JOIN table2_name USING (column_name_in_common);&lt;br /&gt;&lt;br /&gt;**********************************************************&lt;br /&gt;&lt;em&gt;...And some DBIx::Class:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Searching for an item in a list of items – don't just type in the array – you need to use 'in':&lt;br /&gt;&lt;br /&gt;my @num = qw/1 3 4 7 9/;&lt;br /&gt;my @search = $schema-&gt;resultset('Animals')-&gt;search({animal_id = {'in' =&gt; [@num]}});&lt;br /&gt;&lt;br /&gt;**********************************************************&lt;br /&gt;Let me note that anything you type in DBIx::Class can be written as SQL. For instance, the example above can also be written as:&lt;br /&gt;&lt;br /&gt;SELECT * FROM animals WHERE animal_id IN (1, 3, 4, 7, 9);&lt;br /&gt;&lt;br /&gt;However, when writing this stuff in a Perl script, DBIx::Class is easier. If you used SQL in Perl, you would have to prepare the query, execute, and fetch the results into variables. However, with DBIx::Class, this is done just by creating resultset objects. Also, DBIx::Class has an auto-loader, which means that you never have to worry about keeping your classes in sync with the database schemas. Doesn't that sound nice?&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;And there you have it. Hope this information is at least somewhat helpful to you all!&lt;br /&gt;&lt;br /&gt;P.S. If anyone says DBIC, it's just a short acronym for DBIx::Class. ;)&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Helpful Sources:&lt;br /&gt;&lt;br /&gt;SQL: &lt;a href="http://www.w3schools.com/sql/default.asp"&gt;http://www.w3schools.com/sql/default.asp&lt;/a&gt;&lt;br /&gt;DBIx::Class: &lt;a href="http://search.cpan.org/~jrobinson/DBIx-Class-Tutorial-0.0001/"&gt;http://search.cpan.org/~jrobinson/DBIx-Class-Tutorial-0.0001/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-9158634610118584510?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/9158634610118584510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2010/08/stumbling-on-subtle-errors-as-budding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/9158634610118584510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/9158634610118584510'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2010/08/stumbling-on-subtle-errors-as-budding.html' title='Stumbling on Subtle Errors'/><author><name>Jean</name><uri>http://www.blogger.com/profile/16587572946911322677</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-1638556853147610942</id><published>2010-07-19T06:21:00.000-07:00</published><updated>2010-07-19T06:55:47.484-07:00</updated><title type='text'>Ajax: Making the Web Even More Interactive</title><content type='html'>&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;" id="internal-source-marker_0.873776353807945"&gt;Ajax (Asynchronous Javascript and XML) is a web programming technique that uses other web technologies, such as JavaScript and XML, to make web pages and web applications more interactive.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;In order to fully understand and appreciate the concept and capabilities of Ajax, it is important to know how JavaScript works. JavaScript is an object-oriented scripting language that is primarily used in the form of client-side script. It is called a ‘client-side JavaScript’ because the code runs locally on the client’s web browser instead of on a remote server. Because it runs locally, it can respond quickly to the user input, making the web page or application more responsive. JavaScript can be used to write functions that are embedded in HTML pages, and these functions can interact with the Document Object Model (DOM) of the page. When the functions are called, certain content in the page can update without requiring the entire page to reload. Some basic examples of this are changing images or text on as the cursor moves over them, or for input validation of a web form to make sure the user input is acceptable before being submitted to the server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;However, as useful as Javascript is, it does not have the ability to exchange information between the web browser and the remote server. This is where AJAX is needed. AJAX allows the web browser to communicate with a remote server. You might be thinking that it has always been possible your web browser to communicate with the web server, so why do we need Ajax? Indeed, browsers can exchange data the web server, but only with an HTML form that can GET or POST information. After the response is sent back to the browser the entire page must reload in order to see the result of the user input. Reloading the entire page is inefficient and with a slow Internet connection, can be rather annoying. Ajax has the ability to send user-generated requests to a web server and update the results on the page without requiring the rest of the page to reload. With these powerful capabilities, Ajax has become a popular web technology. Google is known as the pioneer in Ajax development since it was the first to launch a large implementation of Ajax with its popular Gmail. Google Suggest and Google Maps are also made possible via Ajax.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Although Ajax stands for ‘asychronous JavaScript and XML’ neither language is required to create an Ajax request. This emphasizes the fact that Ajax is more of a concept, rather than a language. JavaScript is commonly used in Ajax forms, but XML is often replaced with JSON ( JavaScript object notation).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Below is an example of an Ajax request which interacts with a server side script (which in this case is a perl script). In turn, the server side script queries a database with the search term sent from the Ajax request and returns the results in a JSON object which is then parsed and print to the result of the search query.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;function update_result(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;var species = $("species").value;      //the value sent from the search field&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;var result_space = $("result_space");  //result_space is a div on the page&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;new Ajax.Request("/serverside_script.pl", {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               parameters: {species: species},  //sent to the server side script&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               onSuccess: function(response){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;                   var json = response.responseText; //results returned as JSON object            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;                   var result = eval("("+json+")");  //eval function parses string&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;                   var html = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               for (var r in result){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;                      html+=result[r]+"&lt;br/&gt;";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               if(json=="{}"){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;                       html="No matches found.";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;                   result_space.innerHTML=html;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;               }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;       });&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;While Ajax is very useful, there are several caveats. It is not entirely trivial to develop code that utilizes Ajax, especially when compared to traditional html forms. Luckily, there are several tutorials online that give a great introduction to Ajax and an overview of its syntax. However, purchasing a textbook on Ajax might be worthwhile, especially if you are not an experienced web developer. Another drawback, which is not really specific to Ajax, but to all dynamic web pages, is that using the browsers back button or bookmarking a pages does not work as expected. The solution to this is to give the page a unique URL identifier which allows the user to return to the page in a specific state.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Overall, Ajax is one of the most useful web technologies that exists today. It is used often and widely throughout the web in places that one may not even realize. Learning Ajax is beneficial to both novice and experienced web developers alike. Below are links to Ajax, JavaScript, and JSON tutorials and general information.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/ajax/default.asp"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;http://www.w3schools.com/ajax/default.asp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/js/default.asp"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;http://www.w3schools.com/js/default.asp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.json.org/"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;http://www.json.org/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-1638556853147610942?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/1638556853147610942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2010/07/ajax-making-web-even-more-interactive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1638556853147610942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1638556853147610942'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2010/07/ajax-making-web-even-more-interactive.html' title='Ajax: Making the Web Even More Interactive'/><author><name>Dean</name><uri>http://www.blogger.com/profile/12393770285091623565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-6060525325478117164</id><published>2010-06-29T12:14:00.000-07:00</published><updated>2010-06-30T09:57:16.259-07:00</updated><title type='text'>Prototype: Easier Way to Javascript</title><content type='html'>   	&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Linux)"&gt; 	&lt;style type="text/css"&gt; 	&lt;!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;  &lt;p style="margin-bottom: 0in;"&gt;Before delving into Prototype, I will explain the basic purpose and importance of using Javascript in web development. So, Why use Javascript in the first place instead of just HTML? Well, Javascript widens the user's scope to  add flexibility and interactivity to a web page as opposed to HTML. While HTML is often flat and static, Javascript is dynamic and incredibly more interactive with the user and server. It adds more control to the user of software objects and relies on the environment the user is trying to control as opposed to HTML which, in a way, can be more stand alone. &lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;Prototype is a Javascript library that allows user all ready familiar with Javascript or some sort of programming to write Javascript in an easier and clearer syntactical fashion.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;The creators of this Javascript library describe Prototype's purpose as it's ability "to ease the development of dynamic web applications."&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt; They were right: Prototype simplifies the complexity 	of coding  Javascript for sophisticated web applications including 	methods in its library to help increase efficiency , conciseness of commonly used or tedious Javascript tasks.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;&lt;blockquote style="color: rgb(0, 0, 0);"&gt;&lt;p style="margin-bottom: 0in; color: rgb(255, 204, 0);"&gt;Most Common Uses/Features for Prototype JS:&lt;/p&gt; 	&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;span style="color: rgb(255, 204, 0);"&gt;AJAX Requesting&lt;/span&gt;&lt;/p&gt; 		&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;span style="color: rgb(255, 204, 51);"&gt;Arrays, Hashes,String&lt;/span&gt;&lt;/p&gt; 		&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;span style="color: rgb(255, 204, 0);"&gt;Utility methods&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(102, 204, 204);"&gt;AJAX &lt;/span&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;span style="font-size:85%;"&gt;The Prototype Javascript library simplifies Ajax Requesting for the user by creating methods which have an easy to understand syntax and design.&lt;br /&gt;An Ajax Request &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 204, 204);font-size:85%;" &gt;life cycle&lt;/span&gt;&lt;span style="font-size:85%;"&gt; includes :&lt;br /&gt;Created, Initialized, Request Sent, Response being received, Response received.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242);"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;        &lt;span style="color: rgb(51, 0, 51);"&gt;Sample AJAX Request&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code  style="color: rgb(102, 204, 204);font-family:times new roman;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(255, 204, 51);"&gt;Ajax.Request&lt;/span&gt;('url call here',&lt;/code&gt;&lt;code  style="color: rgb(102, 204, 204);font-family:times new roman;"&gt;&lt;br /&gt;                                {&lt;/code&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-family:times new roman;font-size:85%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204); font-family: times new roman;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    method&lt;/span&gt;:'get',&lt;br /&gt;                                    &lt;/code&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;font-size:85%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;parameters&lt;/span&gt;: {key: 'value' , key2: number, etc..},&lt;br /&gt;                                     &lt;/code&gt;&lt;code face="times new roman" style="color: rgb(102, 204, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;onSuccess&lt;/span&gt;: function(transport){&lt;/code&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-family:times new roman;font-size:85%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204);"&gt;      var response = transport.responseText ||                  "no response text";&lt;/code&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-family:times new roman;font-size:85%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204);"&gt;      alert("Success! \n\n" + response);&lt;/code&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-family:times new roman;font-size:85%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204);"&gt;    },&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-family:times new roman;font-size:85%;"  &gt;                                                      &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;onFailure&lt;/span&gt;: function(){ alert('Something went wrong...') }&lt;/code&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:times new roman;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204); font-weight: bold;font-family:times new roman;font-size:85%;"  &gt;   &lt;/span&gt;&lt;span style="font-weight: bold;font-family:times new roman;font-size:85%;"  &gt;&lt;code style="color: rgb(102, 204, 204);"&gt;});&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;    &lt;/p&gt;&lt;span style="font-size:85%;"&gt;Seen above, &lt;span style="font-weight: bold; color: rgb(102, 204, 204);"&gt;onSuccess&lt;/span&gt; &amp;amp; &lt;span style="color: rgb(102, 204, 204); font-weight: bold;"&gt;onFailure&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;are only two of the &lt;span style="color: rgb(0, 204, 204);"&gt;onXXXX&lt;/span&gt; family of options allowed in the Ajax.Request. Others include :&lt;span style="font-weight: bold; color: rgb(102, 204, 204);"&gt; onUinitialized, onLoading, onLoaded, onInteractive, onComplete, onException&lt;/span&gt;; this allows for more customization to your Ajax request. Furthermore, the user can add parameters ( that you may need to process in your back end  script )can be sent through the Ajax.Request object expanding the possibility of options for modeling your code. The methods option for an Ajax request simply reffers to a GET or POST requests. More often than not, a common use of Ajax.Request can be dealing with some sort of Form. A very convenient feature of Prototype is the fact that when the user needs to pass a parameter from a Form with the request, they can utilize the method : Form.serialize..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242);font-family:times new roman;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;$('form id').serialize(true) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:85%;" &gt;→&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(102, 204, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pass this as a parameter&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;    &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;Moreover, Prototype simplifies the updating of HTML within containers in your script using Ajax.Updater.  Similar to the &lt;span style="color: rgb(102, 204, 204); font-weight: bold;"&gt;onComplete&lt;/span&gt; in Ajax.Request, the Ajax.Updater makes it easier for the user to update any HTML code.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242); text-align: center;"&gt;&lt;span style="color: rgb(102, 204, 204);font-family:times new roman;font-size:85%;"  &gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;new&lt;/span&gt; Ajax.Updated ('container id', 'url', {&lt;span style="color: rgb(0, 0, 0);"&gt;method&lt;/span&gt;: 'get'});&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-weight: bold;"&gt;&lt;span style="font-size:78%;"&gt;More to look at: Ajax.PeriodicalUpdater&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-weight: bold; color: rgb(102, 204, 204);"&gt;Arrays, Hashes, and other components&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;----------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;The Array class adds variety of functionalities to primitive arrays that use [] indexing and can be a pain to deal with. Using the Array class,the user can find much of the functionality confined to much cleaner methods. Such include push,pop,concat,etc.. &lt;span style="color: rgb(255, 204, 0); font-weight: bold;"&gt;[[&lt;/span&gt;&lt;a href="http://www.prototypejs.org/api/array"&gt;http://www.prototypejs.org/api/array&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(255, 204, 0);"&gt;]]&lt;/span&gt; that make the manipulation of Arrays that much easier. Also involved in the Array class is the Enumerable class whose capabilities can increase the functionality in traversing Arrays. The API for Enumerable &lt;span style="color: rgb(255, 204, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 204, 0);"&gt;&lt;span style="font-weight: bold;"&gt;[&lt;/span&gt;&lt;a href="http://www.prototypejs.org/api/enumerable"&gt;http://www.prototypejs.org/api/enumerable&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 0); font-weight: bold;"&gt;]]&lt;/span&gt;can be seen on jsprototype.org. Hashes, a commonly used and useful tool,  have become convenient through Prototype as well by allowing for two ways to create them : new Hash() or $H(). This allows a user who has knowledge of  the hash to utilize its many benefits.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; font-weight: bold; color: rgb(102, 204, 204);"&gt;Utility Methods&lt;/p&gt; -----------------------------------------------------------------------------------------------------------------------------------------&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;These methods 	are most commonly used by programmers and is what makes Prototype a 	refined library that has made javascript much easier to use&lt;/span&gt;.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;&lt;div  style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242);font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;$('id')&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;span style="font-family:arial;"&gt;- this is an alias to document.getElementById('id');.. but instead of constantly having to tediously type this out, the user can use this Prototype shortcut and accomplish the exact same task&lt;/span&gt;.&lt;/span&gt;&lt;p style="font-family: times new roman;"&gt;&lt;/p&gt; 	&lt;/li&gt;&lt;li  style="font-family:times new roman;"&gt;&lt;div style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242);"&gt;&lt;span style="font-size:85%;"&gt;$F(element)&lt;/span&gt;&lt;/div&gt; &lt;span style=";font-family:arial;font-size:85%;"  &gt;→&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; 	retrieves the value of this Form element..alias of Form.Element.getValue&lt;/span&gt;&lt;/li&gt;&lt;li  style="font-family:times new roman;"&gt;&lt;div style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242);"&gt;&lt;span style="font-size:85%;"&gt;$A(iterable) -&gt;actualArray&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt; – 	turns into Array object&lt;/span&gt; 	&lt;/li&gt;&lt;li&gt;&lt;div  style="border: 1px solid rgb(0, 0, 0); background-color: rgb(242, 242, 242);font-family:times new roman;"&gt;&lt;span style="font-size:85%;"&gt;$w(String)&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;-&gt;Array – turns a 	string into an array using space as delimiter.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;MORE SOURCES&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;API Documentation:&lt;span style="font-weight: bold; color: rgb(255, 204, 0);"&gt;[[&lt;a href="http://api.prototypejs.org/"&gt;http://api.prototypejs.org&lt;/a&gt;/]]&lt;/span&gt;&lt;br /&gt;JS Prototype home:&lt;span style="font-weight: bold; color: rgb(255, 204, 0);"&gt;[[&lt;a href="http://prototypejs.org/"&gt;http://prototypejs.org/&lt;/a&gt;]]&lt;/span&gt;&lt;br /&gt;Prototype Guide:&lt;span style="font-weight: bold; color: rgb(255, 204, 0);"&gt; [[&lt;a href="http://www.sergiopereira.com/articles/prototype.js.html"&gt;http://www.sergiopereira.com/articles/prototype.js.html&lt;/a&gt;]]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-6060525325478117164?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/6060525325478117164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2010/06/prototype-javascript-just-got-easier.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/6060525325478117164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/6060525325478117164'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2010/06/prototype-javascript-just-got-easier.html' title='Prototype: Easier Way to Javascript'/><author><name>vsk23</name><uri>http://www.blogger.com/profile/02270287091121968681</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-4940854099277486096</id><published>2010-06-26T15:44:00.000-07:00</published><updated>2010-06-28T08:47:37.644-07:00</updated><title type='text'>New SGN site design element</title><content type='html'>The SGN site (&lt;a href="http://solgenomics.net/"&gt;http://solgenomics.net/&lt;/a&gt;) just go a lot prettier - and hopefully more functional for users as well. We have added some beautiful graphical menus, with an example shown in the picture below. Note how the agricultural field (how appropriate!) gives a 3-D impression with a perspective whose vanishing point coincides with the 'Genes' icon. We felt that the most important menu item should be at the vanishing point, if only because Leonardo daVinci put Jesus in the vanishing point in his famous &lt;a href="http://en.wikipedia.org/wiki/The_Last_Supper_(Leonardo_da_Vinci)"&gt;last supper painting&lt;/a&gt;. In design questions, it's always good if you can side with someone like Leonardo! Thanks to web designer Camilo Rosero for this beautiful design!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 209px;" src="http://3.bp.blogspot.com/_z7bw5-EAJV0/TCaFEd8BOtI/AAAAAAAAAA0/cD0SqfLCLHI/s320/sgn_menu.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5487219507799866066" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-4940854099277486096?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/4940854099277486096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2010/06/new-graphical-menus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/4940854099277486096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/4940854099277486096'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2010/06/new-graphical-menus.html' title='New SGN site design element'/><author><name>solgenomics</name><uri>http://www.blogger.com/profile/18418257920658356259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_z7bw5-EAJV0/TCaFEd8BOtI/AAAAAAAAAA0/cD0SqfLCLHI/s72-c/sgn_menu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-1100459723411895288</id><published>2010-05-05T11:12:00.001-07:00</published><updated>2010-05-05T11:22:42.473-07:00</updated><title type='text'>Open source bioinformatics</title><content type='html'>All the code developed at SGN is "open source". Why the quotes? Because so far, no-one really could see our code. Of course, if you requested it, we provided it. But that is not yet the whole story to open source. Ideally, you would like to collaboratively develop code with others in the community, and merge in improvements made by others. However, merging back changes from outside SGN into the code base was, up to now, too cumbersome, and basically required giving other people full access to our filesystem, which is dangerous.&lt;br /&gt;&lt;br /&gt;The version control system called &lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;git&lt;/span&gt;&lt;/span&gt; has really changed that. Every git "checkout" contains the entire history of the project, which means that there is not really a central repository anymore - all are equivalent. What the central repository is, is just a convention. There are websites like http://github.com, which host git repositories (for small repositories, it is even free). We have exported our git repositories to github.com, from where anyone in the world can 'clone' our repository, make changes, and feed back changes for merging with our repository, which is particularly simple using git.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our git repository can be accessed at http://github.com/solgenomics . &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-1100459723411895288?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/1100459723411895288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2010/05/open-source-bioinformatics.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1100459723411895288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1100459723411895288'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2010/05/open-source-bioinformatics.html' title='Open source bioinformatics'/><author><name>solgenomics</name><uri>http://www.blogger.com/profile/18418257920658356259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-7769807323733814860</id><published>2009-11-30T20:18:00.000-08:00</published><updated>2009-11-30T20:43:08.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='funding'/><title type='text'>Database funding issues</title><content type='html'>&lt;div&gt;Recently, &lt;a href="http://arabidopsis.org"&gt;TAIR&lt;/a&gt; announced that its funding will steeply decrease over the next three years, which obviously has shocked the database community. While reductions in funding - and declined proposals - are part of the game, reducing TAIR all the way to zero seems to be a risky proposition. TAIR provides most of the "annotation material" for the entire plant database community. Therefore, TAIR funding must be such that it can continue to operate and fulfill its mission. However, it is also true that the funding model for databases needs to change. Instead of large grants, such as the ones that TAIR is based on, databases should be funded by large projects that produce a lot of data. Such projects could, for example, fund partial FTEs at the appropriate database, which would then integrate the data. (The really time consuming part of running a database is the integration of new data types). Of course, databases could still apply for other types of grants, such as for the creation of new bioinformatics tools. With this proposed funding model, the databases would naturally scale with the amount of data that is being incorporated. However, funding agencies would have to mandate this policy and resist the urge to fund lots of smaller project databases that will not be sustainable in the future. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_z7bw5-EAJV0/SxSZbZVYylI/AAAAAAAAAAs/nvBx_LpnKaE/s1600/tair_funding_graph.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://4.bp.blogspot.com/_z7bw5-EAJV0/SxSZbZVYylI/AAAAAAAAAAs/nvBx_LpnKaE/s320/tair_funding_graph.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5410117748314917458" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-7769807323733814860?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/7769807323733814860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2009/11/database-funding-issues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/7769807323733814860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/7769807323733814860'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2009/11/database-funding-issues.html' title='Database funding issues'/><author><name>solgenomics</name><uri>http://www.blogger.com/profile/18418257920658356259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_z7bw5-EAJV0/SxSZbZVYylI/AAAAAAAAAAs/nvBx_LpnKaE/s72-c/tair_funding_graph.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-1312497290591560296</id><published>2009-11-28T17:49:00.000-08:00</published><updated>2009-11-28T18:19:53.611-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='India'/><category scheme='http://www.blogger.com/atom/ns#' term='Rickshaw'/><category scheme='http://www.blogger.com/atom/ns#' term='SGN workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='SOL meeting'/><title type='text'>SOL meeting in New Delhi, India</title><content type='html'>&lt;p&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_z7bw5-EAJV0/SxHWdFaoIiI/AAAAAAAAAAk/wlAnCbLR7Ik/s320/IMG_4030.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5409340422607086114" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_z7bw5-EAJV0/SxHVjqU2ixI/AAAAAAAAAAU/U-Z1DASZFNg/s320/IMG_3922.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5409339436082563858" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_z7bw5-EAJV0/SxHWDWXt31I/AAAAAAAAAAc/ICjFT89MRG0/s1600/IMG_3926.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_z7bw5-EAJV0/SxHWDWXt31I/AAAAAAAAAAc/ICjFT89MRG0/s320/IMG_3926.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5409339980481683282" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;The SOL meeting 2009 (see &lt;a href="http://sol2009.org/"&gt;http://sol2009.org&lt;/a&gt;) was a huge success. There were more than 325 participants, and a full and enticing program, including a well attended (50 people) SGN workshop, as well as cultural offerings.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-1312497290591560296?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/1312497290591560296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2009/11/sol-meeting-in-new-delhi-india.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1312497290591560296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1312497290591560296'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2009/11/sol-meeting-in-new-delhi-india.html' title='SOL meeting in New Delhi, India'/><author><name>solgenomics</name><uri>http://www.blogger.com/profile/18418257920658356259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_z7bw5-EAJV0/SxHWdFaoIiI/AAAAAAAAAAk/wlAnCbLR7Ik/s72-c/IMG_4030.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-705477899976079362.post-1958079786896104829</id><published>2009-11-28T17:45:00.001-08:00</published><updated>2009-11-28T17:49:10.731-08:00</updated><title type='text'>The Solgenomics blog</title><content type='html'>This is the blog of the Sol Genomics Network (SGN), a clade oriented database (COD) for the species of the Solanaceae (tomato, potato, pepper, tobacco, petunia, eggplant) and related Asterid model species, such as coffee and snapdragon. See &lt;a href="http://solgenomics.net/"&gt;http://solgenomics.net&lt;/a&gt; .&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The topic of this blog is bioinformatics, genomics, genome sequencing and databases, including technical aspects but also funding issues, and gossip.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/705477899976079362-1958079786896104829?l=solgenomics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://solgenomics.blogspot.com/feeds/1958079786896104829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://solgenomics.blogspot.com/2009/11/solgenomics-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1958079786896104829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/705477899976079362/posts/default/1958079786896104829'/><link rel='alternate' type='text/html' href='http://solgenomics.blogspot.com/2009/11/solgenomics-blog.html' title='The Solgenomics blog'/><author><name>solgenomics</name><uri>http://www.blogger.com/profile/18418257920658356259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
