【转载】不要在你的代码里出现User

[[杂谈]] 【转载】不要在你的代码里出现User Never use the word “User” in your code You’re six months into a project when you realize a tiny, simple assumption you made at the start was completely wrong. And now you need to fix the problem while keeping the existing system running—with far more effort than it would’ve taken if you’d just gotten it right in the first place. Today I’d like to tell you about one common mistake, a single word that will cause you endless trouble. I am speaking, of course, about “users”. ...

【转载】不要自称为程序员

[[杂谈]] 【转载】不要自称为程序员 每年都有无数年轻程序员,加入软件行业。 他们在学校里学过编程,但是对这个行业的现实一无所知。 Patrick McKenzie 是美国一家小软件公司的老板,他写了一篇长文,介绍这个行业的一些实际情况。我看了以后很感慨,有些地方很受启发。我选择了一部分,翻译如下。 一、90%的编程工作来自内部软件 计算机专业的学生,可能有一种印象,觉得大部分程序员,都在编写公开出售的软件或者通用软件。 这种看法是不对的。大部分程序员,实际上编写的是不公开的企业内部软件,比如追踪费用的软件、优化装运成本的软件、帮助记账的软件、设计新部件的软件、计算保单价格的软件、识别恶意订单的软件等等。各种各样的商业公司,开发内部软件,解决它们自己的问题。市场上对程序员的大部分需求来源于此,只有极少数程序员直接编写面向外部顾客的软件。 内部软件的开发,通常非常乏味,令人厌倦。因为它们的技术复杂性低、技术决策非常保守、预算很少、缺乏长远考虑。但是,世界上大部分编程工作都是这种。 二、别人雇你的目的,是让你创造利润,不是让你编程 商业公司最关心的(或者说唯一在乎的)事情,就是增加收入、降低成本。因此,它们实际上需要的不是程序员,而是能够帮助它们增加收入、降低成本的人。 开发优美的软件,解决技术难题,编写没有 bug 的代码,这些都不是商业公司的目的。它们雇佣你,是为了让你帮它们完成某个可以增加收入、降低成本的项目,而不是为了让你追求个人的软件成就。 你对于公司的唯一价值,就在于能多大程度上为它们增加收入、降低成本。 三、不要自称为程序员 很多公司的经理不懂计算机,在他们心目中,程序员就是一群高成本的劳动力,只会在一台复杂的机器上干一些难懂的事情。 如果你自称为"程序员",当公司需要压缩成本的时候,某些经理首先就会想到解雇你,因为你的工资高。有一家公司叫 Salesforce,口号是"没有软件",意思就是如果经理们购买了他们的服务,就不再需要别的软件管理销售业务了,也就是说,不再需要自己雇佣程序员了。 正确的做法是,你应该把自己描述成与增加收入、降低成本有关系的人,比如"xx产品的开发者"或"改进者"。有一个 Google Adsense 程序员的自我介绍,是这样写的:“Google 公司97%的收入,与我的代码有关。” 四、不要限定自己 年轻学生经常会问,应该选择哪种语言或平台?Java 是不是比 .NET 容易找工作? 过分强调某一种语言或平台,都是不必要的。如果你把自己限定为 Java 程序员或 .NET 程序员,你就已经输了,因为首先你不应该自称为程序员(理由见上一点),其次这种限定使得你自动被排除在世界上大多数编程工作之外。 现实生活中,学会一种新语言,只需要几个星期,然后再过半年到一年,你就会变成老手。那时,根本没人在乎你以前用什么语言。 天才程序员是很少的,可是需要天才程序员的工作机会却很多很多,大多数场合都是需求远远大于供给。这意味着,即使你不是天才程序员,只要你是一个优秀工程师,那些招聘公司也会立刻录用你,因为它们知道招聘到天才程序员的机会微乎其微。(重复一遍,所谓"优秀工程师",就是你的履历上有一连串增加收入、降低成本的记录。) 某些公司的人事部门,会根据某个关键词(比如 Java 或 .NET)过滤简历。虽然这样的公司根本不值得去,但是如果你真的想过这一关,也很容易:投入几个晚上和周末,在你当前的项目中设法用到这个关键词,然后再把它写进简历就行了。 五、如何提高求职时的谈判能力? 记住你不是在求职,不是在展示编程技巧,而是在推销某种商业问题(增加收入或降低成本)的解决方案。 面试时,要有自信,要平等的对话。你要的是一个互利的录用合同,不要每次对方提出要求,你都说Yes。 雇主可能会问"你的上一份工资是多少",他们其实在说"给我一个理由,压低你的报酬"。你要想好如何适当地回答这个问题。 要还价。这里不仅仅指钱,还指其它你关心的方面。如果你无法要求更高的薪水,那就试着要求更多的假期。 在对方决定录用你以后,才开始讨论薪水。因为那时,他们已经在你身上,投入了大量的时间和金钱,产生了一定的成本,此时他们可能觉得一些小问题已经不值得再纠缠了,比如每年的工资增加几千元。 六、创业公司是否适合应届毕业生? 如果你一毕业就加入创业公司,最可能的结果是,接下来几年你都工作得非常辛苦,然后公司悲惨地失败了,你失业了,不得不又去另一家创业公司工作。 如果你真的想去创业公司,应该首先找一家大公司干上两年,攒一点钱,积累一些经验,然后精心挑选一家创业公司,再去实现自己的梦想。 在创业公司工作,一般情况下,你遇到的都是创业者。他们大多数人没有能力在两年后雇佣你;而在大公司工作,你遇到的都是其他大公司的人,他们中很多人将来有能力雇用你或者帮你介绍工作。 七、沟通技能是最重要的职业技能 前面说过,工程师被雇佣,不是因为会编程,而是因为能够创造商业价值。所以,你得让人们相信你能创造价值,这是帮助你找到工作的最重要的能力。这种能力与你真的能创造多少价值,实际上联系不是很紧密。 我认识的一些最优秀的程序员,往往拙于表达。因此,别人不是不想与他们一起工作,就是低估了他们的价值。相反地,如果你看上去很会编程,并且很善于表达,别人就会真的这样看待你。 (完) 转载链接:不要自称为程序员

