天天の記事簿

一個 蘿莉控 技術宅的世界

04/18
23:18

打包Git两个版本间所有变更的文件

emmmmmmm,博客长草半年了,期间也没写什么有深度的文章,真是惭愧惭愧。

于是今天呢,还是写篇没啥营养的文章…

 

起因呢,可以说一说。

公司没有成型的发布系统,现在项目的发布呢,新项目可以直接通过 Git 发布,很简单;我这个项目组的项目呢,有些(liang)年(nian)头(ban)了,发布还需要从 Git 拷贝文件到 SVN,然后通过生产环境的 Shell 发布,麻烦点;还有个更久远的项目,要靠找文件手动更新,很麻烦。

今天,又到了几周一次的迭代发布的时候了,公司小伙伴从修改的项目中,花了 X 分钟,捞出了修改的文件,我又花了 Y 分钟才把文件更新到生产环境…简直麻烦

然后想应该有个啥方法可以自动提取出全部的受变更的文件。

这不,找到了给记下来:

git archive -o patch.tar HEAD $(git diff --name-only --diff-filter=ACMRT HEAD^)
# 或者
git diff --name-only --diff-filter=ACMRT HEAD^ | xargs tar -rf patch.tar

是不是看到了熟悉的 git-diff?语法大概就是这样了。

 

参考:

https://git-scm.com/docs/git-diff-tree

https://git-scm.com/docs/git-archive

https://stackoverflow.com/questions/4541300/export-only-modified-and-added-files-with-folder-structure-in-git

11/30
00:09

说说SNI Proxy

想着有没有其他什么方法可以更好地反向代理国内无法访问的 Disqus,然后在 V2EX 上看到有人提到 SNI Proxy,于是就随便鼓捣了下。

嗯,本文没有任何关于 SNI Proxy 配置及详细使用的方法,如果您只是想了解配置方法,请移步其他博客。

 

SNI Proxy,顾名思义,SNI 代理,不懂 SNI 的请访问维基百科。它是一个适用于 HTTPS 和 HTTP 的类似于透明代理的反向代理工具。它可以在 TCP 层直接将流量在不解包的情况下转发出来,实现不需要在代理服务器配置证书就能反向代理 HTTPS 网站的功能,它还实现了 IPv4、IPv6 以及 Unix 套接字的监听。

 

开发者的本来目的,是想在一个无法访问外网的地方,自建一套 DNS,把允许访问的域名指向代理服务器,同时将网址配置在 SNI Proxy 的映射表中,达到可以访问某些白名单中的网站。

…是不是觉得这个功能有点熟悉?

对,这个工具到了中国人手中,就成为了访问不存在网站的跳板。只要在海外 VPS 搭建了 SNI Proxy 服务器,将不存在的网站域名 DNS 指向该 VPS IP,就可以正常访问了…

Read More →

11/27
23:38

解决PHPMailer无法发送邮件的问题

虽然自从 5 月份就没有更新博客了,但是中途还是让博客支持了 HTTPS,同时启用了 HTTP/2,只是没有强制启用。不过发现 Apache 2.4.27 以后就不再支持 perfork 模式下的 HTTP/2 了,就有段时间没有管了。

这不,宇宙最好的语言马上要推出 7.2.0 了,WordPress 也更新到 4.9 版本了,顺带解决上面的问题,于是更新了一波 Apache 和 PHP。

只是发现…为嘛我的邮件发不出去了…

 

不知道为什么,WP 内置的 PHPMailer 调用疼讯企业邮箱的 SMTP 就是无法发出邮件,总是提示 SMTP connect() failed.,让我一度以为服务器无法连接到 smtp.exmail.qq.com。然后经过 telnetping 发现连接是完全正常的,DNS 也能正常解析。

之后我开始怀疑是 DO block 了 SMTP 的连接,或者因为我的疼讯企业邮箱没有经过正常意义的实名认证,微信绑定,导致无法正常发送邮件。正在我打开了 DO 的 tickets,正要发个工单问情况,同时考虑着是不是要把域名邮箱迁移到 ZOHO 去时,我突然意识到好像还没打开 SMTP 的调试模式查看具体的失败原因,万一是我自己的问题呢…

我很庆幸打开调试看了看,不然就要被客服认为是煞笔了…

Read More →

06/21
22:53

SVN使用git-svn出现Using higher level of URL报错

公司版本控制还是使用 SVN,但是个人习惯使用 Git,于是使用 git-svn 替代 SVN。

但是在 git svn clone svn://xxxx 之后,竟然出现了 Permission denied,还有一坨 Perl 的报错。当时傻逼似的去狂搜和权限相关的解决方案,直到我看到了 Using higher level of URL: xxxxxx

恍然大悟,我只有 SVN 某个分支的权限,但是 git-svn 会非常“智能”地使用root 路径拉取整个 SVN 项目,于是需要添加 --no-minimize-url 参数阻止 git-svn 自动使用更高级的,你没有权限的路径。具体可以参考这篇提问

 

没了,是不是很水,我也是这么觉得的,这个博主真辣鸡。

05/14
23:58

CentOS编译安装Apache启用HTTP/2

很好,我又开看似不需要的新坑了。

主要是想启用 HTTP/2 了,虽然现在还在使用 CentOS 6.X,但是有升级到 CentOS 7.X 的打算,所以写个博客记录一下。

 

阅读这篇文章前,有些东西需要知道一下:

