我眼中程序员简历

为开源项目贡献过代码 +10 接触过3种以上编程语言 +10 有业余编程项目 +10 有持续维护的开源项目 +10 简历为PDF格式或独立HTML页面 +5 有独立域名的技术博客 +5 有自己的Github地址 +5 同时接触过编译语言和脚本语言 +5 只接触过一种编程语言 -5 屡次强调自己的Master/Doctor学历 -5 简历格式为docx -5 简历中提到熟悉Microsoft Office -5 Github中全是Markdown项目 -5 简历中提到各种认证 -5 简历中提到计算机二级证书 -10 简历中有拼写以及语法错误 -10 代码中代码缩进同时有tab和空格 -10 代码中大括号同时有换行和不换行 -10 简历格式为doc -15 简历文件命名类似"新建Word文档" -15 »

Author image 月杪 on #Other,

利用Github的Webhook功能进行持续集成

Webhook,也就是人们常说的钩子,是一个很有用的工具.你可以通过定制Webhook来监测你在Github.com上的各种事件,最常见的莫过于push事件.如果你设置了一个监测push事件的Webhook,那么每当你的这个项目有了任何提交,这个Webhook都会被触发,这时Github就会发送一个POST请求到你配置好的地址.

»

Author image 月杪 on #VPS,

如何选购VPS


什么是VPS

VPS全称Virtual Private Server(虚拟专用服务器).其实就是物理机上开出的虚拟机.
很多IDC服务商都喜欢给自己的VPS起一个听起来一脸懵逼的名字比如阿里云的ECS,比如腾讯云的CVM等等.
直接说主机或者直接说实例感觉在他们的企业文化里很难接受似的,一定要起个名字.
其实我想原因是AWS这个云服务的鼻祖把他们的机器取名EC2.

有些人不管什么时候都说ECS,就是典型的只用过阿里云的傻缺.

»

Author image 月杪 on #VPS,

利用Guetzli压缩jpg图片

Guetzli is a JPEG encoder that aims for excellent compression density at high visual quality. Guetzli-generated images are typically 20-30% smaller than images of equivalent quality generated by libjpeg. Guetzli generates only sequential (nonprogressive) JPEGs due to faster decompression speeds they offer. Guetzli 是一个JPEG编码器,它可以实现在高质量下出色的压缩比例,Guetzli通常情况下比libjpeg生成的jpeg图片大小要小20%~30%.Guetzli只会生成序列化的JPEGs来保证同时也拥有高速的解码能力. 所以Guetzli事实上是一种图片编码,在拥有高质量高压缩比的同时完全兼容jpg解码. 编译 安装依赖 On Debian/Ubuntu apt-get install libpng-dev On CentOS/RH yum install libpng-devel On Fedora dnf install libpng-devel On ArchLinux pacman -S libpng On Alpine Linux »

Author image 月杪 on #Other,

在Nginx中配置Google-Analytics

