华为P30 Pro & FreeBuds

近期跟老婆纷纷退果保平安,想来之前也是用了至少五年的苹果产品。目前的手机产品都换到华为了,笔记本么一台MacBook Air然后一个ThinkPadT470s再一个XPS13。

说起P30Pro,就想到了去年买了然后又卖掉的三棒Note9。华为的固件在耗电控制上确实有一手,而且对Google系列东西的支持度还不错,目前用下来感觉还行,一天下来电量比XS Max甚至XR都足。之前的Note9差不多是比7Plus差不多的级别。但是不足也是有的,首先是大果粒P排屏幕,手边还有个Galaxy S10e,能很明显看出细腻度不一样。但是如果稍微拿远一点,这个屏幕也就还可以了。第二是系统更新的太不勤快了,不知道是不是受最近贸易战影响,还是华为固有属性。第三,也是我感觉最烂的,就是这个音响。目测是单声道,而且这个手机的听筒在放视频的时候功率是跟不上的,所以打算外放听音乐的——放弃吧,这个被果系手机摔了一万条街。对了,关于50x混合变焦,真的是很难在日常用到的功能。投奔安卓党的另外个重要原因,就是越墙APP终于不用换区换id下载了,方便无数倍。

今天新到黑色FreeBuds一个,试用了一下,果然是高峰AirPods. 连接速度不错,但是工业设计水平有待提高。AirPods的电池盒估计是有磁吸之类的原理的,耳机塞入电池盒的时候非常顺滑,相比之下华为的耳机插入就毫无顺滑感,有待提高。话说AirPods在安卓机子上用用也还行,如果不是有特殊执念的就不用另外买了,况且现在电池盒都支持无线充电了,数据线匹配便不是问题。

Retrospect

明日离职,总结下前两年的工作。

从自己/别人的项目里学习到的教训:

  1. 项目一定要先明确之后再开工,避免因为沟通不畅导致的返工;
  2. 测试一定要完备,尽可能多想测试例;
  3. 未提及的需求,特别是会改变behavior的,在得到确认之前务必不能改动;
  4. 不要以为改动微小就不去测试,被忽略的东西可能导致严重后果;

在以后的工作中需要作出的改进:

  • 更准确的估计工期;
  • 注重细节;
  • 在现有项目上修改时,注意组件间的相互配合关系;
  • 增加与上层的沟通;

iPhone XS / XR 进入DFU模式

不同的教程居然不一样,下面的方法亲测可用:

注意: 步骤2-4应该快速连续执行。

步骤1:使用Lightning转USB电缆将iPhone连接到Mac(或安装了iTunes的PC)。

步骤2: 按下并释放音量调高按键。

步骤3: 按下并释放音量调低按键。

步骤4: 按住侧面按键并在设备重新启动时继续按住。

步骤5:即使出现Apple标志后,继续按住侧面按键

步骤6:看到“连接到iTunes”标志和对话框后,释放“侧面”按键。

步骤7:启动iTunes,您将看到一条消息,以确认您在恢复模式下连接的iOS设备。然后,您将获得更新或恢复iPhone软件的选项。

新西兰在线电子签攻略(夫妻)

计划跟亲老婆元旦期间去新西兰旅游,用完10天婚嫁刚好凑足俩礼拜。找了半天发现新西兰是个不错的目的地,于是乎开始申请签证。这次签证申请过程非常顺利,周日提交,礼拜五就出了电子签,五年多次。

对我贡献最大的一篇文章应该是这个《2018新西兰家庭电子签证手把手攻略(更新付款失败、催签)

材料准备

首先,需要有VISA、MasterCard或者银联卡用于付费。

