<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>WebBlog:路杨</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/" />
    <link rel="self" type="application/atom+xml" href="https://easun.org/blog/atom.xml" />
    <id>tag:easun.org,2015-04-08:/blog//2</id>
    <updated>2022-12-09T04:09:28Z</updated>
    <subtitle>Talk about Movable Type,Perl,Small softwares and Journals</subtitle>
    

<entry>
    <title>[SiteLog]遭遇疯狂的SPAM</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/sitelogspam2021.html" />
    <id>tag:easun.org,2021:/blog//2.342</id>

    <published>2021-07-17T14:56:52Z</published>
    <updated>2022-12-09T04:09:28Z</updated>

    <summary>嗯。 2021年7月17日。 从大约6点半到8点半，大约收到 75 个 SPAM 评论。 由于评论关联了QQ信箱，所以手机嘟嘟没有停过。 虽然，这些评论因为不符合我定义的正常评论逻辑，都是人工审核阶段，但是的确写入数据库。。。 抓图如下： PS： 进后台及时关掉评论脚本。终于消停。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="心情故事" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="站务记录" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="sitelog" label="SiteLog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="spam" label="Spam" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>嗯。 2021年7月17日。 <br />
从大约6点半到8点半，大约收到 75 个 SPAM 评论。 由于评论关联了QQ信箱，所以手机嘟嘟没有停过。 <br />
虽然，这些评论因为不符合我定义的正常评论逻辑，都是人工审核阶段，但是的确写入数据库。。。 <br />
抓图如下：  </p>

<p>PS： 进后台及时关掉评论脚本。终于消停。</p>
]]>
        <![CDATA[<p><a data-lightbox="easun" href="https://easun.org/blog/upload/spam071701%20.png"><img alt="spam071701 .png" src="https://easun.org/blog/upload/spam071701%20.png" class="mt-image-none" style="" /></a></p>

<p><a data-lightbox="easun" href="https://easun.org/blog/upload/spam071702.png"><img alt="spam071702.png" src="https://easun.org/blog/upload/cache/2021/07/spam071702-thumb-600xauto-204.png" width="600" height="328" class="mt-image-none" style="" /></a>     </p>

<p><a data-lightbox="easun" href="https://easun.org/blog/upload/spam071703.png"><img alt="spam071703.png" src="https://easun.org/blog/upload/cache/2021/07/spam071703-thumb-600xauto-206.png" width="600" height="254" class="mt-image-none" style="" /></a></p>
]]>
    </content>
</entry>

<entry>
    <title>[随笔]高DPI缩放下的windows 程序界面发虚VC解决</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/win10dpi_vc_pset.html" />
    <id>tag:easun.org,2021:/blog//2.341</id>

    <published>2021-06-22T02:00:46Z</published>
    <updated>2021-07-05T05:49:23Z</updated>

    <summary>久不编程。 也久不使用高DPI缩放的屏幕。 发现在 win10 高DPI 下设置 150% 的缩放，自己写的小程序居然发虚。 简单研究了下，老VC一样解决。。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="程序人生" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dpi" label="DPI" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vc" label="VC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows10" label="windows10" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="随笔" label="随笔" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>久不编程。 也久不使用高DPI缩放的屏幕。 <br />
发现在 win10 高DPI 下设置 150% 的缩放，自己写的小程序居然发虚。     </p>

<p>简单研究了下，老VC一样解决。。   </p>
]]>
        <![CDATA[<p>解决办法。 资源<code>24</code>的<code>XML</code>文件加入以下代码:    </p>

<pre><b class="name">xml</b><code class="xml">     &lt;application 
        xmlns="urn:schemas-microsoft-com:asm.v3"&gt;
       &lt;windowsSettings&gt;
         &lt;dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"&gt;true&lt;/dpiAware&gt;
       &lt;/windowsSettings&gt;
     &lt;/application&gt;
</code></pre>

<p>重新编译，问题解决。</p>
]]>
    </content>
</entry>

<entry>
    <title>[随笔]拥抱鸿蒙HarmonyOS，的确不错</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/harmonyos_mate20.html" />
    <id>tag:easun.org,2021:/blog//2.340</id>

    <published>2021-06-10T02:22:31Z</published>
    <updated>2021-08-16T14:29:52Z</updated>

    <summary>鸿蒙HarmonyOS，的确不错 老机器，Mate20 机器。 不是首发机器，申请了内测。 很快通过。 2.4G的软件包，说大不大，说小不小。 完成后眼前一亮，完美的保留了原来的操作习惯。居然感觉比原来的系统快了？ 简单测试了几下，上滑卡片好评，文件夹显示成缩略图好评。 分析了逻辑关系， 华为通过方舟编译器做中间层，（即时）编译安卓APP 获得比原生安卓更好的运行效率。 下了开源代码，简单的分析了框架，貌似框架（至少是目前）比原生安卓的框架要好，至少管理弹窗方面。 微内核不同于安卓的宏内核，只有部分程序可以工作的底层，这思路对于权限管理好太多。 嗯，超级终端也好评。试了试一碰传多屏互动，和原来似乎没有区别。。 畅连功能貌似可以传文件了，和同事测试下，2.2G的电影 5分传完，这走的同一个wifi。 比微信和企业微信好多了（一是慢，二是由容量限制）。 PS： 老了，不参与口水战，但是至于啥啥啥套壳论建议可以忽视了，谷歌的法务从来不是食草动物。。 对于末端用户，好用，足矣。 期待发展，期待生态完善，借用安卓生态是个好的创意，但是不应该作为长期目标。 附图片几张：...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="八卦杂谈" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="harmonyos" label="HarmonyOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="随笔" label="随笔" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="鸿蒙" label="鸿蒙" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>鸿蒙HarmonyOS，的确不错    </p>

<p>老机器，Mate20 机器。 不是首发机器，申请了内测。 很快通过。 2.4G的软件包，说大不大，说小不小。 <br />
完成后眼前一亮，完美的保留了原来的操作习惯。居然感觉比原来的系统快了？   </p>

<p>简单测试了几下，上滑卡片好评，文件夹显示成缩略图好评。  </p>

<p>分析了逻辑关系， 华为通过方舟编译器做中间层，（即时）编译安卓APP 获得比原生安卓更好的运行效率。  </p>

<p>下了开源代码，简单的分析了框架，貌似框架（至少是目前）比原生安卓的框架要好，至少管理弹窗方面。 微内核不同于安卓的宏内核，只有部分程序可以工作的底层，这思路对于权限管理好太多。   </p>

<p>嗯，超级终端也好评。试了试一碰传多屏互动，和原来似乎没有区别。。 <br />
畅连功能貌似可以传文件了，和同事测试下，2.2G的电影 5分传完，这走的同一个wifi。 比微信和企业微信好多了（一是慢，二是由容量限制）。   </p>

<p>PS：　老了，不参与口水战，但是至于啥啥啥套壳论建议可以忽视了，谷歌的法务从来不是食草动物。。　对于末端用户，好用，足矣。   </p>

<p>期待发展，期待生态完善，借用安卓生态是个好的创意，但是不应该作为长期目标。 <br />
附图片几张：</p>
]]>
        <![CDATA[<p><a data-lightbox="easun" href="https://easun.org/blog/upload/HarmonyOS1.jpg"><img alt="HarmonyOS1.jpg" src="https://easun.org/blog/upload/cache/2021/06/HarmonyOS1-thumb-autox1246-192.jpg"  class="mt-image-none" style="" /></a>
<a data-lightbox="easun" href="https://easun.org/blog/upload/HarmonyOS2.jpg"><img alt="HarmonyOS2.jpg" src="https://easun.org/blog/upload/cache/2021/06/HarmonyOS2-thumb-autox1246-194.jpg"  class="mt-image-none" style="" /></a>安装更新，一切平滑升级。    </p>

<p><a data-lightbox="easun" href="https://easun.org/blog/upload/HarmonyOS3.jpg"><img alt="HarmonyOS3.jpg" src="https://easun.org/blog/upload/cache/2021/06/HarmonyOS3-thumb-autox1246-196.jpg"  class="mt-image-none" style="" /></a>
<a data-lightbox="easun" href="https://easun.org/blog/upload/HarmonyOS4.jpg"><img alt="HarmonyOS4.jpg" src="https://easun.org/blog/upload/cache/2021/06/HarmonyOS4-thumb-autox1246-198.jpg"  class="mt-image-none" style="" /></a>
<a data-lightbox="easun" href="https://easun.org/blog/upload/HarmonyOS5.jpg"><img alt="HarmonyOS5.jpg" src="https://easun.org/blog/upload/cache/2021/06/HarmonyOS5-thumb-autox1246-200.jpg" class="mt-image-none" style="" /></a> </p>
]]>
    </content>
