• 2019-04-03

    苹果 MacBook Pro 屏幕缺陷导致蓝色显示异常条纹

    Views: 3958 | 3 Comments

    最近我的 MacBook Pro 因为屏幕涂层脱落, 让苹果 Genius Bar 免费更新之后, 我发现更换后的屏幕显示效果很差, 像素颗粒非常明显, 没有苹果引以为傲的 Retina 屏幕的那种细腻效果. 我甚至一度怀疑给我更换的是一个 10 年前技术的 PC 显像管显示器. 这个问题还好, 只要不抠像素, 眼睛离屏幕稍微远一点, 就察觉不到像素了.

    前几天, 在做 Keynote 和表格的时候, 我突然发现 MacBook Pro 的显示器竟然在显示蓝色的时候出现细微的灰色条纹. 这个问题是怎么发现的呢?

    在 Keynote 里添加一个默认颜色(蓝色)的方框, 然后靠近仔细观察, 你就会发现蓝色的纯色在一条一条的灰色条纹, 像是像素之间的间隙透光. 这个蓝色不是纯蓝(#0000ff), 而是带有绿色和黄色的蓝色(大概是 #3388ff).

    blue

    之后, 对比了多台同型号同年份且没有更新过涂层脱落屏幕的 MacBook Pro, 最终确认新的苹果给换的屏幕确实不够细腻, 可以认定是低品质的.

    特别是在看 Firefox 浏览器的 LOGO 图标时, 你会发现火狐抱着的中间那个蓝色的地球, 条纹最明显!

    firefox

    我外行地分析了一下, 苹果屏幕用的 LED 屏, 每个像素由三个分别是红(R)绿(G)蓝(B)颜色的灯管组成, 通过三个颜色的灯管的不同亮度叠加, 产生不同的颜色. 如果三个灯管全部最亮, 就是白色了. 这个原理就是 Additive Color .

    RGB_illumination

    可能的原因

    有了上面的基本原理之后, MacBook Pro 低档屏幕显示蓝色出现白色条纹的原因就可以分析出来了.

    1. 生产工艺太差, LED 灯管排列间距太大.

    这个原因是很有可能. 苹果用的屏幕的品牌和型号等, 不像 PC 那么透明, 无法直观的对比不同型号的品质差异. 如果真是这个原因, 那么便是生产工艺缺陷, 导致两行像素之间的间隔太大.

    不过, 为什么蓝色(#3388ff)那么明显的. 应该涉及到单个像素的 RGB 三个灯管的排列方式.

    2. RGB 分组排列导致 R 和 G 出现在同一行

    我觉得屏幕生产厂商不太可能这么蠢, 除非有特殊考虑. 如果真的出现这种状况, 不同组的红灯和绿灯刚好组成了一条黄线, 那么出问题的蓝色(#3388ff)中的 R(33) G(88) 组成一条绿线, 同时受蓝色灯管影响, 就会变成浅白色的条纹了.

    外行分析, 如果有专业人数, 欢迎提供信息.

    Posted by ideawu at 2019-04-03 20:54:58
  • 2018-06-13

    炮打TCP – 关于一而再再而三的粘包拆包问题的大字报

    Views: 23027 | 21 Comments

    TCP 所谓的粘包和拆包问题,是技术圈里最奇葩的问题之一!

    一而再,再而三,就跟傻逼的中国球迷支持中国足球队一样,前赴后继。有时候同一个人多次在犯同一个错误,有时候是前脚一个犯错了后脚又来一个还犯同样的错。即使是最优秀的程序员,也会在这个问题上面栽跟头,思维甚至很难转过弯,很久才能意识到自己的错误。而低水平的程序员就更不用说了,很多人到死都没有理解这个错误并解决掉,只是逃掉了而已。

    我们固然可以认为原因是某些人学艺不精,但那么多的人,其中包括无数的优秀程序员在 TCP 粘包和拆包问题在犯错误,难道我们不能说,这其实是 TCP 自身的原因吗?

    在我看来,这个问题的出现,原因就在于 TCP 协议是有原罪的 -- 也就是 TCP 协议所谓的“流式”协议。所以,我要炮轰 TCP!

    Continue reading »

    Posted by ideawu at 2018-06-13 15:05:11
  • 2018-05-10

    快速排序算法(QuickSort)的代码实现

    Views: 18542 | No Comments

    快速排序算法,也即快排,是递归和分而治之这两种计算机基本思想的应用,再加上其实现逻辑复杂度较好,性能较快,所以快速排序算法非常经典。

    快速排序算法经常作为面试算法题。快速排序算法本身并不复杂,其本身的逻辑非常简单,要掌握其思想不是难事,甚至基于其实现代码的形而上学的表面形状背下来也很轻松。但是,如果仅掌握了快速排序的思想以及代码表面形状,就认为自己懂了快速排序,就是没有真正地理解。

    快速排序算法作为面试题,一是考查理论结合实践的能力,要求面试者除了知道快速排序算法的实现逻辑和代码形状,还要知道快速排序为什么快,怎么快。二是考查编码细节的能力,考虑的是人经验之外的智商和思维水平。

    Continue reading »

    Posted by ideawu at 2018-05-10 19:46:06
  • 2017-06-15

    音频编码的一些笔记

    Views: 23014 | No Comments

    名词解释

    采样率/Sampling Rate/Sampling Frequency: 表示原始音频,每秒需要多少个值来表示(1秒时间内采样多少次)。
    采样位数/Sampling Bit Depth/bits per sample(bps): 用多少比特来存储一个采样值。
    采样比特率/Sampling Bit Rate: 指原始音频每秒需要多少比特来表示,显然等于 Rate x Bits。
    帧长/Frame Duration/Frame Lenght: 表示每帧(数据块)所表示原始音频播放需要的时长。
    帧大小/Frame Size: 表示每帧(数据块)所表示原始音频播放需要的存储空间。
    比特率/Bit Rate: 对于固定长度编码,表示编码后,每秒需要多少个比特来表示。

    bits per sample 和 bits per second 的缩写是相同的容易混淆。

    G.711 Codec

    G711A - G.711 a-law, alaw, 世界用。
    G711U - G.711 μ-law, ulaw, 北美用。

    Sampling Rate: 8KHz
    Sampling Bits: 8 bit

    Bit Rate: 64 kbit/s
    FrameDuration: 10 ms
    Frame Size: 640 bit, 80 Bytes
    RTP FrameDuration: 20 ms
    每 RTP 报文含 2 个 G.711 帧。

    iLBC - internet Low Bitrate Codec

    Sampling Rate: 8KHz
    Sampling Bits: 16 bit

    Bit Rate: 13.33 kbit/s
    Frame Duration: 30 ms
    Frame Size: 400 bit, 50 Bytes

    Bit Rate: 15.20 kbit/s
    FrameDuration: 20 ms
    Frame Size: 304 bit, 38 Bytes

    参考:CISCO - Voice Over IP - Per Call Bandwidth Consumption http://www.cisco.com/c/en/us/support/docs/voice/voice-quality/7934-bwidth-consume.html

    Posted by ideawu at 2017-06-15 14:59:43 Tags: , ,
  • 2017-06-02

    关于TCP粘包和拆包的终极解答

    Views: 26693 | 1 Comment

    程序员行业有一些奇怪的错误的观点(误解),这些误解非常之流行,而且持有这些错误观点的人经常言之凿凿,打死也不相信自己有错,实在让人啼笑皆非。究其原因,还是因为这些错误观点所对应的正确观点不符合人的正常思维习惯,是扭曲人的直观感受的。

    有两个错误观点非常之经典,一而再,再而三的出现,就跟韭菜一样,割不完,还越长越多。一是经典的"服务器最多65536个连接"误解,打开链接看介绍。另一个就是这里要讲的TCP"粘包"和"拆包"问题。

    基于前面的思路,我们先介绍人的正常思维习惯,然后再介绍扭曲的正确观点,这样你就会印象深刻了。

    Continue reading »

    Posted by ideawu at 2017-06-02 15:02:56
  • 2016-05-10

    一个 GUI 系统的组成部分

    Views: 18185 | No Comments

    在做 iOS 上的 XML+CSS UI 布局框架 CocoaUI 的过程中, 我体会到了 Apple 技术的强大之处, Apple 的底层框架和库提供了强大的功能和友好的 API, 我在开发 GUI 框架(上层 UI 框架)时用到的许多技术功能点都是信手拈来.

    现在总结, 有不少想法, 记下来分享一下.

    首先, iOS 系统为什么那么"好"? 不仅开发者觉得好, 最终用户用起来也觉得棒! 对比看 Android 的软件界面, 毛毛糙糙, 生硬, 总是缺了很多神韵. 这当然有屏幕硬件的功能, 但软件技术的作用更多, 因为从公开的资料上看, 不少 Android 厂商使用了和苹果同类的硬件.

    Continue reading »

    Posted by ideawu at 2016-05-10 16:31:03
|<<<123456789>>>| 1/11 Pages, 62 Results.