2021-04-23

22 篇热帖

1. 程序员日常英文水平怎么提高? Java 别再读“渣蛙”了!

我司程序员通常会遇到一些尴尬的场景,比如 java 读“渣蛙”“扎我”、jpg 读“勾披计”……包括 C++、image 等等这些发音总会打破程序员的专业性。

所以我们制作了一系列的程序员英文发音视频来纠正他们,感兴趣的程序员朋友们可以一起来跟我们的海归小姐姐学习下。

视频戳这里: https://www.zentao.net/redirect-index-18864.html

2. 苹果 marketing chief 表示不打算整合 iPad 和 MacBook

不让给链接,原文是 macrumors 网站上的。

"There's two conflicting stories people like to tell about the iPad and Mac," says Joz, as he starts on a clarification that will lead him at one point to apologise for his passion. "On the one hand, people say that they are in conflict with each other. That somebody has to decide whether they want a Mac, or they want an iPad.

"Or people say that we're merging them into one: that there's really this grand conspiracy we have, to eliminate the two categories and make them one. And the reality is neither is true. We're quite proud of the fact that we work really, really hard to create the best products in their respective category."

第二段大概意思:“有人说苹果在把 ipad 和 macbook 整合成一个产品,取消两种产品然后变成一种产品,这是一个坊间非常流行的猜测。事实是这不是真的,我们可以非常自豪地讲:我们目前在非常努力地去让不同的产品在各自的领域上变得最好”

没了没了,m1 给 ipad pro 就是让 ipad pro 变成更牛逼的 ipad pro 而不是变成一个 mac 。我的 2018 ipad pro 估计能再战五年了,m1 mba 也再战五年吧 lol 。

3. 数据库设计太拉跨被喷了。

发现都是些智障问题,总结一下。

  • 表内创建人字段和更新人字段,只存了 name,没有存人的 Id 。当时想着是应该只关心是谁做的操作,所以没有加入 id 的关联关系。但是实际上在表设计中有关联关系但是不存关联信息的数据干脆就不存,要存就都存。

  • 关联表的索引关系一定要明确,该做约束的约束。该设置必输的设置必输。

  • 部分在代码中或者项目里比较高频的字段,表设计时最好加_info 。

  • 英文尽量要合理 比如创建人不应该是 create_name 合理的应该是 creator_name,这块当时设计的时候想的是 creator_name,但是为了和创建时间和更新时间对应就统一变成了 create_name 和 lst_name 。

目前统计下来应该都是类似的问题。我数据库设计确实拉跨,可能是因为之前做的东西过度松散,对于数据库设计基本都是能用就行,关联表的约束关系可能都没有做全,全靠代码来做。还有很多细节上的问题。其实每次开发都是很快很简单,但是表设计真的让我头大。

4. Fower: 一个可在 Vue 和 React 方便使用的 CSS in JS 库

今天给大家介绍一个我断断续续花了半年开发的 CSS 项目: Fower.

Fower 是什么?

Fower 是一个让你高效开发 UI 的样式工具库,目标是让你写 CSS 不再痛苦。Fower 的核心特点是原子化(Atomic/utility-first)、类型安全(Type Safe)、CSS in JS,它非常注重开发体验,让你快速且开心的开发界面。

Fower 是框架无关的,你可以在 React 、Vue 、React native 、小程序等任何 JavaScript 项目中使用。

项目背景

一年前,我所在的团队同时在开发 Web 、React native 、小程序项目。在这三类项目中,我们使用了各不相同的样式方案:

  • 在 Web 项目中,我们使用的是 Styed-component ;
  • 在 React native 项目中,我们使用 React native 自带的 StyleSheet.create
  • 在小程序项目中,我们使用 Taro 开发,样式方案是 Sass;

三种样式的方案写法各不相同,导致我们编写样式时特别痛苦:

  • 开发体验差,开发同样的界面,却要不同的写法,需要不断切换习惯和思维
  • 工具链太广太复杂,Styled-component 、Sass 、StyleSheet.create...
  • 开发效率低下,重复代码特别多
  • CSS 天生缺点多,可维护性差

