<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>i2devlabs Blog</title><generator>Tumblr (3.0; @i2devlabs)</generator><link>http://blog.i2devlabs.com/</link><item><title>Supporting CORS and OPTIONS in ServiceStack</title><description>&lt;p&gt;To enable CORS headers and HTTP OPTIONS method in &lt;a href="http://servicestack.net/"&gt;ServiceStack&lt;/a&gt;, add the following code to &lt;code&gt;Configure()&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; this.Plugins.Add(new CorsFeature());

 this.RequestFilters.Add((httpReq, httpResp, requestDto) =&amp;amp;gt; {
       if(httpReq.HttpMethod == "OPTIONS"){
               httpResp.EndServiceStackRequest();
   }
});
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.i2devlabs.com/post/47543487709</link><guid>http://blog.i2devlabs.com/post/47543487709</guid><pubDate>Tue, 09 Apr 2013 11:39:00 -0400</pubDate><category>C ServiceStack CORS OPTIONS</category><dc:creator>pcarvalho</dc:creator></item><item><title>Working hardThat’s Real Racing HD on the iPad :-)</title><description>&lt;img src="http://25.media.tumblr.com/ca55481ead27b22bd07dcebed4b1ee10/tumblr_mk4hym03hT1s9pua5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Working hard&lt;/h2&gt;&lt;p&gt;That’s Real Racing HD on the iPad :-)&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083015361</link><guid>http://blog.i2devlabs.com/post/46083015361</guid><pubDate>Tue, 08 Jan 2013 09:47:59 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Friday Talk: AngularJS</title><description>&lt;p&gt;Cátia is more and more into frontend development and she talked about AngularJS.&lt;/p&gt;
&lt;p&gt;&lt;iframe scrolling="no" margin src="http://www.slideshare.net/slideshow/embed_code/15711241" frameborder="0"&gt; &lt;/iframe&gt;&lt;/p&gt;
&lt;div style="margin-bottom: 5px;"&gt;&lt;strong&gt; &lt;a href="http://www.slideshare.net/i2devlabs/angular-js-presentation" title="AngularJS basics" target="_blank"&gt;AngularJS basics&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/i2devlabs" target="_blank"&gt;i2devlabs&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;</description><link>http://blog.i2devlabs.com/post/46083016329</link><guid>http://blog.i2devlabs.com/post/46083016329</guid><pubDate>Thu, 20 Dec 2012 06:28:58 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Friday Talk: Isolation Levels in SQL Server 2012</title><description>&lt;p&gt;Luís reformated the talk he gave past October about Sql Server isolation levels and concurrency and here is the result.&lt;/p&gt;
&lt;hr&gt;&lt;h1&gt;ISOLATION LEVELS?&lt;/h1&gt;
&lt;p&gt;Isolation Levels exist so that users can control various concurrency problems when creating reading, updating and deleting data from a database. The concurrency problems are the following:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: The examples will run assuming that there is only one row in the TestTable, that is {id = 1, Value = 1}, the isolation level will be READ UNCOMMITED, that is the lowest level and allows us to test all the following problems.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Dirty Read&lt;/h2&gt;
&lt;p&gt;Dirty read happens when selected data is being changed by a transaction, but it was not committed.&lt;/p&gt;
&lt;h3&gt;Example:&lt;/h3&gt;
&lt;h4&gt;Transaction 1:&lt;/h4&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRAN
Select Value from TestTable where id = 1
COMMIT&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;Transaction 2:&lt;/h4&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;BEGIN TRAN
UPDATE TesteTble SET Value = 2 where id = 1
--Simulate having some intensive processing here with a wait
WAITFOR DELAY '00:00:10'
ROLLBACK&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If we run the transaction simultaneous, Transaction 1 will tell us that Value is 2, but Transaction 1 is not yet committed, the data we are reading is only valid for 10 seconds.&lt;/p&gt;
&lt;h2&gt;Non-Repeatable Read&lt;/h2&gt;
&lt;p&gt;Non-Repeatable Read is when two selects to the same data under the same transaction return different data.&lt;/p&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;h4&gt;Transaction 1:&lt;/h4&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRAN
Select Value from TestTable where id = 1
WAITFOR DELAY '00:00:10'
Select Value from TestTable where id = 1
COMMIT&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;Transaction 2:&lt;/h4&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;BEGIN TRAN
UPDATE TestTable SET Value = 2 where id = 1
--Simulate having some intensive processing here with a wait
WAITFOR DELAY '00:00:05'
ROLLBACK&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If we run the transaction simultaneous, Transaction 1 will tell us that Value is 2 in the first select and in the second we will have that the Value is 1.&lt;/p&gt;
&lt;h2&gt;Phantom Reads&lt;/h2&gt;
&lt;p&gt;Phantom Reads is when 2 selects to the same data under the same transaction return different number of rows.&lt;/p&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;h4&gt;Transaction 1:&lt;/h4&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRAN
Select * from TestTable
WAITFOR DELAY '00:00:10'
Select * from TestTable
COMMIT&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;Transaction 2:&lt;/h4&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;BEGIN TRAN
Insert Into TestTable (Value) Values (2)
--Simulate having some intensive processing here with a wait
WAITFOR DELAY '00:00:05'
ROLLBACK&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If we run the transaction simultaneous, Transaction 1 will tell us TestTable has 2 rows {id = 1, Value = 1} and {id = 2, Value = 2}, but the second select will only return 1 row {id = 1, Value = 1}.&lt;/p&gt;
&lt;h1&gt;SQL SERVER ISOLATION LEVELS&lt;/h1&gt;
&lt;h2&gt;Read Uncommitted&lt;/h2&gt;
&lt;p&gt;Read Uncommitted is the lowest Level (Optimistic) and is when reading operations do not respect locks and don’t lock data, has we said before all concurrency problems can occur with this isolation level.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Dirty Read – Yes&lt;/li&gt;
&lt;li&gt;Non-Repeatable Read – Yes&lt;/li&gt;
&lt;li&gt;Phantom Reads – Yes&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Read Committed&lt;/h2&gt;
&lt;p&gt;Read Committed is when reading operation can’t read data that is being changed by another transaction a Dead Lock will occur.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Dirty Read – No&lt;/li&gt;
&lt;li&gt;Non-Repeatable Read – Yes&lt;/li&gt;
&lt;li&gt;Phantom Reads – Yes&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Snapshot&lt;/h2&gt;
&lt;p&gt;Snapshot is only available in SQL Server. In this level, a reading operation will return data that is being changed by another transaction, but without the changes made by it.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Dirty Read – No&lt;/li&gt;
&lt;li&gt;Non-Repeatable Read – Yes&lt;/li&gt;
&lt;li&gt;Phantom Reads – Yes&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Serializable&lt;/h2&gt;
&lt;p&gt;Serializable is the highest Level (Pessimistic) and is when rows and tables being read by a transaction will be locked, Dead Lock will occur in update, insert and delete operations.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Dirty Read – No&lt;/li&gt;
&lt;li&gt;Non-Repeatable Read – No&lt;/li&gt;
&lt;li&gt;Phantom Reads – NO&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Repeatable Read&lt;/h2&gt;
&lt;p&gt;Repeatable Read is when rows being read by a transaction will be locked, a deadlock will occur in update operations.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Dirty Read – No&lt;/li&gt;
&lt;li&gt;Non-Repeatable Read – No&lt;/li&gt;
&lt;li&gt;Phantom Reads – Yes&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.i2devlabs.com/post/46083017593</link><guid>http://blog.i2devlabs.com/post/46083017593</guid><pubDate>Tue, 18 Dec 2012 07:36:00 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Carpenter programmerThat’s Luis Torres right there!</title><description>&lt;img src="http://25.media.tumblr.com/5be6ac7d5c8d077a41e4bfb21afe2c67/tumblr_mk4hz0Pjln1s9pua5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Carpenter programmer&lt;/h2&gt;&lt;p&gt;That’s Luis Torres right there!&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083032749</link><guid>http://blog.i2devlabs.com/post/46083032749</guid><pubDate>Tue, 04 Dec 2012 12:35:19 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Friday Talk: Command Line Interface basics in Linux</title><description>&lt;p&gt;Last Monday, it was y turn to present the Friday Talk (I know, it&amp;#8217;s never on Friday). Lately we have been working on Windows and .NET, and both Luís and Cátia are a tad green on a Linux shell, so I decided to refresh the basics of using the shell on Linux (Ubuntu). The support for this talk wasn&amp;#8217;t a slidedeck, it was the following plain text.&lt;/p&gt;