</entry>

<entry>
    <title>[随笔]岁月催人老，写在生日当天</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/20210427_birthday.html" />
    <id>tag:easun.org,2021:/blog//2.339</id>

    <published>2021-06-07T08:35:19Z</published>
    <updated>2021-06-07T10:25:49Z</updated>

    <summary>接到老妈的短信。才发现有老了一岁。 嗯，农历4月27日 话说，记得自己生日的永远是父母。 借2年没有发博的博客悄悄给自己祝贺一下。 人在冀中，出差3月有余。 这注定是个孤独的生日。 另外。今日收到20周年的大学同学相册，只是家人代收。 也算生日礼物？ 最近有点上火，口腔溃疡，啥都吃不了。 Over....</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="心情故事" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="生日" label="生日" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="随笔" label="随笔" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>接到老妈的短信。才发现有老了一岁。 嗯，农历4月27日   </p>

<p>话说，记得自己生日的永远是父母。</p>

<p>借2年没有发博的博客悄悄给自己祝贺一下。   </p>

<p>人在冀中，出差3月有余。 <br />
这注定是个孤独的生日。   </p>

<p>另外。今日收到20周年的大学同学相册，只是家人代收。 也算生日礼物？    </p>

<p>最近有点上火，口腔溃疡，啥都吃不了。   </p>

<p><a data-lightbox="easun" href="https://easun.org/blog/upload/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20210607164227.jpg"><img alt="20210607164227.jpg" src="https://easun.org/blog/upload/cache/2021/06/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20210607164227-thumb-600xauto-189.jpg" width="600" height="450" class="mt-image-none" style="" /></a></p>

<p>Over.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>[双11]暗叹一下双11京东的价格</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/1111_jd_thinkpad.html" />
    <id>tag:easun.org,2019:/blog//2.338</id>

    <published>2019-11-06T13:29:01Z</published>
    <updated>2020-11-23T06:27:07Z</updated>

    <summary>暗叹一下双11京东的价格。 低配版Thinkpad E480 领取300元优惠券后仅售2299元。 地址： https://u.jd.com/uvgKWl 这配置，普通文秘办公胜任，画图狗嘛，至少8G RAM +SSD。就别指望这个了。 今年双11，京东貌似力度挺大。每天可以领红包到11号（每天三次），红包可以累计使用。 地址： https://u.jd.com/Dk0QyY， 据说有人可以领66元，但是我每次都是2毛。哈哈。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="八卦杂谈" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="京东" label="京东" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="双11" label="双11" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>暗叹一下双11京东的价格。 <br />
低配版Thinkpad E480 领取300元优惠券后仅售2299元。 <br />
地址： <a href="https://u.jd.com/uvgKWl">https://u.jd.com/uvgKWl</a>     </p>

<p>这配置，普通文秘办公胜任，画图狗嘛，至少8G RAM +SSD。就别指望这个了。  </p>

<p>今年双11，京东貌似力度挺大。每天可以领红包到11号（每天三次），红包可以累计使用。      </p>

<p>地址： <a href="https://u.jd.com/Dk0QyY">https://u.jd.com/Dk0QyY</a>，   </p>

<p>据说有人可以领66元，但是我每次都是2毛。哈哈。    </p>
]]>
        

    </content>
</entry>

<entry>
    <title>[杂事]美化一下家里的配电箱</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/post_24.html" />
    <id>tag:easun.org,2019:/blog//2.337</id>

    <published>2019-08-14T08:21:52Z</published>
    <updated>2019-09-17T01:13:21Z</updated>

    <summary>家里已经装修10多年，配电箱位置处于客厅高位，本来就不好看，且因为年代问题，严重发黄。。 话说，前两天在淘宝上看到十多块还包邮三张的自贴画，心动，购买之。 回来后是三张仿国画的自粘画，质量马马虎虎。见下图。 想了想，用它给家里的配电箱美化一下吧。。 耗时2天空闲时间。。 流水如下： 1. 第一日：先白色自喷漆翻新配电箱。。营造相框的感觉。。没有拍照，因为太乱了，也没有想到拍照。等待油漆自然晾干 2. 第二日： 裁一块自贴画的下半身，山水的那张（太大，只需要1半），拆掉锁具，开始执行贴膜技术。。。。 3. 开洞，装回锁具。 完成后抓图： === 结果，家里又多了 2.5 张 自贴画。。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="八卦杂谈" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="杂事" label="杂事" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="美化" label="美化" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="自贴画" label="自贴画" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="配电箱" label="配电箱" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>家里已经装修10多年，配电箱位置处于客厅高位，本来就不好看，且因为年代问题，严重发黄。。</p>

<p>话说，前两天在淘宝上看到十多块还包邮三张的自贴画，心动，购买之。
回来后是三张仿国画的自粘画，质量马马虎虎。见下图。
<a data-lightbox="easun" href="https://easun.org/blog/upload/IMG_20190812_143829.jpg"><img alt="IMG_20190812_143829.jpg" src="https://easun.org/blog/upload/cache/2019/08/IMG_20190812_143829-thumb-600xauto-183.jpg" width="600" height="450" class="mt-image-none" style="" /></a>
想了想，用它给家里的配电箱美化一下吧。。</p>

<p>耗时2天空闲时间。。</p>

<p>流水如下： <br />
1.  第一日：先白色自喷漆翻新配电箱。。营造相框的感觉。。没有拍照，因为太乱了，也没有想到拍照。等待油漆自然晾干 <br />
2.  第二日： 裁一块自贴画的下半身，山水的那张（太大，只需要1半），拆掉锁具，开始执行贴膜技术。。。。 <br />
3.  开洞，装回锁具。</p>

<p>完成后抓图：
<a data-lightbox="easun" href="https://easun.org/blog/upload/IMG_20190813_205453.jpg"><img alt="IMG_20190813_205453.jpg" src="https://easun.org/blog/upload/cache/2019/08/IMG_20190813_205453-thumb-600xauto-184.jpg" width="600" height="450" class="mt-image-none" style="" /></a></p>

<p>=== <br />
结果，<strong>家里又多了 2.5 张 自贴画</strong>。。</p>
]]>
        

    </content>
</entry>

<entry>
    <title>[小红点依赖症]迟来的 ThinkPad X61 双模小红点键盘组装</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/thinkpad_x61_kb_wb.html" />
    <id>tag:easun.org,2019:/blog//2.336</id>

    <published>2019-08-09T03:25:06Z</published>
    <updated>2020-06-26T11:21:53Z</updated>

    <summary>话说，保留了一个ThinkPad X61下半身，想改双模小红点键盘久矣。可惜拖延症加上肖大神（3dg12）的套件缺货，一直闲置。。。 数周前，3dg12 那里终于有货了。入手，改造。 目标： 蓝牙，2.4G无线双模，锂电池充电，小红点正常能用。。。 记录如下。 旧主板没有移除，做配重，但是键盘接口有冲突，放不平，直接上钳子，扳掉，把套件的接口板粘在原位。 电池和主板放在硬盘位。用双面泡沫胶固定。。 到此应该算结束了。 但是指示灯看不见。。准备引出， 下面是大神主板的指示灯，测量了一下，既不共阴，也不共阳。。。呃。。。 找块洞洞板，焊接0603 LED,话说，0603 真小，忽略掉我的渣渣焊工，能用就好。。 合体。 最后，指示灯卡在了C壳和D壳的缝隙中。。。 我的 C壳有变形。 请忽略。。 另外，找了一段旧的手机充电线，引出充电口。没有拍照，也就这样了。懒啊。 最后，补上模块购买记录， 主板(含电池) 70 + 转接口 15 + 接收器（可选，不配的话只能蓝牙，选这个可以2.4G无线） 25 元。 -EOF-...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="八卦杂谈" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="thinkpad" label="ThinkPad" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="双模" label="双模" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="无线" label="无线" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="键盘" label="键盘" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>话说，保留了一个ThinkPad X61下半身，想改双模小红点键盘久矣。可惜拖延症加上肖大神（<a href="https://forum.51nb.com/home.php?mod=space&amp;uid=1552966">3dg12</a>）的套件缺货，一直闲置。。。</p>

