<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
        <title>Planeta #linux irc.powers.cl</title>
        <link>http://planetalinux.powers.cl/</link>
        <language>en</language>
        <description>Planeta canal #linux irc.powers.cl - http://planetalinux.powers.cl/</description>

	<item>
		<title>Daniel Molina: mozilla extensions with xpcom</title>
		<link>http://coder.cl/2010/07/mozilla-extensions-with-xpcom/</link>
		<description><![CDATA[<p>The <a href='https://developer.mozilla.org/en/XPCOM'><strong>XPCOM</strong></a> API can allow you to create low level extensions &mdash; I mean written in C++, with support for C and assembler through C++ &mdash; and plug ins for <a href='http://www.mozilla.org/'>Mozilla</a> products. For example, you can create an extension to browse IMAP folders from <i>Mozilla Firefox</i>. This API is analogous to the <strong>COM+</strong> API on Micro$oft Windows. One of my most recent projects, is a <a href='http://www.mozilla.com/en-US/firefox/firefox.html'>Firefox</a> extension to handle <a href='http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol'>SNMP</a> protocol requests from JavaScript, so my extension is applied from the JavaScript within the HTML in the browser, allowing Firefox to act as an SNMP client. The extension is working fine, without memory leaks and allows you to do <i>get</i> and <i>walk</i> request. Possibly it will be expanded to more requests on the future.</p>
<p><span id="more-750"></span></p>
<p></p>
<h3>interface definition</h3>
<p>JavaScript requires <i>class definitions</i> to work. So, you need to create <a href='http://en.wikipedia.org/wiki/Interface_description_language'>IDL</a> definitions of your <i>scriptable</i> classes. The syntax for the <i>XPIDL</i> is quite standard, so isn&#8217;t difficult to create interfaces with this IDL variant. To allow you to use IDL defined interfaces on JavaScript, interfaces must be defined as <i>scriptable</i> and must be derived from <i>nsISupports</i> interface, with an unique <i>uuid</i>. Let me show you an example:</p>
<pre name='code' class='java'>
#include &quot;nsISupports.idl&quot;
#include &quot;nsIMyProtocolRequest.idl&quot;
#include &quot;nsIMyProtocolResponse.idl&quot;
#include &quot;nsIMyProtocolError.idl&quot;
#include &quot;nsIMyProtocolStatus.idl&quot;
#include &quot;nsIMyProtocolService.idl&quot;

[scriptable, uuid(3455c51a-3323-4343-844f-2342526113c2)]
interface nsIMyProtocolService : nsISupports
{
    readonly attribute nsIMyProtocolError error;
    nsIMyProtocolResponse get(in nsIMyProtocolRequest req);
    nsIMyProtocolStatus getStatus(in nsIMyProtocolRequest req);
};
</pre>
<p>This will create a XPCOM object wrapped in JavaScript similar to the following example:</p>
<pre name='code' class='javascript'>
var nsIMyProtocolService = {
    error: new nsIMyProtocolError(),
    get: function (req) {
    },
    getStatus: function (req) {
    },
};
</pre>
<p><br/></p>
<h3>class definition</h3>
<p>Here, <tt>error</tt> is a read only attribute, and <tt>get()</tt> and <tt>getStatus()</tt> are methods. But this isn&#8217;t enough, that is just the <i>interface definition</i>. The implementation must be done in C++ so the interface defintion is transformed to <strong>C++</strong> code &mdash; a C++ header specifically &mdash; which must be included in the class implementation <strong>C++</strong> code file. Where need to consider a special note on class attributes and methods: Every method implementation has the form: <i>nsresult MethodName(&#8230;input parameters if any&#8230;, &#8230;output parameters if any&#8230;)</i>, where nsresult is the type of the returned status to the XPCOM API to let it know <i>how was executed</i> the method, so you can return <tt>NS_OK</tt> on execution correctness, <tt>NS_ERROR_NULL_POINTER</tt> for invalid input as null pointers, <tt>NS_ERROR_INVALID_POINTER</tt> for invalid variable input and so on. Well, the class definition inside the implementation file, should look as follow:</p>
<pre name='code' class='cpp'>
class nsMyProtocolService : public nsIMyProtocolService
{
public:
    nsMyProtocolService();
    ~nsMyProtocolService();

    nsresult GetError(nsIMyProtocolError **out);
    nsresult Get(nsIMyProtocolRequest *req,
                 nsIMyProtocolResponse **out);
    nsresult GetStatus(nsIMyProtocolRequest *req,
                 nsIMyProtocolStatus **out);
private:
    int statusCode;
    int errorCode;
    char *errorString;
    nsIMyProtocolError *currentError;
}
</pre>
<p><br/></p>
<h3>class implementation</h3>
<p>You must be a <a href='http://c2.com/cgi-bin/wiki?ThreeStarProgrammer'>two star programmer</a> to know how to implement the argument passing and method output, but I know that you are a good C and C++ programmer, so this is not an obstacle and you can act as a <i>three star programmer</i> without problems. So, the implementation, for example for the <tt>GetError()</tt>, which has been mapped to the <i>error</i> attribute on the <i>nsIMyProtocolService</i> interface, should look as follows:</p>
<pre name='code' class='cpp'>
nsresult
nsMyProtocolService::GetError(nsIMyProtocolError **out)
{
    nsMyProtocolError *rout;
    result = NS_ERROR_NULL_POINTER;
    if (out == NULL || out == nsnull) {
        return result;
    }
    rout = new nsMyProtocolError();
    if (rout == NULL) {
        result = NS_ERROR_NOT_INITIALIZED;
        return result;
    }
    if (currentError != NULL &amp;&amp; currentError != nsnull) {
        NS_RELEASE(currentError);
        delete currentError;
    }
    rout->SetErrorCode(errorCode);
    rout->SetErrorString(errorString);
    NS_ADDREF(rout);
    *out = rout;
    result = NS_OK;
    return result;
}
</pre>
<p>On the example above, we have created a new pointer to the <i>nsIMyProtocolError</i> interface implementation. That pointer, before is being returned to the JavaScript and wrapped by the XPCOM API, must have an increased <i>reference count</i>, so Firefox do not remove that object. But as any language which uses <i>reference counting</i> in its garbage collection tasks, requires a reference counting decrement before the object is released. So you need to release those references using the <tt>NS_RELEASE</tt> macro. As any software development &mdash; with or without a garbage collector behind &mdash; you must be careful with the memory usage. Any object with a reference count different from zero, will hang Firefox, so you need to release reference counting on destructors too.</p>
<pre name='code' class='cpp'>
nsMyProtocolService::~nsMyProtocolService()
{
    if (currentError != NULL &amp;&amp; currentError != nsnull) {
        NS_RELEASE(currentError);
        delete currentError;
    }
}
</pre>
<p><br/></p>
<h3></h3>
<p>The example above shows how the destructor releases the reference counting for the <i>currentError</i> object. But think a little. Every time you call <tt>GetError()</tt>, in other words, you request the <i>error</i> attribute on the <i>nsIMyProtocolService</i> instance, you are increasing references which are left without being decreased. You need an storage for those pointers, so you can use any collection class that you want and is supported by your platform, but is recommended that you use the kind of storage classes which are present on the XPCOM API. How to create a collection?</p>
<pre name='code' class='cpp'>

nsCOMPtr&lt;nsIMutableArray&gt; container;
container = do_CreateInstance(NS_ARRAY_CONTRACTID);
</pre>
<p>The <i>nsIMutableArray</i> provides an array class which can be used inside your Firefox extension and also it can be exposed as a JavaScript array, it is an <i>scriptable</i> class, and also provides methods for pushing and extracting elements as the JavaScript array does, so you can use methods such as <tt>GetLength()</tt>, which is mapped to the <i>length</i> attribute, <tt>AppendElement()</tt>, which is mapped to the <i>append()</i> method, <tt>QueryElementAt()</tt> which is mapped to the <i>array[index]</i> operator. The <i>do_CreateInstance</i> template will allow you create instances of you interfaces, when you are requesting them from other extensions. For example if you want to use the <i>WebDAV</i> extension from your C++ extension, you need to use <i>do_CreateInstance</i> template.</p>
<p><br/></p>
<h3>component declaration</h3>
<p>Finally, you need to register and expose your components to the JavaScript interface and the XPCOM API, so you need to define a contract identifier and add some static code to you extension.</p>
<pre name='code' class='cpp'>
#define NS_MYSVC_CONTRACTID         &quot;@mozilla.org/myprotocol/service;1&quot;
#define NS_MYSVC_CID                                            \
    { /* 3455c51a-3323-4343-844f-2342526113c2 */                \
        0x3455c51a,                                             \
            0x3323,                                             \
            0x4343,                                             \
            { 0x84, 0x4f, 0x23, 0x42, 0x52, 0x61, 0x13, 0xc2 }  \
    }

NS_GENERIC_FACTORY_CONSTRUCTOR(nsMyProtocolService)
NS_DECL_CLASSINFO(nsMyProtocolService)
static const nsModuleComponentInfo components[] =
{
    { &quot;My Protocol Service&quot;, NS_MYSVC_CONTRACTID, NS_MYSVC_CID,
      nsMyProtocolServiceConstructor,
      NULL, NULL, NULL,
      NS_CI_INTERFACE_GETTER_NAME(nsMyProtocolService),
      NULL,
      &amp;NS_CLASSINFO_NAME(nsMyProtocolService)
    }
};

NS_IMPL_NSGETMODULE(nsJxSNMPService, components)
</pre>
<p>This can be used as template, where the <i>components</i> array contains the interface definitions and interface implementation references that allow you to use those classes from JavaScript. This code will:</p>
<dl>
<dt><tt>NS_GENERIC_FACTORY_CONSTRUCTOR</tt></dt>
<dd>Will declare <tt>nsMyProtocolServiceConstructor</tt> to be used as default constructor by the <i>do_CreateInstance()</i> template.</dd>
<dt><tt>NS_DECL_CLASSINFO</tt></dt>
<dd>Will declare class information referencing the <i>nsMyProtocolService</i> class to allow you to use that class information from JavaScript to be exposed to the XPCOM API.</dd>
<dt><tt>NS_MYSVC_CONTRACTID</tt></dt>
<dd>Contract (interface) identifier, it will be required by your JavaScript to instantiate you class, using the interface as was defined in <i>nsIMyProtocolService</i>.</dd>
<dt><tt>NS_MYSVC_CID</tt></dt>
<dd>This is the unique <i>uuid</i> identifier for your component. Remember that those components are quite analogous to the COM+ components on the Window$ platform.</dd>
<dt><tt>NS_IMPL_NSGETMODULE(nsJxSNMPService, components)</tt></dt>
<dd>This line finally will expose &mdash; through static code &mdash; your component to the XPCOM API, and will allow your class to being used from JavaScript or your Firefox extension. Remember that <i>components</i> is an array which can hold multiple interface and class definitions.</dd>
</dl>
<p><br/></p>
<h3>component exposition</h3>
<p>If you followed the article with a conscious reading, the following lines of JavaScript will bring you the proper guide to instantiate your own component. I&#8217;m assuming that you are an experienced <i>system programmer</i> and <i>web developer</i> to handle this article:</p>
<pre name='code' class='javascript'>
const C = Components;
const CI = C.interfaces;
const CL = C.classes;

function getContract(contract) {
  try {
    return C.classes[contract];
  } catch (e) {
    alert(e.message);
  }
}

function getService(contract, iface) {
  try {
    return getContract(contract).getService(CI[iface]);
  } catch (e) {
    alert(e.message);
  }
}

function getInterface(contract, iface) {
  try {
    return getContract(contract).createInstance(CI[iface]);
  } catch (e) {
    alert(e.message);
  }
}

try {
    var myService = getService(&quot;@mozilla.org/myprotocol/service;1&quot;,
                               &quot;nsIMyProtocolService&quot;);

    var myRequest = getService(&quot;@mozilla.org/myprotocol/request;1&quot;,
                               &quot;nsIMyProtocolRequest&quot;);

    myRequest.first_argument = 200;
    myRequest.second_argument = &quot;hello world!&quot;;
    var myResponse = myService.get(myRequest);
    if (typeof(myService.error) == &quot;object&quot;
        &amp;&amp; myService.error.status != 0) {
        alert(myService.error.toString());
    }
} catch (e) {
    alert(e.message);
}
</pre>
<p><br/></p>
<h3>interesting code to look</h3>
<p>You can start downloading the Firefox source code and take a look on the following interfaces:</p>
<ul>
<li><strong>extensions/webdav</strong>, this defines the &quot;@mozilla.org/webdav/service;1&quot; interface, allowing you to create WebDAV clients from JavaScript.</li>
<li><strong>extensions/webservices</strong>, this defines the &quot;@mozilla.org/xmlextras/proxy/webserviceproxy;1,&quot; and similar interfaces, allowing you to create WebService client proxies from JavaScript.</li>
<li><strong>extensions/sql</strong>, this folder stores &quot;@mozilla.org/sql/connection;1&quot; and similar interfaces, so Firefox can be used directly as client to query some RDBMS engines &mdash; such as PostgreSQL and SQLite.</li>
</ul>
<p>You can go on deeper reading code and references to enhance your <strong>XPCOM</strong> component development <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><br/></p>
<h3>references</h3>
<ul>
<li><a href='http://en.wikipedia.org/wiki/XPCOM'><i>&quot;XPCOM&quot;</i></a>, Wikipedia Article, as introductory reading.</li>
<li><a href='http://www.ibm.com/developerworks/webservices/library/co-xpcom.html'><i>&quot;XPCOM Part 1: An introduction to XPCOM&quot;</i></a>, IBM DeveloperWorks article, by <a href='http://www.ibm.com/developerworks/webservices/library/co-xpcom.html#author1'>Rick Parrish</a>.</li>
<li><a href='http://www.ibm.com/developerworks/webservices/library/co-xpcom2.html'><i>&quot;XPCOM Part 2: XPCOM component basics&quot;</i></a>, IBM DeveloperWorks article, by <a href='http://www.ibm.com/developerworks/webservices/library/co-xpcom.html#author1'>Rick Parrish</a>.</li>
<li><a href='http://www.ibm.com/developerworks/webservices/library/co-xpcom3.html'><i>&quot;XPCOM Part 3: Setting up XPCOM&quot;</i></a>, IBM DeveloperWorks article, by <a href='http://www.ibm.com/developerworks/webservices/library/co-xpcom.html#author1'>Rick Parrish</a>.</li>
<li><a href='https://developer.mozilla.org/en/XPCOM'><i>&quot;XPCOM&quot;</i></a>, Mozilla Reference Documentation.</li>
</ul>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F&amp;title=mozilla%20extensions%20with%20xpcom&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=The%20XPCOM%20API%20can%20allow%20you%20to%20create%20low%20level%20extensions%20%26mdash%3B%20I%20mean%20written%20in%20C%2B%2B%2C%20with%20support%20for%20C%20and%20assembler%20through%20C%2B%2B%20%26mdash%3B%20and%20plug%20ins%20for%20Mozilla%20products.%20For%20example%2C%20you%20can%20create%20an%20extension%20to%20browse%20IMAP%20folders%20from%20Moz" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F&amp;title=mozilla%20extensions%20with%20xpcom&amp;notes=The%20XPCOM%20API%20can%20allow%20you%20to%20create%20low%20level%20extensions%20%26mdash%3B%20I%20mean%20written%20in%20C%2B%2B%2C%20with%20support%20for%20C%20and%20assembler%20through%20C%2B%2B%20%26mdash%3B%20and%20plug%20ins%20for%20Mozilla%20products.%20For%20example%2C%20you%20can%20create%20an%20extension%20to%20browse%20IMAP%20folders%20from%20Moz" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F&amp;title=mozilla%20extensions%20with%20xpcom&amp;bodytext=The%20XPCOM%20API%20can%20allow%20you%20to%20create%20low%20level%20extensions%20%26mdash%3B%20I%20mean%20written%20in%20C%2B%2B%2C%20with%20support%20for%20C%20and%20assembler%20through%20C%2B%2B%20%26mdash%3B%20and%20plug%20ins%20for%20Mozilla%20products.%20For%20example%2C%20you%20can%20create%20an%20extension%20to%20browse%20IMAP%20folders%20from%20Moz" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F&amp;title=mozilla%20extensions%20with%20xpcom" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F&amp;t=mozilla%20extensions%20with%20xpcom" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=mozilla%20extensions%20with%20xpcom%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fmozilla-extensions-with-xpcom%2F&amp;title=mozilla%20extensions%20with%20xpcom&amp;annotation=The%20XPCOM%20API%20can%20allow%20you%20to%20create%20low%20level%20extensions%20%26mdash%3B%20I%20mean%20written%20in%20C%2B%2B%2C%20with%20support%20for%20C%20and%20assembler%20through%20C%2B%2B%20%26mdash%3B%20and%20plug%20ins%20for%20Mozilla%20products.%20For%20example%2C%20you%20can%20create%20an%20extension%20to%20browse%20IMAP%20folders%20from%20Moz" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/07/mozilla-extensions-with-xpcom/">Permalink</a> | <a href="http://coder.cl/2010/07/mozilla-extensions-with-xpcom/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></description>
		<pubDate>Sun, 01 Aug 2010 00:02:26 +0000</pubDate>
	</item>
		<item>
		<title>Gonzalo Diaz: Protegido: Sueño extraño: Evolución</title>
		<link>http://blog.gon.cl/post/857</link>
		<description><![CDATA[No hay extracto porque es un artículo protegido.<br/>
<br/>
[...]
<p><a href="http://feedads.g.doubleclick.net/~a/1ZzbUC85VRDkWzIZBImnfpEkrNw/0/da"><img src="http://feedads.g.doubleclick.net/~a/1ZzbUC85VRDkWzIZBImnfpEkrNw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1ZzbUC85VRDkWzIZBImnfpEkrNw/1/da"><img src="http://feedads.g.doubleclick.net/~a/1ZzbUC85VRDkWzIZBImnfpEkrNw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dev/gon?a=AerNj6JT0wg:06pdLsWA_EE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=AerNj6JT0wg:06pdLsWA_EE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dev/gon?i=AerNj6JT0wg:06pdLsWA_EE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=AerNj6JT0wg:06pdLsWA_EE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=AerNj6JT0wg:06pdLsWA_EE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=AerNj6JT0wg:06pdLsWA_EE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=dnMXMwOfBR0" border="0"></img></a>
</div>]]></description>
		<pubDate>Wed, 28 Jul 2010 20:44:48 +0000</pubDate>
	</item>
		<item>
		<title>Daniel Molina: c++ type casting operators</title>
		<link>http://coder.cl/2010/07/c-type-casting-operators/</link>
		<description><![CDATA[<p>Traditionally, <strong>C</strong> programmers and <strong>Java</strong> programmers are accustomed to use the type casting form: <i>(type)variable</i>. <strong>C++</strong>, instead of that classical type casting form, has various type casting operators, used for different purposes. Each operator is used with different kinds of references, for example, you can not use the <i>static_cast</i> operator with virtual classes. Type casting operators in <strong>C++</strong> has a syntax very similar to <i>C++ Templates</i>: <i>cast_operator&lt;type&gt;(variable)</i>.</p>
<p><span id="more-740"></span></p>
<p></p>
<h3>const_cast operators</h3>
<p>If you want an expression to being <i>const</i>, just use the <i>const_cast</i> operator. For example if a legacy function written in <i>C</i> requires of a <i>const</i> argument, just pass a non-const argument by using the <i>const_cast</i> operator:</p>
<pre name="code" class="cpp">
extern "C" {
    void my_function(const char *p);
};

std::string s = std::string("hello world");
my_function(const_cast&lt;char *&gt;(s.c_str()));
</pre>
<p></p>
<h3>static_cast operator</h3>
<p>The static_cast operator performs the conversion unconditionally, without verifying data types at <i>compile time</i>. This makes this operator quite dangerous, so, you need to verify data types before you use variables in this kind of type casting.</p>
<pre name="code" class="cpp">
if (typeid(*ptr_a) == typeid(MyClass)) {
    ptr_b = static_cast&lt;MyClass&gt;(ptr_a);
    ptr_b-&gt;applySomeMethod();
}
</pre>
<p>You can use the <i>typeid</i> C++ builtin to verify the data type. Also, you must consider that this operator is valid only if the conversion is explicit. Suppose <i>Parent</i> is a base class to <i>Child</i> and that <i>Unrelated</i> is an unrelated class. Then conversions from <i>Child</i> to <i>Parent</i> are valid, but a conversion from <i>Child</i> to <i>Unrelated</i> is disallowed:</p>
<pre name="code" class="cpp">
Parent a;
Child b;
Parent *a_1 = static_cast&lt;Parent *&gt;(&amp;b); // valid upcast
Unrelated *c_1 = static_cast&lt;Unrelated *&gt;(&amp;b_1); // invalid, Unrelated
</pre>
<p>The best usage for the <i>static_cast</i> opertaor, are numerical conversions, so you can cast from int, double, float and others of similar type to another int, double, float and similar types, including <i>enum types</i>. Some compilers does this kind of conversion explicit, but more strict compilers usually throw the proper warning on this kinds of assignment, without the proper type casting operation (line 4).</p>
<pre name="code" class="cpp">
float a;
int b;
a = static_cast&lt;float&gt;(b);
a = b;
</pre>
<p></p>
<h3>dynamic_cast operator</h3>
<p>The <i>dynamic_cast</i> operator, among other things, does a runtime check over types applied on the cast operation. As the above example of <i>static_cast</i> operator, dynamic cast does the <i>typeid()</i> checking. Then, if you have a pointer or reference to an object whose declared type is a base class, but you need to obtain a derived class pointer or reference, you should use <i>dynamic_cast</i>, since the <i>dynamic_cast</i> operator is another RTTI (<i>Run-time type information</i>) operator. The use of <i>dynamic_cast</i> derives into more overhead of your program, so you must use it with moderation.</p>
<pre name="code" class="cpp">
if (ptr_b == static_cast&lt;MyClass&gt;(ptr_a);) {
    ptr_b-&gt;applySomeMethod();
}
</pre>
<p>If the type checking and conversion fails, the operator returns a non-null reference, else it will return a null reference (zero). Also, some compilers will advice on the proper usage of the <i>dynamic_cast</i> operator, the more strict ones, will throw an error.</p>
<pre name="code" class="cpp">
Parent a;
Child b;
Parent *a_1 = dynamic_cast&lt;Parent *&gt;(&amp;b); // valid upcast
Unrelated *c_1 = dynamic_cast&lt;Unrelated *&gt;(&amp;b_1); // invalid, returns NULL
</pre>
<p></p>
<h3>reinterpret_cast operator</h3>
<p>This &mdash; possibly &mdash; is the most risky to use type casting operator. It completely transforms a pointer to very different types. For example:</p>
<pre name="code" class="cpp">
some_struct_s {
    short a;
    short b;
};
typedef struct some_struct_s some_struct_t;
some_struct_t *s;
unsigned long v = 0xd34db33f;
s = reinterpret_cast&lt;some_struct_t *&gt;(&amp;v);
std::cout &lt;&lt; s-&gt;a; // display first 2 bytes of value
</pre>
<p>As the example above, the pointer was completely transformed to different kind, with the dangerous assumption that the platform has a byte alignment that make possible to access the first to bytes of some address using this kind of operation. This cast is not portable, some compilers should throw some error about it.</p>
<p>The fact is that the <i>reinterpret_cast</i> operator overrides the initial declaration of the given variable, and makes possible to that variable to being reinterpreted as a different one. The usage of the <i>reinterpret_cast</i> must be done careful, for example for derived to base class reinterpretation.</p>
<pre name="code" class="cpp">
BaseClass a;
DerivedClass *c = reinterpret_cast&lt;DerivedClass *&gt;(&amp;a);
</pre>
<p>Since many of this kind of conversions are not possible in all compilers, you must try to setup your compiler to the most pedantic flags that it can allow. For example on GCC, you should use <i>-Wall -Wextra -Wshadow -pedantic -std=c++98</i> as compiler flags. It will keep your code portable and will allow you to create more standarized programs.</p>
<p>Here is a full compiling example of the core ideas in this post:</p>
<pre name='code' class='cpp'>

class A {
public:
	A();
	~A();
};

class B : public A {
public:
	B();
	~B();
};

A::A() {
}

A::~A() {
}

B::B() : A() {
}

B::~B() {
}

int
main(int argc, char **argv)
{

	A *ptr_a = new A();
	B *ptr_b = new B();

	A *a_1 = static_cast&lt;A *&gt;(ptr_b);
	B *b_1 = static_cast&lt;B *&gt;(ptr_a);

	A *a_2 = dynamic_cast&lt;A *&gt;(ptr_b);

	A *a_3 = reinterpret_cast&lt;A *&gt;(ptr_b);
	B *b_3 = reinterpret_cast&lt;B *&gt;(ptr_a);

	const A *a_4 = const_cast&lt;A *&gt;(ptr_a);
	const B *b_4 = const_cast&lt;B *&gt;(ptr_b);

	delete ptr_a;
	delete ptr_b;

	return 0;

}
</pre>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F&amp;title=c%2B%2B%20type%20casting%20operators&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Traditionally%2C%20C%20programmers%20and%20Java%20programmers%20are%20accustomed%20to%20use%20the%20type%20casting%20form%3A%20%28type%29variable.%20C%2B%2B%2C%20instead%20of%20that%20classical%20type%20casting%20form%2C%20has%20various%20type%20casting%20operators%2C%20used%20for%20different%20purposes.%20Each%20operator%20is%20used%20wi" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F&amp;title=c%2B%2B%20type%20casting%20operators&amp;notes=Traditionally%2C%20C%20programmers%20and%20Java%20programmers%20are%20accustomed%20to%20use%20the%20type%20casting%20form%3A%20%28type%29variable.%20C%2B%2B%2C%20instead%20of%20that%20classical%20type%20casting%20form%2C%20has%20various%20type%20casting%20operators%2C%20used%20for%20different%20purposes.%20Each%20operator%20is%20used%20wi" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F&amp;title=c%2B%2B%20type%20casting%20operators&amp;bodytext=Traditionally%2C%20C%20programmers%20and%20Java%20programmers%20are%20accustomed%20to%20use%20the%20type%20casting%20form%3A%20%28type%29variable.%20C%2B%2B%2C%20instead%20of%20that%20classical%20type%20casting%20form%2C%20has%20various%20type%20casting%20operators%2C%20used%20for%20different%20purposes.%20Each%20operator%20is%20used%20wi" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F&amp;title=c%2B%2B%20type%20casting%20operators" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F&amp;t=c%2B%2B%20type%20casting%20operators" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=c%2B%2B%20type%20casting%20operators%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fc-type-casting-operators%2F&amp;title=c%2B%2B%20type%20casting%20operators&amp;annotation=Traditionally%2C%20C%20programmers%20and%20Java%20programmers%20are%20accustomed%20to%20use%20the%20type%20casting%20form%3A%20%28type%29variable.%20C%2B%2B%2C%20instead%20of%20that%20classical%20type%20casting%20form%2C%20has%20various%20type%20casting%20operators%2C%20used%20for%20different%20purposes.%20Each%20operator%20is%20used%20wi" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/07/c-type-casting-operators/">Permalink</a> | <a href="http://coder.cl/2010/07/c-type-casting-operators/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></description>
		<pubDate>Sun, 25 Jul 2010 21:25:52 +0000</pubDate>
	</item>
		<item>
		<title>Alejandro Lopez: Felicidad</title>
		<link>http://yopuz.blogspot.com/2010/07/felicidad.html</link>
		<description><![CDATA[Felicidad Cargado originalmente por yopuz]]></description>
		<pubDate>Tue, 20 Jul 2010 21:41:14 +0000</pubDate>
	</item>
		<item>
		<title>Daniel Molina: configuring snmptrapd</title>
		<link>http://coder.cl/2010/07/configuring-snmptrapd/</link>
		<description><![CDATA[<p><strong>snmptrapd(8)</strong> is a SNMP trap daemon, in other words, it captures SNMP notifications from the network and similar devices. In this post I will try to explain how to configure this daemon to allow a network server to process SNMP traps using both, embeded perl handlers for <strong>snmptrapd(8)</strong> and plain standard input &mdash; or <i>stdin</i> &mdash; handlers.</p>
<p><span id="more-703"></span></p>
<p></p>
<h3>daemon configuration</h3>
<p>The daemon is quite easy to configure, you must setup the <strong>snmptrapd.conf(5snmp)</strong> file. For this configuration, you must read your desired configuration options, such as <i>logging</i> and <i>execution</i>. For example if we have a <i>community</i> called <i>inetsnmp</i>, we can configure the file to allow traps from that community and also configure a trap handler written in perl.</p>
<pre name="code" class="bash">

# configure inetsnmp community to allow logging,
# execution of handlers and network traffic.
authCommunity   log,execute,net         inetsnmp

# perl embeded handler.
perl do "/usr/share/snmp/handler/trapdembed.pl"
</pre>
<p>This configuration is not enough, the <strong>snmptrapd(8)</strong> daemon uses <strong>hosts.allow(5)</strong> facility, so we need to add the proper rule in that file:</p>
<pre name="code" class="bash">

snmptrapd : 192.168.100.0/255.255.255.0 : allow
snmptrapd : 10.10.10.0/255.255.255.0 : allow
</pre>
<p></p>
<h3>the embeded perl handler</h3>
<pre name="code" class="perl">
#!/usr/bin/perl -w
#

# strict perl is better
use strict;
use FileHandle;
use Data::Dumper;
use NetSNMP::TrapReceiver;

# we create a sample/demo log file...
my $log = FileHandle-&gt;new(&quot;/var/log/snmptrapsample.log&quot;, &quot;a+&quot;) ||
    die &quot;Failed to open log file&quot;;

# how we process an SNMP variable
sub process_var {
    my ($var) = @_;
    my %res;
    my $name = &quot;$var-&gt;[0]&quot;;
    my ($vt, $vv) = split /: /, &quot;$var-&gt;[1]&quot;;
    $res{'oid'} = $name;
    $res{'type'} = $vt;
    $res{'value'} = $vv;
    return \%res;
}

# our default receiver
sub default_receiver {
    my ($pdu, $ivars) = @_;
    my %vars;
    $log-&gt;print(Dumper($pdu));
    foreach my $k (@{$_[1]}) {
        $vars{$k-&gt;[0]} = process_var($k);
    }
    $log-&gt;print(Dumper(\%vars));
    $log-&gt;flush;
}

# every OIDs pass through the default_receiver
NetSNMP::TrapReceiver::register(&quot;all&quot;, \&amp;default_receiver) ||
    die &quot;Failed to laod Sample Trap Receiver\n&quot;;

# status message...
print STDERR &quot;Loaded Sample Trap Receiver\n&quot;;
</pre>
<p>This <strong>perl(1)</strong> handler will allow you basically to create a handler which is capable to process SNMP notifications creating two main variables on the handler itself <i>$pdu</i> which is the reference to the <i>%pdu</i> hash and <i>%vars</i> hash. Both hashes contains the proper data to process the request as you want:</p>
<pre name="code" class="perl">

%pdu = {
    'notificationtype' =&gt; 'TRAP',
    'receivedfrom' =&gt; 'UDP: [10.10.10.1]:53951-&gt;[192.168.100.5]',
    'version' =&gt; 1,
    'errorstatus' =&gt; 0,
    'messageid' =&gt; 0,
    'community' =&gt; 'public',
    'transactionid' =&gt; 1,
    'errorindex' =&gt; 0,
    'requestid' =&gt; 1012897136
};

%vars = {
    'IF-MIB::ifDescr' =&gt; {
        'value' =&gt; 'eth0',
        'type' =&gt; 'STRING',
        'oid' =&gt; 'IF-MIB::ifDescr'
    },
    'IF-MIB::ifAdminStatus.1' =&gt; {
        'value' =&gt; '1',
        'type' =&gt; 'INTEGER',
        'oid' =&gt; 'IF-MIB::ifAdminStatus.1'
    },
    'DISMAN-EVENT-MIB::sysUpTimeInstance' =&gt; {
        'value' =&gt; '(0) 0:00:00.00',
        'type' =&gt; 'Timeticks',
        'oid' =&gt; 'DISMAN-EVENT-MIB::sysUpTimeInstance'
    },
    'IF-MIB::ifIndex.1' =&gt; {
        'value' =&gt; '1',
        'type' =&gt; 'INTEGER',
        'oid' =&gt; 'IF-MIB::ifIndex.1'
    },
    'SNMPv2-MIB::snmpTrapOID.0' =&gt; {
        'value' =&gt; 'IF-MIB::linkUp',
        'type' =&gt; 'OID',
        'oid' =&gt; 'SNMPv2-MIB::snmpTrapOID.0'
    },
    'IF-MIB::ifOperStatus.1' =&gt; {
        'value' =&gt; '1',
        'type' =&gt; 'INTEGER',
        'oid' =&gt; 'IF-MIB::ifOperStatus.1'
    }
};
</pre>
<p>Where each OID or variable, can be treated by using the <strong>NetSNMP::OID</strong> package. Fora <i>stdin</i> handler, if you don&#8217;t know about <strong>perl(1)</strong>, the difference is made on the <strong>snmptrapd.conf(5snmp)</strong> file, instead of configuring a global perl script which itself registers which OIDs will handle, you need to configure a global trap handler or each handler for each OID that you want to handle:</p>
<pre name="code" class="bash">

# configure inetsnmp community to allow logging,
# execution of handlers and network traffic.
authCommunity   log,execute,net         inetsnmp

traphandle     default           /usr/share/snmp/handler/defaultstding.py   default
traphandle     IF-MIB::linkUp    /usr/share/snmp/handler/ifuphandler.py     up
</pre>
<p>This will make your script or application to receive the OID data from <i>stdin</i> as follows:</p>
<pre>
router
UDP: [10.10.10.1]:37745->[192.168.100.5]
DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0 IF-MIB::linkUp
IF-MIB::ifIndex.1 1
IF-MIB::ifAdminStatus.1 up
IF-MIB::ifOperStatus.1 up
IF-MIB::ifDescr eth0
</pre>
<p>And also will require that you will enable in some manner the processing of that data as <i>plain text</i>.</p>
<p>Good luck configuring SNMP traps <img src='http://coder.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;notes=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;bodytext=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;t=configuring%20snmptrapd" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=configuring%20snmptrapd%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;annotation=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/07/configuring-snmptrapd/">Permalink</a> | <a href="http://coder.cl/2010/07/configuring-snmptrapd/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></description>
		<pubDate>Fri, 16 Jul 2010 23:28:27 +0000</pubDate>
	</item>
		<item>
		<title>Gonzalo Diaz: Protegido: Un Sueño curioso?</title>
		<link>http://blog.gon.cl/post/826</link>
		<description><![CDATA[No hay extracto porque es un artículo protegido.<br/>
<br/>
[...]
<p><a href="http://feedads.g.doubleclick.net/~a/dvlnp_HVSmc-EkG4QbGPoIdt_lQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/dvlnp_HVSmc-EkG4QbGPoIdt_lQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dvlnp_HVSmc-EkG4QbGPoIdt_lQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/dvlnp_HVSmc-EkG4QbGPoIdt_lQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dev/gon?a=sNPUynsPUaQ:h2_hHzZd8oA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=sNPUynsPUaQ:h2_hHzZd8oA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dev/gon?i=sNPUynsPUaQ:h2_hHzZd8oA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=sNPUynsPUaQ:h2_hHzZd8oA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=sNPUynsPUaQ:h2_hHzZd8oA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=sNPUynsPUaQ:h2_hHzZd8oA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=dnMXMwOfBR0" border="0"></img></a>
</div>]]></description>
		<pubDate>Sat, 03 Jul 2010 04:06:16 +0000</pubDate>
	</item>
		<item>
		<title>Daniel Molina: query optimizations, quick recipes</title>
		<link>http://coder.cl/2010/07/query-optimizations-quick-recipes/</link>
		<description><![CDATA[<p>Optimizing SQL queries is quite simple task, you just need to follow some rules on how you sort the filtering criteria and how you use your select statements. I will try to explain how you can optimize your queries in this post.</p>
<p><span id="more-694"></span></p>
<p></p>
<h3>named columns</h3>
<p>Use named columns, instead of using the <strong>*</strong> wildcard. For example:</p>
<pre name='code' class='sql'>
select
    t.*
from
    tbl as t
where
    t.tab_date > current_date - interval 1 month
order by
    t.tab_date desc;
</pre>
<p>Will be more slower than:</p>
<pre name='code' class='sql'>
select
    t.tab_id,
    t.tab_state,
    t.tab_date,
    t.tab_name
from
    tbl as t
where
    t.tab_date > current_date - interval 1 month
order by
    t.tab_date desc
</pre>
<p></p>
<h3>join filtering</h3>
<p>If you filter on join, your query will be faster, for example:</p>
<pre name='code' class='sql'>
select
    t1.tab_id,
    coalesce(t2.tab_date, current_date) as tab_date,
    t1.tab_name
from
    table1 as t1
        left join table2 as t2 on (t1.tab_id = t2.tab_tab_id)
where
    t2.tab_date IS NULL or t2.tab_date > current_date - interval 1 month;
</pre>
<p>Will be more slower than</p>
<pre name='code' class='sql'>
select
    t1.tab_id,
    coalesce(t2.tab_date, current_date) as tab_date,
    t1.tab_name
from
    table1 as t1
        left join table2 as t2 on (t1.tab_id = t2.tab_tab_id
            and t2.tab_date > current_date - interval 1 month);
</pre>
<p></p>
<h3>smaller set first</h3>
<p>The smaller set must selected first, for example:</p>
<pre name='code' class='sql'>
select
    t1.tab_id,
    coalesce(t2.tab_date, current_date) as tab_date,
    t1.tab_name
from
    table1 as t1
        left join table2 as t2 on (t2.tab_tab_id = t1.tab_id
            and t2.tab_date > current_date - interval 1 month);
</pre>
<p>Will be more slower than:</p>
<pre name='code' class='sql'>
select
    t1.tab_id,
    coalesce(t2.tab_date, current_date) as tab_date,
    t1.tab_name
from
    table1 as t1
        left join table2 as t2 on (t1.tab_id = t2.tab_tab_id
            and t2.tab_date > current_date - interval 1 month);
</pre>
<p>Since <tt>t1</tt> has less rows than <tt>t2</tt>, and <tt>t2</tt> is referencing <tt>t1</tt>. Assuming that <tt>t1</tt> has a smaller set of rows and is the referenced table. This applies to column selection too and where statements.</p>
<p></p>
<h3>notes</h3>
<p>You must measure the time of your queries, so you can have a more precise query. Those rules are not <i>absolute</i>.</p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F&amp;title=query%20optimizations%2C%20quick%20recipes&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Optimizing%20SQL%20queries%20is%20quite%20simple%20task%2C%20you%20just%20need%20to%20follow%20some%20rules%20on%20how%20you%20sort%20the%20filtering%20criteria%20and%20how%20you%20use%20your%20select%20statements.%20I%20will%20try%20to%20explain%20how%20you%20can%20optimize%20your%20queries%20in%20this%20post.%0D%0A%0D%0A%0D%0Anamed%20columns%0D%0A%0D" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F&amp;title=query%20optimizations%2C%20quick%20recipes&amp;notes=Optimizing%20SQL%20queries%20is%20quite%20simple%20task%2C%20you%20just%20need%20to%20follow%20some%20rules%20on%20how%20you%20sort%20the%20filtering%20criteria%20and%20how%20you%20use%20your%20select%20statements.%20I%20will%20try%20to%20explain%20how%20you%20can%20optimize%20your%20queries%20in%20this%20post.%0D%0A%0D%0A%0D%0Anamed%20columns%0D%0A%0D" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F&amp;title=query%20optimizations%2C%20quick%20recipes&amp;bodytext=Optimizing%20SQL%20queries%20is%20quite%20simple%20task%2C%20you%20just%20need%20to%20follow%20some%20rules%20on%20how%20you%20sort%20the%20filtering%20criteria%20and%20how%20you%20use%20your%20select%20statements.%20I%20will%20try%20to%20explain%20how%20you%20can%20optimize%20your%20queries%20in%20this%20post.%0D%0A%0D%0A%0D%0Anamed%20columns%0D%0A%0D" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F&amp;title=query%20optimizations%2C%20quick%20recipes" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F&amp;t=query%20optimizations%2C%20quick%20recipes" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=query%20optimizations%2C%20quick%20recipes%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fquery-optimizations-quick-recipes%2F&amp;title=query%20optimizations%2C%20quick%20recipes&amp;annotation=Optimizing%20SQL%20queries%20is%20quite%20simple%20task%2C%20you%20just%20need%20to%20follow%20some%20rules%20on%20how%20you%20sort%20the%20filtering%20criteria%20and%20how%20you%20use%20your%20select%20statements.%20I%20will%20try%20to%20explain%20how%20you%20can%20optimize%20your%20queries%20in%20this%20post.%0D%0A%0D%0A%0D%0Anamed%20columns%0D%0A%0D" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/07/query-optimizations-quick-recipes/">Permalink</a> | <a href="http://coder.cl/2010/07/query-optimizations-quick-recipes/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></description>
		<pubDate>Fri, 02 Jul 2010 13:13:24 +0000</pubDate>
	</item>
		<item>
		<title>Gonzalo Diaz: Desconectado</title>
		<link>http://blog.gon.cl/post/805</link>
		<description><![CDATA[Crónicas de un régimen auto-impuesto.
Lunes
28 de Junio del 2010
Chile pierde 3-0 ante Brasil por la Copa del Mundo 2010 de Sudáfrica.
Además con el cuerpo cansado después de celebrar el paso a...<br/>
<br/>
[...]
<p><a href="http://feedads.g.doubleclick.net/~a/njdUO7Z6cLq_NJQyfDGM0tVnkjA/0/da"><img src="http://feedads.g.doubleclick.net/~a/njdUO7Z6cLq_NJQyfDGM0tVnkjA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/njdUO7Z6cLq_NJQyfDGM0tVnkjA/1/da"><img src="http://feedads.g.doubleclick.net/~a/njdUO7Z6cLq_NJQyfDGM0tVnkjA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dev/gon?a=HyB2NM3pNZo:aeDgLXq7FQ4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=HyB2NM3pNZo:aeDgLXq7FQ4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dev/gon?i=HyB2NM3pNZo:aeDgLXq7FQ4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=HyB2NM3pNZo:aeDgLXq7FQ4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=HyB2NM3pNZo:aeDgLXq7FQ4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=HyB2NM3pNZo:aeDgLXq7FQ4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=dnMXMwOfBR0" border="0"></img></a>
</div>]]></description>
		<pubDate>Wed, 30 Jun 2010 20:02:47 +0000</pubDate>
	</item>
		<item>
		<title>Daniel Molina: [ANN] pyxser-1.4.4r was released</title>
		<link>http://coder.cl/2010/06/ann-pyxser-1-4-4r-was-released/</link>
		<description><![CDATA[<p>Hello, today I&#8217;ve released <strong>pyxser-1.4.4r</strong>, the publishing message is as follows:</p>
<hr/>
<p>Hello Python Community.</p>
<p>I&#8217;m pleased to announce pyxser-1.4.4r, a python extension which contains functions to serialize and deserialize Python Objects into XML. It is a model based serializer. Here is the ChangeLog entry for this release:</p>
<p><span id="more-688"></span></p>
<pre>
1.4.4r (2010.02.10):

        Daniel Molina Wegener <d...@coder.cl>

        * src/include/pyxser_collections.h - added set handling
        function prototypes. Added support for unicode
        key names, which are converted to the user settings
        encoding (ie utf-8) inside the XML output.
        * src/pyxser_serializer.c - removed memory leak. Addded
        support for unicode object names in dictionary/list types.
        * src/pyxser_collections.c - added set handling function
        prototypes. added name property handling algorithm, so
        non string name properties are not serialized. I shall
        extend it to other modules.
        * src/pyxser_tools.c - added set handling prototypes and
        set type checking function.
        * test-utf8-leak.py - added serialization of SQL Alchemy
        objects, so we can test more complex Python objects
        serialization.
        * test-utf8-sqlalchemy.py - added sql alchemy object
        serialization test.
        * src/pyxser_serializer.c - reduced serialization algorithms,
        replacing deep nested if statements by flatten ones.
        * src/pyxser_collections.c - reduced serialization algorithms
        replacing deep nested if statements by flatten ones.
        * src/pyxser_typem.c - reduced serialization algorithms,
        replacing deep nested if statements by flatten ones.

        Thanks to pyxser users for their feedback.
</pre>
<p>This release contains some bug fixes, mainly related to type checking and type handling. I hope this small extension will help you on your programming tasks.</p>
<ul>
<li>The project is hosted at:<br/><a href='http://sourceforge.net/projects/pyxser/'>http://sourceforge.net/projects/pyxser/</a></li>
<li>The web page for the project is located at:<br/><a href='http://coder.cl/products/pyxser/'>http://coder.cl/products/pyxser/</a></li>
<li>PyPi entry is:<br/><a href='http://pypi.python.org/pypi/pyxser/1.4.4r'>http://pypi.python.org/pypi/pyxser/1.4.4r</a></li>
<li>For a sample article on how to integrate pyxser with ZSI WebServices:<br/><a href='http://coder.cl/2009/10/18/pyxser-and-zsi-webservices/'>http://coder.cl/2009/10/18/pyxser-and-zsi-webservices/</a></li>
</ul>
<p>Thanks and best regards&#8230;</p>
<hr/>
<p>I hope that this module can help you in your development tasks and thanks for your feedback.</p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F&amp;title=%5BANN%5D%20pyxser-1.4.4r%20was%20released&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Hello%2C%20today%20I%27ve%20released%20pyxser-1.4.4r%2C%20the%20publishing%20message%20is%20as%20follows%3A%0D%0A%0D%0A%0D%0A%0D%0AHello%20Python%20Community.%0D%0A%0D%0AI%27m%20pleased%20to%20announce%20pyxser-1.4.4r%2C%20a%20python%20extension%20which%20contains%20functions%20to%20serialize%20and%20deserialize%20Python%20Objects%20into%20XML." title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F&amp;title=%5BANN%5D%20pyxser-1.4.4r%20was%20released&amp;notes=Hello%2C%20today%20I%27ve%20released%20pyxser-1.4.4r%2C%20the%20publishing%20message%20is%20as%20follows%3A%0D%0A%0D%0A%0D%0A%0D%0AHello%20Python%20Community.%0D%0A%0D%0AI%27m%20pleased%20to%20announce%20pyxser-1.4.4r%2C%20a%20python%20extension%20which%20contains%20functions%20to%20serialize%20and%20deserialize%20Python%20Objects%20into%20XML." title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F&amp;title=%5BANN%5D%20pyxser-1.4.4r%20was%20released&amp;bodytext=Hello%2C%20today%20I%27ve%20released%20pyxser-1.4.4r%2C%20the%20publishing%20message%20is%20as%20follows%3A%0D%0A%0D%0A%0D%0A%0D%0AHello%20Python%20Community.%0D%0A%0D%0AI%27m%20pleased%20to%20announce%20pyxser-1.4.4r%2C%20a%20python%20extension%20which%20contains%20functions%20to%20serialize%20and%20deserialize%20Python%20Objects%20into%20XML." title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F&amp;title=%5BANN%5D%20pyxser-1.4.4r%20was%20released" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F&amp;t=%5BANN%5D%20pyxser-1.4.4r%20was%20released" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%5BANN%5D%20pyxser-1.4.4r%20was%20released%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F06%2Fann-pyxser-1-4-4r-was-released%2F&amp;title=%5BANN%5D%20pyxser-1.4.4r%20was%20released&amp;annotation=Hello%2C%20today%20I%27ve%20released%20pyxser-1.4.4r%2C%20the%20publishing%20message%20is%20as%20follows%3A%0D%0A%0D%0A%0D%0A%0D%0AHello%20Python%20Community.%0D%0A%0D%0AI%27m%20pleased%20to%20announce%20pyxser-1.4.4r%2C%20a%20python%20extension%20which%20contains%20functions%20to%20serialize%20and%20deserialize%20Python%20Objects%20into%20XML." title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/06/ann-pyxser-1-4-4r-was-released/">Permalink</a> | <a href="http://coder.cl/2010/06/ann-pyxser-1-4-4r-was-released/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></description>
		<pubDate>Sun, 20 Jun 2010 16:24:50 +0000</pubDate>
	</item>
		<item>
		<title>Alejandro Lopez: Post - Carrusel</title>
		<link>http://yopuz.blogspot.com/2010/05/post-carrusel.html</link>
		<description><![CDATA[Post - Carrusel Originally uploaded by Autumn leaves fallPensar que hace poco mas de un año, estaba tirandole mierda al mundo y a la vida.:DAhora ando como una perdiz.]]></description>
		<pubDate>Tue, 18 May 2010 20:45:48 +0000</pubDate>
	</item>
		<item>
		<title>Andres Ovalle: Stefano Zacchiroli electo como nuevo DPL!</title>
		<link>http://www.debianchile.cl/debian-internacional/dpl-2010-2011/</link>
		<description><![CDATA[<p><a href="http://www.debianchile.cl/wp-content/uploads/2010/04/stefano.png"><img class="alignright size-medium wp-image-446" title="Stefano Zacchiroli" src="http://www.debianchile.cl/wp-content/uploads/2010/04/stefano-300x284.png" alt="DPL 2010/2011" width="300" height="284" /></a></p>
<p>En conformidad con la  <a href="http://www.debian.org/devel/constitution">Constitución</a> the Debian Project a elegido a Stefano Zacchiroli como nuevo Debian Project Leader para el periodo 2010/2011.<br />
Stefano es Desarrollador Debian desde Marzo del 2001, el contribuye con varios servicios esenciales tales como, Debian&#8217;s Package Tracking System y pertenece al Quality Assurance Team. Luego de su elección el declaro: &#8220;No puedo estar mas orgulloso de ser un miembro de Debian Project. La cantidad de desarrolladores que tomaron parte de nuestro proceso de elección democrática &#8212; candidatos, votantes y participantes de campaña &#8212; me hacen muy feliz. Vale decir que estoy un poro asustado ahora, pero puedo asegurar que voy a hacer mi mejor esfuerzo para cubrir las expectativas de todos los colaboradores del Debian Project&#8221;.<br />
El project leader saliente, Steve McIntyre, fue electo en el 2008.<br />
Luego de liderar el proyecto por dos años, Steve prefirió no ir por la re-elección.<br />
Steve felicito a Stefano: &#8220;Lo e pasado muy bien trabajando para Debian como DPL y estoy mas que feliz seguir trabajando bajo el mando de Stefano.<br />
EL tiene ideas excelentes y realizara un muy buen trabajo.&#8221; El proyecto Debian también desea agradecer a Steve por su gran trabajo y sobresaliente compromiso con el proyecto.<br />
Los candidatos de este año fueron Stefano Zacchiroli, Wouter Verhelst, Charles Plessy y Margarita Manterola. Luego de seis semanas de periodo electoral el proyecto Debian eligio a Stefano Zacchiroli para ser su nuevo Debian Project Leader.<br />
Los detalles de las elecciones los puedes encontrar en la siguiente pagina:  <a href="http://www.debian.org/vote/2010/vote_001">votación</a>.?</p>
]]></description>
		<pubDate>Sun, 18 Apr 2010 13:58:23 +0000</pubDate>
	</item>
		<item>
		<title>Patricio Perez: Git, SVN y algo de ZSH</title>
		<link>http://janitux.boaboa.org/2010/git-svn-y-algo-de-zsh/</link>
		<description><![CDATA[<p><img class="aligncenter" title="ZSH GIT" src="http://boaboa.org/shots/idk_zsh_shot.png" alt="" width="326" height="139" /></p>
<p>Hace unas semanas gracias a la ayuda de <a href="http://www.sarahdoherty.net/">sarah</a> y <a href="http://www.ryandoherty.net/">ryan</a> he estado trabajando solucionando bugs en el sitio <a href="http://www.getpersonas.com/">Getpersonas.com</a> (El sitio esta hecho en PHP, y el repositorio usa SVN), esto me ha traído devuelta al mundo de los sistemas de control de versiones (Lo que es genial, por que me gustaba caleta hacer commits, y tener todo ordenado, como cuando trabajaba &#8230;)</p>
<p>Cuando ya tenia mis permisos de commit listos para el repo SVN, ryan me recomendó <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn</a> (Lo que también es genial, por que tenia mas experiencia con Git que con SVN). Así que para aprovechar los bytes de este post, pondre mi setup de Git+SVN, algo del workflow diario y lo ultimo con lo que estuve jugando esta semana: ZSH (Aun estoy amando la integracion con Git).</p>
<p>It&#8217;s time to start <span id="more-150"></span></p>
<h3>Montar el repositorio con Git-SVN</h3>
<p>La instalación es muy simple, en Ubuntu basta con un</p>
<p><code>sudo apt-get install git-svn git-core</code></p>
<p>Ahora comenzamos a clonar el repo, por ejemplo para el repo de getpersonas en mozilla:<br />
<code><br />
mkdir getpersonas &amp;&amp; cd getpersonas</code></p>
<p>git svn init https://svn.mozilla.org/projects/getpersonas.com/trunk/</p>
<p>git svn fetch -r $REVISION</p>
<p># (Donde $REVISION es la ultima revision donde se toco la direccion del repo, si le hacen un svn info http://svn.mozilla.org/projects/getpersonas.com/trunk/ veran &#8220;Revision del último cambio&#8221;. Si quieren le pueden tirar un git svn fetch a secas, pero se bajara TODAS las revisiones del repo svn, osea que si tienen miles y miles de commits, se volveran locos en pocos minutos)</p>
<p># Si por algun motivo les pasa que se baja la revision, pero los ficheros no aparecen y el git status les dice que hay cambios hechos, y que son ficherros eliminados, intenten dando un</p>
<p><code>git reset &amp;&amp; git checkout .</code></p>
<p>Con esto ya estamos listos para comenzar a trabajar <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h3>Git branchs, patches, merge y commits al server svn</h3>
<p>Para trabajar en los bugs, ryan me recomendo usar un branch local de git, para cada bug. Easy cake.</p>
<p><code>git checkout -b sumario_bug</code></p>
<p>Y veremos las magicas palabras &#8220;Switched to a new branch &#8217;sumario_bug&#8217;&#8221;, pueden usar cualquier nombre para la branch local, ojala uno descriptivo para acordarse.</p>
<p>Aquí podemos ir realizando los cambios para arreglar el bug (O meter funcionalidades nuevas, el mundo es suyo). Pueden hacer commits al branch, por ejemplo con git commit -a. Con esto listo, podemos usar format-patch y enviar parches:</p>
<p><code>git format-patch master -o ~/parches/</code></p>
<p>Este ultimo comando nos generara un parche git, en el directorio ~/parches. Cuando tengamos aprobados los cambios, podemos hacerle un merge con master (la rama principal):</p>
<p><code>git checkout master</code></p>
<p>git merge sumario_bug</p>
<p>git svn rebase</p>
<p>Con esto, cambiamos al branch master, hicimos un merge del branch local sumario_bug (Nota aqui, si hicieron mas de un commit en el branch sumario_bug, y quieren que se refleje como solo un commit en SVN, deberan aplicar el switch &#8211;squash al git merge), y con el rebase, bajamos los posibles cambios que tenga el repositorio svn y aplicamos nuestros cambios sobre eso (Atentos si hay problemas con el merge que esto provocara). Si no tuvimos ningun problema al hacer el merge y el rebase, o los solucionamos, estamos listos para hacer commit hacia SVN:</p>
<p><code>git svn dcommit</code></p>
<p>Que nos pediria los datos del server svn (En este caso, puedo hacer commit por https con mis datos LDAP)</p>
<p>There, estariamos listos para continuar con otro bug.</p>
<p>Para actualizar el repo podemos usar git svn fetch o git svn rebase (El fetch solo baja los cambios, mientras que el rebase intentara un merge si tenemos cambios en la rama local)</p>
<h3>Cosas cools, git stash</h3>
<p>Otra herramienta genial en git, seria stash, ponganse en este caso, estan trabajando en un branch, tienen harto trabajo hecho y aun no le dan un commit, y llega un bug feo que hay que solucionar ASAP, tendrian que hacer un commit tipo &#8220;Dejo guardado el trabajo en esta rama para trabajar en el desgraciado bug feo&#8221;; con stash pueden solucionar esto fácilmente:</p>
<p><code>git stash save "Bug #1234: Cambiar identacion para que el codigo se vea mas lindo"</code></p>
<p>git checkout master</p>
<p>git checkout -b bug_desgraciado_asap</p>
<p>[...] Terminaron de trabajar en el bug, le dieron commit y todo el cuento, ahora a trabajar en el branch que teniamos antes</p>
<p><code>git checkout mi_viejo_branch_ya_no_es_lo_que_era</code></p>
<p>git stash pop stash@\{0\}</p>
<p>Y aplicara los cambios que teníamos antes de trabajar en el bug feo!</p>
<p>Un poco mas sobre stash seria que, no es necesario pasarle un nombre al git stash save, con git stash list <em>listaran</em> los stash que tienen guardados, con <code>git stash show -p stash@\{0\}</code> u otro numero, mostraran el contenido del stash (Noten que el -p viene de git diff, asi que pueden usar cualquier switch del git diff).</p>
<h3>Un pager mas bonito</h3>
<p>Cuando hacen un git diff, quizas no les guste mucho, si es así pueden usar otro comando para el pager, por ejemplo most:<br />
<code><br />
# ~/.gitconfig</code></p>
<p>[...]</p>
<p>[core]</p>
<p>pager = most +s +&#8217;/&#8212;&#8217;</p>
<p>[...]</p>
<p>Necesitaran tener most instalado, la otra gracia que hará, será buscar la línea que comience con &#8212; (Que es como git define cada cambio, así que automáticamente llegaran al primer cambio en un git diff por ejemplo).</p>
<h3>Finalmente, ZSH</h3>
<p>El otro dia <a href="http://robertocarvajal.org/">netkrash</a> nos contaba en irc que estaba usando zsh con los scripts de <a href="http://github.com/robbyrussell/oh-my-zsh">Oh My ZSH</a>, que tenía completación de nombres para el kill (Onda kill -9 Adi[tab] buscaba el proceso con ese nombre y extraia el pid), completación de hostnames para ssh|scp, y lo que mas me intereso, integración con git &#8230; cuando leí eso ultimo lo instale altiro!</p>
<p>Bueno, la instalacion de ZSH es bien simple:<br />
<code><br />
sudo apt-get install zsh<br />
</code><br />
Luego pueden instalar oh my zsh, el instalador automático bastara (Nota para algunos, NECESITAN tener instalado zsh antes de oh my zsh, aviso por si las moscas &#8230;):<br />
<code><br />
wget http://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh<br />
</code></p>
<p>Y ya estan listos, si quieren meter mano en los configs de oh my zsh, pueden hacerlo en .oh-my-zsh. Al momento tengo algunos cambios en mi branch local:</p>
<ul>
<li>Desactivar el menu de zsh (Para la autocompletacion, me acostumbre al completado como en bash) (Thanks netkrash)</li>
<li>Completacion de hosts ssh|scp segun ~/.ssh/config en vez del known_hosts (Netkrash again)</li>
<li>Completacion de usuarios con uid superior a 1000 (Comunmente usuarios reales), mostrar a root y ocultar a nobody.</li>
<li>El atajo de oh my zsh de git diff (gd), se le pasa mate por un pipe, quite eso por que ya tengo un pager configurado.</li>
<li>Trackear los ficheros de custom/</li>
<li>Tema &#8216;idk&#8217; para zsh (Para cambiar los temas de zsh basta con cambiar la variable ZSH_THEME en su ~/.zshrc), basado en macovsky y wezm (Incluidos en oh my zsh). <a href="http://boaboa.org/shots/idk_zsh_shot.png">Preview</a>.</li>
</ul>
<p>En fin, si les interesan los cambios, en <a href="http://boaboa.org/asdf/parches_janitux_oh_my_zsh.tar.gz">este tar</a> vienen todos los patches que he aplicado (Pueden crear un branch en .oh-my-zsh con <code>git checkout -b mismods</code> y luego aplican los parches con <code>git am nombreparche.patch</code>)</p>
<p>Me faltaron un poco de fuentes, Viget entregaba un <a href="http://www.viget.com/extend/a-gaggle-of-git-tips/">par</a> de <a href="http://www.viget.com/extend/effectively-using-git-with-subversion/">tips</a>, muy buenos.</p>
]]></description>
		<pubDate>Mon, 22 Mar 2010 17:19:11 +0000</pubDate>
	</item>
		<item>
		<title>Rodrigo Zamora: Cambio de Zona Horaria en Debian</title>
		<link>http://rodrigo.zamoranelson.cl/?p=876</link>
		<description><![CDATA[<p>Cuando se necesita cambiar la zona horaria en tu servidor debian (supongo que en distribuciones basadas en él, como lo es ubuntu igual sirve), basta con ejecutar el comando:</p>
<p><code>dpkg-reconfigure tzdata</code></p>
<p>Con esto aparecerá un asistente que permite realizar el cambio de forma bastante sencilla. Para el caso de Chile, este 2010 se ha optado por prolongar el cambio de horario hasta abril, de ahi la necesidad de ajustar la zona a una diferente.<br />
<a href="http://rodrigo.zamoranelson.cl/wp-content/uploads/Imagen-21.png"><img src="http://rodrigo.zamoranelson.cl/wp-content/uploads/Imagen-21-300x195.png" alt="" title="Imagen 21" width="300" height="195" class="alignnone size-medium wp-image-877" /></a></p>
]]></description>
		<pubDate>Tue, 16 Mar 2010 12:35:38 +0000</pubDate>
	</item>
		<item>
		<title>Rodrigo Zamora: Recuperando RAID 1 ext3</title>
		<link>http://rodrigo.zamoranelson.cl/?p=850</link>
		<description><![CDATA[<p>Hoy falla repentinamente una partición de un equipo con raid 1 por software en linux. Simplemente no era posible montar el dispositivo <strong>/dev/md3</strong></p>
<p>Ante esa situación y considerando que era un apartición <strong>/home/</strong> el procedimiento seguido fue el siguiente:</p>
<p>tener claridad de que particiones componen el arreglo, en este caso <strong>/dev/sda3</strong> y <strong>/dev/sdb3</strong></p>
<p>Revision de particiones por separado.</p>
<blockquote><p>fsck.ext3 /dev/sda3</p></blockquote>
<blockquote><p>fsck.ext3 /dev/sdb3</p></blockquote>
<p>Volver a incorporar el raid al sistema</p>
<blockquote><p>mdadm &#8211; -assemble /dev/md3 /dev/sda3 /dev/sdb3</p></blockquote>
<p>Revisión del Raid armado</p>
<blockquote><p>fsck.ext3 /dev/md3</p></blockquote>
<p>Incorporar nuevamente los arreglos al mdadm.conf</p>
<blockquote><p>mdadm &#8211; -detail &#8211; -scan >> /<strong>etc</strong>/mdadm/mdadm.conf</p></blockquote>
<p>Con esto los arreglos quedaron funcionales</p>
]]></description>
		<pubDate>Fri, 26 Feb 2010 14:33:53 +0000</pubDate>
	</item>
		<item>
		<title>Rodrigo Zamora: Configurar Apache2 + SSL ( How To )</title>
		<link>http://rodrigo.zamoranelson.cl/?p=832</link>
		<description><![CDATA[<p><img src="http://japache.infoscience.co.jp/Apache-SSL/Apache-SSL.files/ApachSSL.gif" alt="" /></p>
<p>Como Documentación personal dejo registro de algo que he hecho en otras oportunidades, pero de lo cual no siempre recuerdo todos los parámetros. <img src='http://rodrigo.zamoranelson.cl/wp-includes/images/smilies/icon_wink.gif' alt=':wink:' class='wp-smiley' /> </p>
<p>Para quien lea éste artículo, daré solo algunas pautas esenciales para la implementación del protocolo  SSL sobre plataformas WEB y el uso de certificados auto firmados.</p>
<p><strong>OBJETIVOS</strong></p>
<li>Comprender la utilidad de usar SSL sobre plataformas WEB y conseguir un sitio <strong>https</strong></li>
<li>Entender cuales son los requisitos para que un sitio web sea reconocido como válido por un browser</li>
<li>Comprender como generar y auto firmar un certificado digital.</li>
<li>Configurar Clientes y Servidores para un sitio https auto firmado.</li>
<p><span id="more-832"></span></p>
<p><strong>UTILIDAD DE UN SITIO HTTPS</strong></p>
<p>Quien no sea muy entendido, podrá desconocer que cuando son insertados datos dentro de formularios de sitios que solamente usan <strong>http</strong>, estos datos son enviados en texto claro por la red y pueden ser capturados y utilizados de manera maliciosa por cualquiera que tenga acceso a los equipos de comunicaciones por donde pasan estos datos.</p>
<p><a href="/wp-content/uploads/Imagen-1.png"><img src="/wp-content/uploads/Imagen-1-150x150.png" alt="" title="Imagen 1" width="150" height="150" class="alignnone size-thumbnail wp-image-833" /></a></p>
<p><strong>REQUISITOS DE UN SITIO VÄLIDO</strong></p>
<p>Para que un sitio sea reconocido como un sitio seguro válido, debe cumplir con 3 condiciones esenciales:</p>
<li>Contar con un certificado digital válido firmado por una entidad reconocida</li>
<li>El certificado debe ser emitido para el sitio específico.</li>
<li>El certificado del sitio debe contar con una fecha válida (los certificados cuentan con fecha de caducidad)</li>
<p><strong>CERTIFICADOS AUTO FIRMADOS</strong></p>
<p>Cuando se utilizan certificados, estos deberían ser firmados por una entidad reconocida ( C A ) como lo es <strong>verisign</strong>. Los navegadores tienen registrados una gran cantidad de entidades reconocidas dentro de lo que se conoce como <strong>Entidades Raiz de Confianza</strong>. Cuando un administrador de sistemas decide generar por si mismos los certificados y también firmarlos, se produce una advertencia por parte del navegador, indicando que la entidad emisora que ha firmado el certificado no es de confianza y que puede tratarse de un certificado inválido o un sitio falsificado.</p>
<p><a href="/wp-content/uploads/Imagen-2.png"><img src="/wp-content/uploads/Imagen-2-150x150.png" alt="" title="Imagen 2" width="150" height="150" class="alignnone size-thumbnail wp-image-834" /></a></p>
<p><strong>La manera correcta de habilitar un sitio auto firmado consiste en generar los certificados, firmarlos y hacer que los clientes reconozcan al equipo que los firma como una CA válida dentro de los certificados raíz de confianza<br />
</strong></p>
<p><strong>EMISION Y FIRMA DE CERTIFICADOS</strong></p>
<p>A continuación la forma de emitir certificados para la CA y un sitio web utilizando <strong>Linux, apache2 y openSSL</strong>. <a href="http://www.vanemery.com/Linux/Apache/apache-SSL.html">( Fuente Original )</a></p>
<p>Generando Certificados para la CA.</p>
<p>En mi caso, voy generar una Entidad Emisora de Certificados Llamada <strong>zamoranelson.cl</strong>, por lo que he de generar los certificados y llaves correspondientes llenando los datos solicitados por openSSL. </p>
<p>Creamos un directorio llamado <em>/ etc / apache2/ssl</em><strong> y ejecutamos los siguientes comandos.</p>
<blockquote><p><code>openssl genrsa -des3 -out zamoranelson.cl-ca.key 2048</code></p></blockquote>
<blockquote><p><code>openssl req -new -x509 -days 3650 -key zamoranelson.cl-ca.key -out zamoranelson.cl-ca.crt</code></p></blockquote>
<blockquote><p><code>openssl x509 -in zamoranelson.cl-ca.crt -text -noout</code></p></blockquote>
<p>Con esto ya podemos comenzar a firmar certificados para nuestros sitios web por 10 años mas.</p>
<p>Ahora firmaré un certificado para mi sitio personal <code>rodrigo.zamoranelson.cl</code></p>
<blockquote><p><code>openssl genrsa -des3 -out rodrigo.zamoranelson.cl.key 1024</code></p></blockquote>
<blockquote><p><code>openssl req -new -key rodrigo.zamoranelson.cl.key -out rodrigo.zamoranelson.cl.csr</code></p></blockquote>
<p>En esta sección, openSSL preguntará lo siguiente:<br />
<code><strong>Common Name (eg, your name or your server's hostname) []</strong></code></p>
<p>Aqui se debe ingresar el dominio exacto del sitio web en el que se usará el certificado, en mi caso, <strong>rodrigo.zamoranelson.cl</strong></p>
<blockquote><p><code>openssl x509 -req -in rodrigo.zamoranelson.cl.csr -out rodrigo.zamoranelson.cl.crt -sha1 -CA zamoranelson.cl-ca.crt -CAkey zamoranelson.cl-ca.key -CAcreateserial -days 3650<br />
</code></p></blockquote>
<blockquote><p><code>openssl x509 -in rodrigo.zamoranelson.cl.crt -text -noout</code></p></blockquote>
<p>En esta sección ya hemos generado y firmado nuestro certificado con la CA <strong>zamoranelson.cl</strong> para el sitio <strong>rodrigo.zamoranelson.cl</strong>, el cual será valido también por 10 años.</p>
<p><strong>CONFIGURACION DE APACHE2</strong> </p>
<blockquote><p><code>NameVirtualHost *:443<br />
< VirtualHost    *:443 ><br />
ServerName      powers2.cl<br />
ServerAlias     rodrigo.zamoranelson.cl<br />
CustomLog       /var/log/mcbrain.powers.cl.log  full<br />
DocumentRoot    /home/mcbrain<br />
SSLCertificateFile / etc /apache2/ssl/rodrigo.zamoranelson.cl.crt<br />
SSLCertificateKeyFile / etc /apache2/ssl/rodrigo.zamoranelson.cl.key<br />
SSLEngine on<br />
< /VirtualHost ></code></p></blockquote>
<blockquote><p>Importante: Esta configuración es Básica y solo ilustrativa. Los espacios en el <strong>< VirtualHost ></strong> y <strong>/ etc / apache2</strong> fueron hechos a propósito para evitar problemas con el código de este artículo y deben ser suprimidos. </p></blockquote>
<p>Apache en sus configuraciones tiene un parámetro que indica el puerto de escucha, normalmente es el 80, por lo que está definido como <strong>Listen 80</strong>. En debian está definido dentro del archivo <strong>ports.conf</strong>, pero en otras distribuciones puede estar en el mismo <strong>apache.conf</strong>. Para habilitar el puerto 443 tcp, que es el utilizado en <strong>https</strong>, debemos agregar la linea <strong>Listen 443</strong>  </p>
<p>En este punto, luego de reiniciar apache2 e ingresar la misma contraseña que usamos al generar los certificados, ya deberíamos poder acceder al sitio.  </p>
<p><code>Cada vez que se inicie el servicio, como en el paso anterior, se solicitará la clave asignada. Esta característica fue diseñada por razones de seguridad, es necesaria ya que la llave RSA privada del archivo server.key se encuentra encriptada con ella, sin embargo es posible removerla bajo consideración del administrador. Para remover esta capa de seguridad se deben ejecutar los pasos siguientes.</p>
<p>- mv rodrigo.zamoranelson.cl.key rodrigo.zamoranelson.key.old<br />
- openssl rsa -in rodrigo.zamoranelson.cl.key.old -out rodrigo.zamoranelson.cl.key</p>
<p>Enter pass phrase for server.key.orig: **************</p>
<p>Y luego reiniciar apache2.<br />
</code></p>
<p>Lo normal es que el navegador nos advierta que el certificado ha sido emitido y firmado por una entidad desconocida, para corregir este problema, llevaremos el archivo antes generado <strong>zamoranelson.cl-ca.crt</strong> a los clientes que accederán al sitio. Los archivos <strong>.crt</strong> son una extensión reconocida por los principales sistemas operativos como un certificado digital, por lo que es probable que baste con hacer doble click sobre él para instalarlo dentro de los <strong>certificados raíz de confianza</strong> del equipo  para que los navegadores ya no desconozcan el certificado como uno auto firmado inválido.</p>
<p>Para evitar este paso, se usan certificados firmados por entidades oficiales como verisign, pero esto tiene un costo asociado.</p>
]]></description>
		<pubDate>Fri, 19 Feb 2010 22:03:00 +0000</pubDate>
	</item>
		<item>
		<title>Rodrigo Zamora: Acerca de Bruce Dickinson.</title>
		<link>http://rodrigo.zamoranelson.cl/?p=793</link>
		<description><![CDATA[<p><img src="http://californiasound.files.wordpress.com/2009/09/brucedickinson.jpg" alt="" /></p>
<p>Hace unos días comentaba con alguien por ahí, los distintos cambios de voz que ha tenido a lo largo de los años el líder de mi banda favorita.<br />
 Iron Maiden ha venido en varias ocasiones a Chile y en las últimas, mucho <del datetime="2010-01-27T17:15:00+00:00">pokemón con aires de maldad</del> joven se ha podido delietar con el tema insigne para abrir conciertos, hablamos de <strong>Aces High</strong>. Creo que los años no han pasado en vano y a pesar que la voz ya no es la misma, Bruce ha podido adaptarla usando técnicas vocales diferentes, es mas, en el presente si que parece <strong>Sirena Anti Aérea</strong> <img src='http://rodrigo.zamoranelson.cl/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> . </p>
<p>En el pasado, la voz era bastante distinta y creo que muchos coincidirán conmigo al decir que me hubiese gustado escuchar a Maiden tal como sonaban en la gira <strong>World Slavery Tour</strong> .</p>
<p>Centrándome en la interpretación de Aces High y haciendo comparaciones de todas las versiones que he oido ( y que son bastantes ), me quedo lejos con la de Polonia en 1984 . </p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/dh2rNd1YoKY&#038;hl=es_ES&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dh2rNd1YoKY&#038;hl=es_ES&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>En ningún otro concierto he oido el &#8220;Ruuuunnnnnnnn&#8230;.!!! &#8221; de aces high de esta forma ( Debería haberlo conservado así ) .</p>
]]></description>
		<pubDate>Wed, 27 Jan 2010 17:26:23 +0000</pubDate>
	</item>
		<item>
		<title>Rodrigo Zamora: RZN at Movistar Arena.</title>
		<link>http://rodrigo.zamoranelson.cl/?p=788</link>
		<description><![CDATA[<p>Aprovechando los días libres en Santiago, hice lo que quizás hace 6 meses jamás hubiese hecho, ir a un concierto No Metal <img src='http://rodrigo.zamoranelson.cl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  , esta vez fui a ver a  &#8220;The Cranberries&#8221;&#8230; Si, lo se, algunos conocidos me dirán mamón <del datetime="2010-01-27T17:11:35+00:00">te perdiste el concierto de metallica</del>, pero no me interesa, tenía muy buenas razones para ir <img src='http://rodrigo.zamoranelson.cl/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> .</p>
<p>No soy un seguidor de este grupo, sin embargo algunas canciones las ubicaba, al final, sea como sea, se pasó excelente.</p>
<p>Todo muy ordenado y salvo problemas técnicos en la mitad del concierto (Se apagaron las pantallas gigantes y la amplificación)) y el final abrupto sin despedida ( Creí que saldría a despedirse pero se fueron rápido ). </p>
<p>En resumen, buen concierto y sonido, no conocía el recinto y no resultó un mal lugar después de todo, ya que le tenía poca fe a la acústica de un lugar tan cerrado.</p>
<p><a href="http://rodrigo.zamoranelson.cl/wp-content/uploads/SP_A0129.jpg" target="_blank" ><img src="http://rodrigo.zamoranelson.cl/wp-content/uploads/SP_A0129-150x150.jpg" alt="" title="SP_A0129" width="150" height="150" class="alignleft size-thumbnail wp-image-789" /></a></p>
]]></description>
		<pubDate>Wed, 27 Jan 2010 17:00:50 +0000</pubDate>
	</item>
		<item>
		<title>Patricio Perez: Una de resumen del failyear09</title>
		<link>http://janitux.boaboa.org/2009/una-de-resumen-del-failyear09/</link>
		<description><![CDATA[<p>Hola, vengo a escribir el penúltimo articulo del glob del año.</p>
<p>En la parte del año que fue como las wifas (Como lo pronostique a fines del 2008) le lleva:</p>
<ul>
<li>Me despidieron, el único consuelo es que no fue mi culpa (La empresa murio en mala).</li>
<li>Aún me estan alargando el pago de unas lucas (CTMS, mueranse)</li>
<li>Par de temas personales que no vale la pena mencionar.</li>
<li>Ah, y no pude regalarme nada fancy para navidad <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  (Vease el fail del pago de lucas de más arriba)</li>
</ul>
<p>Ahora, lo que si me salvo el año <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  :</p>
<ul>
<li>Trabaje en lo que me gusta por 8 meses.</li>
<li>Aprendí cosas re-entretenidas en la pega.</li>
<li>Me lleve genial con un par de clientes (Gabriela y Jordana, tambien Felipe). Lastima que con otros no tanto &#8230;</li>
<li>Conocí gente genial (Team DM, la gabi, el milton, la veny, el vicho, hasta javier; Ex-DM: el cesar <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ; y el equipo de egipcios, que lo nombro más abajo).</li>
<li>Me llevo mejor con gente que antes consideraba solo conocidos <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Trabajé con un dream team para las <a href="http://jornadasregionales.org/">jornadas</a> (Al hilo tenemos a <a href="http://rod.firefox.cl/">Rod</a>, <a href="http://boris.insert-coin.org/wordpress/">Boris</a>, <a href="http://pcollaog.firefox.cl/">Pancho</a>, <a href="http://lecaros.wordpress.com/">lecaros</a>, <a href="http://tesistaensantiago.wordpress.com/">camila</a>, <a href="http://blogs.opensur.org/hyoga/">javier</a> y la revelación del  año &#8230; <a href="http://twitter.com/pottersys">pottersys</a> xD)</li>
<li>Mención honrosa para el Mozcamp y la gente de Mozilla (<a href="http://www.sarahdoherty.net/">Sarah</a>, you rocks)</li>
</ul>
<p>Disculpen lo latero, la pesima redacción (Queda en el TODO de 2010) y los daños que les haya provocado el post <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  y antes de olvidarlo: Feliz año!</p>
]]></description>
		<pubDate>Thu, 31 Dec 2009 15:00:53 +0000</pubDate>
	</item>
		<item>
		<title>Matias Fernandez: Mas tirado que?</title>
		<link>http://got-pwned.net/radix/blog/mas-tirado-que.html</link>
		<description><![CDATA[<p>&#8230; tejo de rayuela</p>
]]></description>
		<pubDate>Fri, 18 Dec 2009 15:15:12 +0000</pubDate>
	</item>
		<item>
		<title>Patricio Perez: Hostear repositorios Git de forma sencilla</title>
		<link>http://janitux.boaboa.org/2009/hostear-repositorios-git-de-forma-sencilla/</link>
		<description><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-124 aligncenter" title="git" src="http://janitux.boaboa.org/wp-content/uploads/2009/12/git.png" alt="Git SCM" width="288" height="106" /></p>
<p>Primero que nada, gracias a <a href="http://botellasrotas.wordpress.com/">Cesar</a> por la idea de usar git para backups  de ahi me vino toda esa git mania <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Cuando se trata de sistemas de control de versiones, los primeros que se me vienen a la mente son git y subversion, por motivos de laziness prefiero el primero, por que lo conozco mejor y por que puedo hacer este setup con los ojos vendados (Not really <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> )</p>
<p>Bueno, me ahorrare unas lineas diciendo que este setup:</p>
<ul>
<li>Usa llaves ssh para la autenticacion de usuarios</li>
<li>Usa un repositorio git para manejar los repositorios de git (Got it?)</li>
<li>Solo usa una cuenta de usuario para el manejo de git</li>
</ul>
<p>Usaremos el proyecto <a href="http://eagain.net/gitweb/?p=gitosis.git">Gitosis</a>, desarrollado por <a href="http://eagain.net/blog/">Tommi Virtanen</a>, como se imaginan el proyecto esta hosteado en git <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Nos fuimos:</p>
<p><span id="more-118"></span></p>
<h3>Paso 1: Instalar Gitosis</h3>
<p>Instalamos git y setuptools de python:</p>
<pre><code>apt-get install git-core python-setuptools</code></pre>
<p>Ahora clonamos el codigo fuente de gitosis y lo instalamos:</p>
<pre><code>cd /usr/src/
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install
</code></pre>
<h3>Paso 2: Crear el usuario para git</h3>
<p>Creamos el usuario git (puede llamarse como ustedes quieran):</p>
<pre><code>adduser \
    --system \
    --shell /bin/bash \
    --gecos 'Control de Versiones Git' \
    --group \
    --disabled-password \
    --home /home/git \
    git
</code></pre>
<p>Notar que tiene la contraseña deshabilitada, ya que no es necesaria;  y tambien que le dimos una shell valida (Que si es necesaria para que ande gitosis).</p>
<p>Ahora para iniciar la instancia de gitosis, necesitaremos una llave pública RSA, si no tienen una pueden crearla con este comando:</p>
<pre><code>ssh-keygen -t rsa -C janitux</code></pre>
<p>Con nuestra llave lista, la copiamos al server que tendra gitosis, e iniciamos finalmente la creacion de la instancia gitosis:</p>
<pre><code>su -c "/usr/bin/gitosis-init &lt; /tmp/id_rsa.pub" git</code></pre>
<p>Y este comando por si tenemos un bug en python-setuptools:</p>
<pre><code>chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update</code></pre>
<p>Y comienza la fiesta, clonamos el repositorio de administracion de gitosis:</p>
<pre><code>git clone git@SERVER:gitosis-admin.git</code></pre>
<p>Y ya estamos listos para administrar nuestros repositorios con gitosis! <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_135" class="wp-caption aligncenter" style="width: 455px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-135" title="Gitosis Admin" src="http://janitux.boaboa.org/wp-content/uploads/2009/12/janitux@laptop-Git-gitosis-admin_017.png" alt="gitosis admin FTW!" width="445" height="319" /></dt>
</dl>
</div>
<h3>Paso 3: Crear Repositorios con gitosis</h3>
<p>La administración de gitosis es muy sencilla, basta modificar el fichero gitosis.conf del directorio que clonamos en el paso anterior.<br />
La sintaxis de este fichero se basa en directivas de grupos, se define  el grupo, en que repositorios tendrán permisos de escritura o lectura; para más información sobre gitosis.conf ver el fichero  <a href="http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=example.conf;hb=master">example.conf</a></p>
<p>En fin, en este ejemplo crearemos el grupo ?equipo?, con ?pato? y ?pedro? como miembros del  grupo y este grupo tendrá permisos de escritura en los repositorios  ?mirepo? y ?repob?. (Nota: el nombre de usuario se determina mediante los ficheros en el  directorio keydir, es el nombre del fichero, sin la extensión .pub)</p>
<pre><code>
[group equipo]
writable = mirepo repob
members = pato pedro
</code></pre>
<p>Tambien tenemos que agregar las llaves publicas de pato y pedro:</p>
<pre><code>
cp id_rsa_pato.pub gitosis-admin/keydir/pato.pub
cp id_rsa_pedro.pub gitosis-admin/keydir/pedro.pub
</code></pre>
<p>Con esto estariamos listos para dar un commit y que se apliquen los cambios:</p>
<pre><code>git add gitosis.conf keydir/
git commit -a -m "Creado grupo equipo, con pato y pedro como miembros, y permiso de escritura en los proyectos mirepo y repob"
git push
</code></pre>
<p>Y finally creamos el repositorio con el commit inicial:</p>
<pre><code>
mkdir -p ~/Git/mirepo
cd ~/Git/mirepo
git init
git remote add origin git@SERVER:mirepo.git
## Hacer trabajos, agregas ficheros con git add, y haces un commit con git commit -a
git push origin master:refs/heads/master
</code></pre>
<p>FINALLY! estamos listos para seguir trabajando con nuestros repositorios git <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Mi única recomendación, sean claros con los nombres de sus mensajes en el commit.</p>
<p>Y obviamente, los creditos van a <a href="http://scie.nti.st/">Garry Dolley</a>, por <a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">este howto</a> <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></description>
		<pubDate>Fri, 11 Dec 2009 05:49:28 +0000</pubDate>
	</item>
		<item>
		<title>Patricio Perez: La historia del mail que se enviaba por cualquier ISP menos GTD</title>
		<link>http://janitux.boaboa.org/2009/la-historia-del-mail-que-se-enviaba-por-cualquier-isp-menos-gtd/</link>
		<description><![CDATA[<p>Hola, vengo a contarles una pequeña historia, incluye a un cliente puteandome por no poder enviar correos en outlook via GTD y  el antispam avenger.</p>
<p>La historia comienza cuando me dicen que el cliente XX tiene un problema con el correo, entonces reviso los logs del server y no veo nada extraño, enviaba correos, recibia correos, todo bien! (Revise bien al pedo, por que estaba un poco ocupado en las jornadas)<br />
Lo que siguio, es que al volver a la vida (Aproximadamente el martes o miercoles, despues de las jornadas), me llama el cliente XX a la oficina, diciendome que ha estado como dos semanas con el problema, que desde su &#8220;coso&#8221; movil movistar podia enviar correos bien, pero que desde el enlace de &lt;no puedo decir donde estaba&gt; no podia enviar correos. En fin, luego de 5 minutos de tratarme como idiota, me harte y pedi hablar con el encargado del enlace (Mucho más razonable, y realmente entendía lo que yo hablaba <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ). Despues de hacer un par de pruebas, me fije que los logs decian XXXX hostname, en las sesiones de envio SMTP, y claro, ahí saltaba avenger alegando que tenía que hacer primero un EHLO o sino era spam. Hasta ahí no entendia nada, por que diablos desde una conexión si se enviaban bien los comandos SMTP, y no desde otra; tras googlear un rato, encontre al culpable!</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-113" title="Firewall Cisco!" src="http://janitux.boaboa.org/wp-content/uploads/2009/10/firewall-cisco-300x164.jpg" alt="" />Según vi, los firewalls cisco tienen una función llamada &#8220;fixup protocol&#8221;, que solo permite que pasen ciertos comandos SMTP, despues de deshabilitarlo, todo volvio a la normalidad <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></description>
		<pubDate>Sat, 17 Oct 2009 20:27:10 +0000</pubDate>
	</item>
		<item>
		<title>Andres Ovalle: Kernel BSD en Debian Squeeze</title>
		<link>http://www.debianchile.cl/debian-internacional/kernel-bsd-en-debian-squeeze/</link>
		<description><![CDATA[<p style="text-align: center;"><img class="alignnone" title="Debian BSD" src="http://www.debianchile.cl/wp-content/gallery/uploads/horned_logo.jpeg" alt="" width="205" height="224" /></p>
<p>Hoy en las noticias de Debian han anunciado que va a estar disponible un port del kernel de BSD, Squeeze será la primera rama en incluir el nuevo port.</p>
<blockquote><p>The Debian Release Team is pleased to announce that it sees the port of the Debian system to the FreeBSD kernel fit to be handeld equal with the other release ports. The upcoming release codenamed &#8216;Squeeze&#8217; is planned to be the first Debian distribution to be released with Linux and FreeBSD kernels.</p></blockquote>
<p>Link&#8217;s</p>
<p><a href="http://www.debian.org" target="_blank">http://www.debian.org</a><br />
<a href="http://www.debian.org/News/2009/20091007" target="_blank">Debian pushes development of kFreeBSD port.</a></p>
]]></description>
		<pubDate>Wed, 07 Oct 2009 18:49:11 +0000</pubDate>
	</item>
		<item>
		<title>Andres Ovalle: Día GNOME 2009 ? Llamado a presentar trabajos</title>
		<link>http://www.debianchile.cl/debianchile/dia-gnome-2009-llamado-a-presentar-trabajos/</link>
		<description><![CDATA[<blockquote><p>El Grupo Local de GNOME &#8211; GNOME Chile &#8211; tiene el agrado de invitar a todos los entusiastas, usuarios y desarrolladores del proyecto GNOME a presentar sus trabajos dentro de la realización del evento del Día GNOME.</p>
<p>El Día GNOME es el evento de difusión del proyecto GNOME, más grande que se organiza a nivel nacional, y desde el año 2006 que se está realizando en diversas ciudades del país, con el objetivo de promover el uso y desarrollo de este ambiente y sus tecnologías.</p>
<p>Esta nueva edición del día GNOME, se desarrollará dentro del Décimo Encuentro Linux y se realizará el día Sábado 24 de Octubre en la Universidad Técnica Federico Santa María, Valparaíso, Chile</p></blockquote>
<p>Pueden ver mas información en la <a href="http://mail.gnome.org/archives/gnome-cl-list/2009-October/msg00004.html" target="_blank">Lista de Correos de Gnome Chile</a>.</p>
]]></description>
		<pubDate>Tue, 06 Oct 2009 02:26:02 +0000</pubDate>
	</item>
		<item>
		<title>Andres Ovalle: Día del Software Libre 2009</title>
		<link>http://www.debianchile.cl/debianchile/dia-del-software-libre-2009/</link>
		<description><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://www.gnewbook.org/mod/tidypics/thumbnail.php?file_guid=1674&amp;size=large" alt="Día del Software Libre 2009" /></p>
<p style="text-align: left;">Este Sábado 26 de Septiembre se realizará en varias ciudades de chile, el Día del Software Libre.</p>
<blockquote style="text-align: center;">
<p style="text-align: left">&#8220;El Día de la Libertad del Software es un esfuerzo global de educar al público acerca de la importancia de la Libertad del Software y las virtudes y disponibilidad del Software Libre (Free Software). Los equipos locales de todo el mundo organizan eventos cada tercer sábado de septiembre. El último evento involucró más de 200 equipos de todo el mundo. En nuestro país se realizará el 26 de septiembre, debido a la cercanía de las fiestas patrias.&#8221;&#8230;</p>
</blockquote>
<p style="text-align: center;">Para esta ocasión DebianChile.cl se hará presente en la sede de Curicó con un Stand, en donde tendremos algunas sorpresas para los asistentes.</p>
<p style="text-align: center;">
<p style="text-align: center;">Link&#8217;s</p>
<p style="text-align: center;"><a href="http://www.diadelsoftwarelibre.cl" target="_blank">http://www.diadelsoftwarelibre.cl</a></p>
<p style="text-align: center;"><strong>UPDATE</strong></p>
<p style="text-align: center;">pueden ver algunas imágenes del evento <a title="DSL 2009" href="http://carlos.debianchile.cl/imagenes/dsl-2009" target="_blank">aquí</a></p>
]]></description>
		<pubDate>Tue, 06 Oct 2009 02:18:41 +0000</pubDate>
	</item>
		<item>
		<title>Gonzalo Diaz: Mi primer repositorio PPA</title>
		<link>http://blog.gon.cl/post/793</link>
		<description><![CDATA[Hace algunos días por alguna extraña alineación planetaria, tuve problemas usando kopete, por lo cual&#8230; debí recurrir a la otra opción más a mano, pero del lado oscuro: pidgin.
Pero gracias a...<br/>
<br/>
[...]
<p><a href="http://feedads.g.doubleclick.net/~a/_aYedevb8ZXy1SJ0NZYGt-HDcJs/0/da"><img src="http://feedads.g.doubleclick.net/~a/_aYedevb8ZXy1SJ0NZYGt-HDcJs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_aYedevb8ZXy1SJ0NZYGt-HDcJs/1/da"><img src="http://feedads.g.doubleclick.net/~a/_aYedevb8ZXy1SJ0NZYGt-HDcJs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dev/gon?a=x_g5o0VetdU:QYpcXABZ7bE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=x_g5o0VetdU:QYpcXABZ7bE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dev/gon?i=x_g5o0VetdU:QYpcXABZ7bE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=x_g5o0VetdU:QYpcXABZ7bE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=x_g5o0VetdU:QYpcXABZ7bE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=x_g5o0VetdU:QYpcXABZ7bE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=dnMXMwOfBR0" border="0"></img></a>
</div>]]></description>
		<pubDate>Mon, 24 Aug 2009 22:36:32 +0000</pubDate>
	</item>
		<item>
		<title>Gonzalo Diaz: Próximos eventos del Software Libre</title>
		<link>http://blog.gon.cl/post/748</link>
		<description><![CDATA[En los próximos meses, se vienen importantes eventos en torno al Software Libre.
Día del Software libre

Es el más próximo. Se realizará en diversos puntos del planeta, el día 19 de septiembre de...<br/>
<br/>
[...]
<p><a href="http://feedads.g.doubleclick.net/~a/Nzdgn-oSRBJBRt8f7Z2g5y6JDwg/0/da"><img src="http://feedads.g.doubleclick.net/~a/Nzdgn-oSRBJBRt8f7Z2g5y6JDwg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Nzdgn-oSRBJBRt8f7Z2g5y6JDwg/1/da"><img src="http://feedads.g.doubleclick.net/~a/Nzdgn-oSRBJBRt8f7Z2g5y6JDwg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dev/gon?a=JtptOPL7_YA:gnf2MF3XuxA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=JtptOPL7_YA:gnf2MF3XuxA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dev/gon?i=JtptOPL7_YA:gnf2MF3XuxA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=JtptOPL7_YA:gnf2MF3XuxA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=JtptOPL7_YA:gnf2MF3XuxA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dev/gon?a=JtptOPL7_YA:gnf2MF3XuxA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dev/gon?d=dnMXMwOfBR0" border="0"></img></a>
</div>]]></description>
		<pubDate>Thu, 20 Aug 2009 20:57:25 +0000</pubDate>
	</item>
		<item>
		<title>Andres Ovalle: Décimo Encuentro Linux: Llamado a Envío de Trabajos</title>
		<link>http://www.debianchile.cl/noticias-nacionales/decimo-encuentro-linux-llamado-a-envio-de-trabajos/</link>
		<description><![CDATA[<p><img class="alignleft" src="http://www.arturo.hoffstadt.cl/wp/wp-content/uploads/2009/06/logo-300x180.png" alt="" width="300" height="180" /></p>
<p>El Encuentro Linux es un congreso de carácter internacional que convoca a los profesionales e interesados en el sistema operativo Linux, BSD, código abierto y tecnologías afines. Es la máxima instancia en Chile sobre estos temas, y reúne a profesionales, académicos, estudiantes y empresarios para compartir en charlas, tutoriales, debates y otras actividades.</p>
<p>La presencia y el uso de software basado en código abierto es cada vez mayor, hoy está presente en áreas donde antes no era de uso común. Hoy en día se puede encontrar Linux en una diversa gama de dispositivos: Desde celulares y netbooks, hasta enormes redes sociales que se construyen sobre servidores basados en software código abierto.</p>
<p>Este año se celebra la décima versión del evento, el cual nació como una instancia para reunir a todos los entusiastas de este sistema operativo y del código abierto. Además, permite acercar y difundir el uso de Linux y el código abierto a la comunidad en general.</p>
<p>Invitación</p>
<p>Invitamos desde ya a preparar su trabajo y enviarlo a más tardar el día viernes 03 de julio. Se aceptará el envío de trabajos destinados a charlas o tutoriales (bajo las mismas condiciones). Los trabajos enviados deberán respetar la estructura y limitaciones indicadas en este documento. El envío de los trabajos será vía web, sistema que se habilitará el día 18 de mayo.</p>
<p>El formato de las charlas será de 50 minutos más 10 minutos adicionales destinados a preguntas.<br />
<span id="more-357"></span><br />
Estructura de la propuesta</p>
<p>1. Título</p>
<p>2. Autor(es), uno de los cuales debe ser el expositor del trabajo.</p>
<p>3. Abstract (Resumen): Breve resumen, de no más de 5 líneas, indicando la principal idea de la charla o tutorial.</p>
<p>4. Keywords (palabras clave)</p>
<p>5. Introducción</p>
<p>6. Motivación: Explicación de porqué su trabajo es de interés para el público objetivo de este congreso.</p>
<p>7. Desarrollo del Tema</p>
<p>8. Referencias</p>
<p>9. Área en la que se centra el trabajo (ver sección ?Áreas Temáticas?)</p>
<p>10. Nivel (Elegir uno de básico, medio o avanzado).</p>
<p>11. Indicar máximo 5 puntos en los que se enfocará la presentación (no el trabajo).</p>
<p>12. Foto del expositor (tamaño pasaporte), una breve reseña biográfica de los autores, y la URL de la página personal o blog (si corresponde)</p>
<p>Condiciones</p>
<p>Los documentos enviados se publicarán en la página permanente del Encuentro. Deben cumplir las siguientes condiciones:</p>
<p>* 3 páginas, sin portada.</p>
<p>* Enviar en formato PDF, independiente del formato de origen.</p>
<p>* Se sugiere utilizar algunos de los templates que se publicarán en nuestra página web (ODF, Latex2e).</p>
<p>* Imágenes u otros materiales anexos sólo como apéndice extraordinario, en un máximo de dos páginas.</p>
<p>* Por cada trabajo se pagará el viaje y la estadía completos para un expositor (si fueran varios autores).</p>
<p>* Es necesario que el expositor se encuentre presente y participe de las actividades del evento.</p>
<p>* El material de apoyo del expositor (típicamente diapositivas) deberá entregarse el 20 de octubre.</p>
<p>Áreas Temáticas</p>
<p>El Décimo Encuentro Linux tiene como eje transversal al sistema operativo Linux y tecnologías de código abierto. También son aceptados temas que compartan estas filosofías, como por ejemplo composiciones artísticas bajo licencia Creative Commons, sistemas operativos de la línea BSD, entre otros. Algunos temas afines son:</p>
<p>* Administración de Sistemas</p>
<p>* Aplicaciones para Celulares</p>
<p>* Cloud Computing</p>
<p>* Desarrollo de Software</p>
<p>* Diseño Multimedia</p>
<p>* Educación y E-Learning</p>
<p>* E-Business</p>
<p>* E-Government</p>
<p>* Computación de Alto Desempeño (Grid, Cluster, Multicore)</p>
<p>* Licenciamiento bajo Copyleft y Creative Commons</p>
<p>* Netbooks</p>
<p>* Open Hardware</p>
<p>* Redes Computacionales</p>
<p>* Redes Sociales y Web 2.0</p>
<p>* Sistemas Operativos Abiertos (Linux, BSD, y otros)</p>
<p>* Videojuegos</p>
<p>Comité de Programa</p>
<p>* Presidente del Comité: Horst H. von Brand, UTFSM.</p>
<p>* Delia Ibacache, UPLA.</p>
<p>* Patricia Trejo, UV.</p>
<p>* Miguel Ruiz, PUCV.</p>
<p>* Samuel Pizarro, DuocUC.</p>
<p>* Arturo A. Hoffstadt, UTFSM.</p>
<p>* Sven von Brand, UTFSM.</p>
<p>Fechas Importantes</p>
<p>La hora límite de todas las fechas, son las 18:00 horas (CLT).</p>
<p>* Apertura del sistema web para envío de trabajos: 18 de mayo.</p>
<p>* Fecha límite de entrega: viernes 03 de julio.</p>
<p>* Publicación de resultados: 07 de agosto.</p>
<p>* Confirmación de asistencia: 14 de agosto.</p>
<p>* Envío de diapositivas o material de presentación y versión definitiva del resumen: 20 de octubre.</p>
<p>* Décimo Encuentro Linux: 22 a 24 de octubre.</p>
<p>Organizan</p>
<p>El Décimo Encuentro Linux es organizado por las siguientes instituciones de educación superior:</p>
<p>* Universidad Técnica Federico Santa María</p>
<p>* Pontificia Universidad Católica de Valparaíso</p>
<p>* Universidad de Valparaíso</p>
<p>* Universidad de Playa Ancha</p>
<p>* DuocUC</p>
<p>Contacto</p>
<p>* Sitio web: http://www.encuentrolinux.cl</p>
<p>* Correo electrónico: encuentro@inf.utfsm.cl</p>
<p>* Teléfono: +56 32 2654367.</p>
<p><a href="http://2009.encuentrolinux.cl/wp-content/uploads/call_for_papers.pdf">llamado a envio de trabajos (pdf)</p>
<p></a></p>
<p><a href="http://2009.encuentrolinux.cl/wp-content/uploads/call_for_papers.txt">llamado a envio de trabajos (txt)</a></p>
]]></description>
		<pubDate>Fri, 12 Jun 2009 17:59:25 +0000</pubDate>
	</item>
		<item>
		<title>Alejandro Lopez: Cambia</title>
		<link>http://yopuz.blogspot.com/2009/05/cambia.html</link>
		<description><![CDATA[Todo cambia.He vuelto a la normalidad.Si importara...]]></description>
		<pubDate>Thu, 07 May 2009 12:00:31 +0000</pubDate>
	</item>
		<item>
		<title>Jose Uribe: Laboratorios de Sistema en nueva ubicacion</title>
		<link>http://labdecom.decom.uta.cl/2009/04/17/laboratorios-de-sistema-en-nueva-ubicacion/</link>
		<description><![CDATA[<p>Los laboratorios de Sistema del Area de Computacion se reubicaron en la ex sala Cisco de Zocalo.</p>
<p>Desde el Miercoles, ya se encuentran operativos tanto para clases o el uso general de los alumnos.</p>
]]></description>
		<pubDate>Fri, 17 Apr 2009 21:31:42 +0000</pubDate>
	</item>
		<item>
		<title>Alejandro Lopez: Alegria</title>
		<link>http://yopuz.blogspot.com/2009/03/alegria.html</link>
		<description><![CDATA[:DEso. Ando feliz.]]></description>
		<pubDate>Thu, 26 Mar 2009 23:23:14 +0000</pubDate>
	</item>
		<item>
		<title>Patricio Perez: Generar un deb a partir de un paquete ya instalado</title>
		<link>http://janitux.boaboa.org/2009/generar-un-deb-a-partir-de-un-paquete-ya-instalado/</link>
		<description><![CDATA[<p>Hace unos días tuve un pequeño drama, tenía instalado amsn en una partición con Ubuntu, y necesitaba instalarlo en otro Ubuntu; el problema es que había perdido el deb, y era un build svn de amsn con otros chiches (Ergo, no me daría la paja de bajar el código del svn, buscar plugins extras ni mucho menos instalar las librerías necesarias para compilarlo).</p>
<p>Aquí es cuando llega <a href="http://kitenet.net/~joey/code/dpkg-repack/">dpkg-repack</a> a salvarme, hace exactamente lo que necesitaba.<br />
La instalación es muy simple, lo instalan vía apt y luego lo corren como root, el único argumento que necesitan es el nombre del paquete.</p>
<p>Ejemplo: sudo dpkg-repack amsn</p>
<p><img class="size-full wp-image-64 alignnone" title="dpkg-repack" src="http://janitux.boaboa.org/wp-content/uploads/2009/01/shot1.png" alt="dpkg-repack" /></p>
<p>PD: Les conte que ahora estoy usando KDE 4.2? <img src='http://janitux.boaboa.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><em>Now Playing: Pork &amp; Beans &#8211; Weezer</em></p>
]]></description>
		<pubDate>Tue, 27 Jan 2009 01:11:25 +0000</pubDate>
	</item>
		<item>
		<title>Alejandro Lopez: FAIL</title>
		<link>http://yopuz.blogspot.com/2009/01/confusion.html</link>
		<description><![CDATA[Test de inteligencia emocional fail.   1. Consciencia de si mismo = 76%   2. Expresión Emocional = 47%   3. Grado de Autonomia = 62%   4. Confianza en si mismo = 81%   5. Actitud frente a los demás = 30%   6. Capacidad para escuchar = 54%   7. Aptitud para desenvolverse en grupo = 0%   8. Promedio General = 50% No me cuadra.]]></description>
		<pubDate>Mon, 26 Jan 2009 15:54:58 +0000</pubDate>
	</item>
		<item>
		<title>Jose Uribe: Solicitud de alumno en Practica</title>
		<link>http://labdecom.decom.uta.cl/2009/01/08/solicitud-de-alumno-en-practica/</link>
		<description><![CDATA[<p>Para los alumnos interesados en hacer su practica Profesional, la empresa Emelari esta solicitando un alumno en practica que apoye las funciones del área de informática de su empresa.</p>
<p>Dicha practica durará <strong>3 meses y se cancelara $100.00 por cada mes</strong>.</p>
<p>Alumnos interesados comunicarse con la Secretaria del Área de Computación e Informática.</p>
]]></description>
		<pubDate>Thu, 08 Jan 2009 19:29:51 +0000</pubDate>
	</item>
		<item>
		<title>Jose Uribe: OSUM Pizza Party en ACI</title>
		<link>http://labdecom.decom.uta.cl/2008/12/17/osum-pizza-party-en-aci/</link>
		<description><![CDATA[<p>El viernes pasado, se realizó en nuestra dependencias del Área de Computación e Informática, la llamada OSUM Pizza Party, esta actividad fue gestionada por <a href="http://gdsol.uta.cl/" target="_blank">GDSOL</a> ( Grupo de Difusión del Software Libre ) en la cual se tenían que juntar 100 personas en la plataforma <a href="http://osum.sun.com/group/uta" target="_blank">OSUM</a>. ( La meta se cumplió en 3 días )</p>
<p>Aparte de la Pizza Party, se realizó una Charla de información respecto a lo que la empresa SUN, ofrece para los universitarios, desde cursos a certificaciones tanto para el alumnado como académicos.</p>
<p style="text-align: center;"><img class="size-medium wp-image-31 aligncenter" title="n1132276767_198022_1510" src="http://labdecom.decom.uta.cl/wp-content/uploads/2008/12/n1132276767_198022_1510.jpg" alt="" width="486" height="364" /></p>
<p style="text-align: center;"><strong>Parte del Grupo que participo en OSUM Pizza Party</strong></p>
]]></description>
		<pubDate>Wed, 17 Dec 2008 21:04:47 +0000</pubDate>
	</item>
		<item>
		<title>Jose Uribe: Defensas</title>
		<link>http://labdecom.decom.uta.cl/2008/12/01/defensas/</link>
		<description><![CDATA[<p><strong>Ricardo Spencer Veas</strong></p>
<ul>
<li>&#8220;Desarrollo de una Plataforma Web para solucionar la gestión de peticiones de servicios entre las unidades de la Universidad de Tarapacá&#8221;</li>
<li>P. Guía : Oscar Sagardia O.</li>
<li>P. Inf.:    Héctor Ossandón D.</li>
<li>Lugar: 04/12/08, A LAS 15:00 HRS. SALA CENTENARIO.</li>
</ul>
<p><strong>Diamkel Orellana Madariaga</strong></p>
<ul>
<li>&#8220;Definición de un proceso de desarrollo para sitios web basados en el CMS Joomla&#8221;</li>
<li>P. Guía: Ricardo Valdivia P.</li>
<li>P. Inf.:   Héctor Ossandón D.</li>
<li>Lugar: 17/12/08, A LAS 8:30 HRS, SALA CENTENARIO</li>
</ul>
]]></description>
		<pubDate>Mon, 01 Dec 2008 13:04:56 +0000</pubDate>
	</item>
		<item>
		<title>Jose Uribe: Replica correo info@uta.cl - Ataque Malware a UTANET</title>
		<link>http://labdecom.decom.uta.cl/2008/11/28/replica-correo-infoutacl-ataque-malware-a-utanet/</link>
		<description><![CDATA[<p>Hoy se recibió el siguiente correo:<br />
==============================<br />
Se solicita a todos los usuarios de la red informática de la Universidad<br />
de Tarapacá tomar la debida atención a la situación que se indica a<br />
continuación:</p>
<p>Gusano ataca a computadores de todo el mundo</p>
<p>Desde ayer 27 de noviembre a partir de las 15:30 horas se detecta un<br />
gusano informático conocido como &#8220;conficker&#8221; o &#8220;downadup&#8221;, está atacando<br />
a los computadores de millones de usuarios. Las consecuencias de su<br />
ataque es el colapso en la conexión a internet de los usuarios que se<br />
contagian al acceder a Internet.</p>
<p>Se sugiere la inmediata instalación de un parche disponible por<br />
Microsoft (aquellos equipos con licencia legal).</p>
<p>Como prevenirlo.</p>
<p>1.-  Actualizar el parche de seguridad que se encuentra informado en el<br />
Boletín de Microsoft :<br />
<a href="http://www.microsoft.com/spain/technet/security/bulletin/ms08-067.mspx" target="_blank">http://www.microsoft.com/spain/technet/security/bulletin/ms08-067.mspx</a><br />
sólo vale en equipos con copia legal del windows.</p>
<p>2.-  Actualice su antivirus y completa la seguridad de tu computador con<br />
un firewall o sea activar cortafuegos local en el computador personal</p>
<p>3.-  Apague o desconecte su computador de la red por el momento.</p>
<p>Ante cualquier situación contactar a <a href="mailto:dtisopor@uta.cl">dtisopor@uta.cl</a> o al fono 205976, o<br />
al técnico de soporte informático de su facultad o unidad.</p>
<p><strong>SOLUCION: </strong></p>
<p>&#8212;&#8211;BEGIN PGP SIGNED MESSAGE&#8212;&#8211;<br />
Hash: SHA1</p>
<p>Hola:</p>
<p>A nivel central se han aplicado reglas de bloqueo ICMP (ping a cualquier<br />
lado) y bloqueo de los servicio Microsoft para compartir archivo e<br />
impresoras entre InterRedes. El malware se distribuye por el puerto 445.</p>
<p>Mantenerse alerta a cualquier evento.</p>
<p>Aplicar parche sugeridos, verificar que los firewall en lo clientes<br />
estén activos, borrar todas excepciones en el cortafuegos local y<br />
comenzar de nuevo a dar los permisos o excepciones.</p>
<p>Encender o conectar los equipos debido a la situación controlada</p>
]]></description>
		<pubDate>Fri, 28 Nov 2008 19:35:53 +0000</pubDate>
	</item>
		<item>
		<title>Roberto Carvajal: Educational crisis in public chilean schools</title>
		<link>http://feedproxy.google.com/~r/netkrash/~3/Vbmao4qMx9U/</link>
		<description><![CDATA[A]]></description>
		<pubDate>Wed, 28 May 2008 20:56:18 +0000</pubDate>
	</item>
		<item>
		<title>Roberto Carvajal: evilution</title>
		<link>http://feedproxy.google.com/~r/netkrash/~3/5b-5mHhHo6A/</link>
		<description><![CDATA[A]]></description>
		<pubDate>Sun, 18 May 2008 21:25:50 +0000</pubDate>
	</item>
		<item>
		<title>Roberto Carvajal: MTV?s Exit Campaign</title>
		<link>http://feedproxy.google.com/~r/netkrash/~3/pO_5VLxsOrk/</link>
		<description><![CDATA[A]]></description>
		<pubDate>Fri, 02 May 2008 04:13:23 +0000</pubDate>
	</item>
		<item>
		<title>Roberto Carvajal: Massive apostasy in Chile</title>
		<link>http://feedproxy.google.com/~r/netkrash/~3/hUkFG9sUIaM/</link>
		<description><![CDATA[A]]></description>
		<pubDate>Wed, 30 Apr 2008 08:21:42 +0000</pubDate>
	</item>
		<item>
		<title>Roberto Carvajal: Bachelet and Human Rights</title>
		<link>http://feedproxy.google.com/~r/netkrash/~3/drJlpbI1qSU/</link>
		<description><![CDATA[A]]></description>
		<pubDate>Sat, 19 Apr 2008 05:24:27 +0000</pubDate>
	</item>
		<item>
		<title>Matias Fernandez: El sitio de polla.cl es una porquería</title>
		<link>http://got-pwned.net/radix/blog/el-sitio-de-pollacl-es-una-porqueria.html</link>
		<description><![CDATA[<p>Que frustrante, intento jugar al Loto en linea y no puedo.<br />
Resulta que me inscribí el a&ntilde;o pasado para jugar una vez y desde aquel entonces no he vuelto a entrar a dicha página&#8230;<br />
&#8230; Hasta ahora, que intenté jugar Loto y no pude debido a:</p>
<ul>
<li>Intento ingresar con mis datos (los cuales tenia guardados en un correo la vez que me registré) y la pagina me indica: <b> Usuario inválido </b></li>
<li>Intento volver a registrarme y la pagina me indica: <b>RUT en uso</b></li>
<li>Intento la opción &#8220;&iquest;Olvidaste tu contrase&ntilde;a?&#8221; y la página me indica: <b> Ha ocurrido un problema al ingresar su clave </b></li>
<li>Intento pinchar en el link &#8220;Contactenos&#8221; para pedir ayuda por mi registro y recibo un lindo <b>Error 404</b></li>
</ul>
<p>&lt;ironic&gt;Es increíble lo bien que funciona la pagina de polla&#8230;&lt;ironic&gt;<br />
Siempre este tipo de paginas y sistemas online están hechos por webmasters/programadores/analistas/ingenieros mediocres y nunca funcionan como deberían
<p>
Ya, me descargué&#8230;</p>
]]></description>
		<pubDate>Fri, 11 Jan 2008 18:06:34 +0000</pubDate>
	</item>
		<item>
		<title>Matias Fernandez: KDE 4.0 Is out!!</title>
		<link>http://got-pwned.net/radix/blog/kde-40-is-out.html</link>
		<description><![CDATA[<p> yay!!<br />
comienzo a bajarlo para tener mis propias conclusiones</p>
<p>Mas info <a href="http://kde.org/announcements/4.0/">aquí</a></p>
]]></description>
		<pubDate>Fri, 11 Jan 2008 12:39:53 +0000</pubDate>
	</item>
		<item>
		<title>Matias Fernandez: Ya se lo que quiero para navidad?</title>
		<link>http://got-pwned.net/radix/blog/ya-se-lo-que-quiero-para-navidad.html</link>
		<description><![CDATA[<p><img src="http://schop.codemonkey.cl/shirts/show-shirt-drhouse.jpg" /><br />Lastima que navidad ya paso&#8230;</p>
<p><a href="http://schop.codemonkey.cl/">schop.codemonkey.cl</a> now open!!</p>
]]></description>
		<pubDate>Fri, 28 Dec 2007 13:59:04 +0000</pubDate>
	</item>
		<item>
		<title>Matias Fernandez: Me mudé a wordpress</title>
		<link>http://got-pwned.net/radix/blog/me-mude-a-wordpress.html</link>
		<description><![CDATA[<p>Y me aburrí de movable type, así que instalé una copia de wordpress para hostear mi blog<br />
So no mas&#8230;</p>
]]></description>
		<pubDate>Sun, 09 Dec 2007 02:43:07 +0000</pubDate>
	</item>
		<item>
		<title>Andres Salinas: INGLES BD</title>
		<link>http://grisunder.blogspot.com/2009/05/ingles-bd.html</link>
		<description><![CDATA[]]></description>
		<pubDate>Wed, 31 Dec 1969 21:00:00 +0000</pubDate>
	</item>
	</channel>
</rss>