后面,我发现了 Tailwindcss,一个 utility 优先(utility-first) 的 CSS 框架,在我的推动下,我们团队开始在 Web 项目中使用 Tailwindcss 。一段时间后,我们发现开发体验很不错,开发效率也很高,特别适合在我们这种需要高度定制界面的项目使用。可惜的是,Tailwindcss 无法直接在 React native 、小程序等非 Web 项目使用。

我们团队的成员都喜欢 Tailwindcss 这种样式写法。所以我创建了 Fower,希望能统一了所有项目的样式编写方式。

和 Tailwindcss 类似,我们也使用了 utility-first 的理念,但有 Fower 又有点不同,Fower 使用 Atomic style props 的方式编写样式,代码如下:

<div toCenterY p-10 w-260 rounded-10 shadow>
  <img circle-48 src="/img/jobs.jpg" />
  <div ml-10>
    <div textXL fontBold>Steve Jobs</div>
    <span gray800>Co-founder of Apple Inc.</span>
  </div>
</div>

核心理念

Fower 是 opinionated 的,我们基于以下理念创建了它:

  • utility-first,这种方式让我们更快速地编写样式,和其他 "utility-first" CSS 框架不同的是,Fower 使用 "Atomic style prop" 编写样式

  • Type safe,我们团队是 TypeScript 重度使用用户,Type safe 带来的智能提示,让我们几乎很少翻阅文档,并且在编写代码时不依赖任何编辑插件就有准确的自动补全

  • Framework-agnostic,这是我们创建 Fower 的最主要原因之一,Fower 可以让你用一致的写法在 React 、Vue 、React Native 编写样式

  • CSS in JS,我们讨厌在独立的 CSS 文件中编写 CSS,纯 CSS 有非常多缺点,如:无法访问 JS 变量;容易产生样式冲突;容易产生死代码... 我们喜欢使用 JS (CSS in JS) 编写样式,它更适合在组件化时代中使用。实际上,Fower 不仅仅是 CSS in JS,它也是 CSS in HTML 。

一些很酷的特性

Fower 有非常多的特性,如原子类、响应式、伪类、主题、设计系统、CSS in JS...,我觉这些是 Fower 的基础功能,并不是特色功能。

Fower 有几个我认为很酷的功能:

1. Layout Toolkit

如果要我在 Fower 中选一个最喜欢的特性,那毫无疑问是 Layout Toolkitd

Fower 提供了一个强大的基于 Flexdiv 的布局工具,通过调整布局的方向(Direction)和对齐(Alignment),可以实现大部分的布局,使布局工作更轻松。

相比传统的 flex 布局,Fower 的布局更加抽象精简,Fower 的布局抽象为 toCentertoCenterXtoCenterYtoLefttoToptoRighttoBottomtoBetweentoEvenlytoAround 十种原子对齐方式,使用时你可以忘记传统 flex 布局中的主轴( main axis )和交叉轴( cross axis )的概念,你只需要有方向感即可。

使用方式如下:

<div toCenter bgGray100 square-200>
  <div square-60 bgAmber400 rounded-8></div>
  <div square-80 bgBlue400 rounded-8></div>
</div>

更详细的使用方法请看文档: Layout Toolkitd

2. Predictable style

另外一个我个人很喜欢的特性的是 Predictable style 。在传统的 CSS 中,我认为样式是不可预测的。为什么这么说?这里举个例子。

我们有如下的 CSS:

.red {
  color: red;
}
.blue {
  color: blue;
}

有如下的的 html, css 类名分别为 "red blue" 和 "blue red":

<div>
  <span className="red blue">Fower</span>
  <span className="blue red">Fower</span>
</div>

你能确定文字的颜色吗?不好确定,如果我们不翻看上面的 CSS 代码,你无法直接判断文字的颜色,只能通过开发者工具调试得知。

