595mm in daily life

Published / by youenzeng / Leave a Comment

595mm

最近搬家,需要买一些家电.由于厨房只有一道约60公分的空间,在买家电的时候关注了一下尺寸. 惊奇的发现很多家电都有一个相似的尺寸:595mm.

  • 单开门冰箱
  • 滚筒洗衣机,干衣机
  • 洗碗机

我想这肯定是装修时有意如此设计的,留下一道60公分的空间来放置家电.也就是说多年前这个宽度已经成为行业标准,且各个家电行业的设计都在遵循这个标准. 由此想到计算机的硬件接口设计也是如此, 外部接口USB/SATA/VGA&HDMI多年只在进化且保持向下兼容.

不过计算机内部的接口就没有那么’友好’了,CPU/内存针脚隔代基本不兼容. 反之推想,各种电器内部也肯定经过了多重改进/改良.

都是在条条框框里面进化.

Git bash alias config

Published / by youenzeng / Leave a Comment

SourceTree是一个功能很强大的Git GUI工具,但是就是太慢,且在Windows下会出现莫名占用一个核心CPU。于是开始折腾Git bash,目前基本够用。其中alias部分的配置文件如下,供参考,放到 /username/.gitconfig里面即可。

[alias]
l = log --pretty=format:"%C(yellow)%h\ %ad%Cred%d\ %Creset%s%Cblue\ [%cn]" --decorate --date=short
a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose
d = diff
ds = diff --stat
dc = diff --cached
s = status
ss = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"
# list aliases
la = "!git config -l | grep alias | cut -c 7-"

其中我最喜欢的是git lg,附图2张,右键查看大图。
git lg
git lg2

aspnet website load config by environment

Published / by youenzeng / Leave a Comment

aspnet website load config by environment

在产品的发布流程中,通常会分几个阶段如DEV,QA,Pre-production,production等,根据发布环境动态加载网站的配置文件是一个比较常见的需求。
在ASPNET和aspnetcore中,有着不同的实现方式。

aspnet

在传统ASPNET项目中,采用Web.config做配置文件,这种XML结构的文件,微软提供了Transform(转换)语法的功能。
通过这种aspnet,可以实现对XML节点的追加、替换、删除。在Web.relase.config中,就使用了这种功能来移除调试的配置节点。在编译的过程中,可以声明配置的名称,生成最终的Web.config为转换后的结果。

aspnetcore

在aspnetcore中,可以根据当前运行环境来决定使用哪个配置文件。这个运行环境读取自host进程的ASPNETCORE_ENVIRONMENT环境变量。ASPNETCORE的配置文件为appsettings.json格式,加载时采用子配置文件覆盖的策略,即appsettings.dev.json节点会覆盖appsettings.json的。

结论

通过上面的对比,可以看到aspnet项目是编译时确定环境,而aspnetcore是运行时确定环境,后者可以一次编译随地运行,在便捷上,aspnetcore优于传统的aspnet。
但是在现代化的DevOps工具支持下,可以通过配置分发解决大部分问题。(待研究)