m.2 接口 SSD

Hardware m.2 接口 SSD M.2接口(原NGFF,Next Generation Form Factor)是Intel主推的一种替代mSATA的新接口规范。最初,Intel主要是为了超极本的存储需求才急切推出这种新的接口标准。 m.2 SSD 的规格 与 mSATA SSD 类似,M.2 SSD 也不带金属外壳。主要有 2242、2260、2280 三种规格,为了划分不同长度的产品而定的。长度不同,意味着容量就不同。因为长度越长,可布置的闪存颗粒就越多,容量也就越大。以 M.2 2242 为例,22 是宽度 22mm,42 是长度 42mm,2260 与 2280 同为此理。至于M.2 SSD的厚度,单面布置芯片厚度2.75mm,双面厚度3.85mm,比mSATA还要薄。 m.2 SSD 接口的分类 总体可以分为 M key 和 B key,以及混合的 B & M key。 下表是按照 SSD 上的接口进行区分。主板上只有 B key 和 M key 两种,B & M key SSD 插在主板的 M key 上。 类别 别名 分辨 协议 速率 M key m.2 socket3 SSD 上有一个缺口,且缺口右侧为 6 pin PCI-E 3.0 * 4 2300 MB/s B key m.2 socket2 SSD 上有一个缺口,且缺口左侧为 5 pin SATA 3.0 500 MB/s B & M key - SSD 上有两个缺口,第一个缺口左侧为 5 pin,第二个缺口右侧为 6 pin SATA 3.0/PCI-E 3.0 * 2 700 MB/s m.2 SSD 的兼容问题 有的主板仅支持 PCI-E 通道,不支持 SATA 通道,像华硕 Z97-A 主板。如果将走 SATA 通道的 M.2 SSD 接在华硕 Z97-A 上将无法被识别。有的则兼容 SATA 与 PCI-E 通道,如技嘉的 Z97X-UD3H。 ...

一次黑苹果的安装