<p>数周前，<a href="https://forum.51nb.com/home.php?mod=space&amp;uid=1552966">3dg12</a> 那里终于有货了。入手，改造。
目标： 蓝牙，2.4G无线双模，锂电池充电，小红点正常能用。。。 记录如下。</p>

<ol>
<li><p>旧主板没有移除，做配重，但是键盘接口有冲突，放不平，直接上钳子，扳掉，把套件的接口板粘在原位。
<a data-lightbox="easun" href="https://easun.org/blog/upload/x61kb1.jpg"><img alt="x61kb1.jpg" src="https://easun.org/blog/upload/cache/2019/08/x61kb1-thumb-600xauto-166.jpg" width="600" height="449" class="mt-image-none" style="" /></a></p></li>
<li><p>电池和主板放在硬盘位。用双面泡沫胶固定。。
<a data-lightbox="easun" href="https://easun.org/blog/upload/kb2.jpg"><img alt="kb2.jpg" src="https://easun.org/blog/upload/cache/2019/08/kb2-thumb-600xauto-168.jpg" width="600" height="449" class="mt-image-none" style="" /></a>
<a data-lightbox="easun" href="https://easun.org/blog/upload/kb3.jpg"><img alt="kb3.jpg" src="https://easun.org/blog/upload/cache/2019/08/kb3-thumb-600xauto-170.jpg" width="600" height="449" class="mt-image-none" style="" /></a></p></li>
</ol>

<p>到此应该算结束了。 但是指示灯看不见。。准备引出，
下面是大神主板的指示灯，测量了一下，<strong>既不共阴，也不共阳</strong>。。。呃。。。
<a data-lightbox="easun" href="https://easun.org/blog/upload/kb4.jpg"><img alt="kb4.jpg" src="https://easun.org/blog/upload/cache/2019/08/kb4-thumb-autox800-172.jpg" width="600" height="800" class="mt-image-none" style="" /></a></p>

<p>找块洞洞板，焊接0603 LED,话说，0603 真小，忽略掉我的渣渣焊工，能用就好。。 
<a data-lightbox="easun" href="https://easun.org/blog/upload/kb5.jpg"><img alt="kb5.jpg" src="https://easun.org/blog/upload/cache/2019/08/kb5-thumb-autox800-174.jpg" width="600" height="800" class="mt-image-none" style="" /></a></p>

<p>合体。
<a data-lightbox="easun" href="https://easun.org/blog/upload/kb6.jpg"><img alt="kb6.jpg" src="https://easun.org/blog/upload/cache/2019/08/kb6-thumb-autox800-176.jpg" width="600" height="800" class="mt-image-none" style="" /></a>
最后，指示灯卡在了C壳和D壳的缝隙中。。。
我的 C壳有变形。 请忽略。。
<a data-lightbox="easun" href="https://easun.org/blog/upload/kb7.jpg"><img alt="kb7.jpg" src="https://easun.org/blog/upload/cache/2019/08/kb7-thumb-600xauto-178.jpg" width="600" height="449" class="mt-image-none" style="" /></a></p>

<p>另外，找了一段旧的手机充电线，引出充电口。没有拍照，也就这样了。懒啊。</p>

<p>最后，补上模块购买记录， 主板(含电池) 70 + 转接口 15 + 接收器（可选，不配的话只能蓝牙，选这个可以2.4G无线） 25 元。</p>

<p><a data-lightbox="easun" href="https://easun.org/blog/upload/kb_tb_s.png"><img alt="kb_tb_s.png" src="https://easun.org/blog/upload/cache/2019/08/kb_tb_s-thumb-600xauto-180.png" width="600" height="288" class="mt-image-none" style="" /></a></p>

<p>-EOF-</p>
]]>
        

    </content>
</entry>

<entry>
    <title>意欲何为？遭遇克隆，哭笑不得</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/post_23.html" />
    <id>tag:easun.org,2019:/blog//2.335</id>

    <published>2019-07-22T06:06:22Z</published>
    <updated>2020-11-23T06:26:39Z</updated>

    <summary>意欲何为？遭遇克隆，哭笑不得 近两年没有写BLOG了。 生活的重心貌似随着年龄渐渐偏移到其他地方。 但是，Blog 依然挂再网上，也依然续费保存。 前天，某好友发邮件问：你的blog换地址了？ 我一脸懵圈。。。 上百度，去掉 Easun.org 直接用 &quot;- Easun&apos;s Personal Portal,Talk about Movable Type,Perl in China,Softwares and Journals&quot; 标题来搜，首页的第一个第二个均为李鬼。 打开一看，界面一模一样。 抓图： 甚至，某个网站（kcpon）因为还备案了，有公司背景，堂而皇之的进入了&quot;企查查&quot;？ 打开抓图（只抓了一个）： == 真的是哭笑不得。 小破博客也要克隆？ 发出来，看这篇文章会不会也会同步到盗版上去？...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="心情故事" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="站务记录" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>意欲何为？遭遇克隆，哭笑不得</p>

<p>近两年没有写BLOG了。
生活的重心貌似随着年龄渐渐偏移到其他地方。
但是，Blog 依然挂再网上，也依然续费保存。</p>

<p>前天，某好友发邮件问：你的blog换地址了？ 我一脸懵圈。。。</p>

<p>上百度，去掉 Easun.org 直接用 "- Easun's Personal Portal,Talk about Movable Type,Perl in China,Softwares and Journals" 标题来搜，首页的第一个第二个均为李鬼。
打开一看，界面一模一样。
抓图：
<a data-lightbox="easun" href="https://easun.org/blog/upload/7-22-lg.png"><img alt="7-22-lg.png" src="https://easun.org/blog/upload/cache/2019/07/7-22-lg-thumb-600xauto-161.png" width="600" height="367" class="mt-image-none" style="" /></a>
甚至，某个网站（<strong>kcpon</strong>）因为还备案了，有公司背景，堂而皇之的进入了"企查查"？
打开抓图（只抓了一个）：
<a data-lightbox="easun" href="https://easun.org/blog/upload/7-22-lg2.png"><img alt="7-22-lg2.png" src="https://easun.org/blog/upload/cache/2019/07/7-22-lg2-thumb-600xauto-163.png" width="600" height="308" class="mt-image-none" style="" /></a></p>

<p>==
真的是哭笑不得。 小破博客也要克隆？ 发出来，看这篇文章会不会也会同步到盗版上去？</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Typecho升级错误白屏？</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/typecho.html" />
    <id>tag:easun.org,2017:/blog//2.334</id>

    <published>2017-12-11T12:03:57Z</published>
    <updated>2019-03-29T04:44:22Z</updated>

    <summary>Typecho升级错误白屏？ 从 1.0 升级到 1.1 ，一直是白屏，啥都不显示。。 研究了一下，暂时改名config.inc.php，执行 install.cgi ，这下，错误提示出来了： codePHP Parse error: syntax error, unexpected &apos;[&apos;, expecting &apos;)&apos; in /www/html/install.php on line 242 嗯。明白了。 系统的 php 版本太低。。。 一定要大于 5.4 ... 升级 php 版本到5.5。 重启服务器，改回config.inc.php。成功进后台，升级成功。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="程序人生" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="typecho" label="Typecho" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="升级" label="升级" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>Typecho升级错误白屏？</p>

