tag:blogger.com,1999:blog-58749187256971461922024-03-13T08:49:10.275+05:30BLOG MIGRATED !!!!!!!! Now scribbing at : <a href="http://roomforcreativity.wordpress.com">http://roomforcreativity.wordpress.com</a>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.comBlogger41125tag:blogger.com,1999:blog-5874918725697146192.post-986493426624855032012-06-13T04:01:00.003+05:302012-06-13T04:01:16.743+05:30Setting up Log4PHP with Code-Igniter<div class='posterous_autopost'><p>No BS, the steps are as following -</p> <p>1. Clone the github project at <a href="https://github.com/fukata/ci-log4php">https://github.com/fukata/ci-log4php</a></p> <p> </p> <p>>: git clone <a href="https://github.com/fukata/ci-log4php.git">https://github.com/fukata/ci-log4php.git</a></p> <p /> <div>2. The ci-log4php directory has 2 folders. Copy and paste the ci_log4php folder in /application/third_party/</div> <p /> <div>3. From the other folder Copy MY_Log.php file. Open config.php.</div> <div>If $config['subclass_prefix'] = 'MY_';</div> <div>then place the MY_Log.php file in /application/libraries/</div> <p /> <div>4. Similarly Place the log4php.properties in /application/config folder and log4php_helper.php in /application/helpers folder</div> <p> </p> <p>5. Edit the log4php.properties file. Set logs logs folder path</p> <p>log4php.appender.default.file = /path/to/ci-app/application/logs/%s.log</p> <p>6. Set the $config['log_threshold'] = 4; in config.php according to :</p> <p> <ul> <li>| 0 = Disables logging, Error logging TURNED OFF</li> <li>| 1 = Error Messages (including PHP errors)</li> <li>| 2 = Debug Messages</li> <li>| 3 = Informational Messages</li> <li>| 4 = All Messages</li> </ul> </p> <p>7. Go inside the application folder and run > chmod -R 777 ./logs</p> <p>8. Use these commands for logging -</p> <p> <span style=""> </span>// log_error('thiserror');</p> <p><span style=""> </span>// log_info('thisinfo');</p> <p><span style=""> </span>// log_debug('thisdebug');</p> </div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-59127975290144308842012-06-13T04:01:00.001+05:302012-06-13T04:01:04.726+05:30Enabling SSL on MAC OS-X Snow Leopard<div class='posterous_autopost'><p>cd /private/etc/apache2/</p> <p>openssl req -keyout privkey-$(date +%Y-%m).pem -newkey rsa:2048 -nodes -x509 -days 365 -out cert-$(date +%Y-%m).pem</p> <div class="CodeRay"> <div class="code"><pre>Country Name (2 letter code) [AU]:CH State or Province Name (full name) [Some-State]:Zurich Locality Name (eg, city) []:Zurich Organization Name (eg, company) [Internet Widgits Pty Ltd]:Entropy Organizational Unit Name (eg, section) []:Secure Server Administration Common Name (eg, YOUR name) []:www.entropy.ch Email Address []:liyanage@access.ch</pre></div> </div> <p style="text-align: left;">Make sure to enter the sitename properly.</p> <p>Make sure that TextEdit is not running, then type these lines into the terminal window:</p> <p>chmod 600 privkey-YYYY-MM.pem</p> <p>chown root privkey-YYYY-MM.pem</p> <p>open -a TextEdit /etc/apache2/httpd.conf</p> <p>Uncomment the lines -</p> <ul> <li>LoadModule ssl_module libexec/apache2/mod_ssl.so</li> <li>Include /private/etc/apache2/extra/httpd-ssl.conf </li> </ul> <p>open -a TextEdit /etc/apache2/extra/httpd-ssl.conf</p> <p>Edit these lines -</p> <ul> <li># General setup for the virtual host</li> <li>DocumentRoot "/Library/WebServer/Documents/new-ui/app/webroot"</li> <li>ServerName <a href="http://www.gohachi.com:443">www.gohachi.com:443</a></li> <li>ServerAdmin <a href="mailto:mayank@hachilabs.com">mayank@hachilabs.com</a></li> </ul> <ul> <li>SSLCertificateFile /etc/apache2/cert-YYYY-MM.pem</li> <li>SSLCertificateKeyFile /etc/apache2/privkey-YYYY-MM.pem</li> </ul> <p /> <div>Restart apache</div> <p /> <div>Hit <a href="https://localhost/">https://localhost/</a></div></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-45415181634523078112012-06-13T04:00:00.009+05:302012-06-13T04:00:57.139+05:30Media Coverage!<div class='posterous_autopost'><p>Today we released out Twitter Integration.</p> <ul> <li>Hachi on <a href="http://techcrunch.com/2012/05/04/hachi-combines-linkedin-facebook-twitter-google-into-one-lets-you-search-all-your-connections-at-once/">Techcrunch</a></li> <li>Hachi on <a href="http://betakit.com/2012/05/16/hachi-launches-google-maps-for-connections-introductions-tool">BetaKit</a></li> <li>Hachi on <a href="http://pandodaily.com/2012/05/16/hachi-adds-twitter-integration-to-its-intelligent-social-referral-platform-launches-private-beta-invites/">Pandodaily</a></li> </ul> <p><a href="http://techcrunch.com/2012/05/04/hachi-combines-linkedin-facebook-twitter-google-into-one-lets-you-search-all-your-connections-at-once/"></a></p> <p class="p1">Other media coverage -</p> <ul> <li><a href="http://www.talenthq.com/2012/05/4-great-tools-for-recruiting-sales/">http://www.talenthq.com/2012/05/4-great-tools-for-recruiting-sales/</a></li> <li><a href="http://teleinfobd.blogspot.in/2012/05/hachi-new-social-networking-dimension.html">http://teleinfobd.blogspot.in/2012/05/hachi-new-social-networking-dimension.html</a></li> <li><a href="http://www.the33tv.com/community/facebook/kdaf-hachi-social-contacts-portal-story,0,3990138.story">http://www.the33tv.com/community/facebook/kdaf-hachi-social-contacts-portal-story,0,3990138.story</a></li> <li><a href="http://pandodaily.com/news/hachi-one-social-contacts-portal-to-rule-them-all/"><span class="s2">http://pandodaily.com/news/hachi-one-social-contacts-portal-to-rule-them-all/</span></a></li> <li>The Spanish Techcrunch - Explains the large number of spanish users in our system currently <a href="http://wwwhatsnew.com/2012/04/17/hachi-para-encontrar-el-camino-mas-corto-que-nos-separa-con-cualquier-persona/">http://wwwhatsnew.com/2012/04/17/hachi-para-encontrar-el-camino-mas-corto-que-nos-separa-con-cualquier-persona/</a></li> </ul></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-82918830755471162912012-06-13T04:00:00.005+05:302012-06-13T04:00:32.692+05:30Symynd - Share your M'yn'd<div class='posterous_autopost'><p> <p>Today I was moved to Symynd [<a href="http://www.symynd.com">http://www.symynd.com</a>], a project built in Django, a web-development Framework built upon Python. Setting up the project on mac took quite some effort since I had to install a lot of Python and Django libraries to get the project running.</p> <p>I am thinking of writing a script to make the setup process easy. Will probably work on that tomorrow.</p> </p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-47702811831351568582012-06-13T04:00:00.003+05:302012-06-13T04:00:21.823+05:30Hadoop!<div class='posterous_autopost'><p>Hadoop is a large-scale distributed batch processing infrastructure. Batch processing is execution of a series of programs (jobs) on a computer without manual intervention. </p> <p>Hadoop includes a distributed file system which breaks up input data and sends fractions of the original data to several machines in your cluster to hold. This results in the problem being processed in parallel using all of the machines in the cluster and computes output results as efficiently as possible. </p> <p>Hadoop is designed to handle hardware failure and data congestion issues very robustly.</p> <p>In a Hadoop cluster, data is distributed to all the nodes of the cluster as it is being loaded in. [Data is distributed across nodes at load time.]</p> <p>The Hadoop Distributed File System (HDFS) will split large data files into chunks which are managed by different nodes in the cluster. In addition to this each chunk is replicated across several machines, so that a single machine failure does not result in any data being unavailable. Even though the file chunks are replicated and distributed across several machines, they form a single namespace, so their contents are universally accessible.</p> <p> Hadoop will not run just any program and distribute it across a cluster. Programs must be written to conform to a particular programming model, named "MapReduce."</p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com1tag:blogger.com,1999:blog-5874918725697146192.post-14211476326290168002012-06-13T04:00:00.001+05:302012-06-13T04:00:14.193+05:30Plan for the day<div class='posterous_autopost'><p>The plan for today is simple -</p> <ul> <li><span style="text-decoration: line-through;">Read 2 chapters of TiJ</span></li> <li><span style="text-decoration: line-through;">Make notes for the 2 chapters</span></li> <li>Read Yahoo! tutorial on Hadoop</li> <li><span style="text-decoration: line-through;">Optimize the codebase for the PlaceIQ project</span></li> <li><span style="text-decoration: line-through;">Read an essay from Hackers and Painters</span></li> <li><span style="text-decoration: line-through;">Solve some algorithm questions</span></li> </ul></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-3620052694192531052012-06-13T03:59:00.007+05:302012-06-13T03:59:57.645+05:30Bloom Filters<div class='posterous_autopost'><p>Bloom filters are probabilistic data-structures built with the aim of handling specific usecases of huge DataSets while keeping the memory consumption minimum. Bloom filters are created by parsing the dataset once and once the entire dataset is parsed, the Bloom filters can be used to quickly Query if a particular Data item is there in the dataset or not.</p> <p>An important thing to note is that Bloom filters can return False Positives but never False negatives. That means if a Query made on a Bloom Filter returns that an item doesnt exist in a dataset we can be sure about this result, but if the Query made on the Bloom Filter returns that data exists in the dataset, there is a small chance that the element might not exist in the dataset.</p> <p>BloomFilters consist of a Number of hashtables of fixed sizes. Initially all the bits are set to zero in all the tables.</p> <p>Each word of the dataset is hashed individually into the Bloom Filters using a single Hash Function or separate hash Functions, and the mod of the value returned by the hash is % with the size of the hashtable and the result key is set to 1.</p> <p>The data-structure is probabilistic because there is a low but finite probability that two words will have collisions in each of the hash tables and Query might return true for one of them even though it might not be present in the original dataset. However, the chances of such errors are very low and BloomFilters can be customized, configured and optimized to better suit the given DataSet.</p> <p>Many kinds of variations exist. One which use a single hash function for all tables has tables of varying lengths, so the % comes out to be different. Another implementation uses multiple hash functions but just a single hash table, where all the generated hashes are set.</p> <p>From <a href="http://www.javamex.com/tutorials/collections/bloom_filter.shtml">http://www.javamex.com/tutorials/collections/bloom_filter.shtml</a> -</p> <ul style="font-family: Verdana, Helvetica, Gill Sans, Verdana, arial, sans-serif; font-size: 15px;"> <li>we allocate <strong><em>m</em> bits</strong> to represent the set data;</li> <li>we write a hash function that, instead of a single hash code, produces <strong><em>k</em> hash codes</strong> for a given object;</li> <li>to add an object to the set, we derive <strong>bit indexes from all <em>k</em> hash codes</strong> and set those bits;</li> <li>to determine if an object is in the set, we again calculate the corresponding hash codes and bit indexes, and say that it is present if and only if <strong><em>all</em> corresponding bits are set</strong>.</li> </ul> <p> </p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-55691891167246840452012-06-13T03:59:00.005+05:302012-06-13T03:59:47.577+05:30Java vs. C++<div class='posterous_autopost'><p>I ve been reading this book "Thinking in Java" and the Author keeps stressessing over the fact that Java is an improved version of C++ and other Object oriented languages in all aspects. The Java way to do things is always better and correct according to him.</p> <p>Though he explains well why certain desicisions were taken by the developers of Java language, and how it benefits the developers, I would have appreciated the book more if he also talked about the flipside of the decisions taken while developing the language. Understanding the negative consequences of a design decision is as important as it is to know what benifits it provides.</p> <p>UPDATE: On page 103, finally, the author says and I quote : </p> <blockquote class="posterous_short_quote"> <p>... As you progress in this book, you ll see that many parts are simpler, and yet in other ways Java isn't much easier than C++ ...</p> </blockquote> <p> </p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-22732394909794509532012-06-13T03:59:00.003+05:302012-06-13T03:59:38.756+05:30Thinking in Java<div class='posterous_autopost'><p>Started reading the book Thinking in Java by Bruce Eckel. Aiming to complete the book in 3 weeks. Here is a list of chapters in the book -</p> <p>Will strike out the names as i complete them.</p> <ol> <li><span style="text-decoration: line-through;">Introduction 13</span> May 5</li> <li><span style="text-decoration: line-through;">Introduction to Objects 2</span> May 5</li> <li><span style="text-decoration: line-through;">Everything Is an Object 61 </span> May 5</li> <li><span style="text-decoration: line-through;">Operators 93 </span>May 8</li> <li><span style="text-decoration: line-through;">Controlling Execution 135</span> May 8</li> <li><span style="text-decoration: line-through;">Initialization & Cleanup 155</span> May 8</li> <li>Access Control 209</li> <li>Reusing Classes 237</li> <li>Polymorphism 277</li> <li>Interfaces 311</li> <li>Inner Classes 345</li> <li>Holding Your Objects 389</li> <li>Error Handling with Exceptions 443</li> <li>Strings 503</li> <li>Type Information 553</li> <li>Generics 617</li> <li>Arrays 747</li> <li>Containers in Depth 791</li> <li>I/O 901</li> <li>Enumerated Types 1011</li> <li>Annotations 1059</li> <li>Concurrency 1109</li> <li>Graphical User Interfaces 1303</li> </ol> <p> </p> <p> </p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-57721608677979645942012-06-13T03:59:00.001+05:302012-06-13T03:59:07.467+05:30Getting started with Hadoop and MapReduce<div class='posterous_autopost'><p>Map Reduce is a programming paradigm developed for creating high scale data crunching programs by dividing the workload among several parallel machines. Hadoop MapReduce is the framework on which such programs are written.</p> <p>Input data is fed as Key-Value pairs and the output is also in the form of Key-Value pairs, which enables Chaining of multiple MapReduce jobs one after the other.</p> <p>This is what I ll be reading to get started -</p> <p><a href="http://developer.yahoo.com/hadoop/tutorial/">http://developer.yahoo.com/hadoop/tutorial/</a></p> <p><a href="http://developer.yahoo.com/blogs/hadoop/">http://developer.yahoo.com/blogs/hadoop/</a></p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-22935850349974527092012-06-13T03:58:00.007+05:302012-06-13T03:58:50.517+05:30Ruby Java Bridge<div class='posterous_autopost'><p>A week ago while working on a Ruby on Rails project, I had to generate a highly complex excel file for certain Reporting requirements of the client. Previously I had used the Spreadsheet gem for generating the xls templates but it was clear spreadsheet was not going to be enough, since it works well on predefined templates only. We also looked at some other gems like WriteExcel but could not find a gem which was robust enough for our purpose.</p> <p>When all hope was lost, we had to revert to Java, and fortunately Java had some jars which we could use for our requirement. We wrote the code in Java and using the Ruby Java Bridge gem, we could successfully generate the required excel report by reusing the Java code.</p> <p>Link [Tutorial for RJB gem] <a href="http://www.ibm.com/developerworks/java/tutorials/j-rjb/index.html">http://www.ibm.com/developerworks/java/tutorials/j-rjb/index.html</a></p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-5399450832911922582012-06-13T03:58:00.005+05:302012-06-13T03:58:42.064+05:30The 6 URLs<div class='posterous_autopost'><p>This morning I got an email from my Manager instructing me to read and learn about <span style="">Hadoop and MapReduce</span>, along with six URLs to help me getting started -</p> <ol> <li><a href="http://hadoop.apache.org/common/docs/r0.20.203.0/mapred_tutorial.html" style="">Map-Reduce Tutorial</a></li> <li><a href="http://developer.yahoo.com/blogs/hadoop/posts/2010/08/apache_hadoop_best_practices_a/" style="font-size: medium;">Apache Hadoop: Best Practices and Anti-Patterns</a></li> <li><a href="http://www.scribd.com/doc/23046928/Hadoop-Performance-Tuning" style="">Hadoop Performance Tuning</a></li> <li><a href="http://www.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performance/" style="">7 tips for improving Map-Reduce performance</a></li> <li><a href="http://www.cloudera.com/blog/2011/06/migrating-from-elastic-mapreduce-to-a-cloudera%E2%80%99s-distribution-including-apache-hadoop-cluster/?s-distribution-including-apache-hadoop-cluster/" style="font-size: medium;">Migrating from Elastic MapReduce to a Cloudera's Distribution including Apache Hadoop Cluster</a></li> <li><a href="http://www.cloudera.com/blog/2009/03/configuration-parameters-what-can-you-just-ignore/" style="font-size: medium;">Configuration paramaters - What can you just ignore?</a></li> </ol> <p>Seems like an interesting project is coming up :)</p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-56115551158349391622012-06-13T03:58:00.003+05:302012-06-13T03:58:36.376+05:30TopCoder !<div class='posterous_autopost'><p> <p>A friend talked about his idea of opening a startup today. His idea is to create a website similar to Pagalguy.com for engineering students (Pagalguy is for MBA). Agreed to develop the website for him if he could wait till July.</p> <p>At Kuliza, I am researching over Groovy and Grails, a web development framework similar to ROR.</p> <p>In other news, the awesome Topcoder tshirt finally arrived today; had lunch at Meghna Biryani; had a huge brawl with the house owner and the building watchman and finally decided to shift to a new home. Probably will shift to Bohmannahalli area. Travelling in Bangalore really sucks.</p> </p> <p><div class='p_embed p_image_embed'> <a href="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-05-03/bcyjuIcIlFaHswzoiwnvIIpEebdssrJFEHInzysvlpoBgypzqpikEtEHbzvp/DSC00806.JPG.scaled1000.jpg"><img alt="Dsc00806" height="375" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-05-03/bcyjuIcIlFaHswzoiwnvIIpEebdssrJFEHInzysvlpoBgypzqpikEtEHbzvp/DSC00806.JPG.scaled500.jpg" width="500" /></a> </div> </p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-13970070588465465252012-06-13T03:58:00.001+05:302012-06-13T03:58:17.714+05:30Hello World!<div class='posterous_autopost'><p>++++++++++[>+++++++<-]>++.>++++++++++[>++++++++++<-]>+.>++++++++++[>++++++++++<-]>++++++++.>++++++++++[>++++++++++<-]>++++++++.>++++++++++[>+++++++++++<-]>+.>++++++++++[>+++<-]>++.>++++++++++[>++++++++<-]>+++++++.>++++++++++[>+++++++++++<-]>+.>++++++++++[>+++++++++++<-]>++++.>++++++++++[>++++++++++<-]>++++++++.>++++++++++[>++++++++++<-]>.>++++++++++[>+++<-]>+++.></p> <p> </p> <p class="p1">Thats Hello world! for you in<a href="http://en.wikipedia.org/wiki/Brainfuck"> BrainFuck</a> Programming Language. To run the code, use the <span style="font-family: sans-serif; line-height: 20px;">interpreter provided at </span><span style="font-family: sans-serif;"><span style="line-height: 20px;">http://brainfuck.tk/ :)</span></span> </p></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-25901538169236142462012-06-13T03:57:00.001+05:302012-06-13T03:57:35.220+05:30Enabling SSL on MAC OS-X Snow Leopard<div class='posterous_autopost'><p>cd /private/etc/apache2/</p> <p>openssl req -keyout privkey-$(date +%Y-%m).pem -newkey rsa:2048 -nodes -x509 -days 365 -out cert-$(date +%Y-%m).pem</p> <div class="CodeRay"> <div class="code"><pre>Country Name (2 letter code) [AU]:CH State or Province Name (full name) [Some-State]:Zurich Locality Name (eg, city) []:Zurich Organization Name (eg, company) [Internet Widgits Pty Ltd]:Entropy Organizational Unit Name (eg, section) []:Secure Server Administration Common Name (eg, YOUR name) []:www.entropy.ch Email Address []:liyanage@access.ch</pre></div> </div> <p style="text-align: left;">Make sure to enter the sitename properly.</p> <p>Make sure that TextEdit is not running, then type these lines into the terminal window:</p> <p>chmod 600 privkey-YYYY-MM.pem</p> <p>chown root privkey-YYYY-MM.pem</p> <p>open -a TextEdit /etc/apache2/httpd.conf</p> <p>Uncomment the lines -</p> <ul> <li>LoadModule ssl_module libexec/apache2/mod_ssl.so</li> <li>Include /private/etc/apache2/extra/httpd-ssl.conf </li> </ul> <p>open -a TextEdit /etc/apache2/extra/httpd-ssl.conf</p> <p>Edit these lines -</p> <ul> <li># General setup for the virtual host</li> <li>DocumentRoot "/Library/WebServer/Documents/new-ui/app/webroot"</li> <li>ServerName <a href="http://www.gohachi.com:443">www.gohachi.com:443</a></li> <li>ServerAdmin <a href="mailto:mayank@hachilabs.com">mayank@hachilabs.com</a></li> </ul> <ul> <li>SSLCertificateFile /etc/apache2/cert-YYYY-MM.pem</li> <li>SSLCertificateKeyFile /etc/apache2/privkey-YYYY-MM.pem</li> </ul> <p /> <div>Restart apache</div> <p /> <div>Hit <a href="https://localhost/">https://localhost/</a></div></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-28390935470489429992012-06-13T03:56:00.001+05:302012-06-13T03:56:41.353+05:30Setting up Log4PHP with Code-Igniter<div class='posterous_autopost'><p>No BS, the steps are as following -</p> <p>1. Clone the github project at <a href="https://github.com/fukata/ci-log4php">https://github.com/fukata/ci-log4php</a></p> <p> </p> <p>>: git clone <a href="https://github.com/fukata/ci-log4php.git">https://github.com/fukata/ci-log4php.git</a></p> <p /> <div>2. The ci-log4php directory has 2 folders. Copy and paste the ci_log4php folder in /application/third_party/</div> <p /> <div>3. From the other folder Copy MY_Log.php file. Open config.php.</div> <div>If $config['subclass_prefix'] = 'MY_';</div> <div>then place the MY_Log.php file in /application/libraries/</div> <p /> <div>4. Similarly Place the log4php.properties in /application/config folder and log4php_helper.php in /application/helpers folder</div> <p> </p> <p>5. Edit the log4php.properties file. Set logs logs folder path</p> <p>log4php.appender.default.file = /path/to/ci-app/application/logs/%s.log</p> <p>6. Set the $config['log_threshold'] = 4; in config.php according to :</p> <p> <ul> <li>| 0 = Disables logging, Error logging TURNED OFF</li> <li>| 1 = Error Messages (including PHP errors)</li> <li>| 2 = Debug Messages</li> <li>| 3 = Informational Messages</li> <li>| 4 = All Messages</li> </ul> </p> <p>7. Go inside the application folder and run > chmod -R 777 ./logs</p> <p>8. Use these commands for logging -</p> <p> <span style=""> </span>// log_error('thiserror');</p> <p><span style=""> </span>// log_info('thisinfo');</p> <p><span style=""> </span>// log_debug('thisdebug');</p> </div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-56507051130548566992011-10-12T21:56:00.000+05:302011-10-12T21:58:10.348+05:30Is Schema.org the right way to go?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-size: small;">[ Originally written for Kuliza Technologies on June 14th, 2011 ]</span><br />
<span style="font-size: large;">Did the three big companies take the correct decision in introducing Schema.org ?</span><br />
<br />
Semantic web is a web of information, which is marked with machine
understandable metadata in addition to the Human readable web-content.
Recently, Google, Yahoo and Microsoft collaborated and came up with
Schema.org, which is their privately <a href="http://www.schema.org/">hosted</a> Semantic mark-up vocabulary.<br />
This introduction has been a hot topic of discussion in the Semantic
web community, majorly because of the syntax chosen by the three
companies to develop the vocabulary. The major issue with this release
has been that the terms in Schema.org are expressed in microdata syntax,
as opposed to the currently popular RDFa serialization of RDF. I am
currently contributing open-source code to the Semantic web community
through my project, which involves creating an RDF Vocabulary publishing
platform. So maybe I might appear a bit biased towards RDFa over
microdata here.<br />
<br />
<div style="color: orange;">
<b>Bit of History -</b></div>
RDF is a knowledge representation framework that encodes data as
subject-predicate-object triples. When you combine triples, they form
graphs. Initially, RDF/XML serialization format was used for semantic
marking, and it separated the semantic marking from the HTML content.
Over the course of time, Microformat syntax emerged, wherein the
Semantic metadata content was integrated into the HTML itself. RDFa is
another serialization of RDF, that was based on Microformat, i.e.,
integrating HTML Content and the metadata. Microdata is a set of tags,
introduced with HTML5, which claimed to improve upon RDFa.<br />
An important thing to note here is that RDFa and Microdata – both are
syntaxes. Both are both Entity-Attribute-Value models that support
using URIs as universal identifiers. There also exists an algorithm for
converting Microdata to RDF. On the other hand, Schema.org is a
vocabulary. A vocabulary has terms, which can be specified in any
syntax. Schema.org terms have been originally specified in Microdata
syntax.<br />
<br />
<div style="color: orange;">
<b>Can’t we just specify all the terms in RDFa syntax and continue using them?</b></div>
The answer is Yes, and as a matter of fact, the work is already in
progress as I write this post. People in the RDFa community, Richard
Cyganiak (My Google summer of code 2011 mentor) and Michael Hausenblas,
have worked to develop an RDFS definition for the terms of Schema.org,
and hosted it at <a href="http://schema.rdfs.org/">http://schema.rdfs.org/</a>.<br />
<br />
<div style="color: orange;">
<b>So what is the issue here?</b></div>
Google has asked the web community to use either microdata or RDFa since using both the syntaxes confuses its parsers.<br />
<i> </i><br />
<blockquote>
<i>“While it’s OK to use the new schema.org mark-up or continue to
use existing Microformat or RDFa mark-up, you should avoid mixing the
formats together on the same web page, as this can confuse our parsers.”
… “If you have already done mark-up and it is already being used by
Google, Microsoft, or Yahoo!, the mark-up format will continue to be
supported. Changing to the new mark-up format could be helpful over time
because you will be switching to a standard that is accepted across all
three companies, but you don’t have to do it.”</i></blockquote>
<br />
And then it adds:<br />
<blockquote>
<i>“We will also be monitoring the web for RDFa and Microformat
adoption and if they pick up, we will look into supporting these
syntaxes.”</i></blockquote>
This sounds as if Google is pushing developers who are looking for
SEO to start using microdata syntax, a standard that is not in much use
yet, since it gets a sort of priority in its parsing algorithms. This
takes away the freedom from the developers to choose whatever syntax
works best for them. Although RDFa is a bit more complex than
Microdata, it can covers more use cases, and some developers might be
more comfortable using it.<br />
<br />
Few years ago, the web-developers community was reluctant in
semantically marking their web-content. The semantic web community
worked hard to make the web developers understand the future benefits of
having linked data all over the web. So, many of the developers slowly
started using RDFa and Microformat, and a recent survey showed that 4%
of websites used RDFa, which is more than any other. See <a href="http://tripletalk.files.wordpress.com/2011/01/rdfa-deployment.png">http://tripletalk.files.wordpress.com/2011/01/rdfa-deployment.png</a> for the comparison.<br />
<br />
RDFa is being used by Drupal 7, Facebook OGP, Best Buy, all
e-commerce sites which use the GoodRelations Vocabulary and many more
major deployments globally.<br />
And now schema.org asks them to learn a new syntax yet again. Lets
face it; if Google, MS and yahoo declare that they would support only
microdata for parsing content on the web, most of the web developers who
are majorly looking for SEO would definitely follow. This would
adversely affect the growth of RDFa deployments.<br />
<br />
Thus, a large portion of the Semantic Web community is not happy with
the decisions. Some believe that the vocabularies provided by
schema.org won’t suffice if you want to cover complex domains since it
is not extensible.<br />
<br />
Another matter of concern is that it seems w3c was not consulted at
all, while schema.org was developed. Commercialization of standards is
never a good thing, and that’s what Schema.org does. In fact, Manu
Sporny, chairperson of RDFa group in w3c, has been very aggressive in
opposing schema.org and he goes to the extent of saying that he would
soon start a revolution against “The false choice” of using microdata in
schema.org. I have been following him on twitter and he has been
gathering support there to put pressure on the three big Companies. He
also believes that “Microdata doesn’t scale as easily as RDFa – early
successes will be followed by stagnation and vocabulary lock-in.”<br />
<br />
<div style="color: orange;">
<b>The solutions-</b></div>
The most obvious solution to this problem is that Google, bing and
yahoo announce that they would treat RDFa and microdata with equal
priority in their parsing algorithms.<br />
Bing has already stated that it can parse a page that includes
multiple syntaxes. However, Google parsers cant do this, and needs to
incorporate this feature in their parsing algorithms as soon as
possible.<br />
<br />
<div style="color: orange;">
<b>However…</b></div>
Schema.org does seem to have a created a lot of negative buzz, but
lets not forget that some kind of RDF vocabulary standardization like
this was long due. Currently, due to lack of a definite standard, it is
difficult for developers to decide on which one to use for mark-up.
Schema.org does solve this problem and makes life easier for developers
as well as for search engines. As Google states:<br />
<i> </i><br />
<blockquote>
<i>“Creating a schema supported by all the major search engines
makes it easier for webmasters to add mark-up, which makes it easier for
search engines to create rich search features for users.”</i></blockquote>
</div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com2tag:blogger.com,1999:blog-5874918725697146192.post-62202211539088994232011-09-16T11:08:00.000+05:302011-09-25T19:46:32.579+05:30Kuliza@Mysore Day 1<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="color: orange;">
We want to implelemt a working prototype of a sharing/analytics widget like easyshare, within 7 days. The widget is targetted at e-commerce platforms.</div>
<br />
<br />
<span style="font-size: large;">Problem :</span><br />
<br />
Person 1 shares a link through our widget on facebook.<br />
Person 2 shares the same link through our widget on facebook.<br />
Person 3 reshares the same link on facebook by seeing Person 1's shared link.<br />
Person 4,5 and 6 reshare the same link on facebook by seeing Person 2's shared link.<br />
Person 7,8,9 and 10 see Person 3's link and reshare it.<br />
<br />
We need to find who was the most influential person among each one who shared.<br />
<br />
<br />
<span style="font-size: large;">Tree models :</span><br />
1 --- 3 --- (7,8,9,10)<br />
2 --- (4,5,6)<br />
As we can see here, Person 3 is the most influential here.<br />
<br />
<br />
<span style="font-size: large;">Solution :</span><br />
<br />
Consider Person 1 and 2 as the root users. When a root user shares our link on facebook, we store the following in the backend :<br />
1. Our system generated userid<br />
2. Facebook id of the person<br />
3. URL shared<br />
4. parent Id : null<br />
<br />
Then we append a query parameter to the URL which is the facebook User Id of the root user and shotren it using bit.ly, and then this link is shared.<br />
<br />
eg. Person 1 shares http:www.hostname/productpage<br />
we store Person 1's facebook userId and the URL http:www.hostname/productpage in the backend.<br />
<br />
Now we append the url with a query parameter and shorten the url using bitly.<br />
<br />
http:www.hostname/productpage/?q=userid<br />
bit.ly/Li32df34<br />
<br />
Then we share this link on facebook.<br />
<br />
When a new person Re-shares the same link on facebook using the link provided by person 1:<br />
<br />
Store the following in the database :<br />
1. Our system generated userid<br />
2. Facebook id of the new person<br />
3. URL shared (got through the parent)<br />
4. parent Id : id retrieved from the query parameter.<br />
<br />
In this way, we can track the most influential user by querying to get the id which appears maximum time in the parentid.<br />
<br />
Using bitly APIs, we can track the number of hits for a particular URL and hence find out the most influencial person.</div>
maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-90957293826410574272011-08-04T23:43:00.001+05:302011-08-04T23:45:27.567+05:30#Note PHP get contents of a remotely hosted file without cross-domain ajax<div dir="ltr" style="text-align: left;" trbidi="on">$file = file_get_contents('http://qa.agrinova.intuit.com/webmetrics/farmerCount.groovy');<br />
echo $file;<br />
<br />
Output :<br />
<br />
<blockquote><?xml version="1.0"?><br />
<webmetrics xmlns='http://agrinova.intuit.com'><br />
<farmer_count>290158</farmer_count><br />
<statewise_count state='GJ' count='135070' /><br />
<statewise_count state='AP' count='155088' /><br />
</webmetrics><br />
</blockquote><br />
<webmetrics xmlns="http://agrinova.intuit.com"><statewise_count count="135070" state="GJ"> <statewise_count count="155088" state="AP"><br />
</statewise_count></statewise_count></webmetrics><br />
<br />
</div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-56716907080043025652011-06-25T12:52:00.000+05:302011-06-25T12:52:47.705+05:30Updates : Porting Neologism to Drupal 7 [3]<div dir="ltr" style="text-align: left;" trbidi="on">A lot has happened in the project since the last post. In fact, I am ready with my mid-term submission.<br />
<br />
The three content types : vocabulary, class and property have been added to the port. The fields that have been added are :<br />
<br />
Vocabulary :<br />
<ul style="text-align: left;"><li>Title</li>
<li> Namespace URI</li>
<li>Authors</li>
<li>Abstract</li>
<li>Body</li>
<li>Additional Custom RDF</li>
</ul><br />
Class :<br />
<ul style="text-align: left;"><li>Related vocabulary</li>
<li>Class URI</li>
<li>Label</li>
<li>Comment</li>
<li>Superclass</li>
<li>Disjoint with </li>
<li>Details</li>
</ul><br />
Property :<br />
<ul style="text-align: left;"><li>Related Vocabulary</li>
<li>Property URI</li>
<li>Label</li>
<li>Comment</li>
<li>Details</li>
<li>Functional Property</li>
<li>Inverse Functional Property</li>
<li>Domain</li>
<li>Range</li>
<li>Superproperty</li>
<li>Inverse</li>
</ul>The vocabulary, class and property are correctly being registered with evoc.<br />
<br />
Next steps are mentioned by Richard here- <br />
http://drupal.org/node/1196510<br />
<br />
<br />
<br />
<br />
</div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0Bengaluru, Karnataka, India12.9715987 77.59456269999998312.7518902 77.342821199999989 13.191307199999999 77.846304199999977tag:blogger.com,1999:blog-5874918725697146192.post-62278884068353074232011-05-26T13:25:00.001+05:302011-05-27T17:57:26.010+05:30Updates : Porting Neologism to Drupal 7 [2]<div dir="ltr" style="text-align: left;" trbidi="on">Coding period has started.<br />
<br />
We decided to start by creating bundles for :<br />
<ul style="text-align: left;"><li>Vocabulary</li>
<li>Class</li>
<li> Property</li>
</ul>References module will be used for creating fields field_type Node Reference.<br />
<br />
<br />
</div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-70671209757730500252011-05-16T15:21:00.001+05:302011-05-16T17:36:20.798+05:30Updates : Porting Neologism to Drupal 7<div dir="ltr" style="text-align: left;" trbidi="on">Wiki page of the Project : <a href="http://groups.drupal.org/node/145269">http://groups.drupal.org/node/145269</a><br />
<br />
Project page on drupal.org : <a href="http://drupal.org/project/neologism" title="http://drupal.org/project/neologism">http://drupal.org/project/neologism</a><br />
<br />
We would be using the issue queue on drupal.org for all discussions related to the project and the entire drupal community can provide suggestions. This is the link to the issue queue of Neologism :<br />
<a href="http://drupal.org/project/issues/neologism?categories=All">http://drupal.org/project/issues/neologism?categories=All</a><br />
<br />
Lin Clark gave a short introductory session over skype on how to use the issue queue on drupal.org and the git and told about various portals which could be useful during the project like <a href="http://drupal.stackexchange.com/">http://drupal.stackexchange.com/</a><br />
<br />
Richard created a branch for the project on the drupal.org Neologism repository. We had two options, either we could clone the entire D6 code into the branch and then transform it to a D7 Module step by step, or start with an empty branch and then add feature after feature. We chose the second option since it was cleaner and always gave us a working drupal 7 module.<br />
<br />
Also, I would be working on my new MacBook Pro for GSoC and since I had previously worked only on Windows while developing on Drupal, I contacted Guido, who is currently the main developer of Neologism, so he could help me with the development environment for the project.<br />
<br />
I have a basic Drupal 7 website running on MAMP and will be using Komodo for development and Command Line Interface for GIT.</div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com2tag:blogger.com,1999:blog-5874918725697146192.post-30744245263261337442011-05-16T14:52:00.002+05:302011-05-16T15:00:35.366+05:30GSoC 2011 Proposal for Drupal : Porting Neologism to Drupal 7<div dir="ltr" style="text-align: left;" trbidi="on"><div><span style="font-size: small;">I support Drupal's vision to become the best CMS in projects related to Semantic web.<br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;">In view of the above initiative, Drupal 7 comes with a core RDF module. There is a contributed RDF module as well which allows us to extend the functionality of the core module through :<br />
1. RDFx - Provides additional serialization formats.<br />
2. RDF-UI - UI to specify RDF Mappings.<br />
3. Evoc - UI to import Vocabularies and store them in DB.</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;">For different sites to have perfectly interoperable RDF, they should use the same RDF vocabulary. It is a fact that presently no comprehensive vocabulary exists which can provide predicates to suit each and every Semantic web-development project. For instance, foaf may be a very good choice of RDF vocabulary when it comes to building social networking web-sites. However, if one wants to create a project which involves Learning Resource Objects, foaf would not be able to provide predicates for all the Learning object metadata elements. That's why it's important to be able to create new vocabularies according to the specific requirements of the project.</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><br />
As of now, there is no standard User interface for creating an entire RDF Vocabulary in Drupal 7. One has to write an RDF Schema in XML format and then register it with Drupal using Evoc.<br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><b>My initial idea :</b></span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;">I initially wanted to extend the functionality of the Contributed RDF Module by adding a User Interface to "create" and "register" customised RDF-vocabularies. The module would generate the corresponding RDFS in backend and allow the user to register the vocabulary with the Drupal and provide an easy UI for creating the vocabularies in the frontend.<br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><b>Why I felt the Need for this extension :</b></span> <br />
<div><span style="font-size: small;">Since the Drupal has a relatively steep learning curve, we must try to make things as easy as possible for the newbies so that more and more people can enthusiastically join Drupal's Semantic initiative and start using Drupal for their Semantic Web Projects.</span></div></div><span style="font-size: small;"> </span><br />
<div><div><span style="font-size: small;">Using the User Interface that I planned to develop, someone with even a little knowledge of writing an RDF Schema would be able to create and register his own vocabulary.<br />
</span></div></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><b>Change of Plans :</b></span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;">I thus went ahead and posted my proposal on GSoC-11 Drupal Group.<br />
<br />
As you can see here(<a href="http://groups.drupal.org/node/136969" target="_blank">http://groups.drupal.org/node/136969</a>), the discussions turned out to be very fruitful indeed. Lin Clark advised me to have a look at the ongoing Neologism Project(<a href="http://neologism.deri.ie/" target="_blank">http://neologism.deri.ie/</a>), which provided a free and open-source vocabulary publishing platform. It turned out to be functionally very similar to what I had planned for my project. However, Neologism is not yet available as a module for Drupal 7, Lin also advised me to get in touch with Richard Cyganiak (<a href="http://richard.cyganiak.de/" target="_blank">http://richard.cyganiak.de/</a>), who was actively working on Neologism development.<br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;">Neologism is a powerful codebase for publishing customised vocabularies that is already in quite some use in the RDF community, but using it in existing Drupal sites is difficult since there is no dedicated D7 Module. Moreover, the code is hosted on Google Code Repositories. To confuse matters further, there is a very old version of the neologism module on Drupal.org, which was not updated as the project progressed on Google Code. It also has several dependencies, a few of which are not even easily available on the internet since the previously existing links are now broken. So there was scope of collaboration.<br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;">I contacted Richard and we discussed my project proposal over several emails. Richard informed me that he would soon be working to port Neologism to D7. I offered to do it as a part of my GSoC project. I felt it was better to contribute to Neologism module rather than creating another module from scratch which overlaps in functionality with the upcoming Neologism module. Moreover, Neologism has many good features like a vocabulary overview diagram and a time tested User Interface, due to which it makes even more sense to port it to D7. Richard liked the idea of pooling our resources to work for a common cause. He also agreed to mentor the project.<br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><br />
Finally, we came up with the following abstract for the project :</span><br />
<ol><li><span style="font-size: small;">Porting Neologism to D7</span></li>
<li><span style="font-size: small;">Migrating the Neologism code-base and documentation from Google Code to <a href="http://drupal.org/" target="_blank">drupal.org</a></span></li>
<li><span style="font-size: small;"> Updating the documentation and informing existing users about the change.</span></li>
<li><span style="font-size: small;">Testing that the Neologism module works well in existing D7 sites</span></li>
</ol><div><span style="font-size: small;">I intend to carry forward the work that has already been put into creating the Neologism vocabulary publishing platform by porting it to D7 and making it available to the huge Drupal community and any existing Drupal sites that want to use RDF with custom vocabularies.</span></div><div><span style="font-size: small;"><br />
</span></div><span style="font-size: small;">At this moment, I believe that that the Evoc module in D7 provides all the features that we need to successfully create the Neologism module.</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><b><br />
<br />
Timeline for the Proposed Project:</b></span></div><span style="font-size: small;"> </span><br />
<div id=":1z7"><div><span style="font-size: small;"><br />
<b>April 25 - May 23 (Before official coding period starts) [Information Learning Curve and Background readings]<br />
</b></span></div><div><ul><li><span style="font-size: small;">Familiarise with the current Neologism codebase and Drupal RDF modules.</span></li>
<li><span style="font-size: small;">Go through the current documentation of the Neologism project.</span></li>
<li><span style="font-size: small;">Discuss the implementation plans and risks with the mentors.</span></li>
<li><span style="font-size: small;">Familiarise the coding standards and development practices followed while creating Drupal modules.</span></li>
<li><span style="font-size: small;"> Get used to working on the Drupal Repositories since code migration from Google code to Drupal repositories would also be a part of the SoC project.</span></li>
</ul><span style="font-size: small;"> <br />
<b>May 23 - 29 (First week) [Familiarizing]</b></span> <br />
<ul><li><span style="font-size: small;">Fix some bugs/implement simple features for the current Neologism platform to familiarize further with the codebase.</span></li>
<li><span style="font-size: small;"> Create a document for general reference which describes how the module would appear at the end of the Summer of Code. Documentation at this stage would not go into the technical details but only describe how the module would appear to the end user at the end of the project.</span></li>
</ul></div><div><span style="font-size: small;"><br />
<b>May 30 - June 5 (1 week) [DB Migration]</b></span></div><div><span style="font-size: small;">Neologism is currently running on D6. There are a lot of differences between the Evoc module in D6 and D7. Thus, we need to change the DB Schema of Neologism to match the D7 Version of Evoc.<br />
<br />
<b><span style="color: grey;">This marks the End of Phase-1.<br />
At this moment, we are ready to start porting Neologism to D7.</span></b></span> </div><span style="font-size: small;"><br />
</span> <br />
<div><span style="font-size: small;"><b>June 6 - July 24 (7 weeks)[Porting Neologism to D7]</b><br />
This is the major task of the project. This task has been further divided into sub-tasks as follows :<br />
<b>Week 1 :</b> Port the menu system and vocabulary list to D7</span> <span style="font-size: small;"><br />
<b>Week 2 :</b> Port the vocabulary overview page to D7<br />
<b>Week 3 :</b> Port the RDF output to D7<br />
<b>Week 4 :</b> Provide the feature of importing and loading vocabulary by using the evoc module<br />
<b>Week 5 :</b> Port the vocabulary creation/edit form to D7<br />
<b>Week 6 :</b> Port the class/property creation/edit forms to D7<br />
<b>Week 7 :</b> Port content negotiation and caching to D7<br />
<br />
Also, during this period, I would need to carry out integration testing for the module.</span></div><div><span style="font-size: small;"><span style="color: grey;"><b><br />
This marks the end of Phase 2.<br />
At this stage, we have a functional D7 port of Neologism module.</b></span><br />
<b>July 25 - July 31 (1 week) [Documentation Migration/Upgrading and Migrating the code to Drupal Repository]<br />
</b></span></div><div class="im"><span style="font-size: small;">The tasks planned for this phase are as following :</span></div><div class="im"><ul><li><span style="font-size: small;">Set up Drupal.org infrastructure for neologism module</span></li>
<li><span style="font-size: small;">Coordinate with documentation team to move existing documentation to <a href="http://drupal.org/" target="_blank">drupal.org</a> </span></li>
<li><span style="font-size: small;"> Update documentation wherever needed</span></li>
<li><span style="font-size: small;">Notify existing users of the changes</span></li>
</ul></div><span style="font-size: small;"><b>August 1 - August 7 (1 week) [Test the module on existing Drupal sites]</b>We would need to evaluate how the Neologism module works if installed into existing D7 sites and identify any issues. Currently Neologism is built as an installation profile which installs an entire site that provides just a vocabulary editor. There might be some initialization which was previously done during the installation procedure which would now need to be done when the Neologism module is installed into existing sites. We need to make sure there are no issues faced when the module is installed or reinstalled into existing D7 sites.<br />
<br />
<br />
<b>August 8 - August 14 (1 week) [Buffer period]</b></span> <br />
<div class="im"><span style="font-size: small;">Buffer for general Neologism bugfixing/improvements as identified throughout the project<br />
</span></div></div><span style="font-size: small;"> </span><br />
<div id=":1z7"><span style="font-size: small;"><span style="color: grey;"><b>August 15 - GSoC Ends.<br />
End of Phase 3.</b></span><br />
</span></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><b>Deliverables :</b><br />
</span> <br />
<ul><li><span style="font-size: small;">A functional D7 Port of Neologism, which isntalls on existing sites without any major issues.</span></li>
<li><span style="font-size: small;">Updated Documentation of Neologism.</span></li>
<li><span style="font-size: small;">Documentation of the status of the module at the end of GSoC completes and the plan of action for the future.</span></li>
<li><span style="font-size: small;">List of known issues in the module.</span></li>
</ul></div><span style="font-size: small;"> </span><br />
<div><span style="font-size: small;"><b></b><b><br />
Link to Discussion created in on Drupal Groups </b><br />
<br />
I had already planned my idea well before GSoC. Thus, I was quick to draft my proposal initially on the Drupal GSoC-11 Group. You may find the discussion here : <a href="http://groups.drupal.org/node/136969" target="_blank">http://groups.drupal.org/node/136969</a><br />
<br />
I also asked the members of the Semantic Web Group in Drupal-Groups to provide me feedback on my proposal. <a href="http://groups.drupal.org/node/137274" target="_blank">http://groups.drupal.org/node/137274</a></span> <span style="font-size: small;"><br />
<br />
On the IRC Channels of drupal, (drupalcommerce and drupal-contribute) I got the opportunity to discuss my idea with a few people who provided me with useful bits of information and guidance.</span></div><div></div><div><span style="font-size: small;"><b>Mentors:<br />
</b></span> <span style="font-size: small;"> </span> <br />
<div><span style="font-size: small;">I tried to contact the people who have been actively involved with the development of RDF and related Modules in Drupal 7. Lin Clark(linclark) (<a href="http://lin-clark.com/" target="_blank">http://lin-clark.com/</a>), suggested I get in touch with Richard Cyganiak </span>(<a href="http://drupal.org/user/304062">cygri</a>) <span style="font-size: small;">(<a href="http://richard.cyganiak.de/" target="_blank">http://richard.cyganiak.de/</a>), for mentoring me on my project since it relates to the Neologism project(<a href="http://neologism.deri.ie/" target="_blank">http://neologism.deri.ie/</a>) he had started and has been working on. <b>I contacted Richard and he generously agreed to mentor me on my GSoC project</b>. </span></div><span style="font-size: small;"> </span> <br />
<div><span style="font-size: small;"><b>Lin Clark </b></span>(<a href="http://drupal.org/user/396253">linclark</a>)<span style="font-size: small;"><b></b> has offered to help me during the first few weeks to learn the customs of using Drupal.org issue queue and creating clean patches.</span></div><span style="font-size: small;"> </span> <br />
<div><span style="font-size: small;"><b>Guido Cecilio</b>, </span>(<a href="http://drupal.org/user/60623">guidocecilio</a>)<span style="font-size: small;"> who is the current main developer of Neologism, will also be available to answer questions regarding Neologism code and coordinate his work with me.</span></div><span style="font-size: small;"> </span> <br />
<div><span style="font-size: small;"><b>Stephane Corlosquet </b></span>(<a href="http://drupal.org/user/52142">scor</a>)<span style="font-size: small;"><b></b> has agreed to help by answering questions regarding D6 to D7 migration.</span></div><span style="font-size: small;"> </span> <br />
<div><span style="font-size: small;">Thus, I have the overwhelming support of the Drupal community to assist me during the course of my project.</span><span style="font-size: small;"></span></div></div></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-21999826241847716562011-04-17T22:46:00.007+05:302011-04-18T23:46:36.999+05:30Project Plan for BIOMOD-2011<div dir="ltr" style="text-align: left;" trbidi="on"><span id="internal-source-marker_0.5680169773179892" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;"></span>I am a part of the team DA-NanoTrons, representing my college <a href="http://www.daiict.ac.in/daiict/index.html">DA-IICT</a> in <a href="http://biomod.net/">BIOMOD-2011</a>.<br />
<br />
Our team is -<br />
<ul style="text-align: left;"><li>Faculty mentors <ul><li>Manish K. Gupta [DA-IICT, Gandhinagar]</li>
<li>Taslimarif Saiyed [NCBS, Bangalore]</li>
</ul><br />
</li>
<li>Team members </li>
<ul><li>Avinash Parida</li>
<li>Denny George </li>
<li>Mayank Kandpal </li>
</ul></ul><div style="background-color: transparent; color: orange;"><br />
<span style="font-size: large;">Project plan :</span></div><div style="background-color: transparent; color: orange;"><br />
</div><div style="background-color: transparent; color: orange;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: bold; text-decoration: none; vertical-align: baseline;">Part 1 : (BIOMOD-2011)</span><br />
</div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">Providing an interface for the users to input equations corresponding to 2-D shapes, which will generate a caDNAno friendly .json file output. This can directly be opened with cadnano and the structure can be further edited there. (So its like a basic cadnano template creator which can then be used and made into more complex structures on caDNAno)</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The application will be a standalone for now and might be integrated into </span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">caDNAno </span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">later on. </span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">We can even provide some default templates for some very basic equations.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<div style="color: orange;"><span style="background-color: transparent; font-family: Arial; font-size: large; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">Plan of Action :</span></div></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1.1 Understand the format of cadnano gerenated json files and try to create simple files which are correctly displayed in cadnano. this would be done by creating some simple files in </span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">caDNAno </span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">and understanding the structure of files after saving them. Initially dont worry about 3d, just create 2d .json file structures and run them on </span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;">caDNAno. </span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1.2 Hack through the cadnano ActionScript code-base to understand their auto-stapling algorithm.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1.3 What would the program do :</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.1 Take equation as input</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.2 Generate the outline of the corresponding 2D shape</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.3 Generate a single loop which fills the entire structure </span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.3 Divide the loop into 7000 parts (there is a reason behind 7000)</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.4 Select a point to break the loop and thus create a single long scaffold.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.5 Assign each division a base-pair (ACGT) ordered in the sequence of the standard M13mp18 virus DNA sequence. I have a rough visualization of the expected output after this stage, which I would share soon.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.6 Use the auto stapling algo to generate staples in the structure. (optional)</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.7 Automatic StapleError correction feature (optional, will skip this most probably in Phase-1)</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.3.8 Create the cadnano friendly json file corresponding to the structure and staples we generated.</span><br />
<br />
</div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: orange;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">How we could divide the work :</span><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">For parallely working on different things, we all need to be clear on how we would be storing the structure in each stage in the backend. In other words, what the output format/structure of each stage would look like.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">For example, if we are clear initially how the backend would look like in step 1.3.6, then one person can start working directly on a manualy created output of step 1.3.6 and work on how to create a cadnano friendly json from the structure that we finally come up with.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Thus, before we begin with any coding, we need to be clear with what output we expect in each stage. For this, we need to first of all decide a platform which we would be working on. Considering the requirements. I am assuming java (or python) would be the best choice. </span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In case we find other platforms with better library support we would use that. So first step is to hunt down the available libraries for each task.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Parallel task 1 : 1.3.1 - 1.3.5</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Parallel task 2 : 1.3.6</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Parallel task 3 : 1.3.7</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<div style="color: orange;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">FallBack Plan for part 1: </span></div></div><div style="background-color: transparent; color: orange;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">If we are too technically handicapped to understand the auto-stapling algorithm, we can simply skip step 1.3.6 and jump to 1.3.7, i,e, just generate the single long scaffold corresponding to the 2D structure represented by the equation and convert it to .json format which would can be opened in cadnano. The user can then use the autostapling feature within cadnano.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<div style="color: orange;"><br />
</div><div style="color: orange;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: italic; font-weight: bold; text-decoration: none; vertical-align: baseline;">Part 2 : (to be done in the next year’s Biomod, OR if time permits(unlikely), within the current Biomod timeline)</span></div></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2.1 Provide support for equations of 3D structures.</span></div><div style="background-color: transparent; color: #eeeeee;"><span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div><div style="background-color: transparent; color: #eeeeee;"><br />
<span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2.2 Either create Views Interface so that the user doesnt need to switch to cadnano just for checking out the output. OR port the entire application as a cadnano plugin itself.</span></div><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline;"></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0tag:blogger.com,1999:blog-5874918725697146192.post-57524852634162857492011-03-07T01:00:00.006+05:302011-03-07T01:00:02.075+05:30Developing @cric : An SMS based app on TXTWEB<div dir="ltr" style="text-align: left;" trbidi="on">My first project at Kuliza was to create an SMS based application for mobile phone users, through which they could receive live cricket scores updates and cricket schedule through SMS. As you might have guessed, the application was made keeping in mind the potentially huge user-base during the ICC Cricket World-cup.<br />
<br />
The main features of the Application are : <br />
<ol style="text-align: left;"><li>View summary of all the live matches in progress</li>
<li>View detailed score of a match</li>
<li>Set a match as Favorite</li>
<li>View schedule of upcoming ODIs, Tests and T20s.</li>
<li>Predictor feature which enables users to vote who will win the match.</li>
</ol><div style="text-align: left;"></div><br />
<a href="https://lh5.googleusercontent.com/-cuE9MSDXjEQ/TXPPnR1crOI/AAAAAAAAAOc/jc87MSoIDHU/s1600/cricjpeg.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://lh5.googleusercontent.com/-cuE9MSDXjEQ/TXPPnR1crOI/AAAAAAAAAOc/jc87MSoIDHU/s1600/cricjpeg.JPG" /></a>The application was immediately pushed into live production and within 3 matches, the app had already got a total of 16,000+ hits! <br />
<br />
The usage statistics have been scaling new heights with each World-Cup match. Recently it crossed a total of 100,000 hits. We expect to cross 200,000 SMSes by the end of the World-Cup.<br />
<br />
<span style="color: yellow;">You may wish to try out the App: SMS @cric to 9243342000 to know live cricket scores and schedule of upcoming matches.</span><span style="font-size: large;"><b> </b></span><br />
<br />
<br />
<span style="font-size: large;"><b>The Development :</b></span><br />
The @cric Application runs on three core technologies : <br />
<br />
<b>1) TXTWEB SMS Engine</b>TXTWEB is Intuit's SMS Platform for Mobile App Developers. http://www.txtweb.com/ is an online network for developers of SMS based apps to showcase and promote apps and connect with each other.<br />
<br />
<b>2) Google App Engine</b><br />
From http://code.google.com/appengine/ :<br />
<blockquote> "Google App Engine lets you run your web applications on Google's infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow."</blockquote>I used the The Datastore Java API of Google App Engine for storing data, which is a schemaless object datastore, with a query engine and atomic transactions.<br />
<br />
<b>3) Google Web Toolkit</b><br />
From http://code.google.com/webtoolkit/ :<br />
<blockquote> "GWT is a development toolkit for building and optimizing complex browser-based applications."</blockquote>I used the Eclipse-GWT plugin for development.<br />
<br />
The live scores are scraped from http://www.espncricinfo.com. JSoup HTML Parser library is used to get the data. In case there is a problem with CricInfo, I have implemented a backup scraper which uses http://scores.sify.com/index.shtml to get live-scores data. Schedule of upcoming matches is obtained from http://www.cricschedule.com.</div>maestrohttp://www.blogger.com/profile/03372764359069211993noreply@blogger.com0