微软实习一周所感
已经3个多月没更新博客了,很惭愧。这周正好入职了微软。想顺便聊聊在微软待了一周的所见所想。
为什么想去微软上一个东家是字节跳动,我在那里做着前端开发。这公司什么都好,就是太累。有段时间每天都要忙到10点,到家了还要随时oncall了,非常痛苦。
本人春招只投了ms,就是抱着试一试的心态去的。去感受下外企的氛围。同时自己也用这很多ms的产品,对其也比较有感情。如果没进,那么字节也是一个很好的选择。待遇不错,离家也近。996也就是苦那么几年。
结果,在笔试爆零,面试全英文的情况下,我奇迹般的进了微软。很快我也便辞去了字节的工作,在家摸鱼,等7月前去新单位上班。
微软的环境微软上海位于紫竹园区内,离我大学的闵行校区很近,可惜我在另一个校区,无福享受。因为地处闵大荒,班车是必不可少的,每天班车通勤时间会花掉将近90分钟时间,实际上还是可以接受的。不过家在上海北部或者浦东的同学,就没那么好运了,通勤时间会更长。
办公环境上来说,还不错。每个人的工位很大,不像字节,很挤,工位像网吧一样。茶水间有免费零食和饮料,不过零食的种类和数量都少的可怜。
三餐都是要自己掏腰包的,所以每次吃饭也是笔不小的开
2020-07-04
杂谈
增强RN的Stylesheet
一句话概括 让StyleSheet.create支持字段方法同时能保持类型检查,代码实现直接看 造轮子部分
情景重现在编写RN代码中,我们常常会遇到这样的case:
<Button
// ...
viewStyle={[styles.submitBtn, isValid?null:{ backgroundColor: '#8A223C' }]}
textStyle={[styles.submitBtnText, isValid ? null : { color: '#8A8B9C' }]}
/>
可以看到,我们经常会需对style进行extend,根据某个变量来对样式进行修改。
这种做法看似方便,却打破了样式与逻辑分离的约定。不利于后期的维护。
问题引入我们仔细想一下,有什么办法可以做到让样式也可以根据传入的数据来进行变化呢?
比较容易想到的就是用方法(method),我在style对象里加方法,根据入参来决定出参不就行了?
然而由于StyleSheet的声明文件限制,我们的style对象必须只能是字面量
type Named
Rust过程宏实现Python-Fire
Python-Fire是一个简单易用的库,它能够将Python函数转变成 CLI 形式,将函数的参数作为命令行参数来读入,举个例子:
# main.py
import fire
def add(fst, snd):
print(fst + snd)
if __name__ == '__main__':
fire.Fire(add)
命令行输入 python3 main.py 1 2,成功输出 3。
这对于程序的快速验证时非常有效的,用户也无需反复修改源代码来改变输入参数,只需改变命令行参数即可。
很奇怪,Rust社区并没有相应的实现,在查阅了 crates.io 发现只有一个假lib之后,决定自己撕一个出来。而这个lib的核心,就是本篇文章的主角:过程宏。...
设计模式(二)之观察者模式
时隔一年多之后,我又回来更新这个系列了==。==
这次我们来看一下被广为使用,即使没接触过设计模式同学也一定听说过的,观察者模式。
JDK版本:11(Java8的语言特性)
参考书籍:《HEAD FIRST 设计模式》
IDE: IntelliJ IDEA
实例引入接触过Web前端的同学都知道,DOM API中,可以给事件绑定回调函数 (callback)
const node = document.createElement("div")
node.onclick = () => console.log("clicked!")
简单解释一下,代码第一行创建一个DOM,第二行给 onclick 设置一个函数,每当触发 click 事件时都会执行该函数【还有个闭包的效果,这里没体现,当然这也不是这篇的重点,不展开讲】。
来看一下点击之后的效果
同理我们还可以给其他事件绑定回调函数
node.ondrag = () => console.log("dragged!")
通俗来讲,上述代码做的是类似 trigger 一样的工作:当目标对象发生变化时,我们需要一个函数/方法去对其进行响应。 ...