<?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>读取Thrift文件 &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/tag/%E8%AF%BB%E5%8F%96thrift%E6%96%87%E4%BB%B6/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Mon, 08 Aug 2022 09:23:37 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[原创]一些未归类的命令、操作方法或问题总结（5）</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/#respond</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Thu, 10 Oct 2013 02:27:37 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[综合]]></category>
		<category><![CDATA[写Thrift文件]]></category>
		<category><![CDATA[读取Thrift文件]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=7048</guid>

					<description><![CDATA[<p><span style="font-family: 文泉驿等宽微米黑;">下面是一些未归类的命令及操作方法，专门记在此文中，以便将来查询。由于文章较长，请用Ctrl+F查询关键字来定位到你需要的内容。</span><br />
<span id="more-7048"></span><br />
<span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（1）</span>Eclipse C++项目设置 头文件/include 路径<br />
在一个项目上点击右键&#8594;Properties&#8594;C/C++ General&#8594;Paths and Symbols&#8594;Includes&#8594;在&#8220;GNU C&#8221;和&#8220;GNU C++&#8221;中添加头文件路径。<br />
基本要添加的路径可用如下命令获取：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
echo &#34;&#34; &#124; g++ -v -x c++ -E -
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">路径没有设置好的话，项目中会看到很多无法识别的类。</span></p>
<p><span style="background-color:#00ff00;">（2）</span>SecureCRT全屏切换的快捷键<br />
如果你不小心按错了键使SecureCRT进入全屏模式的话，可能会发现找不到按钮可以让它切换回正常模式。 请按 Alt + Enter 切换到正常模式。</p>
<p><span style="background-color:#00ff00;">（3）</span>Visual Studio的启动程序在哪个目录下<br />
在你安装目录下的&#160;<span style="color:#0000ff;">Common7\IDE\devenv.exe</span></p>
<p><span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（4）</span>Win7下运行Visual Studio时提示&#8220;</span>要运行Visual Studio 2005 SP1，建议使用管理员权限<span style="font-family: 文泉驿等宽微米黑;">&#8221;的问题<br />
右键点击上面提到的&#8220;</span><span style="color:#0000ff;">devenv.exe</span>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: 文泉驿等宽微米黑;">下面是一些未归类的命令及操作方法，专门记在此文中，以便将来查询。由于文章较长，请用Ctrl+F查询关键字来定位到你需要的内容。</span><br />
<span id="more-7048"></span><br />
<span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（1）</span>Eclipse C++项目设置 头文件/include 路径<br />
在一个项目上点击右键&rarr;Properties&rarr;C/C++ General&rarr;Paths and Symbols&rarr;Includes&rarr;在&ldquo;GNU C&rdquo;和&ldquo;GNU C++&rdquo;中添加头文件路径。<br />
基本要添加的路径可用如下命令获取：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
echo &quot;&quot; | g++ -v -x c++ -E -
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">路径没有设置好的话，项目中会看到很多无法识别的类。</p>
<p><span style="background-color:#00ff00;">（2）</span></span>SecureCRT全屏切换的快捷键<br />
如果你不小心按错了键使SecureCRT进入全屏模式的话，可能会发现找不到按钮可以让它切换回正常模式。 请按 Alt + Enter 切换到正常模式。</p>
<p><span style="background-color:#00ff00;">（3）</span>Visual Studio的启动程序在哪个目录下<br />
在你安装目录下的&nbsp;<span style="color:#0000ff;">Common7\IDE\devenv.exe</span></p>
<p><span style="font-family: 文泉驿等宽微米黑;"><span style="background-color:#00ff00;">（4）</span>Win7下运行Visual Studio时提示&ldquo;</span>要运行Visual Studio 2005 SP1，建议使用管理员权限<span style="font-family: 文泉驿等宽微米黑;">&rdquo;的问题<br />
右键点击上面提到的&ldquo;</span><span style="color:#0000ff;">devenv.exe</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;，点击&ldquo;属性&rdquo;&rarr;&ldquo;兼容性&rdquo;&rarr;选中&ldquo;以兼容模式运行这个程序&rdquo;&rarr;选择&ldquo;Windows Server 2003 (Service Pack 1)&rdquo;，然后重新启动Visual Studio程序，就会发现提示已经消失了。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑;"> <span style="background-color:#00ff00;">（5）</span>让Total Commander在<span style="color:#b22222;">快速搜索</span>的时候，只显示符合条件的文件（其他的文件隐藏起来）<br />
Total Commander菜单的&ldquo;配置&rdquo;&rarr;&ldquo;选项&rdquo;&rarr;&ldquo;快速搜索&rdquo;&rarr;&ldquo;快速搜索(当前文件夹)&rdquo;中选择&ldquo;字母(显示快速搜索框)&rdquo;&rarr;&ldquo;文件名精确匹配&rdquo;两个复选框都不要选中，然后回到Total Commander的文件浏览器中，随便按几个按键让它开始快速搜索，会发现在下方出现了一个&ldquo;搜索&rdquo;小对话框，右边有一个按钮，上面写着&ldquo;<span style="color:#800080;">Ctrl+S</span>&rdquo;，<span style="color:#0000ff;">你需要确保它是按下的状态</span>，这样就可以筛选掉不符合快速搜索条件的文件了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（6）</span><span style="font-family: 文泉驿等宽微米黑;">让VS 2012创建项目时，提示&ldquo;</span>未能正确加载Visual C++ Language Manager Package...<span style="font-family: 文泉驿等宽微米黑;">&rdquo;的解决办法<br />
下载<a href="http://www.microsoft.com/en-us/download/details.aspx?id=36020" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个</span></a>patch并安装即可解决。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（7）</span><span style="font-family: 文泉驿等宽微米黑;">在PowerPoint中输入上标、下标的快捷键<br />
上标：选中要置为上标的数字，按<span style="color:#ff0000;">Ctrl</span>+<span style="color:#ff0000;">Shift</span>+<span style="color:#ff0000;">=</span></span><br />
<span style="font-family: 文泉驿等宽微米黑;">下标：选中要置为下标的数字，按<span style="color:#ff0000;">Ctrl</span>+<span style="color:#ff0000;">=</span></span><br />
<span style="font-family: 文泉驿等宽微米黑;">再按一次相同的快捷键则取消效果。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（8）</span><span style="font-family: 文泉驿等宽微米黑;">用Linux find命令查找所有包含指定字符串内容的文件</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
find /home/codelast/ -name &quot;*&quot; | xargs grep &quot;abc&quot;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">表示查找 /home/codelast/ 目录下，所有内容里包含字符串&ldquo;abc&rdquo;的文件。这种方法，若包含子目录，则无法递归查找下去。</span></p>
<p>另一种方法：用grep命令实现：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
grep -n -r &quot;abc&quot; ./
</pre>
<p>表示查找当前目录（./）下，含有字符串&ldquo;abc&rdquo;的所有文件。-n表示打印出行号，-r表示递归查找，也就是说目录中若包含子目录，会一级级查找下去。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（9）</span><span style="font-family: 文泉驿等宽微米黑;">VIM跳到第一行、最后一行的快捷键<br />
跳到第一行/首行：<span style="color:#0000ff;">gg</span> 或 <span style="color:#0000ff;">:0</span><br />
跳到最后一行/末行：<span style="color:#0000ff;">Shift+G</span> 或 <span style="color:#0000ff;">:$</span></span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（10）</span><span style="font-family: 文泉驿等宽微米黑;">用sed命令批量删除一堆文本文件中的指定字符串</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sed -i &quot;s/abcde//g&quot; file*
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">表示将当前目录下的所有file*文件中的&ldquo;abcde&rdquo;字符串删除（替换为空字符串就等于是删除了）。</span><br />
如果要删除匹配的行呢？像下面这样：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
sed -i &quot;/emails/d&quot; file*
</pre>
<p>表示删除所有file*文件中，含有&ldquo;emails&rdquo;字符串的所有行。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（11）</span><span style="font-family: 文泉驿等宽微米黑;">Emacs刷新缓冲区(buffer)的快捷键<br />
例如，在Emacs中打开的文件被其他程序修改了，需要在Emacs中体现出来，可以这样：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
M-x revert-buffer
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（12）</span><span style="font-family: 文泉驿等宽微米黑;">Linux shell命令：统计一个目录下（包括子目录）的文件/目录个数<br />
统计一个目录下（包括子目录）的文件个数：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ls -lR dir_to_scan | grep &quot;^-&quot; | wc -l
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">统计一个目录下（包括子目录）的目录个数：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ls -lR dir_to_scan | grep &quot;^d&quot; | wc -l
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">以上命令中，<span style="color:#b22222;">dir_to_scan</span>即为要搜索的目录。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（13）</span><span style="font-family: 文泉驿等宽微米黑;">grep查询制表符\t<br />
用grep查询一个文本文件中的制表符，如果直接这样写是无效的：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
grep &quot;\t&quot; file.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">就算file.txt中有制表符，也匹配不到。<br />
应该这样：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
grep -P &quot;\t&quot; file.txt
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（14）</span><span style="font-family: 文泉驿等宽微米黑;">lftp的基本用法<br />
登录远程FTP服务器：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
lftp 用户名@服务器地址:服务器端口
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后会让你输入密码登录。<br />
如果嫌麻烦的话可以直接把密码写在命令中：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
lftp 用户名:密码@服务器地址:服务器端口 
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">但是显然，这样会被shell history记录下来，不太安全。</p>
<p>上传一个本地文件到FTP服务器上：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
put /home/codelast/local_file.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">这样会把本地的文件上传到你所在的FTP目录下。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（15）</span><span style="font-family: 文泉驿等宽微米黑;">JAVA中，&quot;UTF-8&quot;这个字符串常量定义在哪？<br />
程序中会经常使用到&quot;UTF-8&quot;这个字符串常量，如果老是写这个字符串的话，显然很二，所以，要么自己定义一个字符串常量，要么用哪里已经定义好的。请看<a href="http://stackoverflow.com/questions/6698354/where-to-get-utf-8-string-literal-in-java" rel="noopener noreferrer" target="_blank"><span style="background-color:#ffa07a;">这个</span></a>链接。<br />
我习惯于使用</span><span style="color:#0000ff;">org.apache.commons.codec.CharEncoding.UTF_8</span>这个字符串常量，它依赖于Apache的commons-codec，jar包名形如commons-codec-1.6.jar（版本不同则不是这个名字）。<br />
另外还有一个常用的选择就是使用Guava库：</p>
<pre class="brush:java;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
com.google.common.base.Charsets.UTF_8.name()
</pre>
<p>同样将得到&ldquo;UTF-8&rdquo;。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（16）</span><span style="font-family: 文泉驿等宽微米黑;">rsync over ssh的用法<br />
直接看命令：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rsync -avz -e ssh 用户名@服务器地址:远程文件路径 本地路径
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">例如：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
rsync -avz -e ssh user@codelast.com:/abc/file.gz /home/codelast/
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">则会将远程服务器上的 /abc/file.gz 文件同步到本地的 /home/codelast/ 目录下。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（17）</span><span style="font-family: 文泉驿等宽微米黑;">使用rsync从client向server推送文件时，发生&nbsp;</span><span style="color:#0000ff;">auth failed on module xxx from unknown (192.168.1.26): missing secret for user &quot;rsync&quot;</span> 错误（从rsync server的日志中可以看到）的解决办法<br />
<span style="font-family: 文泉驿等宽微米黑;">请注意，如果你的rsync server端用到了一个密码文件（例如</span>rsyncd.secrets），它的文件权限必须为600或400（不允许other用户读写）：</p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
chmod 600 rsyncd.secrets
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">否则就会发生上面的错误。</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（18）</span><span style="font-family: 文泉驿等宽微米黑;">吃掉shell命令的错误提示<br />
这是个非常简单的老问题了，例如，你 ls 一个不存在的文件，就会输出错误提示&ldquo;</span>ls: xxx: No such file or directory<span style="font-family: 文泉驿等宽微米黑;">&rdquo;，如果在shell脚本中执行这个命令，不想让它输出错误提示的话，可以这样：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
ls xxx &gt;/dev/null 2&gt;&amp;1
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（19）</span><span style="font-family: 文泉驿等宽微米黑;">Eclipse CDT打开一个.cpp文件时，默认显示是代码折叠的问题<br />
代码折叠，意味着函数什么的只显示一行，括号中的具体内容不显示，这样可能会导致很多人不习惯，可以在配置中改掉：<br />
<span style="color:#0000ff;">Window&rarr;Preference&rarr;C/C++&rarr;Editor&rarr;Folding</span>，去掉&ldquo;<span style="color:#b22222;">Enable folding when opening a new editor</span>&rdquo;选项上的勾即可。重新打开代码文件，就没有代码折叠的问题了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（20）</span><span style="font-family: 文泉驿等宽微米黑;">用&ldquo;msmtp 邮件地址&rdquo;发送邮件时提示&ldquo;</span><span style="color:#b22222;">Fmsmtp: GNU SASL: Base 64 coding error in SASL library</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;错误的解决办法<br />
在命令行用msmtp发送邮件的方法是：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
msmtp abc＠gmail.com
（输入一些内容，任意行数，任意字数，完成之后，按 Ctrl+D 键，邮件会立即发送）
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">其中，abc@gmai.com是要邮件接收地址。<br />
但是可能你还没输入任何内容，只是执行了&ldquo;msmtp 邮件地址&rdquo;这个命令，就提示了类似于下面的错误：</span></p>
<blockquote>
<div>
		<span style="color:#b22222;">Fmsmtp: GNU SASL: Base 64 coding error in SASL library</span></div>
<div>
		<span style="color:#b22222;">msmtp: could not send mail (account default from /root/.msmtprc)</span></div>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">此时可以尝试把</span>.msmtprc配置文件中的&ldquo;auth login&rdquo;改为&ldquo;<span style="color:#0000ff;">auth plain</span>&rdquo;，即有可能解决问题。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（21）</span><span style="font-family: 文泉驿等宽微米黑;">awk求文件中某一列的和<br />
假设要求文件file.txt中第3列的和，则：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
awk -F&quot;\t&quot; &#39;{(total+=$3)};END{print total}&#39; file.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">上面指定了3列的分隔符为\t</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（22）</span><span style="font-family: 文泉驿等宽微米黑;">强制Chrome访问指定网站时使用https<br />
例如访问Google时强制Chrome使用https，怎么做？在Chrome的浏览器栏输入：</span></p>
<blockquote>
<p>
		Chrome://net-internals/</p>
</blockquote>
<p><span style="font-family: 文泉驿等宽微米黑;">在左上角的下拉框里选择&ldquo;<span style="color:#ff0000;">HSTS</span>&rdquo;，在下面的&ldquo;</span><span style="color:#0000ff;">Domain:</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;输入框里填上&ldquo;google.com&rdquo;，然后再勾上&ldquo;</span><span style="color:#0000ff;">Include subdomains for STS</span><span style="font-family: 文泉驿等宽微米黑;">&rdquo;（表示对所有google.com的子域名都有效），再点击&ldquo;<span style="color:#0000ff;">Add</span>&rdquo;，然后重新打开浏览器，再访问Google，就会发现真的强制使用https了。</span></p>
<div style="text-align: center;">
	<span style="font-family: 文泉驿等宽微米黑;"><img decoding="async" alt="Chrome force use https" src="http://www.codelast.com/wp-content/uploads/ckfinder/images/chrome_force_use_https.png" style="width: 367px; height: 379px;" /></span></div>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（23）</span><span style="font-family: 文泉驿等宽微米黑;">解决无法使用screen命令时提示的错误：</span><span style="color:#ff0000;">Cannot open your terminal &#39;/dev/pts/0&#39; - please check.</span><br />
<span style="font-family: 文泉驿等宽微米黑;">只需要先执行一个命令即可：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
script /dev/null
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后再执行screen命令，OK了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（24）</span><span style="font-family: 文泉驿等宽微米黑;">修复CentOS 5下的bash注入漏洞<br />
近日（2014年9月），一个引人注目的bash漏洞浮出水面，具体解读可看<a href="http://coolshell.cn/articles/11973.html" rel="noopener noreferrer" target="_blank"><span style="background-color:#00ff00;">这里</span></a>。在CentOS下测试你的系统是否有漏洞：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
env x=&#39;() { :;}; echo vulnerable&#39; bash -c &quot;echo this is a test&quot;
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">若输出下面的结果则说明你的bash有严重漏洞：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
vulnerable
this is a test
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">修复方法很简单：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
yum update bash -y
/sbin/ldconfig
rpm -qa bash
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">之后再用上面的测试方法进行测试，若只输出&ldquo;</span>this is a test<span style="font-family: 文泉驿等宽微米黑;">&rdquo;则说明漏洞已完全修复！</span><br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（25）</span><span style="font-family: 文泉驿等宽微米黑;">awk取最后一列、倒数第二列<br />
用awk分割后，取最后一列以及倒数第二列的方法：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
[codelast@ temp]$ cat a.txt 
/usr/bin/1.txt
/usr/bin/2.txt
/usr/bin/3.txt
[codelast@ temp]$ cat a.txt | awk -F &quot;/&quot; &#39;{print $(NF-1)&quot;/&quot;$NF}&#39;
bin/1.txt
bin/2.txt
bin/3.txt
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">可见$NF表示最后一列，并且可用它减去任意数字得到其前面的列。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（26）</span><span style="font-family: 文泉驿等宽微米黑;">查看Ruby gem的安装路径</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
gem environment 
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">在输出结果中有类似于下面的这一段，即为其安装路径：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
  - GEM PATHS:
     - /usr/lib64/ruby/gems/2.1.0
     - /root/.gem/ruby/2.1.0
</pre>
<p>
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（27）</span><span style="font-family: 文泉驿等宽微米黑;">如何查看本地的Ruby doc/本地Ruby doc server的开启</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
[codelast@ ~]$ gem server --daemon
Server started at http://0.0.0.0:8808
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">然后就可以用浏览器访问&nbsp;</span>http://0.0.0.0:8808 来查看安装过的gem的Ruby doc了。</p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（28）</span><span style="font-family: 文泉驿等宽微米黑;">Ubuntu下的Thunderbird，在新邮件到达时不显示通知<br />
默认情况下，有新邮件到达时，Thunderbird会在Ubuntu的右上角显示一个弹出的小窗口通知，如果邮件多的话，这个窗口就会频繁弹出，非常令人不悦，因此可以修改Thunderbird的配置，让它不显示：<br />
<span style="color:#0000ff;">编辑&rarr;首选项&rarr;常规&rarr;新消息到达时&rarr;去掉&ldquo;显示警告&rdquo;前的勾</span></span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（29）</span><span style="font-family: 文泉驿等宽微米黑;">T如何清空Chrome的Secure Shell插件中的known_hosts记录？<br />
在Secure Shell的主界面里，用快捷键&ldquo;Ctrl+Shift+J&rdquo;打开JavaScript控制台工具，执行如下命令：</span></p>
<pre class="brush:plain;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
&gt; term_.command.removeAllKnownHosts()
true
</pre>
<p><span style="font-family: 文泉驿等宽微米黑;">回车之后就搞定了。</span></p>
<p><span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（30）</span><span style="font-family: 文泉驿等宽微米黑;">screen强制接管一个会话（session）<br />
当用 screen -r 无法 attach 一个session的时候，可以用下面的命令，踢掉原来的用户，强制attach到指定的session上：</span></p>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
screen -D -r &lt;session_id&gt;
</pre>
<p><span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（31）</span><span style="font-family: 文泉驿等宽微米黑;">如何防止Google表单把输入的&ldquo;true&rdquo;自动转化为大写的&ldquo;TRUE&rdquo;<br />
这个特性不是Google表单的bug，但是确实很恼人。其实只要在输入的时候，在&ldquo;true&rdquo;（不含引号）前面加一个单引号就可以输入小写的true了，就像这样：<br />
<span style="color:#ff0000;">&#39;true</span></span></p>
<p><span style="background-color:#00ff00;">（32）</span>Zookeeper server以指定的配置文件启动</p>
<div>
<pre class="brush:shell;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
./zkServer.sh start zoo.cfg
</pre>
</div>
<div>
	则启动时，会用同目录下的 zoo.cfg 作为配置文件。</p>
<p>	<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（33）</span><span style="font-family: 文泉驿等宽微米黑;">读取本地磁盘上的Thrift文件，以及把Thrfit对象写到本地文件<br />
	一言不合直接看代码：</span></p>
<pre class="brush:java;first-line:1;pad-line-numbers:true;highlight:null;collapse:false;">
// 待读取的Thrift格式文件的路径
String filePath = &quot;/home/codelast/my-thrift-file&quot;;

// 读取成byte数组
byte[] bytes = Files.readAllBytes(new File(filePath).toPath());

// 反序列化器
TDeserializer deserializer = new TDeserializer();

// 文件中存储的Thrift对象的格式
MyThrift myThriftObject = new MyThrift();

// 反序列化，执行之后文件中存储的数据就被保存到了 myThriftObject 这个对象中
deserializer.deserialize(myThriftObject, bytes);
</pre>
<p>
	以及写文件：</p>
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'DejaVu Sans Mono';font-size:12.0pt;">
<span style="color:#cc7832;">private void </span><span style="color:#ffc66d;">writeThriftObject2File</span>(MyThrift thriftObj<span style="color:#cc7832;">, </span>String outputFilePath) <span style="color:#cc7832;">throws </span>IOException<span style="color:#cc7832;">, </span>TException {
  BufferedOutputStream bufferedOut = <span style="color:#cc7832;">new </span>BufferedOutputStream(<span style="color:#cc7832;">new </span>FileOutputStream(outputFilePath)<span style="color:#cc7832;">, </span><span style="color:#6897bb;">2048</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">  </span>TBinaryProtocol binaryOut = <span style="color:#cc7832;">new </span>TBinaryProtocol(<span style="color:#cc7832;">new </span>TIOStreamTransport(bufferedOut))<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">  </span>thriftObj.write(binaryOut)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">  </span>bufferedOut.flush()<span style="color:#cc7832;">;
</span>}</pre>
<p>	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="http://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">http://www.codelast.com/</span></a><br />
	<span style="font-family: 文泉驿等宽微米黑; background-color: rgb(0, 255, 0);">（34）</span><span style="font-family: 文泉驿等宽微米黑;">tmux从小屏幕换到大屏幕之后显示不全屏的问题<br />
	如果你在一台分辨率小的电脑上创建了一个tmux session，然后在一台分辨率高的电脑上attach这个session，会发现attach上之后，tmux并不是全屏显示，而是小分辨率那部分形成了一个框框，在屏幕的其他部分都是无用的区域，这看起来非常难受，事实上，可以在attach的时候，加一个&nbsp;<span style="color:#0000ff;">-d&nbsp;</span>参数解决这个问题：</span></p>
<blockquote>
<p>
			<span style="font-family: 文泉驿等宽微米黑;">tmux attach -d</span></p>
</blockquote>
<p>	<span style="font-family: 文泉驿等宽微米黑;">如果要 attach 到指定序号的session上，这样做：</span></p>
<blockquote>
<p>
			<span style="font-family: 文泉驿等宽微米黑;">tmux attach -d -t 3</span></p>
</blockquote>
<p>	<span style="font-family: 文泉驿等宽微米黑;">其中 3 是session的序号。<br />
	注意：这个操作会detach其他的tmux客户端。</span></p>
<p>	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
		<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
</div>

			<!--[syntaxhighlighter]-->
			<!--代码高亮，请勿编辑-->
			<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shCore.js"></script><script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushShell.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/scripts/shBrushJava.js"></script>

			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shCoreCk.css" />
			<link type="text/css" rel="stylesheet" href="https://www.codelast.com/wp-content/plugins/ck-and-syntaxhighlighter/syntaxhighlighter/styles/shThemeCk.css" />
			<script type="text/javascript">
			SyntaxHighlighter.defaults['class-name']	= '';
			SyntaxHighlighter.defaults['smart-tabs']	= true;
			SyntaxHighlighter.defaults['tab-size']		= 2;
			SyntaxHighlighter.defaults['gutter']		= true;
			SyntaxHighlighter.defaults['quick-code']	= true;
			SyntaxHighlighter.defaults['collapse'] 		= false;
			SyntaxHighlighter.defaults['auto-links']	= true;
			SyntaxHighlighter.defaults['toolbar']		= true;
			SyntaxHighlighter.all();
			</script>
			<!--[/syntaxhighlighter]-->]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b%e4%b8%80%e4%ba%9b%e6%9c%aa%e5%bd%92%e7%b1%bb%e7%9a%84%e5%91%bd%e4%bb%a4%e3%80%81%e6%93%8d%e4%bd%9c%e6%96%b9%e6%b3%95%e6%88%96%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93%ef%bc%885/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