1. 这次不会像之前的文章一样写得那么详细了,点到为止

2. 依旧没有“一键安装”脚本,因为懒

3. 小白用户或者没有支持 HTTP/2 计划的小伙伴请移步《编译安装LAMP:Apache篇》,但只支持 CentOS 6.XApache 2.4

3. 支持 CentOS 6.X & 7.XApache 2.4HTTP/2

4. 以后 OpenSSL 出漏洞要自己编译更新(Flag 已立)

5. 不涉及 HTTPS 配置,配置参阅《Apache开启HTTPS支持并绑定(泛域名)CA证书》一文

Read More →

04/27
23:26

解决Windows 8.1 Windows Update卡在正在检查更新的问题

Windows 10 已经面世一年多了,但是因为种种原因(懒得装环境),我依旧在使用 Windows 8.1。

Windows 8.1 的安全性相比于 Windows 10 来说,差了很多,所以打补丁是非常必要的,特别是方程式的日站框架解密之后,没打补丁的 Windows 8.1 更是面临重重挑战。

Windows Update

说来也奇怪,用同一个镜像装的系统,家里的台式机、笔记本都无限检查更新,而且就算笔记本带到杭州,还是无限检查更新,然而公司的电脑却一切正常…

我一度认为是网络问题,但是今天把笔记本带到公司,还是卡在正在检查更新…我的内心是崩溃的_(:3」∠)_

 

在打不了补丁的近半年内(对,就有这么久),我在大大小小的各个网站搜索解决方案,但是经过各种尝试,皆无果。然而,在我快要放弃的时候,我在一个网站发现了一个看似不靠谱的解决方案,但是经过我的测试,竟然成了!!

这里我就将我试过的方法提供给大家,大家可以本着死马当活马医的心态进行尝试。

Read More →

03/8
22:02

出现connect ECONNREFUSED 127.0.0.1:3306报错的解决方法

最近用 Node 写一个小玩意,需要用到 MySQL 数据库,现在用得最广泛的是 mysql 这个库。然后呢,现在 ORM 这么火,干脆也上 ORM 吧,正好我也不会可以学习一下,于是找到了 Sequelize.js 这个 ORM 库。

 

看看 Sequelize 的文档,so easy,两分钟搞定~

import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
    host: 'localhost',
    port: 3306,
    dialect: 'mysql',
    pool: {
        max: 5,
        min: 0,
        idle: 10000
    }
});
// ...后面还有一堆懒得贴了

运行一下

SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306

什么鬼,为什么会出现这个错误呢?我明明设置的是 localhost,为什么会变成 127.0.0.1

Read More →

03/5
17:36

Node.js神器之babel-preset-env

Babel 是每个 Node.js 的使用者都会使用的一个代码转(bian)换(yi)器,它可以把 ES6ES7 等语法转换成 ES5 的语法,使其能在更多环境下运行。

但是随着浏览器和 Node.js 的版本迭代,他们对新语法的支持也越来越好。但是非常尴尬的是,我们总是使用 Babel 把所有代码一股脑转换成 ES5。这意味着我们抛弃了性能优秀的 letconst 关键字,放弃了简短的代码,而选择了又长又丑像坨屎的经过变换后的代码。

即使仅仅将代码跑在对 ES5 支持度在 99%Node 6,一旦使用了 import 关键字,你就得用 Babel 对代码进行转换,一般还是全部转换为 ES5,辣鸡 Node.js 竟然还不支持 importexport

 

那有没有什么工具能智能识别当前运行环境,并且进行适当的转换,以及填充适当的 polyfill 呢?

Read More →

02/23
01:01

那些年,我们一起做过的项目

来杭州也有那么几天了,面试也有那么些,面试过程中发现大部分公司在社招时对在大学写的项目都不感冒,觉得都是小孩儿写着玩的,看来对大学的项目都有很深的怨念啊。哈,也能接受,毕竟大学也就这样了。

不过对我这样的大学项目都是实打实的非学校项目的人来说,确实有些不利= =

 

其实最关键的是,大学写的项目都因为各种原因,没法开源,而且上过线的没上过线的项目也都没有可访问的网址了,相当于是死无对证,全凭我一张嘴胡说八道…

设身处地地想想,要是我是面试官,我肯定会对这个人的真实项目经验有怀疑,于是这篇博客就展示一点我说的是事实的凭证,也当是对我大学时代写过的大大小(da)小(da)的一些项目的一个总结。

Read More →

02/7
00:17

手动下载Windows Defender离线更新包

我知道的,这个问题在谷歌上随便一搜就有一大坨结果,但是我还是打算发一篇博客。

为什么会这样呢?..【打死 ( ̄ε(# ̄) Σ

啊我死了 _(:3」∠)_

 

这个问题很奇葩,因为不管是我的新(jiu)电脑还是我的笔记本,都无法进行 Windows Update。你要说是我网络问题,OK,我都爬墙了,韩国梯子,速度嗖嗖的,依然没有任何更新的网络流量。

你们说吧,作为一个裸奔用户,至少也得让 Windows Defender 来挡下小〇〇吧,衣服可以不穿,树叶总得来一片啊。没办法,只好到巨硬网站上手动下载了。

地址:https://www.microsoft.com/security/portal/definitions/adl.aspx

累积更新包,M$ 还真良心,你咋不把你的 Windows Update 累积下?

嗯,我只是来吐槽的..