<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>TypeCodes</title><link>https://typecodes.com/</link><description>Beauty of programming</description><lastBuildDate>Thu, 12 Mar 2026 14:00:00 +0800</lastBuildDate><item><title>OpenAI限制免费账号（Free Tier）使用gpt-5.3-codex 和 gpt-5.4</title><link>https://typecodes.com/mix/openairemovefreegpt534.html</link><description>&lt;p&gt;2026-03-10 上午发现本地 codex 无法调用 cpa 服务器的 api，于是上 cpa 服务器查看了一下账号，发现已经无法使用 gpt5.4 了。同时 github 和 openai 社区也有反馈免费账号（Free Tier）的用户无法使用 gpt-5.3-codex 和 gpt-5.4。&lt;/p&gt;
{&amp;quot;detail&amp;quot;:&amp;quot;The &amp;#39;gpt-5.3-codex&amp;#39; model is not supported when using Codex with a ChatGPT account.&amp;quot;}
{&amp;quot;detail&amp;quot;:&amp;quot;The &amp;#39;gpt-5.4&amp;#39; model is not supported when using Codex with a ChatGPT account.&amp;quot;}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="openai免费用户无法使用code5.3和5.4" src="https://cdn.typecodes.com/2026/03/openairemovefreegpt534_1.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 12 Mar 2026 14:00:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2026-03-12:/mix/openairemovefreegpt534.html</guid><category>mix</category><category>gtp</category><category>codex</category><category>openai</category></item><item><title>serv00官方4月清理计划和新服务条款</title><link>https://typecodes.com/mix/serv00forbiddennezha.html</link><description>&lt;p&gt;serv00官方在2025-04-03突然发布了&lt;code&gt;02.04.2025 - 06.04.2025&lt;/code&gt;的清理计划【April cleaning and new ToS】，并禁止了&lt;code&gt;fastdownload&lt;/code&gt;、&lt;code&gt;p2p&lt;/code&gt;、&lt;code&gt;盗版&lt;/code&gt;、&lt;code&gt;网络攻击工具/脚本&lt;/code&gt;等内容的托管。&lt;/p&gt;
To maintain the quality of our free services, we will be conducting a series of verification operations.
New points will be added to the list every week.
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 05 Apr 2025 16:01:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2025-04-05:/mix/serv00forbiddennezha.html</guid><category>mix</category><category>serv00</category><category>哪吒探针</category></item><item><title>github workflow构建哪吒探针FreeBSD安装包</title><link>https://typecodes.com/linux/githubworkflownezhafreebsdserv00.html</link><description>&lt;p&gt;之前写了关于&lt;a href="https://typecodes.com/python/serv00ct8nezhav1.html"&gt;如何在serv00/ct8机器上一键安装哪吒探针&lt;/a&gt;的内容，这里主要分享下如何构建这种运行在&lt;code&gt;serv00/ct8&lt;/code&gt;这种&lt;code&gt;FreeBSD&lt;/code&gt;操作系统上的哪吒探针面板二进制安装包。&lt;/p&gt;
&lt;p&gt;当然，也可以直接了当的在github上查看&lt;a href="https://github.com/vfhky/nezha-build"&gt;https://github.com/vfhky/nezha-build&lt;/a&gt;的源代码，也可以直接下载代码构建出来的可用于&lt;code&gt;serv00/ct8&lt;/code&gt;这种&lt;code&gt;FreeBSD&lt;/code&gt;主机的&lt;a href="https://github.com/vfhky/nezha-build/releases"&gt;哪吒面板安装包&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="https://github.com/vfhky/nezha-build" src="https://cdn.typecodes.com/2025/02/githubworkflownezhafreebsdserv00_1.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 09 Feb 2025 18:30:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2025-02-09:/linux/githubworkflownezhafreebsdserv00.html</guid><category>linux</category><category>serv00</category><category>cgo</category><category>哪吒探针</category><category>workflow</category></item><item><title>serv00和ct8上的哪吒探针V1开启Github和Gitee登录</title><link>https://typecodes.com/python/serv00ct8nezhav1githubgiteelogin.html</link><description>&lt;h3&gt;一、背景&lt;/h3&gt;
&lt;p&gt;上篇文章&lt;a href="https://typecodes.com/python/serv00ct8nezhav1.html"&gt;https://typecodes.com/python/serv00ct8nezhav1.html&lt;/a&gt;介绍了如何在serv00/ct8主机上一键安装哪吒探针V1版本（含面板和agent），这次看naiba最近已经增加了&lt;code&gt;Github&lt;/code&gt;和&lt;code&gt;Gitee&lt;/code&gt;等OAuth2认证登录的支持，所以把 &lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt;https://github.com/vfhky/serv00_ct8_nezha&lt;/a&gt; 工程做了跟进升级。&lt;/p&gt;
&lt;p&gt;&lt;img alt="serv00/ct8哪吒探针v1使用Github/Gitee登录" src="https://cdn.typecodes.com/2025/01/serv00_nezha_github_gitee_oauth2.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 04 Jan 2025 13:40:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2025-01-04:/python/serv00ct8nezhav1githubgiteelogin.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>哪吒探针</category></item><item><title>serv00和ct8主机一键安装哪吒探针V1版本和多主机保活</title><link>https://typecodes.com/python/serv00ct8nezhav1.html</link><description>&lt;h3&gt;一、背景&lt;/h3&gt;
&lt;p&gt;上周末L站有佬友反馈之前写的&lt;code&gt;serv00&lt;/code&gt; 和 &lt;code&gt;ct8&lt;/code&gt;一键安装哪吒探针的github项目: &lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt;https://github.com/vfhky/serv00_ct8_nezha&lt;/a&gt;出现无法&lt;code&gt;unzip: Unrecognized archive format&lt;/code&gt;的问题，后面排查是哪吒探针升级到V1版本，导致在github构建freebsd包异常，所以安装失败。&lt;/p&gt;
&lt;p&gt;经过这几天抽空研究，已经完成了哪吒V1版本的freebsd打包以及完成了&lt;code&gt;serv00&lt;/code&gt; 和 &lt;code&gt;ct8&lt;/code&gt;一键安装哪吒探针项目的升级。&lt;/p&gt;
&lt;p&gt;如下图所示，这是在s13机器上的安装v1最新版本哪吒探针的效果：&lt;/p&gt;
&lt;p&gt;&lt;img alt="哪吒探针v1版本" src="https://cdn.typecodes.com/2024/12/serv00_nezha_v1_4.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 11 Dec 2024 20:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-12-11:/python/serv00ct8nezhav1.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category></item><item><title>博客完成Follow.is订阅认证</title><link>https://typecodes.com/mix/blogrssfollowiscertification.html</link><description>&lt;h3&gt;一、前言&lt;/h3&gt;
&lt;p&gt;最近一个RSS订阅&lt;a href="https://follow.is"&gt;follow.is&lt;/a&gt;火了起来，在收到内测邀请码注册后，顺便在上面把博客的订阅也做了认证。&lt;/p&gt;
&lt;p&gt;目前体验下来还可以，界面比较清爽，订阅源比较丰富，美中不足的是目前还没有手Y客户端。&lt;/p&gt;
&lt;p&gt;&lt;img alt="typecodes.com完成follow.is订阅认证" src="https://cdn.typecodes.com/2024/10/typecodes_follow_is_1.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 19 Oct 2024 17:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-10-19:/mix/blogrssfollowiscertification.html</guid><category>mix</category><category>rss</category><category>follow.is</category></item><item><title>serv00和 ct8主机一键安装哪吒探针和多主机保活 (六)</title><link>https://typecodes.com/python/serv00ct8nezha6.html</link><description>&lt;h3&gt;一、前言&lt;/h3&gt;
&lt;p&gt;由于 serv00和ct8主机一键安装哪吒探针的项目(&lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt;github.com/vfhky/serv00_ct8_nezha&lt;/a&gt;)的易用性和功能多样性，目前在github上已经有50多个star了。这期间也有多个大佬反馈使用问题，也都做了一些优化。&lt;/p&gt;
&lt;p&gt;最近有反馈关于哪吒面板没有显示主机区域的&lt;a href="https://github.com/vfhky/serv00_ct8_nezha/issues/3"&gt;PR&lt;/a&gt;，后面排查了一下是因为建构的时候没有打包&lt;code&gt;geoip&lt;/code&gt;库导致的。&lt;/p&gt;
&lt;p&gt;它和之前另外一个大佬反馈的dashboard面板可能耗时很长的问题其实都是出在dashboard的安装包上，，所以蹭周末有时间一并解决一下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="修复哪吒面板没有显示主机区域" src="https://cdn.typecodes.com/2024/10/nezha_area_icon.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 13 Oct 2024 15:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-10-13:/python/serv00ct8nezha6.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category></item><item><title>博客切换到Cloudflare并使用免费域名进行DNS解析优选</title><link>https://typecodes.com/mix/blogcloudflaredns.html</link><description>&lt;h3&gt;一、前言&lt;/h3&gt;
&lt;p&gt;大概 6 月份的时候，博客把 typecodes.com 域名解析迁移到了 Cloudflare。但是如果直接使用 Cloudflare 的解析，在国内的效果基本相当于 “减速器”，所以得需要对域名的 dns 解析进行优选。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Cloudflare域名优选后的效果" src="https://cdn.typecodes.com/2024/09/cloudflare_cloudns_result.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 29 Sep 2024 21:30:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-09-29:/mix/blogcloudflaredns.html</guid><category>mix</category><category>博客成长录</category><category>cloudflare</category><category>cloudns</category></item><item><title>serv00和 ct8主机一键安装哪吒探针和多主机保活 (五)</title><link>https://typecodes.com/python/serv00ct8nezha5.html</link><description>&lt;h3&gt;一、前言&lt;/h3&gt;
&lt;p&gt;前文 &lt;a href="https://typecodes.com/python/serv00ct8nezha4.html"&gt;serv00和ct8主机一键安装哪吒探针和多主机保活(四) - TypeCodes&lt;/a&gt; 介绍了如何 &lt;code&gt;utils.sh&lt;/code&gt; 脚本的使用方法，例如修改配置等等，那么这篇文章主要是介绍新增的哪吒面板数据库&lt;code&gt;sqlite.db&lt;/code&gt;的备份功能。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt;github.com/vfhky/serv00_ct8_nezha&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="哪吒面板数据库备份" src="https://cdn.typecodes.com/2024/09/serv00_ct8_nezha_backup_aliyun.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 07 Sep 2024 16:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-09-07:/python/serv00ct8nezha5.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category></item><item><title>serv00和 ct8主机一键安装哪吒探针和多主机保活 (四)</title><link>https://typecodes.com/python/serv00ct8nezha4.html</link><description>&lt;h3&gt;一、工具说明&lt;/h3&gt;
&lt;p&gt;前文 &lt;a href="https://typecodes.com/python/serv00ct8nezha3.html"&gt;serv00和ct8主机一键安装哪吒探针和多主机保活(三) - TypeCodes&lt;/a&gt; 介绍了如何使用青龙面板进行保活，这一篇文章主要是介绍 &lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt; https://github.com/vfhky/serv00_ct8_nezha &lt;/a&gt;项目中的 &lt;code&gt;utils.sh&lt;/code&gt; 脚本工具。&lt;/p&gt;
&lt;p&gt;&lt;img alt="utils.sh脚本工具" src="https://cdn.typecodes.com/2024/09/serv00_ct8_nezha_utils.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 01 Sep 2024 18:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-09-01:/python/serv00ct8nezha4.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category><category>青龙</category></item><item><title>serv00和ct8主机一键安装哪吒探针和多主机保活(三)</title><link>https://typecodes.com/python/serv00ct8nezha3.html</link><description>&lt;h3&gt;一、青龙面板&lt;/h3&gt;
&lt;p&gt;前文 &lt;a href="https://typecodes.com/python/serv00ct8nezha2.html"&gt;serv00和ct8主机一键安装哪吒探针和多主机保活(二) - TypeCodes&lt;/a&gt; 介绍了 &lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt; https://github.com/vfhky/serv00_ct8_nezha &lt;/a&gt; 项目的架构，这一篇文章主要是介绍如何使用青龙面板来调用项目监控进程和主机保活。&lt;/p&gt;
&lt;p&gt;&lt;img alt="青龙面板执行定时任务" src="https://cdn.typecodes.com/2024/08/serv00_ct8_nezha_qinglong_log.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 27 Aug 2024 20:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-08-27:/python/serv00ct8nezha3.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category><category>青龙</category></item><item><title>serv00和ct8主机一键安装哪吒探针和多主机保活(二)</title><link>https://typecodes.com/python/serv00ct8nezha2.html</link><description>&lt;h3&gt;一、项目的简单架构说明&lt;/h3&gt;
&lt;p&gt;前文 &lt;a href="https://typecodes.com/python/serv00ct8nezha.html"&gt;serv00和ct8主机一键安装哪吒探针和多主机保活 - TypeCodes&lt;/a&gt; 介绍了 &lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt;https://github.com/vfhky/serv00_ct8_nezha&lt;/a&gt; 项目的使用方法，这一篇文章简要通过两个流程图来说明一下整个项目的大体流程。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 25 Aug 2024 20:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-08-25:/python/serv00ct8nezha2.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category></item><item><title>serv00和ct8主机一键安装哪吒探针和多主机保活</title><link>https://typecodes.com/python/serv00ct8nezha.html</link><description>&lt;h3&gt;一、背景&lt;/h3&gt;
&lt;p&gt;基于 &lt;code&gt;serv00&lt;/code&gt; 和 &lt;code&gt;ct8&lt;/code&gt; 这种配置较低的主机，比较适合用来做探针。目前还没发现能自动安装哪吒面板和 agent 客户端的脚本，以及多主机间动态保活，所以写了这个 github 项目: &lt;a href="https://github.com/vfhky/serv00_ct8_nezha"&gt;https://github.com/vfhky/serv00_ct8_nezha&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="企业微信机器人通知" src="https://cdn.typecodes.com/2024/08/serv00_ct8_nezha_6.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 25 Aug 2024 10:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-08-25:/python/serv00ct8nezha.html</guid><category>python</category><category>serv00</category><category>ct8</category><category>探针</category></item><item><title>在serv00主机上安装哪吒探针</title><link>https://typecodes.com/linux/server00installnezha.html</link><description>&lt;h3&gt;一、探针&lt;/h3&gt;
&lt;p&gt;前段时间申请了 serv00 主机一直闲置没有用，但是这个主机的配置比较低（512 M 内存），所以准备用来装个工具类的小应用。&lt;/p&gt;
&lt;p&gt;之前使用 &lt;code&gt;Uptime Kuma&lt;/code&gt; 创建了一个比较全能的探针：&lt;a href="https://status.typecodes.com/status/web"&gt;web monitor&lt;/a&gt; ，看着哪吒探针使用量也比较大，于是选择在 server00 主机上安装了一下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="pelican 博客生成时增加 gitcommit 和 cicd 信息" src="https://cdn.typecodes.com/2024/07/nezha.png"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 28 Jul 2024 15:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-07-28:/linux/server00installnezha.html</guid><category>linux</category><category>serv00</category><category>ct8</category><category>探针</category></item><item><title>一款基于typecho官网的pelican主题</title><link>https://typecodes.com/mix/pelicantypechotheme.html</link><description>&lt;h3&gt;一、主题说明&lt;/h3&gt;
&lt;p&gt;一款用于 pelcian 博客的主题，移植自 &lt;a href="https://typecho.org/"&gt;Typecho&lt;/a&gt; 官网的皮肤，所以取名为 &lt;code&gt;pelican-typecho&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;同时也支持谷歌站内搜索、disqus 评论等，目前&lt;a href="https://typecodes.com"&gt;我自己的博客&lt;/a&gt;也在用，欢迎大家体验。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 08 May 2024 20:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-05-08:/mix/pelicantypechotheme.html</guid><category>mix</category><category>博客成长录</category><category>typecho</category></item><item><title>给博客(pelican)增加git提交和自动构建信息</title><link>https://typecodes.com/mix/pelicanaddgitcommitcicdinfo.html</link><description>&lt;h3&gt;一、pelican 的构建和生成：&lt;/h3&gt;
&lt;p&gt;博客使用的是 &lt;code&gt;pelican&lt;/code&gt; 开源静态博客系统，之前每次生成 html 代码都需要手动在服务器上用脚本生成的。也就是每次新增或者修改了文章都需要手工去执行脚本，然后发布到 nginx 目录。&lt;/p&gt;
&lt;p&gt;鉴于每次的生成流程过于繁琐，所以最近考虑把博客的生成过程改用自动构建，同时在博客底部栏增加 &lt;code&gt;git commit&lt;/code&gt; 和 &lt;code&gt;自动构建&lt;/code&gt; 的信息。效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="pelican 博客生成时增加 gitcommit 和 cicd 信息" src="https://cdn.typecodes.com/2024/05/pelicanaddgitcommitcicdinfo.png" title="pelican 博客生成时增加 gitcommit 和 cicd 信息"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 04 May 2024 15:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2024-05-04:/mix/pelicanaddgitcommitcicdinfo.html</guid><category>mix</category><category>博客成长录</category><category>cicd</category></item><item><title>使用ChatGPT对GitHub项目进行CodeReview</title><link>https://typecodes.com/python/chatgptcodereview.html</link><description>&lt;p&gt;前段时间兴起的 ChatGPT 热，跟风研究了一些应用方向。七月份的时候刚好自己打算写一个简易的 redis sentinel 数据解析的服务端项目，于是想用 ChatGPT 的对话模式来对提交的 git 代码进行 review。将近两个月使用下来，自己觉得 review 效果还不错。&lt;/p&gt;
&lt;p&gt;&lt;img alt="使用ChatGPT进行CodeReview" src="https://cdn.typecodes.com/2023/09/chatgptcodereview1.png" title="使用ChatGPT进行CodeReview"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 01 Sep 2023 22:47:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2023-09-01:/python/chatgptcodereview.html</guid><category>python</category><category>ChatGPT</category><category>github</category></item><item><title>Linux C/C++工程中可生成 ELF、动/静态库文件的通用 Makefile（二）</title><link>https://typecodes.com/cseries/cppgeneralmakefile2.html</link><description>&lt;p&gt;今天对之前写的 &lt;a href="https://typecodes.com/cseries/cppgeneralmakefile.html"&gt;Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile - TypeCodes&lt;/a&gt; 文章里面的 Makefile 进行了优化，增加了在当前目录生成单个可执行文件的功能。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux C/C++工程中可生成 ELF、动/静态库文件的通用 Makefile（二）" src="https://cdn.typecodes.com/2023/06/infoflow_2023-6-4_14-32-13.png" title="Linux C/C++工程中可生成 ELF、动/静态库文件的通用 Makefile（二）"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 04 Jun 2023 10:27:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2023-06-04:/cseries/cppgeneralmakefile2.html</guid><category>cseries</category><category>makefile</category></item><item><title>utuntu22.04安装含brotli模块的Ningx</title><link>https://typecodes.com/linux/ubuntu2204installbrotlinginx.html</link><description>&lt;h4&gt;一、更新源：&lt;/h4&gt;
/etc/apt/sources.list.bak

&lt;span class="c1"&gt;### 替换成阿里云的源&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;bash&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; apt update &lt;/span&gt;
&lt;span class="s2"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse&lt;/span&gt;
&lt;span class="s2"&gt;EOF&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;### 重启&lt;/span&gt;
reboot

&lt;span class="c1"&gt;### 更新&lt;/span&gt;
apt&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;upgrade&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;dpkg-dev
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 29 May 2023 22:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2023-05-29:/linux/ubuntu2204installbrotlinginx.html</guid><category>linux</category><category>nginx</category><category>brotli</category></item><item><title>使用shell脚本导出MySql查询的月表数据到EXCEL中</title><link>https://typecodes.com/linux/exportmysqlshell1.html</link><description>&lt;p&gt;经常会踫到这样的场景需求：自定义时间从MySql流水月表中&lt;code&gt;SELECT&lt;/code&gt;出来数据到excel报表文件中，所以自己写了这个shell脚本来处理。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 02 Aug 2020 22:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2020-08-02:/linux/exportmysqlshell1.html</guid><category>linux</category><category>mysql</category></item><item><title>使用shell脚本批量插入数据到MySQL中</title><link>https://typecodes.com/linux/batchinsertmysqlshell1.html</link><description>&lt;p&gt;经常会踫到这样的场景需求：批量向MySQL数据库插入数据，显然手工&lt;code&gt;INSERT&lt;/code&gt;成千上万条数据是不现实的，所以自己写了这个shell脚本来处理。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 15 Apr 2020 22:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2020-04-15:/linux/batchinsertmysqlshell1.html</guid><category>linux</category><category>mysql</category></item><item><title>Python脚本上传博客自定义的SSL证书到七牛云</title><link>https://typecodes.com/python/qiniuletssl1.html</link><description>&lt;p&gt;博客图片域名(&lt;code&gt;cnd.typecodes.com&lt;/code&gt;)的SSL证书是通过Let's Encrypt申请的，因为证书有效期为3个月，所以需要用脚本定时去重新申请。&lt;/p&gt;
&lt;p&gt;重新申请证书主要步骤为：&lt;/p&gt;

&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="err"&gt;、&lt;/span&gt;&lt;span class="n"&gt;先把图片域名DNS解析到源主机上&lt;/span&gt;&lt;span class="err"&gt;，&lt;/span&gt;&lt;span class="n"&gt;重新申请Let&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Encrypt证书&lt;/span&gt;&lt;span class="err"&gt;；&lt;/span&gt;
&lt;span class="mf"&gt;3&lt;/span&gt;&lt;span class="err"&gt;、&lt;/span&gt;&lt;span class="n"&gt;把申请到的SSL证书上传到七牛云的证书管理平台并启用&lt;/span&gt;&lt;span class="err"&gt;；&lt;/span&gt;
&lt;span class="mf"&gt;4&lt;/span&gt;&lt;span class="err"&gt;、&lt;/span&gt;&lt;span class="n"&gt;把图片域名DNS重新解析到七牛云上&lt;/span&gt;&lt;span class="err"&gt;；&lt;/span&gt;
&lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="err"&gt;、&lt;/span&gt;&lt;span class="n"&gt;最后重启源主机的Nginx服务&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;在&lt;a href="https://typecodes.com/python/aliyundnsanalysis1.html" title="《脚本自动切换博客图片域名在阿里云的DNS解析》"&gt;上篇文章&lt;/a&gt;中使用Python脚本来切换DNS的解析，也就是实现了上面的2、4步骤；这篇文章主要是用Python脚本来上传SSL证书到七牛云上，也就是实现上面的步骤3。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 23 Jun 2019 23:55:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2019-06-23:/python/qiniuletssl1.html</guid><category>python</category><category>七牛</category><category>letssl</category></item><item><title>脚本自动切换博客图片域名在阿里云的DNS解析</title><link>https://typecodes.com/python/aliyundnsanalysis1.html</link><description>&lt;p&gt;自从&lt;a href="https://portal.qiniu.com/qvm/active?code=1380335858lRVi" title="查看优惠码"&gt;七牛&lt;/a&gt;开放了自定义SSL证书服务后，博主就通过&lt;code&gt;CNAME&lt;/code&gt;方式把博客图片对应的域名&lt;code&gt;cdn.typecodes.com&lt;/code&gt;解析到了七牛，然后把Let's Encrypt申请的SSL证书上传到七牛服务器。&lt;/p&gt;
&lt;p&gt;但是Let's Encrypt的证书有效期只有3个月，所以到期后需要先把域名重新解析到原来的主机服务器，然后重新申请证书。申请通过后再把域名解析到七牛，同时上传并启用新SSL证书。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 01 Jun 2019 15:28:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2019-06-01:/python/aliyundnsanalysis1.html</guid><category>python</category><category>阿里云</category><category>dns</category><category>七牛</category></item><item><title>使用 fastjson 解析json中的键值：乱序和原样输出</title><link>https://typecodes.com/java/fastjsonorder1.html</link><description>&lt;p&gt;最近项目需要做一个java版本的demo，简单来做就是按照api文档拼装请求报文请求自己的服务端，收到应答报文后做MD5签名验证等后续处理。由于客户端和服务端之前通讯报文是json格式的，那么就会涉及到json报文的生成和解析。网上找了下，貌似阿里巴巴的&lt;code&gt;fastjson&lt;/code&gt;库评价不错，所以就直接拿过来用了。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 22 Jan 2019 17:21:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2019-01-22:/java/fastjsonorder1.html</guid><category>java</category><category>fastjson</category></item><item><title>Python自动析构时出现Exception AttributeError: 'NoneType' object has no attribute的问题</title><link>https://typecodes.com/python/destrutionattributeerrornonetype1.html</link><description>&lt;p&gt;昨晚在整理自己的python脚本的时候，想把其中一个脚本中的&lt;code&gt;print&lt;/code&gt;函数全都改成&lt;code&gt;logging&lt;/code&gt;包中的相关函数。改完后一运行却出现了&lt;code&gt;Exception AttributeError: 'NoneType' object has no attribute&lt;/code&gt;的错误，网上搜了一下没找到相关答案。上午再想了想，原因应该是跟python对象的析构有关，具体分析过程如下：&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 19 Dec 2018 11:45:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-12-19:/python/destrutionattributeerrornonetype1.html</guid><category>python</category><category>AttributeError</category><category>NoneType</category></item><item><title>awk中符点型小数去掉小数点转换成整数的方法</title><link>https://typecodes.com/linux/awkdecimaltoint1.html</link><description>&lt;p&gt;在写shell脚本时，会遇到要把一个符点数转换成整数的情况。之前线上一个shell脚本在用awk从文本中读取出一个带两位小数的符点数后，是直接把它乘以100转换成整数的。脚本一直运行正常，直到后面遇到了一个符点数&lt;code&gt;19004.44&lt;/code&gt;，它在乘以100后得到的不是&lt;code&gt;1900444&lt;/code&gt;而是科学记数&lt;code&gt;1.90044e+06&lt;/code&gt;，导致导入数据库失败。后面测试发现符点数&lt;code&gt;19004.42&lt;/code&gt;也存在同样的问题，如果下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img alt="awk中符点型小数去掉小数点转换成整数的方法" src="https://cdn.typecodes.com/2018/03/awkdecimaltoint1_1.png" title="awk中符点型小数去掉小数点转换成整数的方法"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 28 Mar 2018 23:12:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-03-28:/linux/awkdecimaltoint1.html</guid><category>linux</category><category>shell</category><category>awk</category></item><item><title>MySQL5.7中使用GROUP_CONCAT数据被截断的问题</title><link>https://typecodes.com/database/mysql57groupconcattruncated.html</link><description>&lt;p&gt;前天在生产环境中遇到一个问题：使用&lt;code&gt;GROUP_CONCAT&lt;/code&gt;函数select出来的数据被截断了，最长长度不超过1024字节，开始还以为是navicat客户端自身对字段长度做了限制的问题。后面故意重新INSERT了一个字段长度超1024字节的数据，但是navicat能完整展示出来，所以就排除了navicat的问题。&lt;/p&gt;
&lt;p&gt;然后想到1024这个熟悉的数字，会不会是C++框架在接收MySQL通过socket传输过来的数据时被处理了呢？于是手工在日志中打印这个字段，发现即使数据长度超过1024字节仍然是可以完整显示的。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 14 Mar 2018 23:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-03-14:/database/mysql57groupconcattruncated.html</guid><category>database</category><category>mysql</category></item><item><title>分布式系统：一致性hash算法的应用</title><link>https://typecodes.com/python/consistenthashdistributed1.html</link><description>&lt;p&gt;前段时间在了解分布式，发现firefoxbug在博客中写的这篇&lt;a href="http://www.firefoxbug.com/index.php/archives/2791/" title="查看原文"&gt;《一致性hash在分布式系统中的应用》&lt;/a&gt;对这个问题说明得比较清晰易懂，本文主要是自己的理解和实践。&lt;/p&gt;
&lt;p&gt;在后端一般会遇到这样的场景：随着应用系统的访问量或者DB/文件存储系统的数据量增大，系统由于负载增大而出现响应延迟甚至down掉的情况。为了解决这个问题，往往会对系统采用垂直扩展和水平扩展的架构设计，而分布式系统正是水平扩展架构的一种应用实践。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 17 Feb 2018 00:13:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-02-17:/python/consistenthashdistributed1.html</guid><category>python</category><category>hash</category><category>分布式</category></item><item><title>使用shell脚本解决Navicat导出excel数据不全的问题</title><link>https://typecodes.com/linux/navicatxportoverflow1.html</link><description>&lt;p&gt;月末需要对系统注册用户进行报表统计，在使用Navicat从MySQL数据库中导出数据到excel文件时，发现最大只能导出为65536（美好的数字）行的数据。按理说 Navicat应该是从数据库中读取一条记录会立即写到excel文件中，不应该只读取65536范围内的数据然后一次性写到文件里面。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 07 Feb 2018 20:10:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-02-07:/linux/navicatxportoverflow1.html</guid><category>linux</category><category>navicat</category><category>mysql</category></item><item><title>修复CentOS7升级Python到3.6版本后yum不能使用的问题（续）</title><link>https://typecodes.com/linux/python3caseyumbug2.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/linux/python3caseyumbug.html" title="《修复CentOS7升级Python到3.6版本后yum不能使用的问题》"&gt;上一篇文章&lt;/a&gt;中通过重装yum解决了无法使用Python3解释执行的问题，但是&lt;code&gt;yum -y update&lt;/code&gt;后又会使得之前设置的软链接（&lt;code&gt;ln -s /usr/local/bin/python3.6 /usr/bin/python&lt;/code&gt;）被替换成python2.7。为了把Python3设置为默认py解释器的同时保证yum能正常使用，还得从yum相关脚本下手。&lt;/p&gt;
&lt;p&gt;不难猜测这些脚本都是使用py2语法，如果能把它们声明的解释器改成python2，那么问题就迎刃而解了。搜索了一下，发现在&lt;code&gt;/usr/bin/&lt;/code&gt;目录有7个yum相关的脚本，再加上前文提到的&lt;code&gt;/usr/libexec/urlgrabber-ext-down&lt;/code&gt;共8个。&lt;/p&gt;
&lt;p&gt;&lt;img alt="yum相关脚本" src="https://cdn.typecodes.com/2018/01/python3caseyumbug2_1.png" title="yum相关脚本"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 28 Jan 2018 18:35:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-01-28:/linux/python3caseyumbug2.html</guid><category>linux</category><category>yum</category><category>python</category></item><item><title>修复CentOS7升级Python到3.6版本后yum不能使用的问题</title><link>https://typecodes.com/linux/python3caseyumbug.html</link><description>&lt;p&gt;之前把现有这台阿里CentOS7.2系统的Python2.7.5升级成Python3.6后，yum工具就不能使用了。当时网上查了下原因，都说是Python3导致的，但是试了很多种方法还是没解决，后面也就一直没管了。因为最近要弄一个Nodejs微信小程序，需要用yum安装一些开发工具，就不得不修复这个问题了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS7.2中Python3版本导致yum不能使用" src="https://cdn.typecodes.com/2018/01/centos7.2_yum_python3.6_python2.7.png" title="CentOS7.2中Python3版本导致yum不能使用"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 25 Jan 2018 23:01:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2018-01-25:/linux/python3caseyumbug.html</guid><category>linux</category><category>yum</category><category>python</category></item><item><title>Linux C/C++多进程同时写一个文件（三）</title><link>https://typecodes.com/cseries/linuxmutilprocesswrite3.html</link><description>&lt;p&gt;本文是这《Linux C/C++多进程同时写一个文件》系列文章的第三篇，&lt;a href="https://typecodes.com/cseries/linuxmutilprocesswrite2.html" title="查看原文"&gt;上一篇文章&lt;/a&gt;演示了两个亲缘关系的进程（父子进程）同时写一个文件的情形，并得出了&lt;code&gt;数据只会错乱但不会覆盖&lt;/code&gt;的结论。这篇文章主要是在&lt;a href="https://typecodes.com/cseries/linuxmutilprocesswrite1.html" title="查看原文"&gt;第一篇文章&lt;/a&gt;的基础上，加上上篇文章的分析，更深下一步地探索两个非亲缘关系的进程同时写一个文件的问题。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 29 Oct 2017 22:23:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-10-29:/cseries/linuxmutilprocesswrite3.html</guid><category>cseries</category><category>多进程</category><category>文件读写</category></item><item><title>Linux C/C++多进程同时写一个文件（二）</title><link>https://typecodes.com/cseries/linuxmutilprocesswrite2.html</link><description>&lt;p&gt;本文是这《Linux C/C++多进程同时写一个文件》系列文章的第二篇，&lt;a href="https://typecodes.com/cseries/linuxmutilprocesswrite1.html" title="查看原文"&gt;上一篇文章&lt;/a&gt;演示了两个非亲缘关系的进程同时写一个文件的情形，并得出了&lt;code&gt;数据只会错乱但不会覆盖&lt;/code&gt;的结论。这篇文章主要是讨论两个亲缘进程（fork）同时写一个文件的情况。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 29 Oct 2017 21:23:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-10-29:/cseries/linuxmutilprocesswrite2.html</guid><category>cseries</category><category>多进程</category><category>文件读写</category></item><item><title>Linux C/C++多进程同时写一个文件（一）</title><link>https://typecodes.com/cseries/linuxmutilprocesswrite1.html</link><description>&lt;p&gt;近期会写关于《Linux C/C++多进程同时写一个文件》的系列文章，主要是探索在Linux下非亲缘关系的多进程和具有亲缘关系的多进程同时写一个文件的问题。例如，当两个进程同时写一个文件，那么写入结果是怎样的呢？是否会出现数据丢失的情况？是否会出现覆盖？是否会出现错乱？&lt;/p&gt;
&lt;p&gt;本文是这一系列文章的第一篇，通过两个非亲缘关系的进程演示同时写一个文件的情形，最终得出结论、回答上面的问题。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 28 Oct 2017 13:23:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-10-28:/cseries/linuxmutilprocesswrite1.html</guid><category>cseries</category><category>多进程</category><category>文件读写</category></item><item><title>Linux C++简单实现一个批量插入的sql脚本生成工具</title><link>https://typecodes.com/cseries/genmysqlinsertsql.html</link><description>&lt;p&gt;之前项目上隔三差五地要手工批量导入一些数据，于是自己用C++写了这个sql脚本文件的生成工具。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux C++简单实现一个批量插入的sql脚本生成工具" src="https://cdn.typecodes.com/2017/10/genmysqlinsertsql_2.png" title="Linux C++简单实现一个批量插入的sql脚本生成工具"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 18 Oct 2017 23:29:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-10-18:/cseries/genmysqlinsertsql.html</guid><category>cseries</category><category>mysql</category><category>c++11</category></item><item><title>CentOS7.3使用CMake编译安装最新的LLVM和Clang4.0.1</title><link>https://typecodes.com/linux/cmakellvmclang4.html</link><description>&lt;p&gt;前段时间试了把虚拟机CentOS下面的C/C++工程中的Makefile文件改用clang/clang++来编译，这篇文章主要是介绍如何在CentOS7.3系统编译安装最新的LLVM和Clang4.0.1。&lt;/p&gt;
&lt;p&gt;关于GCC、LLVM和Clang关系可以参考&lt;a href="http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html" title="查看原文"&gt;《这篇文章》&lt;/a&gt;，个人的理解如下：&lt;/p&gt;
LLVM 是 Low Level Virtual Machine 的简称，这个库提供了与编译器相关的支持，能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;而从&lt;a href="http://clang.llvm.org/" title="点击查看"&gt;clang官网&lt;/a&gt;的介绍可以看出，clang的目标是创建一种新的基于C语言的LLVM编译器的前端（应该是提供词法分析、语法检测等功能）。&lt;/p&gt;
.
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 07 Oct 2017 21:59:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-10-07:/linux/cmakellvmclang4.html</guid><category>linux</category><category>CMake</category><category>clang</category></item><item><title>Typecho同步新浪微博的插件（可提取文章图片作配图）</title><link>https://typecodes.com/mix/typechosynweibo.html</link><description>&lt;p&gt;由于博客在2015-12-10已经从Typecho转到了Pelican，所以把这个Typecho同步新浪微博的插件放在Github上后就一直也没管了。最近有同学在Github上提了&lt;a href="https://github.com/vfhky/WeiboSync/issues" title="查看issue"&gt;issue&lt;/a&gt;，于是写了这篇文章对插件作了详细说明，希望对大家有帮助。&lt;/p&gt;
&lt;p&gt;插件基于&lt;a href="http://open.weibo.com" title="点击查看"&gt;新浪微博开放平台&lt;/a&gt;最新的&lt;code&gt;OAuth2&lt;/code&gt;认证方式调用相关API接口把文章同步到微博上。微博发布后，会显示来源（也即应用名称，如下图BZ的是&lt;code&gt;TypeCodes&lt;/code&gt;）以及缩略图（需要在插件后台设置）。&lt;/p&gt;
&lt;p&gt;&lt;img alt="博客文章同步到新浪微博的效果" src="https://cdn.typecodes.com/2015/08/blog_synchronize_weibo.png" title="博客文章同步到新浪微博的效果"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 04 Jul 2017 22:52:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-07-04:/mix/typechosynweibo.html</guid><category>mix</category><category>博客成长录</category><category>新浪微博开放平台</category><category>typecho插件</category></item><item><title>shell遍历输出两个日期范围内所有的日期</title><link>https://typecodes.com/linux/alldateduringtwodays1.html</link><description>&lt;p&gt;在平常c/c++开发中经常遇到日期处理的情形，例如求两个给定的日期之间相差的天数或者需要使用map存储两个固定日期范围内的所有日期。前段时间项目中需要用shell脚本批量处理给定的两个日期范围内所有日期产生的日志，当时以为shell处理不方便就用c++来处理了。后面用shell实现了下，发现也挺简单的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="shell遍历输出两个日期范围内所有的日期" src="https://cdn.typecodes.com/2017/06/alldateduringtwodays1_1.png" title="shell遍历输出两个日期范围内所有的日期"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 22 Jun 2017 22:48:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-06-22:/linux/alldateduringtwodays1.html</guid><category>linux</category><category>traverse</category></item><item><title>使用sed和awk查找和替换字符串处理Makefile文件（三）</title><link>https://typecodes.com/linux/sedawkfindreplace3.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/linux/sedawkfindreplace2.html" title="《使用sed和awk查找和替换字符串处理Makefile文件（二）》"&gt;前文&lt;/a&gt;中演示了使用awk和sed命令正则查找和替换&lt;a href="https://typecodes.com/cseries/cppgeneralmakefile.html" title="《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》"&gt;Makefile&lt;/a&gt;文件中的&lt;code&gt;make clean&lt;/code&gt;操作规则：把&lt;code&gt;-$(RM) $(ULT_BIN)&lt;/code&gt;和&lt;code&gt;-$(RM) $(ULT_BIN)&lt;/code&gt;这两句写成一句&lt;code&gt;-$(RM)  $(ULT_BIN) $(ULT_BIN)&lt;/code&gt;，这篇文件主要是通过&lt;code&gt;sed&lt;/code&gt;和&lt;code&gt;awk&lt;/code&gt;命令继续优化该Makefile文件。&lt;/p&gt;
&lt;p&gt;&lt;img alt="使用sed和awk查找和替换字符串处理Makefile文件（三）" src="https://cdn.typecodes.com/2017/05/sedawkfindreplace3_awk_sed_find_1.png" title="使用sed和awk查找和替换字符串处理Makefile文件（三）"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 22 May 2017 23:45:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-05-22:/linux/sedawkfindreplace3.html</guid><category>linux</category><category>sed</category><category>awk</category><category>Makefile</category></item><item><title>使用C++ STL库统计一散文中单词出现次数和行号</title><link>https://typecodes.com/cseries/stlcalcarticlewordlines1.html</link><description>&lt;p&gt;在开发过程中经常会遇到文件处理的情形，例如统计一篇文章单词的数量、行数、出现频率最高的几个单词等等。这篇文章主要通过C++来解析一篇文章，实现每个单词（不区分大小写）出现的总次数和出现的行号的统计。&lt;/p&gt;
&lt;p&gt;&lt;img alt="使用C++ STL库统计一散文中单词出现次数和行号" src="https://cdn.typecodes.com/2017/04/stlcalcarticlewordlines1_1.png" title="使用C++ STL库统计一散文中单词出现次数和行号"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 16 Apr 2017 16:44:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-04-16:/cseries/stlcalcarticlewordlines1.html</guid><category>cseries</category><category>stl</category></item><item><title>Linux C++使用函数模板实现JSON数据快速和完整写入到文件</title><link>https://typecodes.com/cseries/templatejsoncpp2file1.html</link><description>&lt;p&gt;昨天在自己的CentOS7机器上编译了JSONCPP库，然后根据api写了下面这个简单的测试程序。代码涉及了文件流数据读取和写入、jsoncpp库的读写api的使用。整个处理流程是先读取一个json格式文件的内容，然后把这些内容分别用jsoncpp库的&lt;code&gt;Json::FastWriter&lt;/code&gt;（快速写入）和&lt;code&gt;Json::StyledWriter&lt;/code&gt;（完整写入）这两个方式写入到两个文件中，最后读取这两个文件并输出。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux C++使用函数模板实现JSON数据快速和完整写入到文件" src="https://cdn.typecodes.com/2017/04/jsoncpp_basic_4_1.png" title="Linux C++使用函数模板实现JSON数据快速和完整写入到文件"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 16 Apr 2017 15:54:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-04-16:/cseries/templatejsoncpp2file1.html</guid><category>cseries</category><category>jsoncpp</category><category>json</category><category>template</category></item><item><title>Git多仓库作子目录的双向同步：一次Git Subtree的实践</title><link>https://typecodes.com/mix/gitsubtree1.html</link><description>&lt;p&gt;今年1月中旬的时候BZ在GitHub上收到Typecho社区组织&lt;a href="https://github.com/typecho-fans" title="GitHub的Organizations名"&gt;typecho-fans&lt;/a&gt;的成员邀请，原来是想把所有TP的开源插件都整合到&lt;a href="https://github.com/typecho-fans/plugins" title="点击查看"&gt;GitHub&lt;/a&gt;上进行维护。之前BLOG在使用Typecho的时候写了3个插件：&lt;a href="https://typecodes.com/web/scsfortypecho.html" title="《新浪云存储(SCS) for Typecho 插件》"&gt;新浪云存储SCS插件&lt;/a&gt;、&lt;a href="https://typecodes.com/web/typechomp3player.html" title="《音乐播放器PlayAtWill for typecho插件（移植自wordpress）》"&gt;移植自WordPress的音乐播放器插件&lt;/a&gt;和&lt;a href="https://typecodes.com/mix/synweibophpmarkdownimgurl.html" title="《升级博客文章同步微博的插件：PHP正则提取Markdown的图片地址》"&gt;新浪微博同步插件&lt;/a&gt;，那如果放到typecho-fans上进行维护的话对使用者和开发者来说都是挺方便的。但是当时不知道怎么把之前这3个已经放在GitHub上进行维护的插件仓库作为子目录/仓库同步到typecho-fans的插件仓库中，所以一直都没有行动。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Git多仓库作子目录的双向同步：一次Git Subtree的实践" src="https://cdn.typecodes.com/2017/03/gitsubtree1_typecho_fans.png" title="Git多仓库作子目录的双向同步：一次Git Subtree的实践"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 22 Mar 2017 18:30:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-03-22:/mix/gitsubtree1.html</guid><category>mix</category><category>git</category></item><item><title>C++中使用vs2015和g++对new开辟的堆内存是否初始化的分析</title><link>https://typecodes.com/cseries/gccvsheapnewinit1.html</link><description>&lt;p&gt;在C++中使用&lt;code&gt;new&lt;/code&gt;运算符在堆中申请一内存块的使用权的同时还可以执行对该内存块的初始化工作。下面通过使用2个类对象和2个基本数据类型来分析使用&lt;code&gt;new class_object&lt;/code&gt;、&lt;code&gt;new class_object()&lt;/code&gt;和&lt;code&gt;new int&lt;/code&gt;、&lt;code&gt;new int()&lt;/code&gt;对这块内存的初始化情况。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 14 Mar 2017 23:24:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-03-14:/cseries/gccvsheapnewinit1.html</guid><category>cseries</category><category>new</category><category>heap</category><category>g++</category><category>vs</category></item><item><title>Linux TCP客户端出现CLOSE_WAIT后进入死循环</title><link>https://typecodes.com/cseries/tcpclosewaitfinwaitrst1.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/cseries/tcpclosewaitsigpipe.html" title="《Linux TCP通信出现CLOSE_WAIT后导致服务端进程挂掉》"&gt;前文&lt;/a&gt;中讲述了Linux服务端TCP的某个链路变成&lt;code&gt;CLOSE_WAIT&lt;/code&gt;状态，然后由于客户端已经关闭了（发送了&lt;code&gt;RST&lt;/code&gt;标志的报文），那么服务端如果继续向这个链路中写入数据的话就会收到&lt;code&gt;SIGPIPE&lt;/code&gt;信号而终止，这篇文章主要通过客户端进入&lt;code&gt;CLOSE_WAIT&lt;/code&gt;后由于收到服务端产生的&lt;code&gt;RST&lt;/code&gt;标志报文进入死循环的情况。注：&lt;code&gt;RST&lt;/code&gt;表示复位，用来关闭异常的连接。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS服务端建立监听" src="https://cdn.typecodes.com/2017/03/tcpclosewaitfinwaitrst1_server_process.png" title="CentOS服务端建立监听"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 10 Mar 2017 13:49:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-03-10:/cseries/tcpclosewaitfinwaitrst1.html</guid><category>cseries</category><category>tcpdump</category><category>tcp</category><category>close_wait</category><category>rst</category></item><item><title>使用sed和awk查找和替换字符串处理Makefile文件（二）</title><link>https://typecodes.com/linux/sedawkfindreplace2.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/linux/sedawkfindreplace1.html" title="《使用sed和awk查找和替换字符串处理Makefile文件（一）》"&gt;前文&lt;/a&gt;中演示了使用awk和sed命令正则查找和替换&lt;a href="https://typecodes.com/cseries/cppgeneralmakefile.html" title="《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》"&gt;Makefile&lt;/a&gt;文件的匹配内容，这篇文章依然使用这个Makefile文件作为awk和sed命令正则匹配查找、替换和删除操作。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 09 Mar 2017 16:45:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-03-09:/linux/sedawkfindreplace2.html</guid><category>linux</category><category>sed</category><category>awk</category><category>Makefile</category></item><item><title>使用sed和awk查找和替换字符串处理Makefile文件（一）</title><link>https://typecodes.com/linux/sedawkfindreplace1.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/linux/handlemakefilebysed.html" title="查看原文"&gt;《使用sed命令批量处理Makefile文件的脚本》&lt;/a&gt;文中使用sed命令对&lt;a href="https://typecodes.com/cseries/cppgeneralmakefile.html" title="《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》"&gt;前文&lt;/a&gt;中的Makefile文件进行了替换、追加和删除操作，这篇文章通过使用sed和awk命令对该Makefile文件的某个字符串进行正则匹配查找以及替换。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 22 Feb 2017 16:39:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2017-02-22:/linux/sedawkfindreplace1.html</guid><category>linux</category><category>sed</category><category>awk</category><category>Makefile</category></item><item><title>C++删除map容器中指定值的元素</title><link>https://typecodes.com/cseries/mapdelintstring.html</link><description>&lt;p&gt;map容器是C++ STL中的重要一员，平时会遇到删除map容器中value为指定元素的问题，例如删除所有字符串为"123"或者能整除3的元素。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 26 Jun 2016 10:26:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-06-26:/cseries/mapdelintstring.html</guid><category>cseries</category><category>map</category><category>iterator</category></item><item><title>使用sed命令批量处理Makefile文件的脚本</title><link>https://typecodes.com/linux/handlemakefilebysed.html</link><description>&lt;p&gt;前面写了一篇文章&lt;a href="https://typecodes.com/cseries/cppgeneralmakefile.html" title="查看原文"&gt;《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》&lt;/a&gt;，里面的Makefile代码有个不好的地方需要修改。当编译.cpp文件时，使用的&lt;code&gt;STD_OPT&lt;/code&gt;变量仍然是编译.c文件时的参数&lt;code&gt;-std=c99&lt;/code&gt;，这个在C++中是不支持的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="使用sed命令批量处理Makefile文件的脚本" src="https://cdn.typecodes.com/2016/06/handle_makefile.png" title="使用sed命令批量处理Makefile文件的脚本"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 18 Jun 2016 15:56:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-06-18:/linux/handlemakefilebysed.html</guid><category>linux</category><category>sed</category><category>shell</category><category>makefile</category></item><item><title>自己实现inet_aton和inet_ntoa函数功能</title><link>https://typecodes.com/cseries/networkselfdefineconv.html</link><description>&lt;p&gt;之前遇到过要自己实现&lt;code&gt;inet_aton&lt;/code&gt;和&lt;code&gt;inet_ntoa&lt;/code&gt;函数功能的问题，这里总结一下。&lt;/p&gt;
&lt;h4&gt;1 基本知识&lt;/h4&gt;
&lt;p&gt;网络字节序是大端模式，那么内存中的低地址存放的是数据的高位，内存中的高地址存放的是数据的低位。
&lt;code&gt;inet_aton&lt;/code&gt;是将IPv4地址（点分法）转换成对应的十进制整数；而&lt;code&gt;inet_ntoa&lt;/code&gt;是将十进制整数转换成对应的IPv4地址（点分法）。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 08 Apr 2016 13:11:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-04-08:/cseries/networkselfdefineconv.html</guid><category>cseries</category><category>inet_aton</category><category>inet_ntoa</category><category>字节序</category></item><item><title>C语言删除无序整型数组中的重复元素及时间复杂度</title><link>https://typecodes.com/cseries/deldisorderintarrrepeatele.html</link><description>&lt;p&gt;遇到一个题，大概要求是写一个函数处理来去掉一个无序的整型数组（例如int i_arr[] = { 1, 2, 2, 3, 4, 2, 3, 5 };）中重复的元素，并返回最终的长度。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 23 Mar 2016 22:44:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-03-23:/cseries/deldisorderintarrrepeatele.html</guid><category>cseries</category><category>数组</category><category>时间复杂度</category></item><item><title>UNIX环境高级编程（APUE）之单实例守护进程</title><link>https://typecodes.com/cseries/apuesingledaemonprocess.html</link><description>&lt;p&gt;在UNIX环境高级编程（APUE）中提到了守护进程的创建方法，思路很清晰，所以这里通过代码具体研究下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="UNIX环境高级编程（APUE）之单实例守护进程" src="https://cdn.typecodes.com/2016/03/apue.png" title="UNIX环境高级编程（APUE）之单实例守护进程"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 14 Mar 2016 17:52:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-03-14:/cseries/apuesingledaemonprocess.html</guid><category>cseries</category><category>apue</category><category>守护进程</category></item><item><title>Linux使用KILL 0检测进程是否存在</title><link>https://typecodes.com/cseries/kill0checkprocessifexist.html</link><description>&lt;p&gt;之前遇到过&lt;code&gt;kill( pid, 0 )&lt;/code&gt;的情况，由于平常没注意到kill函数的形参为0的情况，不知道它的作用。后面用&lt;code&gt;man 2 kill&lt;/code&gt;命令查看了下kill函数的说明，发现可以用来检测进程的存在情况。&lt;/p&gt;
&lt;p&gt;&lt;img alt="man 2 kill查看关于形参0的说明" src="https://cdn.typecodes.com/2016/03/man2kill0.png" title="man 2 kill查看关于形参0的说明"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 14 Mar 2016 11:48:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-03-14:/cseries/kill0checkprocessifexist.html</guid><category>cseries</category><category>kill</category><category>信号</category></item><item><title>vsnprintf字符串格式化输出实例：日志中打印程序名和行号</title><link>https://typecodes.com/cseries/vsnprintffilenameline.html</link><description>&lt;p&gt;在Linux C/C++程序中打印日志时，可能会由于需要打印未知个数的变量参数，那么&lt;code&gt;vsnprintf&lt;/code&gt;函数就排上用场了。这里使用一个简单的C程序例子，演示在打印源程序文件名和该打印函数所在的行号的同时，使用vsnprintf函数打印个数未知的参数变量。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 13 Mar 2016 23:28:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-03-13:/cseries/vsnprintffilenameline.html</guid><category>cseries</category><category>vsnprintf</category><category>字符串格式化</category></item><item><title>Disqus支持的HTML标签和代码高亮方法</title><link>https://typecodes.com/mix/disqushtmltaghighlight.html</link><description>&lt;p&gt;由于Disqus不支持Markdown的原因，所以在评论中使用HTML标签和代码高亮就不像Markdown那样方便了。在查看了&lt;a href="https://help.disqus.com/customer/portal/articles/466253-what-html-tags-are-allowed-within-comments" title="点击查看"&gt;Disqus官方&lt;/a&gt;关于HTML标签和代码高亮的说明后，发现Disqus只支持原生的HTML标签和代码高亮方式。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Disqus中HTML标签和代码高亮的效果" src="https://cdn.typecodes.com/2016/03/disqus_htmltag_highlight_result.png" title="Disqus中HTML标签和代码高亮的效果"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 03 Mar 2016 13:09:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-03-03:/mix/disqushtmltaghighlight.html</guid><category>mix</category><category>pelican</category><category>disqus</category><category>代码高亮</category></item><item><title>更新博客生成发布及同步GitHub的Shell脚本：解决文件名空格问题</title><link>https://typecodes.com/linux/updatesyngithubpelicanshell.html</link><description>&lt;p&gt;&lt;a href="https://typecodes.com/linux/syngithubmarkdownpelican.html" title="《同步GitHub Markdown文章到Linux服务器后更新Pelican博客的脚本》"&gt;前面一篇文章&lt;/a&gt;通过Linux Shell脚本的方式，实现博客生成发布及同步GitHub的的功能：先同步GitHub个人仓库中的Markdown文章到本地，然后通过Pelican编译生成静态HTML文件，最后发布到Nginx的web目录下面，同时更新到GitHub个人主页（vfhky.github.io）。&lt;/p&gt;
&lt;p&gt;由于没仔细考虑到Markdown文件名中可能包含空格的问题，所以在Shell脚本的文件名遍历时（代码第108行）出现了BUG：Linux Shell默认把空格空格做为值与值之间的分隔符，所以原本一个带空格的文件名就被拆分成了几个文件名。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS7.2服务器默认的IFS为空值" src="https://cdn.typecodes.com/2016/03/centos_ifs_default.png" title="CentOS7.2服务器默认的IFS为空值"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 02 Mar 2016 23:55:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-03-02:/linux/updatesyngithubpelicanshell.html</guid><category>linux</category><category>pelican</category><category>github</category><category>markdown</category></item><item><title>一个sigprocmask和sigsuspend函数的综合应用</title><link>https://typecodes.com/cseries/sigprocmasksigsuspendapp.html</link><description>&lt;p&gt;在Linux服务端后台开发中，经常会用到信号处理函数：&lt;code&gt;sigprocmask&lt;/code&gt;和&lt;code&gt;sigsuspend&lt;/code&gt;。这篇文章主要通过一个综合实例演示如何使用sigprocmask函数屏蔽目标信号（信号掩码）以及sigsuspend函数挂起进程。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux中编译执行sigprocmask_sigsuspend程序" src="https://cdn.typecodes.com/2016/02/sigprocmask_sigsuspend_init.png" title="Linux中编译执行sigprocmask_sigsuspend程序"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 29 Feb 2016 11:39:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-29:/cseries/sigprocmasksigsuspendapp.html</guid><category>cseries</category><category>sigprocmask</category><category>sigsuspend</category><category>信号</category></item><item><title>Linux TCP通信出现CLOSE_WAIT后导致服务端进程挂掉</title><link>https://typecodes.com/cseries/tcpclosewaitsigpipe.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/cseries/tcpdumpwiresharkclosewait2.html" title="《使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT（二）》"&gt;前文&lt;/a&gt;中讲述了Linux服务端TCP通信出现&lt;code&gt;CLOSE_WAIT&lt;/code&gt;状态的原因，这篇文章主要通过一个实例演示它个一个“恶劣”影响：直接使服务端进程Down掉。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS服务端建立监听端口" src="https://cdn.typecodes.com/2016/02/tcp_socket_server1.png" title="CentOS服务端建立监听端口"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 29 Feb 2016 08:39:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-29:/cseries/tcpclosewaitsigpipe.html</guid><category>cseries</category><category>tcpdump</category><category>wireshark</category><category>tcp</category><category>close_wait</category><category>sigpipe</category></item><item><title>使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT（二）</title><link>https://typecodes.com/cseries/tcpdumpwiresharkclosewait2.html</link><description>&lt;p&gt;前文&lt;a href="https://typecodes.com/cseries/tcpdumpwiresharkclosewait1.html" title="查看原文"&gt;《使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT（一）》&lt;/a&gt;通过TCPDUMP和Wireshark在利用CentOS7作为服务端、Windows10作为客户端，模拟演示了一个TCP通信的CLOSE_WAIT状态，这篇文章主要利用前文的数据尝试解释Linux服务端产生CLOSE_WAIT状态的原因。&lt;/p&gt;
&lt;p&gt;&lt;img alt="客户端和服务端的TCP通信流程" src="https://cdn.typecodes.com/2016/02/socket_tcpflow.png" title="客户端和服务端的TCP通信流程"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 28 Feb 2016 18:11:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-28:/cseries/tcpdumpwiresharkclosewait2.html</guid><category>cseries</category><category>tcpdump</category><category>wireshark</category><category>tcp</category><category>close_wait</category></item><item><title>使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT（一）</title><link>https://typecodes.com/cseries/tcpdumpwiresharkclosewait1.html</link><description>&lt;p&gt;在Linux后端服务网络通信开发中，可能会遇到CLOSE_WAIT的状况。引起TCP CLOSE_WAIT状态的情况很多，归根结底还是由于被动关闭的一方没有关闭socket链路导致的。这篇文章主要是通过用一个简单的例子通过TCPDUMP和Wireshark这两个工具来模拟产生CLOSE_WAIT的情况，&lt;a href="https://typecodes.com/cseries/tcpdumpwiresharkclosewait2.html" title="《使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT（二）》"&gt;下一篇&lt;/a&gt;主要是对这个问题的原理解释。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS服务端建立监听端口" src="https://cdn.typecodes.com/2016/02/server_socket_8000.png" title="CentOS服务端建立监听端口"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 26 Feb 2016 18:41:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-26:/cseries/tcpdumpwiresharkclosewait1.html</guid><category>cseries</category><category>tcpdump</category><category>wireshark</category><category>tcp</category><category>close_wait</category></item><item><title>Linux中使用TCPDUMP进行简单的TCP抓包</title><link>https://typecodes.com/linux/simpletcpdumpapply.html</link><description>&lt;p&gt;在Linux TCP通信的调试中，tcpdump应该算是很好的一个工具。这篇文章主要使用Windows作为客户端，向作为服务端的Linux中的一个socket监听端口发送报文信息，然后在Linux中用TCPDUMP工具进行抓包。通过这个实例，可以较为完整的了解TCP通信中的“三次握手”等过程。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux中使用TCPDUMP进行简单的TCP抓包" src="https://cdn.typecodes.com/2016/02/linuxtcpdump.png" title="Linux中使用TCPDUMP进行简单的TCP抓包"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 26 Feb 2016 15:51:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-26:/linux/simpletcpdumpapply.html</guid><category>linux</category><category>tcpdump</category><category>tcp</category></item><item><title>CentOS 7.2使用yum安装MYSQL 5.7.10</title><link>https://typecodes.com/linux/yuminstallmysql5710.html</link><description>&lt;p&gt;前面两篇文章&lt;a href="https://typecodes.com/web/centos7compilemysql.html" title="查看原文"&gt;《2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc》&lt;/a&gt;、&lt;a href="https://typecodes.com/web/centos7yuminstallmysql5.html" title="查看原文"&gt;《阿里云CentOS 7.1使用yum安装MySql5.6 …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 26 Feb 2016 14:55:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-26:/linux/yuminstallmysql5710.html</guid><category>linux</category><category>mysql</category></item><item><title>Linux多进程和多线程的一次gdb调试实例</title><link>https://typecodes.com/cseries/multilprocessthreadgdb.html</link><description>&lt;p&gt;Linux C/C++开发中gdb进行多进程和多线程的调试一直比较麻烦，在CSDN上看到高科的一篇文章&lt;a href="http://blog.csdn.net/pbymw8iwm/article/details/7876797" title="查看原文"&gt;《gdb调试多进程和多线程命令》&lt;/a&gt;比较有启发，这里就自己重新整理并做了一个GDB多进程/线程的调试实践。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 25 Feb 2016 23:18:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-02-25:/cseries/multilprocessthreadgdb.html</guid><category>cseries</category><category>gdb</category><category>fork</category><category>进程</category><category>线程</category></item><item><title>同步GitHub Markdown文章到Linux服务器后更新Pelican博客的脚本</title><link>https://typecodes.com/linux/syngithubmarkdownpelican.html</link><description>&lt;p&gt;使用了Pelican后，最多的操作就是编译Markdown文章生成HTML文件，然后发布到Nginx的博客目录下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="我的Pelican博客管理和发布流程" src="https://cdn.typecodes.com/2016/01/github_pelican_nginx.png" title="我的Pelican博客管理和发布流程"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 10 Jan 2016 22:22:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-01-10:/linux/syngithubmarkdownpelican.html</guid><category>linux</category><category>pelican</category><category>github</category><category>markdown</category></item><item><title>Linux c语言连接MySQL数据库实例</title><link>https://typecodes.com/cseries/linuxgccgconnectmysql.html</link><description>&lt;p&gt;工作上自己在Linux C/C++开发时，用的都是Oracle数据库，毕竟企业级应用追求稳定性好、安全可靠。业余时间做了一些WEB开发，接触到MySQL数据库比较多，也比较喜欢开源的MySQL。之前都是用PHP连接MySQL数据库，这里自己用C语言连接MySQL，执行一些简单的连接、查询操作、异常处理等操作。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 07 Jan 2016 14:42:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-01-07:/cseries/linuxgccgconnectmysql.html</guid><category>cseries</category><category>gcc</category><category>mysql</category></item><item><title>Linux gcc编译生成静态库和共享动态库的过程</title><link>https://typecodes.com/cseries/gccgensharedlib.html</link><description>&lt;p&gt;这篇文章主要通过实例演示在Linux下如何使用gcc分别编译生成静态库和动态库文件以及其它程序如何使用这个生成的静态库和动态库。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 05 Jan 2016 22:48:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2016-01-05:/cseries/gccgensharedlib.html</guid><category>cseries</category><category>gcc</category><category>静态库</category><category>soname</category><category>real name</category><category>link name</category><category>rpath</category><category>ldconfig</category></item><item><title>Linux下Nginx、MySQL和PHP等应用的日志切割脚本</title><link>https://typecodes.com/linux/applogsbackup.html</link><description>&lt;p&gt;在Linux中如果应用程序会产生日志，那么就需要考虑日志切割，例如按照固定的大小切割、按照日期进行切割等等。同样，在编译&lt;a href="https://typecodes.com/web/centos7compilenginx.html" title="《2015博客升级记(三)：CentOS 7.1编译安装Nginx1.9.0》"&gt;Nginx1.9.0&lt;/a&gt;、&lt;a href="https://typecodes.com/web/centos7compilemysql.html" title="《2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc》"&gt;MySQL5.7.7rc&lt;/a&gt;和&lt;a href="https://typecodes.com/web/centos7compilephp7.html" title="《2015博客升级记(五)：CentOS 7.1编译安装PHP7》"&gt;PHP7&lt;/a&gt;后，这三个应用服务都会产生日志，尤其是Nginx进程根据配置文件ngnix.conf记录每条访问记录到access.log中。如果所有的日志都打印到同一个文件中的话，那么时间长了的话就会影响效率。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Nginx日志切割实例" src="https://cdn.typecodes.com/2015/12/nginx_logs_backup.png" title="Nginx日志切割实例"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 18 Dec 2015 21:01:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-12-18:/linux/applogsbackup.html</guid><category>linux</category><category>博客成长录</category><category>shell</category><category>nginx</category><category>mysql</category><category>php</category></item><item><title>成功将博客从Typecho迁移到Pelican</title><link>https://typecodes.com/mix/sucesstypechotopelican.html</link><description>&lt;p&gt;根据&lt;a href="https://typecodes.com/mix/begintypechotopelican.html" title="《准备将博客从Typecho迁移到Pelican》"&gt;前文&lt;/a&gt;的上线步骤，目前已经成功的将博客从Typecho迁移到了Pelican。中间上线发布的时候，遇到了好几个问题，不过由于上线步骤中有失败的处理方案（保留Typecho程序），所以在Typecho到Pelican之间来来回回切换了好几次。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 10 Dec 2015 22:06:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-12-10:/mix/sucesstypechotopelican.html</guid><category>mix</category><category>博客成长录</category><category>typecho</category><category>pelican</category></item><item><title>准备将博客从Typecho迁移到Pelican</title><link>https://typecodes.com/mix/begintypechotopelican.html</link><description>&lt;p&gt;8月份的时候，终于从庞大的WordPress转到了轻量级的&lt;a href="https://typecodes.com/mix/eventualwptotypecho.html" title="《终于从WordPress转向Typecho了》"&gt;博客程序Typecho&lt;/a&gt;。简洁的设计和比较出色的Markdown支持，整个Typecho体验还是挺不错的。到10月份的时候，自己了解了一些静态博客程序，包括nodejs的Ghost、Hexo等，ruby写的jekyll以及Python写的&lt;a href="http://docs.getpelican.com/en/3.6.3/" title="Pelican最新3.6.3官方文档"&gt;Pelican&lt;/a&gt;等。&lt;/p&gt;
&lt;p&gt;由于当时正好接触到了大蟒蛇，而且对js不熟（ruby都没用过），所以就在本地尝试了一下Pelican。之间折腾了一个从Octopress移植过来的主题Pelican-Octopress未果，后面忙着就没怎么弄了。&lt;/p&gt;
&lt;p&gt;前段时间辞职后，闲着就打算把博客“简洁到底”：抛弃MySQL数据库和PHP执行解释，完全采用Python生成静态HTML文件。这样以后就只需要在本地通过Markdown写好文章，然后通过pelican生成html文件即可。&lt;/p&gt;
&lt;p&gt;&lt;img alt="准备将博客从Typecho迁移到Pelican" src="https://cdn.typecodes.com/2015/12/10/begintypechotopelican.png" title="准备将博客从Typecho迁移到Pelican"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 10 Dec 2015 16:20:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-12-10:/mix/begintypechotopelican.html</guid><category>mix</category><category>博客成长录</category><category>typecho</category><category>pelican</category></item><item><title>Linux TCP连接Connection Refused和Connection timed out的问题</title><link>https://typecodes.com/linux/tcpconnectiontimedout.html</link><description>&lt;p&gt;前段时间和其它系统做联调测试，对方系统采用的是负载均衡模式。调试时采用的是多台手机作为客户端发送到对方负载均衡服务器，然后再把报文转发送到我这边的服务端。在测试的时候，对方测试人员说有的手机客户端会偶尔出现报文发不过来的情况。&lt;/p&gt;
&lt;p&gt;故事有点长，先发一张tcp三次握手的过程图镇楼~&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux tcp三次握手" src="https://cdn.typecodes.com/2015/09/tcp_handshake.png" title="Linux tcp三次握手"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 12 Sep 2015 22:39:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-09-12:/linux/tcpconnectiontimedout.html</guid><category>linux</category><category>tcp</category><category>connection refused</category><category>connection timed out</category></item><item><title>博客MySQL服务惊魂记：Linux磁盘空间不足(Core Dump文件引爆)</title><link>https://typecodes.com/linux/mysqlerrornospace.html</link><description>&lt;p&gt;昨天在更新完文章&lt;a href="https://typecodes.com/mix/synweibophpmarkdownimgurl.html" title=""&gt;《升级博客文章同步微博的插件：PHP正则提取Markdown的图片地址》&lt;/a&gt;后，博客突然无法访问了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="MySQL的错误日志" src="https://cdn.typecodes.com/2015/08/mysql_space_error.png" title="MySQL的错误日志"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 17 Aug 2015 22:33:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-08-17:/linux/mysqlerrornospace.html</guid><category>linux</category><category>coredump</category><category>mysql</category></item><item><title>Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile</title><link>https://typecodes.com/cseries/cppgeneralmakefile.html</link><description>&lt;p&gt;最近写了一个*nix环境下的Makefile文件，支持编译C/C++，同时能够通过参数配置生成ELF目标文件、动态链接库(.so)和静态链接库(.a)文件。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile" src="https://cdn.typecodes.com/2015/08/linux_general_makefile.png" title="Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 14 Aug 2015 20:27:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-08-14:/cseries/cppgeneralmakefile.html</guid><category>cseries</category><category>makefile</category></item><item><title>解决make编译链接动态库错误：libxx.so: undefined reference to xx</title><link>https://typecodes.com/cseries/libraryundefinedref.html</link><description>&lt;p&gt;最近在写一个Makefile，调试时遇到了&lt;code&gt;libsrcpbl.so: undefined reference to gcProgramName&lt;/code&gt;的问题。在这个Makefile脚本里面，终极目标是通过链接一个自定义的动态库&lt;code&gt;libsrcpbl.so&lt;/code&gt;生成一个ELF目标文件。&lt;/p&gt;
&lt;p&gt;由于链接生成libsrcpbl.so动态库的.o文件比较多，无法定位具体的错误程序文件和位置，所以折腾了较长时间。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 13 Aug 2015 21:05:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-08-13:/cseries/libraryundefinedref.html</guid><category>cseries</category><category>nm</category><category>undefined reference</category></item><item><title>Unix系统中nm命令展示目标文件符号的方法</title><link>https://typecodes.com/cseries/nmobjectfilesymbol.html</link><description>&lt;p&gt;在unix系统中，通过gnu开源gcc或者g++工具生成的目标文件（object file），可以用&lt;code&gt;nm&lt;/code&gt;、&lt;code&gt;objdump&lt;/code&gt;和&lt;code&gt;readelf&lt;/code&gt;这三个命令来查看。&lt;/p&gt;
nm：显示目标文件中的符号；
objdump：打印目标文件中的详细信息；
readelf：显示关于 ELF 目标文件的信息。
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;之前在&lt;a href="https://typecodes.com/cseries/libraryundefinedref.html" title="《解决make编译链接动态库错误：libxx.so: undefined reference to xx》"&gt;调试makefile文件&lt;/a&gt;的时候，链接动态库出错：&lt;code&gt;libsrcpbl.so: undefined reference to 'gcProgramName'&lt;/code&gt;。也就是变量gcProgramName没定义，后来通过&lt;code&gt;nm -u libsrcpbl.so&lt;/code&gt;命令辅助排查解决了。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 12 Aug 2015 00:07:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-08-12:/cseries/nmobjectfilesymbol.html</guid><category>cseries</category><category>nm</category></item><item><title>Linux gcc链接动态库出错：LIBRARY_PATH和LD_LIBRARY_PATH的区别</title><link>https://typecodes.com/cseries/gcclderrlibrarypath.html</link><description>&lt;p&gt;昨天在自己的CentOs7.1上写makefile的时候，发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错。链接命令大概是这样的：&lt;/p&gt;

&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ld&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cannot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;lmyhello&lt;/span&gt;
&lt;span class="nx"&gt;collect2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ld&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;returned&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;exit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="Linux gcc链接动态库出错" src="https://cdn.typecodes.com/2015/08/gcc_linux.png" title="Linux gcc链接动态库出错"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 08 Aug 2015 22:51:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-08-08:/cseries/gcclderrlibrarypath.html</guid><category>cseries</category><category>gcc</category><category>library_path</category><category>ld_library_path</category></item><item><title>Unix系统进程对SIGTERM、SIGUSR1和SIGUSR2信号处理</title><link>https://typecodes.com/cseries/unixsigtermkill.html</link><description>&lt;p&gt;好久没更新博客了，写篇文章除除草。这篇文章主要通过简单的例子说明一下Unix/Linux进程中如果捕捉和处理&lt;code&gt;SIGTERM&lt;/code&gt;、&lt;code&gt;SIGUSR1&lt;/code&gt;和&lt;code&gt;SIGUSR2&lt;/code&gt;信号。&lt;/p&gt;
&lt;p&gt;先说明一下这三个信号：&lt;/p&gt;

&lt;span class="n"&gt;SIGTERM&lt;/span&gt;&lt;span class="err"&gt;：进程终止信号，效果等同于&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;nix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shell中不带&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="err"&gt;的&lt;/span&gt;&lt;span class="n"&gt;kill命令&lt;/span&gt;&lt;span class="err"&gt;；&lt;/span&gt;
&lt;span class="n"&gt;SIGUSR1&lt;/span&gt;&lt;span class="err"&gt;：保留给用户使用的信号；&lt;/span&gt;
&lt;span class="n"&gt;SIGUSR2&lt;/span&gt;&lt;span class="err"&gt;：同&lt;/span&gt;&lt;span class="n"&gt;SIGUSR1&lt;/span&gt;&lt;span class="err"&gt;，保留给用户使用的信号。&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 05 Aug 2015 17:41:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-08-05:/cseries/unixsigtermkill.html</guid><category>cseries</category><category>信号</category><category>sigterm</category><category>sigusr1 sigusr2</category></item><item><title>CentOS中将备份文件同步到BitBucket、GitHub和Coding的shell脚本</title><link>https://typecodes.com/linux/gitsynbackupshell.html</link><description>&lt;p&gt;在&lt;a href="https://typecodes.com/linux/gitaccountconfig.html" title="《CentOS系统BitBucket、GitHub和Coding等多git账户的配置》"&gt;上一篇文章&lt;/a&gt;讲述了如何在Linux系统中配置BitBucket、GitHub和Coding这三个平台的git账户，这篇文章就分享如何通过shell脚本定时获取自己的CentOS7.1服务器上的备份文件，然后使用git命令同步到这三个平台仓库上。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS中git同步的shell脚本" src="https://cdn.typecodes.com/2015/07/linux_git.png" title="CentOS中git同步的shell脚本"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 07 Jul 2015 00:30:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-07-07:/linux/gitsynbackupshell.html</guid><category>linux</category><category>git</category><category>shell</category></item><item><title>CentOS系统BitBucket、GitHub和Coding等多git账户的配置</title><link>https://typecodes.com/linux/gitaccountconfig.html</link><description>&lt;p&gt;目前自己主要在BitBucket、GitHub和Coding这三个Git平台创建了一些项目，所以这篇文章以自己的CentOS7.1服务器作为示例，说说如何在Linux系统中配置不同平台的Git仓库，也即多git账户的配置。&lt;/p&gt;
&lt;p&gt;类似于Windows机器上的git配置方法，在CentOS上也是一样的。通过设置Git全部变量的配置文件&lt;code&gt;~/.ssh/config&lt;/code&gt;和当前工作仓库的配置文件&lt;code&gt;your_git_project_root/.git/config&lt;/code&gt;即可。&lt;/p&gt;
&lt;p&gt;&lt;img alt="当前git工作仓库的.git目录" src="https://cdn.typecodes.com/2015/07/project_git_config_dir.png" title="当前git工作仓库的.git目录"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 05 Jul 2015 22:22:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-07-05:/linux/gitaccountconfig.html</guid><category>linux</category><category>git</category></item><item><title>2015博客升级记(八)：CentOS7定时备份博客程序的shell脚本</title><link>https://typecodes.com/linux/centos7blogregularbackup.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第八篇，同时也是这一系列文章的最后一篇，内容主要记录在Linux系统中如何使用shell脚本备份服务器上的博客程序（当然也可以是主机上的任何目录或者文件）。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS7定时备份博客程序的shell脚本" src="https://cdn.typecodes.com/2015/06/centos_files_backup_shell.png" title="CentOS7定时备份博客程序的shell脚本"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 30 Jun 2015 22:24:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-30:/linux/centos7blogregularbackup.html</guid><category>linux</category><category>博客成长录</category><category>shell</category></item><item><title>2015博客升级记(七)：CentOS7定时备份MySql的shell脚本</title><link>https://typecodes.com/linux/centos7mysqlregularbackup.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第七篇，主要记录在Linux系统中如何使用shell脚本备份服务器上的mysql数据库。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS7定时备份MySql的shell脚本" src="https://cdn.typecodes.com/2015/06/centos_mysql_backup.png" title="CentOS7定时备份MySql的shell脚本"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 29 Jun 2015 22:41:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-29:/linux/centos7mysqlregularbackup.html</guid><category>linux</category><category>博客成长录</category><category>mysql</category><category>shell</category></item><item><title>Coding.net上git仓库ssh地址的"bug"</title><link>https://typecodes.com/mix/codinggitsshbug.html</link><description>&lt;p&gt;前段时间在用Coding.net同步git仓库时，能正常使用非https的ssh协议，但是这两天在自己的Windows机器上push内容时，报如下图中的错误&lt;code&gt;Permission denied (publickey).&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Coding.net报错Permission denied (publickey)" src="https://cdn.typecodes.com/2015/06/git_push_error.png" title="Coding.net报错Permission denied (publickey)"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 28 Jun 2015 19:34:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-28:/mix/codinggitsshbug.html</guid><category>mix</category><category>git</category><category>coding</category></item><item><title>PHP7中php.ini、php-fpm和www.conf的配置</title><link>https://typecodes.com/web/php7configure.html</link><description>&lt;p&gt;根据前文&lt;a href="https://typecodes.com/web/centos7compilephp7.html" title="查看原文"&gt;《2015博客升级记(五)：CentOS 7.1编译安装PHP7》&lt;/a&gt;的&lt;code&gt;configure&lt;/code&gt;编译参数设定，安装后的PHP7配置文件所在路径是&lt;code&gt;/usr/local/php7/etc&lt;/code&gt;。该目录下会有两个配置文件：&lt;code&gt;php-fpm.conf&lt;/code&gt;和&lt;code&gt;php.ini&lt;/code&gt;，以及一个文件夹&lt;code&gt;php-fpm.d&lt;/code&gt;（包含&lt;code&gt;www.conf&lt;/code&gt;文件）。&lt;/p&gt;
&lt;p&gt;因此，这篇文章主要对这三个PHP配置文件的进行简单说明，具体的配置过程见本文末尾的&lt;code&gt;附录&lt;/code&gt;部分。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 27 Jun 2015 19:05:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-27:/web/php7configure.html</guid><category>web</category><category>php7</category></item><item><title>2015博客升级记(五)：CentOS 7.1编译安装PHP7</title><link>https://typecodes.com/web/centos7compilephp7.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第五篇，主要记录在Linux系统中如何编译安装PHP7。&lt;/p&gt;
&lt;h5&gt;1 创建php用户和用户组，并在github下载php7源码&lt;/h5&gt;
&lt;p&gt;首先创建一个名为php且&lt;code&gt;没有登录权限&lt;/code&gt;的用户和一个名为php的用户组，然后去GitHub下载php7源码包。&lt;/p&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="nx"&gt;typecodes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;groupadd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;useradd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;php7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;M&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;
&lt;span class="err"&gt;######&lt;/span&gt;&lt;span class="nx"&gt;从GitHub下载php7安装包&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="nx"&gt;typecodes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;wget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;check&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;certificate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;O&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;master&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;zip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//github.com/php/php-src/archive/master.zip&lt;/span&gt;
&lt;span class="err"&gt;######&lt;/span&gt;&lt;span class="nx"&gt;开始解压php7包&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="nx"&gt;typecodes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;unzip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;master&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;zip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;master&lt;/span&gt;
&lt;span class="err"&gt;#####&lt;/span&gt;&lt;span class="nx"&gt;安装编译php7时需要的依赖包&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="nx"&gt;typecodes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;master&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;yum&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;libxml2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;libxml2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;openssl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;openssl&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;curl&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;libjpeg&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;libpng&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;freetype&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;libmcrypt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;devel&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Fri, 26 Jun 2015 19:16:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-26:/web/centos7compilephp7.html</guid><category>web</category><category>博客成长录</category><category>php7</category></item><item><title>阿里云CentOS 7.1使用yum安装MySql5.6.24</title><link>https://typecodes.com/web/centos7yuminstallmysql5.html</link><description>&lt;p&gt;在前面两篇文章&lt;a href="https://typecodes.com/web/centos7compilemysql.html" title="查看原文"&gt;《2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc》&lt;/a&gt;和&lt;a href="https://typecodes.com/web/centos7compilemysql5.html" title="查看原文"&gt;《阿里云CentOS 7.1编译安装MySql5.6.24》&lt;/a&gt;中，都是采用编译MySQL源码的方式安装的，过程相对比较复杂。所以，这篇文章演示如何使用yum的方式安装MySql5.6.24。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 25 Jun 2015 09:43:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-25:/web/centos7yuminstallmysql5.html</guid><category>web</category><category>博客成长录</category><category>mysql</category></item><item><title>阿里云CentOS 7.1编译安装MySql5.6.24</title><link>https://typecodes.com/web/centos7compilemysql5.html</link><description>&lt;p&gt;继&lt;a href="https://typecodes.com/web/centos7compilemysql.html" title="《2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc》"&gt;前文&lt;/a&gt;记述了如何在Linux系统中，通过源码编译安装MySQL5.7.7 Release Candidate版本的过程，这篇文章主要是记录源码编译安装MySql5.6.24的过程。&lt;/p&gt;
&lt;p&gt;鉴于官方MySql5.6.24相对是一个比较稳定的版本，所以博主之前也在自己的另一台CentOS7.1主机上安装了一遍。不过最后还是图新鲜，选择了MySQL5.7.7rc版本。下面是具体的安装过程，由于和MySQL5.7.7rc的编译安装过程很类似，所以这里尽可能精简文字：&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 25 Jun 2015 09:42:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-25:/web/centos7compilemysql5.html</guid><category>web</category><category>博客成长录</category><category>mysql</category></item><item><title>MySQL编译安装时常见错误分析</title><link>https://typecodes.com/web/solvemysqlcompileerror.html</link><description>&lt;p&gt;这篇文章主要是关于MySQL在编译安装时，可能出现的错误的解决方法。MySQL正确的编译安装操作见前文&lt;a href="https://typecodes.com/web/centos7compilemysql.html" title="查看原文"&gt;《2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc》&lt;/a&gt;。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 23 Jun 2015 19:20:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-23:/web/solvemysqlcompileerror.html</guid><category>web</category><category>mysql</category></item><item><title>CentOS系统MySQL的配置文件my.cnf</title><link>https://typecodes.com/web/centosmysqlconfig.html</link><description>&lt;p&gt;这篇文章主要内容是前文&lt;a href="https://typecodes.com/web/centos7compilemysql.html" title="查看原文"&gt;《2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc》&lt;/a&gt;提到的MySQL的配置文件my.cnf。&lt;/p&gt;
&lt;p&gt;需要注意的是my.cnf中的一些配置需要和MySQL5.7.7rc编译安装时的一些配置保持一致。例如，MySQL的socket文件&lt;code&gt;/var/run/mysql/mysql.sock&lt;/code&gt;路径在MySQL5.7.7rc编译安装时，需要创建&lt;code&gt;/var/run/mysql/&lt;/code&gt;文件路径。也就是my.cnf的配置是由编译MySQL时配置的内容决定的。&lt;/p&gt;
&lt;p&gt;由于MySQL的配置明细不多，所以这里就直接将my.cnf的全部内容贴出来了。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Tue, 23 Jun 2015 19:11:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-23:/web/centosmysqlconfig.html</guid><category>web</category><category>mysql</category></item><item><title>Nginx编译安装时常见错误分析</title><link>https://typecodes.com/web/solvenginxcompileerror.html</link><description>&lt;p&gt;这篇文章主要是关于Nginx在编译安装时，可能出现的错误的解决方法。Nginx正确的编译安装操作见前文&lt;a href="https://typecodes.com/web/centos7compilenginx.html" title="查看原文"&gt;《2015博客升级记(三)：CentOS 7.1编译安装Nginx1.9.0》&lt;/a&gt;。&lt;/p&gt;
&lt;h5&gt;1 Nginx启动脚本错误：env: /etc/init.d/nginx: No such file or directory&lt;/h5&gt;
&lt;p&gt;明明上传了Nginx服务控制脚本&lt;code&gt;nginx&lt;/code&gt;，但是在执行&lt;code&gt;service nginx start&lt;/code&gt;命令时，却会报上面的错误。&lt;/p&gt;
&lt;p&gt;解决方法：启动脚本的格式有问题，例如该脚本是dos格式，在Linux系统是中无法识别的。可以通过vim打开该文件，如果可以看到出现&lt;code&gt;^M&lt;/code&gt;的字符，就可以确定是DOS格式的了。那么可以在vim中执行命令&lt;code&gt;:%s/\r\+$//e&lt;/code&gt;，将其转换成Unix格式即可。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 22 Jun 2015 17:02:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-22:/web/solvenginxcompileerror.html</guid><category>web</category><category>nginx</category></item><item><title>2015博客升级记(六)：Nginx配置HTTPS和SPDY实战</title><link>https://typecodes.com/web/centos7nginxhttpsspdy.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第六篇，主要记录如何在CentOS 7.1中Nginx如何配置HTTPS和SPDY。关于具体如何编译安装Nginx，可以查看文章&lt;a href="https://typecodes.com/web/centos7compilenginx.html" title="查看原文"&gt;《2015博客升级记(三)：CentOS 7.1编译安装Nginx1.9.0》&lt;/a&gt;。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 21 Jun 2015 22:39:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-21:/web/centos7nginxhttpsspdy.html</guid><category>web</category><category>博客成长录</category><category>nginx</category></item><item><title>2015博客升级记(四)：CentOS 7.1编译安装MySQL5.7.7rc</title><link>https://typecodes.com/web/centos7compilemysql.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第四篇，主要记录在Linux系统中如何编译安装MySql数据库。&lt;/p&gt;
&lt;h5&gt;1 创建mysql用户和用户组，并下载MySQL5.7.7 Release Candidate版本&lt;/h5&gt;
&lt;p&gt;首先创建一个名为mysql且&lt;code&gt;没有登录权限&lt;/code&gt;的用户和一个名为mysql的用户组，然后去mysql官网下载MySQL5.7.7rc版本。&lt;/p&gt;

&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes ~&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;groupadd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;useradd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;M&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;

&lt;span class="err"&gt;####&lt;/span&gt;&lt;span class="n"&gt;##从官网或者博客备份地址下载MySQL5&lt;/span&gt;&lt;span class="mf"&gt;.7.7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;Release&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Candidate版本&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes ~&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;wget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;cdn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Downloads&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;MySQL&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7.7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes ~&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;wget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;typecodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;libs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7.7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes ~&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;md5sum&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7.7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;MD5校验&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="n"&gt;a96021a93ca236e76f5c90ae19cd44&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7.7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;
&lt;span class="err"&gt;####&lt;/span&gt;&lt;span class="n"&gt;##开始解压MySQL5&lt;/span&gt;&lt;span class="mf"&gt;.7.7&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes ~&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;zxf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7.7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.7.7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;
&lt;span class="err"&gt;####&lt;/span&gt;&lt;span class="n"&gt;##下载gmock&lt;/span&gt;&lt;span class="err"&gt;：&lt;/span&gt;&lt;span class="n"&gt;google的c&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;mock框架&lt;/span&gt;&lt;span class="err"&gt;，&lt;/span&gt;&lt;span class="n"&gt;从mysql&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;5.6&lt;/span&gt;&lt;span class="n"&gt;开始支持&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes mysql-5.7.7-rc&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;wget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;typecodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;libs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ccpp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gmock&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.6.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zip&lt;/span&gt;
&lt;span class="err"&gt;####&lt;/span&gt;&lt;span class="n"&gt;##将其解压到MySQL5&lt;/span&gt;&lt;span class="mf"&gt;.7.7&lt;/span&gt;&lt;span class="n"&gt;的source_downloads目录下&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;root@typecodes mysql-5.7.7-rc&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;unzip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gmock&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.6.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;source_downloads&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 21 Jun 2015 00:53:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-21:/web/centos7compilemysql.html</guid><category>web</category><category>博客成长录</category><category>mysql</category></item><item><title>CentOS开启coredump转储并生成core文件的配置</title><link>https://typecodes.com/linux/centoscoredumpcfgshell.html</link><description>&lt;p&gt;在CentOS或者suse等Linux系统中默认是关闭coredump核心转储的，也就不会产生core文件。由于在C/C++开发中会用到gdb调试，所以需要开启coredump功能。下面是具体的配置命令，可以保存为一个简单的shell脚本执行。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 11 Jun 2015 21:47:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-11:/linux/centoscoredumpcfgshell.html</guid><category>linux</category><category>coredump</category><category>gdb</category></item><item><title>Typecho评论邮件通知插件中使用腾讯企业邮箱SSL功能</title><link>https://typecodes.com/mix/typechoexmailconfig.html</link><description>&lt;p&gt;前段时间，在查看博客绑定的腾讯企业邮箱时，发现POP3/SMTP协议支持SSL。由于正好使用了Typecho版的CommentToMail评论邮件通知插件，就顺便也升级成SSL协议。&lt;/p&gt;
&lt;p&gt;&lt;img alt="腾讯企业邮箱SSL配置" src="https://cdn.typecodes.com/2015/06/exmailsslconfig.png" title="腾讯企业邮箱SSL配置"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 06 Jun 2015 19:45:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-06:/mix/typechoexmailconfig.html</guid><category>mix</category><category>typecho</category><category>typecho评论邮件通知</category></item><item><title>Nginx服务启动、停止和重启等操作的SHELL脚本</title><link>https://typecodes.com/web/nginxserviceoptshell.html</link><description>&lt;p&gt;由于使用源码编译安装Nginx，不会像yum install那样自动生成Nginx服务控制脚本，所以需要自己添加一个操作脚本。谷歌上搜了一下，shell脚本的代码基本类似，因此自己稍微整理改动了下。&lt;/p&gt;
&lt;p&gt;下面的shell脚本内容，需要根据Nginx实际编译安装的配置，修改&lt;code&gt;NGINX_CONF_FILE="/etc/nginx/nginx.conf"&lt;/code&gt;和&lt;code&gt;lockfile=/var/lock/nginx.lock&lt;/code&gt;这两个参数（即前文&lt;a href="https://typecodes.com/web/centos7compilenginx.html" title="查看原文"&gt;《2015博客升级记(三)：CentOS 7.1编译安装Nginx1.9.0》&lt;/a&gt;中的configure配置）。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 06 Jun 2015 13:42:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-06:/web/nginxserviceoptshell.html</guid><category>web</category><category>nginx shell脚本</category><category>nginx</category></item><item><title>2015博客升级记(三)：CentOS 7.1编译安装Nginx1.9.0</title><link>https://typecodes.com/web/centos7compilenginx.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第三篇，主要记录如何在CentOS 7.1中编译安装Nginx官方最新的1.9.0版本。由于像Nginx、Mysql和PHP7的的源码都是用C/C++写的，所以自己的CentOS 7.1服务器上必须要安装gcc和g++软件（CentOS 7系列会自带这两个编译软件）。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS 7.1编译安装Nginx1.9.0" src="https://cdn.typecodes.com/2015/05/nginxlogo.png" title="CentOS 7.1编译安装Nginx1.9.0"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 03 Jun 2015 16:06:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-06-03:/web/centos7compilenginx.html</guid><category>web</category><category>博客成长录</category><category>nginx</category></item><item><title>Typecho评论中开启和使用Markdown的方法</title><link>https://typecodes.com/mix/typechocommentmarkdown.html</link><description>&lt;p&gt;轻量级的博客程序Typecho，还有一个很舒适的体验，那就是支持Markdown语法，不论是在文章或是评论中。这篇文章主要是说明如何在博客中使用Markdown写作以及如何在评论中使用Markdown语法。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Typecho评论中开启和使用Markdown的方法" src="https://cdn.typecodes.com/2015/05/typechomarkdown.png" title="Typecho评论中开启和使用Markdown的方法"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sun, 31 May 2015 18:20:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-05-31:/mix/typechocommentmarkdown.html</guid><category>mix</category><category>typecho markdown</category><category>markdown</category></item><item><title>视角：C语言将十六进制字符串转成十进制整数</title><link>https://typecodes.com/cseries/simplifychexstrtoint.html</link><description>&lt;p&gt;在前文&lt;a href="https://typecodes.com/cseries/againchexstrtointeger.html/comment-page-1#comment-1665" title="查看原文评论"&gt;《再议C语言将十六进制字符串转成十进制整数》&lt;/a&gt;中 &lt;a href="http://pewae.com/"&gt;@大致&lt;/a&gt; 童鞋帮忙提了一个思路：直接将指针&lt;code&gt;p&lt;/code&gt;读取的十六进制字符串中的单个字符转换后的结果保存在&lt;code&gt;iResult&lt;/code&gt;中，而不是保存在指针p指向的内存中。这样思路更为简洁，下面是具体的两个实现程序。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 30 May 2015 07:58:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-05-30:/cseries/simplifychexstrtoint.html</guid><category>cseries</category><category>十六进制字符串</category><category>十六进制转十进制</category><category>字符串转换</category></item><item><title>2015博客升级记(二)：Linux系统磁盘分区挂载和交换空间</title><link>https://typecodes.com/linux/centos7fdiskmountswap.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第二篇，主要记录在Linux系统中如何将磁盘进行分区和挂载。&lt;/p&gt;
------------操作说明------------               
Linux系统：       阿里云CentOS 7.1（20G）
操作工具：        SecureCRT 7.0
待挂载的数据盘：   24G
分区目标：        先分4G作为CentOS7.1系统的交换空间，剩余20G作为普通物理空间
&lt;/code&gt;&lt;/pre&gt;

</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Wed, 27 May 2015 19:31:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-05-27:/linux/centos7fdiskmountswap.html</guid><category>linux</category><category>博客成长录</category><category>linux挂载</category><category>分区挂载</category></item><item><title>2015博客升级记(一)：安装CentOS7后需要的操作</title><link>https://typecodes.com/linux/centos7afteroperate.html</link><description>&lt;p&gt;这是&lt;a href="https://typecodes.com/mix/2015updateblog.html" title="查看原文"&gt;《2015年博客升级记》&lt;/a&gt;系列文章的第一篇，主要记录安装完CentOS7后的一些优化操作，包括更换yum源并升级系统到CentOS7.1、使用sshd登录、修改机器名、vi映射为vim、vimrc的配置。&lt;/p&gt;
&lt;p&gt;&lt;img alt="安装CentOS7后需要的操作" src="https://cdn.typecodes.com/2015/05/centos7update.png" title="安装CentOS7后需要的操作"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 25 May 2015 16:27:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-05-25:/linux/centos7afteroperate.html</guid><category>linux</category><category>博客成长录</category><category>centos7</category></item><item><title>2015年博客升级记</title><link>https://typecodes.com/mix/2015updateblog.html</link><description>&lt;p&gt;这段时间对博客进行了一次升级，主要是从博客程序所在的系统服务器（CentOS）和WEB环境（LNMP）入手。目前自己的Linux服务器已经升级到CentOS7.1，同时LNMP环境也升级到了最新的版本。下面是整个升级过程的详细整理，记录一下方便以后查看。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2015博客升级记" src="https://cdn.typecodes.com/2015/05/updatemyblog.png" title="2015博客升级记"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Sat, 23 May 2015 17:25:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-05-23:/mix/2015updateblog.html</guid><category>mix</category><category>博客成长录</category></item><item><title>再议C语言将十六进制字符串转成十进制整数</title><link>https://typecodes.com/cseries/againchexstrtointeger.html</link><description>&lt;p&gt;前文&lt;a href="https://typecodes.com/cseries/clanghexstrtointeger.html" title="查看原文"&gt;《C语言将十六进制字符串转成十进制整数》&lt;/a&gt;讲述了将十六进制字符串中单个字符分别从高位到低位正序和从低位到高位逆序转换成对应的十进制数，今天在看原文的程序发现一个不好的地方：由于使用了&lt;code&gt;char * p = HexStr;&lt;/code&gt;，也就是直接使用指针p将这个十六进制字符串进行了读取和&lt;code&gt;改写&lt;/code&gt;。这样会造成在调用了&lt;code&gt;HexStr2Integer&lt;/code&gt;转换函数后，就不能再次使用这个十六进制字符串了。&lt;/p&gt;
&lt;p&gt;因此，在转换过程中，可以考虑将原来的这个十六进制字符串在内存中复制一份，然后再对这个复制的&lt;code&gt;副本&lt;/code&gt;进行读写，这样就产生副作用了。下面是根据原来的两个程序改进的的代码，主要通过&lt;code&gt;malloc&lt;/code&gt;函数开辟一个内存空间，然后复制十六进制字符串中的数据到这个内存空间中，最后对它进行“读写”。&lt;/p&gt;
&lt;p&gt;在下面这两个改进的代码中，还考虑到了这个十六进制字符串以&lt;code&gt;0x&lt;/code&gt;开头的形式出现，所以增加了这种情况的处理。&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Thu, 14 May 2015 19:55:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-05-14:/cseries/againchexstrtointeger.html</guid><category>cseries</category><category>十六进制字符串</category><category>十六进制转十进制</category><category>字符串转换</category></item><item><title>CentOS7系统如何修改主机名</title><link>https://typecodes.com/linux/centos7chghostname.html</link><description>&lt;p&gt;前段时间博客一直处于关闭状态，主要是做了一些升级。之前博主用的是CentOS6.5系统，然后升级到了如今的CentOS7版本。另外Nginx、Mysql和PHP都做了相应的版本升级，后续文章会给大家分享下。这篇文章主要讲讲CentOS7系统如何修改主机名。&lt;/p&gt;
&lt;p&gt;&lt;img alt="CentOS7系统如何修改主机名" src="https://cdn.typecodes.com/2015/04/centos7chghostname.png" title="CentOS7系统如何修改主机名"&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">vfhky</dc:creator><pubDate>Mon, 20 Apr 2015 23:00:00 +0800</pubDate><guid isPermaLink="false">tag:typecodes.com,2015-04-20:/linux/centos7chghostname.html</guid><category>linux</category><category>centos7</category><category>centos主机名</category></item></channel></rss>