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

<channel>
	<title>阳光烂灿的日子 &#187; 程序技巧</title>
	<atom:link href="http://www.lerosua.org/category/linux-note/%e7%a8%8b%e5%ba%8f%e6%8a%80%e5%b7%a7/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lerosua.org</link>
	<description>总会遇见</description>
	<lastBuildDate>Tue, 31 Jan 2012 14:44:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>记一次 rename 命令解决方案</title>
		<link>http://www.lerosua.org/2011/11/rename_do/</link>
		<comments>http://www.lerosua.org/2011/11/rename_do/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 15:17:28 +0000</pubDate>
		<dc:creator>lerosua</dc:creator>
				<category><![CDATA[程序技巧]]></category>
		<category><![CDATA[rename]]></category>

		<guid isPermaLink="false">http://www.lerosua.org/?p=1092</guid>
		<description><![CDATA[rename是Linux下的批量文件名更改工具。怎么好用以前也只不过是听说，今天有机会试用之。 正巧有一批文件，命名方式颇为奇特, 001ac.jpg  002ae.jpg 003.ag.jpg ... 012gf.jpg 是这么一个序列，前面是正常的数字序列，加两个冒似无序的字母，其实是也是有序的。要的结果是得到正常的 001.jpg 002.jpg 003.jpg ... 012.jpg 一开始想到的可以用bash的tr来做，冒似要写复杂的脚本，用来得到文件名，然后tr掉，然后再改名。 rename的用法是， rename a b * , 意思是把文件名里的a转换成b。 那么取得a到z的循环，执行两次 rename 或许能把字母给过滤掉。于是 #!/bin/sh for i in &#123;a..z&#125; do rename $i '' *.jpg rename $i '' *.jpg done 能成吗？不能。结果是执行到 g 的时候把文件名的全换成 .jp的了，于是第二次rename找不到文件名。 不过rename还有第二个用法，就是改文件名。既然第一次换字母可能把文件名后缀给换掉，其实把文件名后缀先换成非字母就可以了。于是 #!/bin/sh rename .jpg .89 * for i in &#123;a..z&#125; do rename [...]]]></description>
			<content:encoded><![CDATA[<p>rename是Linux下的批量文件名更改工具。怎么好用以前也只不过是听说，今天有机会试用之。</p>
<p>正巧有一批文件，命名方式颇为奇特,</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">001ac.<span style="color: #202020;">jpg</span>  002ae.<span style="color: #202020;">jpg</span> <span style="color: #208080;">003</span>.<span style="color: #202020;">ag</span>.<span style="color: #202020;">jpg</span> ... 012gf.<span style="color: #202020;">jpg</span></pre></div></div>

<p>是这么一个序列，前面是正常的数字序列，加两个冒似无序的字母，其实是也是有序的。要的结果是得到正常的</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #208080;">001</span>.<span style="color: #202020;">jpg</span> <span style="color: #208080;">002</span>.<span style="color: #202020;">jpg</span> <span style="color: #208080;">003</span>.<span style="color: #202020;">jpg</span> ... <span style="color: #208080;">012</span>.<span style="color: #202020;">jpg</span></pre></div></div>

<p>一开始想到的可以用bash的tr来做，冒似要写复杂的脚本，用来得到文件名，然后tr掉，然后再改名。</p>
<p>rename的用法是， rename a b * , 意思是把文件名里的a转换成b。</p>
<p>那么取得a到z的循环，执行两次 rename 或许能把字母给过滤掉。于是</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#!/bin/sh</span>
<span style="color: #b1b100;">for</span> i in <span style="color: #009900;">&#123;</span>a..<span style="color: #202020;">z</span><span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">do</span>
   rename $i <span style="color: #ff0000;">''</span> <span style="color: #339933;">*</span>.<span style="color: #202020;">jpg</span>
   rename $i <span style="color: #ff0000;">''</span> <span style="color: #339933;">*</span>.<span style="color: #202020;">jpg</span>
done</pre></div></div>

<p>能成吗？不能。结果是执行到 g 的时候把文件名的全换成 .jp的了，于是第二次rename找不到文件名。<br />
不过rename还有第二个用法，就是改文件名。既然第一次换字母可能把文件名后缀给换掉，其实把文件名后缀先换成非字母就可以了。于是</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#!/bin/sh</span>
rename .<span style="color: #202020;">jpg</span> <span style="color:#800080;">.89</span> <span style="color: #339933;">*</span>
<span style="color: #b1b100;">for</span> i in <span style="color: #009900;">&#123;</span>a..<span style="color: #202020;">z</span><span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">do</span>
   rename $i <span style="color: #ff0000;">''</span> <span style="color: #339933;">*</span><span style="color:#800080;">.89</span>
   rename $i <span style="color: #ff0000;">''</span> <span style="color: #339933;">*</span><span style="color:#800080;">.89</span>
done
rename <span style="color:#800080;">.89</span> .<span style="color: #202020;">jpg</span> <span style="color: #339933;">*</span></pre></div></div>

<p>即一开始就把后缀换成数字的，然后把字母全strip掉，然后再把数字后缀的换回正常的jpg后缀。<br />
搞定了。</p>
<p>后续：</p>
<p>好吧，apporc把问题贴到stackoverflow了，那咱也来学习一下相关的bash技巧。<br />
首先是apporc自己的方案:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">  <span style="color: #0000dd;">1</span> <span style="color: #339933;">#!/bin/bash</span>
  <span style="color: #0000dd;">2</span>
  <span style="color: #0000dd;">3</span> <span style="color: #b1b100;">for</span> i in `find . <span style="color: #339933;">-</span>name <span style="color: #ff0000;">&quot;*.jpg&quot;</span>`
  <span style="color: #0000dd;">4</span>     <span style="color: #b1b100;">do</span>
  <span style="color: #0000dd;">5</span>         j<span style="color: #339933;">=</span>$<span style="color: #009900;">&#123;</span>i<span style="color: #339933;">:</span><span style="color: #0000dd;">0</span><span style="color: #339933;">:</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#125;</span>
  <span style="color: #0000dd;">6</span>         echo $j
  <span style="color: #0000dd;">7</span>         mv $i $j.<span style="color: #202020;">jpg</span>
  <span style="color: #0000dd;">8</span> done</pre></div></div>

<p>看准了名字序列只有前面三个字母有效，于是取出来，重命名之。这方案很好啊，为啥他还说wired &#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">find . <span style="color: #339933;">-</span>name <span style="color: #ff0000;">&quot;*.jpg&quot;</span> <span style="color: #339933;">|</span> <span style="color: #b1b100;">while</span> read $name
<span style="color: #b1b100;">do</span>
    newName<span style="color: #339933;">=</span>$<span style="color: #009900;">&#123;</span>name<span style="color: #339933;">:</span><span style="color: #0000dd;">0</span><span style="color: #339933;">:</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#125;</span>
    mv $i $j.<span style="color: #202020;">jpg</span>
done</pre></div></div>

<p>这是David W的改写版本，获取方式不一样而已。然后看它下一个方案</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">for</span> number in <span style="color: #009900;">&#123;</span><span style="color: #0000dd;">1</span>..<span style="color: #0000dd;">100</span><span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">do</span>
   zf_number<span style="color: #339933;">=</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066;">printf</span> <span style="color: #ff0000;">&quot;%3d&quot;</span><span style="color: #339933;">,</span> $number<span style="color: #009900;">&#41;</span>   <span style="color: #339933;">#Zero fill number</span>
   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#91;</span> <span style="color: #339933;">-</span>e $<span style="color: #009900;">&#123;</span>zf_number<span style="color: #009900;">&#125;</span><span style="color: #339933;">*</span> <span style="color: #009900;">&#93;</span>
   then 
       mv $<span style="color: #009900;">&#123;</span>zf_number<span style="color: #009900;">&#125;</span><span style="color: #339933;">*</span> $zf_number.<span style="color: #202020;">jpg</span>
   fi
done</pre></div></div>

<p>这是先取得数字序列，然后通过匹配数字名的方法来改名，感觉繁琐了一点。</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#!/bin/bash</span>
&nbsp;
<span style="color: #b1b100;">for</span> i in $<span style="color: #009900;">&#40;</span> find . <span style="color: #339933;">-</span>name <span style="color: #ff0000;">&quot;*.jpg&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>do
      new<span style="color: #339933;">=</span>$<span style="color: #009900;">&#40;</span>echo <span style="color: #ff0000;">&quot;$i&quot;</span> <span style="color: #339933;">|</span> sed <span style="color: #ff0000;">'s/[A-Za-z\.][A-Za-z\.]*//g'</span><span style="color: #009900;">&#41;</span>           
      echo $new
      echo mv $i $new.<span style="color: #202020;">jpg</span>
done</pre></div></div>

<p>这是另一个用户shellter的方案。直接是把文件名的字母全过滤掉，然后再重命名回来。不用说，它sed的正则用得很熟。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lerosua.org/2011/11/rename_do/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>C++0x FAQ摘抄</title>
		<link>http://www.lerosua.org/2011/06/c0x-faq-some/</link>
		<comments>http://www.lerosua.org/2011/06/c0x-faq-some/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:04:10 +0000</pubDate>
		<dc:creator>lerosua</dc:creator>
				<category><![CDATA[程序技巧]]></category>
		<category><![CDATA[C++0x]]></category>

		<guid isPermaLink="false">http://www.lerosua.org/?p=1019</guid>
		<description><![CDATA[在有{間}客栈的博客上看到C++0x的中文FAQ，学习浏览了一下，对于自己需要记住的内容摘抄了一些以备忘。 一些代码段和句子是直接抄录下来的。并且下面列的也不是全的特性，只是列出了我容易理解并想要记住的部分。 1.auto 类型 从初始化中推断数据类型，应用方面来说，定义迭代器的时候可以用。 &#160; for&#40;auto p =v.begin&#40;&#41;; p!=v.end&#40;&#41;; ++p&#41; cout&#38;lt;&#38;lt;*p&#38;lt;&#38;lt;&#34;\n&#34;; &#160; 2. 枚举类--具有类域和强类型的枚举 enum class Color &#123;red,blue&#125; 枚举值外部不可见，要加类名Color::red 不会默认转成int &#160; 可指定底层数据类型 enum class Color:char; //前向声明 enum class Color:char &#123;red,blue&#125;; //定义 &#160; 3. constexpr 常量表达式 &#160; 4.delctype 如果你仅仅是想根据初始化值为一个变量推断合适的数据类型，那么使用auto是一个更加简单的选择。 当你只有需要推断某个表达式的数据类型，例如某个函数调用表达式的计算结果的数据类型， 而不是某个变量的数据类型时，你才真正需要delctype。 &#160; 5. 控制默认函数 X&#38;amp; operator=&#40;const X&#38;amp;&#41;=delete; //禁用类的赋值操作符 X&#40;const X&#38;amp;&#41;=delete; Y&#40;const Y&#38;amp;&#41;=default; //使用默认的拷贝构造函数 &#160; 6. [...]]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://space.itpub.net/17237043/viewspace-688609">有{間}客栈</a>的博客上看到C++0x的中文FAQ，学习浏览了一下，对于自己需要记住的内容摘抄了一些以备忘。</p>
<p>一些代码段和句子是直接抄录下来的。并且下面列的也不是全的特性，只是列出了我容易理解并想要记住的部分。</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #0000dd;">1</span>.<span style="color: #993333;">auto</span> 类型
从初始化中推断数据类型，应用方面来说，定义迭代器的时候可以用。
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">auto</span> p <span style="color: #339933;">=</span>v.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> p<span style="color: #339933;">!=</span>v.<span style="color: #202020;">end</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span>p<span style="color: #009900;">&#41;</span>
	cout<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;*</span>p<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000dd;">2</span>. 枚举类<span style="color: #339933;">--</span>具有类域和强类型的枚举
<span style="color: #000000; font-weight: bold;">enum</span> class Color <span style="color: #009900;">&#123;</span>red<span style="color: #339933;">,</span>blue<span style="color: #009900;">&#125;</span>
枚举值外部不可见，要加类名Color<span style="color: #339933;">::</span><span style="color: #202020;">red</span>
不会默认转成<span style="color: #993333;">int</span>
&nbsp;
可指定底层数据类型
<span style="color: #000000; font-weight: bold;">enum</span> class Color<span style="color: #339933;">:</span><span style="color: #993333;">char</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//前向声明</span>
<span style="color: #000000; font-weight: bold;">enum</span> class Color<span style="color: #339933;">:</span><span style="color: #993333;">char</span> <span style="color: #009900;">&#123;</span>red<span style="color: #339933;">,</span>blue<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//定义</span>
&nbsp;
<span style="color: #0000dd;">3</span>.  <span style="color: #202020;">constexpr</span> 常量表达式
&nbsp;
<span style="color: #0000dd;">4</span>.<span style="color: #202020;">delctype</span>
如果你仅仅是想根据初始化值为一个变量推断合适的数据类型，那么使用<span style="color: #993333;">auto</span>是一个更加简单的选择。
当你只有需要推断某个表达式的数据类型，例如某个函数调用表达式的计算结果的数据类型，
而不是某个变量的数据类型时，你才真正需要delctype。
&nbsp;
<span style="color: #0000dd;">5</span>. 控制默认函数
X<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> operator<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> X<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span>delete<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//禁用类的赋值操作符</span>
X<span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> X<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span>delete<span style="color: #339933;">;</span>
Y<span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> Y<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span><span style="color: #b1b100;">default</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//使用默认的拷贝构造函数</span>
&nbsp;
<span style="color: #0000dd;">6</span>. 委托构造函数
可以在一个构造函数中调用另一个构造函数
X<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>X<span style="color: #009900;">&#123;</span><span style="color: #0000dd;">42</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//g++ 4.6中似乎还不支持</span>
&nbsp;
<span style="color: #0000dd;">7</span>. <span style="color: #202020;">nullptr</span> 空指针标识
NULL只是一个宏，定义为整数<span style="color: #0000dd;">0</span>. <span style="color: #202020;">nullptr</span>是c<span style="color: #339933;">++</span>0x的关键字，内建标识符
<span style="color: #993333;">char</span><span style="color: #339933;">*</span> p <span style="color: #339933;">=</span> nullptr<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000dd;">8</span>.序列<span style="color: #b1b100;">for</span>循环语句
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">auto</span> x <span style="color: #339933;">:</span> v<span style="color: #009900;">&#41;</span> <span style="color: #000066;">cout</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> x <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>auto<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> x <span style="color: #339933;">:</span> v<span style="color: #009900;">&#41;</span> <span style="color: #339933;">++</span>x<span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// 使用引用，方便我们修改容器中的数据</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> <span style="color: #993333;">auto</span> x <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #339933;">,</span><span style="color: #0000dd;">5</span><span style="color: #339933;">,</span><span style="color: #0000dd;">8</span><span style="color: #339933;">,</span><span style="color: #0000dd;">13</span><span style="color: #339933;">,</span><span style="color: #0000dd;">21</span><span style="color: #339933;">,</span><span style="color: #0000dd;">34</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066;">cout</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> x <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #339933;">;</span>
<span style="color: #0000dd;">9</span>. 返回类型后置语法
 template <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> mul<span style="color: #009900;">&#40;</span>T x<span style="color: #339933;">,</span> U y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> x<span style="color: #339933;">*</span>y<span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #0000dd;">10</span>. 类内部成员的初始化
C<span style="color: #339933;">++</span><span style="color: #0000dd;">98</span>标准里只有<span style="color: #993333;">static</span> <span style="color: #993333;">const</span> 声明的成员能在类内部初始化。现在普通数据成员也能直接赋值
&nbsp;
<span style="color: #0000dd;">11</span>. 原生字符串标识
 strings s <span style="color: #339933;">=</span> R<span style="color: #ff0000;">&quot;[\w<span style="color: #000099; font-weight: bold;">\\</span>w]&quot;</span>  <span style="color: #666666; font-style: italic;">//不用考虑里的转义字符了</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.lerosua.org/2011/06/c0x-faq-some/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gtalk上推方法</title>
		<link>http://www.lerosua.org/2010/11/gtalk-transport-twitter/</link>
		<comments>http://www.lerosua.org/2010/11/gtalk-transport-twitter/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 07:50:01 +0000</pubDate>
		<dc:creator>lerosua</dc:creator>
				<category><![CDATA[程序技巧]]></category>
		<category><![CDATA[gtalk]]></category>
		<category><![CDATA[transport]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.lerosua.org/?p=936</guid>
		<description><![CDATA[推-特是啥，俺也不介绍了。总之这是了解真实中国的一个途径。但是这个途径经常被伟大的长城所阻挡。不过，没有什么能够阻挡，我们对自由的向往。各种翻墙技巧随之而来。我这里介绍一种间接免翻墙的方法。就是利用xmpp网关，集成到gtalk列表里。 类似于网上介绍的把msn好友导入gtalk里一样。这里用的是xmpp transport的twitter插件功能。 1.首先你得有个xmpp账号（gtalk帐号也一样）。 2. 然后需要用到psi这个软件，请自行安装。 3. 使用psi的Service Discovery功能。 4. 添入服务器 jabber.fsinf.at ,然后按回车。 5. 如图可以见到有推特的transport了。 6. 在这个项点击右键，选中register菜单。跳出的对话框会让你输入你的推特用户名。输入即可。 7. 然后psi会有回复提示你，打开一个 api.xxx 的网址，这里就需要你翻墙一下，到这个网址里允许这个应用。 8. 在那个网址上允许后会返回几个数字码，把这数字码发回给transport的对话窗口即可，如图： 9. 之后聊天列表就会多一个好友，专门负责把推上的消息发回给你。而且你也可能通过这个好友把推发送到外面。 这方法好处是集成性高，不需要别的上推软件了。但发私信可能会麻烦（用这方法我还不知道如何发私信）。而且排版就不太好看。当然也会有风险，如果此transport的服务器墙了，那也是没法的事。]]></description>
			<content:encoded><![CDATA[<p>推-特是啥，俺也不介绍了。总之这是了解真实中国的一个途径。但是这个途径经常被伟大的长城所阻挡。不过，没有什么能够阻挡，我们对自由的向往。各种翻墙技巧随之而来。我这里介绍一种间接免翻墙的方法。就是利用xmpp网关，集成到gtalk列表里。<br />
类似于网上介绍的把msn好友导入gtalk里一样。这里用的是xmpp transport的twitter插件功能。<br />
1.首先你得有个xmpp账号（gtalk帐号也一样）。<br />
2. 然后需要用到psi这个软件，请自行安装。<br />
3. 使用psi的Service Discovery功能。<br />
4. 添入服务器 jabber.fsinf.at ,然后按回车。<br />
5. 如图可以见到有推特的transport了。<br />
<a href="http://www.lerosua.org/wp-content/uploads/2010/11/pri-sd-1.png"><img class="alignnone size-medium wp-image-937" title="pri-sd-1" src="http://www.lerosua.org/wp-content/uploads/2010/11/pri-sd-1-300x247.png" alt="" width="300" height="247" /></a></p>
<p>6. 在这个项点击右键，选中register菜单。跳出的对话框会让你输入你的推特用户名。输入即可。</p>
<p>7. 然后psi会有回复提示你，打开一个 api.xxx 的网址，这里就需要你翻墙一下，到这个网址里允许这个应用。</p>
<p>8. 在那个网址上允许后会返回几个数字码，把这数字码发回给transport的对话窗口即可，如图：</p>
<p><a href="http://www.lerosua.org/wp-content/uploads/2010/11/psi-sd-2.png"><img class="alignnone size-medium wp-image-938" title="psi-sd-2" src="http://www.lerosua.org/wp-content/uploads/2010/11/psi-sd-2-300x233.png" alt="" width="300" height="233" /></a></p>
<p>9. 之后聊天列表就会多一个好友，专门负责把推上的消息发回给你。而且你也可能通过这个好友把推发送到外面。</p>
<p><a href="http://www.lerosua.org/wp-content/uploads/2010/11/psi-sd-3.png"><img class="alignnone size-full wp-image-939" title="psi-sd-3" src="http://www.lerosua.org/wp-content/uploads/2010/11/psi-sd-3.png" alt="" width="279" height="252" /></a></p>
<p>这方法好处是集成性高，不需要别的上推软件了。但发私信可能会麻烦（用这方法我还不知道如何发私信）。而且排版就不太好看。当然也会有风险，如果此transport的服务器墙了，那也是没法的事。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lerosua.org/2010/11/gtalk-transport-twitter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>默认启用compiz为窗口管理器</title>
		<link>http://www.lerosua.org/2010/09/set_compiz_default/</link>
		<comments>http://www.lerosua.org/2010/09/set_compiz_default/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 02:15:50 +0000</pubDate>
		<dc:creator>lerosua</dc:creator>
				<category><![CDATA[程序技巧]]></category>
		<category><![CDATA[compiz]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.lerosua.org/?p=909</guid>
		<description><![CDATA[相信大家早就用上compiz为窗口管理器了。一般的方法是加上一个默认启动的 compiz &#8211;replace命令，或者是登录后再启动一个fusion-icon来启动compiz. 这样的方法当然有效，但有点慢，并且会在登录的时候闪一下。因为gdm启动后，默认是启动了metacity，然后再用compiz代替之。 我们可以省却启动metacity这一步，直接启动compiz，这样就加快了一些速度。 1. 启动gconf-editor, 找到 desktop->gnome->session->required_components ，把windowmanager的值换成 compiz 2. 用编辑器修改 /usr/share/applications/compiz.desktop 文件，把 Exec=compiz 行换成 Exec=compiz &#8211;sm-disable &#8211;ignore-desktop-hints ccp &#8211;indirect-rendering 再重启即可。这时就不用再另起进程来跑compiz &#8211;replace什么的了。 PS. wind折腾结果，谨记之。]]></description>
			<content:encoded><![CDATA[<p>相信大家早就用上compiz为窗口管理器了。一般的方法是加上一个默认启动的 compiz &#8211;replace命令，或者是登录后再启动一个fusion-icon来启动compiz. 这样的方法当然有效，但有点慢，并且会在登录的时候闪一下。因为gdm启动后，默认是启动了metacity，然后再用compiz代替之。</p>
<p>我们可以省却启动metacity这一步，直接启动compiz，这样就加快了一些速度。</p>
<p>1. 启动gconf-editor, 找到 desktop->gnome->session->required_components  ，把windowmanager的值换成 compiz<br />
2.  用编辑器修改 /usr/share/applications/compiz.desktop 文件，把 Exec=compiz 行换成 Exec=compiz  &#8211;sm-disable &#8211;ignore-desktop-hints ccp &#8211;indirect-rendering</p>
<p>再重启即可。这时就不用再另起进程来跑compiz &#8211;replace什么的了。</p>
<p>PS. wind折腾结果，谨记之。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lerosua.org/2010/09/set_compiz_default/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>vim技巧之取词翻译III</title>
		<link>http://www.lerosua.org/2010/07/vim_sdcv-3/</link>
		<comments>http://www.lerosua.org/2010/07/vim_sdcv-3/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 09:34:10 +0000</pubDate>
		<dc:creator>lerosua</dc:creator>
				<category><![CDATA[程序技巧]]></category>
		<category><![CDATA[sdcv]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.lerosua.org/?p=857</guid>
		<description><![CDATA[以前写过vim里用sdcv取词的一系列文章。 按一个快捷键能调出窗口来显示sdcv的翻译结果，但它不能方便地调用关闭。也就是用同一个快捷键开关窗口。如今此vim脚本有了进化，加了如此功能。 全部脚本如下： let s:w_mywin=0 &#160; function! Mydict&#40;&#41; if s:w_mywin let s:w_mywin=0 set nu! close file return endif let s:w_mywin=1 let expl=system&#40;'sdcv -n ' . \ expand&#40;&#34;&#60;cword&#62;&#34;&#41;&#41; windo if \ expand&#40;&#34;%&#34;&#41;==&#34;diCt.css&#34; &#124; \ q!&#124;endif botright vertical 25split diCt.css setlocal buftype=nofile bufhidden=hide noswapfile set nu! 1s/^/\=expl/ 1 endfunction nmap &#60;silent&#62; &#60;f2&#62; :call Mydict&#40;&#41;&#60;CR&#62; 将之保存为sdcv.vim,放到~/.vim/plugin即可。 详细信息参考: vim技巧之取词翻译II [...]]]></description>
			<content:encoded><![CDATA[<p>以前写过vim里用sdcv取词的<a href="http://www.lerosua.org/2006/12/vim_sdcv-2/">一系列文章</a>。</p>
<p>按一个快捷键能调出窗口来显示sdcv的翻译结果，但它不能方便地调用关闭。也就是用同一个快捷键开关窗口。如今此vim脚本有了进化，加了如此功能。</p>
<p>全部脚本如下：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">let</span> s:<span style="color: #007800;">w_mywin</span>=<span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span><span style="color: #000000; font-weight: bold;">!</span> Mydict<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">if</span> s:w_mywin
		<span style="color: #7a0874; font-weight: bold;">let</span> s:<span style="color: #007800;">w_mywin</span>=<span style="color: #000000;">0</span>
		<span style="color: #000000; font-weight: bold;">set</span> nu<span style="color: #000000; font-weight: bold;">!</span>
		close
		<span style="color: #c20cb9; font-weight: bold;">file</span>
		<span style="color: #7a0874; font-weight: bold;">return</span>
	endif
	<span style="color: #7a0874; font-weight: bold;">let</span> s:<span style="color: #007800;">w_mywin</span>=<span style="color: #000000;">1</span>
	<span style="color: #7a0874; font-weight: bold;">let</span> <span style="color: #007800;">expl</span>=system<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'sdcv -n '</span> .
				\  expand<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;&lt;cword&gt;&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
	windo <span style="color: #000000; font-weight: bold;">if</span>
				\ expand<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;%&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>==<span style="color: #ff0000;">&quot;diCt.css&quot;</span> <span style="color: #000000; font-weight: bold;">|</span>
				\ q<span style="color: #000000; font-weight: bold;">!|</span>endif
	botright vertical 25split diCt.css
	setlocal <span style="color: #007800;">buftype</span>=nofile <span style="color: #007800;">bufhidden</span>=hide noswapfile
	<span style="color: #000000; font-weight: bold;">set</span> nu<span style="color: #000000; font-weight: bold;">!</span>
	1s<span style="color: #000000; font-weight: bold;">/</span>^<span style="color: #000000; font-weight: bold;">/</span>\=expl<span style="color: #000000; font-weight: bold;">/</span>
	<span style="color: #000000;">1</span>
endfunction
<span style="color: #c20cb9; font-weight: bold;">nmap</span> <span style="color: #000000; font-weight: bold;">&lt;</span>silent<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span>f2<span style="color: #000000; font-weight: bold;">&gt;</span> :call Mydict<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">&lt;</span>CR<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

<p>将之保存为sdcv.vim,放到~/.vim/plugin即可。<br />
详细信息参考:<br />
<a href="http://www.lerosua.org/2006/12/vim_sdcv-2/">vim技巧之取词翻译II</a><br />
<a href="http://www.lerosua.org/2006/09/vim_sdcv/">VIM技巧：VIM里快速翻译单词</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lerosua.org/2010/07/vim_sdcv-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>技巧：screen默认开多窗口</title>
		<link>http://www.lerosua.org/2010/03/screen-open-multi-window/</link>
		<comments>http://www.lerosua.org/2010/03/screen-open-multi-window/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 01:49:24 +0000</pubDate>
		<dc:creator>lerosua</dc:creator>
				<category><![CDATA[程序技巧]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://www.lerosua.org/?p=791</guid>
		<description><![CDATA[screen 是啥我就不多说了，总之这个强大的工具是我杀人放火，居家旅行，开机必备。每次都要打开三个窗口才能满足我多线程的心。不过总要手工敲打Ctrl+a c来新建窗口，而且要重复两次，纯粹是浪费人力资源，降低工作效率，加剧全球变暖的进程。于是我一直在打开screen就默认建好三窗口的方法。 呃，废话说太多了，上技巧： 就是支持配置文件的方法，建一个文件screenrc,内容如下 $cat screenrc screen 0 screen 1 screen 2 用命令打开 $screen -c screenrc 这样新建的screen就有三窗口了。 只要把这个screenrc复制成~/.screenrc ，那么，打默认的的screen命令就有三窗口了。 当然还可以给新建的窗口起标题，如下 $cat ~/.screenrc screen -t editor screen -t network screen -t toy 技巧完毕。]]></description>
			<content:encoded><![CDATA[<p>screen 是啥我就不多说了，总之这个强大的工具是我杀人放火，居家旅行，开机必备。每次都要打开三个窗口才能满足我多线程的心。不过总要手工敲打Ctrl+a c来新建窗口，而且要重复两次，纯粹是浪费人力资源，降低工作效率，加剧全球变暖的进程。于是我一直在打开screen就默认建好三窗口的方法。</p>
<p>呃，废话说太多了，上技巧：</p>
<p>就是支持配置文件的方法，建一个文件screenrc,内容如下</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$cat</span> screenrc
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #000000;">0</span>
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #000000;">1</span>
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #000000;">2</span></pre></div></div>

<p>用命令打开</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$screen</span> <span style="color: #660033;">-c</span> screenrc</pre></div></div>

<p>这样新建的screen就有三窗口了。<br />
只要把这个screenrc复制成~/.screenrc ，那么，打默认的的screen命令就有三窗口了。<br />
当然还可以给新建的窗口起标题，如下</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$cat</span> ~<span style="color: #000000; font-weight: bold;">/</span>.screenrc
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-t</span> editor
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-t</span> network
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-t</span> toy</pre></div></div>

<p>技巧完毕。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lerosua.org/2010/03/screen-open-multi-window/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