<p>从 1.0 升级到 1.1 ，一直是白屏，啥都不显示。。 
研究了一下，暂时改名config.inc.php，执行 install.cgi ，这下，错误提示出来了：</p>

<pre><b class="name">code</b><code class="code">PHP Parse error: syntax error, unexpected '[', expecting ')' in /www/html/install.php on line 242
</code></pre>

<p>嗯。明白了。 系统的 php 版本太低。。。 一定要大于 5.4 ...
升级 php 版本到5.5。
重启服务器，改回config.inc.php。成功进后台，升级成功。 </p>
]]>
        

    </content>
</entry>

<entry>
    <title>Perl eval 和 $SIG{__DIE__}</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/perl_eval_sig_die.html" />
    <id>tag:easun.org,2017:/blog//2.333</id>

    <published>2017-10-26T14:03:01Z</published>
    <updated>2018-12-08T08:51:59Z</updated>

    <summary><![CDATA[一般来说， Pel 中的 eval 可以捕获异常。 至少我是这样用的： 用来尝试运行一些操作，要是出错了也不会退出。 比如我经常用 Image::Info 来判断一个图像文件是否真的是图像，但是服务器上是否有 Image::Info是个问题。 简单概念代码如下： code eval("use Image::Info qw(image_info);"); if ($@ eq "") { my $info = image_info("$tmpfilename"); if ($info-&gt;{error} eq "Unrecognized file format"){ $esB::base-&gt;error("该文件不是合法的图片文件。"); } } 由于 eval 的存在， 如果系统没有 Image::Info ，那么简单的跳过判断，并不影响程序的继续执行。。...]]></summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="程序人生" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="die" label="die" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="eval" label="eval" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sig" label="sig" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>一般来说， Pel 中的 <code>eval</code> 可以捕获异常。 至少我是这样用的： 用来尝试运行一些操作，要是出错了也不会退出。 
比如我经常用 <code>Image::Info</code> 来判断一个图像文件是否真的是图像，但是服务器上是否有 <code>Image::Info</code>是个问题。 简单概念代码如下：</p>

<pre><b class="name">code</b><code class="code">      eval("use Image::Info qw(image_info);");
      if ($@ eq "")
      {
            my $info = image_info("$tmpfilename");
            if ($info-&gt;{error} eq "Unrecognized file format"){
             $esB::base-&gt;error("该文件不是合法的图片文件。");
            }
      }
</code></pre>

<p>由于 <code>eval</code> 的存在， 如果系统没有  <code>Image::Info</code> ，那么简单的跳过判断，并不影响程序的继续执行。。</p>

<p>直到有一天， 我决定用 <code>$SIG{__DIE__}</code> 来自定义程序的的出错信息。  一样，概念代码如下</p>

<pre><b class="name">code</b><code class="code"> $SIG{__DIE__} = \&amp;esb_die;

 sub esb_die {
      my $error = shift;
      $error =~ s!$ENV{'DOCUMENT_ROOT'}!/{you_root_dir}/!i;
   my ($msg, $path) = split " at ",$error;
   print "Content-type: text/html\n\n";
   print qq~
    &lt;html&gt;
    &lt;head&gt;&lt;title&gt;Easun CGI Error&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" &gt;
    &lt;/head&gt;
    &lt;body &gt;
    &lt;font size='6' color='#333366'&gt;Easun CGI Error&lt;/font&gt;
    &lt;hr size='1' color='#000000' noshade&gt;
    &lt;font size='3' color='#00000'&gt;
    很抱歉，程式因为以下错误而异常退出:
    &lt;br&gt;&lt;br&gt;&lt;b&gt;$msg&lt;/b&gt;&lt;br&gt;&lt;br&gt;错误大概发生在: &lt;font color='#000099'&gt;$path&lt;/font&gt;&lt;br&gt;&lt;br&gt;
    &lt;font size='3' color='#990000'&gt;&lt;b&gt;请注意，为了保证您的安全，您的程序的真实路径已经被程式自动过滤。&lt;/b&gt;&lt;/font&gt;
    &lt;/font&gt;
    &lt;/body&gt;&lt;/html&gt; ~;
    exit();
}
</code></pre>

<p>该操作也达到预期目的。</p>

<p>但是，当这两者同时运行时，<code>$SIG{__DIE__}</code> 居然捕获到了 <code>eval</code> 内的 <code>$@</code> 。当系统没有找到<code>Image::Info</code> 时候，程序不再默默跳过继续执行。而是直接跳出到自定义错误页面。 <br />
信息如下</p>

<blockquote>
  <p>很抱歉，程式因为以下错误而异常退出:
        Can't locate Image/Info.pm in @INC (you may need to install the Image::Info module) (@INC contains: ./config ./ShareLib ./ D:/usr/site/lib D:/usr/lib .) 错误大概发生在: (eval 10) line 1.</p>
</blockquote>

<p>如何协调这两者，是个问题。。。</p>

<p>记录下来，作为备忘。</p>
]]>
        

    </content>
</entry>

<entry>
    <title>切换服务器到美国 New Jersey</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/vps_new_jersey.html" />
    <id>tag:easun.org,2017:/blog//2.332</id>

    <published>2017-10-12T02:25:19Z</published>
    <updated>2017-12-29T16:58:21Z</updated>

    <summary>最近 Vultr VPS 日本的服务器好慢，而且时不时的几个小时不能访问，郁闷ing。。。 终于下决心，切换到了Vultr 的 美国 New Jersey 服务器。 也许能稳定一点。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="站务记录" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="vps" label="VPS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vultr" label="Vultr" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>最近 <a href="https://easun.org/url/vultr">Vultr</a> VPS 日本的服务器好慢，而且时不时的几个小时不能访问，郁闷ing。。。</p>

<p>终于下决心，切换到了<a href="https://easun.org/url/vultr">Vultr</a> 的 美国 New Jersey 服务器。</p>

<p>也许能稳定一点。</p>
]]>
        

    </content>
</entry>

<entry>
    <title>简单的编辑器闭包</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/js_esBObj_editer.html" />
    <id>tag:easun.org,2017:/blog//2.331</id>

    <published>2017-09-15T05:56:25Z</published>
    <updated>2017-09-15T05:58:25Z</updated>

    <summary>闲暇无聊，简单的把原来BBS的的编辑器进行了闭包处理。和原来的功能没有啥区别，仅仅视简单的 UBB支持和ajax 上传。 纯粹算是 茴 字的 N 种写法。 记录下来，以免忘记，其中 editer 的 ID 为 document.FORM.inpost 代码如下：...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="程序人生" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="jquery" label="jQuery" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="js" label="js" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>闲暇无聊，简单的把原来BBS的的编辑器进行了闭包处理。和原来的功能没有啥区别，仅仅视简单的 UBB支持和ajax 上传。
纯粹算是 <strong>茴</strong> 字的 <strong>N</strong> 种写法。</p>

<p>记录下来，以免忘记，其中 <code>editer</code> 的 ID 为 <code>document.FORM.inpost</code></p>

