<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>逃避虽然可耻但有用</title><link>https://www.leelib.com/index.html</link><description>Recent content on 逃避虽然可耻但有用</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 01 Nov 2025 22:46:10 +0800</lastBuildDate><atom:link href="https://www.leelib.com/atom.xml" rel="self" type="application/rss+xml"/><item><title>MacOS 图标生成</title><link>https://www.leelib.com/2025/11/01/macos-icon-generator.html</link><pubDate>Sat, 01 Nov 2025 22:46:10 +0800</pubDate><guid>https://www.leelib.com/2025/11/01/macos-icon-generator.html</guid><description>&lt;p&gt;将 PNG 图片转换为优化的 MacOS .icns 图标文件的 Shell 脚本，使用 sips + pngquant 两级压缩，自动调整尺寸至 512x512，支持透明背景。&lt;/p&gt;
&lt;h1 id="功能"&gt;功能&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;自动调整图片尺寸为 512x512&lt;/li&gt;
&lt;li&gt;sips + pngquant 两级压缩优化&lt;/li&gt;
&lt;li&gt;完整的依赖检查和错误处理&lt;/li&gt;
&lt;li&gt;显示压缩前后文件大小对比&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="依赖安装"&gt;依赖安装&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 仅需安装 pngquant&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install pngquant
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注：sips 和 iconutil 均为 MacOS 系统自带工具，无需额外安装&lt;/p&gt;</description></item><item><title>实现响应式表格布局：当内容超宽时显示横向滚动条</title><link>https://www.leelib.com/2025/07/23/responsive-table-with-scroll.html</link><pubDate>Wed, 23 Jul 2025 12:07:57 +0800</pubDate><guid>https://www.leelib.com/2025/07/23/responsive-table-with-scroll.html</guid><description>&lt;h1 id="核心目标"&gt;核心目标&lt;/h1&gt;
&lt;p&gt;实现一个表格布局，当表格内容宽度超过容器宽度时，在&lt;strong&gt;表格容器内&lt;/strong&gt;显示横向滚动条，而不是让内容撑开页面导致整个页面出现滚动条。&lt;/p&gt;
&lt;h1 id="关键技术要点"&gt;关键技术要点&lt;/h1&gt;
&lt;h2 id="1-flex-布局的-min-width-0-设置"&gt;1. Flex 布局的 min-width: 0 设置&lt;/h2&gt;
&lt;p&gt;这是实现的&lt;strong&gt;最关键&lt;/strong&gt;部分。当使用 Flexbox 布局时，flex 子元素默认的 &lt;code&gt;min-width&lt;/code&gt; 是 &lt;code&gt;auto&lt;/code&gt;，这会阻止元素收缩到比其内容更小的宽度。&lt;/p&gt;</description></item><item><title>Windows 系统内禁止某些应用以管理员程序运行(RunAsInvoker)</title><link>https://www.leelib.com/2024/01/10/windows-runasinvoker.html</link><pubDate>Wed, 10 Jan 2024 22:26:31 +0800</pubDate><guid>https://www.leelib.com/2024/01/10/windows-runasinvoker.html</guid><description>&lt;p&gt;在 Windows 调试一些程序的时候，有可能会遇到程序本身编译为始终以管理员身份运行的。而这些程序在拿到管理员身份的时候会启动一些保护以检测自己是否被调试注入等等。&lt;/p&gt;</description></item><item><title>仗剑江湖WebMUD客户端</title><link>https://www.leelib.com/2023/04/02/webmud-client-electron.html</link><pubDate>Sun, 02 Apr 2023 03:07:51 +0700</pubDate><guid>https://www.leelib.com/2023/04/02/webmud-client-electron.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/images/webmud-client.webp#center" alt="仗剑江湖WebMUD客户端"&gt;&lt;/p&gt;
&lt;p&gt;最近在学习AI与一些前端方面的知识，各种前端方向依然属于我不擅长的领域，也是在为后面一些可能的情况存储知识储备。&lt;/p&gt;
&lt;p&gt;前段时间忆起只有老网虫才知道的在西陆版的WebMUD游戏 &lt;strong&gt;“仗剑江湖”&lt;/strong&gt; 游玩的岁月。或许只是突然心生怀念，就把早之前2012年写的一个客户端程序（&lt;a href="https://www.leelib.com/2012/03/22/web-mud-client.html"&gt;仗剑江湖MUD客户端&lt;/a&gt;）拿出来找个服进去逛逛。&lt;/p&gt;</description></item><item><title>zip 和 tar 包内乱码文件名修正工具</title><link>https://www.leelib.com/2023/03/29/zip-tar-name-fixer.html</link><pubDate>Wed, 29 Mar 2023 03:15:09 +0700</pubDate><guid>https://www.leelib.com/2023/03/29/zip-tar-name-fixer.html</guid><description>&lt;p&gt;收到别人发来的压缩包，结果解压出来文件名是乱码。
这种情况在别人和自己使用不同的操作系统平台以及编码时经常发生，为了解决这一问题。自己编写了使用指定编码解压文件的程序。&lt;/p&gt;</description></item><item><title>文本编码与换行符转换器</title><link>https://www.leelib.com/2023/03/29/encoding-line-ending-converter.html</link><pubDate>Wed, 29 Mar 2023 03:03:40 +0700</pubDate><guid>https://www.leelib.com/2023/03/29/encoding-line-ending-converter.html</guid><description>&lt;p&gt;当遇到某人发来的文本內容内不是标准 utf-8 编码时，可以使用本程序来进行转换。&lt;/p&gt;
&lt;p&gt;转换时遇到文本行尾使用了Windows专用的 &lt;strong&gt;CRLF&lt;/strong&gt; 换行符时，也会将文本行尾统一更换为 &lt;strong&gt;LF&lt;/strong&gt;。这样的好处是可以缩小文本文件的空间占用，并且可以保证该文件可以在基于Unix和Linux的操作系统以相同的格式显示。&lt;/p&gt;</description></item><item><title>基于 Tailwind CSS 的 Box 布局</title><link>https://www.leelib.com/2022/10/12/tailwind-box-layout.html</link><pubDate>Wed, 12 Oct 2022 20:45:05 +0800</pubDate><guid>https://www.leelib.com/2022/10/12/tailwind-box-layout.html</guid><description>&lt;h1 id="header-content-footer-布局"&gt;Header Content Footer 布局&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;html&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lang&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;charset&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;Tailwind CSS Box Layout&amp;lt;/&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://cdn.tailwindcss.com&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text/tailwindcss&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;html&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-family&lt;/span&gt;: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, &lt;span style="color:#66d9ef"&gt;monospace&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#c9d1d9&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#0d1117&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;box&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;flex flex-col h-screen justify-between&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;header&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;border-b p-5&amp;#34;&lt;/span&gt;&amp;gt;Header&amp;lt;/&lt;span style="color:#f92672"&gt;header&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;main&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;flex flex-1 flex-col justify-center items-center mb-auto h-auto bg-gray-900&amp;#34;&lt;/span&gt;&amp;gt;Content&amp;lt;/&lt;span style="color:#f92672"&gt;main&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;footer&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;flex justify-center items-center border-t border-gray-800 p-6&amp;#34;&lt;/span&gt;&amp;gt;Footer&amp;lt;/&lt;span style="color:#f92672"&gt;footer&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://codepen.io/leaker/pen/WNJLaQd"&gt;线上预览&lt;/a&gt;&lt;/p&gt;</description></item><item><title>更新主题为黑色风格</title><link>https://www.leelib.com/2022/10/07/change-blog-theme-dark.html</link><pubDate>Fri, 07 Oct 2022 12:43:36 +0800</pubDate><guid>https://www.leelib.com/2022/10/07/change-blog-theme-dark.html</guid><description>&lt;p&gt;本博客使用博主自制主题： &lt;a href="https://github.com/leaker/hugo-theme-fika"&gt;Fika theme for Hugo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我个人本身夜间活动较多，而之前的主题背景颜色偏白，在夜晚的时候偶尔会让我眼睛有被闪瞎的感觉。&lt;/p&gt;
&lt;p&gt;遂决定把主题更改为黑暗模式风格，目前已经更新完成。风格颜色参考了 &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt;&lt;/p&gt;</description></item><item><title>使用 Visual Studio 2022 为 python 编译 OpenCV 加 CUDA 支持</title><link>https://www.leelib.com/2022/05/14/vs2022-build-opencv-with-cuda-for-python.html</link><pubDate>Sat, 14 May 2022 09:59:11 +0800</pubDate><guid>https://www.leelib.com/2022/05/14/vs2022-build-opencv-with-cuda-for-python.html</guid><description>&lt;h1 id="准备工作"&gt;准备工作&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;安装 Scoop&lt;/li&gt;
&lt;li&gt;安装 Visual Studio 2022&lt;/li&gt;
&lt;li&gt;安装 Ninja &lt;strong&gt;v1.11.1&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;安装 Python &lt;strong&gt;v3.10&lt;/strong&gt; 和 Numpy&lt;/li&gt;
&lt;li&gt;安装 wget 和 7zip&lt;/li&gt;
&lt;li&gt;安装 Cuda SDK &lt;strong&gt;v11.7&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;一键下载 OpenCV &lt;strong&gt;4.6.0&lt;/strong&gt; 源码并编译&lt;/li&gt;
&lt;li&gt;部署&lt;/li&gt;
&lt;li&gt;测试 OpenCV&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="安装-scoop"&gt;安装 Scoop&lt;/h1&gt;
&lt;p&gt;打开 &lt;strong&gt;PowerShell&lt;/strong&gt; 后执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Invoke-WebRequest get.scoop.sh | Invoke-Expression
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装参考： &lt;a href="https://scoop.sh"&gt;https://scoop.sh&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="安装-visual-studio-2022"&gt;安装 Visual Studio 2022&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;从 &lt;a href="https://visualstudio.microsoft.com"&gt;https://visualstudio.microsoft.com&lt;/a&gt; 下载你喜欢的版本，推荐免费的 &lt;strong&gt;Community&lt;/strong&gt; 版本&lt;/li&gt;
&lt;li&gt;安装 &lt;strong&gt;使用C++的桌面开发&lt;/strong&gt; 工作负荷
&lt;blockquote&gt;
&lt;p&gt;使用所选工具(包括 MSVC、CLang、CMake 或 MSBuild)生成适用于 Windows 的现代 C++ 应用&lt;/p&gt;</description></item><item><title>博客引擎由Hexo更换为Hugo</title><link>https://www.leelib.com/2022/05/11/change-site-hexo-to-hugo.html</link><pubDate>Wed, 11 May 2022 17:05:12 +0800</pubDate><guid>https://www.leelib.com/2022/05/11/change-site-hexo-to-hugo.html</guid><description>&lt;h1 id="更换原因"&gt;更换原因&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://hexo.io"&gt;Hexo&lt;/a&gt; 作为博客引擎长期以来使用还是非常方便的。&lt;/p&gt;
&lt;p&gt;但由于其本身是基于&lt;code&gt;nodejs&lt;/code&gt;和&lt;code&gt;npm&lt;/code&gt;，其中使用到的各种npm库的嵌套依赖关系十分杂乱。有可能因為某个子包出BUG而导致引用了该包的所有库均出现各种问题。&lt;/p&gt;</description></item><item><title>记一些常用的CSS布局方式</title><link>https://www.leelib.com/2021/09/17/css-layout.html</link><pubDate>Fri, 17 Sep 2021 23:22:14 +0800</pubDate><guid>https://www.leelib.com/2021/09/17/css-layout.html</guid><description>&lt;h1 id="内容部分占满页面的剩余高度"&gt;内容部分占满页面的剩余高度&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;html&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lang&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;charset&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;http-equiv&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;X-UA-Compatible&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;IE=edge&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;Dock.Full&amp;lt;/&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text/css&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;html&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;body&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; #full {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#EFEFEF&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#423F3E&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; #full {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#171010&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;flex&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;flex-direction&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;column&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; #someid {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#362222&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;flex-grow&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;full&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;header&amp;#34;&lt;/span&gt;&amp;gt;Dock.Top&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;someid&amp;#34;&lt;/span&gt;&amp;gt;Dock.Full&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://codepen.io/leaker/pen/VwWQPwV"&gt;线上预览&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="登录框居中显示"&gt;登录框居中显示&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;html&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lang&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;charset&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;http-equiv&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;X-UA-Compatible&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;IE=edge&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;Document&amp;lt;/&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text/css&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;html&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;body&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; #parent {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#EFEFEF&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#423F3E&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; #parent {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#171010&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* 使用Flex布局 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;flex&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* 主轴位于中间 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;justify-content&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* 交叉轴位于中间 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;align-items&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; #someid {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#362222&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;200&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;200&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;parent&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;someid&amp;#34;&lt;/span&gt;&amp;gt;Dialog Content&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://codepen.io/leaker/pen/gORvGWd"&gt;线上预览&lt;/a&gt;&lt;/p&gt;</description></item><item><title>解决用 Scoop 安装的 PowerShellCore 无法在 VSCode Shell 使用</title><link>https://www.leelib.com/2021/03/17/fix-scoop-pwsh-vscode.html</link><pubDate>Wed, 17 Mar 2021 20:21:55 +0800</pubDate><guid>https://www.leelib.com/2021/03/17/fix-scoop-pwsh-vscode.html</guid><description>&lt;p&gt;目前在 Windows 安装软件特别喜欢使用 &lt;a href="https://scoop.sh/"&gt;Scoop&lt;/a&gt; 进行管理&lt;/p&gt;
&lt;p&gt;使用 &lt;strong&gt;Scoop&lt;/strong&gt; 安装 &lt;strong&gt;PowerShell Core&lt;/strong&gt; 最新版&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-pwsh" data-lang="pwsh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scoop install pwsh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;发现在 &lt;strong&gt;VSCode&lt;/strong&gt; 的 &lt;strong&gt;Terminal Shells&lt;/strong&gt; 列表里面依然看不到新安装的 &lt;strong&gt;PowerShell Core&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.leelib.com/images/2021/03/vscode-terminal-shells.webp" alt="VSCode Terminal Shells"&gt;&lt;/p&gt;
&lt;p&gt;但我又不想使用默认的 PowerShell 或者 cmd 当我的 Shell
这时就可以这样配置：&lt;/p&gt;</description></item><item><title>卸载 hexo-prism-plugin 代码高亮插件</title><link>https://www.leelib.com/2021/03/12/uninstall-hexo-prism-plugin.html</link><pubDate>Fri, 12 Mar 2021 03:21:50 +0800</pubDate><guid>https://www.leelib.com/2021/03/12/uninstall-hexo-prism-plugin.html</guid><description>&lt;p&gt;最近用 &lt;strong&gt;Github&lt;/strong&gt; 比较频繁，无意间点开 &lt;strong&gt;GitHub Pages&lt;/strong&gt; 的代码库时发现一个大大的 &lt;strong&gt;Dependabot alerts&lt;/strong&gt; 顶在上面&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.leelib.com/images/2021/03/github-dependabot-alerts.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;点开后发现最大的一个警告就是这个：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.leelib.com/images/2021/03/highlightjs-alerts.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;顺着这个 &lt;strong&gt;dependencies&lt;/strong&gt; 一路追查发现是 &lt;strong&gt;hexo-prism-plugin&lt;/strong&gt; 这个插件使用的
由于该插件太久没更新，而且发现 &lt;a href="https://hexo.io"&gt;hexo.io&lt;/a&gt; 最新版本已经集成了 &lt;strong&gt;prism&lt;/strong&gt; 的代码高亮功能
所以更新 &lt;strong&gt;Hexo&lt;/strong&gt; 版本并启用自带的代码高亮功能应该就可以解决了&lt;/p&gt;</description></item><item><title>改名“逃避虽然可耻但有用”</title><link>https://www.leelib.com/2020/05/07/change-title-for-icp.html</link><pubDate>Thu, 07 May 2020 22:18:26 +0800</pubDate><guid>https://www.leelib.com/2020/05/07/change-title-for-icp.html</guid><description>&lt;p&gt;突然心血来潮想把自己的笔记用阿里云CDN加速一下，但域名就需要备案。
而我本身的域名不想因为备案就迁回到国内的域名服务商（这里有一段在国内购买域名的黑历史）
所以干脆重新购买了一个新的域名 &lt;a href="https://www.kaij.cn"&gt;www.kaij.cn&lt;/a&gt; 用来备案&lt;/p&gt;</description></item><item><title>解决WSL中使用NTFS分区的权限问题</title><link>https://www.leelib.com/2020/04/30/wsl-ntfs.html</link><pubDate>Thu, 30 Apr 2020 20:32:27 +0800</pubDate><guid>https://www.leelib.com/2020/04/30/wsl-ntfs.html</guid><description>&lt;p&gt;当使用WSL的过程中访问WSL系统以外目录时候出现一些奇奇怪怪问题
通常就是WSL对于NTFS分区的目录权限问题。&lt;/p&gt;
&lt;p&gt;使用 &lt;strong&gt;mount -l&lt;/strong&gt; 查看，可能长这样&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@wsl&lt;span style="color:#f92672"&gt;]&lt;/span&gt; mount -l
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rootfs on / type lxfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,noatime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;none on /dev type tmpfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,noatime,mode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;755&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysfs on /sys type sysfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,nodev,noexec,noatime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;proc on /proc type proc &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,nodev,noexec,noatime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;devpts on /dev/pts type devpts &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,noexec,noatime,gid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;5,mode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;620&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;none on /run type tmpfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,noexec,noatime,mode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;755&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;none on /run/lock type tmpfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,nodev,noexec,noatime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;none on /run/shm type tmpfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,nodev,noatime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;none on /run/user type tmpfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,nosuid,nodev,noexec,noatime,mode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;755&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,relatime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cgroup on /sys/fs/cgroup type tmpfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,relatime,mode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;755&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cgroup on /sys/fs/cgroup/devices type cgroup &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,relatime,devices&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;C:&lt;span style="color:#ae81ff"&gt;\ &lt;/span&gt;on /mnt/c type drvfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,noatime,uid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0,gid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0,case&lt;span style="color:#f92672"&gt;=&lt;/span&gt;off&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;D:&lt;span style="color:#ae81ff"&gt;\ &lt;/span&gt;on /mnt/d type drvfs &lt;span style="color:#f92672"&gt;(&lt;/span&gt;rw,noatime,uid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0,gid&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0,case&lt;span style="color:#f92672"&gt;=&lt;/span&gt;off&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到 &lt;strong&gt;C:\&lt;/strong&gt; 和 &lt;strong&gt;D:\&lt;/strong&gt; 加载状况是这样的。这种情况下代表所有目录均以&lt;strong&gt;root&lt;/strong&gt;权限进行访问。在使用&lt;strong&gt;ssh&lt;/strong&gt;或&lt;strong&gt;git&lt;/strong&gt;等工具的时候有可能会因为一些权限问题导致意外情况发生。&lt;/p&gt;</description></item><item><title>博客启用 hexo-prism-plugin 代码高亮插件</title><link>https://www.leelib.com/2020/04/28/enable-hexo-prism-plugin.html</link><pubDate>Tue, 28 Apr 2020 19:23:08 +0800</pubDate><guid>https://www.leelib.com/2020/04/28/enable-hexo-prism-plugin.html</guid><description>&lt;p&gt;之前的高亮插件支持的语言比较少，而且效果不是特别理想。特进行了一次修整，内容如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由于hexo的更新导致之前的主题出现了一部分显示错误。目前已经修复&lt;/li&gt;
&lt;li&gt;启用 &lt;strong&gt;hexo-prism-plugin&lt;/strong&gt; 插件&lt;/li&gt;
&lt;li&gt;重新过了一遍文章并重新优化 &lt;strong&gt;code-block&lt;/strong&gt; 部分文章&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>解决 Windows 下部署 RabbitMQ 服务本地授权问题</title><link>https://www.leelib.com/2018/07/07/rabbitmq-server-windows-auth.html</link><pubDate>Sat, 07 Jul 2018 00:13:10 +0800</pubDate><guid>https://www.leelib.com/2018/07/07/rabbitmq-server-windows-auth.html</guid><description>&lt;h1 id="authentication-failed-rejected-by-the-remote-node-please-check-the-erlang-cookie"&gt;Authentication failed (rejected by the remote node), please check the Erlang cookie&lt;/h1&gt;
&lt;p&gt;遇到这种情况原因就是本地的授权cookie文件不匹配导致的，结局方法如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;删除 &lt;strong&gt;%UserProfile%&lt;/strong&gt; 目录下的 &lt;strong&gt;.erlang.cookie&lt;/strong&gt; 文件&lt;/li&gt;
&lt;li&gt;使用 &lt;strong&gt;C:\Windows\System32\config\systemprofile&lt;/strong&gt; 目录下的 &lt;strong&gt;.erlang.cookie&lt;/strong&gt; 覆盖掉之前 &lt;strong&gt;%UserProfile%&lt;/strong&gt; 目录的同名文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在试试，现在应该已经可以正常访问了&lt;/p&gt;</description></item><item><title>使用 firewall 配置端口转发</title><link>https://www.leelib.com/2018/03/30/firewall-port-forward.html</link><pubDate>Fri, 30 Mar 2018 16:36:49 +0800</pubDate><guid>https://www.leelib.com/2018/03/30/firewall-port-forward.html</guid><description>&lt;h1 id="开启nat转发"&gt;开启NAT转发&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --zone&lt;span style="color:#f92672"&gt;=&lt;/span&gt;public --add-masquerade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="本机到本机"&gt;本机到本机&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --zone&lt;span style="color:#f92672"&gt;=&lt;/span&gt;public --add-forward-port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;80:proto&lt;span style="color:#f92672"&gt;=&lt;/span&gt;tcp:toport&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --zone&lt;span style="color:#f92672"&gt;=&lt;/span&gt;public --add-service&lt;span style="color:#f92672"&gt;=&lt;/span&gt;http
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="本机到其他机器"&gt;本机到其他机器&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --zone&lt;span style="color:#f92672"&gt;=&lt;/span&gt;public --add-forward-port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;80:proto&lt;span style="color:#f92672"&gt;=&lt;/span&gt;tcp:toport&lt;span style="color:#f92672"&gt;=&lt;/span&gt;8080:toaddr&lt;span style="color:#f92672"&gt;=&lt;/span&gt;192.168.0.2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --zone&lt;span style="color:#f92672"&gt;=&lt;/span&gt;public --add-port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;80/tcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="重新加载应用"&gt;重新加载应用&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="只允许指定ip连入指定端口"&gt;只允许指定IP连入指定端口&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --add-rich-rule&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; source address=&amp;#34;192.168.0.2&amp;#34; port protocol=&amp;#34;tcp&amp;#34; port=&amp;#34;80&amp;#34; accept&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="只允许指定ip段连入指定端口范围"&gt;只允许指定IP段连入指定端口范围&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firewall-cmd --permanent --add-rich-rule&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; source address=&amp;#34;192.168.0.0/24&amp;#34; port protocol=&amp;#34;tcp&amp;#34; port=&amp;#34;80-8080&amp;#34; accept&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="linux-常用网络优化"&gt;Linux 常用网络优化&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 发送 KeepAlive 消息的间隔 1200=2分钟&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv4.tcp_keepalive_time&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# IP端口重用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv4.tcp_tw_reuse&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>使用 iptables 配置端口转发</title><link>https://www.leelib.com/2018/03/29/iptables-port-forward.html</link><pubDate>Thu, 29 Mar 2018 16:50:14 +0800</pubDate><guid>https://www.leelib.com/2018/03/29/iptables-port-forward.html</guid><description>&lt;h2 id="配置"&gt;配置&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv4.ip_forward&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#75715e"&gt;# 启用IP转发功能&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -p &lt;span style="color:#75715e"&gt;# 立即生效&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;net.ipv4.ip_forward=1&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /usr/lib/sysctl.d/50-default.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;iptables -t nat -A POSTROUTING -j MASQUERADE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="添加端口转发脚本-portforwardsh"&gt;添加端口转发脚本 portforward.sh&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;# $1=listen port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# $2=connect address and port example:111.111.111.111:2222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;iptables -t nat -A PREROUTING -p tcp -i eno1 --dport $1 -j DNAT --to $2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;想要添加端口的时候只要这么用就好&lt;/p&gt;</description></item><item><title>Ubuntu安装最新版本nodejs</title><link>https://www.leelib.com/2018/03/29/ubuntu-install-lastest-nodejs.html</link><pubDate>Thu, 29 Mar 2018 00:49:33 +0800</pubDate><guid>https://www.leelib.com/2018/03/29/ubuntu-install-lastest-nodejs.html</guid><description>&lt;h2 id="最新发行版"&gt;最新发行版&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo curl -sL https://deb.nodesource.com/setup | sudo -E bash -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="指定版本通常用于安装lts版本比如当前最新lts版本是8"&gt;指定版本，通常用于安装LTS版本。比如当前最新LTS版本是8&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>使用pkgmgr安装telnet客户端</title><link>https://www.leelib.com/2016/05/09/pkgmgr-install-telnet.html</link><pubDate>Mon, 09 May 2016 11:04:44 +0800</pubDate><guid>https://www.leelib.com/2016/05/09/pkgmgr-install-telnet.html</guid><description>&lt;p&gt;在 Windows Vista 以上的操作系统中可以使用pkgmgr对Windows功能的快捷安装
比如想要安装 &lt;em&gt;telnet客户端&lt;/em&gt; 时，只需在控制台里面键入以下命令并回车：&lt;/p&gt;</description></item><item><title>Eclipse-ADT在Windows下添加library的BUG</title><link>https://www.leelib.com/2016/04/20/adt-add-library-bug.html</link><pubDate>Wed, 20 Apr 2016 18:35:35 +0800</pubDate><guid>https://www.leelib.com/2016/04/20/adt-add-library-bug.html</guid><description>&lt;h1 id="问题出现"&gt;问题出现&lt;/h1&gt;
&lt;p&gt;今天在Windows里使用 Cocos-Quick 创建的项目在使用ADT往Android里面部署的时候遇到了下面的问题&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.leelib.com/images/20160420/adt_add_library_bug.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;出现上图的情况是这样的操作步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;添加 D:\Tools\Quick-Cocos2dx-Community\cocos\platform\android\java 到 Library 引用里&lt;/li&gt;
&lt;li&gt;点击 OK&lt;/li&gt;
&lt;li&gt;重新打开这个配置界面&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="问题解决"&gt;问题解决&lt;/h1&gt;
&lt;p&gt;测试了许久后，无意间发现有次选错了路径后Library正常了&lt;/p&gt;</description></item><item><title>Git的常用命令收集</title><link>https://www.leelib.com/2016/01/21/git.html</link><pubDate>Thu, 21 Jan 2016 23:43:59 +0800</pubDate><guid>https://www.leelib.com/2016/01/21/git.html</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拉取最新的代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git fetch --all
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 恢复到最后一次提交，放弃本地所有修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git reset --hard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 列出所有设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config -l
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 抛弃对文件的修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git co -- &amp;lt;filename&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 抛弃对目录的修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git co .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 从版本库中删除文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git rm &amp;lt;filename&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 比较差异&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 查看提交历史&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;本篇文章后续不定期更新&lt;/p&gt;</description></item><item><title>类 enable_shared_from_this 的经验总结</title><link>https://www.leelib.com/2015/12/13/enable-shared-from-this.html</link><pubDate>Sun, 13 Dec 2015 23:32:07 +0800</pubDate><guid>https://www.leelib.com/2015/12/13/enable-shared-from-this.html</guid><description>&lt;h1 id="不能再构造函数内使用-shared_from_this-函数"&gt;不能再构造函数内使用 shared_from_this() 函数&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class_a&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;enable_shared_from_this&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;class_a&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; class_a(&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;self&lt;/span&gt;(shared_from_this());&lt;span style="color:#75715e"&gt;// 这里会报 bad_weak_ptr 错误
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="子类无法重复继承"&gt;子类无法重复继承&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class_a&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;enable_shared_from_this&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;class_a&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class_b&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; class_a, &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;enable_shared_from_this&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;class_a&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这段代码将无法通过编译。
如果想返回子类的 shared_from_this 指针，则可以进行如下操作&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class_a&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;enable_shared_from_this&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;class_a&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;virtual&lt;/span&gt; &lt;span style="color:#f92672"&gt;~&lt;/span&gt;class_a()&lt;span style="color:#75715e"&gt;// 为了确保 dynamic_pointer_cast 可以工作，需要父类拥有虚函数。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class_b&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; class_a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;shared_ptr&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;class_b&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; shared_from_this(&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;dynamic_pointer_cast&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;class_b&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;(class_a&lt;span style="color:#f92672"&gt;::&lt;/span&gt;shared_from_this());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;通常来说如果定义一个类时，如果这个类可能被继承使用时，将这个类的析构函数定义为虚函数来确保析构的调用顺序&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Win10里添加目录右键菜单 VS2013 Command Prompt Here</title><link>https://www.leelib.com/2015/09/16/vs2013-command-prompt-here.html</link><pubDate>Wed, 16 Sep 2015 04:08:21 +0800</pubDate><guid>https://www.leelib.com/2015/09/16/vs2013-command-prompt-here.html</guid><description>&lt;h1 id="需求"&gt;需求&lt;/h1&gt;
&lt;p&gt;我有时需要在命令行里对某个VS项目目录进行编译或部署等操作，总是需要以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开VS的Command Prompt&lt;/li&gt;
&lt;li&gt;进入该项目目录&lt;/li&gt;
&lt;li&gt;进行编译操作&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;个人觉得这样太浪费时间，于是萌生了添加类似 &lt;strong&gt;Command Here&lt;/strong&gt; 右键菜单的想法。
办法很简单，在注册表添加相关项就可以了&lt;/p&gt;</description></item><item><title>VS2013静态编译openssl批处理</title><link>https://www.leelib.com/2015/09/14/vs2013-build-openssl-static.html</link><pubDate>Mon, 14 Sep 2015 12:26:46 +0800</pubDate><guid>https://www.leelib.com/2015/09/14/vs2013-build-openssl-static.html</guid><description>&lt;h1 id="打开-visual-studio-2013-command-prompt"&gt;打开 Visual Studio 2013 Command Prompt&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/win32/nasm-2.11.08-win32.zip
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;unzip nasm-2.11.08-win32.zip -d C:/nasm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set PATH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;%PATH%;C:/nasm/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://www.openssl.org/source/openssl-1.0.2d.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xzf openssl-1.0.2d.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd openssl-1.0.2d
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perl configure VC-WIN32 --prefix&lt;span style="color:#f92672"&gt;=&lt;/span&gt;C:/openssl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ms&lt;span style="color:#ae81ff"&gt;\d&lt;/span&gt;o_nasm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmake -f ms&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;t.mak
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmake -f ms&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;t.mak install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;build successed.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样编译不会产生 &lt;strong&gt;error A2070:invalid instruction operands&lt;/strong&gt; 这个错误&lt;/p&gt;</description></item><item><title>好玩的暴雪战网错误提示</title><link>https://www.leelib.com/2015/08/05/fun-battle-net-client-error.html</link><pubDate>Wed, 05 Aug 2015 22:08:24 +0800</pubDate><guid>https://www.leelib.com/2015/08/05/fun-battle-net-client-error.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/images/20150805/battle-net-error.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;可能是网络或者其他原因引起的。但没想到暴雪运维竟然卖萌掀桌子 0.0///&lt;/p&gt;</description></item><item><title>慢慢的，就没有了，就像从未存在过</title><link>https://www.leelib.com/disappear/</link><pubDate>Tue, 04 Aug 2015 17:34:00 +0800</pubDate><guid>https://www.leelib.com/disappear/</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/disappear/disappear.webp#center" alt="Disappear"&gt;&lt;/p&gt;
&lt;p&gt;　　几年以前，我曾经嘲笑过某科技界大佬。当时他说：也许90后、95后会慢慢不知道谷歌是什么网站。&lt;/p&gt;
&lt;p&gt;　　那一年，这对于我来说简直就是世界上最好笑的笑话。谷歌，全世界最卓越的互联网公司，活在互联网的一代中国人，会不知道他们的网站？&lt;/p&gt;</description></item><item><title>关于本人</title><link>https://www.leelib.com/about/</link><pubDate>Tue, 04 Aug 2015 16:56:47 +0800</pubDate><guid>https://www.leelib.com/about/</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/about/about.webp#center" alt="LUFFY"&gt;&lt;/p&gt;
&lt;h1 id="特征"&gt;特征&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;猥琐大叔&lt;/li&gt;
&lt;li&gt;宅男&lt;/li&gt;
&lt;li&gt;原本爱运动但现在是个胖子&lt;/li&gt;
&lt;li&gt;非种族主义者&lt;/li&gt;
&lt;li&gt;懒惰&lt;/li&gt;
&lt;li&gt;技术控&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="喜好"&gt;喜好&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;养狗&lt;/li&gt;
&lt;li&gt;牛B的事物&lt;/li&gt;
&lt;li&gt;动漫 (非二次元爱好者)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="擅长领域"&gt;擅长领域&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;非人类接触&lt;/li&gt;
&lt;li&gt;眼神沟通&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="能力"&gt;能力&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;拥有瞬间把桌子堆满的能力&lt;/li&gt;
&lt;li&gt;拥有洗完头就觉得自己变帅的能力&lt;/li&gt;
&lt;li&gt;拥有东西放完就找不到的能力&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="联系方式"&gt;联系方式&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Email: &lt;a href="mailto:admin@leelib.com"&gt;admin@leelib.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>VS里std::max和max宏混淆问题的解决方案</title><link>https://www.leelib.com/2015/02/09/fix-std-max-error.html</link><pubDate>Mon, 09 Feb 2015 11:27:16 +0800</pubDate><guid>https://www.leelib.com/2015/02/09/fix-std-max-error.html</guid><description>&lt;p&gt;有时,把旧项目转换成新版本项目时,旧版本项目里使用的 &lt;strong&gt;max&lt;/strong&gt; 和 &lt;strong&gt;min&lt;/strong&gt; 宏无法在新版本中正常编译.&lt;/p&gt;
&lt;p&gt;原因是: 新版本内有了新的函数 &lt;strong&gt;std::max&lt;/strong&gt; 和 &lt;strong&gt;std::min&lt;/strong&gt; 函数来实现这一功能&lt;/p&gt;
&lt;h4 id="这时可以尝试使用如下方案解决"&gt;这时可以尝试使用如下方案解决:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;包含algorithm文件&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;明确使用 &lt;strong&gt;std::max(a,b)&lt;/strong&gt; 而非 &lt;strong&gt;max(a,b)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;定义宏 NOMINMAX&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define NOMINMAX
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Windows下的DLL卸载本身模块的方法</title><link>https://www.leelib.com/2015/01/16/windows-dll-freelibrary-self.html</link><pubDate>Fri, 16 Jan 2015 01:35:37 +0800</pubDate><guid>https://www.leelib.com/2015/01/16/windows-dll-freelibrary-self.html</guid><description>&lt;p&gt;在 Windows 里 DLL 卸载自身模块是无法通过字节调用 FreeLibrary 自己来实现的。&lt;/p&gt;
&lt;h2 id="原因分析"&gt;原因分析&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;在当前线程中调用 FreeLibrary 后，当前模块就会立即被释放掉，而当前线程还没有运行结束。所以程序就运行到了一块不可访问的内存里，产生异常从而导致程序崩溃。&lt;/p&gt;</description></item><item><title>Linux里面查看登录日志，并统计次数和排序，查看尝试破解密码的IP</title><link>https://www.leelib.com/2015/01/06/linux-auth-log.html</link><pubDate>Tue, 06 Jan 2015 13:42:53 +0800</pubDate><guid>https://www.leelib.com/2015/01/06/linux-auth-log.html</guid><description>&lt;p&gt;仅需一条命令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;grep &lt;span style="color:#e6db74"&gt;&amp;#34;Failed password for root&amp;#34;&lt;/span&gt; /var/log/secure | awk &lt;span style="color:#e6db74"&gt;&amp;#39;{print $11}&amp;#39;&lt;/span&gt; | sort | uniq -c | sort -nr | more
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果类似下面这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 4377 103.41.124.18
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 4368 103.41.124.65
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 3900 62.210.178.226
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2214 103.41.124.33
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 409 62.210.142.105
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 404 115.231.222.45
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 152 122.225.97.91
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 95 122.225.109.205
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 81 109.195.69.233
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 42 74.52.105.154
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 87.106.184.62
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 87.106.1.211
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 82.165.154.23
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 69.64.64.62
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 67.226.156.239
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 61.40.192.52
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 60.213.190.98
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 27.251.179.130
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 222.77.190.33
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 211.172.219.251
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 21 210.249.105.10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 15 220.194.46.36
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 12 203.184.128.106
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 1 60.190.71.52
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 1 193.104.41.58
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样我们就可以很清楚的了解有谁在尝试破解我们的密码了，之后做个相关安全策略就可以简单防治了&lt;/p&gt;</description></item><item><title>Linux里Git出现fatal: Unable to find remote helper for 'https'的解决方案</title><link>https://www.leelib.com/2014/12/30/linux-git-remote-helper-for-https.html</link><pubDate>Tue, 30 Dec 2014 23:42:43 +0800</pubDate><guid>https://www.leelib.com/2014/12/30/linux-git-remote-helper-for-https.html</guid><description>&lt;p&gt;在Linux内源码编译安装的Git如果出现了 “&lt;strong&gt;Unable to find remote helper for &amp;lsquo;https&amp;rsquo;&lt;/strong&gt;” 错误，则说明&lt;strong&gt;编译的时候没有发现系统有openssl开发包&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>Windows里Git出现fatal: Unable to find remote helper for 'https'的解决方案</title><link>https://www.leelib.com/2014/12/25/git-remote-helper-for-https.html</link><pubDate>Thu, 25 Dec 2014 16:10:02 +0800</pubDate><guid>https://www.leelib.com/2014/12/25/git-remote-helper-for-https.html</guid><description>&lt;p&gt;在升级win8.1之后，重新安装的Git虽然可以正常使用
但遇到https时会报“&lt;strong&gt;Unable to find remote helper for &amp;lsquo;https&amp;rsquo;&lt;/strong&gt;”的错误&lt;/p&gt;</description></item><item><title>python代码简单加密解密工具</title><link>https://www.leelib.com/2014/11/21/python-simple-crypt-code.html</link><pubDate>Fri, 21 Nov 2014 19:13:45 +0800</pubDate><guid>https://www.leelib.com/2014/11/21/python-simple-crypt-code.html</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/usr/env python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;:license: MIT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Copyright (C) 2012 HustMoon
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Permission is hereby granted, free of charge, to any person obtaining a copy of
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;this software and associated documentation files (the &amp;#34;Software&amp;#34;), to deal in
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;the Software without restriction, including without limitation the rights to
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;of the Software, and to permit persons to whom the Software is furnished to do
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;so, subject to the following conditions:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;The above copyright notice and this permission notice shall be included in all
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;copies or substantial portions of the Software.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;SOFTWARE.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; __future__ &lt;span style="color:#f92672"&gt;import&lt;/span&gt; with_statement
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; zlib&lt;span style="color:#f92672"&gt;,&lt;/span&gt; sys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b128encode&lt;/span&gt;(buf, escape&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; buf: &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; buf &lt;span style="color:#f92672"&gt;=&lt;/span&gt; bytearray(buf)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; res &lt;span style="color:#f92672"&gt;=&lt;/span&gt; bytearray((len(buf) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p, s, i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; n &lt;span style="color:#f92672"&gt;in&lt;/span&gt; buf:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; res[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ((p &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; s) &lt;span style="color:#f92672"&gt;|&lt;/span&gt; (n &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; s)) &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;amp; &lt;span style="color:#ae81ff"&gt;0x7F&lt;/span&gt;) &lt;span style="color:#f92672"&gt;|&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x80&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; s &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; res[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; n &lt;span style="color:#f92672"&gt;|&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x80&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p, s &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p, s &lt;span style="color:#f92672"&gt;=&lt;/span&gt; n, (s &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; s &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; s &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;and&lt;/span&gt; p &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0x80&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (p &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; s)) &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;amp; &lt;span style="color:#ae81ff"&gt;0x7F&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p &lt;span style="color:#f92672"&gt;=&lt;/span&gt; chr(p)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; escape:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; p &lt;span style="color:#f92672"&gt;=&lt;/span&gt; p&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(&lt;span style="color:#e6db74"&gt;&amp;#39;string-escape&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; res[i:] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; p
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; str(res)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dcode&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;r&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&amp;#39;def code(__=code):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; (_______)=(globals)();del((_______)[&amp;#39;code&amp;#39;])
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if(((_______).get(&amp;#39;__doc__&amp;#39;))is((None))):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; (__)=(map)((ord),(__)[(339):]);(______)=[0]*(((((len)((__))+(1))*(7))/(8)));((___),(____),(_____))=((0),(0),(0))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; for((__))in((__)):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if((__)&amp;lt;(128)):break
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if((____)==(0)):((___),(____))=((__),(1))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; else:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; (______)[(_____)]=((((___)&amp;lt;&amp;lt;(____))|(((__)&amp;amp;amp;(127))&amp;gt;&amp;gt;((7)-(____))))&amp;amp;amp;(255));(_____)+=(1);((___),(____))=((__),(((____)+(1))%(8)))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if((__)&amp;lt;(128)):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if((____)!=(0)):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; (__)=((((___)&amp;lt;&amp;lt;(____))|((__)&amp;gt;&amp;gt;((7)-(____))))&amp;amp;amp;(255))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; (______)[(_____):]=[((__))]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; elif((____)!=(0)):del((______)[(_____):])
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; exec((&amp;#39;&amp;#39;.join((map)((chr),(______))).decode(&amp;#39;zlib&amp;#39;)))in((_______))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if(((_______).get(&amp;#39;__doc__&amp;#39;))is((None))):(_______)[&amp;#39;__doc__&amp;#39;]=&amp;#39;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;code()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join([c&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(&lt;span style="color:#e6db74"&gt;&amp;#39;string-escape&amp;#39;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ord(c) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;128&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; c
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; c &lt;span style="color:#f92672"&gt;in&lt;/span&gt; zlib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;compress(code, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;)])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dcode &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dcode()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;encode&lt;/span&gt;(infile, outfile):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; open(infile, &lt;span style="color:#e6db74"&gt;&amp;#39;rU&amp;#39;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; fp:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; fp&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read()&lt;span style="color:#f92672"&gt;.&lt;/span&gt;rstrip(&lt;span style="color:#e6db74"&gt;&amp;#39;n&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;n&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; b128encode(zlib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;compress(code, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;), &lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;r&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&amp;#39;# -*- coding: latin-1 -*-
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;code = &amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%s&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;exec(code.decode(&amp;#39;zlib&amp;#39;))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; (dcode &lt;span style="color:#f92672"&gt;+&lt;/span&gt; code)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; open(outfile, &lt;span style="color:#e6db74"&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; fp:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fp&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(code)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;decode&lt;/span&gt;(infile, outfile):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; open(infile, &lt;span style="color:#e6db74"&gt;&amp;#39;rU&amp;#39;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; fp:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; fp&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read()&lt;span style="color:#f92672"&gt;.&lt;/span&gt;rstrip(&lt;span style="color:#e6db74"&gt;&amp;#39;n&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;n&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; code&lt;span style="color:#f92672"&gt;.&lt;/span&gt;replace(&lt;span style="color:#e6db74"&gt;&amp;#34;exec(code.decode(&amp;#39;zlib&amp;#39;))&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;exec(code.decode(&amp;#39;zlib&amp;#39;)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;.replace(&amp;#39;exec&amp;#39;,&amp;#39;fp.write&amp;#39;).replace(&amp;#39;in((_______))&amp;#39;,&amp;#39;&amp;#39;))&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; open(outfile, &lt;span style="color:#e6db74"&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; fp:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; eval(compile(code, &lt;span style="color:#e6db74"&gt;&amp;#39;s&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;exec&amp;#39;&lt;/span&gt;), {&lt;span style="color:#e6db74"&gt;&amp;#39;fp&amp;#39;&lt;/span&gt;:fp})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;-d&amp;#39;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func &lt;span style="color:#f92672"&gt;=&lt;/span&gt; decode
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; infile, outfile &lt;span style="color:#f92672"&gt;=&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func &lt;span style="color:#f92672"&gt;=&lt;/span&gt; encode
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; infile, outfile &lt;span style="color:#f92672"&gt;=&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;except&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ValueError&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt;sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;stderr, &lt;span style="color:#e6db74"&gt;&amp;#39;Usage: zipcode.py [-d] infile.py outfile.py&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;raise&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;SystemExit&lt;/span&gt;(&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func(infile, outfile)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; __name__ &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>VS2013上直接使用ATL的注意事项</title><link>https://www.leelib.com/2014/11/21/vs2013-use-atl.html</link><pubDate>Fri, 21 Nov 2014 12:15:21 +0800</pubDate><guid>https://www.leelib.com/2014/11/21/vs2013-use-atl.html</guid><description>&lt;h3 id="不再需要导入atllib库了直接包含以下头文件就可以了"&gt;不再需要导入atl.lib库了，直接包含以下头文件就可以了&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;atlbase.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;atlcom.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;atlctl.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="要使用-atlaxattachcontrol-等函数的话则必须初始化atl模块"&gt;要使用 AtlAxAttachControl 等函数的话，则必须初始化ATL模块&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CComModule _Module;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;_pAtlModule &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;_Module;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>CentOS安装GO编译环境</title><link>https://www.leelib.com/2014/11/01/centos-install-go.html</link><pubDate>Sat, 01 Nov 2014 08:42:17 +0800</pubDate><guid>https://www.leelib.com/2014/11/01/centos-install-go.html</guid><description>&lt;p&gt;我们这里使用源码编译安装，直接按顺序执行下列命令就可以成功(我都是假设已经有root权限的情况下，所以执行之前请确认自己已有root权限)：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install -y mercurial gcc-c++ gcc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir /usr/local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /usr/local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hg clone -r release https://go.googlecode.com/hg/ go
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /usr/local/go/src
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmox +x all.bash
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./all.bash
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir /root/go
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export GOROOT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/usr/local/go
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export GOPATH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/root/go
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export GOBIN&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/usr/local/go/bin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export GOOS&lt;span style="color:#f92672"&gt;=&lt;/span&gt;linux
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export PATH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;.:$PATH:/usr/local/go/bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现在应该已经可以执行go命令测试了：&lt;/p&gt;</description></item><item><title>让CentOS的yum命令可以直接安装最新的nginx</title><link>https://www.leelib.com/2014/10/31/yum-install-last-nginx.html</link><pubDate>Fri, 31 Oct 2014 22:46:53 +0800</pubDate><guid>https://www.leelib.com/2014/10/31/yum-install-last-nginx.html</guid><description>&lt;h1 id="添加nginx的repo"&gt;添加nginx的repo&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#39;[nginx]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;name=nginx repo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;baseurl=http://nginx.org/packages/centos/7/x86_64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;gpgcheck=0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;enabled=1&amp;#39;&lt;/span&gt; &amp;gt; /etc/yum.repos.d/nginx.repo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="安装"&gt;安装&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;是不是直接安装了最新版的nginx呢
( ͡° ͜ʖ ͡°)&lt;/p&gt;</description></item><item><title>解决yum安装 openssl-devel时产生的Multilib version problems found错误</title><link>https://www.leelib.com/2014/06/29/fix-yum-openssl-devel-multilib-version-problems-found.html</link><pubDate>Sun, 29 Jun 2014 06:56:31 +0800</pubDate><guid>https://www.leelib.com/2014/06/29/fix-yum-openssl-devel-multilib-version-problems-found.html</guid><description>&lt;p&gt;今天给一台CentOS系统安装openssl-devel时，出现了如下信息：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# yum install -y openssl-devel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loaded plugins: fastestmirror, security
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Repository updates is listed more than once in the configuration
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Repository centosplus is listed more than once in the configuration
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Repository contrib is listed more than once in the configuration
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Repository extras is listed more than once in the configuration
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading mirror speeds from cached hostfile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; * base: mirrors.tuna.tsinghua.edu.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; * extras: mirrors.tuna.tsinghua.edu.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; * updates: mirrors.tuna.tsinghua.edu.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up Install Process
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Resolving Dependencies
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package openssl-devel.x86_64 0:1.0.1e-16.el6_5.14 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: krb5-devel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: openssl-devel-1.0.1e-16.el6_5.14.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package krb5-devel.x86_64 0:1.10.3-15.el6_5.1 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libselinux-devel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: krb5-devel-1.10.3-15.el6_5.1.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libcom_err-devel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: krb5-devel-1.10.3-15.el6_5.1.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: keyutils-libs-devel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: krb5-devel-1.10.3-15.el6_5.1.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package keyutils-libs-devel.x86_64 0:1.4-4.el6 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package libcom_err-devel.x86_64 0:1.41.12-18.el6 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package libselinux-devel.x86_64 0:2.0.94-5.3.el6_4.1 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libselinux &lt;span style="color:#f92672"&gt;=&lt;/span&gt; 2.0.94-5.3.el6_4.1 &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-devel-2.0.94-5.3.el6_4.1.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libsepol-devel &amp;gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt; 2.0.32-1 &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-devel-2.0.94-5.3.el6_4.1.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: pkgconfig&lt;span style="color:#f92672"&gt;(&lt;/span&gt;libsepol&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-devel-2.0.94-5.3.el6_4.1.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package libselinux.i686 0:2.0.94-5.3.el6_4.1 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libdl.so.2&lt;span style="color:#f92672"&gt;(&lt;/span&gt;GLIBC_2.1&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-2.0.94-5.3.el6_4.1.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libdl.so.2&lt;span style="color:#f92672"&gt;(&lt;/span&gt;GLIBC_2.0&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-2.0.94-5.3.el6_4.1.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libdl.so.2 &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-2.0.94-5.3.el6_4.1.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libc.so.6&lt;span style="color:#f92672"&gt;(&lt;/span&gt;GLIBC_2.8&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-2.0.94-5.3.el6_4.1.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: ld-linux.so.2&lt;span style="color:#f92672"&gt;(&lt;/span&gt;GLIBC_2.3&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-2.0.94-5.3.el6_4.1.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: ld-linux.so.2 &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: libselinux-2.0.94-5.3.el6_4.1.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package libsepol-devel.x86_64 0:2.0.41-4.el6 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package glibc.i686 0:2.12-1.132.el6_5.2 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libfreebl3.so&lt;span style="color:#f92672"&gt;(&lt;/span&gt;NSSRAWHASH_3.12.3&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: glibc-2.12-1.132.el6_5.2.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Processing Dependency: libfreebl3.so &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; package: glibc-2.12-1.132.el6_5.2.i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Running transaction check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&amp;gt; Package nss-softokn-freebl.i686 0:3.14.3-10.el6_5 will be installed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--&amp;gt; Finished Dependency Resolution
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Error: Multilib version problems found. This often means that the root
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cause is something &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; and multilib version checking is just
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pointing out that there is a problem. Eg.:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 1&lt;span style="color:#ae81ff"&gt;\.&lt;/span&gt; You have an upgrade &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; libselinux which is missing some
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dependency that another package requires. Yum is trying to
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; solve this by installing an older version of libselinux of the
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; different architecture. If you exclude the bad architecture
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; yum will tell you what the root cause is &lt;span style="color:#f92672"&gt;(&lt;/span&gt;which package
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; requires what&lt;span style="color:#f92672"&gt;)&lt;/span&gt;. You can try redoing the upgrade with
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --exclude libselinux.otherarch ... this should give you an error
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; message showing the root cause of the problem.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2&lt;span style="color:#ae81ff"&gt;\.&lt;/span&gt; You have multiple architectures of libselinux installed, but
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; yum can only see an upgrade &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; one of those arcitectures.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; If you don&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t want/need both architectures anymore &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt; you
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; can remove the one with the missing update and everything
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; will work.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 3&lt;span style="color:#ae81ff"&gt;\.&lt;/span&gt; You have duplicate versions of libselinux installed already.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; You can use &lt;span style="color:#e6db74"&gt;&amp;#34;yum check&amp;#34;&lt;/span&gt; to get yum show these errors.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...you can also use --setopt&lt;span style="color:#f92672"&gt;=&lt;/span&gt;protected_multilib&lt;span style="color:#f92672"&gt;=&lt;/span&gt;false to remove
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; this checking, however this is almost never the correct thing to
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; as something &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; is very likely to go wrong &lt;span style="color:#f92672"&gt;(&lt;/span&gt;often causing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; much more problems&lt;span style="color:#f92672"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Protected multilib versions: libselinux-2.0.94-5.3.el6_4.1.i686 !&lt;span style="color:#f92672"&gt;=&lt;/span&gt; libselinux-2.0.94-5.3.0.1.el6.centos.plus.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; You could try using --skip-broken to work around the problem
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; You could try running: rpm -Va --nofiles --nodigest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;最后在一个日文的网站上找到了解决办法：&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>一句话经验</title><link>https://www.leelib.com/2014/04/08/dmesg-tail.html</link><pubDate>Tue, 08 Apr 2014 00:37:23 +0800</pubDate><guid>https://www.leelib.com/2014/04/08/dmesg-tail.html</guid><description>&lt;p&gt;当内核加载失败时，使用以下命令查看出错记录，可以帮助找到问题所在：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dmesg | tail -n &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>升级Linux内核3.8.10记录</title><link>https://www.leelib.com/2014/04/08/upgrade-linux-kernel-to-3-8-10.html</link><pubDate>Tue, 08 Apr 2014 00:10:19 +0800</pubDate><guid>https://www.leelib.com/2014/04/08/upgrade-linux-kernel-to-3-8-10.html</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install rpmdevtools yum-utils ncurses-devel make rpm-build rpm-devel
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.10.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xvf linux-3.8.10.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd linux-3.8.10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make mrproper &lt;span style="color:#75715e"&gt;# 第一次可忽略&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make menuconfig &lt;span style="color:#75715e"&gt;# 记得保存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make modules_install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;new-kernel-pkg --mkinitrd --depmod --install 3.8.10
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Alienware系列 COMPAL Embedded System Control 驱动问题解决方案</title><link>https://www.leelib.com/2014/03/30/fix-alienware-compal-embedded-system-control.html</link><pubDate>Sun, 30 Mar 2014 05:05:56 +0800</pubDate><guid>https://www.leelib.com/2014/03/30/fix-alienware-compal-embedded-system-control.html</guid><description>&lt;p&gt;每次重装系统后，装驱动很容易有一个名为“COMPAL Embedded System Control”的驱动未安装。
而使用驱动精灵等驱动智能安装类的软件安装后很容易出现驱动显示是装好了，但会提示个感叹号说明该设备无法正常工作。&lt;/p&gt;</description></item><item><title>在使用boost库时发生 error C4996: 'std::_Copy_impl' 的解决方案</title><link>https://www.leelib.com/2013/11/23/boost-c4996-std-copy-impl.html</link><pubDate>Sat, 23 Nov 2013 13:21:44 +0800</pubDate><guid>https://www.leelib.com/2013/11/23/boost-c4996-std-copy-impl.html</guid><description>&lt;p&gt;原本的程序是控制台的。
但最近需要移植到windows下使用。
所以以MFC来做UI，代码照搬。
一面的一处代码使用了如下语句：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;boost&lt;span style="color:#f92672"&gt;::&lt;/span&gt;split(v, data, boost&lt;span style="color:#f92672"&gt;::&lt;/span&gt;is_any_of(_T(&lt;span style="color:#e6db74"&gt;&amp;#34;n&amp;#34;&lt;/span&gt;)));
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果编译时出现了如下错误：&lt;/p&gt;</description></item><item><title>Starting httpd: (13)Permission denied: make_sock: could not bind to address 解决方案</title><link>https://www.leelib.com/2013/11/01/httpd-permission-denied-make-sock-could-not-bind-to-address.html</link><pubDate>Fri, 01 Nov 2013 08:36:55 +0800</pubDate><guid>https://www.leelib.com/2013/11/01/httpd-permission-denied-make-sock-could-not-bind-to-address.html</guid><description>&lt;h1 id="原因"&gt;原因&lt;/h1&gt;
&lt;p&gt;修改了conf里面的Listen端口&lt;/p&gt;
&lt;h1 id="解决"&gt;解决&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;修改成SELinux安全机制里面默认允许的端口（80, 443, 488, 8008, 8009, 8443）等等。&lt;/li&gt;
&lt;li&gt;修改SELinux安全设置
如：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;semanage port -a -t http_port_t -p tcp &amp;lt;listen port&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>解决WinRAR压缩包分卷乱序导致无法解压的问题</title><link>https://www.leelib.com/2013/10/30/fix-winrar-order.html</link><pubDate>Wed, 30 Oct 2013 00:24:38 +0800</pubDate><guid>https://www.leelib.com/2013/10/30/fix-winrar-order.html</guid><description>&lt;p&gt;下载游戏：&lt;strong&gt;《古墓丽影9》中文免安装绿色豪华硬盘版[1.1.732.1升级档][解压即玩]&lt;/strong&gt;
光压缩包所有分卷加起来就有快10个G
结果用QQ旋风下载下来后成乱序的了
然后到网站上一看发现QQ旋风本身就把链接那些顺序没搞对。
参考下载地址：&lt;a href="http://fenxiang.qq.com/x/3SSKsVNycfRNc3CJcuCA0~NHIcT5rX133GN0qnvKZltI" title="http://fenxiang.qq.com/x/3SSKsVNycfRNc3CJcuCA0~NHIcT5rX133GN0qnvKZltI"&gt;Tomb.Raider.9.v1.1.732.1.CHS.Green.Edition&lt;/a&gt;&lt;/p&gt;</description></item><item><title>让Socket通过HTTP代理通讯</title><link>https://www.leelib.com/2013/10/29/make-socket-proxy.html</link><pubDate>Tue, 29 Oct 2013 16:06:54 +0800</pubDate><guid>https://www.leelib.com/2013/10/29/make-socket-proxy.html</guid><description>&lt;h2 id="如果socket想使用http代理需要进行下面步骤"&gt;如果socket想使用HTTP代理，需要进行下面步骤：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;connect到代理服务器&lt;/li&gt;
&lt;li&gt;send(Format(&amp;ldquo;CONNECT %s:%s HTTP/1.1rnUser-Agent: MyApp/0.1rnrn&amp;rdquo;, &amp;lt;真正目标IP&amp;gt;, &amp;lt;真正目标端口&amp;gt;)&lt;/li&gt;
&lt;li&gt;recv 数据，并且根据数据内容判断CONNECT协议是否成功（是否有返回&amp;quot;HTTP/1.1 200&amp;quot;）&lt;/li&gt;
&lt;li&gt;如果第3步成功了，那么这个socket就已经是通过HTTP代理来连接的了，剩下的该怎么发包收包都照旧了&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>自己使用过程中使用zlib链接时出的错误总结</title><link>https://www.leelib.com/2013/10/04/use-zlib.html</link><pubDate>Fri, 04 Oct 2013 06:37:29 +0800</pubDate><guid>https://www.leelib.com/2013/10/04/use-zlib.html</guid><description>&lt;h1 id="错误1"&gt;错误1&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;error LNK2019: unresolved external symbol _deflateEnd@4&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="原因1-未使用zlib的链接库"&gt;原因1: 未使用zlib的链接库&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;解决：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#pragma comment(lib, &amp;#34;zlibstat.lib&amp;#34;) &lt;/span&gt;&lt;span style="color:#75715e"&gt;// for static lib
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#pragma comment(lib, &amp;#34;zdll.lib&amp;#34;) &lt;/span&gt;&lt;span style="color:#75715e"&gt;// for dll lib
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="原因2在使用静态库时即使包含了zlibstatlib没有定义宏zlib_winapi"&gt;原因2：在使用静态库时即使包含了zlibstat.lib没有定义宏“ZLIB_WINAPI”&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;解决：
在项目属性中 C/C++ -&amp;gt; Preprocessor -&amp;gt; Preprocessor Definitions 添加“ZLIB_WINAPI”
注意：这个必须在项目中添加，使用#define来添加是无效的。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="错误2"&gt;错误2&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;error LNK2026: module unsafe for SAFESEH image&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>error LNK2026: module unsafe for SAFESEH image 解决方案</title><link>https://www.leelib.com/2013/10/03/error-lnk2026-module-unsafe-for-safeseh-image.html</link><pubDate>Thu, 03 Oct 2013 15:21:16 +0800</pubDate><guid>https://www.leelib.com/2013/10/03/error-lnk2026-module-unsafe-for-safeseh-image.html</guid><description>&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;p&gt;下面两种随便选一种&lt;/p&gt;
&lt;h2 id="方法1"&gt;方法1&lt;/h2&gt;
&lt;p&gt;去掉项目设置中: &lt;strong&gt;Linker -&amp;gt; Advanced -&amp;gt; [Image Has Safe Exception Handlers] = &amp;ldquo;No&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="方法2"&gt;方法2&lt;/h2&gt;
&lt;p&gt;直接在代码中:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#pragma comment(linker, &amp;#34;/SAFESEH:NO&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>如何用正确的 C 运行时 (CRT) 库链接</title><link>https://www.leelib.com/2013/10/03/how-to-use-crt.html</link><pubDate>Thu, 03 Oct 2013 04:13:52 +0800</pubDate><guid>https://www.leelib.com/2013/10/03/how-to-use-crt.html</guid><description>&lt;h1 id="概要"&gt;概要&lt;/h1&gt;
&lt;p&gt;有六种类型的可重用的库：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;静态单线程库 （调试/发行版）
静态多线程的库 （调试/发行版）
动态链接库 (DLL)(Debug/Release)
注意每个库都有一个调试版本和发布版本。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;Reusable Library Switch Library Macro(s) Defined
--------------------------- --------- ---------- ----------------------
Single Threaded /ML LIBC (none)
Static MultiThread /MT LIBCMT _MT
Dynamic Link (DLL) /MD MSVCRT _MT and _DLL
Debug Single Threaded /MLd LIBCD _DEBUG
Debug Static MultiThread /MTd LIBCMTD _DEBUG and _MT
Debug Dynamic Link (DLL) /MDd MSVCRTD _DEBUG, _MT, and _DLL
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="下面的代码可以使用可重用库的头文件中以确保一致使用正确的编译器开关"&gt;下面的代码可以使用可重用库的头文件中以确保一致使用正确的编译器开关：&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// MyReusableStaticSingleThreadReleaseLibrary.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#if defined(_MT) || defined(_DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#error The /ML compiler switch is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// MyReusableStaticMultithreadReleaseLibrary.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#if !defined(_MT) || defined(_DLL) || defined(_DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#error The /MT compiler switch is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// MyReusableDynamicLinkReleaseLibrary.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#if !defined(_MT) || !defined(_DLL) || defined(_DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#error The /MD compiler switch is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// MyReusableStaticSingleThreadDebugLibrary.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#if defined(_MT) || !defined(_DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#error The /MLd compiler switch is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// MyReusableStaticMultithreadDebugLibrary.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#if !defined(_MT) || defined(_DLL) || !defined(_DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#error The /MTd compiler switch is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// MyReusableDynamicLinkDebugLibrary.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#if !defined(_MT) || !defined(_DLL) || !defined(_DEBUG)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#error The /MDd compiler switch is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;原文：&lt;a href="http://support.microsoft.com/kb/140584/zh-cn"&gt;http://support.microsoft.com/kb/140584/zh-cn&lt;/a&gt;&lt;/p&gt;</description></item><item><title>修改连接SSH时的系统语言</title><link>https://www.leelib.com/2013/09/28/modify-ssh-lang.html</link><pubDate>Sat, 28 Sep 2013 05:13:34 +0800</pubDate><guid>https://www.leelib.com/2013/09/28/modify-ssh-lang.html</guid><description>&lt;blockquote&gt;
&lt;p&gt;在SSH连接后执行下面命令：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export LANG&lt;span style="color:#f92672"&gt;=&lt;/span&gt;en_US
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export LC_ALL&lt;span style="color:#f92672"&gt;=&lt;/span&gt;en_US
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;不过上面的修改只是临时的，仅这一次连接有效。等到下次再连接的时候，又得重新调用。所以可以采用下面永久解决这个问题：&lt;/p&gt;</description></item><item><title>[摘抄笔记]sublime2在Ubuntu下命令安装以及官网压缩包安装</title><link>https://www.leelib.com/2013/09/22/ubuntu-install-sublime2-with-src.html</link><pubDate>Sun, 22 Sep 2013 07:57:24 +0800</pubDate><guid>https://www.leelib.com/2013/09/22/ubuntu-install-sublime2-with-src.html</guid><description>&lt;h1 id="通过终端terminal命令安装"&gt;通过终端（terminal）命令安装&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo add-apt-repository ppa:webupd8team/sublime-text-2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install sublime-text
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="通过解压官网安装包安装"&gt;通过解压官网安装包安装&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;将下载的tar.bz2文件解压&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xf Sublime Text 2.0.1 x64.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;将解压后的文件夹移动到应用程序文件夹&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mv Sublime Text &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; /opt/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;设置terminal快速启动命令&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s /opt/Sublime Text 2/sublime_text /usr/bin/sublime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;在桌面创建快捷方式&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo sublime /usr/share/applications/sublime.desktop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="5"&gt;
&lt;li&gt;将下面的代码保存进去&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[Desktop Entry]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Version&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;1.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Sublime Text 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# From Ubuntu&amp;#39;s language-pack-kde-XX-base packages, version 9.04-20090413.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;GenericName&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Text Editor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Exec&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;sublime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Terminal&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Icon&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/opt/Sublime Text 2/Icon/48x48/sublime_text.webp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Categories&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;TextEditor;IDE;Development&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;X-Ayatana-Desktop-Shortcuts&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;NewWindow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[NewWindow Shortcut Group]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;New Window&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Exec&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;sublime -n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;TargetEnvironment&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Unity&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;貌似安装sublime3的时候会自动创建快速启动命令，所以如果安装的是3就不用再手动设置了&lt;/p&gt;</description></item><item><title>解决在安装了kernel-devel后/lib/modules/$(uname -r)/build 链接失效的问题</title><link>https://www.leelib.com/2013/09/07/fix-kernel-devel.html</link><pubDate>Sat, 07 Sep 2013 12:28:20 +0800</pubDate><guid>https://www.leelib.com/2013/09/07/fix-kernel-devel.html</guid><description>&lt;p&gt;如何安装kernel-devel，可以参考我之前的文章：&lt;a href="https://www.leelib.com/2013/06/02/install-kernel-devel.html"&gt;《Linux下编译驱动发现没有内核源码的解决办法》&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下面是我写的一个自动脚本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /usr/src/kernels
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;ls -d */ | head -n 1&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ln -s -f &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;pwd&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt; /lib/modules/&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;uname -r&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;/build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;至于为什么要费劲去 *&lt;em&gt;cd $(ls -d &lt;em&gt;/ | head -n 1)&lt;/em&gt;&lt;/em&gt; 的原因是：很多系统装出来的 &lt;strong&gt;kernel-devel&lt;/strong&gt; 目录名称跟 &lt;strong&gt;$(uname -r)&lt;/strong&gt; 并不一致&lt;/p&gt;</description></item><item><title>结构体sk_buff在Linux内核2.6.18与2.6.33中的区别</title><link>https://www.leelib.com/2013/09/06/sk-buff-2-6-18-diff-2-6-33.html</link><pubDate>Fri, 06 Sep 2013 17:28:58 +0800</pubDate><guid>https://www.leelib.com/2013/09/06/sk-buff-2-6-18-diff-2-6-33.html</guid><description>&lt;p&gt;在Linux 2.6.33.6中，源文件在：/usr/src/kernels/2.6.33.6/include/linux/skbuff.h&lt;/p&gt;
&lt;h1 id="struct-sk_buff在2618中的定义"&gt;struct sk_buff在2.6.18中的定义：&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* These two members must be first. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;next;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;prev;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sock &lt;span style="color:#f92672"&gt;*&lt;/span&gt;sk;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; skb_timeval tstamp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; net_device &lt;span style="color:#f92672"&gt;*&lt;/span&gt;dev;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; net_device &lt;span style="color:#f92672"&gt;*&lt;/span&gt;input_dev;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;union&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; tcphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;th;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; udphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;uh;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; icmphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;icmph;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; igmphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;igmph;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; iphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;ipiph;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; ipv6hdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;ipv6h;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;raw;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } h;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;union&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; iphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;iph;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; ipv6hdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;ipv6h;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; arphdr &lt;span style="color:#f92672"&gt;*&lt;/span&gt;arph;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;raw;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } nh;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;union&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;raw;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } mac;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; dst_entry &lt;span style="color:#f92672"&gt;*&lt;/span&gt;dst;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sec_path &lt;span style="color:#f92672"&gt;*&lt;/span&gt;sp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * This is the control buffer. It is free to use for every
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * layer. Please put your private variables there. If you
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * want to keep them across layers you have to do a skb_clone()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * first. This is owned by whoever has the skb queued ATM.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; cb[&lt;span style="color:#ae81ff"&gt;48&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; len,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data_len,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mac_len,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; csum;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u32 priority;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u8 local_df:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cloned:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ip_summed:&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nohdr:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nfctinfo:&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u8 pkt_type:&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fclone:&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifndef CONFIG_XEN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; ipvs_property:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; ipvs_property:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; proto_data_valid:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; proto_csum_blank:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __be16 protocol;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; (&lt;span style="color:#f92672"&gt;*&lt;/span&gt;destructor)(&lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;skb);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NETFILTER
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; nf_conntrack &lt;span style="color:#f92672"&gt;*&lt;/span&gt;nfct;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;nfct_reasm;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_BRIDGE_NETFILTER
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; nf_bridge_info &lt;span style="color:#f92672"&gt;*&lt;/span&gt;nf_bridge;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u32 nfmark;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif &lt;/span&gt;&lt;span style="color:#75715e"&gt;/* CONFIG_NETFILTER */&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NET_SCHED
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u16 tc_index; &lt;span style="color:#75715e"&gt;/* traffic control index */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NET_CLS_ACT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u16 tc_verd; &lt;span style="color:#75715e"&gt;/* traffic control verdict */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NET_DMA
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;dma_cookie_t&lt;/span&gt; dma_cookie;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NETWORK_SECMARK
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u32 secmark;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* These elements must be at the end, see alloc_skb() for details. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; truesize;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;atomic_t&lt;/span&gt; users;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;head,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;data,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;tail,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;end;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Extra stuff at the end to avoid breaking abi */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifndef __GENKSYMS__
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; peeked;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="struct-sk_buff在2633中的定义"&gt;struct sk_buff在2.6.33中的定义：&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* These two members must be first. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;next;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;prev;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;ktime_t&lt;/span&gt; tstamp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sock &lt;span style="color:#f92672"&gt;*&lt;/span&gt;sk;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; net_device &lt;span style="color:#f92672"&gt;*&lt;/span&gt;dev;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * This is the control buffer. It is free to use for every
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * layer. Please put your private variables there. If you
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * want to keep them across layers you have to do a skb_clone()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; * first. This is owned by whoever has the skb queued ATM.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; cb[&lt;span style="color:#ae81ff"&gt;48&lt;/span&gt;] &lt;span style="color:#a6e22e"&gt;__aligned&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;long&lt;/span&gt; _skb_dst;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_XFRM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sec_path &lt;span style="color:#f92672"&gt;*&lt;/span&gt;sp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; len,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; data_len;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u16 mac_len,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hdr_len;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;union&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __wsum csum;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u16 csum_start;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u16 csum_offset;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u32 priority;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;kmemcheck_bitfield_begin&lt;/span&gt;(flags1);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u8 local_df:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cloned:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ip_summed:&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nohdr:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nfctinfo:&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u8 pkt_type:&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fclone:&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ipvs_property:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; peeked:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nf_trace:&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __be16 protocol:&lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;kmemcheck_bitfield_end&lt;/span&gt;(flags1);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; (&lt;span style="color:#f92672"&gt;*&lt;/span&gt;destructor)(&lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;skb);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; nf_conntrack &lt;span style="color:#f92672"&gt;*&lt;/span&gt;nfct;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; sk_buff &lt;span style="color:#f92672"&gt;*&lt;/span&gt;nfct_reasm;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_BRIDGE_NETFILTER
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; nf_bridge_info &lt;span style="color:#f92672"&gt;*&lt;/span&gt;nf_bridge;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; skb_iif;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NET_SCHED
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u16 tc_index; &lt;span style="color:#75715e"&gt;/* traffic control index */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NET_CLS_ACT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u16 tc_verd; &lt;span style="color:#75715e"&gt;/* traffic control verdict */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;kmemcheck_bitfield_begin&lt;/span&gt;(flags2);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u16 queue_mapping:&lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_IPV6_NDISC_NODETYPE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u8 ndisc_nodetype:&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;kmemcheck_bitfield_end&lt;/span&gt;(flags2);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* 0/14 bit hole */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NET_DMA
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;dma_cookie_t&lt;/span&gt; dma_cookie;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ifdef CONFIG_NETWORK_SECMARK
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; __u32 secmark;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;union&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u32 mark;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u32 dropcount;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __u16 vlan_tci;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;sk_buff_data_t&lt;/span&gt; transport_header;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;sk_buff_data_t&lt;/span&gt; network_header;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;sk_buff_data_t&lt;/span&gt; mac_header;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* These elements must be at the end, see alloc_skb() for details. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;sk_buff_data_t&lt;/span&gt; tail;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;sk_buff_data_t&lt;/span&gt; end;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;head,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;data;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; truesize;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;atomic_t&lt;/span&gt; users;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;有了以上定义的话，我们就可以做类似如下定义来使我们的驱动支持多内核了：&lt;/p&gt;</description></item><item><title>解决CentOS安装新版本python后，yum不能使用的问题</title><link>https://www.leelib.com/2013/07/26/fix-centos-yum.html</link><pubDate>Fri, 26 Jul 2013 02:42:41 +0800</pubDate><guid>https://www.leelib.com/2013/07/26/fix-centos-yum.html</guid><description>&lt;h1 id="centos-上安装新版本-python"&gt;CentOS 上安装新版本 python&lt;/h1&gt;
&lt;p&gt;请看： &lt;a href="https://www.leelib.com/2013/07/10/fix-python-deff-version.html"&gt;安装python以及解决版本问题&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但在安装新版本后，yum不能正常使用了。原因是yum是基于默认的python版本运行的，例如CentOS6.2基于python2.6。但我们安装版本后建立了链接，覆盖掉了默认python调用，导致yum脚本无法正常调用到自己想要的版本。&lt;/p&gt;</description></item><item><title>解决编译时出现“gnu/stubs-64.h: No such file or directory”的问题</title><link>https://www.leelib.com/2013/07/10/gnu-stubs-64-h-no-such-file-or-directory.html</link><pubDate>Wed, 10 Jul 2013 10:12:49 +0800</pubDate><guid>https://www.leelib.com/2013/07/10/gnu-stubs-64-h-no-such-file-or-directory.html</guid><description>&lt;h1 id="这个实际上是系统没有安装-glibc-开发包的问题"&gt;这个实际上是系统没有安装 &lt;strong&gt;glibc&lt;/strong&gt; 开发包的问题&lt;/h1&gt;
&lt;h2 id="ubuntu-x64"&gt;Ubuntu x64&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get install libc6-dev-amd64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="centos-x64"&gt;CentOS x64&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install glibc-devel.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>如何安装新版本python，以及解决安装了新版python后，默认python依然调用旧版本的问题</title><link>https://www.leelib.com/2013/07/10/fix-python-deff-version.html</link><pubDate>Wed, 10 Jul 2013 06:27:35 +0800</pubDate><guid>https://www.leelib.com/2013/07/10/fix-python-deff-version.html</guid><description>&lt;h1 id="安装新版本python"&gt;安装新版本python&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xjf Python-2.7.3.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd Python-2.7.3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./configure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make atlinstall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这时 python2.7.3 版本已经安装成功了。
但调用 &lt;strong&gt;python &amp;ndash;version&lt;/strong&gt; 依然会显示并使用旧版本&lt;/p&gt;
&lt;h1 id="解决办法就是重新建立一个链接并覆盖掉旧的"&gt;解决办法就是重新建立一个链接并覆盖掉旧的&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ln -s /usr/local/bin/python2.7 /usr/bin/python -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再调用 &lt;strong&gt;python &amp;ndash;version&lt;/strong&gt; 显示结果&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# python --version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Python 2.7.3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;至此，问题解决 :)&lt;/p&gt;</description></item><item><title>python的zlib压缩解压缩对应的C语言方式</title><link>https://www.leelib.com/2013/07/02/python-zlib-trans-c.html</link><pubDate>Tue, 02 Jul 2013 15:47:00 +0800</pubDate><guid>https://www.leelib.com/2013/07/02/python-zlib-trans-c.html</guid><description>&lt;h1 id="压缩"&gt;压缩&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enData &lt;span style="color:#f92672"&gt;=&lt;/span&gt; zlib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;compress(data)[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;:&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;对应：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;compress2&lt;/span&gt;(dstbuf, &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;dstLen, strSrc, srcLen, &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="解压"&gt;解压&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;deData &lt;span style="color:#f92672"&gt;=&lt;/span&gt; zlib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decompress(enData, &lt;span style="color:#f92672"&gt;-&lt;/span&gt;zlib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;MAX_WBITS)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;对应：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;gzipInflate&lt;/span&gt;( &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;string&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; compressedBytes, std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;string&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; uncompressedBytes ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ( compressedBytes.&lt;span style="color:#a6e22e"&gt;size&lt;/span&gt;() &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; uncompressedBytes &lt;span style="color:#f92672"&gt;=&lt;/span&gt; compressedBytes ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; true ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; uncompressedBytes.&lt;span style="color:#a6e22e"&gt;clear&lt;/span&gt;() ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; full_length &lt;span style="color:#f92672"&gt;=&lt;/span&gt; compressedBytes.&lt;span style="color:#a6e22e"&gt;size&lt;/span&gt;() ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; half_length &lt;span style="color:#f92672"&gt;=&lt;/span&gt; compressedBytes.&lt;span style="color:#a6e22e"&gt;size&lt;/span&gt;() &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; uncompLength &lt;span style="color:#f92672"&gt;=&lt;/span&gt; full_length ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt; uncomp &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;calloc&lt;/span&gt;( &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;), uncompLength );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; z_stream strm;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.next_in &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (Bytef &lt;span style="color:#f92672"&gt;*&lt;/span&gt;) compressedBytes.&lt;span style="color:#a6e22e"&gt;c_str&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.avail_in &lt;span style="color:#f92672"&gt;=&lt;/span&gt; compressedBytes.&lt;span style="color:#a6e22e"&gt;size&lt;/span&gt;() ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.total_out &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.zalloc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Z_NULL;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.zfree &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Z_NULL;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; done &lt;span style="color:#f92672"&gt;=&lt;/span&gt; false ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;//if (inflateInit2(&amp;amp;strm, (16+MAX_WBITS)) != Z_OK)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;inflateInit2&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;strm, &lt;span style="color:#f92672"&gt;-&lt;/span&gt;MAX_WBITS) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; Z_OK)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;free&lt;/span&gt;( uncomp );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; false;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;done) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// If our output buffer is too small
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (strm.total_out &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; uncompLength ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Increase size of output buffer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt; uncomp2 &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;calloc&lt;/span&gt;( &lt;span style="color:#66d9ef"&gt;sizeof&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;), uncompLength &lt;span style="color:#f92672"&gt;+&lt;/span&gt; half_length );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;memcpy&lt;/span&gt;( uncomp2, uncomp, uncompLength );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; uncompLength &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; half_length ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;free&lt;/span&gt;( uncomp );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; uncomp &lt;span style="color:#f92672"&gt;=&lt;/span&gt; uncomp2 ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.next_out &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (Bytef &lt;span style="color:#f92672"&gt;*&lt;/span&gt;) (uncomp &lt;span style="color:#f92672"&gt;+&lt;/span&gt; strm.total_out);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strm.avail_out &lt;span style="color:#f92672"&gt;=&lt;/span&gt; uncompLength &lt;span style="color:#f92672"&gt;-&lt;/span&gt; strm.total_out;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Inflate another chunk.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; err &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;inflate&lt;/span&gt; (&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;strm, Z_SYNC_FLUSH);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (err &lt;span style="color:#f92672"&gt;==&lt;/span&gt; Z_STREAM_END) done &lt;span style="color:#f92672"&gt;=&lt;/span&gt; true;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (err &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; Z_OK) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;inflateEnd&lt;/span&gt; (&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;strm) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; Z_OK) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;free&lt;/span&gt;( uncomp );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; false;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; ( &lt;span style="color:#66d9ef"&gt;size_t&lt;/span&gt; i&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;strm.total_out; &lt;span style="color:#f92672"&gt;++&lt;/span&gt;i ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; uncompressedBytes &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; uncomp[ i ];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;free&lt;/span&gt;( uncomp );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; true ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Windows下编译使用zlib库的程序时出现“无法解析的外部符号 _compress”解决方案</title><link>https://www.leelib.com/2013/07/01/windows-use-zlib-link-error.html</link><pubDate>Mon, 01 Jul 2013 05:29:47 +0800</pubDate><guid>https://www.leelib.com/2013/07/01/windows-use-zlib-link-error.html</guid><description>&lt;h1 id="错误描述"&gt;错误描述&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;error LNK2019: unresolved external symbol _compress referenced&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;p&gt;在 &lt;strong&gt;#include &amp;lt;zlib.h&amp;gt;&lt;/strong&gt; 之前加上 &lt;strong&gt;#define ZLIB_WINAPI&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#define ZLIB_WINAPI
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;zlib.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>一句话经验zlib</title><link>https://www.leelib.com/2013/06/29/use-zlib-exp.html</link><pubDate>Sat, 29 Jun 2013 04:27:00 +0800</pubDate><guid>https://www.leelib.com/2013/06/29/use-zlib-exp.html</guid><description>&lt;p&gt;Linux使用gcc编译使用zlib库的代码时，使用 &lt;strong&gt;-lz&lt;/strong&gt; 来链接(link) &lt;strong&gt;zlib&lt;/strong&gt; 库。&lt;/p&gt;
&lt;p&gt;否则就会出现类似 &lt;strong&gt;undefined reference to `deflateInit_&amp;rsquo;&lt;/strong&gt; 的错误&lt;/p&gt;</description></item><item><title>Linux调用tcpdump时“tcpdump: USB link-layer type filtering not implemented”解决方案</title><link>https://www.leelib.com/2013/06/08/tcpdump-error.html</link><pubDate>Sat, 08 Jun 2013 03:00:30 +0800</pubDate><guid>https://www.leelib.com/2013/06/08/tcpdump-error.html</guid><description>&lt;p&gt;当调用tcpdump时，出现错误：&lt;strong&gt;tcpdump: USB link-layer type filtering not implemented&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="原因"&gt;原因&lt;/h1&gt;
&lt;p&gt;说明系统可能有多块网卡共存。&lt;/p&gt;
&lt;h1 id="需要指定工作网卡才能开始截包使用参数举例"&gt;需要指定工作网卡才能开始截包，使用参数举例&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# tcpdump -i eth0 udp port 53&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;在实际使用中例子中“eth0”“udp”“53”等参数，要根据实际需要来进行修改。&lt;/em&gt;
&lt;em&gt;虽然一般单网卡默认名称应该是eth0，但也有其他情况。实际中要使用ifconfig查看自己需要使用的网卡。&lt;/em&gt;&lt;/p&gt;</description></item><item><title>gcc迁移到g++出现 inet_addr was not declared in this scope 解决方案</title><link>https://www.leelib.com/2013/06/07/gcc-to-gpp-inet-addr-was-not-declared-in-this-scope.html</link><pubDate>Fri, 07 Jun 2013 14:06:31 +0800</pubDate><guid>https://www.leelib.com/2013/06/07/gcc-to-gpp-inet-addr-was-not-declared-in-this-scope.html</guid><description>&lt;h1 id="错误原因"&gt;错误原因&lt;/h1&gt;
&lt;p&gt;我手上一个项目本身采用gcc编译。后来因为代码功能需要移植到g++中时，出现了 &lt;strong&gt;&amp;ldquo;inet_addr&amp;rdquo; was not declared in this scope&lt;/strong&gt; 这个错误。&lt;/p&gt;
&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 添加该头文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;arpa/inet.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="如果出现下面错误"&gt;如果出现下面错误：&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;error: string: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;error: vector: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;说明在将g++项目用gcc编译&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Linux下编译驱动发现没有内核源码的解决办法</title><link>https://www.leelib.com/2013/06/02/install-kernel-devel.html</link><pubDate>Sun, 02 Jun 2013 12:25:27 +0800</pubDate><guid>https://www.leelib.com/2013/06/02/install-kernel-devel.html</guid><description>&lt;h2 id="centos系统"&gt;CentOS系统&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install -y kernel-devel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ubuntu系统"&gt;Ubuntu系统&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get install linux-source
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上～！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;参考：《或许你不需要整个内核的源代码》 - &lt;a href="http://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source"&gt;http://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Linux下编译驱动代码时smp_lock.h文件找不到的解决方案</title><link>https://www.leelib.com/2013/06/01/compile-can-not-found-smp-lock-h.html</link><pubDate>Sat, 01 Jun 2013 13:07:20 +0800</pubDate><guid>https://www.leelib.com/2013/06/01/compile-can-not-found-smp-lock-h.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2013/06/linux_kernel.webp#center" alt="kernel"&gt;&lt;/p&gt;
&lt;p&gt;项目中有个驱动代码之前在老版本linux系统中编写的
在移植到 &lt;strong&gt;linux-kernel-3.2.0&lt;/strong&gt; 后，编译时出现一处错误 &lt;strong&gt;fatal error: linux/smp_lock.h: No such file or directory&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="解决办法"&gt;解决办法&lt;/h1&gt;
&lt;p&gt;将：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;linux/smp_lock.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;替换成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;linux/hardirq.h&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>解决VS2012编译的程序在WinXP上运行异常</title><link>https://www.leelib.com/2013/05/29/vs2012-build-app-run-in-winxp-failed.html</link><pubDate>Wed, 29 May 2013 02:50:35 +0800</pubDate><guid>https://www.leelib.com/2013/05/29/vs2012-build-app-run-in-winxp-failed.html</guid><description>&lt;p&gt;在写代码的过程中,我发现使用VS2012编译出来的程序默认支持的系统版本略高&lt;/p&gt;
&lt;p&gt;刚发现在 Win7+VS2012 编译出来的程序默认PE信息(Optional Header):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Major SubSystem Version = 6&lt;/li&gt;
&lt;li&gt;Minor SubSystem Version = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;导致的结果就是：在WinXP中运行便会提示 &lt;strong&gt;不是有效的Win32应用程序&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>boost的编译与安装</title><link>https://www.leelib.com/2013/05/27/compile-boost.html</link><pubDate>Mon, 27 May 2013 09:31:57 +0800</pubDate><guid>https://www.leelib.com/2013/05/27/compile-boost.html</guid><description>&lt;h1 id="windows下编译安装"&gt;Windows下编译安装&lt;/h1&gt;
&lt;h2 id="生成bjam"&gt;生成bjam&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bat" data-lang="bat"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bootstrap.bat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="编译"&gt;编译&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bat" data-lang="bat"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bjam --toolset=msvc-11.0 --build-type=complete
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="安装"&gt;安装&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bat" data-lang="bat"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bjam --prefix=D:\third_party\boost install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="ubuntu仅安装开发包"&gt;Ubuntu仅安装开发包&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install -y libboost-dev libboost-system-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>CentOS系统IP设置</title><link>https://www.leelib.com/2013/05/12/centos-set-ip.html</link><pubDate>Sun, 12 May 2013 05:54:24 +0800</pubDate><guid>https://www.leelib.com/2013/05/12/centos-set-ip.html</guid><description>&lt;blockquote&gt;
&lt;p&gt;以最小化安装的CentOS系统默认是不自动设置IP信息的。
我们想要正常访问网络，第一步就必须先把IP设置好。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="设置ip为自动获取"&gt;设置IP为自动获取：&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos ~&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# dhclient eth0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="设置ip为手动填写"&gt;设置IP为手动填写：&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;设置网关&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos ~&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# echo &amp;#39;GATEWAY=&amp;#34;192.168.1.1&amp;#34;&amp;#39; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;设置网卡信息&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos ~&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# echo &amp;#39;DEVICE=&amp;#34;eth0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HWADDR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;00:0C:29:28:F9:88&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NM_CONTROLLED&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;yes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ONBOOT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;yes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BOOTPROTO&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BROADCAST&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;192.168.1.255&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IPADDR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;192.168.1.120&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NETMASK&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;255.255.255.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NETWORK&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;192.168.1.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IPV6INIT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;yes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IPV6_AUTOCONF&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;yes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TYPE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Ethernet&amp;#34;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &amp;gt; /etc/sysconfig/network-scripts/ifcfg-eth0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;设置DNS&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos ~&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# echo &amp;#39;nameserver 8.8.8.8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nameserver 8.8.4.4&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;&amp;gt; /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;重启网络&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@centos ~&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# service network restart&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Shutting down loopback interface: &lt;span style="color:#f92672"&gt;[&lt;/span&gt; OK &lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bringing up loopback interface: &lt;span style="color:#f92672"&gt;[&lt;/span&gt; OK &lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Bringing up interface eth0: &lt;span style="color:#f92672"&gt;[&lt;/span&gt; OK &lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Python执行出现“No module named MySQLdb”解决方案</title><link>https://www.leelib.com/2013/04/05/python-no-module-named-mysqldb.html</link><pubDate>Fri, 05 Apr 2013 14:13:00 +0800</pubDate><guid>https://www.leelib.com/2013/04/05/python-no-module-named-mysqldb.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2013/04/mysqldb_error.webp#center" alt="mysqldb"&gt;&lt;/p&gt;
&lt;p&gt;如果在python程序执行时遇到这个错误提示“&lt;strong&gt;No module named MySQLdb&lt;/strong&gt;”&lt;/p&gt;
&lt;h1 id="这个说明缺少对应的库解决办法是"&gt;这个说明缺少对应的库，解决办法是：&lt;/h1&gt;
&lt;h2 id="mix-os-easy_install"&gt;mix os (easy_install)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;easy_install mysql-python &lt;span style="color:#f92672"&gt;(&lt;/span&gt;mix os&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="mix-os-pip"&gt;mix os (pip)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install mysql-python &lt;span style="color:#f92672"&gt;(&lt;/span&gt;mix os&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ubuntu"&gt;Ubuntu&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get install python-mysqldb &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Linux Ubuntu, ...&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="freebsd"&gt;FreeBSD&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /usr/ports/databases/py-MySQLdb &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; make install clean &lt;span style="color:#f92672"&gt;(&lt;/span&gt;FreeBSD&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="fedora-centos"&gt;Fedora, CentOS&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install MySQL-python &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Linux Fedora, CentOS ...&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;对应后面括号内系统执行相应的命令就可以进行安装&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>博客改名“李略帅”</title><link>https://www.leelib.com/2013/03/19/change-blog-title.html</link><pubDate>Tue, 19 Mar 2013 10:35:04 +0800</pubDate><guid>https://www.leelib.com/2013/03/19/change-blog-title.html</guid><description>&lt;p&gt;&lt;strong&gt;李略帅&lt;/strong&gt; 名字肿么样？&lt;/p&gt;
&lt;p&gt;先改了再说，好让搜索引擎方便收集。后面填内容。&lt;/p&gt;
&lt;p&gt;以上！&lt;/p&gt;</description></item><item><title>让ubuntu 12 desktop版本回归Gnome桌面</title><link>https://www.leelib.com/2013/03/17/back-ubuntu-12-desktop-gnome.html</link><pubDate>Sun, 17 Mar 2013 18:55:21 +0800</pubDate><guid>https://www.leelib.com/2013/03/17/back-ubuntu-12-desktop-gnome.html</guid><description>&lt;p&gt;由于ubuntu 12.04默认采用了Unity界面，对于我这种菜鸟来说用起来很是不顺手，所以搜了一下，发现有办法回归gnome界面。&lt;/p&gt;
&lt;h1 id="安装"&gt;安装&lt;/h1&gt;
&lt;p&gt;在此记录下供自己以及还不了解这个解决办法的人使用。&lt;/p&gt;</description></item><item><title>生成不重复的随机数</title><link>https://www.leelib.com/2013/03/15/no-repeat-random-num.html</link><pubDate>Fri, 15 Mar 2013 13:47:47 +0800</pubDate><guid>https://www.leelib.com/2013/03/15/no-repeat-random-num.html</guid><description>&lt;h1 id="下面代码就可以生成1-100区间的随机数"&gt;下面代码就可以生成1-100区间的随机数：&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;algorithms&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;vector&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; random_numbers;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;unsigned&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;; &lt;span style="color:#f92672"&gt;++&lt;/span&gt;i)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; random_numbers.push_back(i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;std&lt;span style="color:#f92672"&gt;::&lt;/span&gt;random_shuffle(random_numbers.begin(), random_numbers.end());
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>VMware装Win7时网卡驱动问题处理</title><link>https://www.leelib.com/2012/10/21/fix-vmware-win7-no-netcard.html</link><pubDate>Sun, 21 Oct 2012 10:27:59 +0800</pubDate><guid>https://www.leelib.com/2012/10/21/fix-vmware-win7-no-netcard.html</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;用文本编辑器打开虚拟机的vmx文件 例如：Win7.vmx&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解决方法是在文本最后加入如下信息：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethernet0.virtualDev = &amp;#34;e1000&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;记得要先关闭虚拟机哦！&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>正则表达式一句话经验</title><link>https://www.leelib.com/2012/06/03/use-regex.html</link><pubDate>Sun, 03 Jun 2012 16:00:24 +0800</pubDate><guid>https://www.leelib.com/2012/06/03/use-regex.html</guid><description>&lt;h2 id="在正则表达式里想要匹配多行"&gt;在正则表达式里想要匹配多行：&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;([\s\S]*)&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="想要匹配到到一定区域内的内容可以考虑非贪婪匹配"&gt;想要匹配到到一定区域内的内容可以考虑非贪婪匹配:&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;例如想要匹配 “&lt;strong&gt;&amp;lt;object name=&amp;lsquo;暗黑3&amp;rsquo; size=&amp;lsquo;12&amp;rsquo;&amp;gt;&amp;lt;/object&amp;gt;&lt;/strong&gt;” 中的name值“&lt;strong&gt;暗黑3&lt;/strong&gt;”&lt;/p&gt;</description></item><item><title>解决ubuntu下dante不能正常启动的问题</title><link>https://www.leelib.com/2012/05/24/fix-ubuntu-start-dante-error.html</link><pubDate>Thu, 24 May 2012 06:36:37 +0800</pubDate><guid>https://www.leelib.com/2012/05/24/fix-ubuntu-start-dante-error.html</guid><description>&lt;p&gt;首先查看日志文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@ubuntu&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# cat /var/log/danted.log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;发现里面有这样的记录&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;May 24 13:57:52 (1337839072) danted[13596]: socks_seteuid(): old: 0, new: 65534
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;May 24 13:57:52 (1337839072) danted[13596]: socks_reseteuid(): current: 65534, new: 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;May 24 13:57:52 (1337839072) danted[13596]: fixsettings(): setting the libwrap uid to 0 is not recommended
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;May 24 13:57:52 (1337839072) danted[13596]: symbolfunction(): compiletime configuration error? Failed to open &amp;#34;libc.so&amp;#34;: /usr/lib/i386-linux-gnu/libc.so: invalid ELF header
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;说明程序在找/usr/lib/i386-linux-gnu/libc.so位置的libc.so没找到，所以解决办法就是创建一个链接命令如下：&lt;/p&gt;</description></item><item><title>使CMake生成工程采用相对路径</title><link>https://www.leelib.com/2012/05/16/cmake-use-relative-path.html</link><pubDate>Wed, 16 May 2012 03:18:15 +0800</pubDate><guid>https://www.leelib.com/2012/05/16/cmake-use-relative-path.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/05/cmake_ogre.webp#center" alt="cmake"&gt;&lt;/p&gt;
&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;p&gt;在生成项目之前勾选上 &lt;strong&gt;CMAKE_USE_RELATIVE_PATHS&lt;/strong&gt; 这个选项，效果如上图所示。&lt;/p&gt;</description></item><item><title>让RedHat系统使用CentOS的yum</title><link>https://www.leelib.com/2012/04/25/redhat-use-centos-yum.html</link><pubDate>Wed, 25 Apr 2012 10:04:10 +0800</pubDate><guid>https://www.leelib.com/2012/04/25/redhat-use-centos-yum.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/04/redhat.webp#center" alt="redhat"&gt;&lt;/p&gt;
&lt;h1 id="错误原因"&gt;错误原因&lt;/h1&gt;
&lt;p&gt;在使用未注册的 RedHat Linux 企业版时。使用yum命令会出现如下提示：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;root@localhost ~&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#75715e"&gt;# yum install httpd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loaded plugins: rhnplugin, security
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This system is not registered with RHN.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RHN support will be disabled.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up Install Process
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;No package httpd available.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nothing to &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;p&gt;而这种情况可以使用CentOS的yum来代替掉系统本身的yum
脚本如下：&lt;/p&gt;</description></item><item><title>汇编中ROL(循环左移)对应的C语言实现</title><link>https://www.leelib.com/2012/04/24/asm-rol-to-c.html</link><pubDate>Tue, 24 Apr 2012 10:48:29 +0800</pubDate><guid>https://www.leelib.com/2012/04/24/asm-rol-to-c.html</guid><description>&lt;p&gt;在汇编语言中，我们可以直接使用ROL ROR等指令进行循环左移和循环右移的操作。
但C语言中却没有对应的操作，没办法只能自己实现了。&lt;/p&gt;
&lt;h2 id="下面是我最近项目中用到的一个针对word类型的循环左移rol实现代码"&gt;下面是我最近项目中用到的一个针对WORD类型的循环左移(ROL)实现代码：&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;uint16_t&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ROL&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; val, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; n)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; (val &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; n) &lt;span style="color:#f92672"&gt;|&lt;/span&gt; (val &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;16&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; n));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;针对BYTE类型的循环左移：&lt;/p&gt;</description></item><item><title>将M8导出的联系人XML转化成Andriod可以导入的vcf文件</title><link>https://www.leelib.com/2012/04/12/convert-m8-contacts-xml-to-andriod-vcf.html</link><pubDate>Thu, 12 Apr 2012 09:27:17 +0800</pubDate><guid>https://www.leelib.com/2012/04/12/convert-m8-contacts-xml-to-andriod-vcf.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/04/android.webp#center" alt="android"&gt;&lt;/p&gt;
&lt;p&gt;通过我写的一段Python代码可以让M8用户将联系人导入到Andriod系统中。&lt;/p&gt;
&lt;h2 id="操作需要以下步骤"&gt;操作需要以下步骤：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;先用M8PC工具将M8的联系人导出成XML格式。&lt;/li&gt;
&lt;li&gt;将导出的文件重命名为mycontact.xml，并与m8toAndriod.py放到同一目录下&lt;/li&gt;
&lt;li&gt;运行 python m8toAndriod.py 程序会生成一个名为 mycontact.vcf 的文件&lt;/li&gt;
&lt;li&gt;将 mycontact.vcf 传到Andriod手机中导入&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="以下为-m8toandriodpy-的代码"&gt;以下为 m8toAndriod.py 的代码：&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# coding: utf-8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 功能：将M8导出的联系人XML转化成Andriod可以导入的vcf文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 版本：python 2.6 以上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 作者：leaker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 网站：http://www.leelib.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; xml.etree &lt;span style="color:#f92672"&gt;import&lt;/span&gt; ElementTree &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; ET
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 输出到的mycontact.vcf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;out &lt;span style="color:#f92672"&gt;=&lt;/span&gt; file(&lt;span style="color:#e6db74"&gt;&amp;#34;mycontact.vcf&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;root &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ET&lt;span style="color:#f92672"&gt;.&lt;/span&gt;parse(file(&lt;span style="color:#e6db74"&gt;&amp;#34;mycontact.xml&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;r&amp;#34;&lt;/span&gt;))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;getroot()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print root
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; e &lt;span style="color:#f92672"&gt;in&lt;/span&gt; root&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findall(&lt;span style="color:#e6db74"&gt;&amp;#39;Person&amp;#39;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(&lt;span style="color:#e6db74"&gt;&amp;#39;BEGIN:VCARDrnVERSION:3.0rn&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(&lt;span style="color:#e6db74"&gt;&amp;#39;N:&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%s&lt;/span&gt;&lt;span style="color:#e6db74"&gt;;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%s&lt;/span&gt;&lt;span style="color:#e6db74"&gt;;;;rn&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; (e&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findtext(&lt;span style="color:#e6db74"&gt;&amp;#39;LastName&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(&lt;span style="color:#e6db74"&gt;&amp;#39;utf8&amp;#39;&lt;/span&gt;), e&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findtext(&lt;span style="color:#e6db74"&gt;&amp;#39;FirstName&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(&lt;span style="color:#e6db74"&gt;&amp;#39;utf8&amp;#39;&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(&lt;span style="color:#e6db74"&gt;&amp;#39;FN:&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%s&lt;/span&gt;&lt;span style="color:#e6db74"&gt;rn&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; (e&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findtext(&lt;span style="color:#e6db74"&gt;&amp;#39;FileAs&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(&lt;span style="color:#e6db74"&gt;&amp;#39;utf8&amp;#39;&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# print &amp;#39;FN:%srn&amp;#39;% (e.findtext(&amp;#39;FileAs&amp;#39;, &amp;#39;&amp;#39;).encode(&amp;#39;gb2312&amp;#39;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; ee &lt;span style="color:#f92672"&gt;in&lt;/span&gt; root&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findall(&lt;span style="color:#e6db74"&gt;&amp;#39;Phone&amp;#39;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ee&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findtext(&lt;span style="color:#e6db74"&gt;&amp;#39;PersonID&amp;#39;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; e&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findtext(&lt;span style="color:#e6db74"&gt;&amp;#39;ID&amp;#39;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; primary &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ee&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get(&lt;span style="color:#e6db74"&gt;&amp;#39;IsPrimary&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;true&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(&lt;span style="color:#e6db74"&gt;&amp;#39;TEL;TYPE=CELL&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%s&lt;/span&gt;&lt;span style="color:#e6db74"&gt;:&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%s&lt;/span&gt;&lt;span style="color:#e6db74"&gt;rn&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; ((&lt;span style="color:#e6db74"&gt;&amp;#39;;TYPE=PREF&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; primary &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;), ee&lt;span style="color:#f92672"&gt;.&lt;/span&gt;findtext(&lt;span style="color:#e6db74"&gt;&amp;#39;Info&amp;#39;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; out&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(&lt;span style="color:#e6db74"&gt;&amp;#39;END:VCARDrn&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;out&lt;span style="color:#f92672"&gt;.&lt;/span&gt;close()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;点击这里下载：&lt;a href="https://www.leelib.com/wp-content/uploads/2012/04/m8toAndriod.7z"&gt;m8toAndriod.7z&lt;/a&gt;&lt;/p&gt;</description></item><item><title>解决Win7下VS2010不保存“最近使用的项目和解决方案”问题</title><link>https://www.leelib.com/2012/04/07/fix-win7-vs2010-no-recents.html</link><pubDate>Sat, 07 Apr 2012 06:39:59 +0800</pubDate><guid>https://www.leelib.com/2012/04/07/fix-win7-vs2010-no-recents.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/04/VS2010StartPage.webp#center" alt="VS2010"&gt;&lt;/p&gt;
&lt;p&gt;最近因为一些原因开始使用Win7 x64系统。
而使用VS2010的时候发现文件菜单里面竟然没有 &lt;strong&gt;最近使用的项目和解决方案&lt;/strong&gt; 这一项。&lt;/p&gt;
&lt;p&gt;于是网上搜索了半天发现是因为Win7系统中 &lt;strong&gt;组策略-用户配置-管理模板-开始菜单和任务栏&lt;/strong&gt; 里面的：&lt;/p&gt;</description></item><item><title>解决编译freeradius出现 cannot find -lperl 的问题</title><link>https://www.leelib.com/2012/03/27/fixed-issue-freeradius-cannot-find-lperl.html</link><pubDate>Tue, 27 Mar 2012 04:30:09 +0800</pubDate><guid>https://www.leelib.com/2012/03/27/fixed-issue-freeradius-cannot-find-lperl.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/03/lperl.webp#center" alt="lperl"&gt;&lt;/p&gt;
&lt;p&gt;今天因为项目需要，需要编译freeradius来使用。&lt;/p&gt;
&lt;h1 id="错误原因"&gt;错误原因&lt;/h1&gt;
&lt;p&gt;结果在编译过程中出现如上错误 &lt;code&gt;cannot find -lperl&lt;/code&gt;。&lt;/p&gt;
&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;h2 id="centos"&gt;CentOS&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum -y install libtool-perl*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ubuntu"&gt;Ubuntu&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install libperl-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;做个笔记，希望能够帮到遇到这个问题的人。
(o≖◡≖)&lt;/p&gt;</description></item><item><title>仗剑江湖MUD客户端，最新更新ver 1.0 beta</title><link>https://www.leelib.com/2012/03/22/web-mud-client.html</link><pubDate>Thu, 22 Mar 2012 23:48:35 +0800</pubDate><guid>https://www.leelib.com/2012/03/22/web-mud-client.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/images/webmud_1_0.webp#center" alt="webmud"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为一个元老级的MUD游戏开发的一个PC客户端。利用业余时间完成（主要是这阵子要钻研一个很有技术难度的工作，整天要对着封包一个字节一个字节比对，头疼的厉害。）。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>如何使gedit能够编辑和保存到所属root用户的目录中</title><link>https://www.leelib.com/2012/03/20/gedit-saveto-root-dir.html</link><pubDate>Tue, 20 Mar 2012 19:08:43 +0800</pubDate><guid>https://www.leelib.com/2012/03/20/gedit-saveto-root-dir.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/03/gedit.webp#center" alt="gedit"&gt;&lt;/p&gt;
&lt;h1 id="解决方案"&gt;解决方案&lt;/h1&gt;
&lt;p&gt;为了能让gedit能够直接编辑不属于当前用户的文件，我们需要做如下操作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;为gedit创建一个启动器。这个有很多方法，如果不清楚的同学可以跟我一起操作。
具体方法为：找到 &lt;strong&gt;应用程序-附件-文本编辑器&lt;/strong&gt; 点右键选择 &lt;strong&gt;将此启动器添加到面板&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;右键点击刚才我们创建的启动器。选择 &lt;strong&gt;属性&lt;/strong&gt; 将原命令 &lt;strong&gt;gedit %U&lt;/strong&gt; 修改为 &lt;strong&gt;gksudo gedit %U&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;gksudo&lt;/strong&gt; 其实就是对应桌面环境下的 &lt;strong&gt;sudo&lt;/strong&gt; 命令.&lt;/p&gt;</description></item><item><title>网易的Ubuntu更新源</title><link>https://www.leelib.com/2012/03/19/163-ubuntu-apt-sources.html</link><pubDate>Mon, 19 Mar 2012 13:13:20 +0800</pubDate><guid>https://www.leelib.com/2012/03/19/163-ubuntu-apt-sources.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/03/ubuntu_splash.webp#center" alt="splash"&gt;&lt;/p&gt;
&lt;h1 id="步骤"&gt;步骤&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;sudo gedit /etc/apt/sources.list
编辑你的源列表，将原来的内容全部删除并复制下面列表到文件中，然后保存列表。&lt;/li&gt;
&lt;li&gt;sudo apt-get update&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;等第2步完成之后你就可以打开更新管理器更新了
顺便一提 网易的更新速度真的很快，我这里下载600K/s&lt;/p&gt;</description></item><item><title>一个可以在线生成网站favicon图标的网站</title><link>https://www.leelib.com/2012/03/18/favicon-from-pics.html</link><pubDate>Sun, 18 Mar 2012 20:34:12 +0800</pubDate><guid>https://www.leelib.com/2012/03/18/favicon-from-pics.html</guid><description>&lt;p&gt;&lt;img src="https://www.leelib.com/wp-content/uploads/2012/03/favicon.webp#center" alt="FavIcon from Pics"&gt;&lt;/p&gt;
&lt;p&gt;一个可以在线生成网站favicon图标的网站&lt;/p&gt;
&lt;p&gt;网站地址：&lt;a href="http://www.chami.com/html-kit/services/favicon/"&gt;http://www.chami.com/html-kit/services/favicon/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以同时生成静态（&lt;strong&gt;favicon.ico&lt;/strong&gt;）和动态（&lt;strong&gt;animated_favicon1.gif&lt;/strong&gt;）两种图标&lt;/p&gt;</description></item><item><title>文章归档</title><link>https://www.leelib.com/archives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.leelib.com/archives/</guid><description/></item></channel></rss>