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

<channel>
	<title>Razvan Gavril</title>
	<atom:link href="http://razvangavril.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://razvangavril.com</link>
	<description>Sysadmin &#38; Developer</description>
	<lastBuildDate>Mon, 31 Oct 2011 18:32:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Custom Google Voice Widget 2</title>
		<link>http://razvangavril.com/web-development/custom-google-voice-widget-2/</link>
		<comments>http://razvangavril.com/web-development/custom-google-voice-widget-2/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 18:31:44 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=484</guid>
		<description><![CDATA[In a previous article I covered creating a custom google voice widget using html alone. A had a lot of questions asking me how to submit that html form without refreshing the page. Well the answer is here&#8230; How to do it First, some technical details to those interested. There a lot of ways to [...]]]></description>
				<content:encoded><![CDATA[<p>In a previous article I covered creating a <a href="http://razvangavril.com/web-development/custom-google-voice-widget/">custom google voice widget</a> using html alone. A had a lot of questions asking me how to submit that html form without refreshing the page. Well the answer is here&#8230;<br />
<span id="more-484"></span></p>
<h3>How to do it</h3>
<p>First, some technical details to those interested. There a lot of ways to submit a form in background but it&#8217;s something that we need to consider for this particular problem. We&#8217;re forced to do a cross domain post from our website to google, that means that classical ajax stuff is not going to work here.</p>
<p>First options that come to my mind are: server side ajax proxy or a flash ajax proxy &#8230; but that would require something more that html and I&#8217;ve wanted a simple widget. Since I don&#8217;t care that much on what google server is sending as a reply to our post, we can use iframes and code everything in javascript.</p>
<p>Ok so the problem is solved like this. Create a hidden iframe, create a form in the iframe and submitted that form to google&#8230; or download the javascript function that I wrote.</p>
<h3>Let me have it</h3>
<p>It&#8217;s a simple javascript function and a demo html that shows you how to use it. You&#8217;re encouraged to download the <a href="http://razvangavril.com/google-click2call.zip">google-click2call.zip</a> and use it as a base for you widget. You can also try a basic demo on this very page:</p>
<p>Button ID<br />
<input id="button_id" type="text" value="" /><br />
Number<br />
<input id="cid_number" type="text" /></p>
<p><button onclick="send_call()">Request a Call</button><br />
<script type="text/javascript" src="http://razvangavril.com/click2call.js"></script><br />
<script type="text/javascript">// <![CDATA[</p>
<p>function send_call() {
var button_id  = document.getElementById('button_id').value;
var cid_number = document.getElementById('cid_number').value;
var cid_name   = "razvangavril.com";
click2call(button_id, cid_number, cid_name);
alert('Call Sent');
}
// ]]&gt;</script></p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/web-development/custom-google-voice-widget-2/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Custom Ubuntu Server ISO</title>
		<link>http://razvangavril.com/linux-administration/custom-ubuntu-server-iso/</link>
		<comments>http://razvangavril.com/linux-administration/custom-ubuntu-server-iso/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 17:13:06 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Linux Administration]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=373</guid>
		<description><![CDATA[Remastering the Ubuntu Desktop ISO is easy considering the existing graphical tools but did you ever wanted to build your custom Ubuntu Server Edition ISO ? Preparing the Environment You&#8217;ll need a clean copy of the Ubuntu Server ISO that you want to customize. Since 10.04 is the latest Ubuntu version I will write down [...]]]></description>
				<content:encoded><![CDATA[<p>Remastering the Ubuntu Desktop ISO is easy considering the existing graphical tools but did you ever wanted to build your custom Ubuntu Server Edition ISO ?<br />
<span id="more-373"></span></p>
<h3>Preparing the Environment</h3>
<p>You&#8217;ll need a clean copy of the Ubuntu Server ISO that you want to customize. Since 10.04 is the latest Ubuntu version I will write down my examples using it but everything should work pretty much unchanged for older or newer versions.</p>
<p>After you have you have the original iso image downloaded, make a copy it&#8217;s contents so we can later apply our patching there.</p>
<pre>cd /home/rgavril/Work

mkdir original-iso custom-iso
mount -o loop ./ubuntu-10.04-server-i386.iso ./original-iso

cp -r ./original-iso/* ./custom-iso/
cp -r ./original-iso/.disk/ ./custom-iso/

umount ./original-iso/</pre>
<h3>Adding a Boot Menu Option</h3>
<p>For start let&#8217;s add a option to the cd boot menu. You&#8217;ll need to modify <em>isolinux/text.cfg</em> and insert the next lines between <em>default install</em> and <em>label install</em>:</p>
<pre>label custom
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/isolinux/ks-custom.cfg --</pre>
<p>This newly added block is very similar to the <em>label install</em> one. The two important additions being the <em>file</em> and <em>ks</em> boot options that I will later explain.</p>
<p>If you want to make your menu option the default one, you only need to change the <em>default install</em> to <em>default custom</em> or whatever you used as a label.</p>
<h3>Kickstart-ing</h3>
<p><em><a href="http://en.wikipedia.org/wiki/Kickstart_(Linux)">KickStart</a></em> is a unattended installation method developed by Red Hat and later adopted and adapted by Debian and Ubuntu. To keep it short, the Ubuntu installer can read an external file and figure out how to configure the system (create partitions, set timezones and keyboard layouts ..) without asking the user.</p>
<p>There&#8217;s no need to write everything using a text editor as we have a powerful tool to create such configuration files:</p>
<pre>apt-get install system-config-kickstart
ksconfig</pre>
<p>After creating your ks.cfg file, you will need to move it on the <em>custom-iso/</em> at the path specified in <em>text.cfg</em>. That&#8217;s the location where the ubuntu installer will look for it.</p>
<pre>cp ks.cfg custom-iso/isolinux/ks-custom.cfg</pre>
<h3>Preseeding Packages</h3>
<p>The installer in not the only one that may present questions to the user. When installed, some package rely on the user to explicitly set different parameters.</p>
<p><em>Preseeding</em> is the action of setting, in advance, this kind of package parameters. It&#8217;s a very powerful method that you can use even for replacing kickstart. In this article, I&#8217;ll use it as a addition to kickstart as is more harder to tune the ubuntu installer, mostly because it lacks a gui.</p>
<p>The params can be set trough a configuration file specified by the <em>file</em> in <em>text.cfg</em>. I recommend starting with the existing preseed file from the original cd:</p>
<pre>cp custom-iso/preseed/ubuntu-server.seed custom-iso/preseed/ubuntu-custom.seed</pre>
<p>Using <em>debconf-get-selections</em> from the <em>debconf-utils</em> package you can look over a running ubuntu system to figure out what parameters you can tune. For example here are the possible configuration settings for the openssh-server together with their values :</p>
<pre>root@xps1330:~/work# debconf-get-selections | grep openssh
openssh-server	ssh/vulnerable_host_keys	note
openssh-server	ssh/use_old_init_script	boolean	true
openssh-server	ssh/encrypted_host_key_but_no_keygen	note
openssh-server	ssh/disable_cr_auth	boolean	false</pre>
<h3>Adding Extra Packages</h3>
<p>Ubuntu&#8217;s <em>ksconfig</em> utility does&#8217;n provide a way to select extra packages as the <em>Package Selection</em> is not working. In order to specify what extra packages you want to install you&#8217;ll need to modify the kickstart configuration file by hand.</p>
<pre>vim custom-iso/isolinux/ks-custom.cfg</pre>
<p>Depending on the extra packages that you want to install by default, add some similar lines to the end of the file :</p>
<pre>
%packages
openssh-server
asterisk
asterisk-mysql</pre>
<h3>Offline Installation</h3>
<p>When having additional packages installed by default, there&#8217;s a big chance are that those particular packages may not be on the default iso. If you have an active internet connection during the install, the packages will be automatically fetched from the online repositories. But if you&#8217;re internet connection is not working, the install process will fail. In order to prevent the problem and create a offline installable cd, you&#8217;ll need to perform some extra steps. </p>
<p>You&#8217;ll need to downloading and copying the extra debs and all their dependencies on your iso. Please note that in doing so you may increase the iso size a lot and be forced to use a dvd.</p>
<p>It&#8217;s very hard to figure out what debs are missing from your iso. In order to make a list of needed debs I use the following steps:</p>
<ul>
<li>On a virtual machine, install a ubuntu server using the original cd image.</li>
<li>Boot the newly installed ubuntu server, make sure the cd is mountable and <em>cdrom</em> directive is available in sources.list</li>
<li>Do an <em>apt-get install</em> of the extra packages that I want to have installed by default</li>
<li>Make a backup of the debs located in <em>/var/cache/apt/archives</em> as this are the missing ones that need to be on the iso</li>
</ul>
<p>Considering that you downloaded the extra packages, and that they are located in the <em>extradebs/</em> directory within the current folder. You will need to copy them on the cd and create a repository by running this commands:</p>
<pre>mkdir -p custom-iso/dists/stable/extras/binary-i386
mkdir -p custom-iso/pool/extras/

cp ./extradebs/*.deb custom-iso/pool/extras/

pushd custom-iso
apt-ftparchive packages ./pool/extras/ &gt; dists/stable/extras/binary-i386/Packages
gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz &gt; /dev/null
popd</pre>
<h3>Generating the new ISO</h3>
<p>All you need to do now is build you new iso and give it a test drive to see how it works:</p>
<pre>mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-10.04-custom-i386.iso custom-iso/</pre>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/linux-administration/custom-ubuntu-server-iso/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>SSH as a Socks Proxy</title>
		<link>http://razvangavril.com/linux-administration/ssh-as-a-socks-proxy/</link>
		<comments>http://razvangavril.com/linux-administration/ssh-as-a-socks-proxy/#comments</comments>
		<pubDate>Fri, 28 May 2010 18:39:56 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[socks]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=343</guid>
		<description><![CDATA[Did you know can transform any machine that you can ssh to into a quick and secure socks proxy? I find that very useful in at least 2 scenarios: Trying to access an web application from a private network. A example would be to configure some network devices (nas, voip phones) that are located on [...]]]></description>
				<content:encoded><![CDATA[<p>Did you know can transform any machine that you can ssh to into a quick and secure socks proxy? I find that very useful in at least 2 scenarios:</p>
<ul>
<li>Trying to access an web application from a private network. A example would be to configure some network devices (nas, voip phones) that are located on a client&#8217;s internal network</li>
<li>When you&#8217;re on a unsecure network, like a wireless hotspot and you&#8217;re afraid that your password can be sniffed</li>
</ul>
<p><span id="more-343"></span></p>
<p>All you need to in order to get your proxy going is open a ssh connection to your ssh server the <em>-D</em> param, like this:</p>
<p><code>ssh -D 8081 bill@microsoft.com</code></p>
<p>After the ssh login you need to configure your browser to use <em>127.0.0.1:8081</em> as a socks proxy and you done with it. Note that other applications can use a socks proxy too, not only the web browser.</p>
<p>If you&#8217;re from the windows world you can use putty also but I won&#8217;t cover that here.</p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/linux-administration/ssh-as-a-socks-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu SVN Setup</title>
		<link>http://razvangavril.com/linux-administration/ubuntu-svn-setup/</link>
		<comments>http://razvangavril.com/linux-administration/ubuntu-svn-setup/#comments</comments>
		<pubDate>Fri, 14 May 2010 17:04:45 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=267</guid>
		<description><![CDATA[If you&#8217;re looking over the perfect subversion setup in ubuntu you&#8217;re at the right place. I&#8217;m a long time subversion and ubuntu user and I&#8217;ll try to share some info on how I keep my source code safe. This article will cover how you can setup your own webdav enabled, multi repository subversion server. Setting [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re looking over the perfect subversion setup in ubuntu you&#8217;re at the right place. I&#8217;m a long time subversion and ubuntu user and I&#8217;ll try to share some info on how I keep my source code safe. This article will cover how you can setup your own webdav enabled, multi repository subversion server.<br />
<span id="more-267"></span></p>
<h3>Setting up Subversion with WebDav Access</h3>
<p>Starting with the easy part, installing all the needed packages.</p>
<pre>apt-get install apache2 libapache2-svn subversion</pre>
<p>We&#8217;re also going to need a directory structure where to store our repositories and config files:</p>
<pre>mkdir -p /var/lib/svn/conf/policies
mkdir -p /var/lib/svn/repository</pre>
<p>Let&#8217;s create our first config file <em>/var/lib/svn/conf/default_policy.conf</em>. We&#8217;re going to use this file to act as a default webdav config for every repository.</p>
<pre>&lt;Location /&gt;
        Dav svn
        SVNParentPath /var/lib/svn/repository
        AuthType Basic
        AuthName "Razvan's Subversion Repository"
        AuthUserFile /var/lib/svn/conf/passwords
        Require user rgavril
&lt;/Location&gt;</pre>
<p>Of course you should set the <em>Require user</em> and <em>AuthName</em> to match your needs.</p>
<p>Create a default svn user. Since I used <em>rgavril</em> in the above config file, I&#8217;ll continue my example with that username but you can use whatever you want.</p>
<pre>htpasswd -c /var/lib/svn/conf/passwords rgavril</pre>
<p>Now we need to deceide on how to access the subversion repositories. I&#8217;m into using the <em>http://svn.domain.com/project</em> naming scheme so I&#8217;ll show you how to do that. Create a file named <em>svn.domain.com</em> in <em>/etc/apache2/sites-available</em> with the fallowing content:</p>
<pre>&lt;VirtualHost *:80&gt;
        ServerName              svn.domain.com
        UseCanonicalName  Off
        ServerAdmin             "admin@domain.com"
        CustomLog               /var/log/apache2/svn.domain.com_access_log combined
        ErrorLog                /var/log/apache2/svn.domain.com_error_log

        Include /var/lib/svn/conf/default_policy.conf
        Include /var/lib/svn/conf/policies/*
&lt;/VirtualHost&gt;</pre>
<p>Let&#8217;s enable enable the svn_dav module and the newly created virtual host in apache and restart it:</p>
<pre>a2ensite svn.domain.com
a2enmod dav_svn
invoke-rc.d apache2 restart</pre>
<h3>Creating and Managing Repositories</h3>
<p>Ok so let&#8217;s start creating our first repository in svn, it&#8217;s actually very simple:</p>
<pre>mkdir /var/lib/svn/repository/project001
svnadmin create /var/lib/svn/repository/project001
chown -R www-data.www-data /var/lib/svn/repository/project001</pre>
<p>After running the above commands you should be able to use access your newly created repository using this url: <em>http://svn.domain.com/project001</em></p>
<p>Let&#8217;s assume you&#8217;re working with <em>bob</em> on this project and you want to give him access to the repository don&#8217;t allow him to access the other projects. What you want to do is to create a password for bob:</p>
<pre>htpasswd /var/lib/svn/conf/passwords bob</pre>
<p>And now create a special policy for this project by creating a file named  <em>/var/lib/svn/conf/policy/project001.conf</em> :</p>
<pre>&lt;Location /&gt;
        AuthName "Razvan and Bob's Repository"
        Require user rgavril bob
&lt;/Location&gt;</pre>
<p>For setting more complex user rights I recommend using the <em>AuthzSVNAccessFile</em> directive, but this should get you going for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/linux-administration/ubuntu-svn-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Asterisk Watchdog</title>
		<link>http://razvangavril.com/linux-administration/simple-asterisk-watchdog/</link>
		<comments>http://razvangavril.com/linux-administration/simple-asterisk-watchdog/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 19:04:11 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Voip]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=252</guid>
		<description><![CDATA[Asterisk is pretty stable but from time to time it may crash so it&#8217;s better to be prepared for that. A hour of downtime may cost a lot of money if you have a heavy used server. Want a quick solution to automatically restart asterisk after a crash? This little bash script will do the [...]]]></description>
				<content:encoded><![CDATA[<p>Asterisk is pretty stable but from time to time it may crash so it&#8217;s better to be prepared for that. A hour of downtime may cost a lot of money if you have a heavy used server. Want a quick solution to automatically restart asterisk after a crash? This little bash script will do the trick.<span id="more-252"></span><br />
Create a file named <em>asterisk-watchdog.sh</em> in <em>/usr/local/bin</em> with the fallowing content :</p>
<pre>#!/bin/bash

asterisk -rx 'core show version' &amp;&gt; /dev/null
errcode=$?

if [[ "$errcode" != "0" ]] ;then
/etc/init.d/asterisk stop
sleep 3
/etc/init.d/asterisk start
fi</pre>
<p>Then edit <em>/etc/crontab</em> and add :<br />
<code>*/2 * * * * root /usr/local/bin/asterisk-watchdog.sh</code></p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/linux-administration/simple-asterisk-watchdog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Strong Passwords</title>
		<link>http://razvangavril.com/uncategorized/strong-passwords/</link>
		<comments>http://razvangavril.com/uncategorized/strong-passwords/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 03:39:04 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[passwords]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=233</guid>
		<description><![CDATA[Having a strong password is not a easy skill to master. I&#8217;ve seen a lot of various password generators on the Internet, they all suck and you have a big chance to generate the weakest password you&#8217;ll ever have. Why is that, because it may be so strong that you will probably need write it [...]]]></description>
				<content:encoded><![CDATA[<p>Having a strong password is not a easy skill to master. I&#8217;ve seen a lot of various password generators on the Internet, they all suck and you have a big chance to generate the weakest password you&#8217;ll ever have. Why is that, because it may be so strong that you will probably need write it down in order to remember it.<span id="more-233"></span></p>
<p><em>Totally Fail</em>: Random nonsense password. How you&#8217;re going to remember &#8216;x5Lt7B7Bm8&#8242; if you&#8217;re human? Let&#8217;s say you take you time and learn it, you&#8217;re still exposed as you&#8217;ll tend to use it on all your accounts. Remembering a different strong password for every account &#8230; that&#8217;s ninja stuff.</p>
<p><em>Fail</em>: Use a easy to remember dictionary word and replace letters with signs. That&#8217;s useless, how you&#8217;re going to remember what letters/signs association? Multiple letters can be assigned to multiple signs. Was it pa22w0rd or p@s2w*rd or  &#8230;. damnnnn !</p>
<p><em>Not so Fail</em>: Associating the random letters form the password to random words and remembering the words. That&#8217;s nice but why to remember random words when you have ..</p>
<p><em>Win</em>: Words that make sense :</p>
<ul>
<li>&#8217;1 For the Money, 2 For the Show, 3 to Get Ready&#8230;&#8217; = 1Ftm,2FtS,3tGR&#8230;</li>
<li>&#8216;I was born in 1982&#8242; = Iwbi1982</li>
<li>&#8216;Will not work for less than 150USD/h&#8217; = Wnwflt150U/h</li>
</ul>
<p>How do you remember your password ?</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 57px; width: 1px; height: 1px;">
<table border="0" cellspacing="5" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="border: 1px solid #c5c5c7; padding-top: 3px; padding-bottom: 3px;" valign="top"></td>
<td style="border: 1px solid #c5c5c7; padding-top: 3px; padding-bottom: 3px;" valign="top"><em>(papa &#8211; HOTEL &#8211; UNIFORM &#8211; sierra &#8211; papa &#8211; Nine &#8211; bravo &#8211; romeo)</em></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/uncategorized/strong-passwords/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jquery Version in WordPress</title>
		<link>http://razvangavril.com/web-development/jquery-version-in-wordpress/</link>
		<comments>http://razvangavril.com/web-development/jquery-version-in-wordpress/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 19:15:09 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=225</guid>
		<description><![CDATA[WordPress comes by default with jquery, that&#8217;s good until you want to use some other version. A quick method would be to find out where wordpress stores the jquery js file and replace it, unfortunately that won&#8217;t be very helpful as it may get overwritten at the next upgrade or you may not have access [...]]]></description>
				<content:encoded><![CDATA[<p>WordPress comes by default with jquery, that&#8217;s good until you want to use some other version. A quick method would be to find out where wordpress stores the jquery js file and replace it, unfortunately that won&#8217;t be very helpful as it may get overwritten at the next upgrade or you may not have access to the actual wordpress installation as you&#8217;re developing a theme.<span id="more-225"></span></p>
<p>The safe way to do is to disable the default jquery version and load your own. To disable the default version call the <em>wp_deregister_script</em> before <em>wp_head</em>.</p>
<p><code>wp_deregister_script('jquery');<br />
wp_head();<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/web-development/jquery-version-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Google Voice Widget</title>
		<link>http://razvangavril.com/web-development/custom-google-voice-widget/</link>
		<comments>http://razvangavril.com/web-development/custom-google-voice-widget/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 21:12:39 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[click2call]]></category>
		<category><![CDATA[google voice]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=168</guid>
		<description><![CDATA[Google Voice has very usefull click to call widget that you can add on your website but .. it&#8217;s flash it&#8217;s big and I don&#8217;t like it. I wanted something that I can customise and that can run without flash (ex. on iPhone) so I looked under the hood to see if I can create [...]]]></description>
				<content:encoded><![CDATA[<p>Google Voice has very usefull click to call widget that you can add on your website but .. it&#8217;s flash it&#8217;s big and I don&#8217;t like it. I wanted something that I can customise and that can run without flash (ex. on iPhone) so I looked under the hood to see if I can create a html only widget, and it&#8217;s actually quite easy.<br />
<span id="more-168"></span><br />
First you need to login in your google voice account and create a call widget from the Settings page. This is required as it creates a uniquid that we will use later. After creating the widget, copy the Embed string into a text editor. We&#8217;re going to extract only what we need from there. For example my embed string looks like this:</p>
<p><code>&lt;object type="application/x-shockwave-flash" data="https://clients4.google.com/voice/embed/webCallButton" width="230" height="85"&gt;<br />
&lt;param name="movie" value="https://<strong>clients4</strong>.google.com/voice/embed/webCallButton" /&gt;<br />
&lt;param name="wmode" value="transparent" /&gt;<br />
&lt;param name="FlashVars" value="id=<strong>4563a8e24f4009bcaf7122437e2f9bc0b15c192e</strong>&amp;style=0" /&gt;<br />
&lt;/object&gt;</code></p>
<p>What we will use from all this is only the <em>id</em> flash parameter and the <em>client server</em> from google.</p>
<p>And now let&#8217;s create a html equivalent of the flash code. It&#8217;s actually quite simple as the flash doesn&#8217;t do anything else than sending a <em>post</em> to google server with some parameters.</p>
<p><code>&lt;form method="post" action="https://<strong>clients4</strong>.google.com/voice/embed/webButtonConnect"&gt;<br />
&lt;input type="hidden" name="buttonId" value="<strong>4563a8e24f4009bcaf7122437e2f9bc0b15c192e</strong>" /&gt;<br />
Caller Number:<br />
&lt;input type="text" name="callerNumber" /&gt;<br />
&lt;br /&gt;<br />
Caller Name :<br />
&lt;input type="text" name="name" /&gt;<br />
&lt;br /&gt;<br />
Show Caller Number :<br />
&lt;input type="checkbox" value="1" name="showCallerNumber" checked="checked" /&gt;<br />
&lt;br /&gt;<br />
&lt;button type="submit"&gt;Call Me&lt;/button&gt;<br />
&lt;form&gt;<br />
</code></p>
<p>Of course you should create your custom form, style it with css and it&#8217;ll look great. I recommend posting the form with ajax else the user is redirected to google&#8217;s page after clicking your button, is up to how you decide to use it.</p>
<p><strong>Update</strong> : Continue reading the <a href="http://razvangavril.com/uncategorized/custom-google-voice-widget-2/">Custom Google Voice Widget 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/web-development/custom-google-voice-widget/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Cooking with WordPress</title>
		<link>http://razvangavril.com/web-development/cooking-with-wordpress/</link>
		<comments>http://razvangavril.com/web-development/cooking-with-wordpress/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 23:43:36 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=156</guid>
		<description><![CDATA[A site that caught my attention the other day and it worth installing a rss reader just for it&#8217;s feed is WpRecipes. The website it&#8217;s a interesting lecture for everyone that&#8217;s developing website using wordpress as it has a lot of short and very useful &#8216;recipes&#8217; to customise wordpress. As a bonus, if you like [...]]]></description>
				<content:encoded><![CDATA[<p>A site that caught my attention the other day and it worth installing a rss reader just for it&#8217;s feed is <a href="http://www.wprecipes.com/">WpRecipes</a>. The website it&#8217;s a interesting lecture for everyone that&#8217;s developing website using wordpress as it has a lot of short and very useful &#8216;recipes&#8217; to customise wordpress.</p>
<p>As a bonus, if you like the website you can check another other website by the same author: <a href="http://www.catswhocode.com/blog/">Cats Who Code</a>. Have fun cooking!</p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/web-development/cooking-with-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Byobu: Screen on Steroids</title>
		<link>http://razvangavril.com/linux-administration/byobu-screen-on-steroids/</link>
		<comments>http://razvangavril.com/linux-administration/byobu-screen-on-steroids/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 22:20:56 +0000</pubDate>
		<dc:creator>Razvan Gavril</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[byobu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://razvangavril.com/?p=132</guid>
		<description><![CDATA[I use screen on linux for a long time now and I always knew there&#8217;s something more into it but I was to lazy to customise it or learn more that basic functionality. If you don&#8217;t know that the screen does and you regularly work with remote ssh sessions, especially on crappy Internet connections, than [...]]]></description>
				<content:encoded><![CDATA[<p>I use <a href="http://www.gnu.org/software/screen/">screen</a> on linux for a long time now and I always knew there&#8217;s something more into it but I was to lazy to customise it or learn more that basic functionality. If you don&#8217;t know that the <em>screen</em> does and you regularly work with remote ssh sessions, especially on crappy Internet connections, than you have a big problem and you could really use a <em>rtfm</em>.<span id="more-132"></span></p>
<p><a href="http://razvangavril.com/wp-content/uploads/2010/03/byobu-screenshot.png"><img class="size-medium wp-image-141 alignleft" title="Byobu Screenshot" src="http://razvangavril.com/wp-content/uploads/2010/03/byobu-screenshot-300x201.png" alt="" width="210" height="141" /></a>Browsing the Internet  I bumped into this application called <a href="https://launchpad.net/byobu">Byobu</a>. The name doesn&#8217;t say much, if you&#8217;re not a Japanese speaker, but it worth installing as it completely improves the way you work with your screen sessions. There&#8217;s a package available for Ubuntu 9.10, don&#8217;t know about packages for other distributions and to tell you straight I don&#8217;t even care.</p>
<p style="text-align: left;">Here&#8217;s the ubuntu package description : &#8220;<em>byobu includes a set of profiles for the GNU screen window manager. These profiles are quite useful on server machines which are not running a graphical desktop.  The &#8216;screen&#8217; command provides a number of advanced features are not necessarily exposed in the default profile.  These profiles provide features such as status bars, clocks, notifiers (reboot required, updates available), etc.  The profile-switcher allows users to quickly switch their .screenrc to any of the available profiles</em>&#8220;</p>
]]></content:encoded>
			<wfw:commentRss>http://razvangavril.com/linux-administration/byobu-screen-on-steroids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  razvangavril.com/feed/ ) in 0.35480 seconds, on May 23rd, 2013 at 10:57 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 23rd, 2013 at 11:57 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  razvangavril.com/feed/ ) in 0.00038 seconds, on May 23rd, 2013 at 11:00 am UTC. -->