<p>代码如下：</p>
]]>
        <![CDATA[<pre><b class="name">code</b><code class="code">/* - esBObj.editer = 编辑器，UBB支持 + 简单 ajax 上传 By 路杨 - */
var editer = esBObj.editer || function(w, d) {  
  var canFormat = 0;
   var config ={   
    ubb: true, /*使用UBB还是HTML*/
    is_binOK:false,
    em_no: 26,
    ua_no: 37
   }; 
   var b ={
  checkFormat : function(){
if (canFormat) return;
      if (document.selection ||  (typeof(document.createElement("textarea")["setSelectionRange"]) != "undefined"))
      canFormat = 1;
},
   getSelected : function getSelected () {
 var e= document.FORM.inpost;
       if (document.selection) {
        e.focus();
        var range = document.selection.createRange();
        return range.text;
    } else {
        var length = e.textLength;
        var start = e.selectionStart;
        var end = e.selectionEnd;
        if (end == 1 || end == 2 &amp;&amp; length != undefined) end = length;
        return e.value.substring(start, end);
      }
},
setSelection : function (v) {
var e= document.FORM.inpost;
        if (document.selection) {
        e.focus();
        var range = document.selection.createRange();
        range.text = v;
        } else {
        var length = e.textLength;
        var start = e.selectionStart;
        var end = e.selectionEnd;
        if (end == 1 || end == 2 &amp;&amp; length != undefined) end = length;
        e.value = e.value.substring(0, start) + v + e.value.substr(end, length);
        e.selectionStart = start + v.length;
        e.selectionEnd = start + v.length;
        }
     e.focus();
 },
 formatStr: function(v){     
      if (!canFormat) return;
      var str = b.getSelected();
      if (str)  {
      if( config.ubb ) b.setSelection('[' + v + ']' + str + '[/' + v + ']');
      else b.setSelection('&lt;' + v + '&gt;' + str + '&lt;/' + v + '&gt;');
      }
     return false;
}
   };

  var e ={
init:function(){
    b.checkFormat();
  e.bin_actions();
}
,bin_actions : function(){
     if ( config.is_binOK) return;
$("body").on("click","a.formatting-icons, span.formatting-icons",  e.ubb)
   .on("click","a.upload-bar, span.upload-bar",  e.insertUpfile)
    .on("click","a.bt.smilie,img.bt.smilie,span.bt.smilie",  e.emot) 
    .on("click","a.addquote,img.addquote,span.addquote",  e.addquote) 
    .on("click","input#upload",  e.do_upload)
    .on("click","a.del-upload,span.del-upload",  e.del_upload)
    .on("click","a.load-upload,span.load-upload",  e.load_upload)
     ; 
   config.is_binOK =true;

    }, /*END _init*/

   del_upload : function() { /*删除所有未发布的上传文件*/ 
 if ( confirm('确定删除所有未被发布的附件临时文件么？') )
 {
$("#imgWait").show(); 
 util.get_esb_jsonp("delup", 'delup_out', { 'js' : 1 } ); 

 }
   },   
   delup_out: function(data) {   
  $("#imgWait").hide(); 
 if (data.status == "true") {
     $("#showupfile").html("");
    alert("你已经上传的，但还尚未发布的附件临时文件已经全部删除。"); 
 }
 else {alert("删除失败！");}        
   },

   load_upload : function() { /*重新加载所有未发布的上传文件到列表*/
  $("#imgWait").show(); 
  util.get_esb_jsonp("load_oldupfile", 'loadupfileout', { 'js' : 1 } ); 
   },   
loadupfileout: function(data) {   
  $("#imgWait").hide(); 
 if (data.status == "true") {
    alert("你已经上传的，但还尚未发布的附件临时文件已经加载到当前页面。"); 
 }
 else {alert("加载失败！");}        
   },

   do_upload : function() { /*上传文件处理*/

$("#imgWait").show();
var formData = new FormData();
formData.append("action", "doupfile");   
formData.append("addme", document.getElementById("file1").files[0]);   
$.ajax({
 url: w.esBConfig.cgi_url +'upfile2.cgi',
//url: "xs.html",
type: "POST",
data: formData,
/**
*必须false才会自动加上正确的Content-Type
*/
contentType: false,
/**
* 必须false才会避开jQuery对 formdata 的默认处理
* XMLHttpRequest会对 formdata 进行正确的处理
*/
processData: false,
dataType : 'json',
success: function (data) {
   console.log(data); 
if (data.status == "true") {
/* alert("上传成功！"); */
e.addit2span(data); 
e.insertUpfile(data.path,'once');   
}
if (data.status == "error") {
alert(data.msg);
}
$("#imgWait").hide();
$("#file1").replaceWith($("#file1").val('').clone(true));
},
error: function () {
alert("上传失败！");
$("#imgWait").hide();

}
});   
},
addit2span : function (data) 
{
   var $Once = '';
   if (data.once != "true" ) data.once="false" ;
   var addit2span =
   '&lt;div id="' + data.id +'" data-name="'+ data.path+'"&gt;附件: ' +data.name
   + '[&lt;span class="upload-bar link" data-name="'+ data.path+'" data-type ="' +data.type + '" data-once="' + data.once + '"&gt;再次插入帖子&lt;/span&gt;]&lt;/div&gt;';

   var $el=$("#showupfile").find("div#"+data.id);
   if (!$el.length)$(addit2span).appendTo($("#showupfile"));  
},
ubb:function  () {
var type= $(this).attr("data-ubb");
if ( ! type ) return;
if (type == 'link') return e.insertLink(0);
if (type == 'email') return e.insertLink(1);
if (type == 'decode') return e.Decode();
return b.formatStr(type);   
},

insertLink:function  ( isMail) {
    if (!canFormat) return;
    var str = b.getSelected();
    var link = '';
    if (!isMail) {
    if (str.match(/^https?:/)) {
    link = str;
    } else if (str.match(/^(\w+\.)+\w{2,5}\/?/)) {
    link = 'http://' + str;
    } else if (str.match(/ /)) {
    link = 'http://';
    } else {
    link = 'http://' + str;
    }
    } else {
    if (str.match(/@/)) {
    link = str;
    }
    }
    var my_link = prompt(isMail ? '输入 Email 地址:' : '输入 URL: ', link);
    if (my_link != null) {
    if (str == '') str = my_link;
    if (isMail) my_link = 'mailto:' + my_link;
    if( config.ubb ) b.setSelection( '[url="' + my_link + '"]' + str + '[/url]');
    else b.setSelection( '&lt;a href="' + my_link + '"&gt;' + str + '&lt;/a&gt;');
    }
    return false;
  },
Decode: function () {
    if (!canFormat) return;
    var str = b.getSelected();
    if (!str) return;
    str = str.replace(new RegExp("&amp;","g"), "&amp;amp;");
    str = str.replace(new RegExp("&lt;","g"), "&amp;lt;");
    str = str.replace(new RegExp("&gt;","g"), "&amp;gt;");
    str = str.replace(new RegExp('"',"g"), "&amp;quot;");
    /* str = str.replace(new RegExp(' ',"g"), "&amp;nbsp;"); */
    b.setSelection(str);
    return false;
  },
  emot:function () {
    if (!canFormat) return; 
   var group= $(this).attr("data-group") || 'em';
   var id= $(this).attr("data-emot");
   if ( ! id ) return;
    /* var str = getSelected(e); */
    b.setSelection(' :'+ group + id + ': ');    
    return false;
  },
/***重新插入上传文件的代码**********************/
  insertUpfile : function (name,once) {
    if (!canFormat) return;
    if( typeof(name) != 'string')  name = $(this).attr("data-name");
    if(!name) return; 
    if( typeof(once) != 'string')  once = $(this).attr("data-once");  /*data-once="true" */
    if (once =='once')  { once ='true';}        
    var str = ' [UploadFile='; 
    if (once =='true')  str = ' [UploadOnce='; 
    b.setSelection(str + name + '] ');  
    return false;
  },

   NewUbbico : function(span) {
    if (!span) span='ubb_span';
    var el = $('#'+span);
    if (el.length == 0) return false;
   el.html( e.getUbbicoHTML() );
    },
getUbbicoHTML: function () {
        util.Load_css("https://static.easun.org/css/formatting-icons.css");
        var str ='';
        str = '&lt;span class="formatting-icons bold" title="粗体" data-ubb="b" &gt;&lt;/span&gt;';
        str += '&lt;span class="formatting-icons italic"  title="斜体" data-ubb="i" &gt;&lt;/span&gt;';
        str += '&lt;span class="formatting-icons underline"  title="下划线" data-ubb="u"&gt;&lt;/span&gt;';
        str += '&lt;span class="formatting-icons link"  title="插入链接" data-ubb="link" &gt;&lt;/span&gt;';
        str += '&lt;span class="formatting-icons email"  title="插入 Email 链接" data-ubb="email"  &gt;&lt;/span&gt;';
        str += '&lt;span class="formatting-icons quote"  title="引用"  data-ubb="quote"&gt;&lt;/span&gt;';
        str += '&lt;span class="formatting-icons decode"  title="HTML编码" data-ubb="decode"&gt;&lt;/span&gt;';
        return str;
    },
    NewEmot  :function (span) {
        if (!span) span='emot_span';
        var el = $('#'+span); 
         if (el.length == 0) return false; 
       el.html( e.getEmotHTML() );
    },
      getEmotHTML : function () {
       var str ='';
         var i=1;
         var name =1; 
         for ( i=1;i&lt;( config.em_no +1) ;i++) 
        {  
           name = (i&gt;=10) ?i :'0'+i ; 
           str += '&lt;img class="bt smilie"  src="'+esBConfig.static_url+'emot/em' +name +'.gif" data-emot="'+ name+'" data-group="em" /&gt;';
        }
        for ( i=1;i&lt;( config.ua_no +1); i++)
        {  
           name = (i&gt;=10) ?i :'0'+i ; 
           str += '&lt;img class="bt smilie"  src="'+esBConfig.static_url+'emot/ua' +name +'.gif" data-emot="'+ name+'" data-group="ua" /&gt;';
        }

        return str;
    },
    addquote : function(no)
    { 
      if (!canFormat) return;   

      if( typeof(no) != 'number')  no = $(this).attr("data-no");
      if ( typeof(no) != 'number' ) return;   
      var membername = $("#membername"+no).text(); 
      var postdate =  $("#postdate"+no).text();   
      var post = $("#post"+no).html(); 
      var regx = /^\&lt;blockquote\&gt;.*\&lt;\/blockquote\&gt;/;     
      post = post.replace(regx, "");  
      var $tmp = $('&lt;span&gt;&lt;/span&gt;');
      $tmp.html(post);
      $tmp.find("script").remove();

      post =$tmp.text();
      post = $.trim(post);
      var mysub=function(str,n){
    var r=/[^\x00-\xff]/g;
      if(str.replace(r,"aa").length&lt;=n){return str;}
      var m=Math.floor(n/2);
      for(var i=m;i&lt;str.length;i++){
if(str.substr(0,i).replace(r,"aa").length&gt;=n){ return str.substr(0,i)+"\n..."; }
  } 
return str;
}
/*    post =post.substring(0, 200);  */
      post =mysub(post, 200); 
      post = $.trim(post);
      var text = "[quote][b]下面引用由[u]" + membername + "[/u]在 [i]" + postdate + "[/i] 发表的内容：[/b]\n" + post + "\n[/quote]\n";  
      b.setSelection(text);
     }

}; 

   window.esBObj.editer =e;
   return e;
}(window, document);
</code></pre>
]]>
    </content>
