• C++ 入门书籍推荐 at June 06, 2016

    C++ 坑比较多,要想短期上手写代码不是不可以,但用在工程里很可能写出不少坑自己又坑伙伴的代码。 Essential C++ 是我唯一知道靠谱又篇幅比较短的入门书了。 但这还不够,如果急于求成的话,至少还应该通读一遍《C++ 编程规范》,如果能完全掌握,应该能回避工程中会遇到的坑了。 但这本书都是浓缩的精华,解释不够详尽,我不太确定 C++ 初学者对它的接受度。

    另外这两本书都没有涵盖 C++ 1x 标准的内容。新标准中引入了不少好用的特性,条件允许的话还是应该尽量采用。

    由于 C++ Primer 第五版更新到了 C++ 11 标准,我还是建议通过这本书入门,虽然中文版也超过了 800 页,但没有哪个项目会用到全部 C++ 特性,所以作为入门,阅读内容是可以裁剪的。

    我的建议: “第 1 章 开始”、“第Ⅰ部分 C++ 基础”:详读。这一部分虽然有大概 300 页,但各种语言大同小异,重点比较和你常用语言的差异就能事半功倍。 “第Ⅱ部 C++ 标准库”:大部分略读,大概知道有什么内容,以后用到再查。注意,用之前一定要查!另外“第 12 章 动态内存”一定要详读。 “第Ⅲ部分 类设计者的工具”:13、15 章详读,其他略读,用到再查。 “第Ⅳ部分 高级主题”:18 章涉及到异常和命名空间的详读,其他略读。

  • #6 楼 @lissdy 技术书籍,Kindle 版的排版真的很捉急,而且还只能用 Kindle 客户端看。其实美国各大计算机方面的出版社,官方都有电子版卖,不但提供 PDF 格式,如果你想要在苹果设备或 Kindle 上阅读,一般也有相应的格式,价格往往还比 Amazon 上便宜。节假日时常还有折扣活动,Pragmatic 一般是 6 折或 5 折(愚人节那个星期搞了个 6 折)。

  • 可以直邮,但个人不建议买。以前买过几次,要么是没有电子版的,要么折扣实在低,买来收藏的。 美亚图书运费比较贵,我买的时候(现在不知道有没有变)是每一单起价 5.99 美元,每本书再加 4.99 美元,还是平邮,到国内大概 3 到 5 星期。其他更快的运费就感人了。

    技术类图书建议到各出版社官网买电子版(有 PDF 格式,经常还搞折扣优惠),非技术类可以买 Kindle 版,方便。如果非要实体书,先到中亚搜一下有没有货,虽然标价比美亚贵(偶尔也能买到比美亚便宜的),但考虑到运费,价格不一定差太多,还有物流速度的优势。

  • #38 楼 @jasl 界面复杂几乎是 Window 程序的通病,没办法,好在调教好了能用。复制粘贴很方便,跟 iTerm 差不多。

  • #36 楼 @jasl Windows 终端可以用 ConEmu,虽然不如 ITerm2,但已经比较好用了。

  • [VPS] 求推荐 at April 06, 2016

    香港的 VPS 貌似带宽和流量偏小,东南亚的话,有没有考察过新加坡,大型 VPS 服务商一般都有新加坡节点。

  • #24 楼 @libuchao 现在看来,目前的解决方案从使用效果上,相当于更好用的虚拟机。不过由于文件系统的无缝共享,也有望解决部分问题了,如 git for Windows 的效率问题。

    git 本来是以快著称的,但我在工作项目上运行time git status的结果(另,我是用 PCI-E 协议的固态硬盘):

    real    0m6.824s
    user    0m2.437s
    sys     0m12.078s
    

    这在 OS X 或 Linux 基本是秒开的。

    git difftoolgit mergetool每个文件弹出来目测要等好几秒(好吧,如果用原生 git,估计我不能设置某个 Windows 程序做 merge tool 了)。

    git checkout如果两个分支差异比较大,随随便便等个几分钟甚至更长时间。

    总之用得很搓火。

  • #10 楼 @libuchao 可能我们的关注点不一样。看了视频,所谓的“无缝切换”,是建立在 Linux、Windows 可以访问同一个文件系统上的。这个功能应该是显而易见的,不然和虚拟机比,可用性上也没太多优势。另外就是,我注意到,演示时在 cmd 直接输入bash运行。但不确定这个 bash 是 Linux 原生的(也就意味着 Windows 程序可以直接调用 Linux 工具),还是做了特别处理。

    但我的疑问还是没有解决,至少从视频看不出来。举个实际的用况,假设一个 OS X 用户,使用 Textmate 做编辑器,那么他可以:

    1. mate path/to/file编辑指定文件
    2. $EDITOR设为mate,这样当命令行工具需要编辑文本时,可以调用 Textmate
    3. Textmate 的很多功能是调用 sh、ruby 等脚本实现的
    4. 它还可以直接调用其它命令行工具。例如在编辑器内通过 git 插件访问代码库;如果你写了一段 C++ 程序并运行,它可以自动调用 gcc 来编译,然后运行 gcc 构建出来的程序。

    以上的用法,应该不算很罕见和特殊吧?我们把他挪到 Windows 上,至少需要实现:

    1. 从 Linux 环境调用 Windows 程序,这点视频里没有演示,他用 vscode 的时候,都是用 File Explorer 打开的
    2. Windows 程序可以调用 Linux 程序,从能够在 cmd 运行 bash 看,似乎是可以的,即使不能自由的调用所有的工具,至少把对 Linux 命令的调用封装到 bash 脚本里间接调用,应该是可行的,虽然这样比较麻烦。
    3. 不同子系统信息的交换,例如最基本的是文件路径:一个 Windows 程序传给 Linux 程序的肯定是C:/path/to/file,甚至是C:\path\to\file,Linux 程序怎么理解?而 Linux 程序给 Windows 的则是/mnt/c/path/to/file/home/username/path/to/file。 还有ln -s(或者通过其他脚本创建 symlink),在 Unix 是个很常用的操作,而在 Windows 上坑爹的是个特权操作。于是 cygwin 是自己实现的 symlink,出了 cygwin 环境就不认了。而 MinGW 默认配置是关掉 symlink,ln -s实际在做拷贝,即使配置成使用系统原生的 symlink,因为权限问题,也不方便。

    总之现在 Windows 上使用 Unix 环境是很痛苦的,目前微软官方的方案只是解决了部分问题。

  • #8 楼 @libuchao 看使用场景了,如果你的任务可以只用 Linux 子系统内的工具完成所有事情,当然没什么不方便。但在 Windows 上开发,很多人的应用场景是要用到 Windows 原生程序,甚至以这些程序为主,但又需要某些 Unix 命令行工具提供的便利。

  • 在 Windows Blog 上看到这么一条: Third, note that Bash and Linux tools cannot interact with Windows applications and tools, and vice-versa. So you won’t be able to run Notepad from Bash, or run Ruby in Bash from PowerShell.

    https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/

  • #1 楼 @cqcn1991 Visual Studio 现在也能开发 iOS 了:)

  • 我一直盼望 Windows 能像 OS X 一样加上一个原生的 POSIX 兼容层。所以现在微软走出这一步,还是很兴奋的。 但对以宣传的这种方式实现 Linux 兼容,听起来能直接运行 LInux 程序很厉害,但可用性怎么样还得看实际的使用效果,能用和 好用是两回事。希望这个宣传是真的:The sysbench utility is showing nearly equivalent cpu, memory, and io performance.

    以 cygwin 为例,这样的工具用户体验是比较差的,我个人是没有把它投入实用的欲望,主要有两个问题:

    一个是效率(也许这次微软能解决),举个栗子,Windows git 用在大型项目上速度感人,用过的人应该有所体会。这里面可能有两个原因:NTFS 处理大量小文件似乎效率不高;Linux 程序大量依赖 fork 调用子进程完成任务,本来 fork 是很轻量级的,但 cygwin 用 Windows API 模拟的 fork 代价极高。

    二是和其它子系统的配合。这一点在 OS X 上都有所体现,例如通过 bash 配置的$PATH,其他应用继承不到(除非是在终端启动),需要另想办法。但人家总归是在整个系统层级实现的 Posix,少少的配置之后,日常使用不会出问题。但以类似 wine 的方式实现 Linux 兼容层,和其他 Windows 程序的配合不知道能怎样解决。比如怎样让 c:\path\to\file、/c/path/to/file、/path/to/file 这类的东西在不同子系统件顺畅的传递?

  • 记 Dji 的一次面试。 at March 18, 2016

    Java 程序的速度快不奇怪吧,JVM 应该是最快的虚拟机了吧,除非有什么不为大众熟知的黑科技产品。 曾经.Net的虚拟机应该是快过JVM的,毕竟有一些比JVM厉害的优化功能,例如C#有值类型可以在栈上创建,而Java对象都是在堆上动态分配的。 但我去年做过一个测试,一个计算密集型的算法(光线跟踪),在Windows平台上,Java实现的版本比C#快不少,和C++写的原生代码也只有倍数左右的差距,简直碉堡了。

  • 如果不急用,建议等新款,有 skylake 的加持,估计升级的余地比较大

  • 期权有什么用处 at September 23, 2015

    我觉得我第一段已经说明了期权和股份的关系:期权就是选择权(option),可以让你在未来一定期限内,以约定的价格(行权价),购买不超过约定数量的公司股票。

    不知道你疑惑的点在哪里?

  • 期权有什么用处 at September 23, 2015

    期权很复杂,就不多解释了(其实是我也讲不清楚),只说和“招聘帖”相关的东西:就是公司给你选择权(option),可以让你在未来一定期限内,以约定的价格(行权价),购买不超过约定数量的公司股票。

    对你有什么用?打个比方,如果公司上市了,股票市场价格是 100 元,而你有期权 10 万股,行权价 10 元,那你理论上可以赚到 900 万(其实没那么好,继续看后面)。

    听起来挺好,但你要注意:

    1. 公司得能上市,或已经上市,期权才能体现价值,否则即使能以便宜的价格买到公司的股票,没人当接盘侠也白瞎。
    2. 上市后股票的市场价格得高于你的行权价,否则你就悲剧了(参考迅雷)。
    3. 行权时股票价格高于行权价的差值,是被有关部门认定为工资收入的,而且是和行权当月的工资加总到一起计算个税税率的,所以准备好被郭嘉薅走 30% 到 45% 的羊毛吧。
  • 这类情况,正统的 VIM 解法是使用 register。如果选块数量较多,操作有规律性,可以看下能不能用宏。如果楼主特别需要多重选区的功能,只有搜下看有没有插件解决问题了。

  • #4 楼 @wl1991724 觉得 Java 慢应该先考虑看看 Groovy 啊,一段合法的 Java 代码几乎就是合法的 Groovy 代码,可以从 Java 无缝逐步迁移,可以共享 JVM 生态环境,可以享受动态类型语言的便利和诸多语法糖以及元编程能力,在必要的情况下也可以使用其静态类型的特性,以提高运行速度或执行编译器检查。

  • #10 楼 @sorashiro 你是在虚拟终端下用 vim 吗?如果是的,先换成用 GUI 版本的,如 gvim,这样 colorscheme 的显示才是准确的。如果一定要用终端版本的,首先要确保$TERMxterm-256color,其次要么修改虚拟终端的调色板设置,要么配合 CSApprox 插件使用。

  • 要知道答案很简单,去看作者的.vimrc,有这么一行 for scheme in ['janah', 'gruvbox', 'hemisu', 'desert'] 自己去试下是哪个吧

  • 强烈推荐 Karabiner 这个软件,首先按 1 楼图示互换 Control 和 Caps Lock,然后在 Karabiner 中设置左 Ctrl(即物理上的 Caps 键,根据 Karabiner 的说法,系统对 Caps 这种状态切换键的处理有些特别,不能简单的映射成别的键。所以先用系统设置把 Caps 的功能改掉是最简便的)为:单独按时当 Esc 键,和其他键组合时当左 Ctrl 键。有需要的话可以再设置 Enter 为:单独按时为 Enter,组合按时为右 Ctrl。此外我还利用它设置 key repeat 的速度,系统设置的最高速仍然太慢。不知大家有没有发现,在 mac 下面的 vim,用 hjkl 连续滚屏(尽管这是个 low end 的操作)时候总是不流畅,和 Linux 下面完全不能比,开始我百思不得解,OS X 的渲染性能怎么可能这么弱,后来发现其实是 key repeat 不够……

    总之用上 Karabiner 后,使用 vim 的舒爽程度顿时提高不少,此外还有更多碉堡的设置供大家发掘。

  • 看起来M-x键绑定被人改了,evil 应该不会改这个键的。 你是怎么启用 evil,通过M-x evil-mode?然后启用之后,M-x就不起作用了?

  • 这个应该是 ruby 用的命令行参数解析库的要求,这个 --with-pg-config 不是 gem 自己的参数,通过--分割,让解析程序不把它当做命令行参数处理。

    The argument "--" should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character. The "--" argument should not be used as an option or as an operand.

  • #1 楼 @blacktulip 4.5W 的 TDP 是瓶颈,别看能 turbo 到和 air 差不多的频率,但无法长久维持,否则芯片会过热,所以性能还是比不过 air 的。

    不过这 CPU 对我是勉强够用了,唯一屏幕分辨率是硬伤,只相当于 1152x720。只希望下个版本会有更好的了,看这架势未来也许会出 14 寸的版本。(貌似 air 第一版也只有一个尺寸?记不清了)

  • #23 楼 @xhj6 如果是我肯定不还,5% 的利率现在这个阶段是比较低的,普通屌丝要想拿到这么低的资金成本,我知道的方法只有做债券正回购,前提是你得持有大量债券。而要低风险的获得 6% 以上的年化收益,可能性还是比较大:如陆金所

  • #20 楼 @moyuanming 解释很清楚。

    原文的算法没问题,楼主这个案例,按照文中信用卡“手续费”的提法,相当于年手续费 0.6/22.8,约 2.63%,算是比较优惠的了。当然,借钱来纯粹用于消费,即使是零利息,也不可取。

  • #13 楼 @xhj6 那就是相当于借 22.8 万,每月还 1 万,两年还完,算下来差不多正好相当于等额本金还款方式的 5% 的利率

  • 貌似你们都没算对吧。 如果我没理解错楼主的意思,应该是借 24 万,两年还完,每月还 10500(其中本金 10000,利息 500。不过看楼主的表格,又是是本金 9500,利息 500?如果是这样的话,本金应该没有 24 万)。这和按月等额本息还款方式下,年利率 4.7% 的还款金额差不多,算下来还是有点优惠的,两年期的基准利率现在是 6.0%。

  • 在使用 BigDecimal 前建议你先仔细检查一下代码,正常情况下 Float 能表示的数的绝对值足够大了(反而有时候可能是因为精度不够——只有 15 位有效数字,所以需要采用别的表示方法)。 另外 NaN(Not a Number)也不一定是计算过程中溢出了,也有可能是有错误,如对负数开方。

  • WPS Office 支持直接导出 PDF 格式,较新版本的 Microsoft Office 也能另存为 PDF。可以调用它们的 COM 接口实现自动化。