端口号如何选择

该绑定到哪个端口这对于每一个编写服务器的程序员而言都是一个非常重要的考量。应该选择随机端口吗?该如何知道是否已经有其他的程序将某个端口宣为己有?任何在 0~65535 之间的端口都可以使用,但是在选用之前别忘了一些重要的约定。规则1: 不要使用 0~1024 之间的端口。这些端口是作为熟知 (...

字体子集 - 字体压缩方案

思源宋体出现了以后一直想用到自己博客上面,做法一般是用工具把现成的字体给子集化(subsetting),有印象的是 Fontmin,然后又找到一个 font-carrier 。这些字体子集化的工具都是用 node.js 写的。但是对于思源字体的 otf 支持很差劲,fontmin 根本没有支持...

目前做windows桌面应用程序,MFC、QT、C#哪个更好?

WPF和WinForm技术有什么区别?哪个更加有前景?https://www.zhihu.com/question/36859063wpf的底层是DirectX,意味着你的显示效果不仅可以更炫更酷,同时显卡(集显独显均可)提供的加速也不会拖累你的运行速度。winform的底层是GDI/GDI+...

网络请求库对比

r2 是比较早期的替代品,算是 request next 早期比较通用的产品,core 大约 3.17kbnode-fetch 是仿造 fetch API 写的 NodeJS HTTP 客户端,如果你对 fetch 比较熟悉考虑这个,有点是一直在更新,启动堆栈差不多 20k 。大家比较熟就不多...

高阶组件

高阶函数:对传入的函数进行增强, 并返回一个添加了额外行为的新函数。const HoC = Component => EnhancedComponent 高阶组件其实就是函数,它接收组件作为参数,对组件进行增强后返回。

Kubernetes 容器生命周期钩子

从上面这张图我们可以直观的看到 PostStart 和 PreStop 包括 liveness 和 readiness 是属于主容器的生命周期范围内的,而 Init Container 是独立于主容器之外的,当然他们都属于 Pod 的生命周期范畴之内的,现在我们应该明白 Init Contai...

不使用 sudo 命令执行 Docker

将当前用户加入到 docker 用户组因为 Docker 运行时需要特殊权限,所以默认执行命令时都必须在前面加上 sudo。但这样做确实使人厌烦,一个可行的解决方法是把用户放进 docker 用户组里。在 Ubuntu 下你可以输入:sudo usermod -aG docker $USER重...

依赖 Github 实线持续集成与持续发布 CI&CD

持续集成(Continuous integration,CI)指的是在开发过程中持续地将所有开发人员的代码合并到代码库的主线上,然后对该主线代码进行编译、测试运行等操作对代码进行检验,其目的是尽可能早的发现代码集成后导致的问题。实现持续集成的要点主要有:共享的代码库、自动化编译、自动化测试等,...

PHP处理密码的几种方式

在使用PHP开发Web应用的中,很多的应用都会要求用户注册,而注册的时候就需要我们对用户的信息进行处理了,最常见的莫过于就是邮箱和密码了,本文意在讨论对密码的处理:也就是对密码的加密处理。MD5相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这样的...

MacOS Valet 开启 PHP Xdebug

本教程适用于 homebrew 安装的 php@7.2首先安装 xdebug 扩展:sudo pecl install xdebug 创建 xdebug 配置文件:在 /usr/local/etc/php/7.2/conf.d 目录下创建 xdebug.ini 文件,并写入以下内容:[xdeb...