在 Flower 中,你可以轻易判断下面文字的颜色:

<div>
  <span red400 blue400> text will be color blue400 </span>
  <span blue400 red400> text will be color red400 </span>
</div>

这有什么用呢?除了让我们更容易判断样式结果,我觉的最有用的是:当我们抽象出一个可复用的组件时,比如一个通用的 Button, 那调用方可以轻易的覆盖组件默认样式,比如这样类似的代码 <Button bgRed300></Button> 可以安全的设置背景色。

更详细的使用方法请看文档:Predictable style

3. 颜色助手

Fower 的另一个很酷的功能是颜色助手,您可以使用一些后缀来处理颜色。

使用 --D{0-100} 这样的后缀来加深一个颜色:

<div toEvenly toCenterY>
  <div red300>normal</div>
  <div red300--D40>darken</div>
  <div color="#fff--D40">darken</div>
  <div bgRed300 square-84></div>
  <div bgRed300--D40 square-84></div>
  <div border borderRed300 square-84></div>
  <div border borderRed300--D40 square-84></div>
</div>

使用 --L{0-100} 后缀来变浅一个颜色:

<div toEvenly>
  <div red500>normal</div>
  <div red500--T40>transparentize</div>
  <div color="#000--T40">transparentize</div>
  <div bgRed500 square-84></div>
  <div bgRed500--T40 square-84></div>
  <div border borderRed300 square-84></div>
  <div border borderRed300--T40 square-84></div>
</div>

使用 --T{0-100} 后缀来增加颜色的透明度:

<div toEvenly>
  <div red500>normal</div>
  <div red500--T40>transparentize</div>
  <div color="#000--T40">transparentize</div>
  <div bgRed500 square-84></div>
  <div bgRed500--T40 square-84></div>
  <div border borderRed300 square-84></div>
  <div border borderRed300--T40 square-84></div>
</div>

使用 --O{0-100} 后缀来增加颜色的不透明度:

<div toEvenly>
  <div color="rgba(0,0,0,0.4)">0.4</div>
  <div color="rgba(0,0,0,0.4)--O40">Opacify to 0.6</div>
  <div bg="rgba(0,0,0,0.4)" square-84></div>
  <div bg="rgba(0,0,0,0.4)--O40" square-84></div>
  <div border borderColor="rgba(0,0,0,0.4)" square-84></div>
  <div border borderColor="rgba(0,0,0,0.4)--O40" square-84></div>
</div>

更详细的使用方法请看文档:Color helper

4. 可组合的后缀

Fower 提供一些后缀来快速处理样式, 如: --hover, --focus, --sm, --dark, --T{amount}...

Flower 的另一个很酷的功能是可组合的后缀。 您可以组合一些后缀,并且顺序是任意的:

<div square-84 bgOrange300 bgOrange400--D10--hover--sm></div>

下面的代码和上面是等价的:

<div square-84 bgOrange300 bgOrange400--hover--sm--D10></div>

最后

如果你想了解更多关于 Fower 的信息,你可以访问项目网站和官方文档。

5. 怎么避免怯场,或者是说提高自己的沟通技巧

自己属于不熟或者人多就容易怯场,从小到大就属于游戏宅,内心世界很丰富,但是人多就容易大脑宕机,也是很容易脸红 平时业务需求沟通和迭代评审之类的场景也是

或者是大哥大姐们有什么读书分享会或者讲故事群或者活动拉拉小弟

7. 迫于对显示器不懂,看了会帖子瞎买了一款 4k 显示器,求指点

没啥需求,就是黑果用,不打游戏,平时剪剪视频。

刚刚入手了 https://item.jd.com/100017466386.html

懂得人说下这种便宜的有啥缺点?

显卡是 rx590

8. 请问这个直线的方程怎么求

如图所示,我有 n 个离散的点,一根直线从上方掉落,直到落到“最高”的两个点,(其实不一定是最高,就是这根直线无法再下落,重力势能最小了),然后根据这两个点求得直线方程。