原因 在Nginx端配置Google-Analytics和在HTML中加载Google-Analytics有几个显著的有点, 杜绝用户到Google Analytics之间的网络问题,特别是国内(尽管已经解析到Google在北京的服务器) 防止adblock这样的软件屏蔽 提升页面加载速度 配置方法 nginx 配置 server 块内加入以下内容 userid on; userid_name cid; userid_domain moonagic.com; userid_path /; userid_expires max; if ($http_accept_language ~* '^(.+?),') { set $first_language $1; } location @tracker { resolver 8.8.8.8 ipv6=off; # 需要设定dns,不然无法解析.不支持ipv6的机器需要关闭ipv6 internal; proxy_method GET; proxy_pass https://www.google-analytics.com/collect?v=1&tid=UA-*******-*&$uid_set$uid_got&t=pageview&dh=$host&dp=$request_uri&uip=$remote_addr&dr=$http_referer&ul=$first_language&z=$msec; proxy_set_header User-Agent $http_user_agent; proxy_pass_request_headers off; proxy_pass_request_body off; } 并在指向root或者bypass的时候添加 location / { root /content/path/; post_action @tracker; ... } location / { proxy_pass http://127.0.0.1:8081; post_action @tracker; . »

Author image 月杪 on #Nginx,

利用OpenSSL加解密文件

openssl包括了大量的对称,非对称,摘要等加密算法,我们可以选用对称算法对文件进行加密,比如3DES,AES. 比如我们要对ocserv-0.11.11.tar.xz进行加密,那么我们可以使用下面的方法 openssl des3 -salt -in ocserv-0.11.11.tar.xz -out ocserv-0.11.11.tar.xz.des3 其中-in是输入文件,-out是加密后输出的文件 之后会提示你输入一个用于加密的密钥,输入一个自己能记住的密码 enter des-ede3-cbc encryption password: Verifying - enter des-ede3-cbc encryption password: 然后我们可以试试加密后的文件是否可以打开 tar Jxf ocserv-0.11.11.tar.xz.des3 tar: Unrecognized archive format tar: Error exit delayed from previous errors. 嗯…可以确认文件被成功加密了. 我们试试把文件解密 openssl des3 -d -salt -in ocserv-0.11.11.tar.xz.des3 -out newocserv-0.11.11.tar.xz enter des-ede3-cbc decryption password: 解密出来的文件输出为newocserv-0.11.11.tar.xz 解压看看 tar Jxvf newocserv-0.11.11.tar.xz x ocserv-0.11.11/ x ocserv-0.11.11/configure x ocserv-0.11.11/TODO .... Over. »

使用certbot工具签发泛域名证书

Let’s Encrypt的泛域名证书计划2月27日正式发布,结果临近的时候突然宣布延期了.本以为会像ECC中间证书延期一样等不到了,结果今天一大早就看到了正式发布的消息. 看到了acme.sh已经正式支持泛域名证书签发的消息,结果acme.sh支持的dns验证暂时并不支持我所使用的Google Cloud DNS. 于是尝试使用certbot(这也是一直以来我使用的签发工具). 其实和签发单域名的方法差不多,只是需要多一个--server参数 ./certbot-auto \ --server https://acme-v02.api.letsencrypt.org/directory \ --manual \ --preferred-challenges dns-01 certonly 接着会让你填入需要签发的域名,直接输入类似*.example.com就好. 后面的dns认证就和单域名一样了. 当然上一步你可以选择传入csr文件: ./certbot-auto \ --server https://acme-v02.api.letsencrypt.org/directory \ --manual \ --preferred-challenges dns-01 certonly \ --csr domain.csr 这样可以同时签发出多域名和ECC证书. »

Author image 月杪 on #SSL,

使用CURL请求HTTPS页面时指定IP

一般在使用CURL请求自定义IP地址并且指定HOST的话可以这样 curl http://127.0.0.1/ -H 'Host: moonagic.com' 但是如果你需要请求的地址是HTTPS的就不行了, curl [IP]:443 -H 'Host:moonagic.com' curl: (52) Empty reply from server curl https://[IP]:443 -H 'Host:moonagic.com' curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. »

Author image 月杪 on #curl,

删除通过pkg安装的程序

Mac下安装程序是非常便捷的. 但是这仅仅是局限于dmg/App安装,当你使用pkg安装了程序而开发者又没有提供卸载工具而你又需要卸载的话就完全摸不着头脑了. 不过我们可以通过pkgutil这个工具来搞定. 我们以mtr这个软件为例,我们并不知道mtr.pkg到底安装了什么文件,那么可以先执行pkgutil --pkgs pkgutil --pkgs com.apple.pkg.OSX_10_13_IncompatibleAppList.16U1254 com.apple.pkg.CustomVoice_en_US_nora.16U1181 com.apple.pkg.update.os.10.13.1Supplemental.17B1003 com.apple.pkg.DevSDK_macOS1013_Public com.apple.pkg.XProtectPlistConfigData.16U4027 com.apple.pkg.MRTConfigData.16U4028 com.apple.pkg.CLTools_Executables com.apple.pkg.GatekeeperConfigData.16U1300 org.rudix.pkg.mtr # 这就是我们要找的pkg com.apple.pkg.XProtectPlistConfigData.16U4024 com.apple.pkg.update.os.10.13.2SupplementalPatch.17C205 com.apple.pkg.MRTConfigData.16U4017 com.apple.pkg.MRTConfigData.16U4013 com.apple.pkg.GatekeeperConfigData.16U1259 com.apple.pkg.GatekeeperConfigData.16U1265 com.apple.pkg.CLTools_SDK_OSX1012 com.apple.update.fullbundleupdate.17D47 com.apple.pkg.DevSDK com.apple.pkg.iTunesX.12.7.3.delta com.apple.pkg.EmbeddedOSFirmware com.apple.pkg.BridgeOSUpdateCustomer com.apple.pkg.XProtectPlistConfigData.16U4022 com.apple.pkg.CLTools_SDK_macOSSDK com.apple.pkg.iTunesX.12.7.delta .... 找到对应pkg的identify后执行pkgutil --files [identify] pkgutil --files org.rudix.pkg.mtr usr usr/local usr/local/bin usr/local/bin/mtr usr/local/share usr/local/share/doc usr/local/share/doc/mtr usr/local/share/doc/mtr/AUTHORS usr/local/share/doc/mtr/COPYING usr/local/share/doc/mtr/FORMATS usr/local/share/doc/mtr/NEWS usr/local/share/doc/mtr/README usr/local/share/doc/mtr/SECURITY usr/local/share/doc/mtr/TODO usr/local/share/man usr/local/share/man/man8 usr/local/share/man/man8/mtr.8 现在我们就知道mtr这个pkg包安装了哪些文件了. »

Author image 月杪 on #Mac,

Nginx 1.13.9 HTTP/2 server push 介绍

2018年2月20日发布的NGINX 1.13.9开始支持HTTP/2服务器推送功能. HTTP/2规范中定义的服务器推送允许服务器抢先将资源推送到远程客户端,预计客户端可能很快会请求这些资源.通过这样做,您可以在页面加载操作中将RTT(往返时间 - 请求和响应所需的时间)减少一个RTT或更多,从而为用户提供更快的响应. 配置HTTP/2 server push server { # Ensure that HTTP/2 is enabled for the server listen 443 ssl http2; ssl_certificate ssl/certificate.pem; ssl_certificate_key ssl/key.pem; root /var/www/html; # whenever a client requests demo.html, also push # /style.css, /image1.jpg and /image2.jpg location = /demo.html { http2_push /style.css; http2_push /image1.jpg; http2_push /image2.jpg; } } 验证HTTP/2 server push 使用开发人员工具进行验证(Google Chrome) 使用命令行客户端进行验证(nghttp) # *表示服务器推送的资源 $ nghttp -ans https://example. »

Author image 月杪 on #Nginx,