<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Yzk博客</title><link>https://yzkos.com/</link><description>分享一些自己的“心灵鸡汤”！</description><item><title>写了一个密码生成器，随机生成任意长度密码</title><link>https://yzkos.com/js/2017/09/generate-password/</link><description>&lt;p&gt;公司又新增了一个服务器，在配置服务器时又要面临设置各种各样的密码，网站后台密码，ftp密码，服务器密码，MySQL密码。如果都设置一样，很显然不行，这样特别不安全。&lt;/p&gt;&lt;p&gt;每次设置密码的时候都要想半天，各种纠结。后来就直接新建个文档在里面随便输入一串字符，复制粘贴到密码框里。每次随机写也是麻烦，感觉每次随机敲的字符串好像都比较像，或者是大小写掺杂的太少。&lt;/p&gt;&lt;p&gt;最后干脆直接用js写一个密码生成器，这样每次点击一下就OK了，想生成多少位的都可以。现在的计算机越来越快了，十几位的密码都怕被暴力破解。我就把那些服务器相关的密码全部设置了32位，嗯，感觉这下应该比较安全了。于是下面这货就诞生了。&lt;/p&gt;&lt;style&gt;table{margin: 10px auto;text-align: center; border-right:1px solid #ddd;border-bottom:1px solid #ddd;}
thead,tfoot{background: #fff;font-weight: 800;}
tbody{background: #f5f5f5;}
table td{border-left:1px solid #ddd;border-top:1px solid #ddd;padding: 5px 10px;}
table tbody td input{width:270px;}&lt;/style&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td colspan=&quot;2&quot;&gt;密码生成器&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;密码长度&lt;/td&gt;&lt;td&gt;&lt;input type=&quot;text&quot; value=&quot;32&quot; placeholder=&quot;密码长度&quot;/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;密码&lt;/td&gt;&lt;td&gt;&lt;input type=&quot;text&quot; value=&quot;&quot; placeholder=&quot;密码&quot;/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;tfoot&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;input type=&quot;button&quot; value=&quot;生成&quot;/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;&lt;/table&gt;&lt;script&gt;var input = document.getElementsByTagName('input');
  input[2].onclick = function () {
  input[1].value = rand(input[0].value);
  }
  function rand (leng) {
  var key = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&amp;*';
  var keys = '';
  for (i = 0; i &lt; leng; i++) {
  var keyl = parseInt(key.length * Math.random());
  keys += key[keyl];
  }
  return keys;
  }&lt;/script&gt;&lt;p&gt;核心代码就是这个函数：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-javascript&quot;&gt;function&amp;nbsp;rand&amp;nbsp;(leng)&amp;nbsp;{
	var&amp;nbsp;key&amp;nbsp;=&amp;nbsp;&amp;#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&amp;amp;*&amp;#39;;
	var&amp;nbsp;keys&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
	for&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;leng;&amp;nbsp;i++)&amp;nbsp;{
		var&amp;nbsp;keyl&amp;nbsp;=&amp;nbsp;parseInt(key.length&amp;nbsp;*&amp;nbsp;Math.random());
		keys&amp;nbsp;+=&amp;nbsp;key[keyl];
	}
	return&amp;nbsp;keys;
}&lt;/pre&gt;&lt;p&gt;准备一个包含了[a-z],[A-Z],[0-9],[!@#$%^&amp;amp;*] 这些的字符串 &lt;strong&gt;key&lt;/strong&gt;，通过设置的密码长度来进行循环，每次都从 key 里随机取一个值拼接到新字符串 &lt;strong&gt;keys &lt;/strong&gt;里。这样一个新密码就诞生了。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-decoration: line-through; color: #A5A5A5;&quot;&gt;由于只是个简单的小工具，就没有做一些比如每次生成的密码都必须包含4种字符的限制。所以有时生成的密码可能不包含某类型字符。如果必须要包含4种字符的就多点一下吧。&lt;/span&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;(已升级，支持选择字符类型)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;我把这个密码框传到了这里：&lt;a href=&quot;https://tool.yzkos.com/password/&quot; target=&quot;_blank&quot; title=&quot;密码生成器&quot;&gt;密码生成器&lt;/a&gt;&amp;nbsp;（&lt;span style=&quot;color: #A5A5A5;&quot;&gt;进行一次升级，支持选择字符类型&lt;/span&gt;）如果和我一样经常面临要设置各种密码的可以收藏到书签里，这样每次需要密码的时候点击一下就有一个新的密码可以用了。你也可以 Ctrl+S 保存到你的桌面，这样每次用的时候双击打开就可以生成新的密码了。&lt;/p&gt;</description><pubDate>Mon, 04 Sep 2017 11:46:44 +0800</pubDate></item><item><title>说说我是如何进入编程的这个“坑”的（1）</title><link>https://yzkos.com/os/2017/08/programming/</link><description>&lt;p&gt;我第一次正儿八经的接触电脑，是在我们国家级贫困县城里的普通初中学校，每周一节的电脑课上。&lt;/p&gt;&lt;p&gt;我打小是在村里长大的。搁在小时候，去的最远的地方就是去乡里&lt;a href=&quot;https://baike.baidu.com/item/%E8%B5%B6%E9%9B%86/1810333#viewPageContent&quot; target=&quot;_blank&quot; title=&quot;赶集-百度百科&quot;&gt;赶集&lt;/a&gt;了，乡里都没有个正儿八经的网吧。我们那是个挺落后的地方，同时也是国家级贫困县。所以我的童年基本都是和小霸王学习机度过的。没错，就是成龙代言的那种。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;//y2.ifengimg.com/haina/2014_52/1dd4e987062796a.jpg&quot; width=&quot;503&quot; height=&quot;296&quot; border=&quot;0&quot; vspace=&quot;0&quot; alt=&quot;小霸王学习机&quot; title=&quot;小霸王学习机&quot; style=&quot;width: 503px; height: 296px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;但是对小霸王的使用也只会插卡带，开始游戏，换卡带，再开始游戏。（所以我并不是用小霸王“学习机”学会编程的）&lt;img src=&quot;https://yzkos.com/zb_users/emotion/face/Nothing_to_say.gif&quot; width=&quot;24&quot; height=&quot;24&quot; border=&quot;0&quot; vspace=&quot;0&quot; alt=&quot;&quot; title=&quot;&quot; style=&quot;width: 24px; height: 24px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;其实在我上小学的时候也偷偷进过几次“网吧”，那种在街边犄角格拉里的民房或小卖部。门口有个看门的，到那给人家说“上网”。他就带着你七拐八拐的进入一个小黑屋，里面摆放着十几台电脑，一群初中生和小学生在那玩地下城之类的游戏。这就是那时候我们那最早的黑网吧了。都是街上的人偷偷开在家里，连牌子都不敢挂。&lt;/p&gt;&lt;p&gt;之所以前面用“进”网吧，是因为那几次都是和我堂哥一起去的。我站在他后面看他玩游戏。我第一次知道，按哪个按钮就是电脑开机，对电脑的了解仅此而已。我爸那时候是小学老师，刚好就是我的班主任，所以管我那叫一个严格。进网吧这种地方都已经是大错特错了，更别说上机打游戏了，所以仅去的几次只是站在后面看别人打游戏。&lt;/p&gt;&lt;p&gt;直到我进入初中，才有机会接触电脑。初中的电脑课，刚上的第一节课我记得清清楚楚，就是老师先教如何开机，然后教打字的指法，最后在新建的txt文档里打abcd。直到后来上电脑的课也就是学学拼音打字，玩玩金山打字通的那些警察抓小偷，青蛙过河之类的小游戏，因为学校的电脑是不联网的。现在还能在&lt;a href=&quot;http://www.51dzt.com/game/&quot; target=&quot;_blank&quot; title=&quot;金山打字通游戏&quot;&gt;金山打字通&lt;/a&gt;上找到这些游戏，说实话，我一次小偷都没有抓到过。&amp;nbsp;&lt;img src=&quot;https://yzkos.com/zb_users/emotion/default/cry.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/08/201708277902_710.png&quot; alt=&quot;金山打字通生死时速&quot; width=&quot;975&quot; height=&quot;453&quot; border=&quot;0&quot; vspace=&quot;0&quot; title=&quot;金山打字通生死时速&quot; style=&quot;width: 975px; height: 453px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;那个时候电脑对我的吸引力还没有小霸王大，因为学校的电脑只能学打字啊，没意思。家里又没有电脑，还不如小霸王玩起来爽啊。想怎么玩怎么玩。&lt;/p&gt;&lt;p&gt;真正让我对编程感兴趣的是手机。奇怪吧？大部分人对编程入门都是通过电脑吧？我却是通过手机入门。这还得从我进入初二说起。&lt;/p&gt;&lt;p&gt;那是一个山寨机横行的时代，从初二开始，班里开始有人偷偷往学校带手机了。虽然学校明令禁止，但是还是挡不住带手机的学生越来越多。然后我同桌就每天上课下课偷偷玩玩手机啊，聊聊qq啊，看看小说啊，玩玩小游戏啊。把我在旁边诱惑的不行。直到下学期开学，他又换了个新手机。然后就把之前的手机低价处理给我了。是了，我的第一部手机就是我省了两个多月的饭钱买的同桌的二手手机。&lt;/p&gt;&lt;p&gt;我终于在上初二时，才有了自己的第一个QQ号，还是用手机号码发短信给腾讯申请的，直到现在还在用。当时手机搭载的都是mtk平台，（应该是和现在mtk没有毛关系）可以说是这个平台统一了当时的国产山寨机，打开手机就是“玩手机，我要冒泡”。就是下面这货。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/12/201712029800_104.png&quot; alt=&quot;玩游戏我要冒泡&quot; width=&quot;236&quot; height=&quot;317&quot; border=&quot;0&quot; vspace=&quot;0&quot; title=&quot;玩游戏我要冒泡&quot; style=&quot;width: 236px; height: 317px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;那个时候的手机QQ可以说是及其简陋，就能发个消息和表情，其他一概不行。然后有了QQ号之后玩的最多了就是QQ家园。玩里面的爱宠国，精武堂，花园，这些网页小游戏。游戏玩腻了就逛各种论坛，刷帖子，看别人吹水感觉很有意思。&lt;/p&gt;&lt;p&gt;忽然有一天在论坛发现，QQ家园的元宝是可以刷的，在支付页面把他存为书签，然后在书签里的链接里，把金额改成0后，重新再书签打开就支付成功了，就有一大笔元宝到账。没有元宝就访问一下书签就又有一堆元宝。当然腾讯很快（几个月后）就修复了漏洞。当时感觉真是神奇啊，这是什么鬼，花不完的元宝。&lt;/p&gt;&lt;p&gt;现在想想，当时的腾讯，充值提交表单这些操作都是用GET传值，而且服务端也没有验证提交的充值金额。很可惜，现在QQ家园已经停运了，很是怀念当初的那些网页小游戏，虽然全是文字，但也是年轻时的回忆。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/12/201712029732_15.png&quot; alt=&quot;QQ家园停运公告&quot; width=&quot;422&quot; height=&quot;749&quot; border=&quot;0&quot; vspace=&quot;0&quot; title=&quot;QQ家园停运公告&quot; style=&quot;width: 422px; height: 749px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;该文写于 2017-08-27 21:25:56 这几天一直没空把后续补全，就先发了，有空在补。&lt;img src=&quot;https://yzkos.com/zb_users/emotion/face/Adore.gif&quot;/&gt;&lt;/p&gt;</description><pubDate>Wed, 30 Aug 2017 19:59:35 +0800</pubDate></item><item><title>树莓派内存卡扩展、内存卡分区</title><link>https://yzkos.com/pi/2017/05/raspberry-pi-cfdisk/</link><description>&lt;p&gt;可能大多数的人给树莓派分区都是使用&amp;nbsp;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;fdisk 来进行分区的，但是如果你是一个Linux新手，或者是你刚给树莓派装了系统，发现16G的内存卡只有2.9G的使用空间，又苦于不知道怎么做，那，，，这篇简单的教程就非常适合你了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color:#111111&quot;&gt;&lt;span style=&quot;white-space: pre-wrap; background-color: #FFFFFF;&quot;&gt;这里使用 &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;cfdisk&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt; 来对树莓派的 sd 卡进行分区，&lt;strong&gt;cfdisk&lt;/strong&gt; 是用来磁盘分区的程序，具有&lt;strong&gt;互动式操作界面&lt;/strong&gt;而非传统fdisk的问答式界面，可以轻易地利用方向键来操控分区操作。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;先运行以下命令：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;cfdisk&amp;nbsp;/dev/mmcblk0&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: &amp;quot;Microsoft Yahei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 13px; background-color: #FFFFFF;&quot;&gt;&lt;/span&gt;&lt;/span&gt;运行完毕后可以看到有几行文件标识了分区的大小，最后有一个12G的空间是未分区状态。前面说过 cfdisk 是使用上下左右按键来进行操作；&lt;/p&gt;&lt;p&gt;按&lt;strong&gt;下键&lt;/strong&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;选择到 /dev/mmcblk0p2，再选择到【Delete】，回车删除它，把这个分区删除掉来给它重新划分一个更大的空间。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;接着选择【New】，新建分区；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;按照默认的【14.4G】，回车；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;默认【&lt;span style=&quot;color: #111111; white-space: pre-wrap; background-color: #FFFFFF;&quot;&gt;primary&lt;/span&gt;】回车；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;然后就看到之前的&lt;strong&gt;2G&lt;/strong&gt;的分区位置变成了一个&lt;strong&gt;14.4G&lt;/strong&gt;的分区，下一步是写入分区；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;选择【write】然后输入【y】回车，确认写入该分区。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;选择【&lt;span style=&quot;white-space: pre-wrap; color: #111111; background-color: #FFFFFF;&quot;&gt;quit&lt;/span&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;】退出分区，重启系统，重启完毕后执行 &lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;&amp;nbsp;resize2fs&amp;nbsp;/dev/mmcblk0p2&lt;/pre&gt;&lt;p&gt;来刷新一下分区，这样就完成了树莓派的分区了。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFFFF; color: #111111; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 10 May 2017 12:29:22 +0800</pubDate></item><item><title>使用ngrok免费给树莓派进行内网穿透，同样适用于其他系统的电脑或主机</title><link>https://yzkos.com/pi/2017/05/raspberry-pi-ngrok/</link><description>&lt;p&gt;由于大家都知道或者不知道的原因，如果你想在公司访问家里的电脑，或者是家里的私人服务器的话，就要掏大价钱来买专线才有固定的外网 IP。不然的话&lt;strong&gt;大部分地区&lt;/strong&gt;是没有外网IP的。&lt;/p&gt;&lt;p&gt;如果树莓派放在家里，想从公司远程连接树莓派来上传或者下载什么东西的话就没有办法连接树莓派了。&lt;/p&gt;&lt;p&gt;但是，只要树莓派能上网，就难不倒我们天朝热情的玩家&amp;nbsp;&lt;img src=&quot;https://yzkos.com/zb_users/emotion/default/cool.png&quot;/&gt; 。有一个词语是来专门形容这个的，叫 “内网穿透”，大概就是从外地能远程访问到在家里（内网）的树莓派，就是内网穿透技术。&lt;/p&gt;&lt;p&gt;内网穿透能实现的办法有很多种。今天介绍一下我现在树莓派上使用的 ngrok 。ngrok 是一个国外开源的项目。大致就是，使用一个有外网 ip 的服务器来作为中转站，实现内网穿透。&lt;/p&gt;&lt;p&gt;据体的一些技术细节就暂时不表，如果你刚好有一个服务器的话，可以&lt;a href=&quot;http://www.ittun.com/apply.html&quot; target=&quot;_blank&quot; title=&quot;ngrok服务器搭建&quot;&gt;自己搭建一个 ngrok 服务器&lt;/a&gt;，使用起来方便快捷。但是如果你恰好没有服务器的话，那这篇教程就适合你了。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在这里先介绍一个 ngrok 的网站，站长 @Gofunc 免费提供 ngrok 使用&amp;nbsp;&lt;a href=&quot;http://www.ittun.com/&quot; target=&quot;_blank&quot; title=&quot;ngrok服务器&quot;&gt;http://www.ittun.com/&lt;/a&gt; 不需要注册什么的，只需要下载软件后上传到树莓派，然后配置一下树莓派的 IP 地址就可以了。&lt;/p&gt;&lt;p&gt;首先访问 ittun.com 这个网站，下载树莓派需要的软件：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705082373_691.png&quot; alt=&quot;下载ngrok软件&quot;/&gt;&lt;/p&gt;&lt;p&gt;如上图所示，下载红线画的那个版本，是可以在树莓派上运行的。&lt;/p&gt;&lt;p&gt;下载后上传到树莓派，或者直接使用树莓派下载，都是可以的。&lt;/p&gt;&lt;p&gt;我这里把压缩包放在了桌面（主要是感觉桌面太空了，想要放点东西），大家可以按自己的喜好随便放，然后右键压缩包，提取文件到当前文件夹。运行完毕后打开终端管理器。&lt;/p&gt;&lt;p&gt;先进入到桌面文件夹：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;cd&amp;nbsp;Desktop/&lt;/pre&gt;&lt;p&gt;然后查看一下文件夹。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;pi@raspberrypi:~/Desktop&amp;nbsp;$&amp;nbsp;ls
linuxarm&lt;/pre&gt;&lt;p&gt;这里可以看到文件夹是 linuxarm 接下来给文件夹添加权限，防止没有权限执行里面的文件（这里我们给的是 777 最高权限）,执行完成后打开（cd）文件夹。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;chmod&amp;nbsp;-R&amp;nbsp;777&amp;nbsp;linuxarm/
cd&amp;nbsp;linuxarm/&lt;/pre&gt;&lt;p&gt;使用 nano 编辑 config.yml 文件（可以使用任何编辑器）。config.yml 是程序的配置文件，我们对他进行编辑后保存，然后运行软件就能实现内网穿透了。&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;nano&amp;nbsp;config.yml&lt;/pre&gt;&lt;p&gt;nano 编辑器是 Ctrl+o 回车 是写入文件，Ctrl+x 离开文件。文件打开后把里面的内容改成如下：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705094650_927.png&quot; alt=&quot;blob.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;下面介绍一下这些分别都是干什么的&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;server_addr:&amp;nbsp;&amp;quot;tcp.ittun.com:44433&amp;quot;&amp;nbsp;&amp;nbsp;//&amp;nbsp;这一句是必须要这么写，代表端口转发的服务器地址和端口。
tunnels:&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ssh:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;代表ssh登录树莓派
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remote_port:&amp;nbsp;50924&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;远程ssh登录树莓派时要访问的端口
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proto:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tcp:&amp;nbsp;&amp;quot;:22&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;这个代表服务器转发到树莓派的端口，如果是ssh就是22端口
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;desk:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;代表远程桌面
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remote_port:&amp;nbsp;50724&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;这个是远程访问远程桌面要访问的端口
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proto:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;如果是使&amp;nbsp;xrdp&amp;nbsp;来访问远程桌面的话树莓派就是&amp;nbsp;3389&amp;nbsp;的端口
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//如果是使用&amp;nbsp;vnc&amp;nbsp;远程访问树莓派的话，这里就要填写&amp;nbsp;vnc&amp;nbsp;的远程端口。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tcp:&amp;nbsp;&amp;quot;:3389&amp;quot;&lt;/pre&gt;&lt;p&gt;如上，修改完成后保存关闭，在当前文件夹执行下面的语句来启动 ngrok ：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;./ngrok&amp;nbsp;-config&amp;nbsp;config.yml&amp;nbsp;start&amp;nbsp;ssh&amp;nbsp;desk&lt;/pre&gt;&lt;p&gt;运行后看到如下界面就是已经成功了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705098538_746.png&quot; alt=&quot;blob.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;赶快试一下是否可以访问吧，使用&lt;a href=&quot;https://yzkos.com/pi/2017/05/log-in-raspberry-pi/&quot; target=&quot;_blank&quot; title=&quot;使用Windows远程桌面访问树莓派|只需安装一个软件&quot;&gt; xrdp远程桌面访问&lt;/a&gt;应这样填写：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705093309_309.png&quot; alt=&quot;blob.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705094197_763.png&quot; alt=&quot;blob.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;这样就可以登录进树莓派了。&lt;/p&gt;&lt;p&gt;ssh登录这样填写：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705096458_872.png&quot; alt=&quot;blob.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;需要注意登录的时候端口号一定要和配置文件里设置的端口号相同，且只能设置大于&amp;nbsp;50000 的端口号。&lt;/p&gt;</description><pubDate>Tue, 09 May 2017 23:12:32 +0800</pubDate></item><item><title>超简单的给树莓派设置超级全的中文字体</title><link>https://yzkos.com/pi/2017/05/raspberry-pi-Chinese/</link><description>&lt;p&gt;因为树莓派默认是全英文的，如果对linux不熟悉，或者英文不太好的，但是又喜欢玩树莓派。面对一堆看不懂的语言会感觉很无助的，所以今天来一发给树莓派设置中文字体的，比叫简单的教程。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;首先安装&lt;span style=&quot;font-family: 微软雅黑; line-height: 21px; widows: 1; background-color: #FFFFFF;&quot;&gt;文泉驿中文字库，这个字库在树莓派上还是很好用的。&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;ttf-wqy-microhei&lt;/pre&gt;&lt;p&gt;等它运行，运行完毕后先刷新一下字体库，&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;sudo&amp;nbsp;fc-cache&lt;/pre&gt;&lt;p&gt;下面开始设置默认字体为中文&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;sudo&amp;nbsp;dpkg-reconfigure&amp;nbsp;locales&lt;/pre&gt;&lt;p&gt;打开后可以按&amp;nbsp;&lt;strong&gt;上下&amp;nbsp;&lt;/strong&gt;来选择字体，&lt;strong&gt;空格&amp;nbsp;&lt;/strong&gt;是选中字体，选中的字体前面会加一个 * 号，需要选择这些字体，（这里我的已经设置为中文了，所以是中文的字体，如果没有设置的话默认显示的界面是英文的）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705089637_898.png&quot; style=&quot;&quot; title=&quot;树莓派选择字体文件&quot; alt=&quot;树莓派选择字体文件&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705084202_250.png&quot; style=&quot;&quot; title=&quot;树莓派选择字体文件&quot; alt=&quot;树莓派选择字体文件&quot;/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;[*]en-GB.UTF-8&amp;nbsp;UTF-8&amp;nbsp;
[*]zh_CN.GB2312&amp;nbsp;
[*]zh.CN.GB18030&amp;nbsp;GB18030&amp;nbsp;
[*]zh_CN.GBK&amp;nbsp;GBK
[*]zh_CN.UTF-8&amp;nbsp;UTF-8&lt;/pre&gt;&lt;p&gt;选好之后回车，&lt;span style=&quot;font-family: 微软雅黑; line-height: 21px; widows: 1; background-color: #FFFFFF;&quot;&gt;在出现的菜单里选择 zh_CN.UTF-8&amp;nbsp;UTF-8 为默认，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 微软雅黑; line-height: 21px; widows: 1; background-color: #FFFFFF;&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705083703_641.jpg&quot; title=&quot;确认中文字体&quot; alt=&quot;确认中文字体&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 微软雅黑; line-height: 21px; widows: 1; background-color: #FFFFFF;&quot;&gt;同样按上下键选择UTF-8后回车，等待命令执行完毕之后重启系统 &lt;strong&gt;sudo reboot &lt;/strong&gt;重启过后，就是中文的系统了。自带的那些软件也都会变成中文的，在命令行里的那些提示也会显示中文的。是不是瞬间感觉自己的树莓派很好用的了呢？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 08 May 2017 14:16:33 +0800</pubDate></item><item><title>使用Windows远程桌面访问树莓派|只需安装一个软件</title><link>https://yzkos.com/pi/2017/05/log-in-raspberry-pi/</link><description>&lt;p&gt;给树莓派安装系统后没有显示器，笔记本只能输出显示，不能输入显示，就只用ssh登录，然后看到有不少用vnc的，那个还需要另外装软件。&lt;/p&gt;&lt;p&gt;之前玩树莓派的时候发现过一个软件 &lt;strong&gt;xrdp &lt;/strong&gt;可以直接使用Windows的远程桌面来登录树莓派，这样即使没有显示器也能在笔记本上愉快的玩耍了。&lt;/p&gt;&lt;p&gt;首先在安装完系统后首先用ssh登录树莓派，运行下面的命令来安装xrdp，等一会儿它安装完后，就能打开远程桌面输入树莓派的IP来访问树莓派的桌面了。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;xrdp&lt;/pre&gt;&lt;p&gt;xrdp 不需要在安装其他的客户端之类的，也不用去手动设置开机自启之类的东西，只用这一条命令，就OK了，简单到肝爆！&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;另外在推荐一下手机上好用的ssh软件：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这是本人目前使用过的（当然只是能免费用的哈&amp;nbsp;&lt;img src=&quot;https://yzkos.com/zb_users/emotion/default/grin.png&quot;/&gt;），无论是界面，还是使用效果都体验最好的软件。&lt;/p&gt;&lt;p&gt;安卓：&lt;strong&gt;juicessh&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个绝对是最好用，没有之一，下面上图：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705033522_347.jpg&quot; title=&quot;juicessh.jpg&quot; alt=&quot;juicessh.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;可以自由调节字体大小，还有很多其他的设置，由于现在手头上没有安卓手机，就去网上找了个图片。&lt;/p&gt;&lt;p&gt;iOS：&lt;strong&gt;Termius &lt;/strong&gt;&lt;span style=&quot;color: #7F7F7F;&quot;&gt;（这个软件也有安卓版）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;这个刚使用没两天也是刚下载的，还是挺好用的，主要是因为juicessh这个没有iOS版的只有安卓的，无奈只能又另外找了一个，也是超级好用的。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705034521_303.png&quot; title=&quot;IMG_2139.PNG&quot; width=&quot;300&quot; height=&quot;532&quot; border=&quot;0&quot; vspace=&quot;0&quot; alt=&quot;IMG_2139.PNG&quot; style=&quot;width: 300px; height: 532px;&quot;/&gt; &amp;nbsp; &amp;nbsp;&lt;img src=&quot;//img.yzkos.com/2017/05/201705032423_429.png&quot; style=&quot;width: 300px; height: 533px;&quot; title=&quot;IMG_2138.PNG&quot; width=&quot;300&quot; height=&quot;533&quot; border=&quot;0&quot; vspace=&quot;0&quot; alt=&quot;IMG_2138.PNG&quot;/&gt; &amp;nbsp; &amp;nbsp;&lt;img src=&quot;//img.yzkos.com/2017/05/201705033309_936.png&quot; style=&quot;width: 300px; height: 533px;&quot; title=&quot;IMG_2140.PNG&quot; width=&quot;300&quot; height=&quot;533&quot; border=&quot;0&quot; vspace=&quot;0&quot; alt=&quot;IMG_2140.PNG&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 03 May 2017 23:28:00 +0800</pubDate></item><item><title>很久没有玩树莓派了，今天终于有时间给我的树莓派装了个系统</title><link>https://yzkos.com/pi/2017/05/raspberry-pi/</link><description>&lt;p&gt;&lt;img src=&quot;//img.yzkos.com/2017/05/201705069138_520.png&quot; alt=&quot;树莓派系统&quot; title=&quot;树莓派系统&quot;/&gt;&lt;/p&gt;&lt;p&gt;不记得是16年什么时候买的树莓派了，当时是树莓派3B刚出来没多久的时候买的吧，刚买回来的时候我发现住的地方拉的电信宽带竟然是公网ip，当时给我高兴的不得了，就用树莓派给自己搭建了个小站；&lt;/p&gt;&lt;p&gt;虽说是公网ip不过每次路由器重启过后，ip就会改变，用来搭建网站的话域名解析就是个问题了，不过还好后来发现了腾讯的DNSPOD域名解析，就把域名放在DNSPOD上，弄了个脚本每隔一分钟访问一下外网来获取一下ip，如果ip改变的话，就用脚本修改域名解析，还是很好用的。&lt;/p&gt;&lt;p&gt;结果好景不长啊，刚用了一个多月，有天忽然发现再也访问不了我的小站了，晚上下班回去一看，路由器的ip变成了10.开头的，想必大家都知道，10开头的就不是公网ip了。&lt;/p&gt;&lt;p&gt;当时给我气坏了，上网查怎么能恢复成公网ip，然后看网上网友说的各种各样的办法，什么举报投诉，还有家里要安装摄像头什么的，最后还是比较怂，没有敢尝试，就去找有没有其他的办法；&lt;/p&gt;&lt;p&gt;发现了还有叫内网穿透的东西，就研究花生壳内网穿透啥的，不过感觉花生壳不太好用，还是不知道我不太会用，特别麻烦。最后找到了ngork内网穿透，个人感觉很是好用啊。国内有不少搭建的ngork的服务器，有很多是收费的，本着搞着玩，有免费的就不花钱的原则，找到了一个免费的ngork还是很好用的，在这里也推荐给大家 &lt;a title=&quot;ngrok内网穿透&quot; href=&quot;http://www.ittun.com/&quot; target=&quot;_blank&quot;&gt;http://www.ittun.com/&lt;/a&gt;&amp;nbsp;（这真不是广告 &lt;img src=&quot;https://yzkos.com/zb_users/emotion/default/roll.png&quot;/&gt;）。&lt;/p&gt;&lt;p&gt;接下来就是用这个内网穿透又把小站运行起来了。不知道运行了多久，就一直没有管它。不知什么时候树莓派的系统就莫名其妙的坏了，也懒得在玩了，就把树莓派放在那吃灰了。&lt;/p&gt;&lt;p&gt;刚好今天没事干，就又给树莓派重装了一个系统，还是官方的系统、主要就是为用起来省事、方便。&lt;/p&gt;&lt;p&gt;当初买树莓派就是看网上的各种大神，用树莓派做什么家庭媒体中心，下载机，智能避障小车，还有做魔镜的，各种狂拽酷炫吊炸天啊！！！但是自己买回来，吃灰、吃灰、吃灰，感觉很不甘心啊。&lt;/p&gt;&lt;p&gt;这次装系统就想着也能做点什么玩玩，毕竟买都买了，万一能做成个什么呢！也能好好学（zhuang）习（bi）点其他方面的东西。&lt;/p&gt;</description><pubDate>Tue, 02 May 2017 23:20:16 +0800</pubDate></item><item><title>PHP网站url加密_url链接id加密</title><link>https://yzkos.com/php/2017/03/url-encode-decode/</link><description>&lt;p&gt;之前做网站，看很多新闻网站都对文章id进行了加密，加密后的url链接看起来比较美观。上次网站改版的时候找了一个加密数字的类，原作者：&lt;a href=&quot;http://www.cnblogs.com/caiyujiang/p/3238390.html&quot; target=&quot;_blank&quot; title=&quot;PHP加密解密数字，适用于URL加密。&quot; style=&quot;white-space: normal;&quot;&gt;深秋的竹子&lt;/a&gt;，感觉十分好用。就收藏一下。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;&amp;lt;?php
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;加密解密类
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;该算法仅支持加密数字。比较适用于数据库中id字段的加密解密，以及根据数字显示url的加密。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;深秋的竹子
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@version&amp;nbsp;alpha
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@加密原则&amp;nbsp;标记长度&amp;nbsp;+&amp;nbsp;补位&amp;nbsp;+&amp;nbsp;数字替换
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@加密步骤：
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;将a-z,A-Z,0-9&amp;nbsp;62个字符打乱，取前M(数字最大的位数)位作为标记长度字符串，
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;取第M+1到第M+10位为数字替换字符串，剩余的为补位字符串
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;1.计算数字长度n,取乱码的第n位作为标记长度。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;2.计算补位的长度，加密串的长度N&amp;nbsp;-1&amp;nbsp;-&amp;nbsp;n&amp;nbsp;为补位的长度。根据指定的算法得到补位字符串。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;3.根据数字替换字符串替换数字，得到数字加密字符串。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;标记长度字符&amp;nbsp;+&amp;nbsp;补位字符串&amp;nbsp;+&amp;nbsp;数字加密字符串&amp;nbsp;=&amp;nbsp;加密串
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Usage:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;$obj&amp;nbsp;=&amp;nbsp;new&amp;nbsp;XDeode(9);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;$e_txt&amp;nbsp;=&amp;nbsp;$obj-&amp;gt;encode(123);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;$e_txt.&amp;#39;&amp;lt;br/&amp;gt;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;$key-&amp;gt;decode($e_txt);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Xdeode{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;$strbase&amp;nbsp;=&amp;nbsp;&amp;quot;Flpvf70CsakVjqgeWUPXQxSyJizmNH6B1u3b8cAEKwTd54nRtZOMDhoG2YLrI&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;$key,$length,$codelen,$codenums,$codeext;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;__construct($length&amp;nbsp;=&amp;nbsp;9,$key&amp;nbsp;=&amp;nbsp;2543.5415412812){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;key&amp;nbsp;=&amp;nbsp;$key;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;length&amp;nbsp;=&amp;nbsp;$length;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;codelen&amp;nbsp;=&amp;nbsp;substr($this-&amp;gt;strbase,0,$this-&amp;gt;length);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;codenums&amp;nbsp;=&amp;nbsp;substr($this-&amp;gt;strbase,$this-&amp;gt;length,10);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;codeext&amp;nbsp;=&amp;nbsp;substr($this-&amp;gt;strbase,$this-&amp;gt;length&amp;nbsp;+&amp;nbsp;10);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;encode($nums){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$rtn&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$numslen&amp;nbsp;=&amp;nbsp;strlen($nums);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//密文第一位标记数字的长度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$begin&amp;nbsp;=&amp;nbsp;substr($this-&amp;gt;codelen,$numslen&amp;nbsp;-&amp;nbsp;1,1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//密文的扩展位
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$extlen&amp;nbsp;=&amp;nbsp;$this-&amp;gt;length&amp;nbsp;-&amp;nbsp;$numslen&amp;nbsp;-&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$temp&amp;nbsp;=&amp;nbsp;str_replace(&amp;#39;.&amp;#39;,&amp;nbsp;&amp;#39;&amp;#39;,&amp;nbsp;$nums&amp;nbsp;/&amp;nbsp;$this-&amp;gt;key);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$temp&amp;nbsp;=&amp;nbsp;substr($temp,-$extlen);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$arrextTemp&amp;nbsp;=&amp;nbsp;str_split($this-&amp;gt;codeext);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$arrext&amp;nbsp;=&amp;nbsp;str_split($temp);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;($arrext&amp;nbsp;as&amp;nbsp;$v)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$rtn&amp;nbsp;.=&amp;nbsp;$arrextTemp[$v];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$arrnumsTemp&amp;nbsp;=&amp;nbsp;str_split($this-&amp;gt;codenums);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$arrnums&amp;nbsp;=&amp;nbsp;str_split($nums);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;($arrnums&amp;nbsp;as&amp;nbsp;$v)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$rtn&amp;nbsp;.=&amp;nbsp;$arrnumsTemp[$v];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$begin.$rtn;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;decode($code){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$begin&amp;nbsp;=&amp;nbsp;substr($code,0,1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$rtn&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$len&amp;nbsp;=&amp;nbsp;strpos($this-&amp;gt;codelen,$begin);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if($len!==&amp;nbsp;false){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$len++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$arrnums&amp;nbsp;=&amp;nbsp;str_split(substr($code,-$len));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;($arrnums&amp;nbsp;as&amp;nbsp;$v)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$rtn&amp;nbsp;.=&amp;nbsp;strpos($this-&amp;gt;codenums,$v);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$rtn;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
?&amp;gt;&lt;/pre&gt;&lt;p&gt;thinkphp在使用的时候可以在ORG里新建一个XDeode.class.php文件，把上面的代码复制进去。在公共函数里定义两个加解密的函数。如下：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;/**
&amp;nbsp;*&amp;nbsp;加密
&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;$val&amp;nbsp;传入数字
&amp;nbsp;*/
function&amp;nbsp;encode($val){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;import(&amp;#39;@.ORG.Xdeode&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$XDeode&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Xdeode();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$XDeode-&amp;gt;encode($val);
}

/**
&amp;nbsp;*&amp;nbsp;解密
&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;$val&amp;nbsp;传入数字
&amp;nbsp;*/
function&amp;nbsp;decode($val){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;import(&amp;#39;@.ORG.Xdeode&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$XDeode&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Xdeode();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$XDeode-&amp;gt;decode($val);
}&lt;/pre&gt;&lt;p&gt;就可以直接在写程序的时候使用传入要加密的id就可以。上面是我根据自己的需要来写的，也可以直接写一个函数来实现加密和解密的功能同时传入要生成的密匙的长度。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;/**
&amp;nbsp;*&amp;nbsp;加密
&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;$deode&amp;nbsp;e代表加密d代表解密；&amp;nbsp;
&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$val&amp;nbsp;传入数字或者要解密的字符串；&amp;nbsp;
&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$lenggth&amp;nbsp;要生成的字符串长度
&amp;nbsp;*/
function&amp;nbsp;xdeode($deode,$val,$length){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;import(&amp;#39;@.ORG.Xdeode&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$XDeode&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Xdeode($length);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if($deode&amp;nbsp;==&amp;nbsp;&amp;#39;e&amp;#39;){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$XDeode-&amp;gt;encode($val);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else&amp;nbsp;if($deode&amp;nbsp;==&amp;nbsp;&amp;#39;d&amp;#39;){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$XDeode-&amp;gt;decode($val);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;更推荐第一种的使用方式简单明了，使用也方便。&lt;/p&gt;&lt;p&gt;如果是没有使用框架，则可以把两个函数放到XDeode.class.php最底部，在需要使用该函数的地方，使用include或require引入XDeode.class.php就可以使用了。&lt;/p&gt;</description><pubDate>Wed, 22 Mar 2017 21:30:40 +0800</pubDate></item><item><title>用Apache给gogs绑定域名</title><link>https://yzkos.com/web/2017/03/apache-gogs-url/</link><description>&lt;p&gt;上次写了如何在Windows上&lt;a href=&quot;https://yzkos.com/web/2017/03/gogs-git/&quot; target=&quot;_blank&quot; title=&quot;如何在Windows上用gogs搭建私人git服务器&quot;&gt;用gogs搭建私人git服务器&lt;/a&gt;，现在说一下把gogs注册为Windows系统服务后如何用Apache来给gogs绑定域名。&lt;/p&gt;&lt;p&gt;使用Apache绑定域名的话就要用到Apache的反向代理，首先要去Apache的配置文件httpd.conf里去启用&lt;strong&gt;mod_proxy.so&lt;/strong&gt;和&lt;strong&gt;mod_proxy_http.so&lt;/strong&gt;大概就在110行左右，去除前面的#号。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/03/201703156286_358.png&quot; alt=&quot;blob.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;这一步是启用反向代理模块和http反向代理模块。启用完之后就可以去httpd-vhosts.conf里去添加域名了。添加方法如下：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;&amp;lt;VirtualHost&amp;nbsp;*&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServerAdmin&amp;nbsp;yzk@yzkos.com&amp;nbsp;&amp;nbsp;&amp;nbsp;//网站管理员邮箱，可以不设置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServerAlias&amp;nbsp;git.gitos.com&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//要绑定的域名
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyPreserveHost&amp;nbsp;On
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyRequests&amp;nbsp;Off
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Proxy&amp;nbsp;*&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddDefaultCharset&amp;nbsp;off
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Order&amp;nbsp;deny,allow
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Allow&amp;nbsp;from&amp;nbsp;all
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Proxy&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyPass&amp;nbsp;/&amp;nbsp;http://127.0.1.1/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//此处填写要反向代理的网址，或者ip
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyPassReverse&amp;nbsp;/&amp;nbsp;http://127.0.1.1/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//此处填写要反向代理的网址，或者ip
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;&lt;p&gt;127.0.1.1这个ip是我服务器本地访问gogs的ip，&lt;/p&gt;&lt;p&gt;上面是已经把gogs注册为系统服务的，绑定成功后可以在注销Windows桌面的情况下也能正常通过域名访问gogs服务，&lt;/p&gt;&lt;p&gt;下面说一下如果没有把gogs注册为系统服务，绑定域名的方法，但是没有注册为系统服务&lt;strong&gt;如果服务器绑定的有其他域名，其他域名后加：3000端口也能访问到gogs服务，这个需要注意&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;如果没有把gogs注册为系统服务是通过ip：3000端口来访问的，添加域名的方法如下：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;&amp;lt;VirtualHost&amp;nbsp;*&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServerAdmin&amp;nbsp;yzk@yzkos.com&amp;nbsp;&amp;nbsp;&amp;nbsp;//网站管理员邮箱，可以不设置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServerAlias&amp;nbsp;git.gitos.com&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//要绑定的域名
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyPreserveHost&amp;nbsp;On
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyRequests&amp;nbsp;Off
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Proxy&amp;nbsp;*&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddDefaultCharset&amp;nbsp;off
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Order&amp;nbsp;deny,allow
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Allow&amp;nbsp;from&amp;nbsp;all
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Proxy&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyPass&amp;nbsp;/&amp;nbsp;http://127.0.0.1:3000/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//此处填写要反向代理的网址，或者ip
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyPassReverse&amp;nbsp;/&amp;nbsp;http://127.0.0.1:3000/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//此处填写要反向代理的网址，或者ip
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;&lt;p&gt;注意127.0.0.1和127.0.1.1是有区别的。也可以把127.0.0.1:3000换成localhost:3000，都是一样的。&lt;/p&gt;&lt;p&gt;绑定完毕后保存，重启一下Apache服务，就可以通过域名来访问自己搭建的git服务了。&lt;/p&gt;</description><pubDate>Thu, 16 Mar 2017 20:12:34 +0800</pubDate></item><item><title>用gogs在Windows服务器上搭建私人git服务器—超级简单的私人git服务器搭建</title><link>https://yzkos.com/web/2017/03/gogs-git/</link><description>&lt;p style=&quot;text-align: center;&quot;&gt;↓ps：第一段是废话，大家可以直接跳过。↓&lt;/p&gt;&lt;p&gt;刚开始想搭建这个这个私人git服务器，是因为原本的开发是通过FTP来上传代码的，我们公司的项目是用thinkphp框架搭建的，我也经常会改动一些前端的HTML和CSS样式，和前端人员总是互相覆盖对方的代码，就想着弄个git来进行团队协作&amp;nbsp;&lt;img src=&quot;https://yzkos.com/zb_users/emotion/default/grin.png&quot;/&gt;&amp;nbsp;，于是就上网去百度了一下，有没有开源的私人git服务器源码，然后百度出来的全部都是GitLab，据说功能强大，功能和GitHub可以相媲美，还是免费开源，于是就赶快去找安装教程，由于本人是个英语的渣渣，看了半天，还是不明所以，不知道该怎么安装。研究了不少教程发现安装很麻烦，而且完全看不懂啊，就百度有没有简单的安装方法，然后就找到了gogs，安装简单，功能也挺全基本的功能都有了。于是就开始了安装gogs之旅，本文主要是记载自己安装的过程和自己遇到的问题。&lt;/p&gt;&lt;p&gt;git是做什么用的，就不多做介绍了。（&lt;span style=&quot;color: #7F7F7F;&quot;&gt;只有Windows安装过程&lt;/span&gt;）&lt;br/&gt;&lt;/p&gt;&lt;p&gt;首先是下载安装需要的程序：(&lt;span style=&quot;background-color: #FFFFFF; color: #7F7F7F;&quot;&gt;两个网站国内都可访问，为了安全请去官网下载&lt;/span&gt;)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Git：&lt;a href=&quot;https://git-scm.com/&quot; target=&quot;_blank&quot; title=&quot;git官网&quot;&gt;点击去官网下载&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://git-scm.com/download/win&quot; target=&quot;_blank&quot; title=&quot;下载git&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/03/201703088670_4.png&quot; alt=&quot;git官网&quot; width=&quot;272&quot; height=&quot;157&quot; border=&quot;0&quot; vspace=&quot;0&quot; title=&quot;git官网&quot; style=&quot;width: 272px; height: 157px;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;点击此图片即可下载。&lt;/p&gt;&lt;p&gt;gogs：&lt;a href=&quot;https://gogs.io/docs/installation/install_from_binary.html&quot; target=&quot;_blank&quot; title=&quot;下载gogs&quot;&gt;点击去官网下载&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/03/201703089679_287.png&quot; alt=&quot;gogs下载页面&quot; width=&quot;796&quot; height=&quot;385&quot; border=&quot;0&quot; vspace=&quot;0&quot; title=&quot;gogs下载页面&quot; style=&quot;width: 796px; height: 385px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;由于不知道nssm如何配置，在加上为了省事，就选择了内置mws的版本直接解压安装就可以使用。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;下载完这两个应用后传到服务器，首先安装git，没什么好说的，一般没什么特殊需求就是双击安装一直点下一步一直到安装完成就好了。&lt;/p&gt;&lt;p&gt;就是安装gogs，先把压缩包解压到F盘，（我是安装到F盘的，想安装的C盘或者其他盘的都可以随意。）然后打开cmd.exe，输入以下代码：&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;//img.yzkos.com/2017/03/201703093524_988.png&quot; alt=&quot;gogs安装&quot; width=&quot;575&quot; height=&quot;133&quot; border=&quot;0&quot; vspace=&quot;0&quot; title=&quot;gogs安装&quot; style=&quot;width: 575px; height: 133px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;进入F盘，根据解压的目录访问gogs.exe web，回车就能看到提示运行成功，进入浏览器访问服务器ip:3000端口即可访问。但是只要已关闭cmd就无法访问了。&lt;/p&gt;&lt;p&gt;刚开始就是这么搭建的，又用了Apache进行反向代理，绑定了一个域名来实现通过80端口和域名访问。这样做就遇到一个问题，服务器上有多个网站，绑定了多个域名，所有的域名加上:3000端口都能访问到gogs。还有就是服务器的远程桌面不能注销，只能点击直接关闭远程桌面。&lt;/p&gt;&lt;p&gt;没办法就去官方手册里找到了&lt;strong&gt;把gogs注册为Windows系统服务&lt;/strong&gt;的介绍，通篇中文的手册，只有这个是没有翻译的英文，瞬间就头大了，最后还是看着大概配置了一下（下面就是大致把官方的手册翻译了一下）。&lt;/p&gt;&lt;p&gt;要先修改gogs的配置文件，在gogs目录里，&lt;span style=&quot;color: #E91E63; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; background-color: rgba(0, 0, 0, 0.0392157);&quot;&gt;Gogs\custom\conf\app.ini&lt;/span&gt;&lt;/p&gt;&lt;p&gt;打开之后把&amp;nbsp;RUN_USER = 替换成电脑名称，如果不知道电脑名称的话在cmd里输入&lt;span style=&quot;color: #E91E63; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; background-color: rgba(0, 0, 0, 0.0392157);&quot;&gt;echo %COMPUTERNAME%&lt;span style=&quot;font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; background-color: rgba(0, 0, 0, 0.0392157); color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;就会返回电脑全称。&lt;/p&gt;&lt;p&gt;把[server]下面的按照以下填写：&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;[server]
DOMAIN&amp;nbsp;=&amp;nbsp;gogs
PROTOCOL&amp;nbsp;=&amp;nbsp;http
HTTP_ADDR&amp;nbsp;=&amp;nbsp;127.0.1.1
HTTP_PORT&amp;nbsp;=&amp;nbsp;80
OFFLINE_MODE&amp;nbsp;=&amp;nbsp;true
ROOT_URL&amp;nbsp;=&amp;nbsp;http://gogs/&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;上面的意思大概是 DOMAIN：配置一个本地域名 （可以随意设置），&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;PROTOCOL：访问方式这里是http，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;HPPT_ADDR:设置一个gogos用来访问的本地ip，ip可以设置&amp;nbsp;&lt;span style=&quot;color: #E91E63; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; background-color: rgba(0, 0, 0, 0.0392157);&quot;&gt;127.0.0.2 - 127.254.254.254&lt;/span&gt;&amp;nbsp;，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;HTTP_PORT:监听的端口，把ip和本地域名写到hosts文件里，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;OFFLINE_MODE:是否启用离线模式，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;ROOT_URL：这个是本地访问的连接，上面DOMAIN那里设置的是什么就写http://(*)/。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;修改hosts文件，&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;box-sizing: inherit; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0.1em; margin: 0px; border-radius: 3px; background-color: rgba(0, 0, 0, 0.0392157); color: rgb(233, 30, 99);&quot;&gt;C:\Windows\System32\drivers\etc\hosts&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;127.0.1.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gogs&lt;/pre&gt;&lt;p&gt;在hosts文件的最后一行加入上面的代码。&lt;/p&gt;&lt;p&gt;以管理员运行cmd.exe，输入以下代码&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;C:\&amp;gt;&amp;nbsp;sc&amp;nbsp;create&amp;nbsp;gogs&amp;nbsp;start=&amp;nbsp;auto&amp;nbsp;binPath=&amp;nbsp;&amp;quot;&amp;quot;C:\gogs\gogs.exe&amp;quot;&amp;nbsp;web&amp;nbsp;--config&amp;nbsp;&amp;quot;C:\gogs\conf\app.ini&amp;quot;&amp;quot;&lt;/pre&gt;&lt;p&gt;记得把&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: inherit; color: #880000; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; white-space: pre;&quot;&gt;C:&lt;/span&gt;&lt;span style=&quot;font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; white-space: pre; background-color: #F0F0F0;&quot;&gt;\gogs\gogs.exe&lt;/span&gt;和后面配置的连接&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: inherit; color: #880000; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; white-space: pre;&quot;&gt;C:&lt;/span&gt;&lt;span style=&quot;font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; white-space: pre; background-color: #F0F0F0;&quot;&gt;\gogs\conf\app.ini&lt;/span&gt;替换成自己解压的连接。回车。这行代码就是创建一个系统服务，后面跟软件的路径和配置的路径。&lt;/p&gt;&lt;p&gt;在cmd.exe里敲入&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;C:\&amp;gt;&amp;nbsp;net&amp;nbsp;start&amp;nbsp;gogs&lt;/pre&gt;&lt;p&gt;会看到&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-markdown&quot;&gt;The&amp;nbsp;gogs&amp;nbsp;正在启动.
The&amp;nbsp;gogs&amp;nbsp;启动成功.
或者
The&amp;nbsp;gogs&amp;nbsp;service&amp;nbsp;is&amp;nbsp;starting.
The&amp;nbsp;gogs&amp;nbsp;service&amp;nbsp;was&amp;nbsp;started&amp;nbsp;successfully.&lt;/pre&gt;&lt;p&gt;就是运行成功了。在服务器的浏览器里访问htp://gogs/就可以看到安装的界面，就跟着流程选择一个&lt;strong&gt;&lt;span style=&quot;background-color: #FFFFFF; color: rgba(0, 0, 0, 0.870588); font-family: Lato, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, Helvetica, sans-serif; font-size: 14px;&quot;&gt;SQLite&lt;/span&gt;&lt;/strong&gt;数据库，还有网站域名，管理员账号密码什么的填写一下就OK了！&lt;/p&gt;&lt;p&gt;下一篇：&lt;a href=&quot;https://yzkos.com/web/2017/03/apache-gogs-url/&quot; target=&quot;_blank&quot; title=&quot;https://yzkos.com/web/2017/03/apache-gogs-url/&quot;&gt;使用Apache给gogs绑定域名通过80端口访问&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 08 Mar 2017 17:33:37 +0800</pubDate></item></channel></rss>