想问下各位大帅逼 /大漂亮用什么算法,或者这个算法的关键词我自己搜索也行,十分感谢。

9. 异步中 await 和 then 的区别,哪个更好
await 虽然简洁。因为 await 需要等待返回才继续向下执行,如果是较耗时的操作就得等待。


方式一:
await u = login();
getUserInfo(u);
otherTask(); // 必须等待 login()返回。


方式二:
login().then((u) {
getUserInfo(u);
);
otherTask(); //可以并行

我觉得 then 更加符合逻辑。
11. 如何反广告拦截?

例如:www.bilibili.com

访问主站通过 GET www.bilibili.com 打开,

然后 bilibili 所有接口(这里注意,是所有的接口)通过 POST www.bilibili.com 在 body 通过{cmd: "XXX"}的形式加载,

这样是否可以达到屏蔽域名你也不能正常访问网站?

12. 有币圈大佬吗?想请教一下合约的问题.
这几天拿了点小钱做空 doge 玩玩,五倍杠杆做空,虽然小赚一点,但是发现做空赚了币,同时币价格也降低了,那么总体收益也没那么大.

假如我是做多,如果涨了,我赚了更多的币,币的价格也更高了,收益明显是远大于做空的.这样的话在相反的涨幅和跌幅时做空和做多的收益明显差距会很大,这是不是有点不合理?
13. Mac 邮件客户端 opt(s)?

RT. 试过了如下这些客户端:

  • 自带邮箱(没有快捷建立提醒 ❎)
  • Spark (国内无服务器 ❎)
  • Outlook 365 (臃肿至极 新版界面本地化不完善 ❎)
  • Edison Mail (本地化不完善 界面无感 ❎)
  • Airmail (本地化不完善 界面无感 ❎)
  • 网易邮箱大师 (非会员邮件列表有广告 ❎❎❎)
  • Foxmail (没有 Windows 端功能齐全,再养养看❎)
  • Canary mail (不支持腾讯邮箱 ❎)

目前个人在用:

  • Thunderbird (各项功能基本齐全,但是部分邮件的图片地址不支持 /无法加载✅)

以上均为个人看法,大家可以分享一下自己的方式 or 软件,👏🏻

14. 坐标合肥,五一准备和爱人出去游玩一圈,请给我的规划一些建议,顺便问一下有没有什么轨迹记录的软件,导航只能单次驾驶记录。
RT,五一准备和爱人出去游玩一圈,基本上是苏杭了,最后一站是去老家接娃再回出发城市。
买了旅游险,车是 SUV 油车,买了充气床,准备在车里睡,计划是临到目的地最近的服务区休息,比较方便,也相对安全。需要洗澡之类的可以途径县城之类的远离景区的地方开钟点房。睡车里不是预算问题,就是想单纯体验一次这种感觉。

充气床实测是可以放平的,也躺上去试了,图中只是示意。

请各位大佬指点迷津。

路线:
地图:

规划:

准备的物料:


充气床:

16. 为什么 dell 显示器涨价了

看中了 dell 2720qm 这款,准备给 mbp 使用。日常价格是 3999,这两天竟然涨价到 4199 了

京东自营官方旗舰店

然后通过比价软件看到去年双十一价格最低,卖 3499 。今年为什么显示器涨价了,还是说因为 618 而提前涨价,什么时候购买最合适呢

cO69Et.png

17. 有没有好吃的零食推荐?
下午和晚上经常会饿,有没有好吃最好还能填肚子的零食推荐啊?饼干、糕点、巧克力棒啥的都行
18. 想发明一种用声卡挖矿的币
发现编曲软件很吃 CPU,应该声卡算力不会太差,为什么一直没有用声卡挖矿的币?
19. 看到 MacBook 图纸被黑客泄露的消息,联想到今天官翻 MacBook 大降价…… 官翻 MBP13 8+512 2133MHz 6499 官翻 MBP16 32+1T 5600M 22519……
20. 下单了 Airtag

5juEg.png


以前总怕丢钥匙,现在就不会丢了。

21. 朋友遇到一个面试题,微信朋友圈怎么设计?
假设微信朋友圈的
读 QPS 100w
写 QPS 10w
每个用户最多 400 个朋友,
发朋友圈和刷朋友圈该怎么设计?
数据怎么存储?
求大佬解答。
22. 站在非大厂从业者的角度谈谈 裸辞跳槽 和 工作选择 的经历

今天又是周五,经历了两周面试 9 个公司总共拿到了 4 个 offer,最终准备入职 14.5k 的 offer 。我是一个本科毕业三年两个月经验的前端开发,站在一个普通的从业者而非动辄就是各种大厂的角度来总结下这次跳槽经验。

为什么要裸辞?

这次裸辞主要原因是想升职加薪顺带学习多一点技术经验,刚好最近两个月公司取消了很多福利加上每个月多了一个“奋斗日”,个人来说待遇相当于不增反减。裸辞的选择上,我个人观点是骑驴找马对上下家都挺不负责的,对上家是经常请假面试,当前的工作可能会耽误,对下家则是决定要你了你又不能尽快入职,最终都是对自己得不负责,所以我选择裸辞。这两周都是早上面试,因为凉快些,下午睡觉和看看电影,晚上就看看面试题。但是会比较懒散,建议最好工作摸鱼时间去学习。关于裸辞千人千面吧,裸辞一时爽,一直裸辞一直爽。

为什么选择这个 offer ?

我拿到的 4 个 offer 中,一个是朝九晚五的国企,给了 11k,不得不说抛开薪资来讲简直就是养老型公司,一整个大园区没有高楼大厦,上下班有班车接送,年底有几个月的奖金,但是目前三年经验来说我还是很忌讳这种公司的,有点像我上一家公司,技术过于保守,带来的结果常常是技术和薪酬卡死在这个水平,未来跳槽很难。

第二个 offer 是科大讯飞一个子公司的,给了 13k,面试三轮能看出来大家对我印象还是很不错的,这个不去的原因主要是 hr 过于傲慢,直接面试完没有问期望薪资,而是第二天打电话说我们综合申请到的薪资是 13k,交流中微微有点不太舒服,有种施舍感。而且在我表现出薪资没满足我期望的时候她说跳槽加薪 30%已经很高了,这生意谈不成还洗脑可太没意思了。这里入职也需要自带电脑,之前实习的时候就是带着电脑上下班,那感觉可不想再重温了。

第三个 offer 是一个派遣性质,去美的大楼上班,和第三方签订合同,公司给的倒是很高,由于我的犹豫,从 14.5k 加到 15k 到 16k,可能真的很缺人加上公司在广佛交界处,地处偏僻,去的人不多。这个直接 pass 。毕竟不想折腾。

第四个 offer 则是目前准备下周一入职的道一云公司,给的工资符合期望,公司氛围给我感觉很不错,面试交流也愉快,双方站在平等的角度去聊天,上下班时间也和现在差不多,福利也基本都有,办公地点是在一二楼,环境也挺喜欢,不用坐电梯真不错。

公司的选择

目前的公司按照类型大致可以分为四种:

一个是以腾讯阿里头条为代表的互联网大厂,基本是最推荐去的,无论是技术方面或者待遇方面都是绝对优势的,甚至他们的招聘上都不会写薪资范围。缺点是大部分业务多迭代快,加班会相对较多,总的来说你加班不亏,但是大厂很难进,要求很多,能进去的其实都是很优秀的那部分人,普通从业者如我的话想进去很难,有点幸存者偏差的意思,进去的人更乐于分享进去的经验,他们也有内推返佣制度,所以经常能看到动不动就是各种这类大厂面试的资讯。除了互联网的大厂,中大的会更适合我们,小公司又是做互联网的话真的就极不推荐了,很不稳定而且公司越小老板就倾向于关注每位员工的状态,想忙里偷闲就很难,毕竟要追求员工效益最大化。

一个是国企、央企、外资企业,这部分在福利和作息方面很舒适,基本养老型,拿到的一个 offer 上下班是朝八晚五,上下班有车接送,技术和薪资方面比不上大厂,但是!会拥有自己的生活,未来没改行的话应该会考虑找一个,享受下生活的乐趣。

一个是外包公司,这类型会给到比你当前水平高的薪资,外包就是面对需求方,本着顾客是上帝的理念,需求很多而且经常改需求就很常见了,技术栈方面用的比较杂,有可能每个项目都不一样,如果作为跳板或者刚毕业其实还是不错的。

最后是派驻性质的公司,通常是与第三方公司签订合同,第三方公司派到某个企业去上班。大部分企业需求量不稳定暂时要人或者不愿意养人或者只需要低水平技术人员就能完成的项目。这类型给的工资相对高,不过不推荐去,因为不稳定性和工作量大,一个项目完成可能就要被派遣到另一个地方工作,而且对派驻方来说自己人和外派的人,会倾向于压迫外派的人。要识别这类公司有一个特点就是喜欢在招聘软件上主动联系你,公司规模在招聘软件上写的很大,而且会一开始就问学历是否学信网可查。

跳槽的时机

大家都在说的金三银四,金九银十其实是有道理的,通常年后或者暑假后公司会进行业务扩展,或者因为年底和大热天招不到人而积压的招聘会在这时候爆发招聘热潮,这时候很适合找工作。

但是按照我的经验来说,一年中你都可以寻找跳槽机会,招聘淡季的招聘主要分为急招和为了未来项目到来而储备人才。急招的话紧急程度和技术要求回呈反比,越急对你的技术要求就越低。储备人才型招聘就不同了,因为不急所以需要慢慢选人,给的招聘时间很充裕,足够慢慢筛选了,他们要求技术的广度和深度,所以基础不扎实或者项目不多的同学很容易被 pass 。

面试的坑

如果薪资范围遇到写着 12k-18k,那么你别想太多,基本能给到的就是 12k 。尽量询问能否电话面试做一轮筛选,上门面试真的很辛苦,最难受是去面试了十分钟就发现不适合了,简直浪费生命。 下面关于公司的几个点是需要注意的,都能提前了解到,避免面试通过以后发现不想去。

  • 地理位置和交通,如果是地铁注意是否经过中转站和上下班高峰状况
  • 工作日作息时间和周末是否双休
  • 公司规模和成长到哪个阶段,这个会决定加班情况
  • 发薪日,大部分是 10 号,按照这个标准越早一般说明公司财务条件越好
  • 公司业务类型。自研>外包>外派
  • 技术栈是否和你或者你未来成长规划匹配

面试技巧

  • 询问期望薪资时候不要直接说,要给一些心理铺垫,尽量让他知道你为什么要这个价格,比如:“我上家是 10k,待了两年现在想跳出来,原来的老板说给我 30%涨幅让我留下,但是我想去往更大的平台学习和进步,所以这次我想拿 15k 。”
  • 遇到不会的能答一点就答一点,但是不要不懂装懂,技术面试很容易看的出来的。
  • 准备面试作品,最好是链接,实在不行就截图,如果是内部项目就给出不涉及敏感数据的截图,放在简历的最后的附属页。
  • 自己做一些项目用来充当门面,用上最新或者最热门的技术。我自己是用 node 写了一个摸鱼站:momoyu.cc 还有一个服务端渲染技术的个人博客:peal.cc ,可以增加印象分。
  • 面试问的问题都是大同小异的,如果静不下心刷题那就每次面试总结题目,这样每一次都可以进步了。
  • 面试中要冷静不能带有情绪,比如问上家离职原因要说客观原因如:我想寻求发展之类的,切勿吐槽上家公司。

上面就是自己的一些观点和经历,前端的个人角度,仅供参考~~