<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MR.ASONG</title><link>https://mrasong.com/</link><description>Recent content on MR.ASONG</description><generator>Hugo -- 0.136.4</generator><language>zh-CN</language><lastBuildDate>Tue, 02 Sep 2025 10:02:38 +0800</lastBuildDate><atom:link href="https://mrasong.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>Docker 自定义默认地址池</title><link>https://mrasong.com/a/docker-default-address-pools/</link><pubDate>Tue, 02 Sep 2025 10:02:38 +0800</pubDate><guid>https://mrasong.com/a/docker-default-address-pools/</guid><description>&lt;p>修改 &lt;code>/etc/docker/daemon.json&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;registry-mirrors&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;https://docker.1ms.run&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;https://docker.m.daocloud.io&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;insecure-registries&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;https://docker.1ms.run&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;https://docker.m.daocloud.io&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;ipv6&amp;#34;&lt;/span>: &lt;span style="color:#e5c07b">true&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;fixed-cidr-v6&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;fd00:db8:1::/64&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;bip&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;172.16.0.1/24&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;default-address-pools&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;base&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;172.16.0.0/16&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;size&amp;#34;&lt;/span>: &lt;span style="color:#d19a66">24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;base&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;fd07:b51a:cc66:d000::/56&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;size&amp;#34;&lt;/span>: &lt;span style="color:#d19a66">64&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>升级 Sequoia 后，磁盘工具中多出 Creedence11M6270...</title><link>https://mrasong.com/a/macos-creedence11m6270/</link><pubDate>Mon, 02 Dec 2024 10:02:38 +0800</pubDate><guid>https://mrasong.com/a/macos-creedence11m6270/</guid><description>&lt;p>升级 Sequoia 后，磁盘工具中多出 &lt;code>Creedence11M6270.SECUREPKITRUSTSTOREASSETS_SECUREPKITRUSTSTORE_Cryptex&lt;/code> 镜像，无法卸载，也无法弹出。&lt;/p>
&lt;p>后经 Q 群友 &lt;code>676xxx396&lt;/code> 提示，删除 &lt;code>/System/Library/AssetsV2/com_apple_MobileAsset_PKITrustStore&lt;/code> 文件夹重启即可不再显示。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>sudo rm -rf /System/Library/AssetsV2/com_apple_MobileAsset_PKITrustStore
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>注意：
删除过程中可能会提示 目录只读，无法删除等，不用管它，重启即可。&lt;/p></description></item><item><title>远程登录 mac SSH 提示 Permission denied (publickey)</title><link>https://mrasong.com/a/mac-ssh-permission-denied/</link><pubDate>Mon, 11 Nov 2024 10:04:21 +0800</pubDate><guid>https://mrasong.com/a/mac-ssh-permission-denied/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>Permission denied &lt;span style="color:#56b6c2">(&lt;/span>publickey&lt;span style="color:#56b6c2">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>远程登录 mac SSH 提示 Permission denied (publickey)，如果密钥正确，检查 &lt;code>~/.ssh&lt;/code> 目录及文件权限。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e"># change this to YOUR username on the server.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e06c75">YOURUSER&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>ma
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>&lt;span style="color:#7f848e"># paste these lines verbatim:~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>sudo chown &lt;span style="color:#e06c75">$YOURUSER&lt;/span>:&lt;span style="color:#e06c75">$YOURUSER&lt;/span> ~/&lt;span style="color:#e06c75">$YOURUSER&lt;/span>/&lt;span style="color:#56b6c2">{&lt;/span>.,.ssh/,.ssh/authorized_keys&lt;span style="color:#56b6c2">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>sudo chmod u+rwX,go-rwX,-t ~/&lt;span style="color:#e06c75">$YOURUSER&lt;/span>/&lt;span style="color:#56b6c2">{&lt;/span>.ssh/,.ssh/authorized_keys&lt;span style="color:#56b6c2">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">8&lt;/span>&lt;span>sudo chmod go-w ~/&lt;span style="color:#e06c75">$YOURUSER&lt;/span>/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>修改 MacOS SSH 端口号</title><link>https://mrasong.com/a/mac-ssh-port/</link><pubDate>Fri, 01 Nov 2024 13:37:17 +0800</pubDate><guid>https://mrasong.com/a/mac-ssh-port/</guid><description>&lt;h3 id="修改默认端口">修改默认端口&lt;/h3>
&lt;ol>
&lt;li>打开终端，输入 &lt;code>sudo vi /etc/services&lt;/code>，输入 mac 密码，然后回车，进入编辑模式&lt;/li>
&lt;li>找到 &lt;code>ssh&lt;/code> 服务所在行，如下：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>ssh 22/udp &lt;span style="color:#7f848e"># SSH Remote Login Protocol&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>ssh 22/tcp &lt;span style="color:#7f848e"># SSH Remote Login Protocol&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>修改 &lt;code>22&lt;/code> 为 你要修改的端口号，例如 &lt;code>10022&lt;/code> ，保存 &lt;code>:wq&lt;/code> 退出。 3. 重启 ssh 服务，打开 terminal，输入以下命令重启 &lt;code>ssh&lt;/code> 服务：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="4">
&lt;li>现在就可以使用 &lt;code>10022&lt;/code> 端口来登录你的 mac 了。&lt;/li>
&lt;/ol>
&lt;h3 id="注意">注意&lt;/h3>
&lt;p>修改默认端口号后，使用&lt;code>ssh&lt;/code>命令时，默认端口会发生改变，需要加上 &lt;code>-p&lt;/code> 参数才能访问默认&lt;code>22&lt;/code>端口的服务。
例如：
&lt;code>ssh root@localhost&lt;/code> 会连接 &lt;code>10022&lt;/code> 端口。&lt;/p></description></item><item><title>Alpine 的 CGO 问题</title><link>https://mrasong.com/a/alpine-cgo/</link><pubDate>Sat, 28 Sep 2024 14:58:54 +0800</pubDate><guid>https://mrasong.com/a/alpine-cgo/</guid><description>&lt;p>Alpine 编译 CGO 时，需要添加一些依赖包。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>包名&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>tzdata&lt;/td>
&lt;td>时区&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ca-certificates&lt;/td>
&lt;td>CA 证书库&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>libc6-compat&lt;/td>
&lt;td>兼容 glibc&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>libgcc&lt;/td>
&lt;td>gcc 运行库 CGO 依赖&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>libstdc++&lt;/td>
&lt;td>C++ 运行库&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>以下为示例 Dockerfile 内容：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-dockerfile" data-lang="dockerfile">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">#build stage&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#c678dd">FROM&lt;/span>&lt;span style="color:#98c379"> golang:1.23-alpine AS builder&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#c678dd">ARG&lt;/span> BUILD_VERSION
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#c678dd">ARG&lt;/span> BUILD_TIME
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#c678dd">WORKDIR&lt;/span>&lt;span style="color:#98c379"> /app&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#c678dd">COPY&lt;/span> . .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#c678dd">RUN&lt;/span> sed -i &lt;span style="color:#98c379">&amp;#39;s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g&amp;#39;&lt;/span> /etc/apk/repositories
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#c678dd">RUN&lt;/span> apk add -U tzdata &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#c678dd">RUN&lt;/span> go build -ldflags &lt;span style="color:#98c379">&amp;#34;-s -w -X ceic/global.AppVersion=&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">BUILD_VERSION&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379"> -X ceic/global.AppBuild=&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">BUILD_TIME&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span> -mod&lt;span style="color:#56b6c2">=&lt;/span>vendor -v -o ceic .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#7f848e">#final stage&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#c678dd">FROM&lt;/span>&lt;span style="color:#98c379"> alpine:latest&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#c678dd">ARG&lt;/span> BUILD_VERSION
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#c678dd">WORKDIR&lt;/span>&lt;span style="color:#98c379"> /app&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#c678dd">RUN&lt;/span> sed -i &lt;span style="color:#98c379">&amp;#39;s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g&amp;#39;&lt;/span> /etc/apk/repositories
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#c678dd">RUN&lt;/span> apk --no-cache add libc6-compat libgcc libstdc++
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>&lt;span style="color:#c678dd">COPY&lt;/span> --from&lt;span style="color:#56b6c2">=&lt;/span>builder /etc/localtime /etc/localtime
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#c678dd">COPY&lt;/span> --from&lt;span style="color:#56b6c2">=&lt;/span>builder /app/ceic /app/ceic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#c678dd">ENTRYPOINT&lt;/span> [&lt;span style="color:#98c379">&amp;#34;/app/ceic&amp;#34;&lt;/span>, &lt;span style="color:#98c379">&amp;#34;serve&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#c678dd">LABEL&lt;/span> &lt;span style="color:#e06c75">Name&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>ceic &lt;span style="color:#e06c75">Version&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">BUILD_VERSION&lt;/span>&lt;span style="color:#98c379">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#c678dd">EXPOSE&lt;/span>&lt;span style="color:#98c379"> 3000&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>关于之前提到 Chrome 大量写硬盘的问题</title><link>https://mrasong.com/a/remove-adblock-plus/</link><pubDate>Wed, 05 Jun 2024 10:39:24 +0800</pubDate><guid>https://mrasong.com/a/remove-adblock-plus/</guid><description>&lt;p>目前还看，好像是 &lt;code>Adblock Plus&lt;/code> 插件，导致 Chrome 持续写入硬盘的。&lt;/p>
&lt;p>删除此插件后，写入量趋于正常。&lt;/p></description></item><item><title>再见，Chrome！</title><link>https://mrasong.com/a/bye-chrome/</link><pubDate>Thu, 30 May 2024 15:24:36 +0800</pubDate><guid>https://mrasong.com/a/bye-chrome/</guid><description>&lt;h3 id="问题">问题&lt;/h3>
&lt;p>不知不觉，已经使用 Chrome 十几年了，一直是在用它，但是最近，一些恶心的操作，让我不得不放弃使用它。&lt;/p>
&lt;p>本人平时没有关电脑的习惯，常年 24*365 开机。&lt;/p>
&lt;p>自从去年 11 月，我的 Mac 硬盘写入量就莫名其妙的激增，半年时间，写入量高达 20T。&lt;/p></description></item><item><title>黑苹果 Sonoma 14.4 安装循环重启</title><link>https://mrasong.com/a/hackintosh-sonoma-14.4-install-loop/</link><pubDate>Wed, 03 Apr 2024 16:47:03 +0800</pubDate><guid>https://mrasong.com/a/hackintosh-sonoma-14.4-install-loop/</guid><description>&lt;p>黑苹果在升级到 &lt;code>14.4&lt;/code> (或 &lt;code>14.4.1&lt;/code>) 时，安装过程会循环重启，导致无法安装。&lt;/p>
&lt;p>解决方法&lt;/p>
&lt;ol>
&lt;li>禁用 &lt;code>WiFi&lt;/code> 和蓝牙驱动，等升级完成后再重新启用。&lt;/li>
&lt;li>修改 OC &lt;code>config.plist&lt;/code>，将 &lt;code>Misc&lt;/code> &lt;code>Security&lt;/code> &lt;code>SecureBootModel&lt;/code> 改为 &lt;code>Disabled&lt;/code>&lt;/li>
&lt;li>重新更新安装。&lt;/li>
&lt;/ol></description></item><item><title>博客引擎换为 Hugo</title><link>https://mrasong.com/a/change-to-hugo-and-vercel/</link><pubDate>Tue, 02 Apr 2024 12:45:14 +0800</pubDate><guid>https://mrasong.com/a/change-to-hugo-and-vercel/</guid><description>&lt;p>将博客引擎从 &lt;a href="https://typecho.org/">typecho&lt;/a> 换为 &lt;a href="https://gohugo.io/">Hugo&lt;/a>&lt;/p>
&lt;p>并且托管于 &lt;a href="https://vercel.com/">Vercel&lt;/a>.&lt;/p></description></item><item><title>查询所有未注册域名脚本</title><link>https://mrasong.com/a/query-all-unregistered-domains/</link><pubDate>Thu, 28 Mar 2024 16:28:54 +0800</pubDate><guid>https://mrasong.com/a/query-all-unregistered-domains/</guid><description>&lt;p>写了个查询所有未注册域名的脚本，分享给大家。&lt;/p>
&lt;p>Demo 是查询所有&lt;code>3位纯字母&lt;/code> &lt;code>.me&lt;/code> 域名，可以自己修改。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">DOMAIN&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>me &lt;span style="color:#7f848e"># domain suffix&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#e06c75">LENGTH&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">3&lt;/span> &lt;span style="color:#7f848e"># length of domain&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#e06c75">TIMEOUT&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;gtimeout 5&amp;#34;&lt;/span> &lt;span style="color:#7f848e"># timeout command, can be gtimeout or timeout or empty&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#e06c75">MATCH_STRING&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;Domain not found&amp;#34;&lt;/span> &lt;span style="color:#7f848e"># unregisterd string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#e06c75">CHARS&lt;/span>&lt;span style="color:#56b6c2">=(&lt;/span>a b c d e f g h i j k l m n o p q r s t u v w x y z&lt;span style="color:#56b6c2">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#7f848e"># CHARS=(a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e"># CHARS=(0 1 2 3 4 5 6 7 8 9)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> find&lt;span style="color:#56b6c2">()&lt;/span> &lt;span style="color:#56b6c2">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#56b6c2">[[&lt;/span> &lt;span style="color:#c678dd">$(&lt;/span>&lt;span style="color:#e06c75">$TIMEOUT&lt;/span> whois &lt;span style="color:#e06c75">$1&lt;/span> | grep -i &lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#e06c75">$MATCH_STRING&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#c678dd">)&lt;/span> &lt;span style="color:#56b6c2">]]&lt;/span>; &lt;span style="color:#c678dd">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e5c07b">echo&lt;/span> &lt;span style="color:#e06c75">$1&lt;/span> &lt;span style="color:#98c379">&amp;#34;available&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#e5c07b">echo&lt;/span> &lt;span style="color:#e06c75">$1&lt;/span> &amp;gt;&amp;gt;&lt;span style="color:#e06c75">$DOMAIN&lt;/span>.txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#c678dd">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#56b6c2">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> query&lt;span style="color:#56b6c2">()&lt;/span> &lt;span style="color:#56b6c2">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> &lt;span style="color:#e5c07b">local&lt;/span> &lt;span style="color:#e06c75">len&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> &lt;span style="color:#e5c07b">local&lt;/span> &lt;span style="color:#e06c75">prefix&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#56b6c2">[[&lt;/span> &lt;span style="color:#e06c75">$len&lt;/span> -gt &lt;span style="color:#d19a66">0&lt;/span> &lt;span style="color:#56b6c2">]]&lt;/span>; &lt;span style="color:#c678dd">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> i in &lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">CHARS&lt;/span>[@]&lt;span style="color:#98c379">}&lt;/span>; &lt;span style="color:#c678dd">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> &lt;span style="color:#e5c07b">echo&lt;/span> &lt;span style="color:#e06c75">$prefix$i&lt;/span>.&lt;span style="color:#e06c75">$DOMAIN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span> query &lt;span style="color:#c678dd">$((&lt;/span>&lt;span style="color:#e06c75">$len&lt;/span> &lt;span style="color:#56b6c2">-&lt;/span> &lt;span style="color:#d19a66">1&lt;/span>&lt;span style="color:#c678dd">))&lt;/span> &lt;span style="color:#e06c75">$prefix$i&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span> &lt;span style="color:#c678dd">done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#c678dd">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> find &lt;span style="color:#e06c75">$prefix&lt;/span>.&lt;span style="color:#e06c75">$DOMAIN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span> &lt;span style="color:#c678dd">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span>&lt;span style="color:#56b6c2">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span>query &lt;span style="color:#e06c75">$LENGTH&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://gist.github.com/mrasong/38f994c6c26d238eae4936289fb68f47">Gist link&lt;/a>&lt;/p></description></item><item><title>海尔云悦mini n-Txx 刷华擎deskmini H470 bios方法</title><link>https://mrasong.com/a/haier-mini-nt-to-asrock-bios/</link><pubDate>Wed, 20 Dec 2023 21:28:00 +0800</pubDate><guid>https://mrasong.com/a/haier-mini-nt-to-asrock-bios/</guid><description>&lt;ol>
&lt;li>下载华擎 deskmini h470 BIOS&lt;/li>
&lt;li>解压下载后的 bios 包&lt;/li>
&lt;li>重命名为&lt;code>H470MSTXHE09&lt;/code>（最后两位为版本号）&lt;/li>
&lt;li>将重命名后的 bios 文件放下 fat32 U 盘中&lt;/li>
&lt;li>重启进入 bios，进行 bios 升级&lt;/li>
&lt;/ol></description></item><item><title>nmcli 添加静态路由</title><link>https://mrasong.com/a/nmcli-static-routes/</link><pubDate>Mon, 03 Apr 2023 15:03:00 +0800</pubDate><guid>https://mrasong.com/a/nmcli-static-routes/</guid><description>&lt;p>使用 &lt;code>nmcli connection modify connection_name +ipv4.routes &amp;quot;&amp;quot;&lt;/code> 来添加静态路由。&lt;/p>
&lt;p>简化版 &lt;code>nmcli c m connection_name +ipv4.routes &amp;quot;&amp;quot;&lt;/code>&lt;/p>
&lt;p>如果您使用 ipv4.routes 子命令，&lt;code>nmcli&lt;/code> 会覆盖这个参数的所有当前设置。&lt;/p>
&lt;p>要添加额外路由，请使用 &lt;code>nmcli c m connection_name +ipv4.routes &amp;quot;&amp;quot;&lt;/code> 命令。&lt;/p></description></item><item><title>macOS 13 Ventura SSH报错解决</title><link>https://mrasong.com/a/ventura-ssh-error/</link><pubDate>Wed, 30 Nov 2022 11:29:15 +0800</pubDate><guid>https://mrasong.com/a/ventura-ssh-error/</guid><description>&lt;p>给 &lt;code>~/.ssh/config&lt;/code> 添加以下两行&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span> HostkeyAlgorithms +ssh-rsa
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> PubkeyAcceptedKeyTypes +ssh-rsa
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>Host *
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> AddKeysToAgent yes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> UseKeychain yes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> ServerAliveInterval 60
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span> HostkeyAlgorithms +ssh-rsa
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span> PubkeyAcceptedKeyTypes +ssh-rsa
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Go N个协程交替打印1-100</title><link>https://mrasong.com/a/go-goroutine/</link><pubDate>Wed, 24 Aug 2022 16:39:00 +0800</pubDate><guid>https://mrasong.com/a/go-goroutine/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">package&lt;/span> &lt;span style="color:#e06c75">main&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#c678dd">import&lt;/span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;runtime&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#c678dd">func&lt;/span> &lt;span style="color:#61afef;font-weight:bold">main&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">goroutine&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#e06c75">runtime&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">NumCPU&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#e06c75">chanSlice&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#e5c07b">make&lt;/span>([]&lt;span style="color:#c678dd">chan&lt;/span> &lt;span style="color:#c678dd">struct&lt;/span>{}, &lt;span style="color:#d19a66">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#e06c75">chanExit&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#e5c07b">make&lt;/span>(&lt;span style="color:#c678dd">chan&lt;/span> &lt;span style="color:#c678dd">struct&lt;/span>{}, &lt;span style="color:#d19a66">1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">i&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>; &lt;span style="color:#e06c75">i&lt;/span> &amp;lt; &lt;span style="color:#e06c75">goroutine&lt;/span>; &lt;span style="color:#e06c75">i&lt;/span>&lt;span style="color:#56b6c2">++&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#e06c75">chanSlice&lt;/span> = &lt;span style="color:#e5c07b">append&lt;/span>(&lt;span style="color:#e06c75">chanSlice&lt;/span>, &lt;span style="color:#e5c07b">make&lt;/span>(&lt;span style="color:#c678dd">chan&lt;/span> &lt;span style="color:#c678dd">struct&lt;/span>{}, &lt;span style="color:#d19a66">1&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> &lt;span style="color:#e06c75">max&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#d19a66">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> &lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#e06c75">fmt&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">Println&lt;/span>(&lt;span style="color:#98c379">&amp;#34;runtime.NumCPU(): &amp;#34;&lt;/span>, &lt;span style="color:#e06c75">runtime&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">NumCPU&lt;/span>())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">i&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>; &lt;span style="color:#e06c75">i&lt;/span> &amp;lt; &lt;span style="color:#e06c75">goroutine&lt;/span>; &lt;span style="color:#e06c75">i&lt;/span>&lt;span style="color:#56b6c2">++&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> &lt;span style="color:#c678dd">go&lt;/span> &lt;span style="color:#c678dd">func&lt;/span>(&lt;span style="color:#e06c75">x&lt;/span> &lt;span style="color:#e5c07b">int&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span> &lt;span style="color:#56b6c2">&amp;lt;-&lt;/span>&lt;span style="color:#e06c75">chanSlice&lt;/span>[&lt;span style="color:#e06c75">x&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#e06c75">num&lt;/span>&lt;span style="color:#56b6c2">++&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> &lt;span style="color:#e06c75">fmt&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">Println&lt;/span>(&lt;span style="color:#98c379">&amp;#34;goroutine: &amp;#34;&lt;/span>, &lt;span style="color:#e06c75">x&lt;/span>, &lt;span style="color:#98c379">&amp;#34; chan: &amp;#34;&lt;/span>, &lt;span style="color:#e06c75">chanSlice&lt;/span>[&lt;span style="color:#e06c75">x&lt;/span>], &lt;span style="color:#98c379">&amp;#34; num: &amp;#34;&lt;/span>, &lt;span style="color:#e06c75">num&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">==&lt;/span> &lt;span style="color:#e06c75">max&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span> &lt;span style="color:#e06c75">chanExit&lt;/span> &lt;span style="color:#56b6c2">&amp;lt;-&lt;/span> &lt;span style="color:#c678dd">struct&lt;/span>{}{}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span> &lt;span style="color:#c678dd">break&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span> &lt;span style="color:#e06c75">chanSlice&lt;/span>[(&lt;span style="color:#e06c75">x&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">1&lt;/span>)&lt;span style="color:#56b6c2">%&lt;/span>&lt;span style="color:#e06c75">goroutine&lt;/span>] &lt;span style="color:#56b6c2">&amp;lt;-&lt;/span> &lt;span style="color:#c678dd">struct&lt;/span>{}{}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span> }(&lt;span style="color:#e06c75">i&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span> &lt;span style="color:#e06c75">chanSlice&lt;/span>[&lt;span style="color:#d19a66">0&lt;/span>] &lt;span style="color:#56b6c2">&amp;lt;-&lt;/span> &lt;span style="color:#c678dd">struct&lt;/span>{}{}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span> &lt;span style="color:#c678dd">select&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">42&lt;/span>&lt;span> &lt;span style="color:#c678dd">case&lt;/span> &lt;span style="color:#56b6c2">&amp;lt;-&lt;/span>&lt;span style="color:#e06c75">chanExit&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">43&lt;/span>&lt;span> &lt;span style="color:#e06c75">fmt&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">Println&lt;/span>(&lt;span style="color:#98c379">&amp;#34;exit&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">44&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">45&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">46&lt;/span>&lt;span> &lt;span style="color:#e06c75">fmt&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">Println&lt;/span>(&lt;span style="color:#98c379">&amp;#34;goroutine: &amp;#34;&lt;/span>, &lt;span style="color:#e06c75">runtime&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">NumGoroutine&lt;/span>())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">47&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://go.dev/play/p/MFmTkq_zNbT">Run on Go Playground&lt;/a>&lt;/p></description></item><item><title>Intel NUC10 Hackintosh OpenCore EFI</title><link>https://mrasong.com/a/intel-nuc10-hackintosh-opencore-efi/</link><pubDate>Tue, 19 Jan 2021 12:33:00 +0800</pubDate><guid>https://mrasong.com/a/intel-nuc10-hackintosh-opencore-efi/</guid><description>&lt;h2 id="intel-nuc10-hackintosh-opencore-efihttpsgithubcomhackintosh-efiintel-nuc10">&lt;a href="https://github.com/hackintosh-efi/intel-nuc10">Intel NUC10 Hackintosh OpenCore EFI&lt;/a>&lt;/h2>
&lt;h3 id="opencore">&lt;strong>OpenCore&lt;/strong>&lt;/h3>
&lt;p>&lt;a href="https://github.com/acidanthera/OpenCorePkg">OpenCore 0.8.2&lt;/a>&lt;/p>
&lt;h3 id="adapted">&lt;strong>Adapted&lt;/strong>&lt;/h3>
&lt;p>ꔷ NUC10i7FNH/FNK
ꔷ NUC10i5FNH/FNK
ꔷ NUC10i3FNH/FNK&lt;/p>
&lt;h3 id="os-version-tested">&lt;strong>OS Version Tested&lt;/strong>&lt;/h3>
&lt;p>ꔷ macOS Monterey 12.x (Default config.plist)
ꔷ macOS Big Sur 11.6.x (Replace config.plist with config.BigSur.plist)
ꔷ macOS Catalina 10.15.x (Replace config.plist with config.Catalina.plist)&lt;/p>
&lt;h3 id="known-issue">&lt;strong>Known issue&lt;/strong>&lt;/h3>
&lt;p>ꔷ Thunderbolt 3 Support very buggy.
ꔷ Continuity features not work(EXCEPT HandOff and Universal Clipboard).&lt;/p></description></item><item><title>OpenCore 设置默认启动项</title><link>https://mrasong.com/a/opencore-default-boot/</link><pubDate>Sun, 27 Dec 2020 16:18:00 +0800</pubDate><guid>https://mrasong.com/a/opencore-default-boot/</guid><description>&lt;p>在启动菜单中选中默认要启动的选项，按&lt;code>Ctrl+Enter&lt;/code>或&lt;code>Ctrl+启动项序号&lt;/code>即可。&lt;/p>
&lt;p>如下要将第 2 项 &lt;code>Mac&lt;/code> 设置为默认启动项，则可以通过&lt;code>Ctrl+2&lt;/code>或&lt;code>Ctrl+Enter&lt;/code>设置。&lt;/p></description></item><item><title>黑苹果EFI分区空间占满处理方法</title><link>https://mrasong.com/a/hackintosh-efi-format/</link><pubDate>Tue, 24 Nov 2020 11:44:00 +0800</pubDate><guid>https://mrasong.com/a/hackintosh-efi-format/</guid><description>&lt;p>黑苹果 EFI 分区在更新 EFI 文件后，空间会慢慢变小，直到有一天。。。。空间被占满了。
然而，想清理下呢，也没有其它文件，只好格式化了。
搜索了好多资料，也没找到好点的格式化方法，最后自己研究了下进恢复模式格式化了。
下面放上方法。&lt;/p></description></item><item><title>macOS 命令行升级</title><link>https://mrasong.com/a/macos-softwareupdate/</link><pubDate>Thu, 08 Oct 2020 13:52:49 +0800</pubDate><guid>https://mrasong.com/a/macos-softwareupdate/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>softwareupdate --install -a
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>使用docker搭建transmission Client</title><link>https://mrasong.com/a/docker-transmission-client/</link><pubDate>Fri, 14 Aug 2020 13:33:00 +0800</pubDate><guid>https://mrasong.com/a/docker-transmission-client/</guid><description>&lt;blockquote>
&lt;p>Transmission
A fast, easy, and free BitTorrent client&lt;/p>
&lt;/blockquote>
&lt;p>官网：&lt;a href="https://transmissionbt.com/">https://transmissionbt.com/&lt;/a>&lt;br>
Docker 镜像：&lt;a href="https://hub.docker.com/r/linuxserver/transmission">https://hub.docker.com/r/linuxserver/transmission&lt;/a>&lt;/p>
&lt;h3 id="docker-composeyml">&lt;code>docker-compose.yml&lt;/code>&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#e06c75">version&lt;/span>: &lt;span style="color:#98c379">&amp;#34;3&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#e06c75">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#e06c75">transmission&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#e06c75">image&lt;/span>: linuxserver/transmission
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#e06c75">container_name&lt;/span>: transmission
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#e06c75">environment&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> - PUID=1000
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> - PGID=1000
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> - TZ=Asia/Shanghai
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> - TRANSMISSION_WEB_HOME=/transmission-web-control/ &lt;span style="color:#7f848e"># 可选 /combustion-release/, /transmission-web-control/, /kettu/ 三个UI主题&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> - USER=username &lt;span style="color:#7f848e"># http简单认证 用户名&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> - PASS=password &lt;span style="color:#7f848e"># http简单认证 密码&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#e06c75">restart&lt;/span>: unless-stopped
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#e06c75">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> - web
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#e06c75">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> - ./config:/config &lt;span style="color:#7f848e"># 配置文件（不用管，可以在web ui设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> - ./downloads:/downloads &lt;span style="color:#7f848e"># bt文件下载路径映射&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> - ./watch:/watch &lt;span style="color:#7f848e">#&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#e06c75">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> - &lt;span style="color:#d19a66">9091&lt;/span>:&lt;span style="color:#d19a66">9091&lt;/span> &lt;span style="color:#7f848e"># Web UI 端口&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span> - &lt;span style="color:#d19a66">51413&lt;/span>:&lt;span style="color:#d19a66">51413&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> - &lt;span style="color:#d19a66">51413&lt;/span>:&lt;span style="color:#d19a66">51413&lt;/span>/udp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span>&lt;span style="color:#e06c75">networks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#e06c75">web&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> &lt;span style="color:#e06c75">external&lt;/span>: &lt;span style="color:#e5c07b">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="启动">启动&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>docker-compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="tips">Tips&lt;/h3>
&lt;p>建议 openresty(nginx) 做反向代理，用域名访问 webui，&lt;br>
如 &lt;code>bt.torrent.com:80 =&amp;gt; transmission:9091&lt;/code>&lt;/p></description></item><item><title>Gio</title><link>https://mrasong.com/a/gioui/</link><pubDate>Sun, 05 Jul 2020 09:55:28 +0800</pubDate><guid>https://mrasong.com/a/gioui/</guid><description>&lt;p>Immediate mode GUI programs in Go for Android, iOS, macOS, Linux, FreeBSD, OpenBSD, Windows, and WebAssembly (experimental).&lt;/p>
&lt;p>&lt;a href="https://gioui.org">gioui.org&lt;/a>&lt;/p></description></item><item><title>Docker Compose Container 之间相互通信</title><link>https://mrasong.com/a/82cec96096d4281b7c95cd7e74623496/</link><pubDate>Fri, 06 Dec 2019 16:16:00 +0800</pubDate><guid>https://mrasong.com/a/82cec96096d4281b7c95cd7e74623496/</guid><description>&lt;p>Docker Compose Container 之前相互通信&lt;/p>
&lt;p>因 links 属性已被废弃，官方建议使用 networks 来将几个 container 划分至一个网络，从而实现 container 之间互通。&lt;/p>
&lt;h3 id="创建一个桥接网络">创建一个桥接网络&lt;/h3>
&lt;p>&lt;code>docker network create YOUR_NET_NAME&lt;/code>
默认网络方式即为桥接
&lt;code>YOUR_NET_NAME&lt;/code>为你自定义的网络名称&lt;/p></description></item><item><title>Nginx Hardening Checklist</title><link>https://mrasong.com/a/nginx-hardening-checklist/</link><pubDate>Wed, 22 May 2019 11:12:04 +0800</pubDate><guid>https://mrasong.com/a/nginx-hardening-checklist/</guid><description>&lt;p>&lt;img alt="nginx-hardening-checklist.png" loading="lazy" src="https://mrasong.com/attachment/2019/05/f3cebf65-355f-3973-2230-db6cd36b9d2d.png">&lt;/p></description></item><item><title>macOS 10.14 设置4位以下密码</title><link>https://mrasong.com/a/macos-1014-weak-passwd/</link><pubDate>Sun, 12 May 2019 20:30:34 +0800</pubDate><guid>https://mrasong.com/a/macos-1014-weak-passwd/</guid><description>&lt;p>macOS 10.14 后，系统不能设置 4 位以下密码。&lt;/p>
&lt;p>解决方法：&lt;/p>
&lt;p>打开终端或 Iterm2:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>pwpolicy -clearaccountpolicies
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后修改密码，或直接命令行修改&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>passwd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>GO emoji 正则表达式</title><link>https://mrasong.com/a/emoji-regexp-for-go/</link><pubDate>Thu, 28 Mar 2019 10:49:00 +0800</pubDate><guid>https://mrasong.com/a/emoji-regexp-for-go/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#7f848e">// emoji regexp
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e">// \{1F300}-\x{1F64F}\x{1F680}-\x{1F6FF}\x{2600}-\x{2B55}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">emoji&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#98c379">`😂`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#e06c75">matched&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#e06c75">regexp&lt;/span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span> &lt;span style="color:#61afef;font-weight:bold">MustCompile&lt;/span>(&lt;span style="color:#98c379">`^[a-zA-Z0-9_\p{Han}\{1F300}-\x{1F64F}\x{1F680}-\x{1F6FF}\x{2600}-\x{2B55}]{1,20}$`&lt;/span>).
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span> &lt;span style="color:#61afef;font-weight:bold">Match&lt;/span>([]&lt;span style="color:#e5c07b">byte&lt;/span>(&lt;span style="color:#e06c75">emoji&lt;/span>)); &lt;span style="color:#e5c07b">true&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span> &lt;span style="color:#e06c75">log&lt;/span>.&lt;span style="color:#61afef;font-weight:bold">Println&lt;/span>(&lt;span style="color:#e06c75">matched&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">8&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>SubString for go (works well with unicode)</title><link>https://mrasong.com/a/substring-for-go/</link><pubDate>Fri, 25 Jan 2019 16:24:00 +0800</pubDate><guid>https://mrasong.com/a/substring-for-go/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">// SubString works well with unicode
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">func&lt;/span> &lt;span style="color:#61afef;font-weight:bold">SubString&lt;/span>(&lt;span style="color:#e06c75">str&lt;/span> &lt;span style="color:#e5c07b">string&lt;/span>, &lt;span style="color:#e06c75">start&lt;/span> &lt;span style="color:#e5c07b">int&lt;/span>, &lt;span style="color:#e06c75">length&lt;/span> &lt;span style="color:#e5c07b">int&lt;/span>) &lt;span style="color:#e5c07b">string&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#e06c75">r&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> []&lt;span style="color:#e5c07b">rune&lt;/span>(&lt;span style="color:#e06c75">str&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#e06c75">n&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#e5c07b">len&lt;/span>(&lt;span style="color:#e06c75">r&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#e06c75">start&lt;/span> &lt;span style="color:#56b6c2">&amp;gt;=&lt;/span> &lt;span style="color:#e06c75">n&lt;/span> &lt;span style="color:#56b6c2">||&lt;/span> &lt;span style="color:#e06c75">length&lt;/span> &lt;span style="color:#56b6c2">&amp;lt;=&lt;/span> &lt;span style="color:#d19a66">0&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#98c379">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#e06c75">start&lt;/span> &amp;lt; &lt;span style="color:#d19a66">0&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#e06c75">start&lt;/span> = &lt;span style="color:#d19a66">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">end&lt;/span> &lt;span style="color:#56b6c2">:=&lt;/span> &lt;span style="color:#e06c75">start&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e06c75">length&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#e06c75">end&lt;/span> &amp;gt; &lt;span style="color:#e06c75">n&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#e06c75">end&lt;/span> = &lt;span style="color:#e06c75">n&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e5c07b">string&lt;/span>(&lt;span style="color:#e06c75">r&lt;/span>[&lt;span style="color:#e06c75">start&lt;/span>:&lt;span style="color:#e06c75">end&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Git 清空所有commit记录方法</title><link>https://mrasong.com/a/git-wipe-all-commit/</link><pubDate>Fri, 04 Jan 2019 17:48:13 +0800</pubDate><guid>https://mrasong.com/a/git-wipe-all-commit/</guid><description>&lt;ol>
&lt;li>
&lt;p>Checkout
&lt;code>git checkout --orphan latest_branch&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Add all the files
&lt;code>git add -A&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Commit the changes
&lt;code>git commit -am &amp;quot;commit message&amp;quot;&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Delete the branch
&lt;code>git branch -D master&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rename the current branch to master
&lt;code>git branch -m master&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Finally, force update your repository
&lt;code>git push -f origin master&lt;/code>&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title>openresty 直接解析markdown文件</title><link>https://mrasong.com/a/openresty-markdown-to-html/</link><pubDate>Fri, 04 Jan 2019 17:40:00 +0800</pubDate><guid>https://mrasong.com/a/openresty-markdown-to-html/</guid><description>&lt;h3 id="原理">原理&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>通过 &lt;code>openresty&lt;/code> 的 body_filter 对 &lt;code>markdown&lt;/code> 文件进行“包装”，添加&lt;code>html&lt;/code>的外衣；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>marked.js&lt;/code> 前端解析 markdown 为&lt;code>html&lt;/code>格式。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="使用方法">使用方法&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>克隆或下载源码；&lt;/p>
&lt;/li>
&lt;li>
&lt;p>将&lt;code>enable-markdown.conf&lt;/code>, &lt;code>rewrite/markdown.conf&lt;/code> 文件放至&lt;code>openresty&lt;/code>的&lt;code>conf&lt;/code>目录，一般默认为&lt;code>/usr/local/openresty/nginx/conf&lt;/code>；&lt;/p></description></item><item><title>linux 指定用户执行crontab</title><link>https://mrasong.com/a/crontab-for-user/</link><pubDate>Mon, 27 Aug 2018 10:41:00 +0800</pubDate><guid>https://mrasong.com/a/crontab-for-user/</guid><description>&lt;h2 id="三种方法">三种方法&lt;/h2>
&lt;h3 id="1-直接以用户登录">1. 直接以用户登录&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>su someone
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>crontab -e
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>PS: 对于没有 bash 登录权限的用户不可用&lt;/p>
&lt;h3 id="2-以-root-用户登录创建用户的-crontab-文件">2. 以 root 用户登录，创建用户的 crontab 文件&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>sudo crontab -e -u someone
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>PS: &lt;code>crontab&lt;/code> 文件为 &lt;code>someone&lt;/code> 用户创建，不好管理&lt;/p></description></item><item><title>18位身份证正则</title><link>https://mrasong.com/a/d81f9c1be2e08964bf9f24b15f0e4900/</link><pubDate>Wed, 13 Jun 2018 17:50:00 +0800</pubDate><guid>https://mrasong.com/a/d81f9c1be2e08964bf9f24b15f0e4900/</guid><description>&lt;p>18 位身份证号码各位的含义:&lt;/p>
&lt;p>1-2： 省、自治区、直辖市代码；
3-4： 地级市、盟、自治州代码；
5-6： 位县、县级市、区代码；
7-14： 出生年月日，比如 &lt;code>19670401&lt;/code> 代表 &lt;code>1967年4月1日&lt;/code>；
15-17： 为顺序号，其中 17 位（倒数第二位）男为单数，女为双数；
18： 为校验码，0-9 和 X。作为尾号的校验码，是由把前十七位数字带入统一的公式计算出来的，计算的结果是 0-10，如果某人的尾号是 0－9，都不会出现 X，但如果尾号是 10，那么就得用 X 来代替，因为如果用 10 做尾号，那么此人的身份证就变成了 19 位。X 是罗马数字的 10，用 X 来代替 10。&lt;/p></description></item><item><title>定时备份MySQL脚本</title><link>https://mrasong.com/a/b3967a0e938dc2a6340e258630febd5a/</link><pubDate>Wed, 20 Dec 2017 18:13:00 +0800</pubDate><guid>https://mrasong.com/a/b3967a0e938dc2a6340e258630febd5a/</guid><description>&lt;h3 id="useage">useage&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>mysqldump.sh DB_NAME
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="mysqldumpsh">mysqldump.sh&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">#!/bin/sh
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#e06c75">DUMP&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>/usr/bin/mysqldump
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#e06c75">BAK_DIR&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>/production/backup
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#e06c75">DB_HOST&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>localhost
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#e06c75">DB_PORT&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">3306&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#56b6c2">[&lt;/span> ! -n &lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#e06c75">$1&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">]&lt;/span>; &lt;span style="color:#c678dd">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">DB_NAME&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>dbname
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#c678dd">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#e06c75">DB_NAME&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#e06c75">$1&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#c678dd">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">DB_USER&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>root
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#e06c75">DB_PASS&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>root
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#e06c75">DB_CHARSET&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>utf8
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#e06c75">DAYS&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">7&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#e06c75">DATE&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">`&lt;/span>date +%Y%m%d_%H&lt;span style="color:#98c379">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#e06c75">PREFIX&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;bak_&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">DB_NAME&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#e06c75">BAK_SQL&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">PREFIX&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">_&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">DATE&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">.sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#e06c75">BAK_TAR&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">PREFIX&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">_&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">DATE&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>&lt;span style="color:#e5c07b">cd&lt;/span> &lt;span style="color:#e06c75">$BAK_DIR&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span>&lt;span style="color:#7f848e"># back db&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span>&lt;span style="color:#e06c75">$DUMP&lt;/span> --host&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$DB_HOST&lt;/span> --port&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$DB_PORT&lt;/span> --user&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$DB_USER&lt;/span> --password&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$DB_PASS&lt;/span> &lt;span style="color:#e06c75">$DB_NAME&lt;/span> --default-character-set&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$DB_CHARSET&lt;/span> --opt -Q -R --skip-lock-tables &amp;gt; &lt;span style="color:#e06c75">$BAK_SQL&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span>&lt;span style="color:#7f848e"># tar .sql to .tar.gz&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span>tar -czf &lt;span style="color:#e06c75">$BAK_TAR&lt;/span> &lt;span style="color:#e06c75">$BAK_SQL&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span>&lt;span style="color:#7f848e"># remove .sql file&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span>rm &lt;span style="color:#e06c75">$BAK_SQL&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span>&lt;span style="color:#7f848e"># remove backup files $DAYS ago&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span>find &lt;span style="color:#e06c75">$BAK_DIR&lt;/span> -name &lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#98c379">${&lt;/span>&lt;span style="color:#e06c75">PREFIX&lt;/span>&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379">*&amp;#34;&lt;/span> -type f -mtime +&lt;span style="color:#e06c75">$DAYS&lt;/span> -exec rm &lt;span style="color:#56b6c2">{}&lt;/span> &lt;span style="color:#98c379">\;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>MAMP 安装 MongoDB 扩展</title><link>https://mrasong.com/a/mongodb-drive-for-mamp/</link><pubDate>Wed, 02 Aug 2017 15:33:00 +0800</pubDate><guid>https://mrasong.com/a/mongodb-drive-for-mamp/</guid><description>&lt;ol>
&lt;li>
&lt;p>安装 &lt;a href="https://brew.sh">homebrew&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>确定已安装 &lt;code>pkg-config&lt;/code>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>$ where pkg-config
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>/usr/local/bin/pkg-config
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>若提示&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>pkg-config not found
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>则先使用 &lt;code>brew install pkg-config&lt;/code> 进行安装&lt;/p>
&lt;ol start="3">
&lt;li>安装最新的 &lt;code>OpenSSL&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>macOS 默认的 &lt;code>OpenSSL&lt;/code> 版本太低，编译时需要版本高于&lt;code>1.0.1&lt;/code>才可，so just install the lastest one.&lt;/p></description></item><item><title>PHP 简单的进位换算</title><link>https://mrasong.com/a/format-size/</link><pubDate>Thu, 16 Mar 2017 12:18:19 +0800</pubDate><guid>https://mrasong.com/a/format-size/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#98c379">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @author MRASONG
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @param int $number The number being formatted
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @param int $decimals Sets the number of decimal points.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @param string $format The format string [sprintf]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @return string
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#98c379"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">static&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">fsize&lt;/span>(&lt;span style="color:#e06c75">$number&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#e06c75">$decimals&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">2&lt;/span>, &lt;span style="color:#e06c75">$format&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#39;%s %s&amp;#39;&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">$units&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(&lt;span style="color:#98c379">&amp;#39;B&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;KB&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;MB&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;GB&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;TB&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;PB&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#e06c75">$i&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#e06c75">$base&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">pow&lt;/span>(&lt;span style="color:#d19a66">2&lt;/span>, &lt;span style="color:#d19a66">10&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">$size&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$number&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#c678dd">while&lt;/span> (&lt;span style="color:#e06c75">$number&lt;/span> &lt;span style="color:#56b6c2">&amp;gt;=&lt;/span> &lt;span style="color:#e06c75">pow&lt;/span>(&lt;span style="color:#e06c75">$base&lt;/span>, &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">1&lt;/span>)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#e06c75">$size&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$number&lt;/span> &lt;span style="color:#56b6c2">/&lt;/span> &lt;span style="color:#e06c75">pow&lt;/span>(&lt;span style="color:#e06c75">$base&lt;/span>, &lt;span style="color:#56b6c2">++&lt;/span>&lt;span style="color:#e06c75">$i&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">sprintf&lt;/span>(&lt;span style="color:#e06c75">$format&lt;/span>, &lt;span style="color:#e06c75">number_format&lt;/span>(&lt;span style="color:#e06c75">$size&lt;/span>, &lt;span style="color:#e06c75">$decimals&lt;/span>, &lt;span style="color:#98c379">&amp;#39;.&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;&amp;#39;&lt;/span>), &lt;span style="color:#e06c75">$units&lt;/span>[&lt;span style="color:#e06c75">$i&lt;/span>]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>PHP判断是否为SSL链接（https）</title><link>https://mrasong.com/a/php-is-ssl/</link><pubDate>Fri, 23 Dec 2016 23:56:00 +0800</pubDate><guid>https://mrasong.com/a/php-is-ssl/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">is_ssl&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTPS&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> (&lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTPS&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">==&lt;/span> &lt;span style="color:#d19a66">1&lt;/span> &lt;span style="color:#56b6c2">||&lt;/span> &lt;span style="color:#e06c75">strtolower&lt;/span>(&lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTPS&amp;#39;&lt;/span>])&lt;span style="color:#56b6c2">==&lt;/span>&lt;span style="color:#98c379">&amp;#39;on&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> &lt;span style="color:#56b6c2">||&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;SERVER_PORT&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;SERVER_PORT&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">==&lt;/span>&lt;span style="color:#d19a66">443&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#56b6c2">||&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTP_X_FORWARDED_PROTO&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTP_X_FORWARDED_PROTO&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">==&lt;/span>&lt;span style="color:#98c379">&amp;#39;https&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span> &lt;span style="color:#56b6c2">||&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTP_X_CLIENT_PROTO&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;HTTP_X_CLIENT_PROTO&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">==&lt;/span>&lt;span style="color:#98c379">&amp;#39;https&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Nginx 日志自动切割</title><link>https://mrasong.com/a/nginx-auto-log-retate/</link><pubDate>Fri, 23 Dec 2016 23:54:39 +0800</pubDate><guid>https://mrasong.com/a/nginx-auto-log-retate/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e5c07b">cd&lt;/span> /etc/logrotate.d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>vi /etc/logrotate.d/nginx
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">/home/wwwlogs/*.log&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#c678dd">missingok&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#98c379">dateext&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#98c379">notifempty&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#98c379">daily&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#98c379">rotate&lt;/span> &lt;span style="color:#d19a66">7&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#98c379">sharedscripts&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#98c379">postrotate&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#98c379">if&lt;/span> &lt;span style="color:#98c379">[&lt;/span> &lt;span style="color:#98c379">-f&lt;/span> &lt;span style="color:#98c379">/usr/local/nginx/logs/nginx.pid&lt;/span> &lt;span style="color:#98c379">]&lt;/span>; &lt;span style="color:#c678dd">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#98c379">kill&lt;/span> &lt;span style="color:#98c379">-USR1&lt;/span> &lt;span style="color:#98c379">`cat&lt;/span> &lt;span style="color:#98c379">/usr/local/nginx/logs/nginx.pid`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#98c379">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#98c379">endscript&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>:wq!&lt;/code> 保存退出&lt;/p></description></item><item><title>nginx 实现自定义反向代理错误页面</title><link>https://mrasong.com/a/nginx-proxy-error-page/</link><pubDate>Tue, 11 Oct 2016 11:31:45 +0800</pubDate><guid>https://mrasong.com/a/nginx-proxy-error-page/</guid><description>&lt;p>我们经常在处理 nginx 反向代理时，会遇到这样的问题&lt;/p>
&lt;blockquote>
&lt;p>怎样重新定义上游服务器的错误页面&lt;/p>
&lt;/blockquote>
&lt;p>举个栗子：
我们有一台后台 server 是 windows 服务器。
架构时我们用前端 linux 服务器来做转发，windows 服务器只做后端业务处理。
这时，我们会发现，若后端应用没有定义一个漂亮的 404 页面，用户收到的将是一个 IIS 的默认错误页面。
怎样在不配置 IIS 的情况下实现 nginx 自定义反向代理错误页面呢？&lt;/p></description></item><item><title>Phalcon 框架如何实现主从读写分离</title><link>https://mrasong.com/a/phalcon-db-master-slaver/</link><pubDate>Fri, 26 Aug 2016 13:56:00 +0800</pubDate><guid>https://mrasong.com/a/phalcon-db-master-slaver/</guid><description>&lt;p>假设你已经在 &lt;code>DI&lt;/code> 容器里注册了俩 &lt;code>db services&lt;/code>，如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#56b6c2">&amp;lt;?&lt;/span>&lt;span style="color:#e06c75">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e">// 主库
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$di&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">setShared&lt;/span>(&lt;span style="color:#98c379">&amp;#39;dbWrite&amp;#39;&lt;/span>, &lt;span style="color:#c678dd">function&lt;/span>() &lt;span style="color:#c678dd">use&lt;/span> (&lt;span style="color:#e06c75">$config&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#c678dd">new&lt;/span> &lt;span style="color:#e06c75">\Phalcon\Db\Adapter\Pdo\Mysql&lt;/span>(&lt;span style="color:#c678dd">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;host&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">w_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">host&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;username&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">w_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">username&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;password&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">w_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">password&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;dbname&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">w_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">name&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> ));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>});
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#7f848e">// 从库
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$di&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">setShared&lt;/span>(&lt;span style="color:#98c379">&amp;#39;dbRead&amp;#39;&lt;/span>, &lt;span style="color:#c678dd">function&lt;/span>() &lt;span style="color:#c678dd">use&lt;/span> (&lt;span style="color:#e06c75">$config&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#c678dd">new&lt;/span> &lt;span style="color:#e06c75">\Phalcon\Db\Adapter\Pdo\Mysql&lt;/span>(&lt;span style="color:#c678dd">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;host&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">r_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">host&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;username&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">r_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">username&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;password&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">r_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">password&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;dbname&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">r_database&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">name&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> ));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>});
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后创建一个父 &lt;code>Model&lt;/code> ：&lt;/p></description></item><item><title>不用第三个参数 ，交换a, b变量值</title><link>https://mrasong.com/a/no-third-parameters-to-exchange-two-variables/</link><pubDate>Mon, 25 Apr 2016 17:04:00 +0800</pubDate><guid>https://mrasong.com/a/no-third-parameters-to-exchange-two-variables/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">$a&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;a&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#e06c75">$b&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;b&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#c678dd">list&lt;/span>(&lt;span style="color:#e06c75">$b&lt;/span>, &lt;span style="color:#e06c75">$a&lt;/span>) &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(&lt;span style="color:#e06c75">$a&lt;/span>, &lt;span style="color:#e06c75">$b&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>git 出现 Your account has been blocked 的解决方法</title><link>https://mrasong.com/a/f9b902fc3289af4dd08de5d1de54f68f/</link><pubDate>Wed, 13 Jan 2016 16:26:06 +0800</pubDate><guid>https://mrasong.com/a/f9b902fc3289af4dd08de5d1de54f68f/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>$ git push origin master
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>GitLab: Your account has been blocked.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>fatal: Could not read from remote repository.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>git 提交时出现以上问题，只用重新设置下远程 url 即可&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>$ git remote set-url origin git@yourhost.com:org/project.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>不得不吐槽下 WIC 的官网了。。。</title><link>https://mrasong.com/a/2f2b265625d76a6704b08093c652fd79/</link><pubDate>Fri, 18 Dec 2015 17:20:08 +0800</pubDate><guid>https://mrasong.com/a/2f2b265625d76a6704b08093c652fd79/</guid><description>&lt;p>&lt;img alt="20151218165524.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/12/b30df9ef-2515-df53-f731-a75678d4375a.jpg">&lt;/p>
&lt;p>&lt;img alt="20151218165600.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/12/13d56e27-6c47-2c2e-91f1-5b0b23d2670c.jpg">&lt;/p>
&lt;p>&lt;a href="http://webpublisher.enorth.com.cn/">http://webpublisher.enorth.com.cn/&lt;/a> 这么个东西&lt;/p>
&lt;p>&lt;img alt="20151218165633.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/12/04724446-450b-bf1f-4ece-50cc4de86e51.jpg">&lt;/p>
&lt;p>好吧 我已经无语了&lt;/p></description></item><item><title>API文档聚合浏览器 dash / zeal</title><link>https://mrasong.com/a/6faa8040da20ef399b63a72d0e4ab575/</link><pubDate>Thu, 12 Nov 2015 10:23:00 +0800</pubDate><guid>https://mrasong.com/a/6faa8040da20ef399b63a72d0e4ab575/</guid><description>&lt;p>Dash 是一个 API 文档浏览器（ API Documentation Browser），以及代码片段管理工具（Code Snippet Manager）。&lt;/p>
&lt;p>它就只有这两个功能，但确实是程序员最为关心的特性，可以毫不夸张地说，Dash 是它们之中做的最好的一个！非常实用。从它第一版发布用到现在，绝对是一个你值得拥有的文档管理工具.&lt;/p></description></item><item><title>BaiduLinkSubmit for typecho 百度链接主动提交工具</title><link>https://mrasong.com/a/baidu-link-submit-for-typecho/</link><pubDate>Tue, 27 Oct 2015 11:39:00 +0800</pubDate><guid>https://mrasong.com/a/baidu-link-submit-for-typecho/</guid><description>&lt;p>写了个百度链接主动提交工具，要的拿走吧，不谢&lt;/p>
&lt;p>下载地址：&lt;a href="https://mrasong.com/attachment/2015/10/a50e75c5-c910-5cc5-1ba8-e25e11226d96.zip">BaiduLinkSubmit.v1.0.0.zip&lt;/a>&lt;/p>
&lt;p>附：&lt;a href="http://dwz.cn/265Rcs">使用主动推送功能会达到怎样效果&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#56b6c2">&amp;lt;?&lt;/span>&lt;span style="color:#e06c75">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#98c379">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#98c379"> * 百度站长工具 链接提交
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#98c379"> * 发布、更新文章后，自动提交百度链接更新
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#98c379"> * 详情请查看 http://dwz.cn/265Rcs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#98c379"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @package BaiduLinkSubmit
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @author mrasong
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @version 1.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @link http://mrasong.com/a/baidu-link-submit-for-typecho
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#98c379"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#c678dd">class&lt;/span> &lt;span style="color:#e5c07b">BaiduLinkSubmit&lt;/span> &lt;span style="color:#c678dd">implements&lt;/span> &lt;span style="color:#e06c75">Typecho_Plugin_Interface&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* 激活插件方法 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">static&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">activate&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#e06c75">Typecho_Plugin&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">factory&lt;/span>(&lt;span style="color:#98c379">&amp;#39;Widget_Contents_Post_Edit&amp;#39;&lt;/span>)&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">finishPublish&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(&lt;span style="color:#e06c75">__CLASS__&lt;/span>, &lt;span style="color:#98c379">&amp;#39;render&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#e06c75">Typecho_Plugin&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">factory&lt;/span>(&lt;span style="color:#98c379">&amp;#39;Widget_Contents_Page_Edit&amp;#39;&lt;/span>)&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">finishPublish&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(&lt;span style="color:#e06c75">__CLASS__&lt;/span>, &lt;span style="color:#98c379">&amp;#39;render&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;请设置 &amp;lt;b&amp;gt;站点域名&amp;lt;/b&amp;gt; 和 &amp;lt;b&amp;gt;密钥&amp;lt;/b&amp;gt;&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* 禁用插件方法 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">static&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">deactivate&lt;/span>(){}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* 插件配置方法 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">static&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">config&lt;/span>(&lt;span style="color:#e06c75">Typecho_Widget_Helper_Form&lt;/span> &lt;span style="color:#e06c75">$form&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span> &lt;span style="color:#e06c75">preg_match&lt;/span>(&lt;span style="color:#98c379">&amp;#34;/^(http(s)?:\/\/)?([^\/]+)/i&amp;#34;&lt;/span>, &lt;span style="color:#e06c75">Helper&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">options&lt;/span>()&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">siteUrl&lt;/span>, &lt;span style="color:#e06c75">$matches&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#e06c75">$domain&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$matches&lt;/span>[&lt;span style="color:#d19a66">2&lt;/span>] &lt;span style="color:#56b6c2">?&lt;/span> &lt;span style="color:#e06c75">$matches&lt;/span>[&lt;span style="color:#d19a66">2&lt;/span>] &lt;span style="color:#56b6c2">:&lt;/span> &lt;span style="color:#98c379">&amp;#39;&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> &lt;span style="color:#e06c75">$site&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">new&lt;/span> &lt;span style="color:#e06c75">Typecho_Widget_Helper_Form_Element_Text&lt;/span>(&lt;span style="color:#98c379">&amp;#39;site&amp;#39;&lt;/span>, &lt;span style="color:#c678dd">NULL&lt;/span>, &lt;span style="color:#e06c75">$domain&lt;/span>, &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;站点域名&amp;#39;&lt;/span>), &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;站长工具中添加的域名&amp;#39;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span> &lt;span style="color:#e06c75">$form&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">addInput&lt;/span>(&lt;span style="color:#e06c75">$site&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">addRule&lt;/span>(&lt;span style="color:#98c379">&amp;#39;required&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;请填写站点域名&amp;#39;&lt;/span>)));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span> &lt;span style="color:#e06c75">$token&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">new&lt;/span> &lt;span style="color:#e06c75">Typecho_Widget_Helper_Form_Element_Text&lt;/span>(&lt;span style="color:#98c379">&amp;#39;token&amp;#39;&lt;/span>, &lt;span style="color:#c678dd">NULL&lt;/span>, &lt;span style="color:#98c379">&amp;#39;&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;准入密钥&amp;#39;&lt;/span>), &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;更新密钥后，请同步修改此处密钥，否则身份校验不通过将导致数据发送失败。&amp;#39;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span> &lt;span style="color:#e06c75">$form&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">addInput&lt;/span>(&lt;span style="color:#e06c75">$token&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">addRule&lt;/span>(&lt;span style="color:#98c379">&amp;#39;required&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">_t&lt;/span>(&lt;span style="color:#98c379">&amp;#39;请填写准入密钥&amp;#39;&lt;/span>)));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* 个人用户的配置方法 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">static&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">personalConfig&lt;/span>(&lt;span style="color:#e06c75">Typecho_Widget_Helper_Form&lt;/span> &lt;span style="color:#e06c75">$form&lt;/span>){}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* 插件实现方法 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">static&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">render&lt;/span>(&lt;span style="color:#e06c75">$contents&lt;/span>, &lt;span style="color:#e06c75">$widget&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span> &lt;span style="color:#e06c75">$options&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">Helper&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">options&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span> &lt;span style="color:#e06c75">$site&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$options&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">plugin&lt;/span>(&lt;span style="color:#e06c75">__CLASS__&lt;/span>)&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">site&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span> &lt;span style="color:#e06c75">$token&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$options&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">plugin&lt;/span>(&lt;span style="color:#e06c75">__CLASS__&lt;/span>)&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">token&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">42&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">43&lt;/span>&lt;span> &lt;span style="color:#e06c75">$urls&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>( &lt;span style="color:#e06c75">$widget&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">permalink&lt;/span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">44&lt;/span>&lt;span> &lt;span style="color:#e06c75">$api&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">sprintf&lt;/span>(&lt;span style="color:#98c379">&amp;#39;http://data.zz.baidu.com/urls?site=%s&amp;amp;token=%s&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">$site&lt;/span>, &lt;span style="color:#e06c75">$token&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">45&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">46&lt;/span>&lt;span> &lt;span style="color:#e06c75">$client&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">Typecho_Http_Client&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">get&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">47&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> (&lt;span style="color:#e06c75">$client&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">48&lt;/span>&lt;span> &lt;span style="color:#e06c75">$client&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">setData&lt;/span>( &lt;span style="color:#e06c75">implode&lt;/span>(&lt;span style="color:#e06c75">PHP_EOL&lt;/span>, &lt;span style="color:#e06c75">$urls&lt;/span> ) )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">49&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">setHeader&lt;/span>(&lt;span style="color:#98c379">&amp;#39;Content-Type&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;text/plain&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">50&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">setTimeout&lt;/span>(&lt;span style="color:#d19a66">30&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">51&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">send&lt;/span>(&lt;span style="color:#e06c75">$api&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">52&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">53&lt;/span>&lt;span> &lt;span style="color:#e06c75">$status&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$client&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">getResponseStatus&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">54&lt;/span>&lt;span> &lt;span style="color:#e06c75">$rs&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$client&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">getResponseBody&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">55&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#c678dd">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">56&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">57&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#c678dd">false&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">58&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">59&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Surface Pro 4 国行要来了</title><link>https://mrasong.com/a/a666587afda6e89aec274a3657558a27/</link><pubDate>Mon, 26 Oct 2015 23:24:00 +0800</pubDate><guid>https://mrasong.com/a/a666587afda6e89aec274a3657558a27/</guid><description>&lt;p>&lt;img alt="image.jpeg" loading="lazy" src="https://mrasong.com/attachment/2015/10/e0d228bc-eb0d-99c6-a7ef-f726e2197c7d.jpeg">&lt;/p></description></item><item><title>入手几个米</title><link>https://mrasong.com/a/bc6dc48b743dc5d013b1abaebd2faed2/</link><pubDate>Wed, 14 Oct 2015 13:58:00 +0800</pubDate><guid>https://mrasong.com/a/bc6dc48b743dc5d013b1abaebd2faed2/</guid><description>&lt;p>osx.site
xos.online&lt;/p>
&lt;p>util.site
util.online&lt;/p>
&lt;p>有意者可联系&lt;/p></description></item><item><title>为你的小内存 vps 添加swap</title><link>https://mrasong.com/a/make-swap-for-your-tiny-vps/</link><pubDate>Mon, 31 Aug 2015 16:19:00 +0800</pubDate><guid>https://mrasong.com/a/make-swap-for-your-tiny-vps/</guid><description>&lt;p>今天在帮朋友安装 subversion 的时遇到这个问题。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>internal compiler error: Killed (program cc1plus)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Google 后得知，因内存不足，编译中断。&lt;/p>
&lt;p>而朋友的 aliyun 主机本来内存也不大，并且 &lt;strong>没有交换分区&lt;/strong> 。&lt;/p>
&lt;p>找到了问题的所在，那么我们就来解决。
为了安装软件来升级内存的方法，显然不太靠谱，那么我们就来创建个交换分区吧。&lt;/p></description></item><item><title>通过ssh端口映射 间接访问远程内网服务器</title><link>https://mrasong.com/a/ssh-port-forword/</link><pubDate>Tue, 21 Jul 2015 14:27:00 +0800</pubDate><guid>https://mrasong.com/a/ssh-port-forword/</guid><description>&lt;blockquote>
&lt;p>现在有两台服务器，SERVER A 可通过外网访问，SERVER B （linux/mac/windows）通过局域网与 A 连接，由于种种原因（防火墙啊、外网限制啊），我们（client）无法直接登录 B 或 访问 B 上的业务系统。&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>那么问题来了，怎样才能通过 A 来访问 B ？&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img alt="ssh-port-forword.png" loading="lazy" src="https://mrasong.com/attachment/2015/07/ee3b1ac2-23a1-1ece-dd96-eaf6f2c7f59e.png">&lt;/p></description></item><item><title>工行chrome插件引起的网页样式问题</title><link>https://mrasong.com/a/eddea82ad2755b24c4e168c5fc2ebd40/</link><pubDate>Fri, 03 Jul 2015 16:57:00 +0800</pubDate><guid>https://mrasong.com/a/eddea82ad2755b24c4e168c5fc2ebd40/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&amp;lt;div&amp;gt;&amp;lt;object id=&amp;#34;ClCache&amp;#34; click=&amp;#34;sendMsg&amp;#34; host=&amp;#34;&amp;#34; width=&amp;#34;0&amp;#34; height=&amp;#34;0&amp;#34;&amp;gt;&amp;lt;/object&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>工行的开发人员，还真是可以啊，插件装了 chrome 下还是不能用，不能用就算了，还影响其它页面样式？？？&lt;/p></description></item><item><title>在线svg编辑器</title><link>https://mrasong.com/a/editor-method-ac/</link><pubDate>Wed, 10 Jun 2015 16:20:48 +0800</pubDate><guid>https://mrasong.com/a/editor-method-ac/</guid><description>&lt;p>分享一个在线 svg 编辑器
&lt;a href="http://editor.method.ac/">http://editor.method.ac/&lt;/a>
&lt;img alt="editor.method.ac.png" loading="lazy" src="https://mrasong.com/attachment/2015/06/8d827366-5251-1189-50d9-0c93e81be294.png">&lt;/p></description></item><item><title>jQuery prop设置checkbox全选、反选</title><link>https://mrasong.com/a/jquery-prop-checked/</link><pubDate>Thu, 30 Apr 2015 10:12:00 +0800</pubDate><guid>https://mrasong.com/a/jquery-prop-checked/</guid><description>&lt;p>大家都知道 jQuery 可通过 attr 方法来设置 dom 属性，自然的也就想到用 &lt;code>$(dom).attr('checked', 'checked');&lt;/code> 这种方法来选择 checkbox 了，但是最近在项目中使用 checkbox 全选、反选的时候，却出现了问题：
在使用 attr 方法设置选择后，点击第一次可以设置反选，第二次却不行了。&lt;/p></description></item><item><title>MongoDB 查询优化原则</title><link>https://mrasong.com/a/optimize-mongodb-query/</link><pubDate>Thu, 29 Jan 2015 15:27:00 +0800</pubDate><guid>https://mrasong.com/a/optimize-mongodb-query/</guid><description>&lt;ol>
&lt;li>在查询条件、排序条件、统计条件的字段上选择创建索引，可以显著提高查询效率。&lt;/li>
&lt;li>&lt;strong>用$or时把匹配最多结果的条件放在最前面，用$and 时把匹配最 少 结果的条件放在最前面。&lt;/strong>&lt;/li>
&lt;li>使用 limit()限定返回结果集的大小，减少数据库服务器的资源消耗，以及网络传输的数据量。&lt;/li>
&lt;li>尽量少用$in，而是分解成一个一个的单一查询。尤其是在分片上，$in 会让你的查询去每一个分片上查一次，如果实在要用的话，先在每个分片上建索引。&lt;/li>
&lt;li>尽量不用模糊匹配查询，用其它精确匹配查询代替，比如$in、$nin。&lt;/li>
&lt;li>查询量大、并发大的情况，通过前端加缓存解决。&lt;/li>
&lt;li>能不用安全模式的操作就不用安全模式，这样客户端没必要等待数据库返回查询结果以及处理异常，快了一个数量级。&lt;/li>
&lt;li>MongoDB 的智能查询优化，判断粒度为 query 条件，而 skip 和 limit 都不在其判断之中，当分页查询最后几页时，先用 order 反向排序。&lt;/li>
&lt;li>尽量减少跨分片查询，balance 均衡次数少。&lt;/li>
&lt;li>只查询要使用的字段，而不查询所有字段。&lt;/li>
&lt;li>更新字段的值时，使用$inc 比 update 效率高。&lt;/li>
&lt;li>apped collections 比普通 collections 的读写效率高。&lt;/li>
&lt;li>server-side processing 类似于 SQL 查询的存储过程，可以减少网络通讯的开销。&lt;/li>
&lt;li>必要时使用 hint()强制使用某个索引查询。&lt;/li>
&lt;li>如果有自己的主键列，则使用自己的主键列作为 id，这样可以节约空间，也不需要创建额外的所以。&lt;/li>
&lt;li>使用 explain，根据 exlpain plan 进行优化。&lt;/li>
&lt;li>范围查询的时候尽量用$in、$nin 代替。&lt;/li>
&lt;li>查看数据库查询日志，具体分析的效率低的操作。&lt;/li>
&lt;li>mongodb 有一个数据库优化工具 database profiler，能够检测数据库操作的性能。可以发现 query 或者 write 操作中执行效率低的，从而针对这些操作进行优化。&lt;/li>
&lt;li>尽量把更多的操作放在客户端，当然这就是 mongodb 设计的理念之一。&lt;/li>
&lt;/ol></description></item><item><title>福利来啦！万网虚拟主机免费2年（需备案）</title><link>https://mrasong.com/a/www-net-cn-free-host/</link><pubDate>Tue, 27 Jan 2015 13:10:00 +0800</pubDate><guid>https://mrasong.com/a/www-net-cn-free-host/</guid><description>&lt;p>&lt;img alt="20150127130749.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/368ef13e-bf55-b504-8739-d7f2a582c31d.jpg">&lt;/p>
&lt;p>&lt;strong>网页空间： 1G&lt;/strong>
&lt;strong>单月流量： 10GB&lt;/strong>
&lt;strong>并发连接数： 150 个&lt;/strong>&lt;/p>
&lt;p>&lt;strong>window:&lt;/strong>
支持语言： ASP、.NET1.1/2.0/3.5/4.0、HTML、Perl5
数据库类型： ACCESS（50M）、SQL Server2008（50M）&lt;/p></description></item><item><title>MongoDB组合索引的优化</title><link>https://mrasong.com/a/optimizing-mongodb-compound/</link><pubDate>Mon, 26 Jan 2015 11:58:00 +0800</pubDate><guid>https://mrasong.com/a/optimizing-mongodb-compound/</guid><description>&lt;p>&lt;img alt="mongodb.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/441a187a-8b98-a58a-ebb7-c7535e101afa.jpg">&lt;/p>
&lt;blockquote>
&lt;p>索引在查询中占的地位无疑是重中之重，因此建立一个好的索引对查询性能的影响也是立竿见影。来自 10gen 工程师 A. Jesse Jiryu
Davis 带来的 MongoDB 上索引的优化方法以及 MongoDB 索引的选择机制，帮助大家缩小索引的选择空间。&lt;/p>
&lt;/blockquote></description></item><item><title>js选中指定dom文本</title><link>https://mrasong.com/a/js-select-text/</link><pubDate>Fri, 16 Jan 2015 18:09:00 +0800</pubDate><guid>https://mrasong.com/a/js-select-text/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#e06c75">selectAll&lt;/span>(&lt;span style="color:#e06c75">id&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">h&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#e06c75">i&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">h&lt;/span>.&lt;span style="color:#e06c75">getElementById&lt;/span>(&lt;span style="color:#e06c75">id&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#e06c75">d&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#e06c75">g&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> (&lt;span style="color:#e06c75">h&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">createTextRange&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#e06c75">d&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">createTextRange&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#e06c75">d&lt;/span>.&lt;span style="color:#e06c75">moveToElementText&lt;/span>(&lt;span style="color:#e06c75">i&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">d&lt;/span>.&lt;span style="color:#e06c75">select&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> } &lt;span style="color:#c678dd">else&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> (&lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">getSelection&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">g&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">getSelection&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#e06c75">d&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">createRange&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#e06c75">d&lt;/span>.&lt;span style="color:#e06c75">selectNodeContents&lt;/span>(&lt;span style="color:#e06c75">i&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#e06c75">g&lt;/span>.&lt;span style="color:#e06c75">removeAllRanges&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#e06c75">g&lt;/span>.&lt;span style="color:#e06c75">addRange&lt;/span>(&lt;span style="color:#e06c75">d&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>用wget命令 扒皮（下载收费页面模板）</title><link>https://mrasong.com/a/wget-vip-template/</link><pubDate>Fri, 16 Jan 2015 12:15:00 +0800</pubDate><guid>https://mrasong.com/a/wget-vip-template/</guid><description>&lt;p>在 linux 下 使用 wget 命令，即可抓取站点静态文件。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>wget -r http://www.themeon.net/nifty/wb/v2.1/index.html
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这样就可以将此收费主题基本下载下来。
遇到一些 css、js 后面带? 的链接，你需要将下载下来的文件名修改一下，删除？后面的字符即可。&lt;/p></description></item><item><title>关于评论的问题</title><link>https://mrasong.com/a/about-comment/</link><pubDate>Fri, 09 Jan 2015 17:18:06 +0800</pubDate><guid>https://mrasong.com/a/about-comment/</guid><description>&lt;p>自 2014 年 11 月 9 日以来，本站一直没有收到过任何关于文章的评论，就连垃圾评论都没有，还以为是升级了 &lt;a href="http://typecho.org">typecho&lt;/a> 以后，新增的防垃圾机制很 nb。&lt;/p>
&lt;p>今天和好友 &lt;a href="http://slimcheng.com">slimcheng&lt;/a> 聊天，讨论了下，就试着让他发了条评论试试，结果他反馈，发了没反映。。。&lt;/p></description></item><item><title>PHP cookie跨域的解决方法</title><link>https://mrasong.com/a/php-cookie-cross-domain/</link><pubDate>Fri, 09 Jan 2015 15:17:00 +0800</pubDate><guid>https://mrasong.com/a/php-cookie-cross-domain/</guid><description>&lt;p>在 setcookie 方法前，添加如下 header 即可&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">header&lt;/span>(&lt;span style="color:#98c379">&amp;#39;P3P: CP=&amp;#34;CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV&amp;#34;&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>//a.com/test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&amp;lt;&lt;span style="color:#e06c75">script&lt;/span> &lt;span style="color:#e06c75">src&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;http://b.com/get_cookie.php&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#e06c75">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#7f848e">//b.com/get_cookie.php
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">header&lt;/span>(&lt;span style="color:#98c379">&amp;#39;P3P: ........&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e06c75">setcookie&lt;/span>(&lt;span style="color:#56b6c2">...&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>a.com/test&lt;/code> 可正常获取 &lt;code>b.com/get_cookie.php&lt;/code> 的 &lt;code>cookie&lt;/code> 数据&lt;/p></description></item><item><title>Aliyun free mail 阿里云免费企业邮箱</title><link>https://mrasong.com/a/aliyun-free-mail/</link><pubDate>Mon, 05 Jan 2015 14:42:00 +0800</pubDate><guid>https://mrasong.com/a/aliyun-free-mail/</guid><description>&lt;p>Aliyun free mail 阿里云免费企业邮箱 &lt;a href="http://www.net.cn/promotion/getfreemail">http://www.net.cn/promotion/getfreemail&lt;/a>&lt;/p>
&lt;p>产品名称： 企业邮箱免费版
账号数： 100 个
容量： 每个账号 5GB 空间 + 2GB 网盘&lt;/p>
&lt;p>注：每个用户仅可开通一个域名
&lt;img alt="alimail_01.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/0288b3d0-df44-5543-5e0a-a73b860de451.jpg">&lt;/p>
&lt;p>&lt;img alt="alimail_02.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/31eb191b-cfca-23d8-ef75-97f56bf4b339.jpg">&lt;/p>
&lt;p>&lt;img alt="alimail_03.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/669086df-0690-5e14-4325-48c0f960a33c.jpg">&lt;/p>
&lt;p>&lt;img alt="alimail_04.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/8de68c0b-77e6-8a53-7f69-9d68d2d608be.jpg">&lt;/p>
&lt;p>&lt;img alt="alimail_05.jpg" loading="lazy" src="https://mrasong.com/attachment/2015/01/c0330864-624b-9821-827c-b37541c2e744.jpg">&lt;/p></description></item><item><title>MySQL 字段前缀、后缀、替换操作</title><link>https://mrasong.com/a/mysql-concat-replace/</link><pubDate>Sun, 04 Jan 2015 14:21:00 +0800</pubDate><guid>https://mrasong.com/a/mysql-concat-replace/</guid><description>&lt;p>添加前、后缀 &lt;code>concat&lt;/code> ，字符串替换 &lt;code>replace&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#7f848e">-- 添加前缀
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">UPDATE&lt;/span> &lt;span style="color:#56b6c2">`&lt;/span>&lt;span style="color:#c678dd">table&lt;/span>&lt;span style="color:#56b6c2">`&lt;/span> &lt;span style="color:#c678dd">SET&lt;/span> &lt;span style="color:#e06c75">field_name&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">concat&lt;/span>(&lt;span style="color:#98c379">&amp;#34;前缀&amp;#34;&lt;/span>, &lt;span style="color:#e06c75">field_name&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>&lt;span style="color:#7f848e">-- 添加后缀
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">UPDATE&lt;/span> &lt;span style="color:#56b6c2">`&lt;/span>&lt;span style="color:#c678dd">table&lt;/span>&lt;span style="color:#56b6c2">`&lt;/span> &lt;span style="color:#c678dd">SET&lt;/span> &lt;span style="color:#e06c75">field_name&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">concat&lt;/span>(&lt;span style="color:#e06c75">field_name&lt;/span>, &lt;span style="color:#98c379">&amp;#34;后缀&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>&lt;span style="color:#7f848e">-- 批量替换
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">8&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">UPDATE&lt;/span> &lt;span style="color:#56b6c2">`&lt;/span>&lt;span style="color:#c678dd">table&lt;/span>&lt;span style="color:#56b6c2">`&lt;/span> &lt;span style="color:#c678dd">SET&lt;/span> &lt;span style="color:#e06c75">field_name&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">REPLACE&lt;/span>(&lt;span style="color:#e06c75">intro&lt;/span>, &lt;span style="color:#98c379">&amp;#34;before_replace&amp;#34;&lt;/span>, &lt;span style="color:#98c379">&amp;#34;after_replace&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>浏览器 GET 单参数 512 限制</title><link>https://mrasong.com/a/url-get-issue/</link><pubDate>Tue, 30 Dec 2014 18:37:51 +0800</pubDate><guid>https://mrasong.com/a/url-get-issue/</guid><description>&lt;p>今天项目中遇到比较棘手的问题
GET 方式传递参数， server 端无法获取。
起初，以为是 URL 过长的原因，但是经测试，发现其它参数可以正常接收，唯独一个大于 512 字节的参数无法正常接收。
排除了 URL 长度原因，于是 php.ini，nginx.conf 各种尝试，各种找资料。。。。&lt;/p></description></item><item><title>让 nginx 支持PHP PATH_INFO</title><link>https://mrasong.com/a/nginx-php-pathinfo/</link><pubDate>Mon, 22 Dec 2014 16:40:00 +0800</pubDate><guid>https://mrasong.com/a/nginx-php-pathinfo/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">location&lt;/span> &lt;span style="color:#98c379">/&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#c678dd">index&lt;/span> &lt;span style="color:#98c379">index.html&lt;/span> &lt;span style="color:#98c379">index.php&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#98c379">(-f&lt;/span> &lt;span style="color:#e06c75">$request_filename/index.html&lt;/span>&lt;span style="color:#98c379">)&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#c678dd">rewrite&lt;/span> &lt;span style="color:#98c379">(.*)&lt;/span> &lt;span style="color:#e06c75">$1/index.html&lt;/span> &lt;span style="color:#98c379">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#98c379">(-f&lt;/span> &lt;span style="color:#e06c75">$request_filename/index.php&lt;/span>&lt;span style="color:#98c379">)&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#c678dd">rewrite&lt;/span> &lt;span style="color:#98c379">(.*)&lt;/span> &lt;span style="color:#e06c75">$1/index.php&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#98c379">(!-f&lt;/span> &lt;span style="color:#e06c75">$request_filename&lt;/span>&lt;span style="color:#98c379">)&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#c678dd">rewrite&lt;/span> &lt;span style="color:#98c379">(.*)&lt;/span> &lt;span style="color:#98c379">/index.php&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#c678dd">fastcgi_split_path_info&lt;/span> &lt;span style="color:#98c379">^(.+?\.php)(/.*)&lt;/span>$;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#c678dd">set&lt;/span> &lt;span style="color:#e06c75">$path_info&lt;/span> &lt;span style="color:#e06c75">$fastcgi_path_info&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#c678dd">fastcgi_param&lt;/span> &lt;span style="color:#98c379">PATH_INFO&lt;/span> &lt;span style="color:#e06c75">$path_info&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#c678dd">try_files&lt;/span> &lt;span style="color:#e06c75">$fastcgi_script_name&lt;/span> =&lt;span style="color:#d19a66">404&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="http://www.codeigniter.com/">CI&lt;/a>、&lt;a href="http://www.thinkphp.cn/">ThinkPHP&lt;/a>、&lt;a href="http://slimframework.com/">SlimPHP&lt;/a>、&lt;a href="http://typecho.org/">Typecho&lt;/a> 皆适用&lt;/p></description></item><item><title>分享一些视频直播地址</title><link>https://mrasong.com/a/tv-live/</link><pubDate>Fri, 12 Dec 2014 11:48:18 +0800</pubDate><guid>https://mrasong.com/a/tv-live/</guid><description>&lt;p>分享一些视频直播地址
&lt;a href="https://mrasong.com/attachment/2014/12/a76f47b0-6932-589b-c0c5-d894f509c904.zip">tv_src.zip&lt;/a>&lt;/p></description></item><item><title>mac 下隐藏文件的显示</title><link>https://mrasong.com/a/c52f1bd66cc19d05628bd8bf27af3ad6/</link><pubDate>Fri, 12 Dec 2014 01:03:00 +0800</pubDate><guid>https://mrasong.com/a/c52f1bd66cc19d05628bd8bf27af3ad6/</guid><description>&lt;p>苹果 Mac OS X 操作系统下，隐藏文件是否显示有很多种设置方法，最简单的要算在 Mac 终端输入命令。
显示/隐藏 Mac 隐藏文件命令如下(注意其中的空格并且区分大小写)：&lt;/p></description></item><item><title>弃用百度云加速</title><link>https://mrasong.com/a/c24cd76e1ce41366a4bbe8a49b02a028/</link><pubDate>Tue, 09 Dec 2014 09:23:00 +0800</pubDate><guid>https://mrasong.com/a/c24cd76e1ce41366a4bbe8a49b02a028/</guid><description>&lt;p>&lt;strong>标注下：此前是因本人域名解析错误导致，其实放在国外的网站加加速还是不错的 :)&lt;/strong>&lt;/p>
&lt;p>网站自换域名以来，一直放在 aliyun 服务器上，之间出现过一次短暂的宕机，1 个小时，是因为 aliyun 服务器的问题。
最近百度推出了免费的云加速服务，自己也想尝尝鲜，便将本站 dns 解析至百度服务器，才没用几天，早上就短信、邮件各种提示，服务器挂了&lt;/p></description></item><item><title>随机字符串，数字字母间隔 实现方法</title><link>https://mrasong.com/a/random-string/</link><pubDate>Mon, 17 Nov 2014 14:36:00 +0800</pubDate><guid>https://mrasong.com/a/random-string/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">get_random_string&lt;/span>(&lt;span style="color:#e06c75">$n&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">10&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span>(&lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">0&lt;/span>; &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">&amp;lt;&lt;/span>&lt;span style="color:#e06c75">$n&lt;/span>; &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">++&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">%&lt;/span>&lt;span style="color:#d19a66">2&lt;/span>&lt;span style="color:#56b6c2">===&lt;/span>&lt;span style="color:#d19a66">0&lt;/span> ){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span>[] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">chr&lt;/span>(&lt;span style="color:#e06c75">rand&lt;/span>(&lt;span style="color:#d19a66">97&lt;/span>, &lt;span style="color:#d19a66">122&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#c678dd">continue&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span>[] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">rand&lt;/span>(&lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#d19a66">9&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">implode&lt;/span>(&lt;span style="color:#98c379">&amp;#39;&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">$str&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>免费云加速 -- 百度云加速</title><link>https://mrasong.com/a/su-baidu-com/</link><pubDate>Fri, 14 Nov 2014 10:00:00 +0800</pubDate><guid>https://mrasong.com/a/su-baidu-com/</guid><description>&lt;p>推荐一个免费云加速工具 —— 百度云加速 &lt;a href="http://su.baidu.com/">su.baidu.com&lt;/a>&lt;/p>
&lt;p>&lt;strong>因使用此加速工具导致本站无法访问一小时，估本站不在使用！
请使用者评估风险后，谨慎使用！&lt;/strong>&lt;/p>
&lt;p>&lt;img alt="su.baidu.com.jpg" loading="lazy" src="https://mrasong.com/attachment/2014/11/6b7f19f9-b441-7476-4e8f-b4a001bc0034.jpg">&lt;/p></description></item><item><title>linux下安装配置 mongodb 副本集</title><link>https://mrasong.com/a/mongodb-deploy-replica-set/</link><pubDate>Wed, 29 Oct 2014 15:58:00 +0800</pubDate><guid>https://mrasong.com/a/mongodb-deploy-replica-set/</guid><description>&lt;h3 id="安装-mongodb-至每台服务器">安装 mongodb 至每台服务器&lt;/h3>
&lt;p>准备 3 台以上 mongodb 服务器，并在每台上先做以下操作&lt;/p>
&lt;h4 id="下载-mongodb解压并移动到-usrlocalmongodb-目录">下载 mongodb，解压并移动到 /usr/local/mongodb 目录&lt;/h4>
&lt;p>（若未安装 wget，请先 yum install wget 或者 apt-get install wget）
可以在局域网内某一台 web 服务器上下载后，再去从此服务器下载，会快些。&lt;/p></description></item><item><title>再放一个music API，网易音乐搜索API</title><link>https://mrasong.com/a/163-music-api/</link><pubDate>Wed, 29 Oct 2014 14:47:00 +0800</pubDate><guid>https://mrasong.com/a/163-music-api/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>网易音乐搜索API
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>URL:http://s.music.163.com/search/get/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>获取方式：GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>参数：
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> src: lofter //可为空
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> type: 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> filterDj: true|false //可为空
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> s: //关键词
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> limit: 10 //限制返回结果数
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> offset: 0 //偏移
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> callback: //为空时返回json，反之返回jsonp callback
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>返回值&lt;/p></description></item><item><title>[新]百度mp3接口（baidu mp3 api）</title><link>https://mrasong.com/a/baidu-mp3-api-full/</link><pubDate>Sat, 11 Oct 2014 16:56:00 +0800</pubDate><guid>https://mrasong.com/a/baidu-mp3-api-full/</guid><description>&lt;p>做了一个 demo，可以下载百度的 flac 格式音频，无需会员。源码：&lt;a href="https://mrasong.com/attachment/2019/02/59088180-bc52-5c19-246e-e1b95bd9ca3c.gz">baidu-music-api-demo.tar.gz&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&amp;amp;method=baidu.ting.search.catalogSug&amp;amp;format=json&amp;amp;callback=&amp;amp;query=%E5%B9%B3%E5%87%A1%E4%B9%8B%E8%B7%AF&amp;amp;_=1413017198449
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>format: json|xml|jsonp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>callback: 若返回 jsonp 格式，请设置一个callback方法名
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>query: 关键词
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>_: 时间戳
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>之前有同学留言反映在手机上访问 无法正常返回数据，显示的是网页，现亲测可以使用，且速度很快。&lt;/p>
&lt;p>通过 songID 获取下载地址请参阅： &lt;a href="http://mrasong.com/a/baidu-mp3-api">http://mrasong.com/a/baidu-mp3-api&lt;/a>&lt;/p></description></item><item><title>卤肉饭 赞一个</title><link>https://mrasong.com/a/cb70ab37-5662-576b-d1ac-5aaf16b3fca4/</link><pubDate>Sun, 07 Sep 2014 23:39:00 +0800</pubDate><guid>https://mrasong.com/a/cb70ab37-5662-576b-d1ac-5aaf16b3fca4/</guid><description>&lt;p>&lt;img alt="老婆做的卤肉饭，赞一个" loading="lazy" src="https://ww2.sinaimg.cn/mw1024/759ca81bjw1ek3vgn0slrj21kw11o1kx.jpg">&lt;/p></description></item><item><title>?!</title><link>https://mrasong.com/a/e4a6222c-db5b-3437-5400-904f03d8e6a5/</link><pubDate>Sun, 31 Aug 2014 19:03:00 +0800</pubDate><guid>https://mrasong.com/a/e4a6222c-db5b-3437-5400-904f03d8e6a5/</guid><description>&lt;p>&lt;img alt="IMG_20140831_190235.jpg" loading="lazy" src="https://mrasong.com/attachment/2014/09/ec7fcfdc-2a8c-99d7-8502-5222a14e9208.jpg">&lt;/p></description></item><item><title>发个图试试</title><link>https://mrasong.com/a/335f5352-088d-7d9b-f741-91e006d8e24c/</link><pubDate>Tue, 19 Aug 2014 17:01:00 +0800</pubDate><guid>https://mrasong.com/a/335f5352-088d-7d9b-f741-91e006d8e24c/</guid><description>&lt;p>&lt;img alt="bg2.jpg" loading="lazy" src="https://mrasong.com/attachment/2014/08/5ef462f8-17cf-d237-c059-68fbe9cf13f1.jpg">&lt;/p></description></item><item><title>各种语言实现字符串反转</title><link>https://mrasong.com/a/str-reverse/</link><pubDate>Thu, 31 Jul 2014 11:57:00 +0800</pubDate><guid>https://mrasong.com/a/str-reverse/</guid><description>&lt;p>JS&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#e06c75">str_reverse&lt;/span>(&lt;span style="color:#e06c75">str&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">str&lt;/span>.&lt;span style="color:#e06c75">split&lt;/span>(&lt;span style="color:#98c379">&amp;#34;&amp;#34;&lt;/span>).&lt;span style="color:#e06c75">reverse&lt;/span>().&lt;span style="color:#e06c75">join&lt;/span>(&lt;span style="color:#98c379">&amp;#34;&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>PHP&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">str_reverse&lt;/span>(&lt;span style="color:#e06c75">$str&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">implode&lt;/span>( &lt;span style="color:#e06c75">array_reverse&lt;/span>( &lt;span style="color:#e06c75">str_split&lt;/span>(&lt;span style="color:#e06c75">$str&lt;/span>) ) );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Python&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-py" data-lang="py">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">def&lt;/span> &lt;span style="color:#61afef;font-weight:bold">str_reverse&lt;/span>(&lt;span style="color:#e06c75">string&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#e06c75">L&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">list&lt;/span>(&lt;span style="color:#e06c75">string&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> &lt;span style="color:#e06c75">L&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">reverse&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#98c379">&amp;#39;&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">join&lt;/span>(&lt;span style="color:#e06c75">L&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>解决firefox和IE9对icon font字体的跨域访问问题</title><link>https://mrasong.com/a/289dff07669d7a23de0ef88d2f7129e7/</link><pubDate>Wed, 18 Jun 2014 13:49:00 +0800</pubDate><guid>https://mrasong.com/a/289dff07669d7a23de0ef88d2f7129e7/</guid><description>&lt;p>nginx.conf&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">location&lt;/span> ~&lt;span style="color:#98c379">*&lt;/span> &lt;span style="color:#98c379">\.(eot|ttf|woff)&lt;/span>$ {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#c678dd">add_header&lt;/span> &lt;span style="color:#98c379">Access-Control-Allow-Origin&lt;/span> &lt;span style="color:#98c379">*&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>js 实现数字三位一逗号</title><link>https://mrasong.com/a/js-tolocalestring/</link><pubDate>Tue, 04 Mar 2014 17:21:00 +0800</pubDate><guid>https://mrasong.com/a/js-tolocalestring/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">123456789&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">num_str&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">num&lt;/span>.&lt;span style="color:#e06c75">toLocaleString&lt;/span>();
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>PHP操作Word/Excel/PowerPoint</title><link>https://mrasong.com/a/php-office/</link><pubDate>Fri, 24 Jan 2014 16:14:00 +0800</pubDate><guid>https://mrasong.com/a/php-office/</guid><description>&lt;p>&lt;a href="https://github.com/PHPOffice/PHPWord">PHPWord&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://github.com/PHPOffice/PHPExcel">PHPExcel&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://github.com/PHPOffice/PHPPowerPoint">PHPPowerPoint&lt;/a>&lt;/p></description></item><item><title>Python 写的一个挑车牌小程序（西安）</title><link>https://mrasong.com/a/find-your-favourite-plate-number/</link><pubDate>Mon, 13 Jan 2014 16:05:00 +0800</pubDate><guid>https://mrasong.com/a/find-your-favourite-plate-number/</guid><description>&lt;p>去年 10 月份为了选车牌，研究发现的，现在贴出来，祝大家选到自己心仪的车牌:)&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-py" data-lang="py">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e"># coding=utf-8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#c678dd">import&lt;/span> &lt;span style="color:#e06c75">os&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#c678dd">import&lt;/span> &lt;span style="color:#e06c75">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#c678dd">import&lt;/span> &lt;span style="color:#e06c75">urllib2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#c678dd">import&lt;/span> &lt;span style="color:#e06c75">random&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#c678dd">import&lt;/span> &lt;span style="color:#e06c75">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#e06c75">_t&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%d&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">%&lt;/span>&lt;span style="color:#e06c75">time&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">time&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#e06c75">_r&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%d&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">%&lt;/span>(&lt;span style="color:#e06c75">random&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">random&lt;/span>()&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">1000&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#e06c75">_fname&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;num_list_&lt;/span>&lt;span style="color:#98c379">%s&lt;/span>&lt;span style="color:#98c379">.txt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#e06c75">_c1&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> {&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>: &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%s&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>: (&lt;span style="color:#98c379">&amp;#39;L&amp;#39;&lt;/span>)};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">_c2&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> {&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>: &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%d&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>: &lt;span style="color:#e5c07b">range&lt;/span>(&lt;span style="color:#d19a66">1&lt;/span>, &lt;span style="color:#d19a66">2&lt;/span>)};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#e06c75">_c3&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> {&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>: &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%s&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>: (&lt;span style="color:#98c379">&amp;#39;X&amp;#39;&lt;/span>)};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#e06c75">_c4&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> {&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>: &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%d&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>: &lt;span style="color:#e5c07b">range&lt;/span>(&lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#d19a66">10&lt;/span>)};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#e06c75">_c5&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> {&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>: &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">%d&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>: &lt;span style="color:#e5c07b">range&lt;/span>(&lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#d19a66">10&lt;/span>)};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#e06c75">url&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;http://117.36.53.122:9085/zzxh/business/BusinessAction.do?&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#e06c75">url&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#39;actiontype=xhgzvalidate&amp;amp;timeStamp=&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_t&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_r&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;amp;hpzl=02&amp;amp;hphm1=A&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#e06c75">url&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#39;&amp;amp;hphm2=&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c1&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;amp;hphm3=&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c2&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;amp;hphm4=&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c3&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;amp;hphm5=&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c4&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;amp;hphm6=&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c5&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">_c1&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c2&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c3&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c4&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_c5&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_t&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>&lt;span style="color:#7f848e">### get remote content&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>&lt;span style="color:#c678dd">def&lt;/span> &lt;span style="color:#61afef;font-weight:bold">file_clear&lt;/span>(&lt;span style="color:#e06c75">fname&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">open&lt;/span>(&lt;span style="color:#e06c75">fname&lt;/span>, &lt;span style="color:#98c379">&amp;#39;w+&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">write&lt;/span>(&lt;span style="color:#98c379">&amp;#39;Generated by mrasong at &amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">time&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">strftime&lt;/span>(&lt;span style="color:#98c379">&amp;#39;%Y-%m-&lt;/span>&lt;span style="color:#98c379">%d&lt;/span>&lt;span style="color:#98c379"> %H:%M:%S&amp;#39;&lt;/span>)&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">\n&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">close&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span>&lt;span style="color:#c678dd">def&lt;/span> &lt;span style="color:#61afef;font-weight:bold">file_get_contents&lt;/span>(&lt;span style="color:#e06c75">url&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span> &lt;span style="color:#c678dd">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">urllib2&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">urlopen&lt;/span>(&lt;span style="color:#e06c75">url&lt;/span>, &lt;span style="color:#e06c75">timeout&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">5&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span> &lt;span style="color:#e06c75">_content&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">_f&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">read&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span> &lt;span style="color:#e06c75">_content&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">_content&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">decode&lt;/span>(&lt;span style="color:#98c379">&amp;#39;gbk&amp;#39;&lt;/span>)&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">encode&lt;/span>(&lt;span style="color:#98c379">&amp;#39;utf-8&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">_content&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">strip&lt;/span>()&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">\n&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span> &lt;span style="color:#c678dd">except&lt;/span> &lt;span style="color:#e06c75">Exception&lt;/span>, &lt;span style="color:#e06c75">e&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">e&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span>&lt;span style="color:#c678dd">def&lt;/span> &lt;span style="color:#61afef;font-weight:bold">file_put_contents&lt;/span>(&lt;span style="color:#e06c75">fname&lt;/span>, &lt;span style="color:#e06c75">data&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e5c07b">open&lt;/span>(&lt;span style="color:#e06c75">fname&lt;/span>, &lt;span style="color:#98c379">&amp;#39;a&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">write&lt;/span>(&lt;span style="color:#e5c07b">str&lt;/span>(&lt;span style="color:#e06c75">data&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">42&lt;/span>&lt;span> &lt;span style="color:#e06c75">_f&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">close&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">43&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">44&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">45&lt;/span>&lt;span>&lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">_n1&lt;/span> &lt;span style="color:#56b6c2">in&lt;/span> &lt;span style="color:#e06c75">_c1&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>]:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">46&lt;/span>&lt;span> &lt;span style="color:#e06c75">_file_name&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">_fname&lt;/span> &lt;span style="color:#56b6c2">%&lt;/span> &lt;span style="color:#e06c75">_n1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">47&lt;/span>&lt;span> &lt;span style="color:#e06c75">file_clear&lt;/span>(&lt;span style="color:#e06c75">_file_name&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">48&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">_n2&lt;/span> &lt;span style="color:#56b6c2">in&lt;/span> &lt;span style="color:#e06c75">_c2&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>]:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">49&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">_n3&lt;/span> &lt;span style="color:#56b6c2">in&lt;/span> &lt;span style="color:#e06c75">_c3&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>]:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">50&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">_n4&lt;/span> &lt;span style="color:#56b6c2">in&lt;/span> &lt;span style="color:#e06c75">_c4&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>]:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">51&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span> &lt;span style="color:#e06c75">_n5&lt;/span> &lt;span style="color:#56b6c2">in&lt;/span> &lt;span style="color:#e06c75">_c5&lt;/span>[&lt;span style="color:#98c379">&amp;#39;_list&amp;#39;&lt;/span>]:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">52&lt;/span>&lt;span> &lt;span style="color:#7f848e">#url&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">53&lt;/span>&lt;span> &lt;span style="color:#e06c75">_u&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> (&lt;span style="color:#e06c75">url&lt;/span> &lt;span style="color:#56b6c2">%&lt;/span> ( &lt;span style="color:#e06c75">_n1&lt;/span>, &lt;span style="color:#e06c75">_n2&lt;/span>, &lt;span style="color:#e06c75">_n3&lt;/span>, &lt;span style="color:#e06c75">_n4&lt;/span>, &lt;span style="color:#e06c75">_n5&lt;/span>, ))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">54&lt;/span>&lt;span> &lt;span style="color:#7f848e">#car num&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">55&lt;/span>&lt;span> &lt;span style="color:#e06c75">_num&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> (&lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">%&lt;/span> ( &lt;span style="color:#e06c75">_n1&lt;/span>, &lt;span style="color:#e06c75">_n2&lt;/span>, &lt;span style="color:#e06c75">_n3&lt;/span>, &lt;span style="color:#e06c75">_n4&lt;/span>, &lt;span style="color:#e06c75">_n5&lt;/span>, ))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">56&lt;/span>&lt;span> &lt;span style="color:#e06c75">_content&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">file_get_contents&lt;/span>(&lt;span style="color:#e06c75">_u&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">57&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">58&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">_content&lt;/span>[&lt;span style="color:#d19a66">0&lt;/span>:&lt;span style="color:#d19a66">2&lt;/span>]&lt;span style="color:#56b6c2">!=&lt;/span>&lt;span style="color:#98c379">&amp;#39;00&amp;#39;&lt;/span> ):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">59&lt;/span>&lt;span> &lt;span style="color:#c678dd">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">60&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">61&lt;/span>&lt;span> &lt;span style="color:#e06c75">_content&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">_num&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#98c379">\t&lt;/span>&lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">_content&lt;/span>[&lt;span style="color:#d19a66">2&lt;/span>:]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">62&lt;/span>&lt;span> &lt;span style="color:#e06c75">file_put_contents&lt;/span>(&lt;span style="color:#e06c75">_file_name&lt;/span>, &lt;span style="color:#e06c75">_content&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">63&lt;/span>&lt;span> &lt;span style="color:#e5c07b">print&lt;/span>(&lt;span style="color:#e06c75">_num&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">64&lt;/span>&lt;span> &lt;span style="color:#7f848e">#end _c5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">65&lt;/span>&lt;span> &lt;span style="color:#7f848e">#end _c4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">66&lt;/span>&lt;span> &lt;span style="color:#7f848e">#end _c3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">67&lt;/span>&lt;span> &lt;span style="color:#7f848e">#end _c2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">68&lt;/span>&lt;span> &lt;span style="color:#7f848e">#os.system(&amp;#39;pause&amp;#39;)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">69&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">70&lt;/span>&lt;span>&lt;span style="color:#7f848e">#end _c1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>附:&lt;/p></description></item><item><title>mongodb close() 引发的PHP-FPM进程“血案”</title><link>https://mrasong.com/a/6da9003b743b65f4c0ccd295cc484e57/</link><pubDate>Tue, 07 Jan 2014 16:36:00 +0800</pubDate><guid>https://mrasong.com/a/6da9003b743b65f4c0ccd295cc484e57/</guid><description>&lt;p>公司的日志统计数据库使用 &lt;code>PHP+MongoDB&lt;/code> 进行数据日志统计。&lt;/p>
&lt;p>今天运维同事发现 &lt;code>php-fpm&lt;/code> 进程数居高不下，只有在 reload 后才恢复，但是之后又一直处于上升状态。&lt;/p>
&lt;p>查看了 &lt;code>php-fpm.conf&lt;/code> 文件，更改了设置还是无效。&lt;/p></description></item><item><title>typecho 多用户版</title><link>https://mrasong.com/a/multi-user-for-typecho/</link><pubDate>Tue, 24 Dec 2013 15:40:43 +0800</pubDate><guid>https://mrasong.com/a/multi-user-for-typecho/</guid><description>&lt;p>尝试着将 0.9 版的 typecho 改为多用户版，待测试正常后放出。&lt;/p></description></item><item><title>simcms 后台入口文件破解</title><link>https://mrasong.com/a/simcms-adm-decrypted/</link><pubDate>Mon, 23 Dec 2013 16:25:00 +0800</pubDate><guid>https://mrasong.com/a/simcms-adm-decrypted/</guid><description>&lt;p>&lt;a href="http://www.php.net/base64-decode">base64_decode&lt;/a> , &lt;a href="http://www.php.net/eval">eval&lt;/a>&lt;/p>
&lt;p>解密前：&lt;code>adm.bak.php&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#56b6c2">&amp;lt;?&lt;/span>&lt;span style="color:#e06c75">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e">// Copyright(C) 2013 www.simcms.net, All rights reserved.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$OOO0O0O00&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">__FILE__&lt;/span>;&lt;span style="color:#e06c75">$OOO000000&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">urldecode&lt;/span>(&lt;span style="color:#98c379">&amp;#39;%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72&amp;#39;&lt;/span>);&lt;span style="color:#e06c75">$OO00O0000&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">648&lt;/span>;&lt;span style="color:#e06c75">$OOO0000O0&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">4&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">9&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">3&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">5&lt;/span>};&lt;span style="color:#e06c75">$OOO0000O0&lt;/span>&lt;span style="color:#56b6c2">.=&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">2&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">10&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">13&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">16&lt;/span>};&lt;span style="color:#e06c75">$OOO0000O0&lt;/span>&lt;span style="color:#56b6c2">.=&lt;/span>&lt;span style="color:#e06c75">$OOO0000O0&lt;/span>{&lt;span style="color:#d19a66">3&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">11&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">12&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO0000O0&lt;/span>{&lt;span style="color:#d19a66">7&lt;/span>}&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$OOO000000&lt;/span>{&lt;span style="color:#d19a66">5&lt;/span>};&lt;span style="color:#e06c75">$O0O0000O0&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#39;OOO0000O0&amp;#39;&lt;/span>;&lt;span style="color:#c678dd">eval&lt;/span>((&lt;span style="color:#e06c75">$$O0O0000O0&lt;/span>(&lt;span style="color:#98c379">&amp;#39;JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMTkwKTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ2ZUTThCWjlHN0pOYjRlMHp3MllVZEtsNXlvU2ptM3B0L0RWK1B2SUxuUXhIdWtXNmNBaTFhc3JoT1JGcUNFWGc9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=&amp;#39;&lt;/span>)));&lt;span style="color:#c678dd">return&lt;/span>;&lt;span style="color:#56b6c2">?&amp;amp;&lt;/span>&lt;span style="color:#e06c75">gt&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>&lt;span style="color:#e06c75">JBEz48Tz48Tz48s13GJtmIKcj9Z&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">oY&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">L5sE9YdAZ5sCLbM7L7VOPUaEz4BCcU1fcbV7L7VcnJBEzU1fc48Tz4M&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">PUaCcUaCc4BCcNM2zU1TzU1fc4BCnJBCc48Tz4BCc4McPUaCc4BCc48fcNYcLov2e0BJS0dmhYPRVe9dcpLmilKKPYrcsplEUSIa1mGw62ZyHdGoJU9R2pBDsSsmryaZQ4lZ1mIDzdPoAwaKyo1aLbM3TwPeB2doGYBvNYaAeUPEwdKJUKZKlKsDolIZVyr2voI3nSlQHj9sWjhTAmLea35ohpGvF48Bi41wse&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">mO0Yu6JiPQNYPqoIeujhevNM2z48fcU1Tz48fQ0rKrylcnJBEz48Tz48Tz4MPq8waeSlR&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">jGKPoY&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">LyrEkjlEWbIvWyiRcSGfLNUueSlR&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">jGKPoYDJUPet2BvYbV3co5JkS5e1SlEWbIosjI4Wm9DcJiPq8lvWyrAso9dnYdR85a2JdVfWJrDajlcWoLKWyiRcSGfLNUueSlR&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">jGKPoYfnJrvWo9KObhTDordWm9DcJiPq8waPo9EkylvW78a&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#d19a66">7&lt;/span>&lt;span style="color:#e06c75">IA6yrZuS9E13M7q8waPUBE8wdABUasTYdO&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">zYfP5seZdvoZdvuVYZ2ddZE7Used7vaq8wPeSlynmh2imh2iNM24UaeTUB2zUdZJUVcPo9EkylvWNUaE79oDjGevN5ueMlKOS5wn7WYEn0pSD0S0V0S3&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">XltLXlw&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">pYO&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">pSknXpDHWXC&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">Y7Q0csE8waPjlEP78a&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">S5e1o5wnJZEG2K2jJrs6oM33NYfgJZEG2K2jJrs6oM3378n&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">JrsDSlOL0csQoVfn7lv15rZPjlvW5rA6orvWNMPQ7M2kjrw&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">zYfLj9ELSlOL0csQoVfn7loQj9Kto5DQmh21NM3Do9sQjVCLbV2kjrw&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">bVmWm9DcJiPQ79KOS5wnJrKimIEi7GKijMmQ0csco5JkS5e1SlEW5renSi&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">Q0csQjIeu3l2vNM3Do9sQjVCLbV2kjrw&lt;/span>&lt;span style="color:#56b6c2">/&lt;/span>&lt;span style="color:#e06c75">bVmWm9DcJiPq8w&lt;/span>&lt;span style="color:#56b6c2">==&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>解密后：&lt;code>adm.php&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#56b6c2">&amp;lt;?&lt;/span>&lt;span style="color:#e06c75">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#98c379">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#98c379"> * decrypted by mrasong
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @mrasong 2013-12-23
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#98c379"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#c678dd">include&lt;/span>(&lt;span style="color:#98c379">&amp;#39;common.inc.php&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#c678dd">include&lt;/span>(&lt;span style="color:#e06c75">INC_DIR&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;permission.func.php&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#c678dd">include&lt;/span>(&lt;span style="color:#e06c75">INC_DIR&lt;/span> &lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;html.func.php&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#c678dd">include&lt;/span> (&lt;span style="color:#98c379">&amp;#39;index/page.php&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#e06c75">$domain&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;localhost&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">$LOCALDOMAIN&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#34;HTTP_HOST&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#7f848e">/* fuck the authorization
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#7f848e">if(strstr($LOCALDOMAIN,$domain)== false){
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>&lt;span style="color:#7f848e"> exit(&amp;#34;你的授权域名不正确！&amp;#34;);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#7f848e">}*/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#e06c75">$mod&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$_GET&lt;/span>[&lt;span style="color:#98c379">&amp;#39;mod&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">?&lt;/span>&lt;span style="color:#e06c75">$_GET&lt;/span>[&lt;span style="color:#98c379">&amp;#39;mod&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">:&lt;/span> &lt;span style="color:#98c379">&amp;#39;main&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span> (&lt;span style="color:#56b6c2">!&lt;/span>&lt;span style="color:#e06c75">is_admin_login&lt;/span>()) &lt;span style="color:#e06c75">$mod&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#39;login&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span> (&lt;span style="color:#56b6c2">!&lt;/span>&lt;span style="color:#e06c75">file_exists&lt;/span>(&lt;span style="color:#98c379">&amp;#39;admin/&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$mod&lt;/span> &lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;.php&amp;#39;&lt;/span>)) &lt;span style="color:#c678dd">exit&lt;/span>(&lt;span style="color:#98c379">&amp;#39;error url&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>&lt;span style="color:#e06c75">permission_chk&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>&lt;span style="color:#c678dd">include&lt;/span>(&lt;span style="color:#98c379">&amp;#39;admin/&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$mod&lt;/span> &lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;.php&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>附 PHP 文件：&lt;a href="https://mrasong.com/attachment/2013/12/414c5ed227f9b5fc3f317ccc6a85d499.zip">simcms.adm.php.zip&lt;/a>&lt;/p></description></item><item><title>升级，换模板</title><link>https://mrasong.com/a/060ad92489947d410d897474079c1477/</link><pubDate>Fri, 20 Dec 2013 16:46:00 +0800</pubDate><guid>https://mrasong.com/a/060ad92489947d410d897474079c1477/</guid><description>&lt;p>升级、换皮，辞旧迎新！&lt;/p></description></item><item><title>小米抢购技巧（BUG）--[已失效]</title><link>https://mrasong.com/a/f6fd4a8680cc29fa/</link><pubDate>Fri, 18 Oct 2013 11:04:00 +0800</pubDate><guid>https://mrasong.com/a/f6fd4a8680cc29fa/</guid><description>&lt;h2 id="工具">工具：&lt;/h2>
&lt;p>1、chrome 或者 firefox 浏览器，建议用 chrome 浏览器，firefox 需安装 firebug 插件。&lt;/p>
&lt;p>2、预约购买的小米账号。&lt;/p>
&lt;h2 id="准备">准备：&lt;/h2>
&lt;p>提前打开抢购页面，并用已经预约的小米账号进行登录。&lt;/p></description></item><item><title>PHP按千分位格式化数字 number_format</title><link>https://mrasong.com/a/php_number_format/</link><pubDate>Fri, 19 Jul 2013 16:59:00 +0800</pubDate><guid>https://mrasong.com/a/php_number_format/</guid><description>&lt;p>看到有用正则处理的，就查了下手册，看到这个方法。&lt;/p>
&lt;p>其实 PHP 自带的好多方法都可以实现我们的一些功能，遇到问题，可以先看看手册。&lt;/p>
&lt;p>&lt;strong>&lt;a href="http://php.net/number_format">number_format&lt;/a>&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#e06c75">$number&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">1234.56&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#7f848e">// english notation (default)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$english_format_number&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">number_format&lt;/span>(&lt;span style="color:#e06c75">$number&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#7f848e">// 1,235
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#7f848e">// French notation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$nombre_format_francais&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">number_format&lt;/span>(&lt;span style="color:#e06c75">$number&lt;/span>, &lt;span style="color:#d19a66">2&lt;/span>, &lt;span style="color:#98c379">&amp;#39;,&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39; &amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#7f848e">// 1 234,56
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#e06c75">$number&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">1234.5678&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#7f848e">// english notation without thousands seperator
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$english_format_number&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">number_format&lt;/span>(&lt;span style="color:#e06c75">$number&lt;/span>, &lt;span style="color:#d19a66">2&lt;/span>, &lt;span style="color:#98c379">&amp;#39;.&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#7f848e">// 1234.57
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>&lt;a href="http://php.net/money_format">money_format&lt;/a>&lt;/strong>&lt;/p></description></item><item><title>6.cn的两个PHP面试题</title><link>https://mrasong.com/a/ed2cc375e880031d/</link><pubDate>Sat, 25 May 2013 22:33:00 +0800</pubDate><guid>https://mrasong.com/a/ed2cc375e880031d/</guid><description>&lt;p>读取一个文件，将其 Base64 编码，每 76 个字符加一个换行&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#e06c75">chunk_split&lt;/span>(&lt;span style="color:#e06c75">base64_encode&lt;/span>(&lt;span style="color:#56b6c2">@&lt;/span>&lt;span style="color:#e06c75">file_get_contents&lt;/span>(&lt;span style="color:#e06c75">__FILE__&lt;/span>)));
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>写一个函数，参数为&lt;code>$n&lt;/code>，生成一个数组，其元素为&lt;code>1~$n&lt;/code>，各元素位置随机排列，不得重复&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">$arr&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">range&lt;/span>(&lt;span style="color:#d19a66">1&lt;/span>, &lt;span style="color:#e06c75">$n&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#e06c75">shuffle&lt;/span>(&lt;span style="color:#e06c75">$arr&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e06c75">print_r&lt;/span>(&lt;span style="color:#e06c75">$arr&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>PHP安装MongoDB驱动</title><link>https://mrasong.com/a/mongodb-for-php/</link><pubDate>Wed, 17 Apr 2013 15:08:00 +0800</pubDate><guid>https://mrasong.com/a/mongodb-for-php/</guid><description>&lt;h3 id="linux">linux&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>wget -c https://github.com/mongodb/mongo-php-driver/archive/master.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>unzip master.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e5c07b">cd&lt;/span> mongo-php-driver-master
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>phpize
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>&lt;span style="color:#98c379">\#&lt;/span>&lt;span style="color:#7f848e">### php-config路径&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>./configure --with-php-config&lt;span style="color:#56b6c2">=&lt;/span>/usr/local/php/bin/php-config 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">8&lt;/span>&lt;span>make &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> make install
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后在 &lt;code>php.ini&lt;/code> 文件里面 添加&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">extension&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">mongo.so;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>重启 PHP，OK。&lt;/p></description></item><item><title>linux 下安装MongoDB</title><link>https://mrasong.com/a/install-mongodb-for-linux/</link><pubDate>Wed, 17 Apr 2013 10:36:00 +0800</pubDate><guid>https://mrasong.com/a/install-mongodb-for-linux/</guid><description>&lt;p>1、下载&lt;/p>
&lt;p>到官网下载 相应的版本（32bit, 64bit）&lt;a href="http://www.mongodb.org/downloads">http://www.mongodb.org/downloads&lt;/a>&lt;/p>
&lt;p>2、配置&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>tar zxvf mongodb-linux-i686-x.x.x.tgz &lt;span style="color:#56b6c2">(&lt;/span>xxx是相应版本号&lt;span style="color:#56b6c2">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>cp mongodb-linux-i686-x.x.x /usr/local/mongodb
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e5c07b">cd&lt;/span> /usr/local/mongodb
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>mkdir /usr/local/mongodb/data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>在 /usr/local/mongodb/ 下新建一个配置文件（文本），mongo.conf，将配置信息写入到文件，如下：&lt;/p></description></item><item><title>windows下安装MongoDB</title><link>https://mrasong.com/a/install-mongodb-for-windows/</link><pubDate>Wed, 17 Apr 2013 10:24:00 +0800</pubDate><guid>https://mrasong.com/a/install-mongodb-for-windows/</guid><description>&lt;p>windows 下安装 MongoDB&lt;/p>
&lt;p>1、下载&lt;/p>
&lt;p>到官网下载 相应的版本（32bit, 64bit）&lt;a href="http://www.mongodb.org/downloads">http://www.mongodb.org/downloads&lt;/a>&lt;/p>
&lt;p>2、配置&lt;br>
解压下载下来的 MongoDB 包 &lt;code>mongodb-win32-i386-x.x.x.zip&lt;/code> 到自己的目录，如 &lt;code>E:\\Mongo&lt;/code>。&lt;br>
新建一个配置文件（文本），mongo.conf，将配置信息写入到文件，如下：&lt;/p></description></item><item><title>Mongodb启动命令mongod参数说明</title><link>https://mrasong.com/a/mongodb-config/</link><pubDate>Wed, 17 Apr 2013 10:20:00 +0800</pubDate><guid>https://mrasong.com/a/mongodb-config/</guid><description>&lt;p>mongod 的主要参数有：&lt;/p>
&lt;h3 id="基本配置">  基本配置&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>--quiet &lt;span style="color:#7f848e"># 安静输出&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>--port arg &lt;span style="color:#7f848e"># 指定服务端口号，默认端口 27017&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>--bind_ip arg &lt;span style="color:#7f848e"># 绑定服务 IP，若绑定 127.0.0.1，则只能本机访问，不指定默认本地所有 IP&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>--logpath arg &lt;span style="color:#7f848e"># 指定 MongoDB 日志文件，注意是指定文件不是目录&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>--logappend &lt;span style="color:#7f848e"># 使用追加的方式写日志&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>--pidfilepath arg &lt;span style="color:#7f848e"># PID File 的完整路径，如果没有设置，则没有 PID 文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>--keyFile arg &lt;span style="color:#7f848e"># 集群的私钥的完整路径，只对于 Replica Set 架构有效&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>--unixSocketPrefix arg &lt;span style="color:#7f848e"># UNIX 域套接字替代目录,(默认为 /tmp)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>--fork &lt;span style="color:#7f848e"># 以守护进程的方式运行 MongoDB，创建服务器进程&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>--auth &lt;span style="color:#7f848e"># 启用验证&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>--cpu &lt;span style="color:#7f848e"># 定期显示 CPU 的 CPU 利用率和 iowait&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>--dbpath arg &lt;span style="color:#7f848e"># 指定数据库路径&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>--diaglog arg &lt;span style="color:#7f848e"># diaglog 选项 0=off 1=W 2=R 3=both 7=W+some reads&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>--directoryperdb &lt;span style="color:#7f848e"># 设置每个数据库将被保存在一个单独的目录&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>--journal &lt;span style="color:#7f848e"># 启用日志选项，MongoDB 的数据操作将会写入到 journal 文件夹的文件里&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>--journalOptions arg &lt;span style="color:#7f848e"># 启用日志诊断选项&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>--ipv6 &lt;span style="color:#7f848e"># 启用 IPv6 选项&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>--jsonp &lt;span style="color:#7f848e"># 允许 JSONP 形式通过 HTTP 访问（有安全影响）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>--maxConns arg &lt;span style="color:#7f848e"># 最大同时连接数 默认 2000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>--noauth &lt;span style="color:#7f848e"># 不启用验证&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>--nohttpinterface &lt;span style="color:#7f848e"># 关闭 http 接口，默认关闭 27018 端口访问&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>--noprealloc &lt;span style="color:#7f848e"># 禁用数据文件预分配(往往影响性能)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>--noscripting &lt;span style="color:#7f848e"># 禁用脚本引擎&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>--notablescan &lt;span style="color:#7f848e"># 不允许表扫描&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span>--nounixsocket &lt;span style="color:#7f848e"># 禁用 Unix 套接字监听&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span>--nssize arg &lt;span style="color:#56b6c2">(=&lt;/span>16&lt;span style="color:#56b6c2">)&lt;/span> &lt;span style="color:#7f848e"># 设置信数据库.ns 文件大小(MB)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span>--objcheck &lt;span style="color:#7f848e"># 在收到客户数据,检查的有效性，&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span>--profile arg &lt;span style="color:#7f848e"># 档案参数 0=off 1=slow, 2=all&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span>--quota &lt;span style="color:#7f848e"># 限制每个数据库的文件数，设置默认为 8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span>--quotaFiles arg &lt;span style="color:#7f848e"># number of files allower per db, requires --quota&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span>--rest &lt;span style="color:#7f848e"># 开启简单的 rest API&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span>--repair &lt;span style="color:#7f848e"># 修复所有数据库 run repair on all dbs&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span>--repairpath arg &lt;span style="color:#7f848e"># 修复库生成的文件的目录,默认为目录名称 dbpath&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span>--slowms arg &lt;span style="color:#56b6c2">(=&lt;/span>100&lt;span style="color:#56b6c2">)&lt;/span> &lt;span style="color:#7f848e"># value of slow for profile and console log&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span>--smallfiles &lt;span style="color:#7f848e"># 使用较小的默认文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span>--syncdelay arg &lt;span style="color:#56b6c2">(=&lt;/span>60&lt;span style="color:#56b6c2">)&lt;/span> &lt;span style="color:#7f848e"># 数据写入磁盘的时间秒数(0=never,不推荐)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span>--sysinfo &lt;span style="color:#7f848e"># 打印一些诊断系统信息&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span>--upgrade &lt;span style="color:#7f848e"># 如果需要升级数据库  _ Replicaton 参数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span>--fastsync &lt;span style="color:#7f848e"># 从一个 dbpath 里启用从库复制服务，该 dbpath 的数据库是主库的快照，可用于快速启用同步&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">42&lt;/span>&lt;span>--autoresync &lt;span style="color:#7f848e"># 如果从库与主库同步数据差得多，自动重新同步，&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">43&lt;/span>&lt;span>--oplogSize arg &lt;span style="color:#7f848e"># 设置 oplog 的大小(MB)  _ 主/从参数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">44&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">45&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">46&lt;/span>&lt;span>--master &lt;span style="color:#7f848e"># 主库模式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">47&lt;/span>&lt;span>--slave &lt;span style="color:#7f848e"># 从库模式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">48&lt;/span>&lt;span>--source arg &lt;span style="color:#7f848e"># 从库 端口号&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">49&lt;/span>&lt;span>--only arg &lt;span style="color:#7f848e"># 指定单一的数据库复制&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">50&lt;/span>&lt;span>--slavedelay arg &lt;span style="color:#7f848e"># 设置从库同步主库的延迟时间  _ Replica set(副本集)选项：&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">51&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">52&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">53&lt;/span>&lt;span>--replSet arg &lt;span style="color:#7f848e"># 设置副本集名称  _ Sharding(分片)选项&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">54&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">55&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">56&lt;/span>&lt;span>--configsvr &lt;span style="color:#7f848e"># 声明这是一个集群的 config 服务,默认端口 27019，默认目录/data/configdb&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">57&lt;/span>&lt;span>--shardsvr &lt;span style="color:#7f848e"># 声明这是一个集群的分片,默认端口 27018&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">58&lt;/span>&lt;span>--noMoveParanoia &lt;span style="color:#7f848e"># 关闭偏执为 moveChunk 数据保存&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="上述参数都可以写入-mongodconf-配置文档里例如">上述参数都可以写入 &lt;code>mongod.conf&lt;/code> 配置文档里例如：&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">dbpath&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">/data/mongodb&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#e06c75">logpath&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">/data/mongodb/mongodb.log&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e06c75">logappend&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>&lt;span style="color:#e06c75">port&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">27017&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>&lt;span style="color:#e06c75">fork&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>&lt;span style="color:#e06c75">auth&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>本文转载自： &lt;a href="http://blog.csdn.net/fdipzone/article/details/7442162">http://blog.csdn.net/fdipzone/article/details/7442162&lt;/a>&lt;/p></description></item><item><title>用sina weibo图片服务器做免费图床</title><link>https://mrasong.com/a/sinaimg-as-free-image-host/</link><pubDate>Fri, 12 Apr 2013 10:04:00 +0800</pubDate><guid>https://mrasong.com/a/sinaimg-as-free-image-host/</guid><description>&lt;p>先看一张新浪微博的图片：&lt;/p>
&lt;p>&lt;img alt="sinaimg_example.jpg" loading="lazy" src="https://mrasong.com/attachment/2013/04/6154cb0ca4f62b13c8c8826fb457552c.jpg">&lt;/p>
&lt;p>&lt;a href="https://ww1.sinaimg.cn/large/759ca81bjw1e3lszmrg8yj.jpg">https://ww1.sinaimg.cn/large/759ca81bjw1e3lszmrg8yj.jpg&lt;/a>
&lt;a href="https://ww2.sinaimg.cn/bmiddle/759ca81bjw1e3lszmrg8yj.jpg">https://ww2.sinaimg.cn/bmiddle/759ca81bjw1e3lszmrg8yj.jpg&lt;/a>
&lt;a href="https://ww3.sinaimg.cn/small/759ca81bjw1e3lszmrg8yj.jpg">https://ww3.sinaimg.cn/small/759ca81bjw1e3lszmrg8yj.jpg&lt;/a>
&lt;a href="https://ww4.sinaimg.cn/thumbnail/759ca81bjw1e3lszmrg8yj.jpg">https://ww4.sinaimg.cn/thumbnail/759ca81bjw1e3lszmrg8yj.jpg&lt;/a>&lt;/p>
&lt;p>这个图片地址由三个部分组成&lt;/p>
&lt;blockquote>
&lt;p>https://{host}/{size}/{filename}&lt;/p>
&lt;/blockquote>
&lt;p>&lt;code>{host}&lt;/code>: CDN 图片服务器 host，ww1.sinaimg.cn，ww2.sinaimg.cn，ww3.sinaimg.cn，ww4.sinaimg.cn，这四个当中的任何一个。&lt;/p></description></item><item><title>一句代码让js实现PHP的rand方法</title><link>https://mrasong.com/a/js-rand/</link><pubDate>Wed, 10 Apr 2013 17:50:00 +0800</pubDate><guid>https://mrasong.com/a/js-rand/</guid><description/></item><item><title>百度mp3接口（baidu mp3 api）</title><link>https://mrasong.com/a/baidu-mp3-api/</link><pubDate>Tue, 09 Apr 2013 16:42:00 +0800</pubDate><guid>https://mrasong.com/a/baidu-mp3-api/</guid><description>&lt;h2 id="新接口请看百度-mp3-接口新1">新接口请看：&lt;a href="http://mrasong.com/a/baidu-mp3-api-full">百度 mp3 接口（新）&lt;/a>&lt;/h2>
&lt;p>1、通过关键词，获取列表。
&lt;code>http://mp3.baidu.com/dev/api/?tn=getinfo&amp;amp;ct=0&amp;amp;ie=utf-8&amp;amp;word=&amp;lt;word&amp;gt;&amp;amp;format=&amp;lt;format&amp;gt;&lt;/code>
参数：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span> word: &amp;#34;歌曲名&amp;#34;, //歌曲名 encodeURI
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> format: &amp;#34;json&amp;#34;, //返回数据格式，xml | json，默认xml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> callback: &amp;#34;Pub.music.searchResult&amp;#34;, //固定值，返回jsonp格式
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如 xml 格式：
&lt;code>http://mp3.baidu.com/dev/api/?tn=getinfo&amp;amp;ct=0&amp;amp;word=%E6%B5%81%E6%B5%AA%E8%AE%B0&amp;amp;ie=utf-8&amp;amp;format=xml&lt;/code>&lt;/p>
&lt;p>返回：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#e06c75">&amp;lt;res&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;song&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[流浪记]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/song&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;song_id&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[38233821]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/song_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;singer&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[杨宗纬]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/singer&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;album&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[我是歌手 第十一期]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/album&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;singerPicLarge&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[http://qukufile2.qianqian.com/data2/pic/36218335/36218335.jpg]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/singerPicLarge&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;singerPicSmall&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[http://qukufile2.qianqian.com/data2/pic/36218344/36218344.jpg]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/singerPicSmall&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;albumPicLarge&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/albumPicLarge&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;lt;albumPicSmall&amp;gt;&lt;/span>&lt;span style="color:#7f848e">&amp;lt;![CDATA[]]&amp;gt;&lt;/span>&lt;span style="color:#e06c75">&amp;lt;/albumPicSmall&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#e06c75">&amp;lt;/res&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>最全weather.com.cn天气网各接口地址</title><link>https://mrasong.com/a/weather-api/</link><pubDate>Tue, 02 Apr 2013 13:49:00 +0800</pubDate><guid>https://mrasong.com/a/weather-api/</guid><description>&lt;p>1、省份列表：&lt;/p>
&lt;p>&lt;a href="http://weather.com.cn/data/city3jdata/china.html">http://weather.com.cn/data/city3jdata/china.html&lt;/a>&lt;/p>
&lt;p>2、根据省 ID  获取市（地区）列表：&lt;/p>
&lt;p>&lt;a href="http://weather.com.cn/data/city3jdata/provshi/10111.html">http://weather.com.cn/data/city3jdata/provshi/.html&lt;/a>&lt;/p>
&lt;p>&lt;a href="http://weather.com.cn/data/listinfo/city%3Csid%3E.xml">http://weather.com.cn/data/listinfo/city.xml&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>id = 省份ID （101 + 两位数字01~34）
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>sid = 省份ID 后两位
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如： &lt;a href="http://weather.com.cn/data/city3jdata/provshi/10111.html">http://weather.com.cn/data/city3jdata/provshi/10111.html&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;01&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;西安&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;02&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;咸阳&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;03&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;延安&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;04&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;榆林&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;05&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;渭南&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;06&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;商洛&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;07&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;安康&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;08&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;汉中&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;09&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;宝鸡&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;10&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;铜川&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">&amp;#34;11&amp;#34;&lt;/span>: &lt;span style="color:#98c379">&amp;#34;杨凌&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如： &lt;a href="http://weather.com.cn/data/listinfo/city11.xml">http://weather.com.cn/data/listinfo/city11.xml&lt;/a>&lt;/p></description></item><item><title>lofer 轻博之bug</title><link>https://mrasong.com/a/lofer-url-bug/</link><pubDate>Tue, 02 Apr 2013 12:58:00 +0800</pubDate><guid>https://mrasong.com/a/lofer-url-bug/</guid><description>&lt;p>这是 lofer 文章页面的 url&lt;/p>
&lt;p>&lt;a href="http://lovelunch.mrasong.com/post/16c114_4f11be">http://lovelunch.mrasong.com/post/16c114_4f11be&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>域名 + /post/ + 博客id的16进制 + _ + 文章id的16进制
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>bid ： 16c114 =&amp;gt; 1491220
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>pid ： 4f11be =&amp;gt; 5181886
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>只要我随便更改一个  pid  就会让别人的文章成为我的：&lt;/p></description></item><item><title>获取youku视频源地址</title><link>https://mrasong.com/a/get-youku-video-source-url/</link><pubDate>Wed, 20 Mar 2013 17:34:00 +0800</pubDate><guid>https://mrasong.com/a/get-youku-video-source-url/</guid><description>&lt;p>下午没事，分析 youku 页面源码，挖掘出来的东西。 根据 vid 获取视频信息，返回 json 格式&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>http://m.youku.com/wireless_api3/videos/&amp;lt;vid&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>根据 vid 获取视频地址，返回 json 格式&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>http://m.youku.com/wireless_api3/videos/&amp;lt;vid&amp;gt;/playurl?format=1,2,4,5,6
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>根据 vid 获取 3GP 视频地址，返回 url 字符串&lt;/p></description></item><item><title>IE6下 JS location.href 跳转无法传递refer的问题</title><link>https://mrasong.com/a/ie6-js-refer/</link><pubDate>Wed, 20 Mar 2013 12:37:00 +0800</pubDate><guid>https://mrasong.com/a/ie6-js-refer/</guid><description>&lt;h3 id="两个页面">两个页面&lt;/h3>
&lt;p>a.html&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&amp;lt;&lt;span style="color:#e06c75">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">href&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;b.php&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&amp;lt;/&lt;span style="color:#e06c75">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>b.php&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#34;HTTP_REFERER&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>IE6 下，使用 &lt;code>location.href&lt;/code> 这种方式，&lt;code>b.php&lt;/code> 页面无法正常接受 &lt;code>refer&lt;/code> 信息。但是通过 a 标签点击能正常传递。&lt;/p>
&lt;p>添加 &lt;code>meta&lt;/code> 标签 &lt;code>refresh&lt;/code> 方法也可以正常传递。&lt;/p></description></item><item><title>MySQL 忘记root密码后 重置</title><link>https://mrasong.com/a/fa7fdddc55453ffc/</link><pubDate>Wed, 27 Feb 2013 13:54:00 +0800</pubDate><guid>https://mrasong.com/a/fa7fdddc55453ffc/</guid><description>&lt;p>进入 mysql 安装目录&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e5c07b">cd&lt;/span> /usr/local/mysql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#e5c07b">cd&lt;/span> bin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>./mysqld_safe --skip-grant-table &amp;amp; mysql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>use mysql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>update user &lt;span style="color:#e5c07b">set&lt;/span> &lt;span style="color:#e06c75">password&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>password&lt;span style="color:#56b6c2">(&lt;/span>&lt;span style="color:#98c379">&amp;#34;new password&amp;#34;&lt;/span>&lt;span style="color:#56b6c2">)&lt;/span> where &lt;span style="color:#e06c75">user&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;root&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>JS setAttribute('class') 兼容问题</title><link>https://mrasong.com/a/4380d60a0f1da84f/</link><pubDate>Tue, 19 Feb 2013 16:59:00 +0800</pubDate><guid>https://mrasong.com/a/4380d60a0f1da84f/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#e06c75">setClass&lt;/span>(&lt;span style="color:#e06c75">dom&lt;/span>, &lt;span style="color:#e06c75">className&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#c678dd">try&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> &lt;span style="color:#e06c75">dom&lt;/span>.&lt;span style="color:#e06c75">className&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">className&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#7f848e">//IE7及以下设置className方法 }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#c678dd">catch&lt;/span>(&lt;span style="color:#e06c75">e&lt;/span>){}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span> &lt;span style="color:#e06c75">dom&lt;/span>.&lt;span style="color:#e06c75">setAttribute&lt;/span>(&lt;span style="color:#98c379">&amp;#39;class&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">className&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>35 个免费的响应式网站模板下载</title><link>https://mrasong.com/a/2f716b878c30ffdb/</link><pubDate>Wed, 23 Jan 2013 15:24:00 +0800</pubDate><guid>https://mrasong.com/a/2f716b878c30ffdb/</guid><description>&lt;p>响应式 Web 设计(Responsive Web design)的理念是，页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的响应和调整。具体的实践方式由多方面组成，包括弹性网格和布局、图片、CSS media query 的使用等。无论用户正在使用笔记本还是 iPad，我们的页面都应该能够自动切换分辨率、图片尺寸及相关脚本功能等，以适应不同设备；换句话说， 页面应该有能力去自动响应用户的设备环境。这样，我们就可以不必为不断到来的新设备做专门的版本设计和开发了。&lt;/p></description></item><item><title>IE6下 加载js提示未定义的问题</title><link>https://mrasong.com/a/ie6-js-cache/</link><pubDate>Fri, 21 Dec 2012 10:32:00 +0800</pubDate><guid>https://mrasong.com/a/ie6-js-cache/</guid><description>&lt;p>最近写汇率小插件时，IE6 下遇到一个问题：&lt;/p>
&lt;p>第一次页面加载时，总提示未定义，页面刷新后就正常了。&lt;/p>
&lt;p>查看了一些资料，开始以为是加载顺序的问题，一直问题还在，刚查了一下，原来是 IE6 的 bug。&lt;/p></description></item><item><title>Typecho 社会化评论插件-友言</title><link>https://mrasong.com/a/uyan-for-typecho/</link><pubDate>Sat, 27 Oct 2012 04:42:00 +0800</pubDate><guid>https://mrasong.com/a/uyan-for-typecho/</guid><description>&lt;p>貌似好像论坛里面好久之前就有人要这个插件了，今天没事弄了下，先发出来。&lt;/p>
&lt;p>支持后台管理留言（需先登陆 uyan.cc）。&lt;/p>
&lt;p>下载地址：&lt;a href="https://mrasong.com/attachment/2012/10/b90b84d59e53557cdcfa6d9778b6b8c3.zip">TE_Plugin_UYan_1.0.0.zip&lt;/a>&lt;/p>
&lt;p>不知道单点登陆有没有多少人用？用的多的话，可以尝试着弄下。嘿嘿。&lt;/p></description></item><item><title>PHP Curl 获取https内容时，应该注意的问题</title><link>https://mrasong.com/a/2339912d43cf217a/</link><pubDate>Thu, 25 Oct 2012 11:09:00 +0800</pubDate><guid>https://mrasong.com/a/2339912d43cf217a/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">$ch&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">curl_init&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#e06c75">curl_setopt&lt;/span>(&lt;span style="color:#e06c75">$ch&lt;/span>, &lt;span style="color:#e06c75">CURLOPT_URL&lt;/span>, &lt;span style="color:#e06c75">$url&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e06c75">curl_setopt&lt;/span>(&lt;span style="color:#e06c75">$ch&lt;/span>, &lt;span style="color:#e06c75">CURLOPT_SSL_VERIFYPEER&lt;/span>, &lt;span style="color:#c678dd">false&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span>&lt;span style="color:#e06c75">curl_setopt&lt;/span>(&lt;span style="color:#e06c75">$ch&lt;/span>, &lt;span style="color:#e06c75">CURLOPT_SSL_VERIFYHOST&lt;/span>, &lt;span style="color:#c678dd">false&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span>&lt;span style="color:#e06c75">curl_setopt&lt;/span>(&lt;span style="color:#e06c75">$ch&lt;/span>, &lt;span style="color:#e06c75">CURLOPT_RETURNTRANSFER&lt;/span>, &lt;span style="color:#c678dd">true&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span>&lt;span style="color:#e06c75">$data&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">curl_exec&lt;/span>(&lt;span style="color:#e06c75">$ch&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>&lt;span style="color:#e06c75">curl_close&lt;/span>(&lt;span style="color:#e06c75">$ch&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>注意加 上加亮的这两句，去除 ssl 的验证。&lt;/p>
&lt;p>&lt;strong>php 手册中这样写：&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>FALSE&lt;/strong> to stop CURL from verifying the peer&amp;rsquo;s certificate. Alternate certificates to verify against can be specified with the &lt;strong>CURLOPT_CAINFO&lt;/strong> option or a certificate directory can be specified with the &lt;strong>CURLOPT_CAPATH&lt;/strong> option. &lt;strong>CURLOPT_SSL_VERIFYHOST&lt;/strong> may also need to be &lt;strong>TRUE&lt;/strong> or &lt;strong>FALSE&lt;/strong> if &lt;strong>CURLOPT_SSL_VERIFYPEER&lt;/strong> is disabled (it defaults to 2).&lt;/p></description></item><item><title>ThinkPHP 在nginx下rewrite</title><link>https://mrasong.com/a/nginx-rewrite-for-thinkphp/</link><pubDate>Tue, 23 Oct 2012 16:26:00 +0800</pubDate><guid>https://mrasong.com/a/nginx-rewrite-for-thinkphp/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span> &lt;span style="color:#98c379">(!-f&lt;/span> &lt;span style="color:#e06c75">$request\_filename&lt;/span>&lt;span style="color:#98c379">)&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#c678dd">rewrite&lt;/span> &lt;span style="color:#98c379">(/index.php)?(.\*)&lt;/span> &lt;span style="color:#98c379">/index.php?s=&lt;/span>&lt;span style="color:#e06c75">$2&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>(/index.php)?&lt;/code> 是为了支持 &lt;code>Pathinfo&lt;/code> 模式&lt;/p></description></item><item><title>Typecho for BAE</title><link>https://mrasong.com/a/typecho-for-bae/</link><pubDate>Sun, 21 Oct 2012 20:07:00 +0800</pubDate><guid>https://mrasong.com/a/typecho-for-bae/</guid><description>&lt;p>1、下载官方 10.8.15 版本，解压。&lt;/p>
&lt;p>&lt;a href="http://typecho.googlecode.com/files/0.8(10.8.15)-release.tar.gz">http://typecho.googlecode.com/files/0.8(10.8.15)-release.tar.gz&lt;/a>&lt;/p>
&lt;p>2、删除 &lt;code>install&lt;/code> 目录 及 &lt;code>install.php&lt;/code> 文件。&lt;/p>
&lt;p>3、下载 typecho_bae_config.zip 解压。&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="http://mrasong.com/attachment/2012/10/3d2bb8cb8376a30aba0dc1d4e9752938.zip">typecho_bae_config.zip&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>4、修改 &lt;code>typecho_bae.sql&lt;/code> 第 130 行（有注释），改为自己 BAE 上的域名，使用 BAE 自带的 &lt;code>phpmyadmin&lt;/code> 将些 sql 导入， 注意 uft-8 格式。&lt;/p></description></item><item><title>让PHP更快的提供文件下载</title><link>https://mrasong.com/a/25c0783596f8dc77528ff692a9dc82d1/</link><pubDate>Fri, 12 Oct 2012 13:57:00 +0800</pubDate><guid>https://mrasong.com/a/25c0783596f8dc77528ff692a9dc82d1/</guid><description>&lt;p>一般来说, 我们可以通过直接让 URL 指向一个位于 Document Root 下面的文件, 来引导用户下载文件.&lt;br>
但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让 PHP 来做转发, 为用户提供文件下载.&lt;/p></description></item><item><title>PHP判断客户端是否使用代理服务器及其匿名级别</title><link>https://mrasong.com/a/01fbea4baf6e736f586de83c504b325d/</link><pubDate>Fri, 24 Aug 2012 09:09:00 +0800</pubDate><guid>https://mrasong.com/a/01fbea4baf6e736f586de83c504b325d/</guid><description>&lt;p>要判断客户端是否使用代理服务器，可以从客户端所发送的环境变量信息来判断。&lt;br>
具体来说，就是看 HTTP_VIA 字段，如果这个字段设置了，说明客户端使用了代理服务器。&lt;br>
匿名级别可以参考下表来判断。&lt;br>
给出一个应用例子，可以挂上代理试试效果: &lt;a href="http://ip.mixsec.org/">http://ip.mixsec.org/&lt;/a>&lt;br>
一、没有使用代理服务器的情况：&lt;br>
     REMOTE_ADDR = 您的 IP&lt;br>
     HTTP_VIA = 没数值或不显示&lt;br>
     HTTP_X_FORWARDED_FOR = 没数值或不显示&lt;br>
二、使用透明代理服务器的情况：Transparent Proxies&lt;br>
    REMOTE_ADDR = 代理服务器 IP&lt;br>
    HTTP_VIA = 代理服务器 IP (补充：这个字段由代理服务器填充，有时会填充网关信息等)&lt;br>
    HTTP_X_FORWARDED_FOR = 您的真实 IP&lt;br>
    这类代理服务器还是将您的信息转发给您的访问对象，无法达到隐藏真实身份的目的。&lt;br>
三、使用普通匿名代理服务器的情况：Anonymous Proxies&lt;br>
    REMOTE_ADDR = 代理服务器 IP&lt;br>
    HTTP_VIA = 代理服务器 IP (补充：这个字段由代理服务器填充，有时会填充网关信息等)&lt;br>
    HTTP_X_FORWARDED_FOR = 代理服务器 IP&lt;br>
    隐藏了您的真实 IP，但是向访问对象透露了您是使用代理服务器访问他们的。&lt;br>
四、使用欺骗性代理服务器的情况：Distorting Proxies&lt;br>
    REMOTE_ADDR = 代理服务器 IP&lt;br>
    HTTP_VIA = 代理服务器 IP  (补充：这个字段由代理服务器填充，有时会填充网关信息等)&lt;br>
    HTTP_X_FORWARDED_FOR = 随机的 IP&lt;br>
    告诉了访问对象您使用了代理服务器，但编造了一个虚假的随机 IP 代替您的真实 IP 欺骗它。&lt;br>
五、使用高匿名代理服务器的情况：High Anonymity Proxies&lt;br>
   REMOTE_ADDR = 代理服务器 IP&lt;br>
   HTTP_VIA = 没数值或不显示&lt;br>
   HTTP_X_FORWARDED_FOR = 没数值或不显示&lt;br>
   完全用代理服务器的信息替代了您的所有信息，就象您就是完全使用那台代理服务器直接访问对象。&lt;br>
   除此之外，可以通过 proxy judges 总 结其他一些可供参考的判定信息，一遍于在实践中加以利用。&lt;br>
最后写一个 php 例子,仅供大家参考:&lt;/p></description></item><item><title>Typecho中改var文件夹路径后，插件无法使用的解决办法</title><link>https://mrasong.com/a/fecc90686e3177074ac68a121a4ee8b0/</link><pubDate>Tue, 14 Aug 2012 14:40:00 +0800</pubDate><guid>https://mrasong.com/a/fecc90686e3177074ac68a121a4ee8b0/</guid><description>&lt;p>今天在使用 &lt;code>70&lt;/code> 的 &lt;code>google_code_svn&lt;/code> 插件时，发现一个问题：&lt;/p>
&lt;p>明明我的 vps 已经开启了 &lt;code>curl&lt;/code> ，但是始终提示&lt;/p>
&lt;p>对不起,  您的主机不支持  &lt;code>php-curl&lt;/code>  扩展而且没有打开  &lt;code>allow_url_fopen&lt;/code>  功能,  无法正常使用此功能&lt;/p>
&lt;p>本地测试好着，放服务器上就出问题了。&lt;/p></description></item><item><title>linux 修改ssh端口</title><link>https://mrasong.com/a/linux-ssh-port/</link><pubDate>Fri, 10 Aug 2012 11:03:00 +0800</pubDate><guid>https://mrasong.com/a/linux-ssh-port/</guid><description>&lt;p>&lt;code>vi /etc/ssh/sshd_config&lt;/code>&lt;/p>
&lt;p>找到&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span># What ports, IPs and protocols we listen for
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>Port 22
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>修改为自己的 端口号即可&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>:wq
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>保存、退出&lt;/p>
&lt;p>&lt;code>/etc/init.d/ssh restart&lt;/code>&lt;/p></description></item><item><title>PHP另类方法 生成随机字符串</title><link>https://mrasong.com/a/b3db8e9ecf25dfd2a1158347b1c12bd3/</link><pubDate>Tue, 31 Jul 2012 14:57:00 +0800</pubDate><guid>https://mrasong.com/a/b3db8e9ecf25dfd2a1158347b1c12bd3/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">getRandStr&lt;/span>(&lt;span style="color:#e06c75">$n&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">6&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#c678dd">for&lt;/span>( &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">0&lt;/span>; &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">&amp;lt;&lt;/span>&lt;span style="color:#e06c75">$n&lt;/span>; &lt;span style="color:#e06c75">$i&lt;/span>&lt;span style="color:#56b6c2">++&lt;/span> ){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &lt;span style="color:#e06c75">$case&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">rand&lt;/span>(&lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#d19a66">2&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#c678dd">switch&lt;/span>(&lt;span style="color:#e06c75">$case&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#c678dd">case&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>&lt;span style="color:#56b6c2">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* ASCII 97-122 a-z */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span> &lt;span style="color:#56b6c2">.=&lt;/span> &lt;span style="color:#e06c75">chr&lt;/span>(&lt;span style="color:#e06c75">rand&lt;/span>(&lt;span style="color:#d19a66">97&lt;/span>, &lt;span style="color:#d19a66">122&lt;/span>)) ;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#c678dd">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#c678dd">case&lt;/span> &lt;span style="color:#d19a66">1&lt;/span>&lt;span style="color:#56b6c2">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* ASCII 65-90 A-Z */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span> &lt;span style="color:#56b6c2">.=&lt;/span> &lt;span style="color:#e06c75">chr&lt;/span>(&lt;span style="color:#e06c75">rand&lt;/span>(&lt;span style="color:#d19a66">65&lt;/span>, &lt;span style="color:#d19a66">90&lt;/span>)) ;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#c678dd">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#c678dd">case&lt;/span> &lt;span style="color:#d19a66">2&lt;/span>&lt;span style="color:#56b6c2">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#7f848e">/* ASCII 48-57 0-9 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#e06c75">$str&lt;/span> &lt;span style="color:#56b6c2">.=&lt;/span> &lt;span style="color:#e06c75">chr&lt;/span>(&lt;span style="color:#e06c75">rand&lt;/span>(&lt;span style="color:#d19a66">48&lt;/span>, &lt;span style="color:#d19a66">57&lt;/span>)) ;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> &lt;span style="color:#c678dd">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">$str&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>&lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#e06c75">getRandStr&lt;/span>(&lt;span style="color:#d19a66">32&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>BaiduBox MP3插件 For Typecho</title><link>https://mrasong.com/a/baidubox-mp3-plugin-for-typecho/</link><pubDate>Sat, 14 Jul 2012 21:45:00 +0800</pubDate><guid>https://mrasong.com/a/baidubox-mp3-plugin-for-typecho/</guid><description>&lt;p>好久没打理过博客了，一个字，忙！最近终于有点时间了，但是发现自己还是闲不下来，各种折腾。。。&lt;/p>
&lt;h4 id="背景">背景：&lt;/h4>
&lt;p>刚好最近要给泰山大人做个博客，不用说，程序肯定 typecho，但是皮肤得自己弄。在做皮肤时，看到论坛里面好像有人要播放器，就随手写了这个 BaiduBox 插件。&lt;/p></description></item><item><title>linux下 一键安装 subversion</title><link>https://mrasong.com/a/subversion/</link><pubDate>Sat, 26 May 2012 10:28:00 +0800</pubDate><guid>https://mrasong.com/a/subversion/</guid><description>&lt;h3 id="安装方法">安装方法&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>wget -c http://mrasong.com/attachment/2012/05/subversion-1.6.18.sh &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> chmod +x subversion-1.6.18.sh &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> ./subversion-1.6.18.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>下载：&lt;a href="http://mrasong.com/attachment/2012/05/subversion-1.6.18.sh">subversion-1.6.18.sh&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h3 id="使用方法">使用方法&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>/etc/init.d/subversion &lt;span style="color:#56b6c2">{&lt;/span>start|stop|restart|reload&lt;span style="color:#56b6c2">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="修改配置">修改配置&lt;/h3>
&lt;blockquote>
&lt;p>/home/data/svn/main/conf/svnserve.conf&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">[general]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e">### 匿名访问&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#e06c75">anon-access&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">none&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#7f848e"># auth-access = write&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#7f848e">### 用户文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#e06c75">password-db&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">passwd&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#7f848e">### 权限文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#e06c75">authz-db&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">authz&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#7f848e">### svn 名称&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">realm&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">MY SVN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#c678dd">[sasl]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#7f848e">### 这些可以默认&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>&lt;span style="color:#7f848e"># use-sasl = true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#7f848e"># min-encryption = 0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#7f848e"># max-encryption = 256&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="添加用户">添加用户&lt;/h3>
&lt;blockquote>
&lt;p>/home/data/svn/conf/passwd&lt;/p></description></item><item><title>Wordpress多用户系统 站点及文章访问量缓存方法</title><link>https://mrasong.com/a/cache-for-wp-multi-site/</link><pubDate>Thu, 03 May 2012 14:23:00 +0800</pubDate><guid>https://mrasong.com/a/cache-for-wp-multi-site/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#98c379">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#98c379"> * 博客、文章访问量缓存
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#98c379"> * useage: makeCount(int 博客ID [, int 文章ID [, int 更新间隔(1800s) [, int 博客访问量 [, int 文章访问量]]]] )
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @author MrAsong 2012-04-26
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#98c379"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">makeCount&lt;/span>(&lt;span style="color:#e06c75">$bid&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">1&lt;/span>, &lt;span style="color:#e06c75">$pid&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#e06c75">$update_interval&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">1800&lt;/span>, &lt;span style="color:#e06c75">$num_home&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">50&lt;/span>, &lt;span style="color:#e06c75">$num_post&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">15&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#c678dd">global&lt;/span> &lt;span style="color:#e06c75">$wpdb&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">$count_file&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">ABSPATH&lt;/span> &lt;span style="color:#56b6c2">.&lt;/span> &lt;span style="color:#98c379">&amp;#39;cache/blogcount_&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$bid&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;.js&amp;#39;&lt;/span> ;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$json&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#56b6c2">@&lt;/span>&lt;span style="color:#e06c75">file_get_contents&lt;/span>(&lt;span style="color:#e06c75">$count_file&lt;/span>) ){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">$c&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">json_decode&lt;/span>(&lt;span style="color:#e06c75">$json&lt;/span>,&lt;span style="color:#c678dd">true&lt;/span>); &lt;span style="color:#7f848e">//获取数据
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> }&lt;span style="color:#c678dd">else&lt;/span>{ &lt;span style="color:#7f848e">//如果不存在，创建count文件
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#e06c75">$c&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#39;create&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">time&lt;/span>(), &lt;span style="color:#7f848e">//上次更新时间
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#98c379">&amp;#39;blogcount&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$pid&lt;/span> &lt;span style="color:#56b6c2">==&lt;/span> &lt;span style="color:#d19a66">0&lt;/span> ){ &lt;span style="color:#7f848e">// 判断是否为首页
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;blogcount&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;blogcount&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#d19a66">1&lt;/span> ; &lt;span style="color:#7f848e">//count+1
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;blogcount&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">&amp;gt;=&lt;/span> &lt;span style="color:#e06c75">$num_home&lt;/span> &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> (&lt;span style="color:#e06c75">time&lt;/span>()&lt;span style="color:#56b6c2">-&lt;/span>&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;create&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$update_interval&lt;/span> ){&lt;span style="color:#7f848e">//更新博客访问量
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#e06c75">$sql&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;UPDATE &lt;/span>&lt;span style="color:#98c379">$wpdb-&amp;gt;blogs&lt;/span>&lt;span style="color:#98c379"> SET count=count+&lt;/span>&lt;span style="color:#98c379">{&lt;/span>&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;blogcount&amp;#39;&lt;/span>]&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379"> WHERE blog_id=&lt;/span>&lt;span style="color:#98c379">$bid&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span> &lt;span style="color:#e06c75">$wpdb&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">query&lt;/span>(&lt;span style="color:#e06c75">$sql&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;create&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">time&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;blogcount&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span> }&lt;span style="color:#c678dd">else&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;c&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;c&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">?&lt;/span> (&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;c&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#d19a66">1&lt;/span>) &lt;span style="color:#56b6c2">:&lt;/span> &lt;span style="color:#d19a66">1&lt;/span> ;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;t&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;t&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">?&lt;/span> &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;t&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">:&lt;/span> &lt;span style="color:#e06c75">time&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;c&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">&amp;gt;=&lt;/span> &lt;span style="color:#e06c75">$num_post&lt;/span> &lt;span style="color:#56b6c2">&amp;amp;&amp;amp;&lt;/span> (&lt;span style="color:#e06c75">time&lt;/span>()&lt;span style="color:#56b6c2">-&lt;/span>&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>][&lt;span style="color:#98c379">&amp;#39;t&amp;#39;&lt;/span>]) &lt;span style="color:#56b6c2">&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$update_interval&lt;/span> ){&lt;span style="color:#7f848e">//更新博客访问量
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#e06c75">$sql&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;UPDATE &lt;/span>&lt;span style="color:#98c379">$wpdb-&amp;gt;posts&lt;/span>&lt;span style="color:#98c379"> SET count=count+&lt;/span>&lt;span style="color:#98c379">{&lt;/span>&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>]&lt;span style="color:#98c379">}&lt;/span>&lt;span style="color:#98c379"> WHERE ID=&lt;/span>&lt;span style="color:#98c379">$pid&lt;/span>&lt;span style="color:#98c379">&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span> &lt;span style="color:#e06c75">$wpdb&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">query&lt;/span>(&lt;span style="color:#e06c75">$sql&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span> &lt;span style="color:#e06c75">unset&lt;/span>(&lt;span style="color:#e06c75">$c&lt;/span>[&lt;span style="color:#98c379">&amp;#39;post&amp;#39;&lt;/span>][&lt;span style="color:#e06c75">$pid&lt;/span>]); &lt;span style="color:#7f848e">//删除此元组
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>(&lt;span style="color:#e06c75">$fp&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#56b6c2">@&lt;/span>&lt;span style="color:#e06c75">fopen&lt;/span>(&lt;span style="color:#e06c75">$count_file&lt;/span>, &lt;span style="color:#98c379">&amp;#39;wb&amp;#39;&lt;/span>)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span> &lt;span style="color:#56b6c2">@&lt;/span>&lt;span style="color:#e06c75">fwrite&lt;/span>( &lt;span style="color:#e06c75">$fp&lt;/span>, &lt;span style="color:#e06c75">json_encode&lt;/span>(&lt;span style="color:#e06c75">$c&lt;/span>) );&lt;span style="color:#7f848e">//写入json
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#e06c75">fclose&lt;/span>(&lt;span style="color:#e06c75">$fp&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">42&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">43&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">44&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>分享下昨天想到的一个jquery标题循环滚动效果</title><link>https://mrasong.com/a/jquery-scroll/</link><pubDate>Mon, 16 Apr 2012 16:02:00 +0800</pubDate><guid>https://mrasong.com/a/jquery-scroll/</guid><description>&lt;p>分享下昨天想到的一个 jquery 标题循环滚动效果
只是一个思想，可以在此基础上自己改造下。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&amp;lt;&lt;span style="color:#e06c75">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &amp;lt;&lt;span style="color:#e06c75">ul&lt;/span> &lt;span style="color:#e06c75">id&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;last_activities&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &amp;lt;&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;title.11111&amp;lt;/&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> &amp;lt;&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;title.22222&amp;lt;/&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &amp;lt;&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;title.33333&amp;lt;/&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &amp;lt;&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;title.44444&amp;lt;/&lt;span style="color:#e06c75">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &amp;lt;/&lt;span style="color:#e06c75">ul&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&amp;lt;/&lt;span style="color:#e06c75">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&amp;lt;&lt;span style="color:#e06c75">script&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> &lt;span style="color:#e06c75">type&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;text/javascript&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &lt;span style="color:#e06c75">src&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&amp;gt;&amp;lt;/&lt;span style="color:#e06c75">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&amp;lt;&lt;span style="color:#e06c75">script&lt;/span> &lt;span style="color:#e06c75">type&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;text/javascript&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#e06c75">scroll&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">tmp&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$&lt;/span>(&lt;span style="color:#98c379">&amp;#34;#last_activities&amp;#34;&lt;/span>).&lt;span style="color:#e06c75">find&lt;/span>(&lt;span style="color:#98c379">&amp;#34;li&amp;#34;&lt;/span>).&lt;span style="color:#e06c75">first&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &lt;span style="color:#e06c75">tmp&lt;/span>.&lt;span style="color:#e06c75">remove&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> &lt;span style="color:#e06c75">$&lt;/span>(&lt;span style="color:#98c379">&amp;#34;#last_activities&amp;#34;&lt;/span>).&lt;span style="color:#e06c75">find&lt;/span>(&lt;span style="color:#98c379">&amp;#34;li&amp;#34;&lt;/span>).&lt;span style="color:#e06c75">first&lt;/span>().&lt;span style="color:#e06c75">hide&lt;/span>().&lt;span style="color:#e06c75">fadeIn&lt;/span>(&lt;span style="color:#98c379">&amp;#34;slow&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> &lt;span style="color:#e06c75">$&lt;/span>(&lt;span style="color:#98c379">&amp;#34;#last_activities&amp;#34;&lt;/span>).&lt;span style="color:#e06c75">append&lt;/span>(&lt;span style="color:#e06c75">tmp&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> &lt;span style="color:#7f848e">//$(&amp;#34;#last_activities&amp;#34;).find(&amp;#34;li&amp;#34;).first().hide(&amp;#39;300&amp;#39;);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> &lt;span style="color:#e06c75">$&lt;/span>(&lt;span style="color:#c678dd">function&lt;/span> () {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span> &lt;span style="color:#e06c75">setInterval&lt;/span>(&lt;span style="color:#98c379">&amp;#34;scroll()&amp;#34;&lt;/span>, &lt;span style="color:#d19a66">3500&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>&amp;lt;/&lt;span style="color:#e06c75">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>PHP使用soap有两种方式</title><link>https://mrasong.com/a/php-soap/</link><pubDate>Sun, 08 Apr 2012 23:33:00 +0800</pubDate><guid>https://mrasong.com/a/php-soap/</guid><description>&lt;h3 id="用-wsdl-文件">用 wsdl 文件&lt;/h3>
&lt;p>&lt;strong>服务端&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">class&lt;/span> &lt;span style="color:#e5c07b">service&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">HelloWorld&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#98c379">&amp;#34;Hello&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#c678dd">public&lt;/span> &lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">Add&lt;/span>(&lt;span style="color:#e06c75">$a&lt;/span>,&lt;span style="color:#e06c75">$b&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">$a&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#e06c75">$b&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#e06c75">$server&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#c678dd">new&lt;/span> &lt;span style="color:#e06c75">SoapServer&lt;/span>(&lt;span style="color:#98c379">&amp;#39;soap.wsdl&amp;#39;&lt;/span>,&lt;span style="color:#c678dd">array&lt;/span>(&lt;span style="color:#98c379">&amp;#39;soap_version&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#e06c75">SOAP_1_2&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">$server&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">setClass&lt;/span>(&lt;span style="color:#98c379">&amp;#34;service&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#e06c75">$server&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">handle&lt;/span>();
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>资源描述文件，可以用工具(&lt;code>zend studio&lt;/code>)生成。其实就是一个 xml 文件。&lt;/p></description></item><item><title>nginx: [emerg] duplicate log_format name access</title><link>https://mrasong.com/a/e52076effcaaf/</link><pubDate>Thu, 05 Apr 2012 00:05:00 +0800</pubDate><guid>https://mrasong.com/a/e52076effcaaf/</guid><description>&lt;p>nginx 在开启多个虚拟主机日志时，会出现以下错误&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>nginx: [emerg] duplicate &amp;#34;log_format&amp;#34; name &amp;#34;access&amp;#34; in /**\***/conf/nginx.conf:97
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>经研究，nginx.conf 配置文件&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span> &lt;span style="color:#c678dd">log_format&lt;/span> &lt;span style="color:#98c379">access&lt;/span> &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#e06c75">$remote_addr&lt;/span> &lt;span style="color:#98c379">-&lt;/span> &lt;span style="color:#e06c75">$remote_user&lt;/span> &lt;span style="color:#98c379">[&lt;/span>&lt;span style="color:#e06c75">$time_local]&lt;/span> &lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#e06c75">$request&amp;#34;&lt;/span> &lt;span style="color:#98c379">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#39;&lt;/span>&lt;span style="color:#e06c75">$status&lt;/span> &lt;span style="color:#e06c75">$body_bytes_sent&lt;/span> &lt;span style="color:#98c379">&amp;#34;&lt;/span>&lt;span style="color:#e06c75">$http_referer&amp;#34;&lt;/span> &lt;span style="color:#98c379">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#e06c75">$http_user_agent&amp;#34;&lt;/span> &lt;span style="color:#e06c75">$http_x_forwarded_for&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#c678dd">access_log&lt;/span> &lt;span style="color:#98c379">/home/logs/default.log&lt;/span> &lt;span style="color:#98c379">access&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>在多个 &lt;code>access_log&lt;/code> 中 使用了同一个 &lt;code>log_format access&lt;/code>
解决方法：在其它虚拟主机配置文件中，将 &lt;code>log_format&lt;/code> 更改为其它名称，如下&lt;/p></description></item><item><title>国内域名转出申诉成功</title><link>https://mrasong.com/a/115/</link><pubDate>Thu, 15 Mar 2012 22:36:00 +0800</pubDate><guid>https://mrasong.com/a/115/</guid><description>&lt;p>前几天写发表过一篇文章，&lt;a href="https://mrasong.com/a/112">免费将国内注册的域名转出&lt;/a>，也是在那个时候，我用此方法将我的一域名申诉，今天终于收到邮件回复了，提示回复确认，以下是邮件原文：&lt;/p>
&lt;blockquote>
&lt;p>尊敬的新网用户您好：
新网已收到域名&lt;code>****.net&lt;/code> 注册商转出新网的申请资料，经核查申请资料合格，请您于 24 小时内用此域名管理联系人邮箱回复，是否同意此域名的注册服务商由北京新网数码信息技术有限公司转至&lt;code>****&lt;/code>。
如得到您的确认回复，新网将向《域名注册服务商转出新网申请表》中填写的联系信箱发送转移密码。
请附带“转出确认函”原文，回复：同意 哪个域名，从北京新网 转至 哪里！！
感谢您一直以来对新网的关心与支持！您如有任何疑问，欢迎您随时与我们联系！&lt;/p></description></item><item><title>PHP中array_pop和array_shift用法</title><link>https://mrasong.com/a/array_pop-and-array_shift/</link><pubDate>Mon, 12 Mar 2012 21:49:00 +0800</pubDate><guid>https://mrasong.com/a/array_pop-and-array_shift/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">array_pop&lt;/span>()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>弹出并返回 array 数组的最后一个单元，并将数组 array 的长度减一。如果 array 为空（或者不是数组）将返回 NULL。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#e06c75">$stack&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(&lt;span style="color:#98c379">&amp;#34;orange&amp;#34;&lt;/span>, &lt;span style="color:#98c379">&amp;#34;banana&amp;#34;&lt;/span>, &lt;span style="color:#98c379">&amp;#34;apple&amp;#34;&lt;/span>, &lt;span style="color:#98c379">&amp;#34;raspberry&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#e06c75">$fruit&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">array_pop&lt;/span>(&lt;span style="color:#e06c75">$stack&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#e06c75">print_r&lt;/span>(&lt;span style="color:#e06c75">$stack&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>经过此操作后，$stack 将只有 3 个单元：&lt;/p></description></item><item><title>PHP中逗号和点号的区别</title><link>https://mrasong.com/a/113/</link><pubDate>Sun, 04 Mar 2012 00:01:00 +0800</pubDate><guid>https://mrasong.com/a/113/</guid><description>&lt;p>比如:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#98c379">&amp;#39;abc&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;def&amp;#39;&lt;/span>; &lt;span style="color:#7f848e">//用点号连接字符串
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#98c379">&amp;#39;abc&amp;#39;&lt;/span>,&lt;span style="color:#98c379">&amp;#39;def&amp;#39;&lt;/span>; &lt;span style="color:#7f848e">//用逗号连接字符串
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>也许很多人都知道逗号要比点号快.但是不知道为什么.更不知道这两者到底有什么区别.
那么下面我们就举一些例子.来认清楚他们之前的区别.&lt;/p></description></item><item><title>免费将国内注册的域名转出</title><link>https://mrasong.com/a/112/</link><pubDate>Thu, 01 Mar 2012 15:24:00 +0800</pubDate><guid>https://mrasong.com/a/112/</guid><description>&lt;h3 id="前提">前提：&lt;/h3>
&lt;p>你的域名必须符合规定的允许转出的条件，比如离注册或续费时间 60 天以上，离到期时间 30 天以上。&lt;/p>
&lt;h3 id="步骤">步骤：&lt;/h3>
&lt;p>如果你要转出，先联系原来的国内域名注册服务商，要求转出。&lt;/p></description></item><item><title>Typecho调用单独页面评论代码</title><link>https://mrasong.com/a/typecho-comment-list/</link><pubDate>Tue, 10 Jan 2012 16:16:00 +0800</pubDate><guid>https://mrasong.com/a/typecho-comment-list/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">//start page comments
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$slug&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;message&amp;#34;&lt;/span>; &lt;span style="color:#7f848e">//页面缩略名
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$limit&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">10&lt;/span>; &lt;span style="color:#7f848e">//调用数量
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$length&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#d19a66">30&lt;/span>; &lt;span style="color:#7f848e">//截取长度
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$ispage&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">true&lt;/span>; &lt;span style="color:#7f848e">//true 输出slug页面评论，false输出其它所有评论
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$isGuestbook&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$ispage&lt;/span> &lt;span style="color:#56b6c2">?&lt;/span> &lt;span style="color:#98c379">&amp;#34; = &amp;#34;&lt;/span> &lt;span style="color:#56b6c2">:&lt;/span> &lt;span style="color:#98c379">&amp;#34; &amp;lt;&amp;gt; &amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#e06c75">$db&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$this&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">db&lt;/span>;&lt;span style="color:#7f848e">//Typecho_Db::get();
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">$options&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$this&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">options&lt;/span>;&lt;span style="color:#7f848e">//Typecho_Widget::widget(&amp;#39;Widget_Options&amp;#39;);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#e06c75">$page&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$db&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">fetchRow&lt;/span>(&lt;span style="color:#e06c75">$db&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">select&lt;/span>()&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">from&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.contents&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.contents.status = ?&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;publish&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.contents.created &amp;lt; ?&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">$options&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">gmtTime&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.contents.slug = ?&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">$slug&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$page&lt;/span> ){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> &lt;span style="color:#e06c75">$type&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$page&lt;/span>[&lt;span style="color:#98c379">&amp;#39;type&amp;#39;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> &lt;span style="color:#e06c75">$routeExists&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> (&lt;span style="color:#c678dd">NULL&lt;/span> &lt;span style="color:#56b6c2">!=&lt;/span> &lt;span style="color:#e06c75">Typecho_Router&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">get&lt;/span>(&lt;span style="color:#e06c75">$type&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> &lt;span style="color:#e06c75">$page&lt;/span>[&lt;span style="color:#98c379">&amp;#39;pathinfo&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$routeExists&lt;/span> &lt;span style="color:#56b6c2">?&lt;/span> &lt;span style="color:#e06c75">Typecho_Router&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">url&lt;/span>(&lt;span style="color:#e06c75">$type&lt;/span>, &lt;span style="color:#e06c75">$page&lt;/span>) &lt;span style="color:#56b6c2">:&lt;/span> &lt;span style="color:#98c379">&amp;#39;#&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> &lt;span style="color:#e06c75">$page&lt;/span>[&lt;span style="color:#98c379">&amp;#39;permalink&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">Typecho_Common&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">url&lt;/span>(&lt;span style="color:#e06c75">$page&lt;/span>[&lt;span style="color:#98c379">&amp;#39;pathinfo&amp;#39;&lt;/span>], &lt;span style="color:#e06c75">$options&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">index&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span> &lt;span style="color:#e06c75">$comments&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">$db&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">fetchAll&lt;/span>(&lt;span style="color:#e06c75">$db&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">select&lt;/span>()&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">from&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.comments&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.comments.status = ?&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;approved&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.comments.created &amp;lt; ?&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">$options&lt;/span>&lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">gmtTime&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.comments.type = ?&amp;#39;&lt;/span>, &lt;span style="color:#98c379">&amp;#39;comment&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">where&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.comments.cid &amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$isGuestbook&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39; ?&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">$page&lt;/span>[&lt;span style="color:#98c379">&amp;#39;cid&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">order&lt;/span>(&lt;span style="color:#98c379">&amp;#39;table.comments.created&amp;#39;&lt;/span>, &lt;span style="color:#e06c75">Typecho_Db&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">SORT_DESC&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span> &lt;span style="color:#56b6c2">-&amp;gt;&lt;/span>&lt;span style="color:#e06c75">limit&lt;/span>(&lt;span style="color:#e06c75">$limit&lt;/span>) );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span> &lt;span style="color:#c678dd">foreach&lt;/span>(&lt;span style="color:#e06c75">$comments&lt;/span> &lt;span style="color:#c678dd">AS&lt;/span> &lt;span style="color:#e06c75">$comment&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span> &lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#98c379">&amp;#39;&amp;lt;li&amp;gt;&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span> &lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#98c379">&amp;#39;&amp;lt;a href=&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span> &lt;span style="color:#e06c75">$page&lt;/span>[&lt;span style="color:#98c379">&amp;#39;permalink&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#34;#comment-&amp;#34;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$comment&lt;/span>[&lt;span style="color:#98c379">&amp;#39;coid&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;#34; title=&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$comment&lt;/span>[&lt;span style="color:#98c379">&amp;#39;text&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;#34;&amp;gt;&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span> &lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#e06c75">Typecho_Common&lt;/span>&lt;span style="color:#56b6c2">::&lt;/span>&lt;span style="color:#e06c75">subStr&lt;/span>(&lt;span style="color:#e06c75">strip_tags&lt;/span>(&lt;span style="color:#e06c75">$comment&lt;/span>[&lt;span style="color:#98c379">&amp;#39;text&amp;#39;&lt;/span>]), &lt;span style="color:#d19a66">0&lt;/span>, &lt;span style="color:#e06c75">$length&lt;/span>, &lt;span style="color:#98c379">&amp;#39;...&amp;#39;&lt;/span>)&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#98c379">&amp;#39;&amp;lt;/a&amp;gt;&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span> &lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#98c379">&amp;#39;&amp;lt;/li&amp;gt;&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span>}&lt;span style="color:#c678dd">else&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span> &lt;span style="color:#c678dd">echo&lt;/span> &lt;span style="color:#98c379">&amp;#34;&amp;lt;li&amp;gt;No Comments&amp;lt;/li&amp;gt;&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span>&lt;span style="color:#7f848e">//end page comments
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>可以将此代码保存为 &lt;code>commlist.php&lt;/code> 文件，放在 &lt;code>/usr/themes/&lt;/code> 目录下，在需要调用的主题模板中，输入以下代码&lt;/p></description></item><item><title>Typecho修改附件存放位置应注意的问题</title><link>https://mrasong.com/a/change-attachment-dir/</link><pubDate>Tue, 10 Jan 2012 11:57:25 +0800</pubDate><guid>https://mrasong.com/a/change-attachment-dir/</guid><description>&lt;p>昨晚收到留言说那个缩略图插件无法下载，然后测试看了下，居然原来的附件都无法下载了，研究了下，终于发现问题所在。 先说一下 Typecho 附件的数据库设计：&lt;/p>
&lt;p>通过查看 TE 的源码发现，TE 的附件信息是以以下方式存放在 contents 表中的：&lt;/p></description></item><item><title>PHP中的serialize和unserialize</title><link>https://mrasong.com/a/serialize-and-unserialize/</link><pubDate>Tue, 10 Jan 2012 11:53:43 +0800</pubDate><guid>https://mrasong.com/a/serialize-and-unserialize/</guid><description>&lt;p>PHP 中的 &lt;code>serialize&lt;/code> 和 &lt;code>unserialize&lt;/code> &lt;code>string serialize ( mixed $value )&lt;/code> &lt;code>serialize()&lt;/code> 返回字符串，此字符串包含了表示 value 的字节流，可以存储于任何地方。 这有利于存储或传递 PHP 的值，同时不丢失其类型和结构。&lt;/p>
&lt;p>&lt;code>serialize&lt;/code> 返回的值结构为 &lt;code>type:length:value&lt;/code>，若为&lt;code>integer&lt;/code>、&lt;code>float&lt;/code>，则直接返回 &lt;code>type:value&lt;/code>&lt;/p></description></item><item><title>VPS选择openvz还是xen，两者那个更好？</title><link>https://mrasong.com/a/openvz-or-xen/</link><pubDate>Sun, 08 Jan 2012 21:39:00 +0800</pubDate><guid>https://mrasong.com/a/openvz-or-xen/</guid><description>&lt;p>linux 的虚拟化平台有两款杰出的平台，分别是 openvz 和 xen，购买 vps 是选 openvz 还是 xen？我们对两者进行对比。&lt;/p>
&lt;h4 id="openvz">openvz&lt;/h4>
&lt;p>&lt;a href="https://mrasong.com/attach/102.html" title="openvz.jpg">&lt;img alt="openvz.jpg" loading="lazy" src="https://mrasong.com/attachment/2012/01/4f099c60b4d83.jpg">&lt;/a>&lt;/p>
&lt;p>openvz 是一个操作系统级虚拟化平台，基于修改过的 linux 内核来支持多种 linux 虚拟环境(更多指虚拟专用服务器)。&lt;/p></description></item><item><title>VPS为什么要用SSH</title><link>https://mrasong.com/a/why-vps-use-ssh/</link><pubDate>Sun, 08 Jan 2012 21:08:00 +0800</pubDate><guid>https://mrasong.com/a/why-vps-use-ssh/</guid><description>&lt;p>首先解释什么是 VPS，什么是 SSh，然后你就清楚为什么要通过 ssh 来登录 vps 进行操作。&lt;/p>
&lt;p>&lt;strong>什么是 vps？&lt;/strong>&lt;/p>
&lt;p>利用 Xen 或者 Openvz 等最新虚拟化技术在一台物理服务器上创建多个相互隔离的虚拟私有主机，英文名称 Virtual Private Server，简写 VPS。这些 VPS 以最大化的效率共享硬件、软件许可证以及管理资源。但对于用户和应用程序来讲，每一个 VPS 平台的运行和管理都与一台独立主机完全相同，在用户看来，他就是一台完整的主机。因为每一个 VPS 均可独立进行重启并拥有自己的 root 访问权限、用户、IP 地址、内存、过程、文件、应用程序、系统函数库以及配置文件。&lt;/p></description></item><item><title>Typecho 自定义文章缩略图显示</title><link>https://mrasong.com/a/define-thumbnail-of-typecho/</link><pubDate>Tue, 03 Jan 2012 00:08:00 +0800</pubDate><guid>https://mrasong.com/a/define-thumbnail-of-typecho/</guid><description>&lt;p>前些天写过一个 thpecho 的文章缩略图插件。&lt;a href="https://mrasong.com/a/thumbnail-for-typecho">https://mrasong.com/a/thumbnail-for-typecho&lt;/a> 如果没有图片的时候将会出现一张空白图，这样对于网站访客是相当不友好的， 现在改了下，通过插入&lt;code>&amp;lt;!--showThumbnail--&amp;gt;&lt;/code>来显示缩略图，默认不显示。 默认只从附件中读取，若想通过&lt;code>附件&amp;gt;缩略图&amp;gt;分类图片&amp;gt;随机图片&lt;/code>的方式 在 Plugin.php 文件中找到以下代码，将其去注释。&lt;/p></description></item><item><title>nginx目录列表显示及修改版本号</title><link>https://mrasong.com/a/nginx-index-and-modify-version/</link><pubDate>Sun, 01 Jan 2012 22:56:00 +0800</pubDate><guid>https://mrasong.com/a/nginx-index-and-modify-version/</guid><description>&lt;p>nginx 可以通过修改源代码，实现自定义版本和个性化的目录列表&lt;/p>
&lt;h3 id="自定义版本号">自定义版本号&lt;/h3>
&lt;p>源码可以到 [&lt;a href="http://nginx.org/">http://nginx.org/&lt;/a>] 下载&lt;/p>
&lt;p>下载 &lt;a href="http://nginx.org/download/nginx-1.0.8.tar.gz">http://nginx.org/download/nginx-1.0.8.tar.gz&lt;/a> 解压，文本编辑器打开 &lt;code>/nginx-1.0.8/src/core/nginx.h&lt;/code> 内容如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">/*
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e"> * Copyright (C) Igor Sysoev
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#7f848e"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#7f848e">#ifndef _NGINX_H_INCLUDED_
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#7f848e">#define _NGINX_H_INCLUDED_
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e">#define nginx_version 1000008
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#7f848e">#define NGINX_VERSION &amp;#34;1.0.8&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#7f848e">#define NGINX_VER &amp;#34;nginx/&amp;#34; NGINX_VERSION
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#7f848e">#define NGINX_VAR &amp;#34;NGINX&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#7f848e">#define NGX_OLDPID_EXT &amp;#34;.oldbin&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#7f848e">#endif /_ *NGINX_H_INCLUDED* _/
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>将&lt;/p></description></item><item><title>typecho另一种方法实现tagcloud</title><link>https://mrasong.com/a/tagcloud-for-typecho/</link><pubDate>Sun, 01 Jan 2012 00:52:00 +0800</pubDate><guid>https://mrasong.com/a/tagcloud-for-typecho/</guid><description>&lt;p>前些天，写过一篇关于 Typecho tag cloud 的文章 &lt;a href="https://mrasong.com/a/typecho-tagcloud">https://mrasong.com/a/typecho-tagcloud&lt;/a> ，那时没深入了解 typecho，有点走弯路。 其实可以用 typecho 的 widget 来快速实现 tag cloud 和 archives，代码如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#56b6c2">&amp;lt;?&lt;/span>&lt;span style="color:#e06c75">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#98c379">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#98c379"> * _Tag Cloud_
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#98c379"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @package custom
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#98c379"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#98c379"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e">?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&amp;lt;?php /*your code here*/ ?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> &amp;lt;?php /*archives */ ?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &amp;lt;?php $this-&amp;gt;widget(&amp;#39;Widget_Contents_Post_Date&amp;#39;, &amp;#39;type=month&amp;amp;format=Y F&amp;#39;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> -&amp;gt;parse(&amp;#39;&amp;lt;a href=&amp;#34;{permalink}&amp;#34;&amp;gt;{date}[{count}]&amp;lt;/a&amp;gt;&amp;#39;); ?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> &amp;lt;?php /*tag cloud*/ ?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> &amp;lt;?php $this-&amp;gt;widget(&amp;#39;Widget_Metas_Tag_Cloud&amp;#39;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> -&amp;gt;parse(&amp;#39;&amp;lt;a href=&amp;#34;{permalink}&amp;#34;&amp;gt;{name}[{count}]&amp;lt;/a&amp;gt;&amp;#39;); ?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&amp;lt;?php /*your code here*/ ?&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>简单方法，不用插件实现外链转内链</title><link>https://mrasong.com/a/links-to-page/</link><pubDate>Wed, 28 Dec 2011 20:25:00 +0800</pubDate><guid>https://mrasong.com/a/links-to-page/</guid><description>&lt;p>typecho 可以自定义 &lt;code>404&lt;/code> 页面，通过 &lt;code>404.php&lt;/code> 即可不用插件实现外链转内链
首先，在模板目录下建立一个空的 php 文件：&lt;code>url.php&lt;/code>，写入以下内容：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#c678dd">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span>&lt;span style="color:#7f848e">//此处以下为内链“链接地址”=&amp;gt;“外链地址”，依次添加自定义的转向。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span> &lt;span style="color:#98c379">&amp;#39;key&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#98c379">&amp;#39;your url here&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#39;weibo&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#98c379">&amp;#39;http://weibo.com&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#39;typecho&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#98c379">&amp;#39;http://typecho.org&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#39;google&amp;#39;&lt;/span> &lt;span style="color:#56b6c2">=&amp;gt;&lt;/span> &lt;span style="color:#98c379">&amp;#39;http://google.come&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>也就是建立一个返回数组的 php 文件，通过 array[key]来实现读取 url，以达到目的。
创建 404.php 页面，如果有，则直接打开编辑，在最上方加入如下代码：&lt;/p></description></item><item><title>js操作cookie</title><link>https://mrasong.com/a/js-cookie/</link><pubDate>Wed, 28 Dec 2011 10:45:00 +0800</pubDate><guid>https://mrasong.com/a/js-cookie/</guid><description>&lt;h3 id="设置-cookie">设置 cookie&lt;/h3>
&lt;p>每个 cookie 都是一个名/值对，可以把下面这样一个字符串赋值给 &lt;code>document.cookie&lt;/code> ：&lt;br>
&lt;code>document.cookie=&amp;quot;userId=828&amp;quot;; &lt;/code>
如果要一次存储多个名/值对，可以使用分号加空格（&lt;code>;&lt;/code>）隔开，例如：&lt;br>
&lt;code>document.cookie=&amp;quot;userId=828; userName=hulk&amp;quot;;&lt;/code>&lt;br>
在 cookie 的名或值中不能使用分号（&lt;code>;&lt;/code>）、逗号（&lt;code>,&lt;/code>）、等号（&lt;code>=&lt;/code>）以及空格。在 cookie 的名中做到这点很容易，但要保存的值是不确定的。如何来存 储这些值呢？方法是用 &lt;code>escape()&lt;/code> 函数进行编码，它能将一些特殊符号使用十六进制表示，例如空格将会编码为“&lt;code>20%&lt;/code>”，从而可以存储于 cookie 值中，而且使用此种方案还可以避免中文乱码的出现。例如：&lt;/p></description></item><item><title>php cookie实现计数时要注意的问题</title><link>https://mrasong.com/a/php-cookie-update/</link><pubDate>Mon, 19 Dec 2011 02:07:00 +0800</pubDate><guid>https://mrasong.com/a/php-cookie-update/</guid><description>&lt;p>今天在写一个 &lt;code>IP+cookie&lt;/code> 限制客户断重复刷新的时候，遇到一个问题。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span>(&lt;span style="color:#56b6c2">!&lt;/span>&lt;span style="color:#e06c75">isset&lt;/span>(&lt;span style="color:#e06c75">$_COOKIE&lt;/span>[&lt;span style="color:#98c379">&amp;#39;card_user&amp;#39;&lt;/span>])){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span> &lt;span style="color:#e06c75">setcookie&lt;/span>(&lt;span style="color:#98c379">&amp;#34;card_user&amp;#34;&lt;/span>, &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;REMOTE_ADDR&amp;#39;&lt;/span>] , &lt;span style="color:#e06c75">time&lt;/span>()&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">24&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span> &lt;span style="color:#e06c75">setcookie&lt;/span>(&lt;span style="color:#98c379">&amp;#34;card_user_time&amp;#34;&lt;/span>, &lt;span style="color:#d19a66">1&lt;/span> , &lt;span style="color:#e06c75">time&lt;/span>()&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">24&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>}&lt;span style="color:#c678dd">else&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$_COOKIE&lt;/span>[&lt;span style="color:#98c379">&amp;#34;card_user&amp;#34;&lt;/span>] &lt;span style="color:#56b6c2">==&lt;/span> &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;REMOTE_ADDR&amp;#39;&lt;/span>] ){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#c678dd">if&lt;/span>( &lt;span style="color:#e06c75">$_COOKIE&lt;/span>[&lt;span style="color:#98c379">&amp;#39;card_user_time&amp;#39;&lt;/span>] &lt;span style="color:#56b6c2">&amp;gt;&lt;/span> &lt;span style="color:#e06c75">$config&lt;/span>[&lt;span style="color:#98c379">&amp;#39;max&amp;#39;&lt;/span>] ){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#e06c75">$isMax&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span> }&lt;span style="color:#c678dd">else&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span> &lt;span style="color:#e06c75">setcookie&lt;/span>(&lt;span style="color:#98c379">&amp;#34;card_user_time&amp;#34;&lt;/span>, &lt;span style="color:#e06c75">$_COOKIE&lt;/span>[&lt;span style="color:#98c379">&amp;#39;card_user_time&amp;#39;&lt;/span>]&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">1&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> }&lt;span style="color:#c678dd">else&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> &lt;span style="color:#e06c75">setcookie&lt;/span>(&lt;span style="color:#98c379">&amp;#34;card_user&amp;#34;&lt;/span>, &lt;span style="color:#e06c75">$_SERVER&lt;/span>[&lt;span style="color:#98c379">&amp;#39;REMOTE_ADDR&amp;#39;&lt;/span>] , &lt;span style="color:#e06c75">time&lt;/span>()&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">24&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> &lt;span style="color:#e06c75">setcookie&lt;/span>(&lt;span style="color:#98c379">&amp;#34;card_user_time&amp;#34;&lt;/span>, &lt;span style="color:#d19a66">1&lt;/span> , &lt;span style="color:#e06c75">time&lt;/span>()&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">60&lt;/span>&lt;span style="color:#56b6c2">*&lt;/span>&lt;span style="color:#d19a66">24&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>在使用上面代码的时候，不关闭浏览器正常，关闭浏览器后发现，又可以再刷新了，&lt;/p></description></item><item><title>typecho创建独立页面,实现tagcloud</title><link>https://mrasong.com/a/typecho-tagcloud/</link><pubDate>Sat, 17 Dec 2011 15:50:00 +0800</pubDate><guid>https://mrasong.com/a/typecho-tagcloud/</guid><description>&lt;p>首先，在主题文件夹下建立一个新 custom  文件，也就是自定义页面文件，命名为：tpl_tags.php&lt;/p>
&lt;p>插入以下代码&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#56b6c2">&amp;lt;?&lt;/span>&lt;span style="color:#e06c75">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#98c379">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#98c379"> * _Tag Cloud_
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#98c379"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#98c379"> * @package custom
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#98c379"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#98c379"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e">?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&amp;lt;?php /*your code here*/ ?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&amp;lt;?php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span> $db = Typecho_Db::get();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span> $options = Typecho_Widget::widget(&amp;#39;Widget_Options&amp;#39;);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span> $tags= $db-&amp;gt;fetchAll($db-&amp;gt;select()-&amp;gt;from(&amp;#39;table.metas&amp;#39;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span> -&amp;gt;where(&amp;#39;table.metas.type = ?&amp;#39;, &amp;#39;tag&amp;#39;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span> -&amp;gt;order(&amp;#39;table.metas.order&amp;#39;, Typecho_Db::SORT_DESC));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span> foreach($tags AS $tag) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span> $type = $tag[&amp;#39;type&amp;#39;];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span> $routeExists = (NULL != Typecho_Router::get($type));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span> $tag[&amp;#39;pathinfo&amp;#39;] = $routeExists ? Typecho_Router::url($type, $tag) : &amp;#39;#&amp;#39;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span> $tag[&amp;#39;permalink&amp;#39;] = Typecho_Common::url($tag[&amp;#39;pathinfo&amp;#39;], $options-&amp;gt;index);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span> echo &amp;#34;&amp;lt;a href=\&amp;#34;&amp;#34;.$tag[&amp;#39;permalink&amp;#39;].&amp;#34;\&amp;#34;&amp;gt;&amp;#34;.$tag[&amp;#39;name&amp;#39;].&amp;#34;&amp;lt;/a&amp;gt; &amp;#34;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>&amp;lt;?php /*your code here*/ ?&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后在后台添加一个独立页面，展开高级选项-&amp;gt;自定义模板-&amp;gt;Tag Cloud，缩略名写 tags 就可以了。&lt;/p></description></item><item><title>Typecho 文章缩略图插件</title><link>https://mrasong.com/a/thumbnail-for-typecho/</link><pubDate>Fri, 16 Dec 2011 07:13:00 +0800</pubDate><guid>https://mrasong.com/a/thumbnail-for-typecho/</guid><description>&lt;h3 id="更新">更新：&lt;/h3>
&lt;p>v1.0.3    2011.12.17&lt;/p>
&lt;p>插件重写，加入文章分类图片，随机图片，请更新到最新版。&lt;/p>
&lt;p>附件 -&amp;gt; 文章内第一张 -&amp;gt; 分类图片 -&amp;gt; 随机图片 -&amp;gt;   默认图&lt;/p>
&lt;p>v1.0.1    2011.12.15&lt;/p>
&lt;p>实现从附件中读取第一张图片做为缩略图，若附件无图片，则从文章中匹配第一张图。&lt;/p></description></item><item><title>迅雷thunder://地址与普通url地址转换&amp;lt;php&amp;gt;</title><link>https://mrasong.com/a/thunder-encode-decode/</link><pubDate>Sun, 11 Dec 2011 20:50:00 +0800</pubDate><guid>https://mrasong.com/a/thunder-encode-decode/</guid><description>&lt;p>其实迅雷的&lt;code>thunder://&lt;/code>地址就是将普通 url 地址加前缀 &lt;code>AA&lt;/code> 、后缀&lt;code>ZZ&lt;/code>，再 base64 编码后得到的字符串&lt;/p>
&lt;h4 id="普通-url-转-thunder">普通 url 转 thunder&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">ThunderEncode&lt;/span>(&lt;span style="color:#e06c75">$url&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderPrefix&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;AA&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderPosix&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;ZZ&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderTitle&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;thunder://&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderUrl&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">$thunderTitle&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">base64_encode&lt;/span>(&lt;span style="color:#e06c75">$thunderPrefix&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$url&lt;/span>&lt;span style="color:#56b6c2">.&lt;/span>&lt;span style="color:#e06c75">$thunderPosix&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">$thunderUrl&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="thunder-转普通-url">thunder 转普通 url&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#61afef;font-weight:bold">ThunderDecode&lt;/span>(&lt;span style="color:#e06c75">$thunderUrl&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">2&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderPrefix&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;AA&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">3&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderPosix&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;ZZ&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">4&lt;/span>&lt;span> &lt;span style="color:#e06c75">$thunderTitle&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#98c379">&amp;#34;thunder://&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">5&lt;/span>&lt;span> &lt;span style="color:#e06c75">$url&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">substr&lt;/span>(&lt;span style="color:#e06c75">trim&lt;/span>(&lt;span style="color:#e06c75">$thunderUrl&lt;/span>),&lt;span style="color:#d19a66">10&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">6&lt;/span>&lt;span> &lt;span style="color:#e06c75">$url&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">base64_decode&lt;/span>(&lt;span style="color:#e06c75">$url&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">7&lt;/span>&lt;span> &lt;span style="color:#e06c75">$url&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#e06c75">substr&lt;/span>(&lt;span style="color:#e06c75">$url&lt;/span>,&lt;span style="color:#d19a66">2&lt;/span>,&lt;span style="color:#56b6c2">-&lt;/span>&lt;span style="color:#d19a66">2&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">8&lt;/span>&lt;span> &lt;span style="color:#c678dd">return&lt;/span> &lt;span style="color:#e06c75">$url&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">9&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>免费申请gov.cn政府邮箱</title><link>https://mrasong.com/a/free-dot-gov-cn-mail/</link><pubDate>Mon, 05 Dec 2011 20:48:00 +0800</pubDate><guid>https://mrasong.com/a/free-dot-gov-cn-mail/</guid><description>&lt;p>没在 GF 工作的同学是不是很想要一个@xxx.gov.cn 的邮箱呀，今天在这里给大家介绍个免费的 gov.cn 邮箱&lt;/p>
&lt;p>&lt;strong>bjta.gov.cn&lt;/strong>&lt;/p>
&lt;p>登陆&lt;a href="http://mail.bjta.gov.cn/create.asp">http://mail.bjta.gov.cn/create.asp&lt;/a>填写注册信息即可。&lt;/p>
&lt;p>选择 bjta.gov.cn，中间那个 system.mail 注册后可以发出去邮件，但是无法接收(匿名发信可以的哦&amp;hellip;)。&lt;/p></description></item><item><title>SAE公共资源</title><link>https://mrasong.com/a/sae-lib/</link><pubDate>Wed, 26 Oct 2011 21:32:00 +0800</pubDate><guid>https://mrasong.com/a/sae-lib/</guid><description>&lt;p>公共资源包含 Jquery, Mootools, Prototype,YUI 等通用 JS/CSS Framework；您可以通过地址直接引用。 公共资源前端采用 CDN 技术，节点分布在全国各地；用户可以就近取得资源内容, 提升您的应用速度。 赶快使用公共资源来给您的应用加速吧！&lt;/p></description></item><item><title>js 最全介绍Document对象内容集合</title><link>https://mrasong.com/a/all-document-objects-in-javascript/</link><pubDate>Tue, 27 Jul 2010 19:15:00 +0800</pubDate><guid>https://mrasong.com/a/all-document-objects-in-javascript/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#7f848e">/*
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#7f848e"> document 文挡对象 - JavaScript脚本语言描述
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#7f848e">——————————————————————
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#7f848e"> 注:页面上元素name属性和JavaScript引用的名称必须一致包括大小写
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#7f848e"> 否则会提示你一个错误信息 “引用的元素为空或者不是对象\\\\\”
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#7f848e">———————————————————————*/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#7f848e">//对象属性
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">title&lt;/span> &lt;span style="color:#7f848e">//设置文档标题等价于HTML的title标签
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">bgColor&lt;/span> &lt;span style="color:#7f848e">//设置页面背景色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">fgColor&lt;/span> &lt;span style="color:#7f848e">//设置前景色(文本颜色)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">linkColor&lt;/span> &lt;span style="color:#7f848e">//未点击过的链接颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">alinkColor&lt;/span> &lt;span style="color:#7f848e">//激活链接(焦点在此链接上)的颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">vlinkColor&lt;/span> &lt;span style="color:#7f848e">//已点击过的链接颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">URL&lt;/span> &lt;span style="color:#7f848e">//设置URL属性从而在同一窗口打开另一网页
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">fileCreatedDate&lt;/span> &lt;span style="color:#7f848e">//文件建立日期，只读属性
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">fileModifiedDate&lt;/span> &lt;span style="color:#7f848e">//文件修改日期，只读属性
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">fileSize&lt;/span> &lt;span style="color:#7f848e">//文件大小，只读属性
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">cookie&lt;/span> &lt;span style="color:#7f848e">//设置和读出cookie
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">charset&lt;/span> &lt;span style="color:#7f848e">//设置字符集 简体中文:gb2312
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#7f848e">//———————————————————————
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#7f848e">//常用对象方法
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">22&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">write&lt;/span>() &lt;span style="color:#7f848e">//动态向页面写入内容
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">23&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">createElement&lt;/span>(&lt;span style="color:#e06c75">Tag&lt;/span>) &lt;span style="color:#7f848e">//创建一个html标签对象
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">24&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">getElementById&lt;/span>(&lt;span style="color:#e06c75">ID&lt;/span>) &lt;span style="color:#7f848e">//获得指定ID值的对象
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">25&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">getElementsByName&lt;/span>(&lt;span style="color:#e06c75">Name&lt;/span>) &lt;span style="color:#7f848e">//获得指定Name值的对象
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">26&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">appendChild&lt;/span>(&lt;span style="color:#e06c75">oTag&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">27&lt;/span>&lt;span>&lt;span style="color:#7f848e">//———————————————————————
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">28&lt;/span>&lt;span>&lt;span style="color:#7f848e">//body-主体子对象
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">29&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span> &lt;span style="color:#7f848e">//指定文档主体的开始和结束等价于body&amp;amp;amp;gt;/body&amp;amp;amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">30&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">bgColor&lt;/span> &lt;span style="color:#7f848e">//设置或获取对象后面的背景颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">31&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">link&lt;/span> &lt;span style="color:#7f848e">//未点击过的链接颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">32&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">alink&lt;/span> &lt;span style="color:#7f848e">//激活链接(焦点在此链接上)的颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">33&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">vlink&lt;/span> &lt;span style="color:#7f848e">//已点击过的链接颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">34&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">text&lt;/span> &lt;span style="color:#7f848e">//文本色
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">35&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">innerText&lt;/span> &lt;span style="color:#7f848e">//设置body&amp;amp;amp;gt;…/body&amp;amp;amp;gt;之间的文本
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">36&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">innerHTML&lt;/span> &lt;span style="color:#7f848e">//设置body&amp;amp;amp;gt;…/body&amp;amp;amp;gt;之间的HTML代码
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">37&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">topMargin&lt;/span> &lt;span style="color:#7f848e">//页面上边距
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">38&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">leftMargin&lt;/span> &lt;span style="color:#7f848e">//页面左边距
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">39&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">rightMargin&lt;/span> &lt;span style="color:#7f848e">//页面右边距
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">40&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">bottomMargin&lt;/span> &lt;span style="color:#7f848e">//页面下边距
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">41&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">background&lt;/span> &lt;span style="color:#7f848e">//背景图片
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">42&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">appendChild&lt;/span>(&lt;span style="color:#e06c75">oTag&lt;/span>) &lt;span style="color:#7f848e">//动态生成一个HTML对象
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">43&lt;/span>&lt;span>&lt;span style="color:#7f848e">//常用对象事件
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">44&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">onclick&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>”&lt;span style="color:#e06c75">func&lt;/span>()” &lt;span style="color:#7f848e">//鼠标指针单击对象是触发
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">45&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">onmouseover&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>”&lt;span style="color:#e06c75">func&lt;/span>()” &lt;span style="color:#7f848e">//鼠标指针移到对象时触发
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">46&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">onmouseout&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>”&lt;span style="color:#e06c75">func&lt;/span>()” &lt;span style="color:#7f848e">//鼠标指针移出对象时触发
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">47&lt;/span>&lt;span>&lt;span style="color:#7f848e">//———————————————————————
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">48&lt;/span>&lt;span>&lt;span style="color:#7f848e">//location-位置子对象
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">49&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">hash&lt;/span> &lt;span style="color:#7f848e">// #号后的部分
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">50&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">host&lt;/span> &lt;span style="color:#7f848e">// 域名+端口号
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">51&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">hostname&lt;/span> &lt;span style="color:#7f848e">// 域名
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">52&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">href&lt;/span> &lt;span style="color:#7f848e">// 完整URL
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">53&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">pathname&lt;/span> &lt;span style="color:#7f848e">// 目录部分
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">54&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">port&lt;/span> &lt;span style="color:#7f848e">// 端口号
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">55&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">protocol&lt;/span> &lt;span style="color:#7f848e">// 网络协议(http:)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">56&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">search&lt;/span> &lt;span style="color:#7f848e">// ?号后的部分
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">57&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">documeny&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">reload&lt;/span>() &lt;span style="color:#7f848e">//刷新网页
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">58&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">reload&lt;/span>(&lt;span style="color:#e06c75">URL&lt;/span>) &lt;span style="color:#7f848e">//打开新的网页
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">59&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">assign&lt;/span>(&lt;span style="color:#e06c75">URL&lt;/span>) &lt;span style="color:#7f848e">//打开新的网页
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">60&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">replace&lt;/span>(&lt;span style="color:#e06c75">URL&lt;/span>) &lt;span style="color:#7f848e">//打开新的网页
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">61&lt;/span>&lt;span>&lt;span style="color:#7f848e">//———————————————————————
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>js实现get参数传递</title><link>https://mrasong.com/a/js-querystring/</link><pubDate>Wed, 23 Jun 2010 02:52:00 +0800</pubDate><guid>https://mrasong.com/a/js-querystring/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">function&lt;/span> &lt;span style="color:#e06c75">QueryString&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>{ &lt;span style="color:#7f848e">//构造参数对象并初始化
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">name&lt;/span>,&lt;span style="color:#e06c75">value&lt;/span>,&lt;span style="color:#e06c75">i&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">str&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">location&lt;/span>.&lt;span style="color:#e06c75">href&lt;/span>; &lt;span style="color:#7f848e">//获得浏览器地址栏URL串
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">str&lt;/span>.&lt;span style="color:#e06c75">indexOf&lt;/span>(&lt;span style="color:#98c379">&amp;#34;?&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span>&lt;span style="color:#e06c75">str&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">str&lt;/span>.&lt;span style="color:#e06c75">substr&lt;/span>(&lt;span style="color:#e06c75">num&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">1&lt;/span>); &lt;span style="color:#7f848e">//截取“?”后面的参数串
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">arrtemp&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">str&lt;/span>.&lt;span style="color:#e06c75">split&lt;/span>(&lt;span style="color:#98c379">&amp;#34;&amp;amp;amp;amp;&amp;#34;&lt;/span>); &lt;span style="color:#7f848e">//将各参数分离形成参数数组
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">for&lt;/span>(&lt;span style="color:#e06c75">i&lt;/span>&lt;span style="color:#56b6c2">=&lt;/span>&lt;span style="color:#d19a66">0&lt;/span>;&lt;span style="color:#e06c75">i&lt;/span> &lt;span style="color:#56b6c2">&amp;amp;&lt;/span>&lt;span style="color:#e06c75">amp&lt;/span>;&lt;span style="color:#e06c75">lt&lt;/span>; &lt;span style="color:#e06c75">arrtemp&lt;/span>.&lt;span style="color:#e06c75">length&lt;/span>;&lt;span style="color:#e06c75">i&lt;/span>&lt;span style="color:#56b6c2">++&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#e06c75">num&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">arrtemp&lt;/span>[&lt;span style="color:#e06c75">i&lt;/span>].&lt;span style="color:#e06c75">indexOf&lt;/span>(&lt;span style="color:#98c379">&amp;#34;=&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#c678dd">if&lt;/span>(&lt;span style="color:#e06c75">num&lt;/span>&lt;span style="color:#56b6c2">&amp;amp;&lt;/span>&lt;span style="color:#e06c75">amp&lt;/span>;&lt;span style="color:#e06c75">gt&lt;/span>;&lt;span style="color:#d19a66">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">name&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">arrtemp&lt;/span>[&lt;span style="color:#e06c75">i&lt;/span>].&lt;span style="color:#e06c75">substring&lt;/span>(&lt;span style="color:#d19a66">0&lt;/span>,&lt;span style="color:#e06c75">num&lt;/span>);&lt;span style="color:#7f848e">//取得参数名称
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#e06c75">value&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">arrtemp&lt;/span>[&lt;span style="color:#e06c75">i&lt;/span>].&lt;span style="color:#e06c75">substr&lt;/span>(&lt;span style="color:#e06c75">num&lt;/span>&lt;span style="color:#56b6c2">+&lt;/span>&lt;span style="color:#d19a66">1&lt;/span>);&lt;span style="color:#7f848e">//取得参数值
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">this&lt;/span>[&lt;span style="color:#e06c75">name&lt;/span>] &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#e06c75">value&lt;/span>;&lt;span style="color:#7f848e">//定义对象属性并初始化
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#7f848e">//调用:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#7f848e">&lt;/span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">Request&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#c678dd">new&lt;/span> &lt;span style="color:#e06c75">QueryString&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#7f848e">// 如果参数为id 则：Request.id 即可得到参数值
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>JS获取当前客户端屏幕信息</title><link>https://mrasong.com/a/js-get-the-cilent-screen-info/</link><pubDate>Wed, 27 May 2009 16:56:00 +0800</pubDate><guid>https://mrasong.com/a/js-get-the-cilent-screen-info/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 1&lt;/span>&lt;span>&lt;span style="color:#c678dd">var&lt;/span> &lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">=&lt;/span> &lt;span style="color:#98c379">&amp;#34;&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 2&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页可见区域宽：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">clientWidth&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 3&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页可见区域高：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">clientHeight&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 4&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 5&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34;\r\n网页可见区域宽：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 6&lt;/span>&lt;span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">offsetWidth&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 7&lt;/span>&lt;span> &lt;span style="color:#98c379">&amp;#34; (包括边线和滚动条的宽)&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 8&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页可见区域高：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">offsetHeight&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#98c379">&amp;#34; (包括边线的宽)&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f"> 9&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页正文全文宽：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">scrollWidth&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">10&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页正文全文高：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">scrollHeight&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">11&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页被卷去的高：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">scrollTop&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">12&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页被卷去的左：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">document&lt;/span>.&lt;span style="color:#e06c75">body&lt;/span>.&lt;span style="color:#e06c75">scrollLeft&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">13&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页正文部分上：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screenTop&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">14&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n网页正文部分左：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screenLeft&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">15&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n屏幕分辨率的高：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screen&lt;/span>.&lt;span style="color:#e06c75">height&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">16&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n屏幕分辨率的宽：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screen&lt;/span>.&lt;span style="color:#e06c75">width&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">17&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n屏幕可用工作区高度：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screen&lt;/span>.&lt;span style="color:#e06c75">availHeight&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">18&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n屏幕可用工作区宽度：&amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screen&lt;/span>.&lt;span style="color:#e06c75">availWidth&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">19&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n你的屏幕设置是 &amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screen&lt;/span>.&lt;span style="color:#e06c75">colorDepth&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#98c379">&amp;#34; 位彩色&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">20&lt;/span>&lt;span>&lt;span style="color:#e06c75">s&lt;/span> &lt;span style="color:#56b6c2">+=&lt;/span> &lt;span style="color:#98c379">&amp;#34;\r\n你的屏幕设置 &amp;#34;&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#e5c07b">window&lt;/span>.&lt;span style="color:#e06c75">screen&lt;/span>.&lt;span style="color:#e06c75">deviceXDPI&lt;/span> &lt;span style="color:#56b6c2">+&lt;/span> &lt;span style="color:#98c379">&amp;#34; 像素/英寸&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#55595f">21&lt;/span>&lt;span>&lt;span style="color:#e06c75">alert&lt;/span>(&lt;span style="color:#e06c75">s&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>