让 frp 和 nginx 一起使用 80 端口

不知不觉又几个月没更新博客了……frp 是一个内网穿透工具,可通过一台公网服务器,将内网的网站或其它服务提供给外部访问,同类工具还有 ngrok 等。而像我这种小屌丝一般只有一台公网 vps 上面还放着好几个网站,那 80 端口就被 nginx 之类的服务占用了,还怎么给 frp 使用呢?其实只要给 nginx 增加一个简单的配置,就可以将某个域名的流量转发给 frp 了,还可以通过泛解析来...

用 C# 从图片的 EXIF 信息中读取拍摄地点 GEO 坐标

本来觉得应该挺简单的一个事,没想到 EXIF 中记录的原始数据是 “度分秒” 格式的 byte[],而且还用到另一个 byte[] 记录东南西北方向。但现在许多 API 都是以 “度” 为单位的,例如 123.456789,要使用这些 API 还要转换一下格式。找了几篇 StackOverflow 的帖子,把不同答案中最简练的部分提取出来,封装成一个简单的类,以备后用吧。using Syst...

几个移动端常用的 CSS 属性

最近在写一个移动端的页面,为了页面上的一些细节,找到了几个 CSS 属性,做个笔记。/* 弹性滚动 */ -webkit-overflow-scrolling: touch; /* 移除元素的默认样式,例如 iOS 中的圆形按钮 */ -webkit-appearance: none; /* 屏蔽长按选择文字,但使用不当会影响文本框输入 */ -webkit-user-select: n...

不闪的 才是健康的 —— 让 Winform 控件不再闪烁

俗话说「不闪的,才是健康的」。做 Winform 应用的时候经常会用到 ListView 控件,而如果频繁更新 ListView 中的内容则会一闪一闪的非常不舒服,用户体验极差。其实解决这个问题也很简单,下面提供两套方案,适用于不同情况。1. 自定义 ListView 控件如果项目中有多处地方用到 ListView,那我们可以自定义一个 ListView 并重写其中的样式行为方法,让其使用双...

使用 Shell 脚本自动备份网站 + MySQL + Nginx 配置 + SSL 证书

缘起这两天终于也用上了阿里云的 ECS 服务器。原本一直担心自己不会运维不会管理,怕被黑,所以用的都是虚拟主机。但随着阿里云虚拟主机的价格水涨船高、一个主机只能放一个网站、无法配置 SSL、无法升级 PHP 版本、无法使用 Memcached 和 Redis 等问题,ECS 服务器的优势就越来越明显,所以最终还是硬着头皮上了一台服务器。一开始装了 Windows Server 2008 R2...

简单实现 .NET 多线程的任务队列

这是一个听起来既异步又同步的概念,然而在实际编程的时候经常会碰到的「业务逻辑」,尤其是在涉及网络操作的时候。这里我用一个最简单、最实际的例子来帮助描述,那就是「刷票」。齐头并进在刷票的时候,如果一票一票的刷,那就太没效率了。假设刷一票总共需要 3 次网络操作,每次平均 1 秒完成,算下来一分钟才刷 20 票。这时候我们就需要多个刷票任务齐头并进,也就是进入多线程模式,这样可以 10 个、或更...