<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Sae on ZRJ | 学习笔记</title>
        <link>https://blog.zrj.me/tags/sae/</link>
        <description>Recent content in Sae on ZRJ | 学习笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <lastBuildDate>Thu, 20 Dec 2012 13:00:46 +0800</lastBuildDate><atom:link href="https://blog.zrj.me/tags/sae/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>把 WordPress 搬出 SAE</title>
        <link>https://blog.zrj.me/posts/2012-12-20-%E6%8A%8A-wordpress-%E6%90%AC%E5%87%BA-sae/</link>
        <pubDate>Thu, 20 Dec 2012 13:00:46 +0800</pubDate>
        
        <guid>https://blog.zrj.me/posts/2012-12-20-%E6%8A%8A-wordpress-%E6%90%AC%E5%87%BA-sae/</guid>
        <description>&lt;p&gt;新浪的 SAE 是越做越差了，本着不折腾不舒服斯基的精神，今天上午把博客从 SAE 搬出来了，现在用的是 &lt;a class=&#34;link&#34; href=&#34;http://laoxuehost.com/&#34;  title=&#34;http://laoxuehost.com/&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://laoxuehost.com/&lt;/a&gt;，总的来说，搬一次博客还是很麻烦的，需要做的事情大约如下&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用 Cyberduck 把原来 SAE 上的附件批量下载了，需要注意的是，由于新浪的 SAE 商店中的 WordPress 是经过改写的，在那里上传的文件，都会进入新浪的云存储，而给到的链接是类似 &lt;a class=&#34;link&#34; href=&#34;http://zrj0-wordpress.stor.sinaapp.com/uploads/2012/11/Unnamed-QQ-Screenshot20121127223731.png&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://zrj0-wordpress.stor.sinaapp.com/uploads/2012/11/Unnamed-QQ-Screenshot20121127223731.png&lt;/a&gt; 这样的链接，而一个普通的 WordPress 博客的附件一般的路径是这样的，http://zrj.me/wp-content/uploads/2012/12/IMG_20120404_133850.jpg，所以我们需要把下载回来的附件打包好，上传到新的空间的 /wp-content/uploads 文件夹，解压缩&lt;/li&gt;
&lt;li&gt;然后在旧的博客，使用 WordPress 的导出工具，把原来的所有文章和标签啊，分类啊，导出成为一个 xml 文件，并在导出的文件中把前面提到的所有 &lt;a class=&#34;link&#34; href=&#34;http://zrj0-wordpress.stor.sinaapp.com/uploads/%28&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://zrj0-wordpress.stor.sinaapp.com/uploads/(&lt;/a&gt;*) 替换成 &lt;a class=&#34;link&#34; href=&#34;http://zrj.me/wp-content/uploads/%28&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://zrj.me/wp-content/uploads/(&lt;/a&gt;*)，保存好，导入新的 WordPress，在导入的时候，导入工具会报说 media 不能导入成功，但是这个时候文章中的图片其实是已经能够显示出来了&lt;/li&gt;
&lt;li&gt;然后就开始就是插件了，我用的插件就这么几个，syntaxhighlighter，这个用来代码高亮的，作为码农居家旅行杀人放火必备插件，然后就是 wp-limit-posts-automatically，这个是用来首页自动截断的，我想不通的是，WordPress 发展到今天，怎么在首页上还是会把一篇文章的所有内容全部输出呢，虽然在写文章的时候可以手工插入 more 标签，但是每次都这么手工去加，很累的啊，这个插件的好处在于可以自动截取前 300 个字符，这样首页看起来就整齐很多了，然后就是 wp-cumulus 3D Flash，这个用来做 Flash 的 3D 标签云，效果还是挺炫的，然后就是 wp-mail-smtp，这个是用来通过 SMTP 发送邮件的，跟后面要说的自动发回复提醒邮件的改动结合起来&lt;/li&gt;
&lt;li&gt;接下来改动文件，首先是一些自定义的 css，我改动的 css 包括，http://zrj.me/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/styles/shCore.css，这个文件的 57-58 行，&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;/* commented by ZRJ
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;	font-size: 1em !important; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;把他固定的字体大小改了，不然原来的代码字体很大，很容易就折行了，另外还有这个文件，http://zrj.me/wp-content/themes/twentyeleven/style.css，的 384-388 行，&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;/* style personalized by ZRJ */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c&#34;&gt;/* font-style: italic; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;border-left&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;5px&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;solid&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;DDD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;padding-left&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;20px&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c&#34;&gt;/* style personalized by ZRJ */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;把引用的样式改了，原来的是斜体，适合英文的引用，中文的斜体是在是无法直视，于是改成左边灰色竖线分割，还有 758-761 行，&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;/* style personalized by ZRJ */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;line-height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;font-family&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;Georgia&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c&#34;&gt;/* style personalized by ZRJ */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;把正文的行距和英文字体调整了一下，这样看起来舒服些，另外就是在 /wp-content/themes/twentyeleven/footer.php 中加入访问统计的 JS 代码，这个很简单，不再赘述
5. 最后需要改动的是 /wp-content/themes/twentyeleven/functions.php，加入在管理员在回复访客留言时自动发送邮件通知访客的功能，详情请看很久之前的文章，&lt;a class=&#34;link&#34; href=&#34;http://zrj.me/archives/89&#34;  title=&#34;从评论通知学电子邮件的原理&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;从评论通知学电子邮件的原理&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;经过这几步，基本上大体就迁移过来了，然后进入新的 WordPress 后台，简单设置一下，就算完工了。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>进一步理解 DNS</title>
        <link>https://blog.zrj.me/posts/2012-05-01-%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%90%86%E8%A7%A3-dns/</link>
        <pubDate>Tue, 01 May 2012 22:54:13 +0800</pubDate>
        
        <guid>https://blog.zrj.me/posts/2012-05-01-%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%90%86%E8%A7%A3-dns/</guid>
        <description>&lt;p&gt;把空间移到了新浪的 SAE 了，一来是发现海外的空间速度实在慢，在体会过新浪 SAE 的六线接入的一点瞬开的效果之后，直接被秒杀了，另外， DNS 的域名解析也迁移到了 DNSPod ，在 DNSPod 上做了 301 的跳转，于是现在的效果是速度很快，但是 URL 很恶心，不过权衡之后，我还是觉得速度更重要。&lt;/p&gt;
