草庐IT

支持首次触发的 Go Ticker

促使我写这篇文章主要是在写一个关于虚拟货币账户监控的项目时使用Ticker的问题。Ticker的问题如果用过Ticker的朋友会知道,创建Ticker后并不会马上执行,而是会等待一个时间d,这就是创建时的间隔时间。如果间隔时间很短这基本上不会有太大问题,但是如果对首次执行时间有要求,就会很麻烦。例如以下这个案例:packagemainimport( "fmt" "sync" "time")funcmain(){ ts:=time.NewTicker(5*time.Second) fmt.Println("start_time#",time.Now().Unix()) chanClose:=ma

支持首次触发的 Go Ticker

促使我写这篇文章主要是在写一个关于虚拟货币账户监控的项目时使用Ticker的问题。Ticker的问题如果用过Ticker的朋友会知道,创建Ticker后并不会马上执行,而是会等待一个时间d,这就是创建时的间隔时间。如果间隔时间很短这基本上不会有太大问题,但是如果对首次执行时间有要求,就会很麻烦。例如以下这个案例:packagemainimport( "fmt" "sync" "time")funcmain(){ ts:=time.NewTicker(5*time.Second) fmt.Println("start_time#",time.Now().Unix()) chanClose:=ma

中文输入法中光标跟随能力触发的浏览器事件探究

:::tip最近在着手腾讯文档的输入体验优化,在其中有一个不起眼的小需求引起了我的注意,并顺便研究了一些事件监听机制相结合的特点,特此记录一下填坑过程。:::模拟光标跟随大部分的主流输入法都有这样一个特性,在输入中文时,可以通过左右方向键控制光标,移动至输入区中任意两个字符之间的位置,用户接下来的字符输入将在光标处直接插入。由于腾讯文档的渲染的画布是完全自主实现的,为了在体验上与普通可编辑画布保持一致,我们需要自己来模拟这一光标的移动行为。首先,我们需要确定的是输入法中的模拟光标进行更新的时机。经试验,用户在进行中文输入时,若使用了方向键移动光标,将会触发光标的移动行为。因此,首先要解决的是使

中文输入法中光标跟随能力触发的浏览器事件探究

:::tip最近在着手腾讯文档的输入体验优化,在其中有一个不起眼的小需求引起了我的注意,并顺便研究了一些事件监听机制相结合的特点,特此记录一下填坑过程。:::模拟光标跟随大部分的主流输入法都有这样一个特性,在输入中文时,可以通过左右方向键控制光标,移动至输入区中任意两个字符之间的位置,用户接下来的字符输入将在光标处直接插入。由于腾讯文档的渲染的画布是完全自主实现的,为了在体验上与普通可编辑画布保持一致,我们需要自己来模拟这一光标的移动行为。首先,我们需要确定的是输入法中的模拟光标进行更新的时机。经试验,用户在进行中文输入时,若使用了方向键移动光标,将会触发光标的移动行为。因此,首先要解决的是使

软件研发的核心问题 -- 效率,质量,成本与产出的关系

软件工程的核心问题-质量,时间,内容与投入之间的关系质量,时间,内容,三者各在一个端点。三者构成一个三角形关系,三者围成的三角形面积就是一个软件投入。在面积不变即投入不变的情况下,任何一个提高单一端点的行为都会降低剩余的两个端点。质量。指代码的质量。时间。指软件的开发时间。包括开发时间,测试时间。内容。指系统包含的模块,功能点等内容。软件开发的本质就是在一定的投入下,在一定的时间内,以一定的质量,开发出一定数据量的内容(功能模块或功能点)。 

软件研发的核心问题 -- 效率,质量,成本与产出的关系

软件工程的核心问题-质量,时间,内容与投入之间的关系质量,时间,内容,三者各在一个端点。三者构成一个三角形关系,三者围成的三角形面积就是一个软件投入。在面积不变即投入不变的情况下,任何一个提高单一端点的行为都会降低剩余的两个端点。质量。指代码的质量。时间。指软件的开发时间。包括开发时间,测试时间。内容。指系统包含的模块,功能点等内容。软件开发的本质就是在一定的投入下,在一定的时间内,以一定的质量,开发出一定数据量的内容(功能模块或功能点)。