</entry>

<entry>
    <title>[折腾]拆。。拆浴霸，换风机</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/yuba_fengji_YHS40.html" />
    <id>tag:easun.org,2017:/blog//2.330</id>

    <published>2017-07-27T08:25:06Z</published>
    <updated>2018-01-16T09:15:14Z</updated>

    <summary>转眼浴霸10年，近来毛病频出，先是面板坏了，JD购买更新之，接着一个热灯不良，JD购买换之 （10年才坏，也算不错了）。 没有想到这下连风扇都不转了。。。 只好拆下来。。。 因为在吊顶中，需要先拆部分吊顶，钻进去一看， 哇塞。。。。 吊顶内好恐怖的接线。。。 而且， 浴霸是用铁丝挂上去的。没有骨架，晕晕。。当时只顾得拆，没有照太多照片，只有这张，可以明显看出来凌乱。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="八卦杂谈" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="浴霸，风机" label="浴霸，风机" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="维修" label="维修" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>转眼浴霸10年，近来毛病频出，先是面板坏了，JD购买更新之，接着一个热灯不良，JD购买换之 （10年才坏，也算不错了）。
没有想到这下连风扇都不转了。。。 只好拆下来。。。</p>

<p>因为在吊顶中，需要先拆部分吊顶，钻进去一看， <strong>哇塞</strong>。。。。 <strong>吊顶内好恐怖的接线</strong>。。。</p>

<p>而且， 浴霸是用铁丝挂上去的。没有骨架，晕晕。。当时只顾得拆，没有照太多照片，只有这张，可以明显看出来凌乱。</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/1.jpg"><img alt="1.jpg" src="https://static.easun.org/upload/blog/cache/2017/07/1-thumb-600xauto-151.jpg" width="600" height="413" class="mt-image-none" style="" /></a></p>
]]>
        <![CDATA[<p>这个是拆下来的全图，全金属结构。明显电容鼓包。。。当时以为知道故障原因了。</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/2.jpg"><img alt="拆下来的全图" src="https://static.easun.org/upload/blog/cache/2017/07/2-thumb-600xauto-152.jpg" width="600" height="530" class="mt-image-none" style="" /></a></p>

<p>铭牌 </p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/3.jpg"><img alt="铭牌" src="https://static.easun.org/upload/blog/3.jpg"  class="mt-image-none" /></a></p>

<p>电容鼓包细节：
<a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/4.jpg"><img alt="电容鼓包细节" src="https://static.easun.org/upload/blog/yuba/4.jpg"  class="mt-image-none" /></a></p>

<p>拆下来的电容：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/4-0.jpg"><img alt="拆下来的电容" src="https://static.easun.org/upload/blog/yuba/4-0.jpg"  class="mt-image-none" /></a></p>

<p>网购电容，耗时2天，结果新电容后，<strong>发现依然不转</strong>，估计电机挂了。。。
于是2天后继续拆。。。。</p>

<p>电机参数：
<a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/4-1.jpg"><img alt="电机参数" src="https://static.easun.org/upload/blog/yuba/4-1.jpg"  class="mt-image-none" /></a></p>

<p>因为太脏，没有怎么全照片，照片大致如下:
风道（上面是照明灯，已经拆下）：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/5.jpg"><img alt="风道" src="https://static.easun.org/upload/blog/yuba/5.jpg"  class="mt-image-none" /></a></p>

<p>风道背面~~ 好脏</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/6.jpg"><img alt="风道背面" src="https://static.easun.org/upload/blog/yuba/6.jpg"  class="mt-image-none" /></a></p>

<p>去除风道后准备拆浴霸灯和风机的背面照片:</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/7.jpg"><img alt="去除风道后准备拆浴霸灯和风机的背面照片" src="https://static.easun.org/upload/blog/yuba/7.jpg"  class="mt-image-none" /></a></p>

<p>拆下来的扇叶（已经清洗过了，原来奇脏无比）</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/8.jpg"><img alt="拆下来的扇叶" src="https://static.easun.org/upload/blog/yuba/8.jpg"  class="mt-image-none" /></a></p>

<p>继续，正面图，拆掉风道、扇叶和所有的灯具：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/9.jpg"><img alt="正面图，拆掉风道、扇叶和所有的灯具" src="https://static.easun.org/upload/blog/yuba/9.jpg"  class="mt-image-none" /></a></p>

<p>拆下来的旧风机：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/92.jpg"><img alt="旧风机" src="https://static.easun.org/upload/blog/yuba/92.jpg"  class="mt-image-none" /></a></p>

<p>铭牌：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/93.jpg"><img alt="旧机铭牌" src="https://static.easun.org/upload/blog/yuba/93.jpg"  class="mt-image-none" /></a></p>

<p>风机不转，考虑似乎是*<em>温度保险</em>*烧了，想拆开看看，先拆掉螺丝~~~</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/94.jpg"><img alt="旧机拆掉螺钉" src="https://static.easun.org/upload/blog/yuba/94.jpg"  class="mt-image-none" /></a></p>

<p>But 。。。。。 <strong>怎么也打不开</strong>，上下两篇好像是焊在一起似的。。。。</p>

<p>不亏是品牌电机(乐丰)。
so 。。。。 放弃继续拆电机。。。</p>

<p>决定购买新风机，直接替换。</p>

<p>判断风机正反转，根据扇叶：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/8.jpg"><img alt="拆下来的扇叶" src="https://static.easun.org/upload/blog/yuba/8.jpg"  class="mt-image-none" /></a></p>

<p>我们知道应该是 "顺时针" 转动， 但是查铭牌，居然发现淘宝上和这个铭牌一模一样的原厂机都是 <strong>逆时针</strong> ？
晕死。。。</p>

<p>原厂风机价值88，算了，买不起。找个替代的把，找到这个， 话说，可以接线不同正反转？ 下单。。。
继续两天，到货：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/xxx.png"><img alt="下单" src="https://static.easun.org/upload/blog/yuba/xxx.png"  class="mt-image-none" /></a></p>

<p>下面是新风机，明显和旧的比较起来，质量有差距。。。。</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/95.jpg"><img alt="新风机" src="https://static.easun.org/upload/blog/yuba/95.jpg"  class="mt-image-none" /></a></p>

<p>新旧风机对比：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/96.jpg"><img alt="新旧风机对比" src="https://static.easun.org/upload/blog/yuba/96.jpg"  class="mt-image-none" /></a></p>

<p>新风机铭牌：</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/911--3.jpg"><img alt="新风机铭牌" src="https://static.easun.org/upload/blog/yuba/911--3.jpg"  class="mt-image-none" /></a></p>

<p>测试新机，注意接线</p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/97.jpg"><img alt="测试新机" src="https://static.easun.org/upload/blog/yuba/97.jpg"  class="mt-image-none" /></a></p>

<p>测试结果： 正常。</p>

<p>对比了一下， 新风机上下盖只有两个螺钉，另外两个没有螺钉
<a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/911--1.jpg"><img alt="新风机上下盖只有两个螺钉" src="https://static.easun.org/upload/blog/yuba/911--1.jpg"  class="mt-image-none" /></a></p>

<p><a data-lightbox="easun" href="https://static.easun.org/upload/blog/yuba/911--2.jpg"><img alt="新风机上下盖只有两个螺钉" src="https://static.easun.org/upload/blog/yuba/911--2.jpg"  class="mt-image-none" /></a></p>

<p>就这样， 新风机还算卖的比较好的滚珠铜机， 价值45元，而非滚珠的才30元。</p>

<p>========</p>

<p>到此， 维修结束，接下来是重新组装重新上吊顶。。。 任务准备放在周末。</p>

<p><strong>感概</strong>： <br />
   这次自己维修，亏了。。 因为同样的新机器在 JD 才 <strong>199</strong>.。还不如换一个新的。。。
而本次成本  10+2 （电容+运费） + 45 （电机） + 15 （上次换面板） + 暖灯 （39）  = 111 . 自己花的时间还没有计算在内。</p>
]]>
    </content>
