月度归档: 2020 年 3 月

  • 瘦死的骆驼比马大——Kindle Voyage 与 Kindle Paperwhite 4

    由于手上的Voyage电池不给力,遂买了一台Paperwhite4准备替用。以下是简单对比

    响应速度

    KPW4的响应速度比Voyage快,但搜索了一下发现这两个型号的CPU应该是一样的,都是Freescale i.MX 6SoloLite Cortex-A9。这或许和屏幕响应速度有关,他俩的系统版本页都是5.12.4,RAM也同样是512MB。

    屏幕

    屏幕是我想重点说的,Voyage的屏幕素质明显好于KPW4. 首先体现在对比度上,Voyage的黑色显示的更浓厚一些,而KPW4偏灰。其次是底色,KPW4的屏幕白底略偏黄一点。从阅读背光灯来说,Voyage比KPW4略亮——前者比后者多了一个阅读背景灯。
    以下是几张对照图
    kindle_voyage_vs_paperwhite_4.jpg
    kindle_voyage_vs_paperwhite_4-2.jpg
    kindle_voyage_vs_paperwhite_4-3.jpg

    续航

    电池容量看,Kindle Voyage:1320mAh;Kindle Paperwhite 4:1500mAh。使用中能略微感觉到KPW4续航比较持久,另外KPW4如果长久不用,系统似乎会进入深度睡眠,开启后提示等待几秒后才会进入主界面。这个和延长的续航或许也是分不开的。但是作为电子书来说,这两种型号的续航其实都挺够用的了。

    后记

    后来我才发现淘宝上有卖Voyage的替换电池,只需少许步骤就能把机子开瓢然后换掉电池,费用只要几十块钱。我越加后悔买KPW了。

  • 【5G已凉】 中国联通香港 Cuniq HK ONE 大灣區 大湾区 共享計劃 漫游评测

    ❌2021/05更新:由于官方已经推出5G合约计划,鄙人目前合约期内的现有套餐已经在5月初被取消5G权限,不论Android还是iOS都只能连上4G网络(尽管QCI还是挺高的,信号好的地方约140Mbps).经验教训就是,对方找你续约的给优惠的时候,务必三思🤡

    ⚠iPhone12用户提醒:截至20201117,由于联通香港并未提供IPCC文件更新,iPhone12系列亲测没有5G数据选项,无法在大陆地区连入5G网络。

    近日寻得正规渠道购入正规大湾区月费计划卡一张.
    GreatBayArea_Cuniq_Plan.JPG

    首先是选择的套餐,这次选择的是图片中间的5GB+6GB流量套餐,超过流量后仍有限速128kbps(非漫游为384kbps)的续命流量以至于不会完全断网。至于通话什么的本人是完全不在乎,目前是纯粹用来上网的。个人觉得相比Google Fi,他的优势有:

    • 资费便宜。与之对比的Fi 是$20 /mo + $10/GB for data,或者$70 /mo无限流量;
    • 接入归属地。由于是归属地接入的政策,所以Fi接入的IP地址是美国,而此卡接入是HK。遥远的地方自然附带延迟了;
    • 稳定性。由于是需要上台签合约的,所以个人觉得稳定性靠谱。Fi最近偶尔在群里有听到翻车的;

    开通激活体验

    此卡需要实名制并且签立合约,合约期为24个月。如果介意合约或是实名制的话,有一种稍贵的“月神卡”可以备选,不过性价比就稍差一些。即便身处内地,也是有办法完成任务的,无非是一些手续费罢了。鄙人收到卡后,卖方会通过网络发送合约的影印件,然后使用电子签名PDF回传文档。随后会有+852的电话过来再次核实个人资料,然后没多久就开卡了。激活并不需要到香港旅游一圈,体验很好。

    网速

    大陆漫游的是中国联通的网络。一般而言绝大多数网站是会有全球CDN的,与本地卡的网络延迟差别体验不大到。延迟最严重的是京东金融app,网页要几秒钟才能加载开。像是支付宝、微信之类的全然无问题。中国联通对于这类漫游卡的限速策略似乎很宽松,能够体验到与本地卡一样的网速(未经数据核实)。
    Cuniq_mainland_roaming_speedtest.jpg

    关于5G

    国内一般的4G套餐是能够使用5G网络的,默认限速300Mbps。但是很遗憾的是,至少今时(2020.4),这张Cuniq HK的卡是无法注册5G网络的,尚不知道未来会变成如何。

    2020.5: 香港联通目前准备开5G套餐了,作为试运行阶段,现有的4G套餐(大湾区之类)在内地部分地区(北京,广东)已有报告可以使用5G网络。题主目前还没试过,待更新测速结果~

    2020.6:杭州测试已经能连上5G网络,网速测试结果还是可以的

    cuniq_hk_5G.jpg

  • Python multiprocessing 并行化原则

    处理multiprocessing解决棘手的并行问题时,遵循以下策略:

    • 把工作拆分成独立单元;
    • 如果每项工作所花的时间是可变的,那就考虑随机化工作的序列;
    • 对工作队列进行排序,首先处理最慢的任务可能是一个最有用的策略(平均而言);
    • 对于细小琐碎的任务,考虑将他们合并分块(chunk),这样能有效减小fork/join通信开销;
    • 任务数量与物理CPU数量保持一致;

    部分摘自 <High Performance Python> (by Micha Gorelick, Ian Ozsvald)

  • Python Facade模式 门面模式

    门面模式(Facade Design Pattern, 一称外观模式)属于结构型设计模式。结构型设计模式描述如何将对象和类组合成更大的结构。除了门面模式外,还有适配器模式、桥接模式、装饰器模式,他们都属于结构型设计模式。
    W3sDesign_Facade_Design_Pattern_UML.jpg
    这个模式有3个主要部分:

    • 门面(Facade):将一组复杂倒置系统封装起来,从而为外部世界提供一个舒适的外观;
    • 子系统(Subsystem):一些不同的子系统(上图中的Class1, Class2, Class3…),这些子系统让整个系统混杂在一起,难以使用;
    • 客户端(Client):通过门面提供的简单易用的接口,与门面进行交互,而避免接触复杂的各种子系统.

    案例

    假设你要在家中举办一场婚礼,必须预订一家酒店,与餐饮人员交代菜品、与布置人员敲定场地布置细节^%&*……头大的方法是自己安排这一切,或者可以去找一个婚礼管家,让他/她为你安排这一切。

    class EventManager:
      def arrange(self):
        self.hotelier = Hotelier()
        self.hotelier.bookHotel()
    
        self.florist = Florist()
        self.florist.setFlowerRequirements()
    
        self.caterer = Caterer()
        self.caterer.SetCuisine()
    
        self.musician = Musician()
        self.musician.setMusicType()
    

    上述Hotelier(), Florist(), Caterer(), Misicial()就是各种复杂的子系统。然后,对于你自己来说,只要这样就能轻松搞定:

    class You:
      def askEventMeneger(self):
        em = EventManager()
        em.arrange()
    
    you = You()
    you.askEventManager()
    

    最少知识原则

    最少知识原则指导我们减少对象之间的交互,它意味着:

    • 在设计系统时,对于创建的每个对象,都应该考察与之交互的类的数量以及交互的方式;
    • 避免许多紧密耦合的类;
    • 如果对系统中的任何一部分进行修改都可能导致系统其他部分被无意改变,这意味着系统退化,应该坚决避免。

    参考文献

    《Python设计模式(第二版)》by Chetan Giridhar