Welcome to

快雪Tang

Home / 技术

MySQL 日期时间以及时区的最佳实践

简单介绍 MySQL的数据类型中,datetime和timestamp是有点区别的两种字段类型。datetime存储的时间与时区无关,timestamp存储的时间总是为UTC。所以说,datetime的时间戳需要应用去解释所在的时区,而timestamp则没有应用依赖性,它是一个精确的戳记无所谓应用处于哪个时区。 最佳策略 实际的场景中,你的insert/update动作会依据服务器系统时区和mysql配置的不同而带来不同的效果:对于系统时区为utc,或者mysql daemon服务配置为utc,则datetime/timestamp中都是存储的utc时间戳。如果不是这样的场景,则提交insert/update时,需要将datetime字段转换为utc时间戳。 当保证了你的db中只有utc时间戳之后,显示时你需要将时间转换到用户时区。 如果使用nodejs moment来包装时间戳,假定通过mysql driver拿到的datetime形如:”2018-03-09T12:37:59.012009Z“的格式,那么简单地: var dt = ‘2018-03-09T12:37:59.012009Z’ console.log(moment(dt).fromNow()); // xxx天前 console.log(moment(dt).format(‘YYYY-MM-DD HH:mm:ssZZ’)); // 2018-03-09 20:37:59+0800 注意到用户时区有浏览器默认值提供,moment()识别到附带时区指示的时间戳UTC值后能够正确地格式化到用户的时区。 测试mysql的时区设定 可以使用SQL语句来测试或者修改mysql的时区设定: SELECT @@global.time_zone, @@session.time_zone; SET GLOBAL time_zone = ‘+08:00’; SET GLOBAL time_zone = ‘Europe/Helsinki’; SET @@global.time_zone = […]

Read More

未来的随身计算设备,设想

  • Post By:
  • Date:
  • Category: 技术

肯定不是折叠屏,太搞笑。 我想,卷轴样式、耳廓或外耳道植入比较有可能,3d虚拟投射或全息投射有可能,眼底植入有可能。  

Read More

AS 3+, howto get useful databinding message

Android Studio 3+ 适用。 DataBinding 作为Android官方推出的数据绑定框架已经很有一段时间了。作为描述语言,它现在是很成熟的了。作为IDE支持,在AS中你可以上下文敏感地得到语法提示、类名包名自动完成等辅助工具。然而在编译层面,发现数据绑定带来的错误的根源仍然是不容易的。 目前比较有效的方法就是在Terminal窗口中使用: ./gradlew :app:build –info 2>&1 | tee app-build.log 然后在 app-build.log 中耐心寻找错误原因。   Android Official: Data Binding Library Android Data Binding: That <include> Thing

Read More

ubuntu 17.10 gnome font size and scale, for HiDPI

  • Post By:
  • Date:
  • Category: 技术

ttddddd的 gsettings set org.gnome.mutter experimental-features “[‘scale-monitor-framebuffer’]” gsettings set org.gnome.desktop.interface text-scaling-factor 1.20        

Read More

MBP切换网络设定

  • Post By:
  • Date:
  • Category: 技术

接上回的 在MBP苏醒时执行自动任务 ,继续说。 今次的重点在于网络切换。 这个任务,要被细分为很多细节,不过并没那么难,都很容易找到恰当的办法。   使用 macOS 的 “位置” 首先,经验告诉我们,在多种场所切换不同的网络配置,最佳方案是“位置 / Location”: 所以,如图所示,首先设定两个位置,一个是Home,一个是办公室。Home设置只有WIFI,IP地址是预分配的:192.168.0.71;办公室呢,WIFI被加入设施列表,但设置为关闭状态,此外Wireless被加入设置列表,作为主要的网络接口,办公室也是DHCP预分配的,WIFI为192.168.0.172,Wireless为192.168.0.72,网关为 192.168.0.254。 为什么不把HOME IP设置的和办公室一样呢?其实也是可以的,因为办公室和家里的网关不同,可以用于区别。我这里设置的不一样更多是一个历史缘由,可以忽略。 macOS的位置功能,允许你将全部网络设施选择性地配置到不同的位置。所以我花了不少时间来试验和选择出了最佳的组合方案,当然,下一次增加更多位置时就简单了,我想我会很快搞的定。   脚本操作 全局变量 PAC=’http://127.0.0.1:9050/pac’ BYPASS=’127.0.0.1 localhost test.local 163.com sina.com.cn’ WIFI=Wi-Fi LOC_WIFI=’HOME’ IP_WIFI=’192.168.0.71′ WIRELESS=’Thunderbolt Bridge’ LOC_WIRELESS=’SUWEI-OFFICE’ IP_WIRELESS=’192.168.0.72′ IP_WIRELESS_wifi=’192.168.0.172′ TD=NONE pac_url=NONE loc=$(c-location) ip=$(c-ip) 操作网络位置: c-location(){ networksetup […]

Read More

在MBP苏醒时执行自动任务

  • Post By:
  • Date:
  • Category: 技术

缘起 今次的起因在于我的本本需要在家里、办公室切换不同的网络,不同的代理、不同的网关等等,每天做两次实在是太超标了,于是就谋求自动化。 编程 经过一段时间的关注,一条编程指南被发现有助于解决问题: Technical Q&A QA1340 当然,Apple的尿性太差,links过一段时间就找不到了,所以这个技术问答实际是 Registering and unregistering for sleep and wake notifications Q: How can my application get notified when the computer is going to sleep or waking from sleep? How to I prevent sleep? 所以,我可以xcode写个console程序,做成服务在后台跑,拿住事件之后fork一个shell做事情就可以了。 […]

Read More

给go项目贡献,好难好麻烦 – I

  • Post By:
  • Date:
  • Category: 技术

如题,非常烦,之前试过一次,现在不想累了。 所以用个临时被动的,直接改,然后做个patch,以后或者分享补丁就是了:   “`bash git diff -p > ~/Downloads/patches/echo-$(git show-ref –head|grep ‘ HEAD’|awk ‘{print $1}’).patch “`   如上,目标路径你自己调整,patch的名字默认是原本的项目名字带上HEAD的hash值,不过还是随你。   精神好的话,可以去做做PR。

Read More

shell redirects

strip stdout output, and redirect the stderr output to stdout: openssl s_client -showcerts -connect example.com:443 </dev/null 2>&1 1>/dev/null merge stderr to stdout, and strip all of them: openssl s_client -showcerts -connect example.com:443 </dev/null 1>/dev/null 2>&1    

Read More

考虑更换这个blog

  • Post By:
  • Date:
  • Category: 技术

考虑去掉wp,这个blog或者换成别的工具或者平台来写底层,采用Markdown语法,实在是受够了wp的编辑器了。

Read More

Input 字体,程序员专用,自定义

  • Post By:
  • Date:
  • Category: 技术

http://input.fontbureau.com/download/ 这个字体可以自定义,所以最推荐。 然而不支持 Ligature 算是很遗憾了的。

Read More