</entry>

<entry>
    <title>Warning: Default SSL_verify_mode deprecated 的解决办法</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/warning_default_ssl_verify_mode_deprecated.html" />
    <id>tag:easun.org,2017:/blog//2.329</id>

    <published>2017-05-23T14:42:49Z</published>
    <updated>2017-07-28T07:14:19Z</updated>

    <summary>由于 Vultr VPS 默认是禁止程序通过 sendmail 发邮件的。另外 sendmail 发的邮件通常是被一些邮箱当作 spam 处理的。 所以, 我的 MT 是通过设定 stmp 服务器和用户名、密码认证登陆到 mail.qq.com 发送邮件。 简单配置如下： config # in mt-config.cgi EmailAddressMain UserName@QQ.com MailTransfer smtp SMTPServer smtp.qq.com SMTPUser UserName SMTPPassword MyPassword SMTPAuth ssl 这个配置可以正常工作。。。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="站务记录" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mail" label="mail" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="smtp" label="smtp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ssl" label="ssl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>由于 <a href="http://easun.org/url/vultr">Vultr VPS</a> 默认是禁止程序通过 <code>sendmail</code> 发邮件的。另外 <code>sendmail</code> 发的邮件通常是被一些邮箱当作 <code>spam</code> 处理的。  </p>

<p>所以, 我的 <code>MT</code> 是通过设定 <code>stmp</code> 服务器和用户名、密码认证登陆到 <code>mail.qq.com</code> 发送邮件。 简单配置如下：</p>

<pre><b class="name">config</b><code class="config">    # in mt-config.cgi
    EmailAddressMain UserName@QQ.com
    MailTransfer smtp
    SMTPServer smtp.qq.com
    SMTPUser UserName
    SMTPPassword MyPassword
    SMTPAuth ssl
</code></pre>