我们俩准备的材料有:

  • 有效期6个月以上的签证扫描件,非空白页都扫
    • 给出签证的有效期与你俩签证的有效期有关系,所以最好签证有效期在5年及以上
  • 用于签证的近照(标准请参考此页面
    • 支付宝有小程序提供近照,不过要仔细挑选,并且有些还有收费的。另外就是AppStore搜证件照也能出来好些App
    • 注意严格参考标准,不要瞎JB 修图
  • 户口本,非空白页都扫描
  • 财力证明
    • 我提供了我的六个月工资流水,直接银行自助机上打的,只滤出了存款
    • 妹子提供了存款证明
  • 机票
    • 提供了往返机票的PDF文档(恰好找到了价格合适的)
    • 暂时没有购买机票的小伙伴其实可以直接打携程客服或者找网上客服,他们一般能够帮忙Email一份英文机票预订单。按照我之前签英国、申根的经历,这东西能用。
  • 结婚证扫描件
  • 公司的准假信(在职证明)
    • 携程搜一下新西兰签证,页面拉到中间部位有提示你要准备什么材料,那边有模板可以直接下载的。编辑好后找HR吧,我们只提供了文的。
  • 新西兰移民局要求提供的附加表INZ1224以及INZ1027.因为懒所以这两个表我直接无纸化填了
    • INZ1027填写个人信息。网上很多PDF编辑软件(搜pdf online editor)
    • INZ1224要夫妻两人签名。AppStore上有Adobe Fill&Sign,凑合用用反正不要钱,电子签名和手写签名是具有同等法律效力的

附注:可能白本签证需要提供更详细一些的材料。如果你的签证本上发达国家的签稍微有一点的话,我看提供以上这些就足够了。

填写表格、上传文档

去新西兰政府官网:https://www.immigration.govt.nz/audiences/chinese/visiting/visitor-visa

点击Immigration Online,然后会引导你进入一个ReadMe的登陆页面。首次使用注册即可。

注册完毕后,根据《
2018新西兰家庭电子签证手把手攻略(更新付款失败、催签)》的步骤填写申请表即可,写的相当详细了,我这里就不废话的。

关于英文翻译件的问题,我这边只在工资流水每个月的收入部分高亮并且备注了Salaries,其余文档我只给了扫描件,并没有进行翻译。

有个在线免费处理PDF的利器:https://smallpdf.com/

等待

耐心等待。成功提交后你的Profile状态是”Submitted”.网上教程有说他们会给你发一个什么提交确认邮件,其实这个要看他们心情,我在收到签证之前从未收到他们的提交确认邮件。这个Status并不会发生什么奇怪的变化。

出签的时候你会收到一封邮件,来自[email protected]的,就告诉你签证的结果,有个Word文档的附件。此时也可以登陆申请的网站,点Visitor Visa那个链接,新页面底部会有个PDF文档,那就是签证了。

不得不说这个电子签很随意,字面上只有我一个人的护照号码…

Arduino as Socks5 Proxy Server

Still WIP because the buffer manipulation is so f**king problematic.

Hardware: Arduino Uno + W5100 Ethernet Module

Tested working through curl.

 

记两次面试

第一次是一家香港公司,跟现在公司的领域很相近。笔试是3个小时的,不过里面题目难度中性,都是改编题,印象中其中一题是霍夫曼编码之类的有点好玩。反正一个半小时做完了。

后来电话面试就坑B了,一接电话是浓厚的印度英语!结果就是对方的每一个问题我都要跟他确认一下,两边都不爽。电话面试持续了45分钟左右,上来先问项目经历,然后主要问C++11特性: move, forward, 智能指针,还问了些模板什么的。另外在扯CPU的cache warm。这个电面妥妥的跪了,一方面C++11的某些细节我没有掌握,但我觉得最大的问题就是语言不通,这个怪我听力不好,但是咖喱味的英语真乃从未有过的体验,下次不敢了。

======

第二次突然一猎头在领英上找到我说有杭州的机会,那就试试。结果是X方量化。

之前一次听同事说X方面试难,如何如何厉害,也想见识一下。这里客观陈述一下

  1. 在线笔试。题目是牛客网的通题,都是套路题,最后两道编程对于不常刷题的人来说时间有一点赶,不过难度就是LeetCode Easy的难度;
  2. 面试第一轮。问各种C++的问题,但是基本是STL容器内部运作的机制,并且当我讲到C++11特性的时候(比如move)对方并没有细问,故猜测該公司用C++11的地方可能略有局限。随后一道公司自己出的算法题,考数据结构设计的。在面试官给出某种场景的前提下,我给出了个性能更好的解决方案,不过面试官也换了场景让我的方案往他预想的地方靠,最终终于实现了一统~面试官对时间复杂度的计算有要求。
  3. 面试第二轮。也是各种C++问题开场,难度一般。遂给了一道算法题,当时懵了竟然想到用动态规划,但是后来经提示有O(N)方法于是用了贪心法,然后面试官又小改了一下测试我是不是真的理解了。另外就是讲到C++模板还有我的项目经历,我提到之前使用过CRTP做东西,于是让我写了下CRTP长什么样。
  4. 面试第三轮。一个中年大叔,一进门就接了一分钟电话,然后让我做自我介绍。当时心想肯定是个领导于是开始忽悠简历,然后做了个滑动窗口最大值的原题就结束了。
  5. 面试第四轮。后来了解到是CTO,反正被带去吃了个午饭瞎聊然后说问个小问题。蓄水池抽样,不过可惜我当时拉肚子加上对概率不敏感,瞎凑对了抽样概率但是一直卡壳没法证明它是对的,估计让大佬失望了哈哈。
  6. 然后是HR面,不细说了。

最终结局是Offer隔了两天收到了,但是我与猎头都不是很满意。个人觉得面试上没有安排系统设计的问题可能是对方的一个疏忽点,也可能觉得我就是个junior而已怕把我伤了,其实可以试探一下的。

目前的教训是面试之前不能乱吃东西,第三轮到第四轮的时候肠胃就开始闹腾。第二就是还是要熟悉一下基本的概率套路,自己在这方面是弱点。第三就是下次面试之前要打听一下薪资待遇,这次还特地周末看了看书,现在想想瞎紧张个啥….

面向对象软件设计的S.O.L.I.D原则

具体示例请看原文:S.O.L.I.D: The First 5 Principles of Object Oriented Design

S.O.L.I.D 代表着:
S – Single-responsiblity principle 单一责任原则

一个类应有且仅有一个理由去变更,即一个类只应用于一个工作。

O – Open-closed principle 开闭原则

对象或实体只应该开放扩展,而不该开放修改。

我的理解是应该避免越俎代庖的事情发生,不应该在调用某类实体的地方去关心某个对象该方法的具体实现。例如有两个Shape类的继承类Circle及Square,在对各自计算面积的时候,具体计算面积的方法不是调用者需要关心的,否则每增加一种继承类都要去修改调用方法。

L – Liskov substitution principle 李斯柯夫替代原则

令q(x)是关于类型T的对象x的可证明属性。那么对于T的子类型S的对象y,q(y)也应该是可证明的。

这个是官话,简单来说就是每个子类都应该可替代他们的父类,所谓“子承父业”。

I – Interface segregation principle 接口分离原则

永远不应该强迫用户实现它不使用的接口,或不应该强迫用户依赖于他们不使用的方法。
比如不应该让一个二维平面的类去实现一个计算体积的方法。

D – Dependency Inversion Principle 依赖倒置原则

实体必须依赖于抽象,而不是具象。高级别的模块不能依赖于低级别模块,而是需要依赖于某种抽象。

比如一个Gateway类需要通过某种网络IO接收数据,它应该依赖于一种IO接口的抽象而不是具体的某种IO(比如UDP IO),否则当你想换一种IO做同样的事情时你就会很头疼。