&lt;p&gt;说说新浪的 SAE ，SAE 的应用商店里面有专门改写过的 WordPress ，主要是数据库层面改写了，具体的还没有研究，不过这是稍晚的事，我现在的想法是想先读读 WordPress 的源码，昨天安装的时候，发现 WordPress 可以发邮件通知，虽然这不是什么很高深的功能，但是我倒是想到当时我的主机上好像没有主动开启 SMTP 服务啊，那么 PHP 的 mail 函数是怎么发出邮件的呢？于是决定就这个好好研究一下 PHP 的邮件模块。另外一个发现的就是 WordPress 的搜索功能支持空格的，数据库上我当然是没有做全文检索的，那么这个功能又是怎么实现的呢，我目前就只能想到用 SQL 的 like 来拼接，具体的实现还是要读源码啊。&lt;/p&gt;
&lt;p&gt;说说 DNSPod ，我们知道，一次 HTTP 请求发起之后，客户机会首先去用各种方法解析输入的域名，这里的各种方法包括本机的 hosts 文件，也包括请求网络的 DNS 服务，而 DNS 在各个层级都有缓存（相应的，缓存当然有过期时间，一般是 600 秒），在原来我的域名是托管在 Godaddy 做 A 解析的，域名的 NameServer 服务器当然是在海外，自然就慢了，后来迁移到新浪的 SAE 后，SAE 提供域名的绑定，但是要求做 CNAME 解析，可惜 Godaddy 是不支持对一级域名做 CNAME 解析的（估计是出于对 MX 解析冲突的考虑），于是没办法，我就把域名转到 DNSPod ，需要注意的是，这个地方的转移，其实只是把域名的解析服务转移出去，但是域名的根本管理权限还是在 Godaddy 的，怎么理解呢，简单的说，就是本来我们的机子向附近的 DNS 服务器请求解析域名，但是附近的 DNS 的并没有缓存我们请求的域名的记录，于是请求被向上转发，这里可能经过一次或者多次转发，然后到了某个层次的 DNS 服务器，一般是根服务器（顺便一提，DNS 的根服务器全球一共 13 台，没有一台在中国，具体情况可以参看维基百科的 &lt;a class=&#34;link&#34; href=&#34;http://zh.wikipedia.org/wiki/%E6%A0%B9%E5%9F%9F%E5%90%8D%E6%9C%8D%E5%8B%99%E5%99%A8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;根域名服务器&lt;/a&gt; 条目），他会最终处理这个请求，它查询发现我们这个被请求的域名是由类似 ns41.domaincontrol.com 或者 ns42.domaincontrol.com 这样的服务器解析的，但是，此处，根服务器并不会送佛送到西地找 ns41.domaincontrol.com 之类的解析，而是把这个负责域名的服务器地址返回给请求的服务器，于是下级的 DNS 向其中一个要求解析对应的地址，最终得到对应的 IP 地址，再层层下转，当然每层都应该会缓存，最后到了我们的机子，一次 DNS 解析请求就此完成，而在我们把域名转到 DNSPod 解析后，最终的解析请求就是由类似 f1g1ns1.dnspod.net 或者 f1g1ns2.dnspod.net 这样的服务器来解析的，这些服务器都是多线接入网络，自然响应速度比向海外的服务器请求要快了，到此，我们基本就理解了 A 解析了。&lt;/p&gt;
&lt;p&gt;但是那个 301 是什么回事呢？其实，一般 301 服务器跳转的实现，都是由 DNS 的 NameServer 服务商自己开一个 HTTP 请求服务器来帮忙实现的，我们可以尝试着发送一个 HTTP 的 HEAD 类请求来验证：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Date: Tue, 01 May 2012 21:54:27 GMT
Server: DNSPod v1.0
Location: http://zrj0.sinaapp.com
Content-Length: 0
Connection: close
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以看到返回的 Server 是写着 DNSPod 的，通过一次 ping 请求我们可以进一步验证这个想法：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C:&amp;gt;ping zrj.me