&lt;hr&gt;&lt;h1&gt;Bash CLI (Command Line Interface) basics in Linux (Ubuntu)&lt;/h1&gt;
&lt;h1&gt;Getting help&lt;/h1&gt;
&lt;p&gt;Use &lt;code&gt;man&lt;/code&gt; to show the manual for a command&lt;/p&gt;
&lt;p&gt;Try &lt;code&gt;man man&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;File &amp;amp; directory&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;~&lt;/code&gt; (tilde) is your home directory, tipically &lt;code&gt;/home/user&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pwd&lt;/code&gt; (stands for print working directory) returns the directory you are in&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt; (list) lists the files in a directory&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd&lt;/code&gt; (change directory)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cp&lt;/code&gt; (copy) copy a file. For directories, use the -r flag &lt;code&gt;cp -r directory foo&lt;/code&gt; (copy recursively)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mv&lt;/code&gt; (move) move a file to a different location or rename a file&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rm&lt;/code&gt; remove a file&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rmdir&lt;/code&gt; delete empty directory. To delete a directory and it&amp;#8217;s contents &lt;code&gt;rmdir -r&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mkdir&lt;/code&gt; to create a new directory&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo&lt;/code&gt; execute a command as root (dangerous stuff)&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Running a file&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;./filename&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;System information&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;df&lt;/code&gt; displays filesystem disk space usage for all mounted partitions. &lt;code&gt;df -h&lt;/code&gt; is more useful, being &lt;code&gt;-h&lt;/code&gt; the flag for &amp;#8220;human-readable&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;top&lt;/code&gt; (table of processes) displays running processes and system resources&lt;/li&gt;
&lt;li&gt;&lt;code&gt;free&lt;/code&gt; displays the amount of free and used memory. &lt;code&gt;free -h&lt;/code&gt; (human-readable) shows values in megabytes, and is probably more useful&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uname -a&lt;/code&gt; prints all system information, inclunding machine name, kernel name &amp;amp; version and more details.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lsb_release -a&lt;/code&gt; prints version information for the Linux release&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;User management&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;adduser newuser&lt;/code&gt; creates a new user called &amp;#8220;newuser&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;passwd someuser&lt;/code&gt; changes the password for &amp;#8220;someuser&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;addgroup newgroup&lt;/code&gt; creates a new group called &amp;#8220;newgroup&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;useradd -G groupname username&lt;/code&gt; creates a new user called &amp;#8220;username&amp;#8221; and adds it to group &amp;#8220;groupname&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;usermod -a -G sftp pedro&lt;/code&gt; adds the existing user &amp;#8220;pedro&amp;#8221; to the group &amp;#8220;sftp&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-G&lt;/code&gt; for secondary groups, &lt;code&gt;-g&lt;/code&gt; for primary groups&lt;/li&gt;
&lt;li&gt;&lt;code&gt;id user&lt;/code&gt; shows the id for the user&lt;/li&gt;
&lt;li&gt;&lt;code&gt;groups user&lt;/code&gt; prints the groups to which the user belongs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;su username&lt;/code&gt; The su command is used to become another user during a login session. Invoked without a username, su defaults to becoming the superuser.&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;File permissions&lt;/h2&gt;
&lt;p&gt;In Linux and Unix, eveything is a file. Directories are files, files are files and devices are files.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;types of access:  
&lt;ul&gt;&lt;li&gt;read (&lt;code&gt;r&lt;/code&gt; or &lt;code&gt;4&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;write (&lt;code&gt;w&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;execute (&lt;code&gt;x&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;user restrictions&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;owner&lt;/li&gt;
&lt;li&gt;group&lt;/li&gt;
&lt;li&gt;other&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;chmod&lt;/code&gt; change permissions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chown&lt;/code&gt; change file owner&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apt-get install acl&lt;/code&gt; for more granular permissions&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Text&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;cat&lt;/code&gt; concatenate files and print on the standard output.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt; find a string in a file or stream. It can be used with Regular expression to be more flexible at finding strings.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;awk&lt;/code&gt; pattern scanning and processing language. It&amp;#8217;s a beast and I&amp;#8217;m not going to discuss it here. More details &lt;a href="http://www.grymoire.com/Unix/Awk.html"&gt;&lt;a href="http://www.grymoire.com/Unix/Awk.html"&gt;http://www.grymoire.com/Unix/Awk.html&lt;/a&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sed&lt;/code&gt; stream editor. Simple example: &lt;code&gt;sed s/day/night/ old.txt &amp;gt; new.txt&lt;/code&gt;. A powerful tool as seen here &lt;a href="http://www.grymoire.com/Unix/Sed.html"&gt;&lt;a href="http://www.grymoire.com/Unix/Sed.html"&gt;http://www.grymoire.com/Unix/Sed.html&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Networking&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;ifconfig&lt;/code&gt; (interface configuration) configure, control, and query TCP/IP network interface parameters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ping&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traceroute&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nslookup&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Piping&lt;/h2&gt;
&lt;p&gt;The pipe makes the output of a command the input for another program. Piping is achieved using the &lt;code&gt;|&lt;/code&gt; character.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ls -l | grep 'init' | less&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;xargs&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;cat files.txt | cp&lt;/code&gt; but this does &lt;code&gt;cat files.txt | xargs cp&lt;/code&gt; because &lt;code&gt;cp&lt;/code&gt; doesn&amp;#8217;t read input, only arguments.&lt;/p&gt;
&lt;h3&gt;backticks&lt;/h3&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;cp `cat files.txt`&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Shell runs the command &lt;code&gt;ct files.txt&lt;/code&gt;, intercepts the standard output and uses the result as parameters to &lt;code&gt;cp&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Directing output&lt;/h2&gt;
&lt;p&gt;Consider this example &lt;code&gt;ls -l &amp;gt; temp.txt&lt;/code&gt; where the output of &lt;code&gt;ls -l&lt;/code&gt; is redirected from the screen to a text file. With the &lt;code&gt;&amp;gt;&lt;/code&gt; character, it the file exists, it will be replaced. To append to a text use &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ls -l &amp;gt;&amp;gt; temp.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Reversing also works_&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grep 'init' &amp;lt; temp.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grep 'init' &amp;lt; temp.txt &amp;gt; temp2.txt&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Shell scripting&lt;/h2&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;#!/bin/bash
echo "The simplest of the scripts"
exit 0&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ol&gt;&lt;li&gt;Every shell script starts with &lt;code&gt;#!&lt;/code&gt;, frequently called Sha-bang&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#!&lt;/code&gt; is the magic number. When the kernel goes to run a program, it looks at the first 16 bits of the file. Simply put, it tells the kernel to execute the file contents with the tool specified after the sha-bang&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Some other sha-bang lines you can use:&lt;/p&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;#!/bin/sh
 #!/bin/bash
 #!/usr/bin/perl
 #!/usr/bin/tcl
 #!/bin/sed -f
 #!/bin/awk -f
 #!/bin/python&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Note: the file containing the shell script must be executable &lt;code&gt;chmod +x&lt;/code&gt; in order to be run like this &lt;code&gt;./script&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Processes&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;&lt;code&gt;ps aux&lt;/code&gt; lists all running processes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kill -signal pid&lt;/code&gt; send the signal &amp;#8220;signal&amp;#8221; to process with id &amp;#8220;pid&amp;#8221;. Omit &amp;#8220;signal&amp;#8221; to just terminate the process&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kill -9 pid&lt;/code&gt; send signal number 9 (SIGKILL) to process with id &amp;#8220;pid&amp;#8221;. This is a last-resort method to terminate a process.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;command &amp;amp;&lt;/code&gt; runs command in the background&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Useful things&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;touch&lt;/code&gt; change file timestamp, creating file if it doesn&amp;#8217;t exist&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;Sources&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://help.ubuntu.com/community/UsingTheTerminal"&gt;&lt;a href="https://help.ubuntu.com/community/UsingTheTerminal"&gt;https://help.ubuntu.com/community/UsingTheTerminal&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Ifconfig"&gt;&lt;a href="http://en.wikipedia.org/wiki/Ifconfig"&gt;http://en.wikipedia.org/wiki/Ifconfig&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://help.ubuntu.com/community/FilePermissions"&gt;&lt;a href="https://help.ubuntu.com/community/FilePermissions"&gt;https://help.ubuntu.com/community/FilePermissions&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://help.ubuntu.com/10.04/serverguide/network-configuration.html"&gt;&lt;a href="https://help.ubuntu.com/10.04/serverguide/network-configuration.html"&gt;https://help.ubuntu.com/10.04/serverguide/network-configuration.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.faqs.org/faqs/unix-faq/faq/part3/section-16.html"&gt;&lt;a href="http://www.faqs.org/faqs/unix-faq/faq/part3/section-16.html"&gt;http://www.faqs.org/faqs/unix-faq/faq/part3/section-16.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Xargs"&gt;&lt;a href="http://en.wikipedia.org/wiki/Xargs"&gt;http://en.wikipedia.org/wiki/Xargs&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://help.lockergnome.com/linux/help-understand-pipe-xargs--ftopict549399.html"&gt;&lt;a href="http://help.lockergnome.com/linux/help-understand-pipe-xargs--ftopict549399.html"&gt;http://help.lockergnome.com/linux/help-understand-pipe-xargs&amp;#8212;ftopict549399.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ece.ucy.ac.cy/courses/ece306/Linux%20primers/LinuxBasics.pdf"&gt;&lt;a href="http://www.ece.ucy.ac.cy/courses/ece306/Linux%20primers/LinuxBasics.pdf"&gt;http://www.ece.ucy.ac.cy/courses/ece306/Linux%20primers/LinuxBasics.pdf&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083034228</link><guid>http://blog.i2devlabs.com/post/46083034228</guid><pubDate>Fri, 16 Nov 2012 12:05:00 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Friday Talk: Python generators</title><description>&lt;p&gt;Today isn&amp;#8217;t Friday, but last Friday the team was working at full speed closing features and client requests, so the talk was postponed for today, Monday. It was Catia turn to present, and she chose to talk about Python generators.&lt;/p&gt;

&lt;p&gt;&lt;iframe scrolling="no" margin src="http://www.slideshare.net/slideshow/embed_code/14935860" frameborder="0"&gt; &lt;/iframe&gt;&lt;/p&gt;
&lt;div style="margin-bottom: 5px;"&gt;&lt;strong&gt; &lt;a href="http://www.slideshare.net/i2devlabs/python-generators" title="Python Generators" target="_blank"&gt;Python Generators&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/i2devlabs" target="_blank"&gt;i2devlabs&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;</description><link>http://blog.i2devlabs.com/post/46083035229</link><guid>http://blog.i2devlabs.com/post/46083035229</guid><pubDate>Mon, 29 Oct 2012 18:52:00 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Friday Talk: Concurrency in SQL Server</title><description>&lt;p&gt;Luís, our in-house Microsoft evangelist, talked about concurrency in SQL Server. His slides were in portuguese, so as soon as he rewrites them in english, this post will be updated with the slidedeck.&lt;/p&gt;
&lt;p&gt;Edit: Luís talk is available in this post &lt;a href="http://blog.i2devlabs.com/friday-talk-isolation-levels-in-sql-server-20"&gt;&lt;a href="http://blog.i2devlabs.com/friday-talk-isolation-levels-in-sql-server-20"&gt;http://blog.i2devlabs.com/friday-talk-isolation-levels-in-sql-server-20&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083036144</link><guid>http://blog.i2devlabs.com/post/46083036144</guid><pubDate>Fri, 19 Oct 2012 18:00:00 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Friday Talk: JavaScript inheritance</title><description>&lt;p&gt;Today we started a new initiative called Friday Talks. Every Friday a team member does a presentation to other team members on a topic he or she chooses. These talks are meant to be small, no more than one hour, and no topic is too small. The whole idea is to share with others that little bits of investigation and reading we (at least I) do on the couch, in the evening.&lt;/p&gt;I was the first one to present and I talked about JavaScript inheritance. Check out the slides.&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe scrolling="no" margin src="http://www.slideshare.net/slideshow/embed_code/14702220" frameborder="0"&gt; &lt;/iframe&gt;&lt;/p&gt;
&lt;div style="margin-bottom: 5px;"&gt;&lt;strong&gt; &lt;a href="http://www.slideshare.net/i2devlabs/2012-oct12-java-script-inheritance-14702220" title="2012 oct-12 - java script inheritance" target="_blank"&gt;2012 oct-12 - java script inheritance&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/i2devlabs" target="_blank"&gt;i2devlabs&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;</description><link>http://blog.i2devlabs.com/post/46083037004</link><guid>http://blog.i2devlabs.com/post/46083037004</guid><pubDate>Fri, 12 Oct 2012 11:05:00 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Apresentação de proposta de estágio no Instituto Politécnico de Leiria</title><description>&lt;p&gt;No passado dia 26 de Junho estive no Instituto Politécnico de Leiria a apresentar a i2devlabs e a nossa proposta de estágio aos alunos do Mestrado em Engenharia Informática - Computação Móvel.&lt;/p&gt;
&lt;p&gt;Podem ver o vídeo aqui:&lt;/p&gt;

&lt;p&gt;&lt;iframe src="http://player.vimeo.com/video/44939159?portrait=0" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;Se não quiserem ver o vídeo, podem ver só os slides:&lt;/p&gt;

&lt;p&gt;&lt;iframe scrolling="no" margin src="http://www.slideshare.net/slideshow/embed_code/14702373" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083037888</link><guid>http://blog.i2devlabs.com/post/46083037888</guid><pubDate>Mon, 02 Jul 2012 07:43:00 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>Whiteboarding</title><description>&lt;img src="http://25.media.tumblr.com/1081fbe0ffb99935bcfd59ca5c297589/tumblr_mk4hzgN8jz1s9pua5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;h2&gt;Whiteboarding&lt;/h2&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083048984</link><guid>http://blog.i2devlabs.com/post/46083048984</guid><pubDate>Fri, 09 Mar 2012 06:54:05 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>When all you have is a hammer…Our specially made, custom...</title><description>&lt;img src="http://25.media.tumblr.com/3742dbc2e5d8412adab8226548911e72/tumblr_mk4hzr4KCQ1s9pua5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;When all you have is a hammer…&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Our specially made, custom built, branded hammer!&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://blog.i2devlabs.com/post/46083062821</link><guid>http://blog.i2devlabs.com/post/46083062821</guid><pubDate>Mon, 30 Jan 2012 08:03:33 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>StickersWe’ve just received the stickers we ordered from...</title><description>&lt;img src="http://24.media.tumblr.com/a139834d2729670908caec40adebd455/tumblr_mk4hzzFWWc1s9pua5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Stickers&lt;/h2&gt;&lt;p&gt;We’ve just received the stickers we ordered from &lt;a href="http://uk.moo.com"&gt;uk.moo.com&lt;/a&gt; and they look awesome!&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083073820</link><guid>http://blog.i2devlabs.com/post/46083073820</guid><pubDate>Fri, 16 Sep 2011 09:33:54 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>New website is live!</title><description>&lt;p&gt;Our new website is up and running. Can you guess what CMS we used to build it? Can you? Did you say &lt;a href="http://getmobilastic.com"&gt;Mobilastic&lt;/a&gt;? You are absolutely right!&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083074603</link><guid>http://blog.i2devlabs.com/post/46083074603</guid><pubDate>Tue, 06 Sep 2011 10:58:45 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>New website design</title><description>&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/new-website-design-2.jpg"/&gt;&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/new-website-design-1.jpg"/&gt;&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/new-website-design-0.jpg"/&gt;Take a look at the final design for the i2DevLabs website. &lt;div&gt;An excellent work, as usual, by &lt;a href="http://magaworks.com"&gt;magaworks.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Now we just need to find the time to build the website. Guess what tool we are going to use to build the new website? hint: &lt;a href="http://getmobilastic.com"&gt;getmobilastic.com&lt;/a&gt;  Yup, that&amp;#8217;s true, we are going to use Mobilastic to build it, not only for mobile, but also for desktop browsers.&lt;/div&gt; &lt;p&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083075469</link><guid>http://blog.i2devlabs.com/post/46083075469</guid><pubDate>Mon, 30 May 2011 19:32:38 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>iPad2 has arrived</title><description>&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/ipad2-has-arrived-3.jpg"/&gt;&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/ipad2-has-arrived-2.jpg"/&gt;&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/ipad2-has-arrived-1.jpg"/&gt;&lt;img src="http://files.justmigrate.com/host-for-tumblr/pcarvalho/ipad2-has-arrived-0.jpg"/&gt;Last week we received a brand new iPad2.&lt;div&gt;It&amp;#8217;s the WiFi and 16GB model. The engraving in the back looks really cool!&lt;/div&gt;&lt;div&gt;Now, on to develop some apps!&lt;/div&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083076384</link><guid>http://blog.i2devlabs.com/post/46083076384</guid><pubDate>Tue, 19 Apr 2011 17:01:45 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>i2DevLabs new logo
Take a look at i2devlabs new logo. The...</title><description>&lt;img src="http://25.media.tumblr.com/0d68a08a8ca2551714e9b2a7ca349df9/tumblr_mk4i07XK5K1s9pua5o1_400.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;i2DevLabs new logo&lt;/h2&gt;
&lt;p&gt;Take a look at i2devlabs new logo.&lt;/p&gt; The “i2” refers back to the old i2Mobile logo and the logic behind the “devlabs” part is of a marker writing on a &lt;span&gt;whiteboard&lt;/span&gt;. We do love our whiteboards to discuss and sketch ideas!
&lt;p&gt;The new website is coming soon :)&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083079860</link><guid>http://blog.i2devlabs.com/post/46083079860</guid><pubDate>Sat, 16 Apr 2011 18:53:00 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>New books in our bookshelfNew books just arrived. Everyone loves...</title><description>&lt;img src="http://25.media.tumblr.com/783548430c1a644ad5823503e94dd6ef/tumblr_mk4i0fcybd1s9pua5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;h2&gt;New books in our bookshelf&lt;/h2&gt;&lt;div&gt;New books just arrived. &lt;/div&gt;&lt;div&gt;Everyone loves the smell of a new book, right?&lt;/div&gt;&lt;/p&gt;</description><link>http://blog.i2devlabs.com/post/46083094175</link><guid>http://blog.i2devlabs.com/post/46083094175</guid><pubDate>Wed, 30 Mar 2011 05:25:14 -0400</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item><item><title>i2Mobile is now i2DevLabs</title><description>&lt;p&gt;The time has arrived to change our name. For some time we have been talking in changing the name of the company formerly know as i2Mobile. Back in 2005, when Miguel and I founded the company, i2Mobile sounded right because our ideas where all about mobile. As our work evolved, we found ourselves, by request of our clients, doing full blown software development projects where mobile was only a tiny part and sometimes not a part at all.&lt;/p&gt; By this time, your should have some questions:&lt;p&gt;&lt;/p&gt;&lt;strong&gt;If not mobile only, what does your company do?&lt;/strong&gt;&lt;br/&gt;We team up with our clients to create great software, the agile way. That&amp;#8217;s it!&lt;strong&gt;Great! So, what&amp;#8217;s the new name?&lt;/strong&gt;&lt;br/&gt; i2DevLabs. We like it, it&amp;#8217;s new but doesn&amp;#8217;t do a complete cut with the past. Apart from that, the .com was available!&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;What kind of projects are you used to do?&lt;/strong&gt;&lt;br/&gt;Consumed focused web, enterprise software, mobile web, Android and iPhone apps. &lt;br/&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;So, you&amp;#8217;re another Rails shop, is it?&lt;/strong&gt;&lt;br/&gt;No, we don&amp;#8217;t even know Ruby or Rails. We believe in using the best tool to do the job. Of course, we don&amp;#8217;t know how to do stuff on every single platform or programming language, but we try to identify and use the tool set that will bring the best results and will make our clients happy. That said, we do have our favorites: Python and Django for consumer based web apps and Microsoft stack (ASP .NET, SQL Server, C#) for enterprise apps. Maybe one of these days, we will add Rails to our tool belt, who knows? We do have an internal rule: &amp;#8220;religious&amp;#8221; discussions regarding programming languages are not welcome.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;br/&gt;&lt;strong&gt;Ok, that&amp;#8217;s a lot of talk. I want to know what&amp;#8217;s i2DevLabs score on The Joel Test. &lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;(For those who don&amp;#8217;t know the Joel test, here is the link &lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;&lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;http://www.joelonsoftware.com/articles/fog0000000043.html&lt;/a&gt;&lt;/a&gt;) &lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="padding-left: 60px;"&gt;&lt;em&gt;&lt;strong&gt;The Joel Test&lt;br/&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;1. Do you use source control?&lt;/strong&gt; Sure. Git+GitHub for some projects; Subversion for others&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;2. Can you make a build in one step?&lt;/strong&gt; Most of the times, yes.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;3. Do you make daily builds?&lt;/strong&gt; Yes.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;4. Do you have a bug database?&lt;/strong&gt; Yes, we use Pivotal Tracker for that.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt; 5. Do you fix bugs before writing new code?&lt;/strong&gt; We sure do.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;6. Do you have an up-to-date schedule?&lt;/strong&gt; Yes. Basecamp helps us with that.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;7. Do you have a spec?&lt;/strong&gt; Yes.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;8. Do programmers have quiet working conditions?&lt;/strong&gt; The best we can afford.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt; 9. Do you use the best tools money can buy?&lt;/strong&gt; Yes.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;10. Do you have testers?&lt;/strong&gt; No. We are working on that.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;11. Do new candidates write code during their interview? &lt;/strong&gt;Yes.&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;12. Do you do hallway usability testing?&lt;/strong&gt; Yes&lt;/em&gt; &lt;br/&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Why does your website &lt;a href="http://i2devlabs.com"&gt;i2devlabs.com&lt;/a&gt; look so bad?&lt;/strong&gt;&lt;br/&gt;It really sucks right now! We are working on it. It will look a lot better any time soon.&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><link>http://blog.i2devlabs.com/post/46083095069</link><guid>http://blog.i2devlabs.com/post/46083095069</guid><pubDate>Tue, 08 Mar 2011 08:50:00 -0500</pubDate><category>JustMigrated</category><dc:creator>pcarvalho</dc:creator></item></channel></rss>