MacOS 一次黑苹果的安装 前提 大概四年前,在神船笔记本上安装过一次黑苹果,后来购入了 mac bookPro 2015 款,不得不说,两者的体验式天差地别。当时的黑苹果的安装是异常困难,当时用的还是 10.12,如今已经出到 10.15 了,但根据升级到 10.15 的用户体验来说,bug 挺多的,影响开发效率(显著的就是卡)。与此同时,想装个高性能的黑苹果的想法就一直在我心里盘旋。 七月份,看到了 黑果小兵的部落阁,尝试搞了个镜像,烧录,在公司的台式机安装,成了,除了核显驱动有问题(7M),可以直接用了。完全没想到如今安装黑苹果那么方便了。 配置 时间来到十月份,双十一也快到了,该买买零件了,根据经验,一套优秀的硬件可以大幅度的减少安装黑苹果的折腾时间。最后根据各方配置单,决定使用一下配置: 主板:华硕 B360M-Plus Gaming S cpu:intel i5-9400f 显卡:讯景rx580 2304sp 4G 内存:十铨火神 3000 MHz 8G * 2 pcie无线网卡:BCM94360CS2 + 外置天线 存储:主海康威视c200pro 512G + 辅intel sata ssd 120G 电源:海盗船rm550x 散热:九州风神大霜塔 机箱:先马平头哥m7 关于上面的配置,有几个点说道说道。 主板的选择是因为做工还行,有一个 PCIe 网卡槽位;cpu没什么说的,不用核显真香;显卡如果要rx580必须用 2304sp 的,现在市面上基本都是 2048sp,我是二手 500 买的,店保一年;内存其实到 2400 或者 2666 就行,这个内存 3000 的就比 2666 贵个十块钱;这个网卡真的免驱;存储推荐还是在 sata ssd 上装吧(笨,只装 nvme ssd的话都进不去安装页面);电源、散热、机箱都无所谓了,喜欢什么用什么。 安装 下载小兵的镜像 根据 macOS安装教程兼小米Pro安装过程记录 往下走,先将安装镜像拷贝好 修改 Bios 设定 advanced—Onboard Devices Configuration-Serial Port Configuration Serial Port (Off) advanced—USB Configuration-XHCI Hand-off-Enabled Secure Boot-OS Type,改成Other OS advanced—PCH configuration-IOAPIC 24-119 Entries-disabled CFG-LOCK-disabled 由于 Bios 更新,此时直接安装,会出现 apfs_module 相关的问题,通过 关于卡卡apfs_module_start及其相关问题讨论及解决办法。解决 如果以上步骤无误的话,可以进入到安装页面了,按照小兵的步骤继续走下去,分好盘 可能出现 这个"安装macOS Mojave"应用程序副本已损坏, 不能用于安装macOS. 问题,通过安装Mac OS X,提示:应用程序副本不能验证 它在下载过程中可能已遭破坏或篡改解决,拔网线,改时间 后面就没什么坑了,安装完把 u盘 的 uefi 文件夹拷贝到硬盘上就好了 结果就是,显卡免驱,网卡免驱,声卡没测试,直接通过 HDMI 连接显示器,显示器连接小音响实现发声 总结 这次大概花了三个小时就完事,比以前简单多了,主要是硬件选的好,以此文做记录。 ...

硬盘接口-规范协议-传输总线

Hardware 硬盘接口 - 规范协议 - 传输总线 硬盘接口说明 硬盘对计算机总的来说,算是“外设”,具备容易扩展的特性,也拥有多种不同的接口。 IDE 接口 IDE 的英文全称为 “Integrated Drive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强。 不过 IDE 不仅指接口形式,主要还指硬盘的形式,即 IDE 硬盘,但人们习惯用 IDE 来统称 PATA 接口类的硬盘。 而 PATA 接口单纯指硬盘的接口形式,即“并行接口”。与之对应的是 SATA,即“串行接口”。其实 PATA 接口(并行接口)与 SATA(串行接口)的硬盘的严格上说都是IDE硬盘。如果说“PATA 接口的 IDE 硬盘"(简称 IDE 硬盘)和“SATA 接口的 IDE 硬盘”(简称 SATA 硬盘)会更准确点。 SATA 接口 使用 SATA(Serial ATA)口的硬盘又叫串口硬盘。Serial ATA 采用串行连接方式,串行 ATA 总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。串口硬盘是一种完全不同于 PATA 的新型硬盘接口类型,由于采用串行方式传输数据而知名。相对于 PATA 来说,就具有非常多的优势。首先,Serial ATA 以连续串行的方式传送数据,一次只会传送 1 位数据。这样能减少 SATA 接口的针脚数目,使连接电缆数目变少,效率也会更高。(但 SATA 本质上是 SATA 接口的 IDE 硬盘。) SATA 3.0 能达到带宽 6Gb/s,速度 600MB/s。 ...