正在 Ping dnspod-free.urlpod.cn [70.39.107.178] 具有 32 字节的数据:
来自 70.39.107.178 的回复: 字节=32 时间=211ms TTL=47
来自 70.39.107.178 的回复: 字节=32 时间=211ms TTL=47
来自 70.39.107.178 的回复: 字节=32 时间=211ms TTL=47
来自 70.39.107.178 的回复: 字节=32 时间=211ms TTL=47

70.39.107.178 的 Ping 统计信息:
    数据包: 已发送 = 4，已接收 = 4，丢失 = 0 (0% 丢失)，
往返行程的估计时间(以毫秒为单位):
    最短 = 211ms，最长 = 211ms，平均 = 211ms

C:&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以清楚的看到，响应这个 ICMP 包的，就是 DNSPod 的服务器。至此，我们基本理解了 301 跳转类的域名解析服务了。&lt;/p&gt;
&lt;p&gt;其他的比较少用，而且今天刚好发现 DNSPod 上的帮助写的很不错，简单易懂，直接引用过来：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A记录：地址记录，用来指定域名的IPv4地址（如：8.8.8.8），如果需要将域名指向一个IP地址，就需要添加A记录。 CNAME： 如果需要将域名指向另一个域名，再由另一个域名提供ip地址，就需要添加CNAME记录。 TXT：在这里可以填写任何东西，长度限制255。绝大多数的TXT记录是用来做SPF记录（反垃圾邮件）。 NS：域名服务器记录，如果需要把子域名交给其他DNS服务商解析，就需要添加NS记录。 AAAA：用来指定主机名（或域名）对应的IPv6地址（例如：ff06:0:0:0:0:0:0:c3）记录。 MX：如果需要设置邮箱，让邮箱能收到邮件，就需要添加MX记录。 URL：从一个地址301重定向到另一个地址的时候，就需要添加URL记录（注：DNSPod目前只支持显性301重定向）。 SRV：记录了哪台计算机提供了哪个服务。格式为：服务的名字、点、协议的类型，例如：_xmpp-server._tcp。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;各类型的记录值一般是这样的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A记录：填写您服务器 IP，如果您不知道，请咨询您的空间商 CNAME记录：填写空间商给您提供的域名，例如：dnspod.cn MX记录：填写您邮件服务器的IP地址或企业邮局给您提供的域名，如果您不知道，请咨询您的邮件服务提供商 TXT记录：一般用于 Google、QQ等企业邮箱的反垃圾邮件设置 URL记录：填写要跳转到的网址，例如：http://www.baidu.com AAAA：不常用。解析到 IPv6 的地址。 NS记录：不常用。系统默认添加的两个NS记录请不要修改。NS向下授权，填写dns域名，例如：f1g1ns1.dnspod.net SRV记录：不常用。格式为：优先级、空格、权重、空格、端口、空格、主机名，记录生成后会自动在域名后面补一个“.”，这是正常现象。例如：5 0 5269 xmpp-server.l.google.com.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;========== Update ==========&lt;/p&gt;
&lt;p&gt;虽然 DNSPod 的域名解析是多线的，但是可惜的是，据官方说明，他的 301 服务器还是在海外，悲催的是，我转过来第一天就遇到 301 服务器悲剧的情况，于是现在 301 还是在 Godaddy 做。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;历史评论&#34;&gt;历史评论
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;zz&lt;/strong&gt; (2012-05-02 22:51:50):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;请问你这个域名是怎么绑定的？有经过备案么？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;ZRJ&lt;/strong&gt; (2012-05-03 11:53:24):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;域名是在 Godaddy 买的，不需要备案。
绑定的话，在 Goaddy 的 DNS Manager 面板可以设置把域名指定到哪个 IP ，或者 CNAME 到哪个域名。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;从点击到呈现 — 详解一次HTTP请求（2） | ZRJ&lt;/strong&gt; (2012-10-05 08:28:45):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] 如果在本地的 hosts 文件没有能够找到对应的 ip 地址，浏览器会向 dns 域名解析服务器发起域名解析请求，dns 的域名解析是递归的，（还有另外 dns 是迭代的），递归的 dns 首先会查看自己的 dns 缓存，如果缓存能够命中，那么就从缓存中把 ip 地址返回给浏览器，如果找不到对应的域名的 ip 地址，那么就向上转发请求，然后把得到的这个域名对应的 nameserver 的地址取得，再向这个 namserver 去请求域名对应的 ip，最后把这个 ip 地址返回给浏览器，不过怎么说，这个递归查询的过程，对于浏览器来说是透明的，他只要坐等 ip地址送回来就可以了。对于 DNS 的进一步理解，可以看这里，进一步理解 DNS [&amp;hellip;]&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
