You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1233 lines
672 KiB

<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>精益方法论</title>
<link href="/tech/work-methodology.html"/>
<url>/tech/work-methodology.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>持续学习; 持续思考; 持续实践; 让一切自然而然发生。</p></span><span class=".en"><p>Keep learning; Keep thinking; Keep practice; Let it happens spontaneously.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}else{tips.info({title: 'Info',position: 'topRight',message: '这是我的一点小感悟啦,希望接下来我能够坚持践行这一理念,让我的事业更进一步!'});}});</script><span class=".zh"><h2 id="序"><a href="#序" class="headerlink" title="序"></a></h2><p>自新冠疫情发生以来,我的生活受到了极大的影响。从最开始的留学生活的草草结束,到后来眼睛的疾病,再到美国签证被长时间行政审查而不得不延期研究生入学。经历了接近两年的各种磨难,我慢慢的成长着。从最开始的患有急性焦虑症并因此体验了英国NHS救护车,到现在的失学失业。在这个不确定性纷杂的世界中,我似乎逐渐摸索出了与之相处的方法。</p><p>为了摆脱内心的焦灼,最初,我曾尝试禅修。但由于种种原因,似乎效果并不佳。到后来我偶然发现,观看古生物发展史的纪录片,似乎对缓解我的心理焦虑有着一定的影响,但并不显著。然而,这个契机让我开始逐渐认识的我焦虑产生的根源。那大概便是对未来不确定性的困扰以及对我应对不确定性的策略的不自信。</p><p>经过长期的探索,我发现以下几点能够显著改善我的心里状况:</p><ul><li>睡觉,自然醒</li><li>重视三餐,吃自己喜欢的食物</li><li>每天至少去大自然(公园,树林)带半小时</li><li>10分钟以上的中度运动</li><li>充实地生活</li></ul><p>本文中,将重点阐述最后一条的具体内容和实施方法。</p><h2 id="详述"><a href="#详述" class="headerlink" title="详述"></a>详述</h2><p><strong>持续学习; 持续思考; 持续实践; 让一切自然而然发生。</strong> </p><p>这句话的意思是,不要让自己闲下来。当自己无事可做的时候,找自己当前最想做的方向或事情,比如英语或编程,然后做当前内心最倾向的流程,比如探索学习,思考整理,或者实践。让直觉来引导当前最适合做的具体事情。但在大的方向上,比如当前的工作重心应该是学英语还是练习算法,则要充分的研究规划好。</p></span><span class=".en"><h2 id="Preface"><a href="#Preface" class="headerlink" title="Preface"></a>Preface</h2><p>Since the outbreak of the new crown epidemic, my life has been greatly affected. From the beginning of the study abroad life hastily ended, to later eye diseases, and then to the United States visa was subject to a long administrative review and had to postpone graduate school enrollment. After nearly two years of various hardships, I slowly grew up. From the beginning, I suffered from acute anxiety disorder and experienced the British NHS ambulance, until now I am out of school and unemployed. In this uncertain world, I seem to have gradually figured out a way to get along with it.</p><p>In order to get rid of my inner anxiety, I tried meditation at first. But due to various reasons, it seems that the effect is not good. Later, I accidentally discovered that watching a documentary on the history of paleontology seemed to have a certain effect on alleviating my psychological anxiety, but it was not significant. However, this opportunity allowed me to gradually understand the source of my anxiety. That is probably the trouble with the uncertainty of the future and the lack of confidence in my strategy to deal with the uncertainty.</p><p>After long
<categories>
<category> tech </category>
</categories>
<tags>
<tag> life </tag>
<tag> work </tag>
<tag> methdology </tag>
</tags>
</entry>
<entry>
<title></title>
<link href="/life/happiness.html"/>
<url>/life/happiness.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>顿悟 关于生活</p></span><span class=".en"><p>Idea About life</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>原来,没有人生来就留恋人世。所以,尽情去做一些让自己真正感到快乐幸福的事情吧!</p></span><span class=".en"><p>It turns out that no one is born with nostalgia for the world. So, you can only do something that makes you really happy and happy!</p></span>]]></content>
<categories>
<category> life </category>
</categories>
<tags>
<tag> idea </tag>
</tags>
</entry>
<entry>
<title>未来生活定位</title>
<link href="/life/life-orientation.html"/>
<url>/life/life-orientation.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>经过一年多的迷茫,我逐渐探明我的迷茫原因所在,进而结合社会大环境发展前景,制定出未来数年我的生活发展定位。</p></span><span class=".en"><p>Abstract in english</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="目前情况分析"><a href="#目前情况分析" class="headerlink" title="目前情况分析"></a>目前情况分析</h2><h3 id="我"><a href="#我" class="headerlink" title="我"></a>我</h3><p>经过十年多的努力耕耘,截止21年1月,我已经掌握了多种知识及技能,已经基本具备维持温饱的能力。至此,“努力学习养活自己”这一曾经的定位已不再是当前的主要矛盾。与此同时,“对美好生活的向往”逐渐浮现,成为当前的主要行为动机。然而,不幸的是,由于我过去的发展方式是“项目快感驱动”型,缺乏有效的监督,于是对身体造成了巨大的损伤。</p><h3 id="社会大环境"><a href="#社会大环境" class="headerlink" title="社会大环境"></a>社会大环境</h3><p>新冠后时代,世界进入“比烂时代”,预计会存在一个3年以上的长期消杠杆时期。考虑到物联网,人工智能领域当前的瓶颈问题,短期内恐难以有备受期待的科技革命发生。因此,消杠杆时期可能会更加漫长,达到5年甚至7年,直至新的一轮产业转型,世界大战,或者科技革命方能结束。在此期间,包括诸大互联网巨头在内,社会中的上升机会将大幅度减少,内卷情况将进一步恶化。但好消息是,消杠杆时期度过后,世界会进入新的高速发展时期,这时将会拥有诸多上升及创业机会(尤其是科技革命直接受益产业),重现“风口猪也上天”现象。</p><h2 id="发展方向"><a href="#发展方向" class="headerlink" title="发展方向"></a>发展方向</h2><p>所谓“厚积薄发”。如果说,积杠杆时期是爆发期,那么消杠杆时期则是漫长的积累期。在积累期,最佳的生存策略是闷声积累技能经验,为爆发期做准备。在此阶段,资产普遍大幅贬值,保值手段甚微。此时,将资产投资到提升自己实力上,似乎是最佳的保值策略。总言之,消杠杆时期的最佳策略是,蛰伏,闷声提升自己。万万不可迫于环境压力,打破自己的节奏。想一下,如果你是上司,你是希望你收下最听话天天加班的人升值,还是希望只做分内事但很有能力的人升职走掉。</p><p>“美好生活”是一个抽象的概念,这一现象实现的基础,首先便是要具有良好的身体状况。为此,未来一段时间我的首要任务,是尽可能恢复身体被破坏的部分,比如眼睛和腰。</p></span><span class=".en"></span>]]></content>
<categories>
<category> life </category>
</categories>
<tags>
<tag> life </tag>
<tag> analysis </tag>
<tag> orientation </tag>
</tags>
</entry>
<entry>
<title>acg.watch-我的私人视频网站</title>
<link href="/tech/acg-watch.html"/>
<url>/tech/acg-watch.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>此文将讨论acg.watch网站的定位,运营模式,以及潜在应用等。</p></span><span class=".en"><p>This article will discuss the positioning, operating mode, and potential applications of the acg.watch website.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="缘由"><a href="#缘由" class="headerlink" title="缘由"></a>缘由</h2><p>自从18年第一次尝试建站以来,追求流媒体播放服务一直是我所追求的目标。</p><h2 id="历史"><a href="#历史" class="headerlink" title="历史"></a>历史</h2><p>从2018年三月,我第一次通过腾讯云Win Server 2012实现了对摇曳露营第3集的发布,从而使其能够在网页上访问。到2018年9月,基于video.js,我第一次搭建了一个视频网站,使用华为云对象存储以及mysql数据库进行集中管理,并将其发布在video.yimian.xyz。2018年11月,配合树莓派3B以及一个红外摄像头,我通过推流实现了对宿舍的24小时监控。2019年2月,我购买了acg.watch这个域名,并将视频站转移至此。此后,我站视频被爬多次,由于华为云存储巨额的流量费用,我觉定暂时停止公开提供服务。2019年11月,在英国,我重构了视频站,不再使用华为云存储这个烧钱的服务,转而寻求onedrive存储方案。此外,新的视频站不再拥有后端,而是使用file-cache机制通过分析onedrive的视频目录自动生成数据集。2020年8月,随着ushio用户系统竣工,视频站开始支持为用户提供个性化服务,包括跨设备播放记录同步等。2021年1月,确定acg.watch的发展方向为<strong>多功能在线播放器</strong>,此外网站还将提供<strong>番剧搜寻功能</strong>。同时,考虑到版权问题,我之前私藏的所有视频全部转为私有,只有认证过的朋友们才有权限观看。</p><h2 id="网站地址"><a href="#网站地址" class="headerlink" title="网站地址"></a>网站地址</h2><ul><li><a href="http://video.yimian.xyz/" target="_blank" rel="noopener">http://video.yimian.xyz</a></li><li><a href="https://acg.watch/" target="_blank" rel="noopener">https://acg.watch</a></li></ul><h2 id="定位"><a href="#定位" class="headerlink" title="定位"></a>定位</h2><p>Acg.Watch视频站拥有三个发展定位:</p><ul><li>番剧资源辅助搜索</li><li>多功能视频播放器</li><li>IoTcat的私藏视频站</li></ul><h2 id="发展状态"><a href="#发展状态" class="headerlink" title="发展状态"></a>发展状态</h2><p>网站将持续开发,欢迎大家常来踩踩呀<em>(:з」∠)</em></p></span><span class=".en"><h2 id="Reason"><a href="#Reason" class="headerlink" title="Reason"></a>Reason</h2><p>Since the first attempt to build a website in 18 years, the pursuit of streaming media playback services has always been my goal.</p><h2 id="History"><a href="#History" class="headerlink" title="History"></a>History</h2><p>From March 2018, I realized the release of the third episode of Sway Camp through Tencent Cloud Win Server 2012 for the first time, so that it can be accessed on the web. By September 2018, based on video.js, I built a video website for the first time, used Huawei Cloud object storage and mysql database for centralized management, and published it on video.yimian.xyz. In November 2018, with the Raspberry Pi 3B and an infrared camera, I realized 24-hour monitoring of the dormitory through push streaming. In February 2019, I purchased the domain name acg.watch and transferred the video site to it. Since then, my site’s video has been crawled many times. Due to the huge traffic cost of Huawei Clo
<categories>
<category> tech </category>
</categories>
<tags>
<tag> website </tag>
<tag> video </tag>
</tags>
</entry>
<entry>
<title>Ushio-V2ray使用方法</title>
<link href="/tech/v2ray-instruction.html"/>
<url>/tech/v2ray-instruction.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>Ushio V2ray 使用方法。</p></span><span class=".en"><p>Ushio V2ray Instruction..</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><blockquote><p>本服务仅向以学术研究为目的学生提供!<br>本服务非盈利,但可能会根据您的使用情况收取少许费用,来平摊服务器的费用!</p></blockquote><h2 id="流程总览"><a href="#流程总览" class="headerlink" title="流程总览"></a>流程总览</h2><ul><li>用户注册</li><li>v2ray软件安装</li></ul><h2 id="用户注册"><a href="#用户注册" class="headerlink" title="用户注册"></a>用户注册</h2><p>在开始安装软件前,请先前往<a href="https://v2ray.yimian.xyz/" target="_blank" rel="noopener">https://v2ray.yimian.xyz/</a>使用手机号进行账户注册。</p><blockquote><p>如确有使用需求,请在注册后将您的学生身份证明和注册手机号发送至<a href="mailto:i@iotcat.me">i@iotcat.me</a>,在我检查过您的需求合法性后将赋予您使用权限!</p></blockquote><h2 id="v2ray软件安装"><a href="#v2ray软件安装" class="headerlink" title="v2ray软件安装"></a>v2ray软件安装</h2><p>本文包含<a href="#Win10">Win10</a><a href="#Android">安卓</a><a href="#Ios">IOS/Ipad OS</a>的软件安装方法,请根据相应流程进行安装。</p><blockquote><p>如果您有任何疑惑,请在下方评论中提出!</p></blockquote><h3 id="Win10"><a href="#Win10" class="headerlink" title="Win10"></a>Win10</h3><p><strong>下载</strong></p><ul><li>使用浏览器访问<a href="https://onedrive.yimian.xyz/packages/programs/all/v2ray/Windows_v2rayN-Core.zip" target="_blank" rel="noopener">http://eee.dog/8bcc14</a>下载名为<code>Windows_v2rayN-Core.zip</code>的压缩文件。</li></ul><p><strong>解压</strong></p><ul><li><p>将下载的压缩文件解压到C盘根目录,如下图</p><blockquote><p>如果提示需要<strong>管理员权限</strong>,请一律选<strong></strong></p></blockquote><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_2eb9b63_1565x429_8_null_normal.jpeg" alt="解压文件图"></p></li></ul><p><strong>配置</strong></p><ul><li><p>请打开C盘中刚才解压的文件夹,找到名为<code>V2ray</code><code>V2rayN.exe</code>的程序,双击打开。如下图。<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_430e95a_1557x460_8_null_normal.jpeg" alt="V2rayN图"></p></li><li><p>找到右下角任务栏,找到下图中的图标,双击打开<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_3a35a1f_928x246_8_null_normal.jpeg" alt="V2rayN图标"></p></li><li><p>选中窗口上方的<strong>订阅</strong>,点击<strong>订阅设置</strong>如下图<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_4574629_1421x180_8_null_normal.jpeg" alt="订阅设置"></p></li><li><p>打开<a href="https://v2ray.yimian.xyz/" target="_blank" rel="noopener">https://v2ray.yimian.xyz</a>并登录,待出现二维码后点击<strong>Copy</strong>。如下图<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_6d86c79_1254x711_8_null_normal.jpeg" alt="获取订阅地址"></p></li><li><p>回到订阅设置的窗口,将刚才复制的内容粘贴到<strong>地址URL框</strong>中,勾选<strong>启用</strong>,点击<strong>确定</strong>。如下图<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_50dc56e_867x752_8_null_normal.jpeg" alt="设置订阅地址"></p></li><li><p>点击主窗口上方的<strong>参数设置</strong>如下图</p></li></ul><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_6a56090_1313x195_8_null_normal.jpeg" alt="参数设置"></p><ul><li>选择<stron
<categories>
<category> tech </category>
</categories>
<tags>
<tag> v2ray </tag>
<tag> instruction </tag>
</tags>
</entry>
<entry>
<title>wIoT发展展望</title>
<link href="/tech/wiot2.html"/>
<url>/tech/wiot2.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>本文将讨论wiot项目下一步的发展目标与实施方法。</p></span><span class=".en"><p>This article will discuss the next development goals and implementation methods of the Wiot project.</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'en'){ tips.warning({ title: 'Caution', position: 'topRight', message: 'This page was translated by Machine!!', buttons: [['<button>Show Chinese Page</button>', function (instance, toast) { page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]] }); } });</script><span class=".zh"><h3 id="wIoT"><a href="#wIoT" class="headerlink" title="wIoT"></a>wIoT</h3><p>wiot,一个基于NodeJS的分布式物联网操作系统。</p><h1 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h1><h2 id="立项初衷"><a href="#立项初衷" class="headerlink" title="立项初衷"></a>立项初衷</h2><p>本项目旨在帮助不熟悉固件编程的网络开发者实现出自己的物联网应用。</p><p>在开发传统的物联网程序时,我们需要一次又一次的编写,烧录,调试每一个开发板,以某种方式将其相连结,以提供某种服务。这样的方式非常繁琐,开发成本和门槛都比较高。此外,古老的C和C++语言缺少成熟的依赖管理工具,以至于我们在编写开发板时难以像开发python或nodeJS程序一样轻松便捷。</p><p>本项目试图提供一种方法,将烧录,调试开发板的流程自动化,并将逻辑编写的步骤移动到远程计算机的NodeJS界面上。通过此方式,我们进而得以将分布式物联网节点的功能进行集中化管理。此外,借助NodeJS成熟的依赖管理器npm,使得物联网应用的开发更加便捷高效。</p><p>至此,下到每一个物联网节点,上到各种类型的数据库、用户终端,都可以在同一个nodeJS界面上配置、操作。开发者将能够专注于物联网逻辑的开发,实现出更加丰富多彩的物联网应用。</p><h1 id="第一轮开发"><a href="#第一轮开发" class="headerlink" title="第一轮开发"></a>第一轮开发</h1><blockquote><p>第一轮开发完成于2019.5,详见<a href="https://www.eee.dog/tech/wiot.html">这篇博客</a></p></blockquote><p> 实现了对D1 MINI开发板对nodeJS的pin口映射,并支持诸如ota等一系列功能。</p><h1 id="第二轮开发"><a href="#第二轮开发" class="headerlink" title="第二轮开发"></a>第二轮开发</h1><blockquote><p>待进行,计划当做FYP项目</p></blockquote><hr><h2 id="架构想法"><a href="#架构想法" class="headerlink" title="架构想法"></a>架构想法</h2><p>在设计物联网系统时,我一直有一个愿景。历史必然性。打造手足。</p><p>wiot的目标是提供一套<br>系统架构在分类上分为静态的环境和动态的用户。实现上分为模块,服务和程序。</p><h3 id="模块"><a href="#模块" class="headerlink" title="模块"></a>模块</h3><p>类似于计算机操作系统中的驱动,模块负责将物理层面上的各种功能,比如led照明,抽象为操作系统层面的标准接口。</p><h3 id="服务"><a href="#服务" class="headerlink" title="服务"></a>服务</h3><p>服务是运行在边缘的docker中的守护进程。开发者通过调用模块,实现编写服务,实现各种各样的标准功能。</p><h3 id="程序"><a href="#程序" class="headerlink" title="程序"></a>程序</h3><p>程序是由用户定义的一套自定义逻辑,用于打造自定义场景。结合地理围栏公共服务LIS,调用环境服务提供的标准接口。</p><hr><h2 id="支持的开发版"><a href="#支持的开发版" class="headerlink" title="支持的开发版"></a>支持的开发版</h2><ul><li><a href="https://www.nodemcu.c
<categories>
<category> tech </category>
</categories>
<tags>
<tag> iot </tag>
<tag> nodeJS </tag>
<tag> WiFi </tag>
</tags>
</entry>
<entry>
<title>GRE备考核心矛盾分析</title>
<link href="/life/gre.html"/>
<url>/life/gre.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>我的GRE备考从8.21正式开始,8.28首考(成绩未提交),预计于9月底完成,目标155+170W3.5,总过程历时一个月半。本文阐述了在我的GRE备考过程中,提炼出的矛盾与方法论的汇总。</p></span><span class=".en"><p>My GRE preparation started from 8.21, and the first test was 8.28 (scores not submitted). It is expected to be completed by the end of September. The goal is 155+170W3.5. The total process lasts one and a half months. This article explains the contradictions and methodologies that were extracted during my GRE preparation process.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="备考定位"><a href="#备考定位" class="headerlink" title="备考定位"></a>备考定位</h2><p>我备考GRE的主要目的是,借助GRE的备考过程,有效提升英语词汇量与论文阅读水平(速度)。于此同时,此次备考过程也将成为Tomato Proj的有效试验,为今后实现有序和谐的生活节奏提供经验参考。此外,申请一些美国学校则也需要提供GRE成绩。</p><h2 id="备考矛盾分析"><a href="#备考矛盾分析" class="headerlink" title="备考矛盾分析"></a>备考矛盾分析</h2><h3 id="时间不足"><a href="#时间不足" class="headerlink" title="时间不足"></a>时间不足</h3><p>由于暑假投入大量时间,准备申研材料,学习积累专业知识,准备FYP,我只留下了1个月左右的时间准备GRE。因此,时间不足的问题需要由方法论的精进来弥补。</p><h2 id="数学矛盾分析"><a href="#数学矛盾分析" class="headerlink" title="数学矛盾分析"></a>数学矛盾分析</h2><h3 id="跳过机制"><a href="#跳过机制" class="headerlink" title="跳过机制"></a>跳过机制</h3><p>GRE数学的关键对于我们经理过理科高考的人来说,通过一定量的练习回顾,将期望调节到170左右,是比较轻松的。但是这并不意味着就可以对GRE数学掉以轻心。在备考GRE数学时,除了提高期望外,更加重要的是如何缩小方差。考虑到GRE数学在设计上时间较为紧张,只有35分钟,而且有可能会遇到一些很难的题,或者看不懂的题,这时就要果断跳过,及时止损。因此,在数学的备考过程中,需要<strong>形成一套判断是否跳过的判断机制,且判断耗时越少越好</strong></p><h3 id="题型解析机制"><a href="#题型解析机制" class="headerlink" title="题型解析机制"></a>题型解析机制</h3><p>在数学的备考过程中,除了减小方差,也要有效提高期望。与高考不同的是,GRE数学的语言是英语,且还有一系列的逻辑陷阱。因此,要提高GRE数学的期望,需要对以下三点进行”程序化”处理,提炼出相应方法论。</p><ul><li>数学常用英语</li><li>各种题型解题方法套路</li><li>选择方法的方法</li></ul><h3 id="查错机制"><a href="#查错机制" class="headerlink" title="查错机制"></a>查错机制</h3><p>尽管GRE数学的考试时间是否有限,但并不排除有时间会剩下的可能性。因此,可以注意锻炼一套有利于利用剩余时间差错的机制。比如,合理规划使用演草纸等。</p><h2 id="阅读矛盾分析"><a href="#阅读矛盾分析" class="headerlink" title="阅读矛盾分析"></a>阅读矛盾分析</h2><h3 id="一遍读懂"><a href="#一遍读懂" class="headerlink" title="一遍读懂"></a>一遍读懂</h3><p>通过这几天的训练,我发现了一个现象,及如果最开始看文章没有看懂,那么后面做题基本靠蒙。因此,GRE阅读一定要先将文章看懂<EFBFBD><EFBFBD>
<categories>
<category> life </category>
</categories>
<tags>
<tag> gre </tag>
</tags>
</entry>
<entry>
<title>CS, ECE硕士项目调研</title>
<link href="/life/cs-ece-master-programs.html"/>
<url>/life/cs-ece-master-programs.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>为了准备2021硕士申请,我对一些喜欢的项目做了一些调查,并汇总在这里。</p></span><span class=".en"><p>To prepare for my master’s application in 2021, I did some research on some of my favorite projects and summarized them here.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><blockquote><p>排名来源:<a href="https://www.topuniversities.com/university-rankings/world-university-rankings/2020" target="_blank" rel="noopener">QS2020</a>, <a href="https://www.usnews.com/education/best-global-universities/rankings?page=1" target="_blank" rel="noopener">USNews2020</a>, <a href="http://www.shanghairanking.com/ARWU2019.html" target="_blank" rel="noopener">上海交大2019</a>,<a href="http://csrankings.org/#/index?all&world" target="_blank" rel="noopener">csrank.global.2010-2020</a><br>四个排名代表四种视角(QS-&gt;英国,USNews-&gt;美国,上海交大-&gt;中国,csrank-&gt;cs专业贡献)</p></blockquote><blockquote><p>以下信息部分摘自互联网,可能有<strong>错误</strong>!!</p></blockquote><h1 id="英国-选2-3所"><a href="#英国-选2-3所" class="headerlink" title="英国 (选2-3所)"></a><strong>英国 (选2-3所)</strong></h1><h2 id="帝国理工"><a href="#帝国理工" class="headerlink" title="帝国理工"></a><strong>帝国理工</strong></h2><blockquote><p><code>QS</code>: 9<br><code>USNews</code>: 20<br><code>上海交大</code>: 23<br><code>csrank</code>: 73</p></blockquote><p><strong>申请模式</strong>: </p><p>两个志愿,录取时可以看到你的第二志愿。一年只能提交一次申请。</p><h3 id="MSc-Computing-Science"><a href="#MSc-Computing-Science" class="headerlink" title="MSc Computing Science"></a><a href="https://www.imperial.ac.uk/study/pg/computing/computing-science/" target="_blank" rel="noopener">MSc Computing Science</a></h3><ul><li>学费<code>£33,250</code></li><li>时长一年</li></ul><p> <strong>条件</strong></p><ul><li>任何专业一等学位</li><li>雅思6.5小分6/托福92小分20</li></ul><p> <strong>案例</strong></p><ul><li>均分85, con 85 (校友利)</li><li>gre330 (优留)</li></ul><h3 id="MSc-Applied-Machine-Learning"><a href="#MSc-Applied-Machine-Learning" class="headerlink" title="MSc Applied Machine Learning"></a><a href="https://www.imperial.ac.uk/study/pg/electrical-engineering/applied-machine-learning/" target="_blank" rel="noopener">MSc Applied Machine Learning</a></h3><ul><li>学费<code>£32,500</code></li><li>时长一年</li></ul><p> <strong>条件</strong></p><ul><li>EEE专业一等学位</li><li>雅思6.5小分6/托福92小分20</li></ul><h2 id="UCL"><a href="#UCL" class="headerlink" title="UCL"></a><strong>UCL</strong></h2><blockquote><p><code>QS</code>: 8<br><code>USNews</code>: 21<br><code>上海交大</code>: 15<br><code>csrank</code>: 50</p></blockquote><p><strong>申请模式</strong>: </p><p>可以申请多次。申请由授课老师处理,不同院系不互通。</p><h3 id="MSc-Integrated-Machine-Learning-Systems"><a href="#MSc-Integrated-Machine-Learning-Systems" class="headerlink" title="MSc Integrated Machine Learning Systems"></a><a href="https://www.ucl.ac.uk/prospective-students/graduate/taught-degrees/integrated-machine-learning-systems-msc" target="_blank" rel="noopener">MSc Integrated Machine Learning Systems</a></h3><ul><li>学费<code>£28,530</code></li><li>时长一年</li></ul><p> <strong>条件</strong></p><ul><li>EE/CS专业二等一学位</li><li>雅思6.5小分6/托福92小分读写24-30听说20-30</li></ul><p> <strong>案例</strong></p><ul><li>88均分 (校友利)</li><li>85通信(优留)</li></ul><h3 id="MSc-Computer-Scien
<categories>
<category> life </category>
</categories>
<tags>
<tag> master </tag>
<tag> investigation </tag>
</tags>
</entry>
<entry>
<title>Hello Hexo</title>
<link href="/tech/hello-hexo.html"/>
<url>/tech/hello-hexo.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>将blog从Typecho迁移到了Hexo。</p></span><span class=".en"><p>Migrated blog from Typecho to Hexo.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"></span><span class=".en"></span>]]></content>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> hexo </tag>
</tags>
</entry>
<entry>
<title>认知派生论</title>
<link href="/thoughts/cognitive-derived-theory.html"/>
<url>/thoughts/cognitive-derived-theory.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>拜读了毛主席的实践论和矛盾论,第一次系统地接触了辩证唯物论这一方法论,深感其强大与自然。综合我自己先前的所经所悟,提炼出认知派生这一观点。</p></span><span class=".en"><p>After reading Chairman Mao’s theory of practice and contradiction, it was the first time to systematically come into contact with the methodology of dialectical materialism, and I deeply felt its power and nature. Combining my own previous experience and understanding, I refined the view of cognitive derivation.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="序"><a href="#序" class="headerlink" title="序"></a></h2><p>从巴甫洛夫的狗铃实验[1],到上世纪50年代费斯汀格的认知失调理论[2],再到1971年津巴多教授主导的斯坦福监狱实验[3],这一系列打破预期的心理学生理学实验,一步一步揭示出,人们心理的作用形式,似乎并非大多数人所认为的那样。实际上,这看似重大的心理学发现,其实早在两个世纪前,便已被马克思,恩格斯等人从社会学角度提出,并完善成为理论。后经列宁,斯大林等人通过实践进行完善。传入国内后,被毛泽东所集大成,结合了中国传统文化的底蕴,发展成为唯物辩证法的毛泽东思想。这一论理的形成,源自于这些人对自己所观察到的社会现象以及自己基于论理所实践的社会运动的归纳总结。而这一论理,又指导了中国共产党建国,扎实地完成国内资本原始积累地奇迹。</p><p>辩证唯物论是一套自洽的方法论,它能够有效地指导我们生活实践,从实践中总结论理,再将论理运用于实践的过程。而这一循环的高效运转,正是人类进化出认知的终极意义。</p><h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><p>方法论是一种十分有效而重要的工具,它为人们提供了一套范式(习惯),帮助人们更有效地践行“社会实践-&gt;认识-&gt;论理-&gt;社会实践”这一模式。</p><h2 id="参考文献"><a href="#参考文献" class="headerlink" title="参考文献"></a>参考文献</h2><p>[1] <a href="https://zh.wikipedia.org/wiki/%E5%B7%B4%E7%94%AB%E6%B4%9B%E5%A4%AB" target="_blank" rel="noopener">巴甫洛夫 - 维基百科</a><br>[2] <a href="https://zh.wikipedia.org/zh/%E8%AA%8D%E7%9F%A5%E5%A4%B1%E8%AA%BF" target="_blank" rel="noopener">認知失調 - 维基百科</a><br>[3] <a href="https://zh.wikipedia.org/zh-hans/%E6%96%AF%E5%9D%A6%E7%A6%8F%E7%9B%91%E7%8B%B1%E5%AE%9E%E9%AA%8C" target="_blank" rel="noopener">斯坦福监狱实验 - 维基百科</a> </p></span><span class=".en"><h2 id="Preface"><a href="#Preface" class="headerlink" title="Preface"></a>Preface</h2><p>From Pavlov’s dog bell experiment[1] to Festinger’s cognitive dissonance theory in the 1950s[2], to the Stanford prison experiment led by Professor Zimbardo in 1971[3], this A series of psychology students’ physical experiments that broke expectations reveals step by step that the role of people’s psychology does not seem to be what most people think. In fact, this seemingly important psychological discovery was actually put forward by Marx, Engels and others from a sociological point of view two centuries ago and perfected it into a theory. Later, Lenin, Stalin and others improved it through practice. After being introduced to China, it was collected by Mao Zedong, combined with the heritage of Chinese traditional culture, and developed into Mao Zedong’s thought of materialist dialectics. The formation of t
<categories>
<category> thoughts </category>
</categories>
</entry>
<entry>
<title>左宗棠鸡块</title>
<link href="/cook/zuozongtang-chiken.html"/>
<url>/cook/zuozongtang-chiken.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>分享一下改进版炸鸡块做法哦~</p></span><span class=".en"><p>Share the improved version of fried chicken nuggets~</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="材料准备"><a href="#材料准备" class="headerlink" title="材料准备"></a>材料准备</h2><ul><li>鸡胸肉</li><li>一个鸡蛋</li><li>葱末蒜末</li></ul><h2 id="预备步骤"><a href="#预备步骤" class="headerlink" title="预备步骤"></a>预备步骤</h2><ul><li>鸡肉切小块,加料酒,生抽,淀粉,鸡蛋清,搅匀腌10分钟</li><li>鸡块在面粉中打滚</li></ul><h2 id="核心步骤"><a href="#核心步骤" class="headerlink" title="核心步骤"></a>核心步骤</h2><ul><li>热油炸鸡块至焦黄</li><li>植物油蒜末炝锅</li><li>加入一勺生抽,一勺多白醋,一把白糖,番茄酱翻一下</li><li>加入鸡块,让鸡块上沾上酱汁</li><li>撒上葱末</li></ul><h2 id="成品图"><a href="#成品图" class="headerlink" title="成品图"></a>成品图</h2><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_a3b687be_5120x3840_8_null_normal.jpeg" alt="左宗棠鸡块 2020-02-17"></p></span><span class=".en"><h2 id="Material-preparation"><a href="#Material-preparation" class="headerlink" title="Material preparation"></a>Material preparation</h2><ul><li>Chicken breast</li><li>An egg</li><li>Chopped green onion and garlic</li></ul><h2 id="Preliminary-steps"><a href="#Preliminary-steps" class="headerlink" title="Preliminary steps"></a>Preliminary steps</h2><ul><li>Cut chicken into small pieces, add cooking wine, light soy sauce, starch, egg white, stir well and marinate for 10 minutes</li><li>Chicken nuggets rolled in flour</li></ul><h2 id="Core-steps"><a href="#Core-steps" class="headerlink" title="Core steps"></a>Core steps</h2><ul><li>Hot fried chicken nuggets until browned</li><li>Vegetable oil minced garlic pot</li><li>Add a spoonful of light soy sauce, a spoonful of white vinegar, a handful of sugar and ketchup</li><li>Add chicken nuggets, so that the chicken nuggets are covered with sauce</li><li>Sprinkle with chopped green onions</li></ul><h2 id="Finished-picture"><a href="#Finished-picture" class="headerlink" title="Finished picture"></a>Finished picture</h2><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_a3b687be_5120x3840_8_null_normal.jpeg" alt="Zuo Zongtang Chicken Nuggets 2020-02-17"></p></span>]]></content>
<categories>
<category> cook </category>
</categories>
<tags>
<tag> chiken </tag>
</tags>
</entry>
<entry>
<title>欧洲旅行支票兑换攻略</title>
<link href="/travel/traveler-cheque.html"/>
<url>/travel/traveler-cheque.html</url>
<content type="html"><![CDATA[<!--![](https://api.yimian.xyz/img/?path=imgbed/img_6ae04a26_721x412_8_null_normal.png)--><span class=".zh"><p>之前去欧洲旅游办签证,由于没有三个月的银行流水,不得已购买了旅行支票作为资金证明。可是到了欧洲才发现旅行支票很难使用,如果不了解行情会被骗收15%-20%的手续费。这篇Blog记录了我们发现的兑换旅行支票的坑和Tips!</p></span><span class=".en"><p>Before I went to Europe for a tourist visa, I had to buy a traveler’s cheque as a proof of funds because I did not have a three-month bank flow. However, when I arrived in Europe, I found that traveler’s cheques were difficult to use. If I didn’t understand the market, I would be defrauded of 15%-20% handling fees. This blog records the pits and Tips we found in redeeming traveler’s checks!</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>[scode type=”info”]<strong>经验一</strong>: 尽可能<strong>不使用</strong>旅行支票[/scode]<br>[scode type=”info”]<strong>经验二</strong>: 旅支兑换<strong>最低手续费</strong>在4%左右[/scode]</p><blockquote><p>若不想看经历,可直接调至文末兑换旅行支票的Tips处哦!</p></blockquote><h2 id="我的经历"><a href="#我的经历" class="headerlink" title="我的经历"></a>我的经历</h2><p>圣诞假和室友一行四人一起DIY游欧洲,去了意大利和奥地利两个国家,共5个城市。由于英国的银行卡还没有使用到三个月,无法通过打印流水来办签证,我们选择了另一种方法—购买American Express的欧元的旅行支票。殊不知啊,兑换和使用旅行支票真真是一个大坑。</p><p>最开始据旅行支票的官网上所说,欧洲很多城市的店铺里都能直接使用旅行支票,照这样来说,旅游时花掉它肯定比回英国后把它换回英镑划算的多(换回英镑的过程需要损失8%)。然鹅,出发前我们通过看他人的游记发现,欧洲现在很多店都无法直接花旅行支票(按我们后来实际旅行情况来看,只在威尼斯的好几家店看到了旅行支票的标识),于是我们决定去了就在机场红色标识的Change那里将它们全数换成欧元。</p><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_6ae04a26_721x412_8_null_normal.png" alt="Change"></p><p>可到了第一站罗马找到了红色的Change后(如图),却发现700欧元只能给我们590多欧元。这可真的亏的不是一丁半点儿。我对象现场查到了American Express的电话,打过去发现人家现在在意大利没有设点,不过对方建议去银行换,说是可以毫无亏损(注意这也是个坑,,,)。由于有两人已经换了,为了止损,我们决定先不换剩下两人的700欧旅行支票,留着去银行换。</p><p>到了第三天,我们去了梵蒂冈那块儿玩,顺便去了附近American Express工作人员推荐的银行,还给中国银行打电话,结果均被告知不接受旅支。这可咋整?</p><p>这时刚好发现梵蒂冈周围有一堆change,于是又去问了问报价。其中有一家本来只报590多的,听见我们说另一家给了610多的价,说他们能给我们一个student discount,然后还算了算,报了个640。这下可好,我们开始发现这里面的门道了:其实哪有什么折扣,不过想找个借口吸引你罢了。这些change都是盈利性质的,你把旅支给了他们,他们再通过自己的途径卖给别的地方的American Express,中间可能有一点税收,但只要他们以比扣掉税收低的价格从你这里买下,他就一定能赚(一般还赚<EFBFBD>
<categories>
<category> travel </category>
</categories>
<tags>
<tag> traveler&#39;s cheque </tag>
<tag> Europe </tag>
</tags>
</entry>
<entry>
<title>一键激活win10</title>
<link href="/tech/kms.html"/>
<url>/tech/kms.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>一键激活win10家庭版,专业版,企业版,教育版 φ( ̄∇ ̄o)</p></span><span class=".en"><p>Activate win10 Home Edition, Professional Edition, Enterprise Edition, Education Edition with one click φ( ̄∇ ̄o)</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><!--![](https://api.yimian.xyz/img/?path=wallpaper/img_2020-02-05_1920x1080_96_background_normal.jpg)--><h2 id="方法一-自动安装"><a href="#方法一-自动安装" class="headerlink" title="方法一(自动安装)"></a>方法一(自动安装)</h2><ul><li>使用此方法请先<strong>关闭所有杀毒软件</strong></li><li>使用此方法请先<strong>关闭所有杀毒软件</strong></li><li>使用此方法请先<strong>关闭所有杀毒软件</strong> </li></ul><blockquote><p>p.s. 如果不放心,请使用 方法二-源码安装</p></blockquote><hr><ul><li>点击<a href="https://github.com/IoTcat/kms/releases/download/v1.0/kms.exe" target="_blank" rel="noopener">这里</a>下载<code>exe</code>程序</li></ul><hr><ul><li>运行刚下载的程序。(<strong>请不要修改解压路径</strong>)</li><li>运行刚下载的程序。(<strong>请不要修改解压路径</strong>)</li></ul><hr><ul><li>点击 更多信息<code>-&gt;</code>仍然运行</li></ul><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_f8f91201_532x498_8_null_normal.png" alt=""><br><img src="https://api.yimian.xyz/img/?path=imgbed/img_5e6b7101_532x498_8_null_normal.png" alt=""></p><ul><li>输入数字进行选择。(可输入数字<code>4</code>获取汉语翻译!!)</li></ul><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_6f4f0165_609x226_8_null_normal.png" alt=""></p><hr><ul><li>耐心等待激活完成~ ::aru:proud:: </li></ul><blockquote><p>脚本已发送到桌面<code>kms.bat</code>,如果不需要您可以删除它~</p></blockquote><h2 id="方法二-源码安装"><a href="#方法二-源码安装" class="headerlink" title="方法二(源码安装)"></a>方法二(源码安装)</h2><ul><li>点击<a href="https://github.com/IoTcat/kms/archive/master.zip" target="_blank" rel="noopener">这里</a>下载压缩文件。</li></ul><hr><ul><li><strong>解压压缩文件</strong>(请<strong>务必解压</strong>,否则无法运行)</li><li><strong>解压压缩文件</strong>(请<strong>务必解压</strong>,否则无法运行)</li><li><strong>解压压缩文件</strong>(请<strong>务必解压</strong>,否则无法运行)</li></ul><hr><ul><li>双击运行文件夹中的<code>kms</code><code>kms.bat</code></li></ul><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_c8d641e0_908x257_8_null_normal.png" alt="压缩文件示例"></p><ul><li>点击 更多信息<code>-&gt;</code>仍然运行</li></ul><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_f8f91201_532x498_8_null_normal.png" alt=""><br><img src="https://api.yimian.xyz/img/?path=imgbed/img_5e6b7101_532x498_8_null_normal.png" alt=""></p><ul><li>输入数字进行选择。(可输入数字<code>4</code>获取汉语翻译!!)</li></ul><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_6f4f0165_609x226_8_null_normal.png" alt=""></p><hr><ul><li>耐心等待激活完成~ ::aru:proud:: </li></ul><h2 id="进阶"><a href="#进阶" class="headerlink" title="进阶"></a>进阶</h2><h3 id="激活码"><a href="#激活码" class="headerlink" title="激活码"></a>激活码</h3><p>您的激活码将保存在<code>C:\Windows\kms.key</code></p><h3 id="运行日志"><a href="#运行日志" class="headerlink" title="运行日志"></a>运行日志</h3><ul><li>激活日志 <code>%temp%\kms.log</code></li><li>在本机尝试过的激活码 <code>%temp%\kms.tried_keys</c
<categories>
<category> tech </category>
</categories>
<tags>
<tag> kms </tag>
<tag> win10 </tag>
</tags>
</entry>
<entry>
<title>部署新型冠状病毒API</title>
<link href="/tech/coro.html"/>
<url>/tech/coro.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>一分钟快速部署你自己的新型冠状病毒API ୧(๑•̀⌄•́๑)૭</p></span><span class=".en"><p>Deploy your own new coronavirus API in one minute ୧(๑•̀⌄•́๑)૭</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h1 id="coro-api"><a href="#coro-api" class="headerlink" title="coro-api"></a>coro-api</h1><p>新型冠状病毒 实时数据 api<br>项目Git地址: <a href="https://github.com/iotcat/coro-api" target="_blank" rel="noopener">iotcat/coro-api</a><br>项目npm地址: <a href="https://www.npmjs.com/package/coro-api" target="_blank" rel="noopener">iotcat/coro-api</a> </p><h2 id="API示例"><a href="#API示例" class="headerlink" title="API示例"></a>API示例</h2><h3 id="获取全部"><a href="#获取全部" class="headerlink" title="获取全部"></a>获取全部</h3><p><a href="https://api.yimian.xyz/coro" target="_blank" rel="noopener">https://api.yimian.xyz/coro</a></p><h3 id="根据省份"><a href="#根据省份" class="headerlink" title="根据省份"></a>根据省份</h3><p><a href="https://api.yimian.xyz/coro?province=%E5%B1%B1%E4%B8%9C" target="_blank" rel="noopener">https://api.yimian.xyz/coro?province=山东</a> </p><h3 id="根据城市"><a href="#根据城市" class="headerlink" title="根据城市"></a>根据城市</h3><p><a href="https://api.yimian.xyz/coro?city=%E6%B3%B0%E5%AE%89" target="_blank" rel="noopener">https://api.yimian.xyz/coro?city=泰安</a></p><h3 id="根据省和城-推荐"><a href="#根据省和城-推荐" class="headerlink" title="根据省和城(推荐)"></a>根据省和城(推荐)</h3><p><a href="https://api.yimian.xyz/coro?province=%E5%B1%B1%E4%B8%9C&city=%E6%B3%B0%E5%AE%89" target="_blank" rel="noopener">https://api.yimian.xyz/coro?province=山东&amp;city=泰安</a> </p><h2 id="快速部署"><a href="#快速部署" class="headerlink" title="快速部署"></a>快速部署</h2><h3 id="环境要求"><a href="#环境要求" class="headerlink" title="环境要求"></a>环境要求</h3><ul><li><code>nodeJS</code>支持<code>express</code>任意版本</li><li><code>git</code>任意版本</li></ul><h3 id="下载文件"><a href="#下载文件" class="headerlink" title="下载文件"></a>下载文件</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ git clone https:&#x2F;&#x2F;github.com&#x2F;iotcat&#x2F;coro-api.git &amp; cd coro-api</span><br></pre></td></tr></table></figure><h3 id="安装依赖"><a href="#安装依赖" class="headerlink" title="安装依赖"></a>安装依赖</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> npm install</span></span><br></pre></td></tr></table></figure><h3 id="启动"><a href="#启动" class="headerlink" title="启动"></a>启动</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> node index.js</span></span><br></pre></td></tr></table></figure><h3 id="访问"><a href="#访问" class="headerlink" title="访问"></a>访问</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http:&#x2F;&#x2F;localhost:17676</span><br></pre></td></tr></table></figure><h2 id="进阶"><a href="#进阶" class="headerlink" title="进阶"></a>进阶</h2><h3 id="GET参数"><a href="#GET参数" class="headerlink" title="GET参<EFBFBD><EFBFBD>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> Covid-19 </tag>
<tag> API </tag>
</tags>
</entry>
<entry>
<title>香辣牛肉面</title>
<link href="/cook/awesome-beef-noodle.html"/>
<url>/cook/awesome-beef-noodle.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>自研香辣牛肉面做法~</p></span><span class=".en"><p>Self-developed spicy beef noodle practice~</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="材料准备-两人份"><a href="#材料准备-两人份" class="headerlink" title="材料准备(两人份)"></a>材料准备(两人份)</h2><ul><li>面条</li><li>两个鸡蛋</li><li>两根英国大葱切末</li><li>两片姜切末</li><li>适量牛肉切丁</li><li>准备小碗放一个八角,桂皮,白扣,少许白胡椒粒</li></ul><h2 id="预备步骤"><a href="#预备步骤" class="headerlink" title="预备步骤"></a>预备步骤</h2><ul><li>热锅植物油香油煎鸡蛋</li><li>热水焯一下牛肉</li></ul><h2 id="核心步骤"><a href="#核心步骤" class="headerlink" title="核心步骤"></a>核心步骤</h2><ul><li>热锅植物油香油,放入葱白部分炝锅</li><li>加入开水和牛肉粒,加入碗中的调料,焖3分钟</li><li>加入一勺生抽,半勺老抽,一勺蚝油</li><li>加入适量鸡精和盐调鲜</li><li>加适量红油藤椒油调辣</li><li>放入面条,煮到熟</li></ul><h2 id="后续"><a href="#后续" class="headerlink" title="后续"></a>后续</h2><ul><li>面条添至碗中,盖上鸡蛋</li><li>加剩下的葱绿末</li></ul><h2 id="配图"><a href="#配图" class="headerlink" title="配图"></a>配图</h2><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_6dff3385_3648x2736_8_null_normal.jpeg" alt="香辣牛肉面-2020-01-19"></p></span><span class=".en"><h2 id="Material-preparation-for-two-persons"><a href="#Material-preparation-for-two-persons" class="headerlink" title="Material preparation (for two persons)"></a>Material preparation (for two persons)</h2><ul><li>Noodles</li><li>Two eggs</li><li>Two British scallions, minced</li><li>Two slices of ginger minced</li><li>Dice beef</li><li>Prepare a small bowl with anise, cinnamon, white button, and a little white pepper</li></ul><h2 id="Preliminary-steps"><a href="#Preliminary-steps" class="headerlink" title="Preliminary steps"></a>Preliminary steps</h2><ul><li>Hot pot vegetable oil fragrant fried eggs</li><li>Blanch the beef in hot water</li></ul><h2 id="Core-steps"><a href="#Core-steps" class="headerlink" title="Core steps"></a>Core steps</h2><ul><li>Hot pot vegetable oil sesame oil, put the scallion part into the pot</li><li>Add boiling water and beef cubes, add the seasoning in the bowl, and simmer for 3 minutes</li><li>Add a spoonful of light soy sauce, half a spoonful of dark soy sauce, and a spoonful of oyster sauce</li><li>Add appropriate amount of chicken essence and salt to adjust fresh</li><li>Add appropriate amount of red vine pepper oil to adjust spicy</li><li>Add the noodles and cook until cooked</li></ul><h2 id="Follow-up"><a href="#Follow-up" class="headerlink" title="Follow up"></a>Follow up</h2><ul><li>Add the noodles to the bowl and cover with eggs</li><li>Add the remaining green onion</li></ul><h2 id="With-pictures"><a href="#With-pictures" class="headerlink" title="With pictures"></a>With pictures</h2><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_6dff3385_3648x2736_8_null_normal.jpeg" alt="Spicy Beef Noodle-2020-01-19"></p></span>]]></content>
<categories>
<category> cook </category>
</categories>
<tags>
<tag> beef </tag>
<tag> noodle </tag>
</tags>
</entry>
<entry>
<title>英国意大利申根签攻略</title>
<link href="/travel/ivisa-checklist.html"/>
<url>/travel/ivisa-checklist.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>在英国留学,圣诞去欧洲旅游,DIY了意大利申根签证。现在游完归来,总结一份申根签攻略。</p></span><span class=".en"><p>I studied in the UK, traveled to Europe on Christmas, and DIYed an Italian Schengen visa. Now come back from the tour, summarize a Schengen sign strategy.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="大致流程"><a href="#大致流程" class="headerlink" title="大致流程"></a>大致流程</h2><ul><li>仔细阅读<a href="https://www.vfsglobal.com/Italy/UK/London/tourist.html" target="_blank" rel="noopener">官网</a>条件,查看自己是否满足所有要求</li><li>尽早在线<a href="https://www.vfsglobal.com/Italy/UK/London/Schedule_an_Appointment1.html" target="_blank" rel="noopener">面签预约</a>(之后可以修改时间)</li><li>认真研究<a href="https://www.vfsglobal.com/Italy/UK/London/tourist.html" target="_blank" rel="noopener">需要的材料</a>(务必以官网为准)</li><li>生成visa申请表(<a href="https://www.vfsvisaonline.com/OnlineVaf-Italy?Country=QcpCgYPkPBcUOc3/C92SWQ==" target="_blank" rel="noopener">在线生成</a>)</li><li>准备其它材料</li></ul><h2 id="材料类别"><a href="#材料类别" class="headerlink" title="材料类别"></a>材料类别</h2><h3 id="常规签证材料"><a href="#常规签证材料" class="headerlink" title="常规签证材料"></a>常规签证材料</h3><ul><li>Visa申请表</li><li>身份证明</li><li>居住证明</li><li>照片</li></ul><h3 id="附加签证材料"><a href="#附加签证材料" class="headerlink" title="附加签证材料"></a>附加签证材料</h3><ul><li>工作证明</li><li>财产证明</li><li>旅行证明</li><li>住宿证明</li><li>保险证明</li></ul><h2 id="材料CheckList"><a href="#材料CheckList" class="headerlink" title="材料CheckList"></a>材料CheckList</h2><ul><li>visa申请表原件(在线生成后打印)</li><li>护照原件+复印件(黑白)</li><li>BRP原件+复印件(黑白)</li><li>一张证件照-与英国签证一致(<a href="https://www.vfsglobal.com/Italy/UK/London/tourist.html#tourist_photoSpecs" target="_blank" rel="noopener">要求</a>)</li><li>student letter</li><li>旅行支票原件+复印件或三个月银行流水</li><li>往返机票(姓名,日期,to&amp;from)</li><li>火车票(姓名,日期,to&amp;from)</li><li>住宿证明(姓名,日期,地址)</li><li>同行者名单</li><li>旅行保险证明(姓名,地理范围,保额)</li><li>面签预约证明复印件</li></ul><hr><ul><li>旅行行程单(方便跟签证官解释)</li><li>joint travel confirmation letter(如果某个车票或住宿证明上没有你的名字)</li><li>买票者的护照签名页复印件(如果某个车票或住宿证明上没有你的名字)</li></ul><h2 id="材料说明"><a href="#材料说明" class="headerlink" title="材料说明"></a>材料说明</h2><h3 id="visa申请表"><a href="#visa申请表" class="headerlink" title="visa申请表"></a>visa申请表</h3><ul><li>在线填写完第一页记得点SAVE, 记下页面右上角的Reference Number ::aru:shy::</li><li>下一次登录后点击上方<a href="https://www.vfsvisaonline.com/OnlineVAF-Italy/Applicant/Search" target="_blank" rel="noopener">RETRIEVE INCOMPLETE FILLED VAF</a>即可继续填写</li><li>填写参考<a href="https://travel.uk2hand.com/ukvisa/italy-schengen-visa/" target="_blank" rel="noopener">这篇攻略</a></li><li>单面黑白A4打印</li><li>打印好不要填写,不要签字,不要贴照片,到现场签证官会告诉你怎么办</li><li>不要装订,建议用环形针</li></ul><h3 id="Student-Letter"><a href="#Student-Letter
<categories>
<category> travel </category>
</categories>
<tags>
<tag> uk </tag>
<tag> italy </tag>
<tag> visa </tag>
</tags>
</entry>
<entry>
<title>今天很开心,在这里留个空</title>
<link href="/life/happy.html"/>
<url>/life/happy.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>先在这里留个空,以后慢慢填~</p></span><span class=".en"><p>Leave a blank here first, then fill it in slowly~</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>φ( ̄∇ ̄o)</p></span><span class=".en"><p>φ( ̄∇ ̄o)</p></span>]]></content>
<categories>
<category> life </category>
</categories>
<tags>
<tag> love </tag>
</tags>
</entry>
<entry>
<title>Liverpool 学生公寓条件调研</title>
<link href="/life/liverpool-accom-inves.html"/>
<url>/life/liverpool-accom-inves.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>为了更清晰更直观的选择出明年居住的公寓,本文汇总了网络上对各公寓的评价信息,供决策参考。</p></span><span class=".en"><p>In order to more clearly and intuitively choose the apartment to live in next year, this article summarizes the evaluation information of each apartment on the Internet for decision-making reference.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>[scode type=”green”]大家积极在评论区补充哦,评论推荐使用qq邮箱[/scode]<br>[scode type=”yellow”]持续更新中…[/scode]<br>[scode type=”blue”]望大家能够<strong>补充</strong>更多房源,以便调查[/scode]</p><p><strong>所有步行距离以Guild为中心!!</strong> </p><h2 id="Dover-Court-我们的最终选择"><a href="#Dover-Court-我们的最终选择" class="headerlink" title="Dover Court (我们的最终选择)"></a>Dover Court (我们的最终选择)</h2><ul><li><code>步行距离</code>: 8 min (西北)</li><li><code>google地图</code>: <a href="https://www.google.com/maps/dir/53.4060943,-2.9635088/dover+court/@53.4073115,-2.9710734,16z/data=!3m1!4b1!4m9!4m8!1m1!4e1!1m5!1m1!1s0x487b2117f02af11d:0xa8248cb9d60eb03d!2m2!1d-2.9700754!2d53.408129" target="_blank" rel="noopener">Dover Court</a></li><li><code>Official Guide</code>: <a href="https://www.youtube.com/watch?v=lMyNP1edztE" target="_blank" rel="noopener">Dover Court</a></li><li><code>优点</code>: 距Lidl近,安静,管理好,安全,定期有人清洁,social place好,楼下自习室很安静</li><li><code>缺点</code>: 房间隔音一般,部分房间小,有的地方天花板低</li><li><code>价格</code>: £155.54 pw (Last Year)</li></ul><h2 id="Horizon-Heights"><a href="#Horizon-Heights" class="headerlink" title="Horizon Heights"></a>Horizon Heights</h2><ul><li><code>步行距离</code>: 14 min (西)</li><li><code>google地图</code>: <a href="https://www.google.com/maps/place/Unite+Students+-+Horizon+Heights/@53.4063639,-2.9762904,14.73z/data=!4m5!3m4!1s0x0:0xeb3661ed145a9ca6!8m2!3d53.4068673!4d-2.9785214" target="_blank" rel="noopener">Horizon Heights</a></li></ul><h2 id="St-Luke’s-View"><a href="#St-Luke’s-View" class="headerlink" title="St Luke’s View"></a>St Luke’s View</h2><ul><li><code>步行距离</code>: 13 min (西南)</li><li><code>google地图</code>: <a href="https://www.google.com/maps/place/Unite+Students+-+St+Luke' target="_blank" rel="noopener"s+View,+Liverpool/@53.4032851,-2.9832055,15.1z/data=!4m5!3m4!1s0x487b2123d300f157:0x7aa4464b82196264!8m2!3d53.4026763!4d-2.975033">St Luke’s View</a></li></ul><h2 id="Apollo-Court"><a href="#Apollo-Court" class="headerlink" title="Apollo Court"></a>Apollo Court</h2><ul><li><code>步行距离</code>: 11 min (西北)</li><li><code>同学反映</code>: 不安静(老雷)</li></ul><h2 id="Capital-Gate"><a href="#Capital-Gate" class="headerlink" title="Capital Gate"></a>Capital Gate</h2><ul><li><code>步行距离</code>: 7 min (西北)</li></ul><h2 id="Grand-Central"><a href="#Grand-Central" class="headerlink" title="Grand Central"></a>Grand Central</h2><ul><li><code>步行距离</code>: 12 min (西)</li></ul><h2 id="Philharmonic-Court"><a href="#Philharmonic-Court" class="headerlink" title="Philharmonic Court"></a>Philharmonic Court</h2><ul><li><code>步行距离</code>: 12 min (南)</li></ul><h2 id="The-Railyard"><a href="#The-Railyard" class="headerlink" title="The Railyard"></a>The Railyard</h2><ul><li><code>步行距离</code>: 9 min (东)</li></ul><h2 id="Myrtle-Court"><a href="#Myrtle-Court" class="headerlink" title="Myrtle Court"></a>Myrtle Court</h2><ul><li><code>步行距离</code>: 9 min
<categories>
<category> life </category>
</categories>
<tags>
<tag> uk </tag>
<tag> liverpool </tag>
<tag> investigation </tag>
<tag> accomodation </tag>
</tags>
</entry>
<entry>
<title>公共开支结算系统</title>
<link href="/tech/crown-place-erp.html"/>
<url>/tech/crown-place-erp.html</url>
2 years ago
<content type="html"><![CDATA[<span class=".zh"><p>在英国留学与4个室友合租,为了更好的控制和监管公共支出,以及维持彼此之间的公共支出平衡,我利用迎新周三天时间设计并开发除了此ERP公共开支计划系统。希望此系统能够便捷接下来一年的生活,减少大家之间的矛盾,促使充满幸福感的公共支出项目持久化OωO</p></span><span class=".en"><p>I studied in the UK and shared with 4 roommates. In order to better control and monitor public expenditures and maintain the balance of public expenditures between each other, I designed and developed this ERP public expenditure planning system during the welcome Wednesday. I hope that this system will make life easier for the next year, reduce conflicts between everyone, and promote the sustainability of public expenditure projects full of happiness OωO</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="1-功能介绍"><a href="#1-功能介绍" class="headerlink" title="1.功能介绍"></a>1.功能介绍</h2><ul><li>统计日均周均流水,让公共支出可视化</li><li>用户申报一次公共支出,并提交发票照片留证</li><li>监视各成员间支出不均衡程度,计算方差,并可视化显示</li><li>对比本周与上周的开支,给出增减比例</li><li>当存在一人支出超出均值阈值,并且存在至少一人支出少于均值阈值,则会邮件这两个人产生一次内部交易</li><li>邮件通知内部交易的双方</li><li>当上例中收款人收到款项后,需要到平台确认收到</li><li>平台所有历史公共开支及发票可查</li></ul><h2 id="2-系统架构"><a href="#2-系统架构" class="headerlink" title="2.系统架构"></a>2.系统架构</h2><h3 id="2-1-前端"><a href="#2-1-前端" class="headerlink" title="2.1 前端"></a>2.1 前端</h3><p>前端基于一个网上找到的比特币网站平台模板,深度改造实现。值得一提的是,前端使用<a href="https://github.com/iotcat/ushio-js" target="_blank" rel="noopener">Ushio-js项目</a>作为安全及日志插件,并得到了<a href="https://ushio.yimian.xyz" target="_blank" rel="noopener">Ushio</a>系统做背后支持。</p><h3 id="2-2-后端"><a href="#2-2-后端" class="headerlink" title="2.2 后端"></a>2.2 后端</h3><p>后端使用php语言编写。提供5个接口,分别提供获取账户事件,获取内部流通信息,获取公共支出信息,获取周报表,操作的功能。</p><p>mail系统使用<a href="https://www.eee.dog/tech/mail-api.html">Yimian Mail API</a>快速构建。</p><h3 id="2-3-数据库"><a href="#2-3-数据库" class="headerlink" title="2.3 数据库"></a>2.3 数据库</h3><p>数据库使用yimian-db/mysql。构建了三个表,分别用于存储流水,公共支出详情,内部流通。</p><h3 id="2-4-图片上传"><a href="#2-4-图片上传" class="headerlink" title="2.4 图片上传"></a>2.4 图片上传</h3><p>直接引用<a href="https://imgbed.yimian.xyz" target="_blank" rel="noopener">呓喵酱の图床</a>代码,少量改写。</p><h3 id="2-5-用户系统"><a href="#2-5-用户系统" class="headerlink" title="2.5 用户系统"></a>2.5 用户系统</h3><p>目前用额外网页简单实现,等待<a href="https://github.com/iotcat/ushio-auth" target="_blank" rel="noopener">ushio-auth项目</a>完成后统一整合。</p><h2 id="3-外观"><a href="#3-外观" class="headerlink" title="3. 外观"></a>3. 外观</h2><p>没啥可说的,摆图,自己看<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_ed08c497_1080x6654_8_null_normal.jpeg" alt="imgbed_ed08c497"></p><p><img src="https://api.yimian.xyz/img/?path=imgbed/img
<categories>
<category> tech </category>
</categories>
<tags>
<tag> crown-place </tag>
<tag> uk </tag>
<tag> liverpool </tag>
<tag> erp </tag>
<tag> system </tag>
</tags>
</entry>
<entry>
<title>呓喵酱的一言API</title>
<link href="/tech/words-api.html"/>
<url>/tech/words-api.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>这里是呓喵酱的语录API哦~</p></span><span class=".en"><p>Hi~ This is the API of IoTcat’s Motto..</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h2><ul><li><code>lang</code>: (可选)语言 e.g. <code>lang</code>=<code>en</code>(英语)/<code>zh</code>(中文)</li></ul><h2 id="请求地址"><a href="#请求地址" class="headerlink" title="请求地址"></a>请求地址</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GET https:&#x2F;&#x2F;api.yimian.xyz&#x2F;words&#x2F;</span><br></pre></td></tr></table></figure><h2 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&#x2F;&#x2F;随机获取一句中文语录</span><br><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;words&#x2F;</span><br><span class="line">&#x2F;&#x2F;随机获取一句英文语录</span><br><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;words&#x2F;?lang&#x3D;en</span><br></pre></td></tr></table></figure><h2 id="返回值-plaintext"><a href="#返回值-plaintext" class="headerlink" title="返回值(plaintext)"></a>返回值(plaintext)</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">随机一句话</span><br></pre></td></tr></table></figure></span><span class=".en"><h2 id="Parameters"><a href="#Parameters" class="headerlink" title="Parameters"></a>Parameters</h2><ul><li><code>lang</code>: (optional) Language setting. e.g. <code>lang</code>=<code>en</code>(English)/<code>zh</code>(Chinese)</li></ul><h2 id="Request-address"><a href="#Request-address" class="headerlink" title="Request address"></a>Request address</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GET https:&#x2F;&#x2F;api.yimian.xyz&#x2F;words&#x2F;</span><br></pre></td></tr></table></figure><h2 id="Example"><a href="#Example" class="headerlink" title="Example"></a>Example</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&#x2F;&#x2F;Get a random Chinese quotation</span><br><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;words&#x2F;</span><br><span class="line">&#x2F;&#x2F;Get a random English quotation</span><br><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;words&#x2F;?lang&#x3D;en</span><br></pre></td></tr></table></figure><h2 id="Return-value-plaintext"><a href="#Return-value-plaintext" class="headerlink" title="Return value (plaintext)"></a>Return value (plaintext)</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Random sentence..</span><br></pre></td></tr></table></figure></span>]]></content>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> api </tag>
<tag> motto </tag>
</tags>
</entry>
<entry>
<title>网易云音乐获取API</title>
<link href="/tech/music-api.html"/>
<url>/tech/music-api.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>封装好的网易云音乐API,欢迎大家调用━(<em>`∀´</em>)ノ亻!</p></span><span class=".en"><p>The packaged NetEase Cloud Music API, welcome everyone to use ━(<em>`∀´</em>)ノ亻!</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h2><ul><li><code>type</code>: (必填)模式类型 <code>type</code>=<code>single</code>单曲信息/<code>playlist</code>歌单歌曲信息/<code>url</code>获取歌曲/<code>cover</code>获取封面/<code>lrc</code>获取歌词</li><li><code>id</code>: (必填,搭配type使用)歌单或歌曲id e.g. <code>id</code>=<code>198401123</code></li><li><code>random</code>: 仅对playlist有效,返回的歌曲是否打乱顺序,默认<code>false</code>. e.g. <code>random</code>=<code>true</code> </li><li><code>limit</code>: 返回歌单最大长度 e.g. <code>limit</code>=<code>10</code> </li></ul><blockquote><p>歌单和歌曲的id可以从<a href="https://music.163.com/#/my/" target="_blank" rel="noopener">云音乐网页版</a>获取。点开歌单或歌曲,查看浏览器地址栏,如下图:<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_dfeddac_552x34_8_null_normal.jpeg" alt="Playlist Id"><br><img src="https://api.yimian.xyz/img/?path=imgbed/img_527a5ea_491x37_8_null_normal.jpeg" alt="Single Song Id"></p></blockquote><blockquote><p>2021-6-23起”我喜欢的音乐”歌单不再受支持。如有需求,请创建一个公开的歌单,并将“我喜欢的音乐”中的歌曲移入。</p></blockquote><h2 id="请求地址"><a href="#请求地址" class="headerlink" title="请求地址"></a>请求地址</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GET https:&#x2F;&#x2F;api.yimian.xyz&#x2F;msc&#x2F;</span><br></pre></td></tr></table></figure><h2 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h2><h3 id="获取id为36308263的歌曲信息"><a href="#获取id为36308263的歌曲信息" class="headerlink" title="获取id为36308263的歌曲信息"></a>获取id为36308263的歌曲信息</h3><p><a href="https://api.yimian.xyz/msc/?type=single&amp;id=36308263" target="_blank" rel="noopener">https://api.yimian.xyz/msc/?type=single&amp;id=36308263</a></p><h3 id="获取id为2675649523的歌单所有歌曲信息"><a href="#获取id为2675649523的歌单所有歌曲信息" class="headerlink" title="获取id为2675649523的歌单所有歌曲信息"></a>获取id为2675649523的歌单所有歌曲信息</h3><p><a href="https://api.yimian.xyz/msc/?type=playlist&amp;id=2675649523" target="_blank" rel="noopener">https://api.yimian.xyz/msc/?type=playlist&amp;id=2675649523</a></p><h3 id="获取2675649523歌单前14首歌曲信息"><a href="#获取2675649523歌单前14首歌曲信息" class="headerlink" title="获取2675649523歌单前14首歌曲信息"></a>获取2675649523歌单前14首歌曲信息</h3><p><a href="https://api.yimian.xyz/msc/?type=playlist&amp;id=2675649523&amp;limit=14" target="_blank" rel="noopener">https://api.yimian.xyz/msc/?type=playlist&amp;id=2675649523&amp;limit=14</a></p><h3 id="随机从2675649523歌单获取14首歌曲信息"><a href="#随机从2675649523歌单获取14首歌曲信息" class="headerlink" title="随机从2675649523歌单获取14首歌曲信息"></a>随机从2675649523歌单获取14首歌曲信息</h3><p><a href="https://api.yimian.xyz/msc/?type=playlist&amp;id=2675649523&amp;limit=14&amp;random=true" target="_blank" rel="noopener">https://api.yimian.xyz/msc/?type=playlist&amp;id=2675649523&amp
<categories>
<category> tech </category>
</categories>
<tags>
<tag> api </tag>
<tag> music </tag>
</tags>
</entry>
<entry>
<title>在家中部署智慧家庭系统</title>
<link href="/tech/smart-home.html"/>
<url>/tech/smart-home.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>基于Home Assisstant搭建综合家庭照明系统,多媒体系统,水流系统的智慧家庭。技术点:天猫精灵交互,LoRa通信,MQTT协议,frp内网穿透,NAS存储,拨动开关电路改造。</p></span><span class=".en"><p>Based on Home Assisstant, build a smart home with integrated home lighting system, multimedia system and water flow system. Technical points: Tmall Genie interaction, LoRa communication, MQTT protocol, FRP intranet penetration, NAS storage, and toggle switch circuit transformation.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>结合所学知识,运用前沿技术,造福生活,是我长期以来的不懈追求。为了让家人体验到更加稳定、舒适智能的生活方式,同时也为了巩固憨实先前在学校smartfarm项目和我自己的ushio系统中所积累的技术基础以及架构经验,我决定在出国前,使用20到23整天时间,重构家中老旧的物联网系统。采用分层架构和面向接口、面向测试、<strong>面向文档</strong>开发原则,以<strong>稳定性(Available)</strong><strong>可靠性(Reliable)</strong>为最优先指标,搭建一个运行目标3年以上的高度模块化的,易于远程操控的,开源的家庭软件硬件智能传感控制系统。</p><h2 id="背景:"><a href="#背景:" class="headerlink" title="背景:"></a>背景:</h2><p>大一上学期,初接触单片机,使用Arduino Uno搭建了一个宿舍中的智慧窗帘系统(细节可以参考<a href="https://www.eee.dog/tech/build-236-iot-platform-on-wifiduino.html">这篇blog</a>),积累了一定的经验。</p><h2 id="方法:"><a href="#方法:" class="headerlink" title="方法:"></a>方法:</h2><ol><li>向专家请教(水管问题向五金店老板请教,LoRa向欧朗研发部请教)</li><li>做轮子,不断迭代,在重构中优化系统,获取经验</li><li>认真调研客户(家人)的需求,在设计时重视客户需求,多于客户沟通</li><li>在设计某一系统时,一定要假设与其交互的其它系统不稳定。让系统之间的交互就像君子相交一样,像水一样。从而提高整个系统的裕度。</li><li>持续运维。比如三轮开发前曾经发生过,我妈在打扫卫生时碰掉了一个人体传感器,导致整个灯控系统紊乱。当时在苏州的我通过远程ssh连接到家里的服务器,将坏掉的传感器踢出控制系统进而解决了问题。因此,一定要让自己在任何时候都可以接入到系统进行运维。一定要在设计时充分考虑之后的运维。</li></ol><h2 id="过程综述:"><a href="#过程综述:" class="headerlink" title="过程综述:"></a>过程综述:</h2><h3 id="一轮开发"><a href="#一轮开发" class="headerlink" title="一轮开发"></a>一轮开发</h3><p>大一暑假,开始尝试使用WiFiduino在家中控制一些物体,实现了对(坏了的)太阳能加水(通过电磁阀)的控制(修改了原先家里的管道,加入了电磁阀。跑了好多趟五金店,收获了不少关于水管的知识和实践经验。之后做surf的水泵也有用到。)以及对走廊灯(通过光电耦合器)的控制。找到一台废弃的10年前的我爸的IBM笔记本,装上了win server 2008, 并配置好了mysql数据库,并定期使用http从单片机采集数据。我用php写了一个简单的web界面,来展示相关信息,并实现网页控制。由于家里被分配的是中国移动分配的大NAT内网IP,因此使用frp来实现内网穿透,使外界可以访问家里服务器上的web网页。</p><h3 id="<EFBFBD>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> Arduino </tag>
<tag> iot </tag>
<tag> smart-home </tag>
<tag> LoRa </tag>
<tag> WiFi </tag>
<tag> ESP8266 </tag>
<tag> MQTT </tag>
</tags>
</entry>
<entry>
<title>2019 SURF SmartFarming Proj 架构说明</title>
<link href="/tech/smartfarming-surf.html"/>
<url>/tech/smartfarming-surf.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>本文详细介绍了XJTLU大学2019暑期科研SmartFarming Proj物联网架构的设计思路,实施情况以及缺陷反思。</p></span><span class=".en"><p>This article introduces in detail the design ideas, implementation status and defect reflections of the SmartFarming Proj IoT architecture of XJTLU University’s 2019 summer scientific research.</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'en'){ tips.warning({ title: 'Caution', position: 'topRight', message: 'This page was translated by Machine!!', buttons: [['<button>Show Original Page</button>', function (instance, toast) { page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]] }); } });</script><span class=".zh"><h2 id="1-背景"><a href="#1-背景" class="headerlink" title="1 背景"></a>1 背景</h2><h3 id="1-1-需求"><a href="#1-1-需求" class="headerlink" title="1.1 需求"></a>1.1 需求</h3><p>为了探究农业物联网技术的可行性,Alam Mohammed导师希望我们能够提供一个<strong>稳定(Available)</strong><strong>可靠(Reliable)</strong>的物联网系统,以实现对农田的智能监控和管理。这个系统将能够适时地探测土壤以及空气中与植物健康相关的参数,处理并存储这些数据(由Alam提出)。同时,自动化控制的灌溉功能(由Caleb提出)以及一些数据展示方法(由Alam提出的可选需求)也被期待由本系统提供。</p><h3 id="1-2-定位"><a href="#1-2-定位" class="headerlink" title="1.2 定位"></a>1.2 定位</h3><p>由于是针对农业物联网设计的小型科研项目,项目的目标是对农业物联网的可行性进行探究,愿景是模拟最普遍的小型农业物联网应用场景。因此本架构的定位是<strong>适用于大部分具备感知,控制和展示功能的小型农业物联网工程</strong></p><h2 id="2-名词解释"><a href="#2-名词解释" class="headerlink" title="2 名词解释"></a>2 名词解释</h2><blockquote><ul><li><code>MQTT</code>: MQTT消息队列遥测传输(Message Queuing Telemetry Transport)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议[1]。</li></ul></blockquote><blockquote><ul><li><code>LoRa</code>: LoRa是当前市场上的一种新兴技术,其在1 GHz以下的公共频段中运行,用于远距离低功耗通信[2]。</li></ul></blockquote><h2 id="3-设计目标"><a href="#3-设计目标" class="headerlink" title="3 设计目标"></a>3 设计目标</h2><h3 id="3-1-实现功能"><a href="#3-1-实现功能" class="headerlink" title="3.1 实现功能"></a>3.1 实现功能</h3><p>本架构功能性需求主要包括土地数据采集,气象数据采集,灌溉系统控制,与无人机小组系统进行交互,网页控制台(可查看实时和历史传感数据,指标数据;能够控制系统)。</p><h3 id="3-2-性能指标"><a href="#3-2-性能指标" class="headerlink" title="3.2 性能指标"></a>3.2 性能指标</h3><ul><li><code>通信范围(测试)</code>:半径不低于1km</li><li><code>通信范围(生产)</code>:半径不低于3km</li><li><code>延时</code>:平均小于1s</li><li><code>超时率</code>:不超过5%</li><li><code>资源占用</code>:节点RAM不超过2k</li><li><code>运行周期</code>:1分 (测试) | 15分 (生产)</li></ul><h2 id="4-系统环境"><a href="#4-系统环境" class="headerlink" title="4 系统环境"></a>4 系统环境</h2><h3 id="4-1-相关软件及硬件"><a href="#4-1-相关软件及硬件" class="headerlink" title="4.1 相关软件及硬件"></a>4.1 相关软件及硬件</h3><div style="overflow:scroll;"><table ><tr> <td style="vertical-align: middle;text-alig
<categories>
<category> tech </category>
</categories>
<tags>
<tag> Arduino </tag>
<tag> iot </tag>
<tag> LoRa </tag>
<tag> MQTT </tag>
<tag> smart-farming </tag>
</tags>
</entry>
<entry>
<title>Arduino中[]=重载导致的String调用问题</title>
<link href="/tech/arduino-operator-string-issue.html"/>
<url>/tech/arduino-operator-string-issue.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>最近在物联网开发中使用Arduino搭建LoRa网关和节点,发现在调用String时总遇到一些奇奇怪怪的现象。经过排查,发现是由于其它地方[]=运算符的重载所导致。</p></span><span class=".en"><p>Recently, I have used Arduino to build LoRa gateways and nodes in the development of the Internet of Things, and I found that some strange phenomena are always encountered when calling String. After investigation, it was found that it was caused by overloading of the []= operator elsewhere.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>为了方便,在开发节点时,我们使用了<a href="https://github.com/iotcat/lora-socket" target="_blank" rel="noopener">LoRa-Socket</a><a href="https://arduinojson.org/" target="_blank" rel="noopener">ArduinoJSON</a>作为依赖。我们发现这两个依赖分别使用时表现良好,但如果在同一个项目文件中使用,则会导致一些怪异的问题。</p><h2 id="情况一"><a href="#情况一" class="headerlink" title="情况一"></a>情况一</h2><p>通过指针调用函数时String参数传递异常。代码如下:</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">void</span> _onReceived(<span class="keyword">const</span> <span class="keyword">String</span>&amp; msg, <span class="keyword">const</span> <span class="keyword">String</span>&amp; from, <span class="keyword">const</span> <span class="keyword">String</span>&amp; to, <span class="keyword">const</span> <span class="keyword">String</span>&amp; type)&#123;</span><br><span class="line"> (*_f)(msg, from, to, type);</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>在这个案例中,我们发现msg等String在此函数中的数值是一切正常的,可是却没有能够成功传递到_f中。经过一系列骚操作,我们得出如下结论:</p><ul><li>发现如果将String换成int或其它类型,则参数传递至_f一切正常。有问题的只有String和char类型。</li><li>我们尝试过将String转换为其它类型,再转回,但是没有效果。</li><li>String或char类型全局变量的声明会使单片机崩溃。</li><li>当我们将ArduinoJSON依赖删去,String参数的传递则一切正常。</li></ul><p>我们从而可以得出,这种怪异现象是由于与ArduinoJSON包的冲突所致。</p><h2 id="情况二"><a href="#情况二" class="headerlink" title="情况二"></a>情况二</h2><p>在使用<a href="https://github.com/tomstewart89/Vector" target="_blank" rel="noopener">ArduinoVector</a>制作String类型Vector时,我们也发现了String类型的不稳定现象。神奇的是,这种现象只出现在String的使用中,其它如int类型运作良好。</p><p>这些不稳定现象可以总结如下:</p><ul><li>赋值时被截断</li><li>String值局部乱序</li><li>String值部分乱码</li><li>作为参数传给函数时会失败,读取出来是空(与案例一类似)</li></ul><h2 id="综述"><a href="#综述" class="headerlink" title="综述"></a>综述</h2><p>通过上述两个案例,我们可以初步总结出,这是由于[]=赋值运算符的重载与String有冲突。只要使用[]=重新定义String,即有可能出现String怪异的问题。</p></span><span class=".en"><p>For convenience, we used <a href="https://github.com/iotcat/lora-socket" target="_blank" rel="noopener">LoRa-Socket</a>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> Arduino </tag>
<tag> cpp </tag>
</tags>
</entry>
<entry>
<title>随机图片API</title>
<link href="/tech/rand-pic-api.html"/>
<url>/tech/rand-pic-api.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>本API基于华为云对象存储,使用华为CDN云加速,全球平均下载速度达10MB/s。API中已收录1100+张二次元图片,20+张Bing壁纸(每日自动抓取),150+张二次元头像,10+张图床上传图片。</p></span><span class=".en"><p>This API is based on Huawei Cloud Object Storage and uses Huawei CDN Cloud acceleration. The global average download speed is 10MB/s. The API has included 1100+ two-dimensional pictures, 20+ Bing wallpapers (automatically captured daily), 150+ two-dimensional avatars, and 10+ pictures uploaded on the bed.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><blockquote><p>本API不承诺<strong>永久</strong>维护,使用前请务必斟酌<strong>使用风险</strong>!!</p></blockquote><h2 id="1-API地址"><a href="#1-API地址" class="headerlink" title="1 API地址"></a>1 API地址</h2><ul><li><code>https://api.yimian.xyz/img</code></li></ul><h2 id="2-快速入门"><a href="#2-快速入门" class="headerlink" title="2 快速入门"></a>2 快速入门</h2><p><strong><em>随机二次元图片</em></strong></p><ul><li><code>GET/POST /img?type=moe</code></li><li>示例:<a href="https://api.yimian.xyz/img?type=moe" target="_blank" rel="noopener">https://api.yimian.xyz/img?type=moe</a></li></ul><p><strong><em>随机Bing壁纸</em></strong></p><ul><li><code>GET/POST /img?type=wallpaper</code></li><li>示例:<a href="https://api.yimian.xyz/img?type=wallpaper" target="_blank" rel="noopener">https://api.yimian.xyz/img?type=wallpaper</a></li></ul><p><strong><em>随机二次元头像</em></strong></p><ul><li><code>GET/POST /img?type=head</code></li><li>示例:<a href="https://api.yimian.xyz/img?type=head" target="_blank" rel="noopener">https://api.yimian.xyz/img?type=head</a></li></ul><p><strong><em>随机图床图片</em></strong></p><ul><li><code>GET/POST /img?type=imgbed</code></li><li>示例:<a href="https://api.yimian.xyz/img?type=imgbed" target="_blank" rel="noopener">https://api.yimian.xyz/img?type=imgbed</a></li></ul><p><strong><em>随机1920x1080尺寸二次元图片</em></strong></p><ul><li><code>GET/POST /img?type=moe&amp;size=1920x1080</code></li><li>示例:<a href="https://api.yimian.xyz/img?type=moe&size=1920x1080" target="_blank" rel="noopener">https://api.yimian.xyz/img?type=moe&amp;size=1920x1080</a></li></ul><h2 id="3-参数列表"><a href="#3-参数列表" class="headerlink" title="3 参数列表"></a>3 参数列表</h2><div style="overflow:scroll;"><table><thead><tr><th align="center">名称</th><th align="center">描述</th><th align="center">格式</th><th align="center">示例</th></tr></thead><tbody><tr><td align="center"><strong>type</strong></td><td align="center">图片种类</td><td align="center"><code>moe</code>/<code>wallpaper</code>/<code>head</code>/<code>imgbed</code></td><td align="center"><code>type=moe</code></td></tr><tr><td align="center"><strong>size</strong></td><td align="center">根据图片大小筛选</td><td align="center"><code>??x??</code>;<br><code>*x??</code>;<br><code>*x*</code>;<br><code>??-??x??</code>;<br><code>??-??x??-??</code>;<br><code>??-??x*</code></td><td align="center"><code>display=1920x1080</code>;<br><code>display=1920x*</code>;<br><code>display=1920-1950x230-500</code>;<br><code>display=1920-1950x*</code>;</td></tr><tr><td align="center"><strong>range</strong></td><td align="center">尺寸误差范围</td><td align="center">number</td><td align="center"><code>range=100</code></td></tr><tr><td align="center"><strong>id</strong></td><td align="center">根据图片id筛选</td><td align="center">number</td><td align="center"><code>id=15</code></td></tr><tr><td align="center">
<categories>
<category> tech </category>
</categories>
<tags>
<tag> api </tag>
<tag> img </tag>
<tag> random </tag>
<tag> moe </tag>
</tags>
</entry>
<entry>
<title>wIoT - 轻松物联</title>
<link href="/tech/wiot.html"/>
<url>/tech/wiot.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>基于NodeJS搭建的物联网系统,配合D1 MINI单片机,帮助你灰常快速实现物联~</p></span><span class=".en"><p>The Internet of Things system based on NodeJS, combined with D1 MINI microcontroller, helps you quickly realize the Internet of Things~</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'en'){ tips.warning({ title: 'Caution', position: 'topRight', message: 'English version may be not up to date!!', buttons: [['<button>Show Chinese Page</button>', function (instance, toast) { page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]] }); } });</script><span class=".zh"><h3 id="wIoT-for-NodeJS"><a href="#wIoT-for-NodeJS" class="headerlink" title="wIoT for NodeJS"></a>wIoT for NodeJS</h3><p>适用于NodeJS的wIoT服务器控制组件,轻松物联</p><h1 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h1><h2 id="立项初衷"><a href="#立项初衷" class="headerlink" title="立项初衷"></a>立项初衷</h2><p>本项目旨在帮助不熟悉固件编程的网络开发者实现出自己的物联网应用。您仅需要一台网络内部的服务器(比如树莓派),以及若干个支持可联网(通过串口,WiFi,LoRa,蓝牙,Zigbee等)的单片机,即可轻松创建并管理属于您自己的物联网集群。</p><h2 id="支持功能"><a href="#支持功能" class="headerlink" title="支持功能"></a>支持功能</h2><ul><li>ota (隔空自动更新固件)</li><li>自动扫描网络内单片机</li><li>通过wifi连接设置</li><li>使用socket/HTTP通信</li></ul><h2 id="todo-List"><a href="#todo-List" class="headerlink" title="todo List"></a>todo List</h2><ul><li>支持python界面</li><li>开发web面板,图像化管理</li><li>支持更多单片机,比如esp8266等</li><li>开发nodeJS wiot-cli 命令行程序</li><li>支持nodeJS自动烧写固件,并自动配置(很重要)</li></ul><h1 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h1><blockquote><p>正式开发文档见<a href="https://wiot.yimian.xyz/#/home" target="_blank" rel="noopener"><strong>这里</strong></a></p></blockquote><h2 id="先觉条件"><a href="#先觉条件" class="headerlink" title="先觉条件"></a>先觉条件</h2><ul><li>拥有烧录好<a href="https://wiot-ota.yimian.xyz/get.php" target="_blank" rel="noopener">wIoT固件</a><strong>D1 MINI</strong>单片机</li><li>一台或多台无线WiFi路由器2.4G/5G</li><li>局域网内拥有一台装有<strong>NodeJS</strong>的服务器或电脑 (NodeJS装法非常简单, 请自行Google或百度)</li><li>配置好<strong>npm</strong></li></ul><h2 id="快速开始"><a href="#快速开始" class="headerlink" title="快速开始"></a>快速开始</h2><h3 id="单片机接入"><a href="#单片机接入" class="headerlink" title="单片机接入"></a>单片机接入</h3><ol><li>使用MicroUSB, 5V, 或3V pin脚给单片机供电</li><li>用一根导线连接D0脚与3V3脚,持续一秒以上拔出,以重置单片机</li><li>用手机或电脑搜索它的WiFi热点,名称格式<code>wiot-xx:xx:xx:xx:xx:xx</code></li><li>连接上此热点,密码为<code>1234567890</code></li><li>用浏览器打开网址<code>http://192.168.0.1</code>,记录网页中的MAC地址,这将用于识别此单片机</li><li>配置你无线路由器的ssid(即wifi名称,注意不能有非ASCII字符,比如汉字)和密码</li><li>配置完成后热点将自动断开,单片机将连接到你的无线路由器</li></ol><h3 id="依赖安装"><a href="#依赖安装" class="headerlink" title="依赖安装"></a>依赖安装</h3><p>在你的项目文件夹下打开命令行,输入以下指令安装wiot:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> iot </tag>
<tag> nodeJS </tag>
<tag> WiFi </tag>
</tags>
</entry>
<entry>
<title>中美贸易战-解</title>
<link href="/thoughts/trade-war.html"/>
<url>/thoughts/trade-war.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>中美贸易战的解不在美国,而是在我们自己身上。</p></span><span class=".en"><p>The solution to the Sino-US trade war is not in the United States, but in ourselves.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>关于谈判,党内争议比较大,但最终很有可能会拒绝做出让步。<br>当美关税抬升,国内相关产业链将大批转移至台湾及东南亚国家,累计将造成1亿人口的就业问题。与前几次的危机不同,这一次我们不但要提防房市泡沫的激化,也没有那麽多的基建可提供就业。从另一方面看,近几年来,中国的产能过剩问题主要通过出口得以解决,拿着贸易顺差来发展国内经济,以实现不可思议的经济增长。如今特朗普政府征加关税,将使得这一策略不再行得通。</p><p>如果在谈判中妥协,中方将丧失好不容易占来的第四次工业革命先机,并经济将会想日本,韩国一样任人摆布。</p><p>我认为,在不妥协的前提下,中共有三个破局之法。</p><ol><li>武统台湾<br>这个需要看明年台湾大选,是否能找到正当的武统理由。但的确有助于缓解国内社会焦点问题。</li><li>房市改革<br>可能性极大,把泡沫危机转变成创造就业机会的资本。</li><li>游戏<br>将社会上的过剩劳动力转移进游戏产业空转,以缓解社会矛盾的形成。</li></ol><p>为了缓解失业冲击的强度,央行将通过印人民币使人民币贬值来增进出口,吸引他国来补充美资撤离的空缺。</p><p>以上。。</p></span><span class=".en"><p>Regarding negotiations, there are relatively large disputes within the party, but in the end it is very likely that they will refuse to make concessions.<br>When U.S. tariffs rise, related domestic industrial chains will be transferred to Taiwan and Southeast Asian countries in large numbers, which will cause employment problems for 100 million people. Unlike previous crises, this time we not only have to guard against the intensification of the housing market bubble, but also there is not so much infrastructure that can provide employment. On the other hand, in recent years, China’s overcapacity problem has been solved mainly through exports, and the trade surplus is used to develop the domestic economy in order to achieve incredible economic growth. Now that the Trump administration imposes tariffs, this strategy will no longer work.</p><p>If it compromises in the negotiation, China will lose the opportunity of the Fourth Industrial Revolution that it finally took over, and its economy will be at the mercy of Japan and South Korea.</p><p>I think that under the premise of no compromise, there are three ways to break the game.</p><ol><li>Wu Tong Taiwan<br>This depends on whether Taiwan’s general election next year can find a legitimate reason for military reunification. But it does help alleviate domestic social focus issues.</li><li>Housing market reform<br>It is very possible to turn the bubble crisis into capital for job creation.</li><li>Games<br>Transfer the surplus labor force in the society into the game industry to ease the formation of social conflicts.</li></ol><p>In order to alleviate the intensity of the unemployment shock, the central bank will increase imports and exports by printing the renminbi to depreciate the renminbi, attracting other countries to supplement the vacancy of the withdrawal of US capital.</p><p>the above. .</p></span>]]></content>
<categories>
<category> thoughts </category>
</categories>
<tags>
<tag> war </tag>
</tags>
</entry>
<entry>
<title>咕咕机API</title>
<link href="/tech/memobird-printer-api.html"/>
<url>/tech/memobird-printer-api.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>这是一个简易的咕咕机API哦~</p></span><span class=".en"><p>This is a simple Memobird Printer API~</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><blockquote><p>本API仅为官方接口的二次封装,意在降低其使用门槛。本站承诺不会保存任何使用者信息。如果您对本站存有疑惑,请慎重使用本接口!!本接口<a href="https://github.yimian.xyz/iotcat/gugu-api" target="_blank" rel="noopener">源码</a></p></blockquote><h2 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h2><ul><li><code>ak</code>: 咕咕机AccessKey(前往<a href="https://open.memobird.cn/" target="_blank" rel="noopener">咕咕机开放平台</a>申请)</li><li><code>userID</code>: 用户的咕咕号(手机软件&gt;&gt;我的&gt;&gt;头像旁边的咕咕号)</li><li><code>memobirdID</code>: 咕咕机ID(手机软件&gt;&gt;我的&gt;&gt;我的咕咕机&gt;&gt;咕咕机&gt;&gt;设备编号)</li><li><code>body</code>: 内容</li></ul><h2 id="请求地址"><a href="#请求地址" class="headerlink" title="请求地址"></a>请求地址</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GET https:&#x2F;&#x2F;api.yimian.xyz&#x2F;gugu&#x2F;</span><br></pre></td></tr></table></figure><h2 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;gugu&#x2F;?ak&#x3D;9e55121803474371bfa25d20e554b31d&amp;userID&#x3D;832598&amp;memobirdID&#x3D;c3ee06a8bd9b49e1&amp;body&#x3D;你好呀世界</span><br></pre></td></tr></table></figure><h2 id="返回值-plaintext"><a href="#返回值-plaintext" class="headerlink" title="返回值(plaintext)"></a>返回值(plaintext)</h2><ul><li>成功: </li></ul><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line"><span class="string">"showapi_res_code"</span>: <span class="number">1</span>, <span class="comment">//1为发送成功,0为失败</span></span><br><span class="line"><span class="string">"showapi_res_error"</span>: <span class="string">"ok"</span>, <span class="comment">//"ok"为发送成功,否则显示错误信息</span></span><br><span class="line"><span class="string">"result"</span>: <span class="number">1</span>, <span class="comment">//1为打印成功</span></span><br><span class="line"><span class="string">"smartGuid"</span>: <span class="string">"149e2257412e532e"</span>, <span class="comment">//会话标识符</span></span><br><span class="line"><span class="string">"printcontentid"</span>: <span class="number">234784</span> <span class="comment">//打印内容识别编码</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ul><li>失败:</li></ul><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line"><span class="string">"showapi_res_code"</span>: <span class="number">1</span>, <span class="comment">//1为发送成功,0为失败</span></sp
<categories>
<category> tech </category>
</categories>
<tags>
<tag> api </tag>
<tag> motto </tag>
</tags>
</entry>
<entry>
<title>自动发邮件API</title>
<link href="/tech/mail-api.html"/>
<url>/tech/mail-api.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>重整自己先前的mail模块,顺便封装了一个API出来,欢迎大家调用~</p></span><span class=".en"><p>Reorganized my previous mail module and encapsulated an API by the way. Welcome everyone to call~</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="方法"><a href="#方法" class="headerlink" title="方法"></a>方法</h2><h3 id="参数-接受GET和POST"><a href="#参数-接受GET和POST" class="headerlink" title="参数(接受GET和POST)"></a>参数(接受GET和POST)</h3><ul><li><code>to</code>收信人邮箱地址</li><li><code>subject</code>邮件主题</li><li><code>body</code>邮件内容(建议使用html格式)</li><li><code>from</code>发件人名称</li></ul><h3 id="请求地址"><a href="#请求地址" class="headerlink" title="请求地址"></a>请求地址</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;mail</span><br></pre></td></tr></table></figure><h3 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;mail&#x2F;?to&#x3D;收信邮箱&amp;subject&#x3D;邮件主题&amp;body&#x3D;邮件内容&amp;from&#x3D;发件人名称</span><br></pre></td></tr></table></figure><p>[scode type=”yellow”]如遇到GET传递邮件内容错误,请尝试使用POST[/scode]</p><h3 id="返回值-json格式"><a href="#返回值-json格式" class="headerlink" title="返回值(json格式)"></a>返回值(json格式)</h3><ul><li>参数<code>state</code>::<code>true</code>(成功)或<code>false</code>(失败)</li></ul><p>[scode type=”dangerous”]每个IP每天请求上限50个[/scode]</p></span><span class=".en"><h2 id="Method"><a href="#Method" class="headerlink" title="Method"></a>Method</h2><h3 id="Parameters-accept-GET-and-POST"><a href="#Parameters-accept-GET-and-POST" class="headerlink" title="Parameters (accept GET and POST)"></a>Parameters (accept GET and POST)</h3><ul><li><code>to</code> recipient email address</li><li><code>subject</code> mail subject</li><li><code>body</code> email content (html format is recommended)</li><li><code>from</code> sender name</li></ul><h3 id="Request-address"><a href="#Request-address" class="headerlink" title="Request address"></a>Request address</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;mail</span><br></pre></td></tr></table></figure><h3 id="Example"><a href="#Example" class="headerlink" title="Example"></a>Example</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;api.yimian.xyz&#x2F;mail&#x2F;?to&#x3D;receiving mailbox&amp;subject&#x3D;mail subject&amp;body&#x3D;mail content&amp;from&#x3D;sender name</span><br></pre></td></tr></table></figure><p>[scode type=”yellow”] If you encounter an error in GET delivery of the mail content, please try using POST[/scode]</p><h3 id="Return-value-json-format"><a href="#Return-value-json-format" class="headerlink" title="Return value (json format)"></a>Return value (json format)</h3><ul><li>Parameter <code>state</code>::<code>true</code> (success) or <code>false</code> (failure)</li></ul><p>[scode type=”dangerous”] There are 50 requests per day per IP[/scode]</p></span>]]></conte
<categories>
<category> tech </category>
</categories>
<tags>
<tag> api </tag>
<tag> mail </tag>
</tags>
</entry>
<entry>
<title>JS中那些惊艳的操作</title>
<link href="/tech/js-notes.html"/>
<url>/tech/js-notes.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>教你如何一步步迷上JS.. ╮(╯▽╰)╭ </p></span><span class=".en"><p>Teach you how to fall in love with JS step by step.. ╮(╯▽╰)╭</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>好嘀,只是一些总结 </p><h2 id="JS中的那些萌点"><a href="#JS中的那些萌点" class="headerlink" title="JS中的那些萌点"></a>JS中的那些萌点</h2><ul><li><code>&lt;script&gt;</code>标签中,合理使用<code>defer=&quot;defer&quot;</code>(延迟执行),<code>async=&quot;async&quot;</code>(异步执行)</li><li>外部JS可以使用其它扩展名(如.php),但必须返回正确MINE类型</li><li>使用<code>var obj = preferredObj || backupObj;</code> 提供后备值 ::aru:surprised:: </li><li>函数中使用<code>arguements[]</code>获取参数</li><li>无函数签名,再见吧重载 ::aru:meditation:: </li><li>函数无引用传参,只要不作死用全局变量,封装就很完美</li><li>神奇的垃圾收集功能,开发时无需考虑手动释放内存</li><li>函数传参使用<code>function hh({})</code>直接传包含参数的对象,更加灵活</li><li>数组每一个位置可以存不同类型的数据 ::aru:blood2:: </li><li>数组支持模拟栈操作,如<code>push()</code><code>pop()</code></li><li>数组支持模拟队列操作,如<code>push()</code><code>shift()</code></li><li>数组支持从相反方向模拟队列,如<code>unshift()</code><code>pop()</code></li><li><code>sort()</code>可自定义比较函数为参数</li><li>数组<code>splice()</code>可太好用了吧</li><li>函数是对象,函数名是指针</li><li>可以像传递参数一样把一个函数传给另一个函数,也可以将一个函数作为另一个函数的结果返回</li><li>函数中可通过<code>arguments.callee</code>获取当前函数名指针</li><li>使用<code>arguments.callee.caller</code>获取调用当前函数的引用</li><li>使用<code>function.apply(this/*作用域*/, arguments)</code><code>function.call(this, arg1, arg2...)</code>指定作用域运行函数</li><li>使用函数固有属性<code>function.length</code>获取其期待的参数个数</li><li>通过函数继承属性<code>toLocaleString()``toString()``valueOf()</code>返回代码,方便调试</li><li>使用<code>indexOf()``lastIndexOf()</code>查找元素出现位置</li><li><code>trim()</code>删除字符串开头结尾空格</li><li>支持正则<code>RegExp</code></li><li>神奇但可怕的<code>eval(&quot;&quot;)</code>可将字符串转译成代码并就地执行</li><li><code>encodeURI()/decodeURI()</code><code>encodeURIComponent()/decodeURICompoent()</code>处理uri</li><li>立即调用函数<code>function(){}();</code></li><li>内置Math对象</li><li>Math中<code>ceil()``floor()``round()</code>向上,向下,标准舍入</li><li><code>Math.random()</code>大于零小于一随机数</li><li>对象中使用<code>functionName: function(){}</code>直接定义函数</li><li>ES6中<code>(x)=&gt;x+1</code>等价于<code>function(x){return x+1;}</code></li><li>使用<code>;(function(name, context, definition){moudle.exports = definition();})(&#39;funationName&#39;, this, function(){});</code>封装模块</li></ul><h2 id="小心得"><a href="#小心得" class="headerlink" title="小心得"></a>小心得</h2><ul><li>不建议使用<code>with</code>语句</li><li><code>label</code>标签少用</li><li><code>0.1 + 0.2 != 0.3</code> 浮点型天坑,与C类似</li><li><code>~26 == -27</code> 利用按位非提高效率</li><li>标识符查询由内部环境向外部环境进行</li><li>没有块级作用域,与C++不同</li><li><code>var obj2 = obj1;</code><EFBFBD><EFBFBD>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> nodeJS </tag>
</tags>
</entry>
<entry>
<title>Centos7下 Nginx 配置ssl证书自动续期</title>
<link href="/tech/ssl-auto-apply.html"/>
<url>/tech/ssl-auto-apply.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>断断续续玩web已经一年了,一些之前从腾讯云申的TrustAsia证书已经陆陆续续开始过期,很方..于是开始尝试申请Let’s Encrypt的免费证书,并实现自动续期|´・ω・)ノ</p></span><span class=".en"><p>I’ve been playing on the web intermittently for a year, and some of the TrustAsia certificates from Tencent’s Yunshang have started to expire one after another. It’s very fragrant.. So I started to try to apply for Let’s Encrypt’s free certificate, and realized automatic renewal|´・ω・)ノ</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'en'){ tips.warning({ title: 'Caution', position: 'topRight', message: 'This page was translated by Machine!!', buttons: [['<button>Show Original Page</button>', function (instance, toast) { page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]] }); } });</script><span class=".zh"><h2 id="前提条件"><a href="#前提条件" class="headerlink" title="前提条件"></a>前提条件</h2><ul><li>必须是Centos7系统,其它未测试,不保证有效</li><li>有自己的域名</li><li>确认dns已将域名指向服务器</li><li>防火墙放行80与443端口</li><li>已配置好nginx代理,并<code>可以通过http访问域名</code>(一定确定能访问)</li></ul><h2 id="安装certbot"><a href="#安装certbot" class="headerlink" title="安装certbot"></a>安装certbot</h2><p>通过yum安装certbot</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ yum update #更新yum源</span><br><span class="line">$ yum install -y epel-release #安装epel源</span><br><span class="line">$ yum install -y certbot #安装certbot</span><br></pre></td></tr></table></figure><h2 id="初次申领证书"><a href="#初次申领证书" class="headerlink" title="初次申领证书"></a>初次申领证书</h2><h3 id="初次申领某域名证书"><a href="#初次申领某域名证书" class="headerlink" title="初次申领某域名证书"></a>初次申领某域名证书</h3><p>格式为</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos</span><br></pre></td></tr></table></figure><p>例如</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ certbot certonly --webroot -w &#x2F;opt&#x2F;www&#x2F;demo.yourdomain.com -d demo.yourdomain.com -m yourname@gmail.com --agree-tos</span><br></pre></td></tr></table></figure><h3 id="证书位置"><a href="#证书位置" class="headerlink" title="证书位置"></a>证书位置</h3><p>证书存放在<code>/etc/letsencrypt/live/demo.yourdomain.com/</code>文件夹中。<br>一共有4个文件,你可能要用到的是<code>fullchain.pem</code><code>privkey.pem</code></p><h3 id="配置nginx"><a href="#配置nginx" class="headerlink" title="配置nginx"></a>配置nginx</h3><p>在相应的<code>server{}</code>中加入以下内容:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">listen 443 ssl;</span><br><span class="line"></span><br><span class="l
<categories>
<category> tech </category>
</categories>
<tags>
<tag> centos7 </tag>
<tag> ssl </tag>
</tags>
</entry>
<entry>
<title>数电期中总结</title>
<link href="/notes/digital-circuit.html"/>
<url>/notes/digital-circuit.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>上学期掉了魔电的坑,这学期来搞点数电小攻略掩饰一下(☆ω☆)</p></span><span class=".en"><p>I lost the pit of magic electricity last semester. This semester, let’s make a small strategy to hide it (☆ω☆)</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h1 id="1-数制与码制"><a href="#1-数制与码制" class="headerlink" title="1. 数制与码制"></a>1. 数制与码制</h1><h2 id="二进制运算"><a href="#二进制运算" class="headerlink" title="二进制运算"></a>二进制运算</h2><h3 id="补码"><a href="#补码" class="headerlink" title="补码"></a>补码</h3><p>常用补码来表示负数,以便于计算。<br>正数和零补码是其自身,负数的补码方法如下:<br>二进制减法可以通过被减数加要减数的补码来实现。<br><strong>&lt;法一&gt;直接法</strong><br>$$(N)_{COMP}=\begin{cases}N&amp;\text{N为正数}\2^{n}-N&amp; \text{N为负数} \end{cases}$$</p><p>符号位为零(正数)时,补码与源码相同,符号位为1(负数)时,补码为$2^{n}-N$.<br><strong>&lt;法二&gt;观察法</strong><br>欲求补码,可以先找其反码。<br>$$(N)_{INV}=\begin{cases}N&amp;\text{N为正数}\(2^{n}-1)-N&amp; \text{N为负数} \end{cases}$$</p><p>即,除符号位外其他值0变1,1变0。<br>随后反码整体加1即可得到补码~</p><h2 id="常用编码"><a href="#常用编码" class="headerlink" title="常用编码"></a>常用编码</h2><h3 id="DCB"><a href="#DCB" class="headerlink" title="DCB"></a>DCB</h3><p>即8421恒权码。DCB作为10进制显示时,须在每一个Invalid位(&gt;9)上加6。</p><h3 id="Signed-Numbers"><a href="#Signed-Numbers" class="headerlink" title="Signed Numbers"></a>Signed Numbers</h3><p>使用8位,最左边一位表示符号,其余7位表示数值。</p><h2 id="期中总结"><a href="#期中总结" class="headerlink" title="期中总结"></a>期中总结</h2><h3 id="第一周-初识数电"><a href="#第一周-初识数电" class="headerlink" title="第一周 - 初识数电"></a>第一周 - 初识数电</h3><ul><li>模拟量太复杂,不符合人类思维</li><li>三极管MOS管等非线性器件为魔转数提供了器件基础</li><li>因为模电太难,所以我们要学数电<br><strong>一些要点</strong></li><li>TTL意思是指晶体管逻辑电路,由各种三极管和电阻组成,特点是速度快</li><li>TTL中0-0.8V为低电平,2-5V为高电平</li><li>二进制与十进制相互转换(整数/小数)</li><li>LSB(Least Significant Bit)/MSB(Most S B)</li></ul><h3 id="第二周-数制"><a href="#第二周-数制" class="headerlink" title="第二周 - 数制"></a>第二周 - 数制</h3><ul><li>反码 1’s Complement</li><li>补码 2’s Complement</li><li>有时候二进制太长不好用,这使16进制很方便</li><li>16进制类似2进制的助记符,如观察<code>1100 0101</code>可直接写出<code>C5</code></li><li>BCD是用一个16进制表示一个10进制数</li><li>BCD很符合人类的思维习惯,但造成极大的资源浪费</li><li>BCD四则运算,我觉得最好转成10进制算完再转回去,反正很方便</li><li>计算机BCD加法采取+6进位法</li><li>数字储存时最左一位是符号位</li><li>负数使用补码来存储(<a href="https://zhidao.baidu.com/question/1692306348989800588.html" target="_blank" rel="noopener">栗子</a>)</li><li>1字节signed数字范围<code>-128-127</code></li><li>合理设计存储位数,小心溢出</li><li><a href="https://zhidao.baidu.com/question/293829485.html" target="_blank" rel="noopener">二进制乘法</a></li><li><a href="https://zhidao.baidu.com/question/30409175
<categories>
<category> notes </category>
</categories>
<tags>
<tag> circuit </tag>
</tags>
</entry>
<entry>
<title>经济,环境可持续性</title>
<link href="/thoughts/economy-environment-sustainability.html"/>
<url>/thoughts/economy-environment-sustainability.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>经济学是一门研究选择的学问。人们活在世上总是在进行着各种选择。发展落后的国家希望尽快工业化发展经济,来改善自己的生存环境。而工业化后的国家则希望发展同时兼顾环境。于是落后国家需要50年来发展工业,搞基建,破坏环境。之后的50年则拼命治理环境,发展生态。由于地球生态是一个整体,发达国家非常不爽落后的国家搞工业化污染环境,于是各种矛盾。不过在21世纪,有望利用信息数字科技打破50-50年法则,为新一批的国家崛起提供蹊径( ๑´•ω•) “</p></span><span class=".en"><p>Economics is a study of choice. People are always making various choices in the world. Countries that are underdeveloped hope to industrialize and develop their economy as soon as possible to improve their living environment. The post-industrial countries hope to develop while taking the environment into consideration. So backward countries need 50 years to develop industry, engage in infrastructure construction, and destroy the environment. For the next 50 years, he worked hard to control the environment and develop the ecology. Because the earth’s ecology is a whole, developed countries are very upset and backward countries are engaged in industrialization and polluting the environment, so various contradictions arise. However, in the 21st century, it is expected to use information and digital technology to break the 50-50 year rule and provide a path for the rise of a new group of countries (๑´•ω•) “</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="为什么追求发展"><a href="#为什么追求发展" class="headerlink" title="为什么追求发展"></a>为什么追求发展</h2><p>自然环境较为恶劣,不完全适合人类生存。于是具备主观能动性的人类开始由改造环境的冲动。这一心理行为逐步早就了名为“发展”的宏伟故事,大家都对其深信不已。就像故事中所描述的一样,人们为了实现这一目标开始减少内耗(战争),社会趋于高度分工化。</p><p>人类有一种基本心理效应叫蔡格尼克效应,讲的是人如果开始做一件事情便会难以在中途停下来。这一效应在群体行为中则会变本加厉的体现。当人们开始追求发展,并且得到了一定的激励(生活的确更舒适了,至少人们是这样认为的),于是这个势头便不会轻易停下来了,于是人类进入了千年级别的发展时期。</p><p>发展初期,太多的基础设施需要建设,太多的工业需要发展,最重要的是这个时候大家都很穷,都只是在一个信念的支撑下在向着发展的目标努力搞生产。而且一般当这个时候,往往会有其他强国对你虎视眈眈,所以这个时候,大家都会很团结,但不会像祖先以及后辈一样在乎什么环境生态的。只有一个想法便是希望发展起来。</p><p>经过大约50年的发展,生活好了,底气足了,开始关注一些更长久的事情,比如教育和环境。于是接下来的50年,开始拼命治理环境,搞教育。于是渐渐的环境好了,下一代也成长起来了。于是年轻一代们便利用他们头脑中的书本知识,开始批判祖先们破坏环境这不好那不好,开始投科研资金,股市凡是跟环保相关的板块开始居高不下,可持续发展开始成为许多人的口头禅。而这时,当时那些破坏环境的罪魁祸首们正退休在家里乐呵呵的看着这一切的发生。大概就是这么一个过程了。</p><h2 id="Envi
<categories>
<category> thoughts </category>
</categories>
<tags>
<tag> development </tag>
<tag> environment </tag>
</tags>
</entry>
<entry>
<title>气候变化与全球环境</title>
<link href="/thoughts/global-climate-change.html"/>
<url>/thoughts/global-climate-change.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>全球气候变化与人类行为有着显著的相关性,人类行为又会改变气候的自然变化。通过研究Ice core等Archive,发现地球历史中温度与$CO_{2}$浓度有着显著正相关性。如今,人类行为使大气$CO_{2}$含量远超其正常水平,其可能引起全球变暖,冰川融化等,但仅为可能..</p></span><span class=".en"><p>Global climate change has a significant correlation with human behavior, and human behavior will change the natural changes in climate. By studying Archives such as Ice core, it is found that there is a significant positive correlation between the temperature and the concentration of $CO_{2}$ in the history of the earth. Nowadays, human behavior makes the atmospheric content of $CO_{2}$ far exceed its normal level, which may cause global warming, melting of glaciers, etc., but it is only possible…</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="概念简介"><a href="#概念简介" class="headerlink" title="概念简介"></a>概念简介</h2><h3 id="天气与气候"><a href="#天气与气候" class="headerlink" title="天气与气候"></a>天气与气候</h3><p>天气是指一段较短时间段内的大气状态,而气候研究的主要使更长时间中周期行动大气状态规律。简言之,气候是周期变化的天气。气候具备地域性,随纬度与海陆分布密切相关。在更长的时间维度上,我们发现地球的气候变迁也呈现出显著的周期性。</p><p><img src="https://api.yimian.xyz/img/?path=imgbed/img_8a6ca9c_720x237_8_null_normal.jpeg" alt="地球历史温度变迁"></p><p>上图描述了地球的历史温度,其具有明显的周期性。值得注意的是,每当全球气候变暖,便会激发物种爆炸。而现在,正处于一次小规模的温度上升期,且温度上升速度与历史数据并无太大异常,因此无法确凿证明其与人类二氧化碳排放有关。</p><h2 id="研究方法"><a href="#研究方法" class="headerlink" title="研究方法"></a>研究方法</h2><h3 id="直接法(研究现代)"><a href="#直接法(研究现代)" class="headerlink" title="直接法(研究现代)"></a>直接法(研究现代)</h3><ol><li>记录温度</li><li>记录降雨量 (Precipitation)</li><li>研究植被 (Vegetation)</li><li>海平面</li><li>冰川 (Glaciers) :: 主要通过研究冰盖融化与生成的Balance</li></ol><h3 id="间接法(研究历史)"><a href="#间接法(研究历史)" class="headerlink" title="间接法(研究历史)"></a>间接法(研究历史)</h3><ol><li>Proxy</li><li>Archive e.g. “Ice Core” ::从冰层(Ice Sheet)中提取的分层的冰棍标本</li></ol><h3 id="Ice-Core分层原因"><a href="#Ice-Core分层原因" class="headerlink" title="Ice Core分层原因"></a>Ice Core分层原因</h3><p>积雪后,随着时间推移,积雪会经历以下几种状态:</p><ol><li>Snow (几小时,主要成分是空气)</li><li>Firn (几天,粒雪)</li><li>Glacial Ice (数年)</li></ol><h3 id="时间追溯方法"><a href="#时间追溯方法" class="headerlink" title="时间追溯方法"></a>时间追溯方法</h3><p>由于积雪时的温度不同,因此冰层中会以年为单位周期变化,通过计数层数即可获得某一冰层的所属年代。<br><img src="https://api.yimian.xyz/img/?path=imgbed/img_c2461c9_600x400_8_null_normal.jpeg" alt="冰层"></p><h3 id="历史温度研究方法"><a href="#历史温度研究方法" class="headerlink" title="历史温度研究方法"></a>历史温度研究方法</h3><p>大气中${}^{18}O/{}^{16}O$比值与温度密切相关,因此通过测量<EFBFBD>
<categories>
<category> thoughts </category>
</categories>
<tags>
<tag> environment </tag>
<tag> climate </tag>
</tags>
</entry>
<entry>
<title>工程电磁学</title>
<link href="/notes/electromagnetism.html"/>
<url>/notes/electromagnetism.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>麦克斯韦大法好!!</p></span><span class=".en"><p>Maxwell Dafa is good! !</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h3 id="先供上麦克斯韦方程-膜拜膜拜-o-•ェ•-o"><a href="#先供上麦克斯韦方程-膜拜膜拜-o-•ェ•-o" class="headerlink" title="先供上麦克斯韦方程 膜拜膜拜( o=^•ェ•)o"></a>先供上麦克斯韦方程 膜拜膜拜( o=^•ェ•)o</h3><div style="overflow:scroll;"><p>$$<br>\nabla\cdot\vec{E} = \frac{\rho}{\varepsilon_0}<br>$$</p><p>$$<br>\nabla\cdot\vec{B} = 0<br>$$</p><p>$$<br>\nabla\times\vec{E} = -\frac{\partial B}{\partial t}<br>$$</p><p>$$<br>\nabla\times\vec{B} = \mu_0\left(\vec{J}+\varepsilon_0\frac{\partial E}{\partial t} \right)<br>$$</p></div><hr><h2 id="第一话-高斯生库伦"><a href="#第一话-高斯生库伦" class="headerlink" title="第一话 - 高斯生库伦"></a>第一话 - 高斯生库伦</h2><ul><li>假设空间中两点电荷$Q_{1}$,$Q_{2}$,相距d,欲求其相互作用的电场力。</li><li>现以$Q_{1}$为圆心,$d$为半径做球。根据高斯law可知球面上的电通量只与球内电荷量有关,本例中为$\frac{Q_{1}}{\varepsilon_0}$。</li><li>将上式中电通量除以求表面积可得电场强度$\frac{Q_{1}}{4\pi d^{2}\varepsilon_0}$</li><li>场强乘以$Q_{2}$即可得库仑力$\frac{Q_{1}Q_{2}}{4\pi d^{2}\varepsilon_0}$</li><li>令$k=\frac{1}{4\pi \varepsilon_0}$整理得<br>$$F = \frac{k Q_{1}Q_{2}}{d^{2}}$$<br>证毕</li></ul><h2 id="第二话-高斯金箍棒"><a href="#第二话-高斯金箍棒" class="headerlink" title="第二话 - 高斯金箍棒"></a>第二话 - 高斯金箍棒</h2><ul><li>假设一均匀带电长度正无穷细杆,电荷密度为$\lambda$,求距其$d$处场强。</li><li>绕杆画一个过待求点的圆柱,设高为$x$。</li><li>由于杆长无限,圆柱两底面电场被抵消。</li><li>圆柱侧面积为$2\pi dx$</li><li>圆柱内电荷量为$\lambda x$</li><li>引入高斯,得<br>$$<br>2\pi dxE = \frac{\lambda x}{\varepsilon_{0}}<br>$$<br>整理得<br>$$<br>E = \frac{\lambda}{2\pi d\varepsilon_{0}}<br>$$<br>证毕</li></ul><h2 id="高斯球球球"><a href="#高斯球球球" class="headerlink" title="高斯球球球"></a>高斯球球球</h2><ul><li>首先要有一个带电小球,电量$Q$,想求其外部距其圆心$d$处场强。</li><li>然后可列式<br>$$<br>4\pi d^2 E = \frac{Q}{\varepsilon_0}<br>$$<br>整理得<br>$$<br>E = \frac{Q}{4\pi \varepsilon_0 d^2}<br>$$<br></li></ul><h2 id="高斯大面"><a href="#高斯大面" class="headerlink" title="高斯大面"></a>高斯大面</h2><ul><li>首先有一个均匀带电无穷面,带电面密度$\rho$,欲求距其$d$的点场强。</li><li>以无穷面为中央横截面,做一个底面圆心为待求点的圆柱,半径为$r$。</li><li>由于电场线皆平行,只有两个底面有电场线穿过。</li><li>可列式<br>$$<br>2\pi r^2 E = \frac{\rho \pi r^2}{\varepsilon_0}<br>$$<br>整理得<br>$$<br>E = \frac{\rho}{2\varepsilon_0}<br>$$<br>完事</li></ul><hr><p>To Be Continued…</p></span><span class=".en"><h3 id="First-offer-to-Maxwell’s-equation-worship-o-•ェ•-o"><a href="#First-offer-to-Maxwell’s-equation-worship-o-•ェ•-o" class="headerlink" title="First offer to Maxwell’s equation, worship ( o=^•ェ•)o"></a>First offer to Maxwell’s equation, worship ( o=^•ェ•)o</h3><div style="overflow:scroll;"><p>$$<br>\nabla\cdot\vec{E} = \frac{\rho}{\varepsilon_0}<br>$$</p><p>$$<br>\nabla\cdot\vec{B} = 0<br>$$</p><p>$$<br>\nabla\times\vec{E} = -\frac{\partial B}{\partial t}<br>$$</p><p>$$<br>\nabla\times\vec{B} = \mu_0\left(\vec{J}+\varep
<categories>
<category> notes </category>
</categories>
<tags>
<tag> maxwell </tag>
</tags>
</entry>
<entry>
<title>总结一下我的代码风格</title>
<link href="/tech/my-code-style.html"/>
<url>/tech/my-code-style.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>我的代码风格大致有以下几种情况:组织中追随组织领导,公司里老板说的都对,学校里大佬教的都好╮(╯▽╰)╭ 仅其它一些自己的开源小项目则遵循以下风格→_→</p></span><span class=".en"><p>My coding style is roughly in the following situations: I follow the leadership of the organization, the boss in the company is right, and the big guys in the school teach well ╮(╯▽╰)╭ Only some other small open source projects of their own follow The following style→_→</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="关于强迫症"><a href="#关于强迫症" class="headerlink" title="关于强迫症"></a>关于强迫症</h2><p>首先说好,</p><p>四个空格的Tab缩进大法好!!!<br>四个空格的Tab缩进大法好!!!<br>四个空格的Tab缩进大法好!!!</p><p>大括号不换行!!!<br>大括号不换行!!!<br>大括号不换行!!!</p><h2 id="关于命名"><a href="#关于命名" class="headerlink" title="关于命名"></a>关于命名</h2><p>命名以让别人一眼就能明白为佳,理想中看你的代码就像读一首英语小诗般惬意 ::aru:insidious:: </p><h3 id="常-变量命名"><a href="#常-变量命名" class="headerlink" title="常/变量命名"></a>常/变量命名</h3><p>编译器常量全大写,字符间用单下划线连接。如:</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">define</span> WIFI_PASSWD 12345</span></span><br></pre></td></tr></table></figure><p>变量基本采用小驼峰命名,规则是单词之间直接连接(无需下划线),第一个单词全小写,之后的单词首字母大写。如:</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">String</span> usrName = <span class="string">"IoTgod"</span>;</span><br></pre></td></tr></table></figure><p>频繁调用的变量名称不易过长,但却要表意清晰。<br>要实现这一点,可以尝试部分省略单词中的非首字母元音,如 user 可以简写为 usr,password 可省略为 passwd 或 psswd。但简化后的名字仍需容易辨识。</p><p>全局变量使用 g_ 加变量名称命名,如</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">global <span class="keyword">int</span> g_isLightOn = <span class="number">0</span>;</span><br></pre></td></tr></table></figure><p>局部静态变量使用 s_ 加变量名称,如</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">static</span> <span class="keyword">int</span> s_errorCounter = <span class="number">0</span>;</span><br></pre></td></tr></table></figure><p>常量变量,命名与普通变量一致,如</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="keyword">float</span> pi = <span class="number">3.14159265</span>;</span><br></pre></td></tr></table></figure><h3 id="函数命名"><a href="#函数命名" class="headerlink" title="函数命名"></a>函数命名</h3><p>函数命名技巧偷师自大名鼎鼎的<a href="https://nginx.org" target="_blank" rel="noopener">Nginx</a>,并<EFBFBD><EFBFBD>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> cpp </tag>
</tags>
</entry>
<entry>
<title>Centos7脚本一键安装Typecho</title>
<link href="/tech/centos7-auto-install-typecho.html"/>
<url>/tech/centos7-auto-install-typecho.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>一时兴起,帮番茄同学(<a href="https://tomatotrees.xyz" target="_blank" rel="noopener">@番茄树</a>)配置了博客,在此记录一下流程 </p></span><span class=".en"><p>On a whim, help Pomodoro (<a href="https://tomatotrees.xyz" target="_blank" rel="noopener">@tomatotree</a>) configure a blog, and record the process here</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="先觉条件"><a href="#先觉条件" class="headerlink" title="先觉条件"></a>先觉条件</h2><ul><li>只测试过阿里云腾讯云Centos7学生机</li><li>系统很干净,最好刚重装过</li><li>使用root权限</li></ul><h2 id="一键安装"><a href="#一键安装" class="headerlink" title="一键安装"></a>一键安装</h2><p>无聊写了一个一键搭建脚本,使用如下指令运行(详见<a href="https://github.com/IoTcat/typecho-auto-install-centos7" target="_blank" rel="noopener">github</a></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ wget https:&#x2F;&#x2F;yimian-setup.obs.myhwclouds.com&#x2F;sh&#x2F;auto.sh &amp;&amp; sh auto.sh</span><br></pre></td></tr></table></figure><p>如果不出意外安装将自动进行,安装最后需要你手动输入如下数据库配置指令。</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">use mysql</span><br><span class="line">UPDATE user SET Password &#x3D; &#39;你的密码&#39; WHERE User &#x3D; &#39;root&#39;;</span><br><span class="line">create database typecho;</span><br><span class="line">quit</span><br></pre></td></tr></table></figure><h2 id="轻松开始"><a href="#轻松开始" class="headerlink" title="轻松开始"></a>轻松开始</h2><p>安装完成后,使用你的浏览器访问以下链接</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http:&#x2F;&#x2F;你的服务器ip</span><br></pre></td></tr></table></figure><p>根据页面提示安装typecho<br>大部分内容保持默认即可,只需填写:</p><ul><li>数据库密码(你刚才设置的)</li><li>管理员用户名</li><li>管理员登录密码</li><li>管理员邮箱地址</li></ul><h2 id="自定义域名配置"><a href="#自定义域名配置" class="headerlink" title="自定义域名配置"></a>自定义域名配置</h2><p>首先在你的域名服务商(腾讯云,阿里云)将你的域名A解析到你的服务器ip<br><strong>打开服务器上nginx配置文件</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ vi &#x2F;etc&#x2F;nginx&#x2F;nginx.conf</span><br></pre></td></tr></table></figure><p>将文件中第42,47,48行的 your_domain 替换成你自己的域名即可。<br><strong>重启nginx服务</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ systemctl nginx -t # nginx.conf 语法检查</span><br><span class="line">$ systemctl restart nginx # 重启nginx</span><br></pre></td></tr></table></figure><p>然后大约经过10分钟,你就可以通过<code>https://你的域名</code>访问typecho了</p><h2 id="https配置"><a href="#https配置" class="headerlink" title="https配置"></a>htt
<categories>
<category> tech </category>
</categories>
<tags>
<tag> centos7 </tag>
<tag> php </tag>
<tag> typecho </tag>
</tags>
</entry>
<entry>
<title>C++建库中遇到的坑</title>
<link href="/tech/cpp-summary.html"/>
<url>/tech/cpp-summary.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>由于学校课程安排,作为一只电气狗第一次正经的开始搞Cpp ::aru:shy::<br>特记录一些建库过程遇到的坑,,→_→</p></span><span class=".en"><p>Due to the school curriculum, as an electric dog, it is the first time to start doing Cpp .<br>Specially record some pits encountered in the process of building a database, →_→</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'en'){ tips.warning({ title: 'Caution', position: 'topRight', message: 'This page was translated by Machine!!' }); } });</script><span class=".zh"><h2 id="关于-h文件"><a href="#关于-h文件" class="headerlink" title="关于.h文件"></a>关于.h文件</h2><p>作为头文件,.h中一般放有相应类及函数的声明。<br>一个典型的.h文件如下:(FileName: yimian.h)</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">ifndef</span> YIMIAN_H <span class="comment">//防止本文件被多次编译</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> YIMIAN_H <span class="comment">//'YIMIAN_H'的值需自定义</span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">//.h中可能用到的lib</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;string&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>; <span class="comment">//使用std命名空间,这样下面就可以不用写如std::cout了</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//声明yimian类</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">yimian</span>&#123;</span></span><br><span class="line"> <span class="keyword">public</span>: <span class="comment">//公共域(可外界直接调用)</span></span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">hi</span><span class="params">()</span></span>;</span><br><span class="line"> <span class="keyword">static</span> <span class="built_in">string</span> version;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">private</span>: <span class="comment">//私有(不对外公开)</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="meta-keyword">endif</span> <span class="comment">//与文件开头防多次编译相对应</span></span></span><br></pre></td></tr></table></figure><p>为了安全起见,函数以及变量的初始化一般不放在.h文件中进行。而是习惯于建一个新的同名.cpp文件。<br>下面是一个与上午相对应的.cpp文件示例:(FileName: yimian.cpp)</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br
<categories>
<category> tech </category>
</categories>
<tags>
<tag> cpp </tag>
</tags>
</entry>
<entry>
<title>2018 – 年度总结</title>
<link href="/life/2018-retrospect-and-prospect.html"/>
<url>/life/2018-retrospect-and-prospect.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>白驹过隙,挥别2018,走向2019..</p><p>作为完全独立生活的第一年,失去约束,放飞自我,狠狠地狂野了一把。然后,竟然还意外地做成了不少事情..</p></span><span class=".en"><p>In the blink of an eye, I bid farewell to 2018 and march towards 2019..<br>As the first year of a completely independent life, I lost my inhibitions and let myself go wild.Then, unexpectedly also accomplished many things unexpectedly..</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="代码方面:"><a href="#代码方面:" class="headerlink" title="代码方面:"></a>代码方面:</h2><ul><li>最大的收获是发现并加入了Github</li><li>掌握了不少新语言,嗯数一数有C, C++, PHP, JavaScript, vbs, HTML, CSS, Python, shell, dos, Matlab (大致是按照熟练顺序吧)</li><li>经营着7台服务器,一台win2012在上海(第一台),三台cent在悉尼,亚特兰大和伦敦,国内两台Cent 在深圳和北京,再加上宿舍里的ubuntu树莓派,哈哈哈,,,</li></ul><h3 id="上半年"><a href="#上半年" class="headerlink" title="上半年"></a>上半年</h3><ul><li>上半年帮爸爸搞万宗商业,通过ftp连上海服务器,勉强搞了个公司网站出来,可惜暑假被‘拉脱维亚’(至少IP是)的黑客朋友搞掉了,从此弃坑windows</li><li>5,6月份尝试搞过一个Steel15高中同学平台,但因为企划模式不切实际等原因,进度一直搁置,最终也在8月份一起被黑掉了(从此养成勤备份好习惯( •̀ ω •́ )y)</li><li>7月在欧朗研发部时和组员一起做了一个基于微信小程序的学生电子ID卡,我在其中算是担任后端工程师吧,并且最后还在学校和企业大佬面前做了项目答辩哦</li><li>暑假在家中用wifiduino搞了两个项目,太阳能自动加水和走廊灯的自感应化,设计和采购材料时接触了一些水管和电线的知识。据说目前板子仍然运行良好哦</li></ul><h3 id="9,10月份"><a href="#9,10月份" class="headerlink" title="9,10月份"></a>9,10月份</h3><ul><li>9月份的话,开始进军Linux, 通过Vultr搞了不少服务器做尝试,搭建了私人的ss服务器,自此科学上网</li><li>9月份,基于开源的NextCloud在伦敦docker搭建了第一个私人网盘,一直使用至今,只是国内访问速度,,( ̄▽ ̄)”,,希望去英国后能好一点</li><li>9月份,重建了宿舍的IoT系统,目前虽然出过几次bug但总体而言运行良好</li><li>10月份,不爽于诸多被禁番剧,着手搭建第一代Yimian Video视频平台</li><li>10月份,多次尝试搞Linux Mail服务,均失败,至今沿用5月份的Windows Mail</li><li>10,11月份,C语言as搞了一个数据联网同步,有背景音乐的石头剪刀小游戏</li><li>10月份,开发了一个短信验证码login系统</li><li>10月,基于shell以及一系列Linux软件结合Nginx搞了一个ss服务器的端口流量管理和统计系统,然后对同学朋友开放帮助他们科学上网(不过北京朋友反应上不了,大概是北京的墙比较高吧,望今年通过增添混淆解决)</li></ul><h3 id="11,12月份"><a href="#11,12月份" class="headerlink" title="11,12月份"></a>11,12月份</h3><ul><li>11月,跟着北大一个网课,尝试搞Python TensorFlow的图像识别,然后成功半途而废掉了。。不过终于对AI有了实践性的了解,理解到目前的神经网络本质是用一坨多项式去fit一个复杂的自然函数</li><li>11月,入手了人生第一台树莓派,搭配上红外摄像头,目
<categories>
<category> life </category>
</categories>
<tags>
<tag> summary </tag>
</tags>
</entry>
<entry>
<title>人类的两个基本需求</title>
<link href="/thoughts/two-fundamental-demands-of-human-beings.html"/>
<url>/thoughts/two-fundamental-demands-of-human-beings.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>人类的需求可以总结为两类,创造需求的需求,与解决需求的需求。</p></span><span class=".en"><p>Human needs can be summarized into two categories, the need to create needs, and the need to solve needs.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="历史缘由"><a href="#历史缘由" class="headerlink" title="历史缘由"></a>历史缘由</h2><p>在过去的几亿年中,由于生存资源的稀缺,自然界不断通过“物竞天择,适者生存”的法则筛选物种。这使得“一切为了生存”成为了几乎所有物种的“目标函数”。在众多存活下来的物种中,只有人类创造并有效利用了语言这一工具。语言使得人类能够进行更加复杂的推理思维(想象)以及更加有效的个体间信息交流。得益于语言,人类机智地通过预测潜在的自然选择要求提前准备必要的生存资源并建立了协调资源创造(分工)与资源分配的有效体制(市场,贸易)。不可避免地,基于“一切为了生存”这一习惯以及想象与预测这一种能力,人类形成了自主创造需求以及解决需求的行为模式,由此产生了两种基本行为动机,即创造需求的需求与解决需求的需求。</p><h2 id="理论验证"><a href="#理论验证" class="headerlink" title="理论验证"></a>理论验证</h2><p>观察现有人类社会架构,无论社会群体形态是政府,社会组织还是企业(公司),其本质都是一个协调不同人类创造需求的需求与解决需求的需求的闭环生态中的一环。如果一个政府,社会组织或企业无法再继续充当好一个协调人类需求中的闭环生态的一个环节,它将迅速的被其它能更高效发挥其角色的同类或非同类社会群体替代掉。</p><p>马云是一位伟大的企业家与战略家,他一手缔造的淘宝电商平台与移动快捷支付使得人们创造需求的需求与解决需求的需求的协调变得更加高效。这使阿里巴巴获得了极大的群众的信任,表现出来就是阿里具备的极高的资源支配权,也就是其极高的市值。</p><h2 id="理论预测"><a href="#理论预测" class="headerlink" title="理论预测"></a>理论预测</h2><p>当人类内部的资源因为某种原因(生产或流通环节出问题)不足以支持所有人的生存时,多余出的人类数量总会以某种形式被抹掉,也就是著名的马尔萨斯陷阱。当一个国家或民族自身遭遇马尔萨斯陷阱时,它总会选择向外发动战争来解决。因为既然要抹掉的人口数量是相对固定的,那么如果向外发动战争就会有更多的本族或本国人能够活下来,只是要将部分的死亡转移至外邦人口。古时的匈奴,二战的德国和日本都是非常典型的例子。</p><p>观察历史上的战争,有两次规模很大,我们称之为第一,二次世界大战。第一次世界大战是由于大批量机器取代人力,使得大量原有人力劳动力需要转移。但是劳动力太多没办法短时间转移,表现出来就是失业率飞涨,太多的人无所事事,没有收入,难以生存。为了防止这部分劳动力失控闹事,只得转移其注意力向外发动战争。这就是协调人创造需求的需求与满足需求的需求的市场体制出问题所导致的资源流通停滞所导致的。二战亦是如此,当电力驱动将以往的蒸汽驱动取代,大量劳动力亟需转型。1933年美国率先出现此类问题,罗斯福政府因为有多年发展积累下来的资本,因此可以通过<EFBFBD>
<categories>
<category> thoughts </category>
</categories>
<tags>
<tag> society </tag>
</tags>
</entry>
<entry>
<title>Hello Typecho</title>
<link href="/tech/hello-typecho.html"/>
<url>/tech/hello-typecho.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>将blog从wordpress迁移到了Typecho。</p></span><span class=".en"><p>Migrated blog from wordpress to Typecho.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"></span><span class=".en"></span>]]></content>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> hexo </tag>
</tags>
</entry>
<entry>
<title>边缘计算与物联网</title>
<link href="/thoughts/fog-architecture-and-internet-of-things.html"/>
<url>/thoughts/fog-architecture-and-internet-of-things.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>在过去的几十年中,互联网迅速发展,在人们的生活中起着越来越重要的作用。 在地球上几乎所有人类的参与之后[1],开发人员不可避免地期望为互联网提供更多可用的东西,然后产生了物联网(IoT)的想法。 遗憾的是,在大量事物连接到Internet的情况下,其当前体系结构似乎并不是IoT的高效解决方案。 Bonomi等。 思科的文献[2]首先注意到了这个问题,然后他们提出了革命性的Fog概念,以适应即将到来的物联网时代对越来越多的各种设备的访问。 本文将论证雾概念可以对促进物联网建设产生重大影响。</p></span><span class=".en"><p>In the past few decades, Internet has been rapidly expanding and it plays an increasingly important role in people’s life. After the involvement of nearly all humans on the earth [1], developers, inevitably, expected to make more things available for the internet, which then generated the idea of the Internet of Things (IoT). Regrettably, in the case that a considerable number of things connect to the internet, its current architecture seems not to be a so efficient solution for IoT. Bonomi et al. [2] from Cisco firstly noticed this issue and they then put forward a revolutionary concept of Fog to satisfy the access of a surging number and variety of devices in the coming IoT era. This essay will argue that the Fog concept can have considerable impact on promoting IoT construction.</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'zh'){ tips.warning({ title: '注意', position: 'topRight', message: '此页面由机器翻译为中文!!', buttons: [['<button>查看原文</button>', function (instance, toast) { page.tran.setLang('en'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]] }); } });</script><span class=".zh"><p>关于Internet的体系结构是集中式还是分布式的,引起了广泛的争议。在过去的几年中,集中化(也被称为云)已逐渐应用于现代互联网的实用结构。在此概念下,将计算,存储和控制等功能从最终用户设备迁移到云服务器已成为一种流行趋势[3]。与云不同,Fog提议将这些功能从服务器分发给用户,让用户彼此共享。</p><p>雾可以分为三个维度:雾计算,雾存储和雾控制。根据Bonomi等人的说法。 [2],雾计算意味着不仅要充分利用来自用户设备的计算资源,而且要充分利用用户与传统云服务器之间任意位置的计算资源。一个理想的例子是,视频游戏玩家的智能手机可以访问空闲计算。资源,例如玩家笔记本电脑的中央处理器(CPU),以改善他们的游戏体验。与Fog计算类似,Fog存储是第二个维度,它建议通过某种算法将用户数据从单个存储分发到多个存储设备[3]。 Google Spanner [4]是一种勇敢的做法,它是一种公共数据库,其功能是将用户的数据分发到世界各地的数据中心,以保护这些数据免遭攻击。 Shi等。 [5]指出,雾的第三个维度,雾控制,倾向于将传统的控制系统分为许多小型的独立和交互式雾系统,这些雾系统仅专注于提供单一功能。在这种情况下,如果雾灯控制系统发生故障,主机系统仍可以通过另一个类似的雾灯控制系统获得光的命令,以将服务持续保持在智能家居中。</p><p>Fog之所以为物联网的建设做出贡献的原因之一是,Fog概念下的互联网可以满足极具挑战性的物联网最小延迟要求。 Chiang&Zhang教授[3]指出,物联网应用程序(例如虚拟现实(VR)游戏,车对车通信和无人机(UAV)控制应用程序)似乎需要等待时间,即一台设备发送信号之间的时间。消息,并且目标设<EFBFBD><EFBFBD>
<categories>
<category> thoughts </category>
</categories>
<tags>
<tag> iot </tag>
<tag> internet </tag>
<tag> fog </tag>
</tags>
</entry>
<entry>
<title>在Centos 7.5上构建Nextcloud服务器</title>
<link href="/tech/build-nextcloud-server-on-centos7.html"/>
<url>/tech/build-nextcloud-server-on-centos7.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>Nextcloud是一个用PHP编码的开源软件项目。 它提供了理想的私有云存储解决方案,该解决方案被认为是可靠且稳定的。 该博客旨在逐步介绍Nextcloud Building指导,以帮助新生和将来的复习。 Nextcloud是一个用PHP编码的开源软件项目。 它提供了理想的私有云存储解决方案,该解决方案被认为是可靠且稳定的。 该博客旨在逐步介绍Nextcloud Building指导,以帮助新生和将来的复习。 Nextcloud是一个用PHP编码的开源软件项目。 它提供了理想的私有云存储解决方案,该解决方案被认为是可靠且稳定的。 该博客旨在逐步介绍Nextcloud Building指导,以帮助新生和将来的复习。</p></span><span class=".en"><p>Nextcloud is an open-source software project coded with PHP. It had provided a ideal private cloud-storage solution which was considered to be reliable and stable. This blog aims to present a Nextcloud Building instruction step by step for the purpose of helping freshman and future reviewing. Nextcloud is an open-source software project coded with PHP. It had provided a ideal private cloud-storage solution which was considered to be reliable and stable. This blog aims to present a Nextcloud Building instruction step by step for the purpose of helping freshman and future reviewing. Nextcloud is an open-source software project coded with PHP. It had provided a ideal private cloud-storage solution which was considered to be reliable and stable. This blog aims to present a Nextcloud Building instruction step by step for the purpose of helping freshman and future reviewing.</p></span><a id="more"></a><script> session.onload(function(){ if(page.tran.getLang() == 'zh'){ tips.warning({ title: '注意', position: 'topRight', message: '此页面由机器翻译为中文!!', buttons: [['<button>查看原文</button>', function (instance, toast) { page.tran.setLang('en'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]] }); } });</script><span class=".zh"><h2 id="将linux核心更改为BBR愿景"><a href="#将linux核心更改为BBR愿景" class="headerlink" title="将linux核心更改为BBR愿景"></a>将linux核心更改为BBR愿景</h2><p>如果您的服务器是新服务器,强烈建议将其更新到支持bbr模式的较高版本,这是google提供的高级centos系统核心,它可以使您的服务器更高效。</p><p>首先从github下载并安装bbr core。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ wget -N --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh &amp;&amp;\</span><br><span class="line">$ chmod +x bbr.sh &amp;&amp; \</span><br><span class="line">$ bash bbr.sh</span><br></pre></td></tr></table></figure><p>使用代码检查核心版本。 如果大于4.9.0,则可以。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ uname -r</span><br></pre></td></tr></table></figure><p>预期显示:net.ipv4.tcp_available_congestion_control = bbr cubic reno</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sysctl net.ipv4.tcp_available_congestion_control</span><br></pre></td></tr></table></figure><p>预期显示: net.ipv4.tcp_congestion_control = bbr</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sysctl net.ipv4.tcp_congestion_control</span><br></pre></td></tr></table></figure><p>预期显示: net.core.default_qdisc = fq</p><figure
<categories>
<category> tech </category>
</categories>
<tags>
<tag> php </tag>
<tag> docker </tag>
<tag> nginx </tag>
</tags>
</entry>
<entry>
<title>wifiduino搭建236宿舍物联网平台</title>
<link href="/tech/build-236-iot-platform-on-wifiduino.html"/>
<url>/tech/build-236-iot-platform-on-wifiduino.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>重新搭建236的IoT底层平台,并通过Blinker手机控制,实现操控监视。平台拥有很强的扩展性及可移植性,目前实现了夜间自动灯光,火灾烟雾报警,床帘内:上床小夜灯开,自动通风,LED自动感应阅读状态等设计。</p></span><span class=".en"><p>Re-build the 236 IoT underlying platform and control it through Blinker mobile phone to realize control and monitoring. The platform has strong scalability and portability. At present, it has realized the design of automatic lighting at night, fire and smoke alarm, and bed curtain: the night light on the bed, automatic ventilation, and LED automatic sensing reading status.</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><h2 id="搭建缘由"><a href="#搭建缘由" class="headerlink" title="搭建缘由"></a>搭建缘由</h2><p>早在大一上学期,意外接触Arduino,开始了解单片机。17年11到12月份,曾利用Arduino uno 3搭建了一台功能简易的自动控制平台,主要实现了由红外遥控器控制床帘Light以及小夜灯的功能。在运行一个半月后,由于一次上传代码时意外短路,导致单片机烧毁,自此系统报废,但线路依旧保留。</p><p>考虑到第一次搭建完全新手,代码缺少必要注释,更有通向床帘的数十根线路完全缠绕在一起,无法分清具体那几根控制什么传感器或设备,故设重建计划暂时搁置。</p><p>半年后的暑假,参加欧朗中国的IETE项目,课程中与公司研发组的软件和硬件工程师愉快得体验了一些单片机的应用研发,了解了单片机及物联网的基础组成及发展现状,在工作闲余,对原有线路进行了测试,分类,贴标签,使其得以正常使用。</p><p>8月份,项目结束,回到家中。考虑到家中原有太阳能需加水后需手动关闭,时常发生晚上洗澡后加水忘关情况,造成大量水资源浪费。于是结合欧朗所学,以及自己的实践经验,搭建了一套基于wifiduino和电磁阀的太阳能自动加水系统。为了照顾年老的姥姥方便夜间上厕所,在走廊过道利用原有废弃有线网络线路,搭建了与手动开关密切集合的自动感应开灯系统。由此收获了许多关于家用线路的架设经验。</p><p>回到苏州,考虑到一年来的相关经验,认为是时候尝试搭建一套可长期使用的商品级的强扩展性的IoT系统,于是…start搞事情</p><h2 id="搭建经历"><a href="#搭建经历" class="headerlink" title="搭建经历"></a>搭建经历</h2><p>搭建初期,一切还算顺利。但是随着系统逐渐趋于完善,代码逐渐复杂,经典的Arduino式软硬件兼容问题又逐渐开始捣乱啦~</p><p>首先遇到的问题是(大概是由于esp8266与wifiduino的一些神奇的勾当)当把代码通过usb传给wifiduino的时候,代码运行是正常的,但是在断电重启或者Reset后,它就死掉了。。。而且,这个问题只在上传占用了大约十个左右Digital通信口的程序之后才出现,如果只是上传简单的示例程序则运行正常,,最后从淘宝钓了一只路由器用的USB-DC9V升压线,用其持续供电,才确保了板子的正常运行。</p><p>遇见的第二个问题也是很神奇。就是,wifiduino在连接tx与rx后竟然无法上传代码!!!当时我一直以为是板子坏掉了</p><p>本来是只有一块板子的,但是当他装载了太多控制端之后,大概是死掉了,wifi无法正常连接Blinker..于是我只用它作为控制器,然后将另一块板子连接wifi,将接受<EFBFBD>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> Arduino </tag>
<tag> iot </tag>
</tags>
</entry>
<entry>
<title>你好,世界!</title>
<link href="/tech/hello-world.html"/>
<url>/tech/hello-world.html</url>
<content type="html"><![CDATA[<span class=".zh"><p>你好,世界!</p></span><span class=".en"><p>Hello World!</p></span><a id="more"></a><script>session.onload(function(){if(page.tran.getLang() == 'en'){tips.warning({title: 'Caution',position: 'topRight',message: 'This page was translated by Machine!!',buttons: [['<button>Show Original Page</button>', function (instance, toast) {page.tran.setLang('zh'); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }, true]]});}});</script><span class=".zh"><p>在我19周岁生日这一天,我的第一个通过wordpress自建的Blog网站正式上线啦~</p></span><span class=".en"><p>On my 19th birthday, my first blog site built by WordPress was officially launched~</p></span>]]></content>
<categories>
<category> tech </category>
</categories>
<tags>
<tag> php </tag>
<tag> wordpress </tag>
</tags>
</entry>
</search>