<?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:blogger='http://schemas.google.com/blogger/2008' 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-7125095605575663368</id><updated>2024-09-14T19:26:49.486+03:00</updated><category term="developing"/><category term="Grid"/><category term="Quattor"/><category term="database"/><category term="backup"/><category term="best-practices"/><category term="gLite"/><category term="hacks"/><category term="iPhone addiction"/><category term="imap"/><category term="mail filtering"/><category term="Bank alerts"/><category term="Big Brother"/><category term="CA"/><category term="CRLs"/><category term="GPFS"/><category term="Google"/><category term="Hydra"/><category term="Job offer"/><category term="LCG-CE"/><category term="MPI"/><category term="Nagios"/><category term="OpenMP"/><category term="SEMMNI"/><category term="SRE"/><category term="caching"/><category term="fabric management"/><category term="failure"/><category term="gmail"/><category term="interview"/><category term="limits"/><category term="mail"/><category term="recover"/><category term="repository"/><category term="security"/><category term="semaphore"/><category term="success"/><category term="svn"/><title type='text'>ctria is blogging...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-8570417401062067441</id><published>2012-06-26T19:47:00.001+03:00</published><updated>2012-06-26T19:47:11.349+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="best-practices"/><category scheme="http://www.blogger.com/atom/ns#" term="developing"/><category scheme="http://www.blogger.com/atom/ns#" term="fabric management"/><category scheme="http://www.blogger.com/atom/ns#" term="Quattor"/><title type='text'>Fabric management redesigned!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
People who know me probably know that when it comes to fabric management i&#39;m a fan of &lt;a href=&quot;http://www.quattor.org/&quot;&gt;Quattor&lt;/a&gt;. Quattor is a great tool that can manage nodes from installation part (utilizing pxeboot and kickstart) till fine-tuning service features. While Quattor is a strong tool that could help administering hundreds or even thousands of nodes, it has some weak spots which i&#39;d like to get rid of:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Very steep learning curve&lt;/li&gt;
&lt;li&gt;Some operations may be quite time consuming (i.e. doing errata updates)&lt;/li&gt;
&lt;li&gt;Use of a custom programming language (&lt;a href=&quot;http://en.wikipedia.org/wiki/Pan_(programming_language)&quot;&gt;PAN&lt;/a&gt;) which is usually unknown to even senior admins&lt;/li&gt;
&lt;li&gt;Inventory of the assets is based on what you describe and not on what exists&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
The above usually lead to misuse of the Quattor which in turn leads to unmaintained or difficult to maintain templates.&lt;br /&gt;
After a very long time of using Quattor and also evaluating other fabric management tools (i.e. &lt;a href=&quot;http://docs.puppetlabs.com/puppet/&quot;&gt;puppet&lt;/a&gt;, &lt;a href=&quot;http://www.opscode.com/chef/&quot;&gt;chef&lt;/a&gt;) my conclusion is that while they can help admins to scale their infrastructure, they work pretty much against the way that administrators are used to. Admins are used to ssh and do their stuff while these management systems don&#39;t know how to interpret these changes so they simply skip them.&lt;br /&gt;
So lets move one step back and redesign it!&lt;br /&gt;
What if you had something monitoring your systems and had the ability to upload your local changes from the node to the central repository of your configuration?&lt;br /&gt;
I&#39;m thinking of a solution which will have the following features:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;A simple PXE image to inventory your nodes (that way you only need to know the MAC address of your nodes before importing them to the system).&lt;/li&gt;
&lt;li&gt;PXE and kickstart (or equivalent) configuration to bootstrap nodes&lt;/li&gt;
&lt;li&gt;Ability to take-over a pre-installed node (i.e. cloud VM)&lt;/li&gt;
&lt;li&gt;Components (per feature) that will run on the nodes and will:&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;ol&gt;
&lt;li&gt;Identify current configuration&lt;/li&gt;
&lt;li&gt;Change the configuration&lt;/li&gt;
&lt;li&gt;Prepare a feedback commit if the admin wants to push the local changes on the node to the configuration system&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;A simple tool/daemon that will run on the nodes as a wrapper for the components&lt;/li&gt;
&lt;li&gt;All the configuration will be based on a tagging system so that each node will have its own tag (to override configuration) and then a sorted list of tags to include (i.e. a tag called web-server and a tag called production would result a node that will be part of the production web-servers)&lt;/li&gt;
&lt;li&gt;The configuration server would store its data on a DB and timestamp every change. Changes should be easily reverted in case it is needed.&lt;/li&gt;
&lt;li&gt;The configuration server would provide API interface with read-only access for other tools to consume data (i.e. an dynamic infrastructure monitoring system) and read-write to update the data.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
A list of the first components (i.e. before announce alpha release) that i&#39;m thinking of is:&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;package managing&lt;/li&gt;
&lt;li&gt;file generator&lt;/li&gt;
&lt;li&gt;daemon handler&lt;/li&gt;
&lt;li&gt;user management&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
And a demo could be the installation of a node from scratch with a couple of users and the ssh service up and running.&lt;br /&gt;
&lt;br /&gt;
So in principal this is going to be yet another fabric management tool but with the addition of feedback from the nodes to the server. From the fabric management tools that i&#39;ve used i found that Chef is closer to what i&#39;m thinking of and basically because of the &quot;&lt;a href=&quot;http://wiki.opscode.com/display/chef/Ohai&quot;&gt;ohai&lt;/a&gt;&quot; util that feedbacks information to the server. I&#39;ll probably depend on this.&lt;br /&gt;
&lt;br /&gt;
PS: This is just an idea for now so please add comments, implementation will start when time allows. The implementation will be done based on RedHat rules (thus compatible with &lt;a href=&quot;http://www.redhat.com/products/enterprise-linux/&quot;&gt;RedHat Enterprise Linux&lt;/a&gt; and its clones) but should be modular enough to be extended to other distributions.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/8570417401062067441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2012/06/fabric-management-redesigned.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/8570417401062067441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/8570417401062067441'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2012/06/fabric-management-redesigned.html' title='Fabric management redesigned!'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-4522413351836169578</id><published>2012-03-31T01:37:00.000+03:00</published><updated>2012-03-31T01:37:00.231+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="failure"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="interview"/><category scheme="http://www.blogger.com/atom/ns#" term="Job offer"/><category scheme="http://www.blogger.com/atom/ns#" term="Nagios"/><category scheme="http://www.blogger.com/atom/ns#" term="Quattor"/><category scheme="http://www.blogger.com/atom/ns#" term="SRE"/><category scheme="http://www.blogger.com/atom/ns#" term="success"/><title type='text'>A successful failure</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div&gt;
This post is about a really special failure that i had recently which i find as a success.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
About a month ago i had a totally unexpected contact from a&amp;nbsp;nice guy from Mountain View. He send me an email telling me that he is part of Google Staffing team and asking me if i&#39;m interested to join the Google.com Engineering team.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At first i was pretty sure that this was a mail scam and i replied so, but he insisted with a complete description of the Google.com Engineering&amp;nbsp;(a.k.a. SRE)&amp;nbsp;team. I really got excited by that moment and i wanted some more information on how he found me. What made Google be interested in me? It turned out to be my involvement to opensource projects especially about machine deployment (via &lt;a href=&quot;http://www.quattor.org/&quot;&gt;quattor&lt;/a&gt;) and monitoring (via &lt;a href=&quot;http://www.nagios.org/&quot;&gt;nagios&lt;/a&gt;).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We proceeded to an (unfortunately quick) round of interviews. First i had an interview with him as my recruiter, he introduced me to the team once more and told me that there were two groups in that team, one focused on development and another focused system administration. That was a pretty good tip as i couldn&#39;t see my development skills on languages like C, Java etc to match Google&#39;s&amp;nbsp;expectations. Of course he also knew this so we focused on the sys-admin side. This first interview was successful. He asked me to rate myself in a series of things like programming languages, administrating, scripting etc in a scale of 1 to 10 keeping in mind that 1 is like never heard about it and 10 that i&#39;ve written some books about it. I&#39;m not good in evaluating myself so shortly after this i was waiting a response like &quot;Thanks Christos, we&#39;ll contact you again when you raise some of them&quot;, instead he continued with a list of questions on system administrating. To this point everything went well. I answer all (or almost all) of them correctly so we both were happy about the results.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
He arranged the next interview about 10 days later with a member of the SRE team. He also sent me some interview tips and wished me good luck. I studied the resources he pointed me which were the google research documents about the infrastructure that (i believe) Google still uses like Google Filesystem, BigTables and MapReduce but also books both on development and system administration. These were some of the busiest but also exciting 10 days i had as i continued my normal work while i was studying things during night. I think at that point the Google dream was planted: &quot;I will work on all these! I&#39;ll be a googler!&quot;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The days passed and i had the second interview. This was with the SRE team member. He first made sure that i was expecting this call and then i totally lost him. He had proceed on the interview but i was still at the &quot;HEY i&#39;m talking with a Google engineer!&quot;-world. At that point i introduced him my stressful side. He asked first about any strong skills that i wanted to outline, i&#39;ve chosen infrastructure monitoring. We had a conversation on this for about 5 minutes (feeling like about half an hour). Then he asked me some network questions. Nothing real special, but things that normally computer scientists learn in college. It was about network blocks but i was still on &quot;he asks me something, i have to reply soon or ...&quot;-mood. I completely lost it at that point and started answering things that i knew to be wrong (but still wrong is better than nothing, or not?).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next he proceed to a more familiar question about system load. I answered quickly and was happy that i passed this point till his next question &quot;How would you calculate the system load?&quot;. Ok the theory is clear but how you do this in practice? This is totally kernel&#39;s job! To make it even worse he asked me to write a &quot;simple&quot; script to do so in the shared google docs we had both open. There my mistakes started one after another:&lt;/div&gt;
&lt;div&gt;
a) I used bash, awk etc for this. Why this is bad? because you get extra processes running :)&lt;/div&gt;
&lt;div&gt;
b) I only checked the Running processes from ps output. Completely forgot about blocked ones.&lt;/div&gt;
&lt;div&gt;
c) In order to get load average, i used expr for the final result, which didn&#39;t give me any decimals.&lt;/div&gt;
&lt;div&gt;
d) Probably many other things that i didn&#39;t realize, like use of so many external programs.&lt;/div&gt;
&lt;div&gt;
We discussed it a little bit and during our discussion i tried to fix some bits that would lead to syntax errors but the scope was already lost.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After this he gave me some time to ask whatever i wanted about Google and interview ended. By the time i hang up the phone every mistake, that at least i know about, came in my mind and found the correct answer (or at least a better one), but it was too late. I hoped that there will be another interview to try to fix things but the next day i got a call from my recruiter telling me politely that i&#39;m not their guy and that they will keep my profile for possible future match. Fair enough considering their&amp;nbsp;expectations.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So why i consider all these as success? Well after the interview i got really disappointed. I felt that the google dream was vanished. But then i got back a month... would i ever submit for an opening in Google? No! They found me! I got contacted by a leading corporation in IT world because of my previous (public) work. My first ever real (outside academic world) job interview was done by Google engineers! And most important this gave me the needed push to realize that what i do is important not only in academic world but also to the IT industry out there.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I no longer feel that the Google dream is over. Google may contact me in future again (given that the percentage of people being dropped at first and hired by the second time is quite high), it may also not. But does it really matter if it would be Google? Knowing that my expertise is in need by such corporations makes my day.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/4522413351836169578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2012/03/successful-failure.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/4522413351836169578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/4522413351836169578'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2012/03/successful-failure.html' title='A successful failure'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-3363527131936462722</id><published>2011-07-04T13:01:00.001+03:00</published><updated>2011-07-04T13:02:29.238+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="best-practices"/><category scheme="http://www.blogger.com/atom/ns#" term="developing"/><title type='text'>Developing the proper way</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Recently i wanted to submit some patches to the&amp;nbsp;&lt;a href=&quot;http://www.lustre.org/&quot;&gt;Lustre Filesystem&lt;/a&gt;&amp;nbsp;to allow the compilation of the kernel modules (patchless client) for Fedora 14 kernels. I initially posted my patches to the discuss list but i was pointed to the company that maintains the community based Lustre fork (&lt;a href=&quot;http://www.whamcloud.com/&quot;&gt;whamcloud&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
There i was amazed by the way that code is maintained as it uses all the current best practices that i could think of for developing. Thus i wanted to share them with my undefined readers.&lt;br /&gt;
&lt;br /&gt;
Git repository:&lt;br /&gt;
First the code is publicly available on a git repo. People can clone the repository locally, do their modifications and they push them to Gerrit.&lt;br /&gt;
&lt;br /&gt;
Gerrit:&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/gerrit/&quot;&gt;Gerrit&lt;/a&gt; is a code reviewing web tool for git repositories which allows people to submit via &quot;git push&quot; patches. Patches are verified and reviewed. In Lustre&#39;s case, code verification is done by Jenkins while review is done by at least 2 code reviewers&lt;br /&gt;
&lt;br /&gt;
Jenkins:&lt;br /&gt;
&lt;a href=&quot;http://jenkins-ci.org/&quot;&gt;Jenkins&lt;/a&gt;&amp;nbsp;monitors execution of repeated jobs. In Lustre&#39;s case it is used for automated builds of the current master branch + the committed patchset.&lt;br /&gt;
&lt;br /&gt;
Finally when patches are approved they are merged to the master branch.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/3363527131936462722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2011/07/developing-proper-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/3363527131936462722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/3363527131936462722'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2011/07/developing-proper-way.html' title='Developing the proper way'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-6153789333723587152</id><published>2011-02-08T10:26:00.000+02:00</published><updated>2011-02-08T10:26:09.080+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CA"/><category scheme="http://www.blogger.com/atom/ns#" term="caching"/><category scheme="http://www.blogger.com/atom/ns#" term="CRLs"/><category scheme="http://www.blogger.com/atom/ns#" term="database"/><category scheme="http://www.blogger.com/atom/ns#" term="Grid"/><title type='text'>Could you please nslookup my CRL?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;How do you publish your CRLs?&lt;div&gt;The common answer to this is via an http(s) URL or from an LDAP server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;If you hosted a CA that serves Grid community you would find out soon that your CDPs are hit very hard. According to our logs we get more than 250 hits per minute in order to download a file sized in most of the times less than 100 KB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;On the other hand Relying Parties to these CAs many times blame CAs for their outages or unavailability and want to have a reliable caching mechanism of the CRLs distributed in the whole world. Currently caching depends on CA&#39;s webserver configuration AND at client&#39;s willing to cache things. While big sites use squids to save their bandwidth, you still see many requests from the same origin for the same file getting the same response &quot;cache this for 1 hour&quot; but still trying to get a fresh one out of our server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;So yesterday on my way home i was thinking what if we host all the CRLs on a DNS server?&lt;/div&gt;&lt;div&gt;DNS resolvers have a reliable caching mechanism which is spread usually to one per site, the only limitation is how to store this info. TXT records have limit of 1300 bytes (max recommended size by a &lt;a href=&quot;http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt&quot;&gt;recent draft&lt;/a&gt; of IETF in order to fit in a single 1500-byte Ethernet package). One way to move is to split them. CRLs in PEM format are in base64 form which means that they have 65 bytes per line (64 data + newline) thus up to 20 lines per TXT record. Will this scale?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Our current infrastructure (as part of&amp;nbsp;&lt;a href=&quot;http://www.egi.eu/&quot;&gt;EGI&lt;/a&gt;) supports ~ 100 CAs. The majority of the CAs are covered by less than 10 TXT records. Less than 10 CAs need up to 40 TXT records while we have about 5 CAs that need more than 100 TXT records with the top reaching the 1770 records!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;So yes this should cover the needs of the &quot;small&quot; CAs in terms of CRL size but would be unreliable for the &quot;big&quot; ones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I&#39;m planning to do some testing on this on my next spare time period and report here with my results (hopefully sooner than my last post).&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/6153789333723587152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2011/02/could-you-please-nslookup-my-crl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/6153789333723587152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/6153789333723587152'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2011/02/could-you-please-nslookup-my-crl.html' title='Could you please nslookup my CRL?'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-4294220574604680469</id><published>2009-09-15T15:31:00.001+03:00</published><updated>2009-09-15T15:33:18.674+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="GPFS"/><category scheme="http://www.blogger.com/atom/ns#" term="hacks"/><category scheme="http://www.blogger.com/atom/ns#" term="recover"/><title type='text'>Hex-editing your GPFS Terabytes</title><content type='html'>I remember the old times where you could find a those geek guys that would use a hex editor to &quot;patch&quot; your favorite game and become bullet-proof or with 99...9 (still counting) lives or ... do what ever you wanted in order to win. At that time i was sure that hex editors are powerful to save you from a &quot;disaster&quot; but i couldn&#39;t think what a disaster can be.&lt;br /&gt;
&lt;br /&gt;
We are using GPFS as network file system for our clusters and except from dummy scratch space for MPI jobs it is also used for some local user&#39;s home directory. A local team need to expand their GPFS filesystem so we had to add a few disks to our array. The procedure sounded trivial, adding the new disks to the array, create a new logical volume and finally add the new raw device to GPFS filesystem.&lt;br /&gt;
&lt;br /&gt;
But of course something went wrong. The new volume was about 10TB in size which due to a GPFS limitation we had to partition in at least 2 partitions. Easy work via parted but what happens when parted (for a reason still unknown) &quot;modifies&quot; the partition table of other logical volume which is part of the GPFS filesystem as a whole (without partition table).&lt;br /&gt;
&lt;br /&gt;
Well the parted simply ruins the first sectors of a GPFS NSD which means it ruins all the valuable information (Disk ids and NSD ids as well as the filesystem definition) from this disk. The users report &quot;We are receiving &#39;Input/Output error&#39; when using the X file&quot; and everything gets worse and worse.&lt;br /&gt;
&lt;br /&gt;
Fortunately there IS a solution to this disaster. Although we couldn&#39;t find any official IBM documentation on this (apart from some posts in GPFS&#39;s forum), there is a way to recover from this situation. What you need is a hex editor, the famous &quot;dd&quot; and a lot of patience.&lt;br /&gt;
&lt;br /&gt;
First copy the sector 8 from each disk within the GPFS filesystem. This sector is the File System Descriptor and it is common on all disks. Next we have to recover sector 2 and sector 1. Sector 2 is GPFS disk identifier (know also as the NSD-ID). Finally the sector 1 contains information about the disk which is called the disk descriptor.&lt;br /&gt;
&lt;br /&gt;
Due to legal reasons i&#39;m not sure if i&#39;m allowed to reveal more information on how to do this but studying carefully the sectors starting from 8 and going to 2 and then 1 you are able to recover your FS.</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/4294220574604680469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/09/hex-editing-your-gpfs-terabytes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/4294220574604680469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/4294220574604680469'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/09/hex-editing-your-gpfs-terabytes.html' title='Hex-editing your GPFS Terabytes'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-6736465761188372814</id><published>2009-09-14T16:15:00.001+03:00</published><updated>2009-09-14T16:22:54.145+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bank alerts"/><category scheme="http://www.blogger.com/atom/ns#" term="Big Brother"/><title type='text'>Big brother secures our transactions?</title><content type='html'>I&#39;m at Germany for a meeting and i found out that i was out of money....&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div&gt;Well i thought this is easy, let&#39;s visit an ATM and get some. I went at the ATM after a few random clicks i was able to find the &quot;English&quot; button and i requested my money.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;A few more clicks to find the &quot;OK&quot; button at the machine and there i had my money.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;After a few minutes i received a phone call. The person introduced to me as member of the security incident team of my bank. Asked me if i got these money from Germany or if my card was stolen!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;In one way i felt safe but ... do they really monitor what i do all the time???&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I should also mention that all this happened&amp;nbsp;at&amp;nbsp;3 a.m. Monday morning.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/6736465761188372814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/09/big-brother-secures-our-transactions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/6736465761188372814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/6736465761188372814'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/09/big-brother-secures-our-transactions.html' title='Big brother secures our transactions?'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-1914240012272080495</id><published>2009-07-17T01:27:00.004+03:00</published><updated>2009-07-17T01:41:59.169+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gLite"/><category scheme="http://www.blogger.com/atom/ns#" term="Grid"/><category scheme="http://www.blogger.com/atom/ns#" term="Quattor"/><title type='text'>Bye bye SL3! Bye bye gLite 3.0...</title><content type='html'>The last piece of gLite 3.0 node was decommissioned this week with the shutdown of node001.grid.auth.gr.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This node was the sBDII/lcg-CE for GR-01-AUTH for long time now and was serving as Torque server for local PBS queues.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A new node (XEN guest node with SL4-x86_64 and gLite 3.1) was setup in April to take over this task but the migration of the local users/queues was postponed till July. The node has already processed tens of thousands jobs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With this migration we finally achieved the milestone where ALL our Grid nodes are controlled by our Quattor installation.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/1914240012272080495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/07/bye-bye-sl3-bye-bye-glite-30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1914240012272080495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1914240012272080495'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/07/bye-bye-sl3-bye-bye-glite-30.html' title='Bye bye SL3! Bye bye gLite 3.0...'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-1592443868525361434</id><published>2009-07-15T10:17:00.007+03:00</published><updated>2009-07-15T10:47:16.007+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="limits"/><category scheme="http://www.blogger.com/atom/ns#" term="MPI"/><category scheme="http://www.blogger.com/atom/ns#" term="semaphore"/><category scheme="http://www.blogger.com/atom/ns#" term="SEMMNI"/><title type='text'>Semaphore limits...</title><content type='html'>Living in a world of powerful Worker Nodes with many cores per node and many GBs of RAM i thought that running &quot;big&quot; jobs won&#39;t be a problem.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A strange call reached our helpdesk where a user was able to submit jobs to multiple 2-core WNs but was but was unable to submit a job to a single x-core node (where x &gt; 6). After some debugging the errors that the job was getting was due to a semaphores limit.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;    style=&quot;font-family:&#39;Lucida Grande&#39;, &#39;Trebuchet MS&#39;, Verdana, Helvetica, Arial, sans-serif;font-size:100%;color:#333333;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 18px;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;In specific the job needed many  semaphore arrays (21 per core) where only 128 were available (on our SL4 WNs) and the following error kept appearing:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;  white-space: pre; font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;p4_error: semget failed for setnum: 0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The solution came via sysctl where one can set these limits via the kernel.sem parameter:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;  white-space: pre; font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;# sysctl kernel.sem&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;kernel.sem = 250&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;32000&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;32&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;128 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The limit we were hitting is the last number which is the &lt;span class=&quot;Apple-style-span&quot;   style=&quot;  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:monospace, fantasy;font-size:medium;&quot;&gt;SEMMNI&lt;/span&gt; (how many semaphore arrays can be allocated). Using the following command we were able to adjust this. The magic number we choosed was &quot;512&quot;:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;  white-space: pre; font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;#/sbin/sysctl -w kernel.sem=&quot;250 32000 32 512&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/1592443868525361434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/07/semaphore-limits.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1592443868525361434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1592443868525361434'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/07/semaphore-limits.html' title='Semaphore limits...'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-5719104730294079766</id><published>2009-07-07T19:17:00.003+03:00</published><updated>2009-07-07T19:44:23.040+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gmail"/><category scheme="http://www.blogger.com/atom/ns#" term="imap"/><category scheme="http://www.blogger.com/atom/ns#" term="mail"/><category scheme="http://www.blogger.com/atom/ns#" term="mail filtering"/><title type='text'>Migrating to gmail...</title><content type='html'>&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;It&#39;s been long time since my last post... This post is about a migration i&#39;m trying for my mailbox as lately i&#39;m experiencing some issues with my primary mail account...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It&#39;s a strange situation because although my mailbox was migrated to another imap server, which clearly puts the blame at the server, i was not the only one who was migrated but i was the only one that experienced issues. (Using same OS and imap client software).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the beginning the issue was due to the postfix&#39;s default max connections per IP given that Mail.app at os X opens many connections in parallel. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After raising this limit things were better but again it wasn&#39;t as it was.... So i though why not outsourcing the imap server work at Google? This is something that a colleague is already doing. I didn&#39;t want to migrate all my mails at gmail at once thus i just added the following to procmailrc at my account at our mailbox in order to copy all messages to my gmail account:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; ;font-family:&#39;courier new&#39;, -webkit-fantasy;&quot;&gt;:0c:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;! myemail@gmail.com&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That did the trick and i soon realized how world would be without mail filters...&lt;/div&gt;&lt;div&gt;I started to add filters and &quot;labels&quot; (i really loved gmail labels! MUCH MUCH better than imap folders) and i realized that there is no way to filter my mails using non-standard headers (i did hard work on my imap client to find the best &quot;custom&quot; mail header to categorize my email sources and now this is unusable :( ).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway the feeling after 2 days using gmail in comparison to my primary email is that gmail is much much faster but the spam filtering is not as &quot;educated&quot; as the one i was used to. Of course as the anti-SPAM software runs before procmail i can rely on both Google&#39;s and my previous mail provider anti-SPAM assertions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another very interesting comment that i have about gmail is that it can find which mails have arrived more than once for my email account (i.e. when i get a reply from a mailing list and the sender is using both my email and mailing list as recipients) and gives me only one of them. I thought that i was losing mails at first but actually all the information is preserved as the gmail recognizes both sources and if i have a filter that adds a label to each source the the mail will have all the labels.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/5719104730294079766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/07/migrating-to-gmail.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/5719104730294079766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/5719104730294079766'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/07/migrating-to-gmail.html' title='Migrating to gmail...'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-2810338231643955181</id><published>2009-06-28T19:38:00.002+03:00</published><updated>2009-06-28T19:51:10.846+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="database"/><category scheme="http://www.blogger.com/atom/ns#" term="developing"/><title type='text'>You can do the DB scheme work online!</title><content type='html'>I&#39;m working on a project with colleagues from other institutes. Within this project we decided to some work on a client-server model application with a database back-end.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We had many mail exchanges, nice figures to describe workflows, phone meetings, video conference meetings but it was time to start doing some work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One first thing we had to agree on was the DB scheme we are going to work on and i was surprised by a tool that one of the colleagues used to give us his SQL model. The tool is called &lt;a href=&quot;http://code.google.com/p/wwwsqldesigner/&quot;&gt;wwwsqldesigner&lt;/a&gt; and it is open-source. Of course there is a &lt;a href=&quot;http://ondras.zarovi.cz/sql/demo/&quot;&gt;demo installation&lt;/a&gt; to use if you don&#39;t want to install it your self.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What i liked most is that you are able to get your design in XML format. Then you can send the XML file to the rest developing team who can upload it again either to their local installation or the demo one, do their changes and publish a new version etc... Of course you are able to save your model at the server and then others can just select it from a list in order to view it and change it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I liked it so much that i&#39;m thinking of installing it locally and upload our local project&#39;s schemes.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/2810338231643955181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/06/you-can-do-db-scheme-work-online.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/2810338231643955181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/2810338231643955181'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/06/you-can-do-db-scheme-work-online.html' title='You can do the DB scheme work online!'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-1078762678093984965</id><published>2009-06-26T13:49:00.005+03:00</published><updated>2009-06-26T14:08:11.586+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="imap"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone addiction"/><category scheme="http://www.blogger.com/atom/ns#" term="mail filtering"/><title type='text'>I don&#39;t want all these mails on my iPhone!</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;A week ago i was writing on this &lt;a href=&quot;http://ctria.blogspot.com/2009/06/iphone-30-os-is-here.html&quot;&gt;blog&lt;/a&gt; about about the iPhone 3.0 OS update and as a disadvantage i had that there is no mail filters yet.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I really hate it when my laptop is not connected to the imap server (in order to filter all my mails) and i get all these SPAM and mailing list mails on my iPhone. It makes it totally useless.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first thought i had was to use &lt;a href=&quot;http://www.procmail.org/&quot;&gt;procmail&lt;/a&gt; which seem to be powerful with one &quot;show-stopper&quot; for me. It requires to have access to your mailbox server in order to upload your procmail configuration.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then i thought to search for a simple client that will connect to IMAP, filter my mails and then logout. The client that i found is &lt;a href=&quot;http://imapfilter.hellug.gr/&quot;&gt;imapfilter&lt;/a&gt; which is actually developed a Greek guy!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Its operation does EXACTLY what i want. You feed it with an easy to read configuration (LUA):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;---------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;--  Options  --&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;---------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;options.timeout = 120&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;options.subscribe = true&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;----------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;--  Accounts  --&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;----------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;-- Connects to &quot;imap1.mail.server&quot;, as user &quot;user1&quot; with &quot;secret1&quot; as password.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;account1 = {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;    server = &#39;imap1.mail.server&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;    username = &#39;user1&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;    password = &#39;secret1&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;    ssl = &#39;ssl3&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;---------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;--  Filters  --&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;---------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;spam = {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;    &#39;new&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;    &#39;header &quot;X-DSPAM-Result&quot; &quot;Spam&quot;&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;----------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;--  Commands  --&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;----------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;-- Get status (messages, recent, unseen) of the mailbox.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;-- check(account1, &#39;INBOX&#39;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;-- Move messages between mailboxes at the same account.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;results = match(account1, &#39;INBOX&#39;, spam)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;move(account1, &#39;INBOX&#39;, account1, &#39;SPAM&#39;, results)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I just setup a cronjob for this and works perfect!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/1078762678093984965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/06/i-dont-want-all-these-mails-on-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1078762678093984965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1078762678093984965'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/06/i-dont-want-all-these-mails-on-my.html' title='I don&#39;t want all these mails on my iPhone!'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-5526853015272784060</id><published>2009-06-25T18:24:00.007+03:00</published><updated>2009-06-26T13:49:13.652+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="database"/><category scheme="http://www.blogger.com/atom/ns#" term="gLite"/><category scheme="http://www.blogger.com/atom/ns#" term="Grid"/><category scheme="http://www.blogger.com/atom/ns#" term="Hydra"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Lets cut some (gLite) Hydra heads</title><content type='html'>&lt;div&gt;&lt;img style=&quot;float:right; margin:0 0 0px 0px;cursor:pointer; cursor:hand;width: 173px; height: 213px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0_WWZdBaI1Sw4QoZ0k-zgkUaY_kFHBPxcnMaHidBz1ALOOjPF7MV7fy-JpmwzB65P9RYtSu8xq3muGVcZdwqIgTVlKj10fpG0xLNyKEjRGzLu8sBuq07udBwxLEMSINPDRF9uVT32d4dI/s320/hydra.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5351287467481755106&quot; /&gt;&lt;div&gt;You may be familiar with the &lt;a href=&quot;http://en.wikipedia.org/wiki/Lernaean_Hydra&quot;&gt;Lernaean Hydra&lt;/a&gt;. The complexity of this beast was perfect to name a gLite service that is used to encrypt/decrypt data. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This service is based on the &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing&quot;&gt;Shamir&#39;s Secret Sharing&lt;/a&gt;&quot; algorithm where a the encryption/decryption key is divided to X parts and Y parts of them (where Y &lt;= X) are needed to reconstruct the key. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A requirement for data encryption was raised sometime in the previous years and we had deployed 3 gLite Hydra servers (each one will hold a part of every user&#39;s key and only 2 of them would be required for encryption/decryption operations) with clear geographic and administration separation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A software update to one of them led to a &quot;funny&quot; situation where no new keys were able to be registered and no old ones could be unregistered. (These are the only operations that require all the servers to be up and responding). The tool that was provided to (re)configure the service had the very interesting operation of dropping every DB table and re-create them using the predefined schema.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A re-configuration of the updated server gave us a &quot;everything just doesn&#39;t work&quot; state, which we had to resolve under user community pressure. Note that if the service just didn&#39;t work, users may have lost lots of human/cpu hours because they are just able to get an encrypted output which they can&#39;t decrypt.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Analysis to the DB at another gLite Hydra instance gave us an idea of how this service stores its data. Due to luck the actual keys were not deleted by the configuration script but only the relation between users and keys was deleted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A copy of the user database and some reverse engineering at the relation DB at a working Hydra instance was enough to recover the service with (almost?) no cost.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That reminded me that common Murphy&#39;s law where the backup you have is either unreadable at the time you needed or was last updated  BEFORE your critical data was stored.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/5526853015272784060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/06/lets-cut-some-glite-hydra-heads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/5526853015272784060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/5526853015272784060'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/06/lets-cut-some-glite-hydra-heads.html' title='Lets cut some (gLite) Hydra heads'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0_WWZdBaI1Sw4QoZ0k-zgkUaY_kFHBPxcnMaHidBz1ALOOjPF7MV7fy-JpmwzB65P9RYtSu8xq3muGVcZdwqIgTVlKj10fpG0xLNyKEjRGzLu8sBuq07udBwxLEMSINPDRF9uVT32d4dI/s72-c/hydra.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-4103228542823900676</id><published>2009-06-20T01:32:00.017+03:00</published><updated>2009-06-26T13:48:48.561+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developing"/><category scheme="http://www.blogger.com/atom/ns#" term="Grid"/><category scheme="http://www.blogger.com/atom/ns#" term="hacks"/><category scheme="http://www.blogger.com/atom/ns#" term="LCG-CE"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenMP"/><title type='text'>OpenMP jobs on Grid? (The LCG-CE - PBS approach)</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;There was a user support requirement for OpenMP jobs in Grid. OpenMP is a shared-memory implementation which means that all processes must run on the same box.&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Well this can easily achieved at PBS side by using the directive:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;#PBS -l nodes=1:ppn=X&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Where &quot;X&quot; is the number of requested processes. But the main issue is HOW can we get this requirement based on what WMS gives to us on submission?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;After googling this, the &quot;correct&quot; solution can only be achieved at CREAM CE where users can select a number of requirements that will not only be used for job matching process at WMS but also passed to the CE. You can find more info on this &lt;/span&gt;&lt;a href=&quot;http://grid.pd.infn.it/cream/field.php?n=Main.ForwardOfRequirementsToTheBatchSystem&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;LCG CEs on the other hand are only getting a poor RSL which doesn&#39;t carry almost any of the user&#39;s requirements. So lets get in LCG CE&#39;s internals...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;First a job reaches the globus-gatekeeper. At this phase user&#39;s proxy is matched to a pool account. GateKeeper&#39;s task is to authenticate the user and the job and pass it to the globus job manager.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The globus job manager uses the GRAM protocol to report the job state and submits the job to the globus-job-manager-marshal which is using a perl module to talk to the relevant queuing system.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;This perl module is responsible for the creation of the job (shell script) that will be submitted to the PBS server. In this module the CpuNumber requirement is translated by default to:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;#PBS -l nodes=X&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;So this is the part we need to change in order to create OpenMP jobs. The next issue now is how we find out if user has asked for OpenMP job. I&#39;ve noticed that the JDL option &quot;Environment&quot; is passed to the job executable that will be submitted thus a definition like the following:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;  white-space: pre; font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;Environment = {&quot;OPENMP=true&quot;};&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;can do the trick.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;The whole above approach works but for sure needs a lot of work but as proof of concept is more than ok...&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;In the (near) future i would like to test the CREAM CE which, as i said before, has a more clear way to support requirements from JDLs using the &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;  white-space: pre; font-family:monospace, Geneva, Helvetica, Arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;CeForwardParameters&lt;span class=&quot;Apple-style-span&quot;  style=&quot; white-space: normal; font-family:Georgia, fantasy;&quot;&gt; definition.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:Georgia, -webkit-fantasy;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  ;font-family:Verdana, Geneva, Helvetica, Arial, sans-serif;font-size:14px;&quot;&gt;&lt;pre class=&quot;escaped&quot;  style=&quot; margin-top: 0px; margin-bottom: 0px; font-size:1.1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  white-space: normal; font-family:Georgia, fantasy;font-size:16px;&quot;&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  ;font-family:Verdana, Geneva, Helvetica, Arial, sans-serif;font-size:14px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/4103228542823900676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/06/openmp-jobs-on-grid-lcg-ce-pbs-approach.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/4103228542823900676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/4103228542823900676'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/06/openmp-jobs-on-grid-lcg-ce-pbs-approach.html' title='OpenMP jobs on Grid? (The LCG-CE - PBS approach)'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-1553764720633625920</id><published>2009-06-19T12:53:00.005+03:00</published><updated>2009-06-24T21:56:46.035+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developing"/><category scheme="http://www.blogger.com/atom/ns#" term="repository"/><category scheme="http://www.blogger.com/atom/ns#" term="svn"/><title type='text'>Coding on multiple SVN repositories...</title><content type='html'>As a developer i use to use repositories (mainly SVN) for code versioning and to interact with other developers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Involvement in developments from other teams within a project usually require that the (production) repository is hosted somewhere centrally. This give us the advantage of having one code-base where all developers to work. The main disadvantage of this implementation though is that usually developers doesn&#39;t commit till they have something really stable and working.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another disadvantage is that it is not clear to someone outside your mind to find out on what you are working on (and usually &quot;manager&quot; guys need to do so).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was proposed to use a local repository for every developing i do where it would be easy to have &quot;every change&quot; commits and commit stable versions to the central repositories. This will give us both frequent commits (thus clear history view) and other are able to see on what you are working and probably comment on this work. At first i was highly against this... It&#39;s clear that it adds a lot of additional work without giving us many clear advantages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As this was a &quot;manager&#39;s&quot; proposition i had to try it. The initial thought was to work on our local repository and then, when i have something stable, take a diff since last sync of the repositories to apply it to the remote (central repository).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But ... thinking on this again, is it the &quot;svn tagging&quot; procedure having different server for trunk and tags?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An implementation to test:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Creation of a local test repository with trunk and tag trees&lt;/li&gt;&lt;li&gt;Create a new repository to serve as &quot;the remote central repository&quot;&lt;/li&gt;&lt;li&gt;Create a new tag at the first repository which will have an svn:external link to &quot;the remote central repository&quot;&lt;/li&gt;&lt;li&gt;Start tagging as normal on the local test repository but always at the same tag.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/1553764720633625920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/06/coding-on-multiple-svn-repositories.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1553764720633625920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/1553764720633625920'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/06/coding-on-multiple-svn-repositories.html' title='Coding on multiple SVN repositories...'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7125095605575663368.post-8314032907914001017</id><published>2009-06-19T01:50:00.002+03:00</published><updated>2009-06-19T03:34:22.658+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iPhone addiction"/><title type='text'>iPhone 3.0 OS is here...</title><content type='html'>&lt;div&gt;It took me about 8 hours &quot;check for updates&quot; clicking and finally around 8pm on Wednesday it was available!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the 230 MB download, the first 200MB were downloaded within a few seconds while the last 30 took about half an hour! (was one of the first downloaders?)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;About 24 hours experience on iPhone 3.0 and i think that finally there is all the missing &quot;phone&quot; functionality.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thumps up:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;I can write Greek!&lt;/li&gt;&lt;li&gt;iPod shake! (shake to shuffle)&lt;/li&gt;&lt;li&gt;&quot;Search iPhone&quot; or the iPhone spotlight. Everything is about a text box away from your screen.&lt;/li&gt;&lt;li&gt;mms (never used it before but it was a pity that iPhone was unable to do something that 30 euro mobiles do)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Thumps down:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Some apps 3rd party report &quot;compatibility errors&quot; (fortunately without any (visible) malfunction).&lt;/li&gt;&lt;li&gt;Still no background applications (no skype on background)&lt;/li&gt;&lt;li&gt;No email filters (should I consider procmail?)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ctria.blogspot.com/feeds/8314032907914001017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ctria.blogspot.com/2009/06/iphone-30-os-is-here.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/8314032907914001017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7125095605575663368/posts/default/8314032907914001017'/><link rel='alternate' type='text/html' href='http://ctria.blogspot.com/2009/06/iphone-30-os-is-here.html' title='iPhone 3.0 OS is here...'/><author><name>Christos Triantafyllidis</name><uri>http://www.blogger.com/profile/04138599447957010107</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>