<p>这个配置可以正常工作。。。</p>
]]>
        <![CDATA[<p>但是，一段时间后查看日志，发现 <code>mt-starman.log</code>总在不停的增大中，下载下来，发现每次发邮件总会警告：</p>

<pre><b class="name">quote</b><code class="quote">    *******************************************************************
     Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
     is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
     together with SSL_ca_file|SSL_ca_path for verification.
     If you really don't want to verify the certificate and keep the
     connection open to Man-In-The-Middle attacks please set
     SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
    *******************************************************************
      at lib/MT/Mail.pm line 237.
</code></pre>

<p>呃，定位发现是<code>Net::SMTP::SSL</code> 模块问题。。。 这个模块太老了。。。。。</p>

<p>搜索了一圈，这个问题很普遍，而且解决办法都五花八门， 但是似乎都是不是很好的解决办法。。。 </p>

<p>因为我用的是 <code>MT</code> 的老版本，那么我查查 <code>MT6.x</code> 系列是如何解决的？   </p>

<p>查看 MT6.x 的 <code>Mail.pm</code> (地址： <a href="https://github.com/movabletype/movabletype/blob/master/lib/MT/Mail.pm">https://github.com/movabletype/movabletype/blob/master/lib/MT/Mail.pm</a>)</p>

<p>我倒~~ MT6.x 居然直接停用了 <code>Net::SMTP::SSL</code> 模块，改用了 <code>Net::SMTPS</code> 模块。  这个并不是我想要的结果。</p>

<p>继续搜索，终于定位到下面两个链接：</p>

<ol>
<li><p><a href="http://www.spinics.net/lists/git/msg298814.html">http://www.spinics.net/lists/git/msg298814.html</a></p></li>
<li><p><a href="http://foswiki.org/Support/Faq69#Error:_61Default_SSL_verify_mode_deprecated_61">http://foswiki.org/Support/Faq69#Error:_61Default_SSL_verify_mode_deprecated_61</a></p></li>
</ol>

<p>豁然大悟，理由如下：</p>

<blockquote>
  <p>Net::SMTP itself can do the necessary SSL and STARTTLS bits just fine
  since version 1.28, and Net::SMTP::SSL is now deprecated. Since 1.28
  isn't that old yet, keep the old code in place and use it when
  necessary. </p>
</blockquote>

<p>简单的说就是：</p>

<blockquote>
  <p>Net::SMTP::SSL 模块废弃了。 这个模块是 Net::SMTP 模块的扩展， 现在的 Net::SMTP 模块（版本大于1.28）自行即可处理 SSL 连接。。</p>
</blockquote>

<p>那么解决办法很简单了。。。</p>

<p>打开 <code>Mail.pm</code> ,定位 <code>Net::SMTP::SSL</code> ,直接改成  <code>Net::SMTP</code>，并保证其有参数 <code>SSL =&gt; 1</code> 即可。</p>

<p>代码片段如下：</p>

<pre><b class="name">perl</b><code class="perl">elsif ($ssl) {
### By EasunLee  Net::SMTP can do ssl well itself ,Net::SMTP::SSL is obsolete, use only when necessary,
$smtp = Net::SMTP-&gt;new(
  $host,
  Port=&gt; $port,
  Timeout =&gt; 60,
  Hello   =&gt; $localhost,
  SSL =&gt; 1,
  ( $MT::DebugMode ? ( Debug =&gt; 1 ) : () ),
  )
  or return $class-&gt;error(
      MT-&gt;translate(
     'Error connecting to SMTP server [_1]:[_2]',
    $host, $port
   )
  );
} 
</code></pre>

<p>详细修改请参考 <a href="https://github.com/easunlee/MT-copy/blob/master/lib/MT/Mail.pm">GitHub</a>。 <br />
保存，重启 <code>mt-starman</code> 。 测试发邮件，一切正常，也没有了警告。。</p>
]]>
    </content>
</entry>

<entry>
    <title>[MT Plugin]全新改写的 Markdown 解析插件</title>
    <link rel="alternate" type="text/html" href="https://easun.org/blog/archives/mt_plugin_markdown.html" />
    <id>tag:easun.org,2017:/blog//2.328</id>

    <published>2017-05-19T14:18:01Z</published>
    <updated>2017-05-19T14:47:28Z</updated>

    <summary>一直在用 Markdown 写Blog。 总觉得貌似解析效率有点不高。何况引入 代码高亮 后，处理代码显示是个问题。 检查了 MT 自带的 Markdown 解析插件 ( plugins/Markdown/Markdown.pl ) ， 原来是 John Gruber 2004 写的第一版。 My God ， so oooold。。。 John Gruber 这个原代码写的很经典， 但是究竟很老了。。...</summary>
    <author>
        <name>路杨</name>
        <uri>https://easun.org</uri>
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="markdown" label="Markdown" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mt" label="MT" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="Perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="https://easun.org/blog/">
        <![CDATA[<p>一直在用 <code>Markdown</code> 写Blog。 <br />
总觉得貌似解析效率有点不高。何况引入 <code>代码高亮</code> 后，处理代码显示是个问题。  </p>

<p>检查了 MT 自带的 <code>Markdown</code> 解析插件 ( <code>plugins/Markdown/Markdown.pl</code> ) ， 原来是 <a href="http://daringfireball.net/projects/markdown/">John Gruber</a> 2004 写的第一版。 </p>

<p>My God ， so oooold。。。</p>

<p><a href="http://daringfireball.net/projects/markdown/">John Gruber</a> 这个原代码写的很经典， 但是究竟很老了。。 </p>
]]>
        <![CDATA[<p>而且现在 Cpan 上有现成的模块 <code>Text::Markdown</code> 可以使用。 干脆改写吧。。。</p>

<p>另外，改写的插件还是丢到 <code>plugins/Easun</code> 目录吧，方便升级。 直接删除 <code>plugins/Markdown/</code> 目录， 在<code>plugins/Easun</code>下新建立 <code>Markdown_md.pl</code> 文件，全文如下：   </p>

<pre><b class="name">Perl</b><code class="Perl">    #
    # Markdown -- A text-to-HTML conversion tool for web writers
    #
    # Copyright (c) 2004 John Gruber
    # &lt;http://daringfireball.net/projects/markdown/&gt;
    # Modify 2017 By EasunLee&lt;https://easun.org&gt;
    # &lt;https://github.com/easunlee/MT-copy/blob/master/plugins/Easun/Markdown_md.pl&gt;
    #

    package MT::Plugin::Easun::Markdown;
    use strict;
    use warnings;

    use vars qw($MYNAME $VERSION $DEBUG $Useproxy );
    $VERSION = "1.03e";


    #### Movable Type plug-in interface #####################################
    use MT::Plugin;

    my $plugin = new MT::Plugin(
    {   name=&gt; "Markdown_Modify",
    author_name =&gt; "John Gruber",
    author_link =&gt; "http://daringfireball.net/",
    plugin_link =&gt; "http://daringfireball.net/projects/markdown/",
    version =&gt; $VERSION,
    description =&gt;
    '&lt;MT_TRANS phrase="A plain-text-to-HTML formatting plugin."&gt;',
    doc_link =&gt; 'http://daringfireball.net/projects/markdown/',
    registry =&gt; {
    tags =&gt; {
    block =&gt; {
    MarkdownOptions =&gt; sub {
    my $ctx = shift;
    my $args= shift;
    my $builder = $ctx-&gt;stash('builder');
    my $tokens  = $ctx-&gt;stash('tokens');

    if ( defined( $args-&gt;{'output'} ) ) {
    $ctx-&gt;stash( 'markdown_output',
    lc $args-&gt;{'output'} );
    }

    defined( my $str = $builder-&gt;build( $ctx, $tokens ) )
    or return $ctx-&gt;error( $builder-&gt;errstr );
    $str;# return value
    },
    },
    },
    text_filters =&gt; {
    'markdown' =&gt; {
    label =&gt; 'Markdown_Modify',
    docs  =&gt; 'http://daringfireball.net/projects/markdown/',
    code  =&gt; sub {
    my $text = shift;
    my $ctx  = shift;
    my $raw  = 0;
    if ( defined $ctx ) {
    my $output = $ctx-&gt;stash('markdown_output');
    if ( defined $output &amp;&amp; $output =~ m/^html/i ) {
    #$g_empty_element_suffix = "&gt;";
    $ctx-&gt;stash( 'markdown_output', '' );
    }
    elsif ( defined $output &amp;&amp; $output eq 'raw' ) {
    $raw = 1;
    $ctx-&gt;stash( 'markdown_output', '' );
    }
    else {
    $raw= 0;
      #  $g_empty_element_suffix = " /&gt;";
    }
    }
    $text = $raw ? $text : &amp;_easunCode( $text );
    $text;
    },
    },


    },
    },
    }
    );
    MT-&gt;add_plugin($plugin);

    sub _easunCode {
    my $text = shift;
      &amp;_DoCodeBlocks_github(\$text);

    require Text::Markdown;
    my $m = Text::Markdown-&gt;new;
    $text = $m-&gt;markdown($text);


    $text =~ s{&lt;pre&gt;&lt;code&gt;```(.*?)\n}{&lt;pre&gt;&lt;b class=\"name\"&gt;$1&lt;\/b&gt;&lt;code class=\"language-$1\"&gt;}g; 
    $text =~ s/&lt;pre&gt;&lt;code&gt;/&lt;pre&gt;&lt;b class=\"name\"&gt;code&lt;\/b&gt;&lt;code class=\"code\"&gt;/g;
    return $text;
    }

    #
    #  GitHub style Code
    #
    sub _DoCodeBlocks_github {

    my $text = shift; 
    $$text =~ s{\r\n}{\n}g;# DOS to Unix
    $$text =~ s{\r}{\n}g;  # Mac to Unix

     #$$text =~ s{(\n\n|\A)(```\w+)\n}{$1\t$2\n}g;

    $$text =~ s{
       (?:\n\n|\A)
       ```(\w+)\n
    (   # $2 = the code block -- one or more lines, starting with a space/tab
    .*?
      )
       \n```
       (?:\n|\Z)
       }{
    my $codeType = $1;
    my $codeblock = $2;
    my $result; # return value

    $codeblock =~ s/\A\n+//; # trim leading newlines
    $codeblock =~ s/\s+\z//; # trim trailing whitespace  
    $codeblock =~ s/\n/\n\t/g;   
    $result = "\n\n\t```" .$codeType ."\n\t" . $codeblock . "\n\n";
    $result;
    }segmx;

    }

    1;
</code></pre>

<p>更详细的插件信息可以见 <a href="https://github.com/easunlee">GitHub</a> 地址： <a href="https://github.com/easunlee/MT-copy/blob/master/plugins/Easun/Markdown_md.pl">https://github.com/easunlee/MT-copy/blob/master/plugins/Easun/Markdown_md.pl</a> </p>

<p>当然，不要忘记安装 <code>Text::Markdown</code> 模块。</p>

<pre><b class="name">Bash</b><code class="Bash">cpanm Text::Markdown
</code></pre>

<p>保存，重启 mt-starman， 到此新的 Markdown 解析器替换完成。</p>
]]>
    </content>
</entry>

</feed>
