如何通过互联网出版一本小书
这篇讲的是作者如何将一篇“写一本书”的愿望清单落地,并分享其中关于工具、渠道与心态的完整实践经验。 工具上,他推荐技术作者使用GitBook,因为它支持Markdown、能一键生成多种电子书格式,并可拖拽调整章节。他也坦诚提到了早期版本在中文支持上遇到的小坑,建议可搭配其他编辑器使用。 分发渠道部分对比详细:自建页面如SelfStore流程简单但需自行推广;百度阅读自带编辑器且支持版权控制,但平台流量有限;多看、亚马逊等主流平台则需通过BookDNA等代理上架,作者指出这类代理虽能扩大覆盖面,但存在收益反馈滞后和版权授权的风险。 最重要的是心得:他发现2-3万字聚焦细分领域的“小书”同样有出版机会,这打破了必须靠篇幅“凑数”的传统观念。作者鼓励技术人员从经营系列博文开始,逐步积累,未来无论是自出版还是联系出版社,都会更为从容。这为许多想系统化整理知识但畏惧“出书”工程量的人,提供了一条清晰的轻量路径。
Firefox 开发者工具之调试控制台 Console 的使用
作者从自己作为Firefox深度用户的实际需求出发,写给那些不了解前端开发的运维和运维开发人员。文章围绕Firefox原生的调试控制台(Console)展开,强调了它作为一款无需插件、开箱即用的调试工具,其功能其实相当强大和好用。 内容具体讲解了Console的核心功能:它不仅可以输出与浏览器显示无关的调试信息(如用 `console.log` 打印变量或结构化对象),更在前后端分离、JavaScript主导页面逻辑的当下,成为前端沟通的关键桥梁。文章演示了几个实用技巧,包括如何用 `console.time` 与 `console.timeEnd` 测量一段代码的执行耗时,使用 `console.group` 组织具有层级关系的日志输出,以及通过 `console.dir` 深入检查某个DOM元素的属性结构。 这篇文章旨在帮助非前端背景的开发者快速上手这款内置工具,掌握几种高效的调试方法,从而更好地理解网页背后JavaScript的运行逻辑。文末附上了Mozilla官方文档的中文翻译链接,便于读者进行延伸阅读。
以Facebook为案例剖析科技公司应有的工具文化
这是Facebook早期员工王淮Harry哥分享的一篇关于“工具文化”的深度见解。文章以Facebook的内部实践为案例,阐述了一个核心观点:优秀的技术公司应当将内部工具的开发和维护视为至关重要的战略投资。 文章详细介绍了Facebook如何通过两个核心工具组(研发工具组与网站支持工具组)来支撑其工程效率。例如,从新员工快速获取开发环境,到代码提交前的自动化规范检查、可视化的代码审查(Phabricator),再到无需改代码即可配置的灰度发布系统和多线程更新机制。这些工具的设计哲学是将优秀实践自动化、固化,以“不要让我思考”的方式提升整体效率。文章还提到,这种文化甚至延伸至用户客服、招聘面试和绩效评估等环节。 作者强调,工具文化的益处是“杠杆效应”的累积,能显著提升人均产出、降低协调成本(如用户达1亿时客服团队仍不到20人)。然而,最大的挑战在于如何吸引顶尖工程师加入工具团队。为此,公司需要用具体效率数据说话,并在企业文化中反复强调工具的战略价值。文章最终指出,对于度过初创期的公司,持续打造优秀的内部工具,其重要性甚至不亚于寻找下一个伟大的创意。
webapp网页调试工具Chrome Devtools
这篇讲的是如何告别只能拉窄电脑屏幕来模拟手机页面的“土办法”,转用Chrome DevTools中专业的移动设备调试功能。文章指出,简单拉宽电脑窗口并不能真实还原手机屏幕的显示效果,因为手机采用“每英寸像素点”衡量清晰度,与PC端标准不同。 作者将焦点引向Chrome DevTools的“webapp调试界面”,详细拆解了其中几个核心功能。比如,通过“Device”选项可以直接选择iPhone 6等具体设备进行预览,无需手动调整浏览器窗口;“Network”面板允许模拟从离线、GPRS到WiFi的各种网络环境及其延迟,帮助开发者针对不同地区网络条件优化页面加载速度;此外,文章还解释了“分辨率”、“device pixel ratio”(设备像素比)以及视图比例(viewport scale)等关键参数的设置与含义。 对于需要精准还原移动端设计稿、或希望在不同网络条件下测试性能的前端开发者而言,掌握这些调试工具是提升工作效率和页面质量的关键一步。
怎么清除Windows远程桌面连接的历史记录
这篇讲的是如何彻底清除Windows系统中远程桌面的连接历史记录。问题的根源在于,系统为了方便会记住我们连接过的主机IP和端口,这些信息其实都存储在注册表的特定路径下。对于注重隐私的用户来说,这可能会带来不必要的顾虑。 作者提供了一个清晰直接的解决方法:通过“运行”打开注册表编辑器,导航至“HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/Default”这个分支。在这个位置下,所有用过的连接记录都会以MRU0、MRU1这样的字符串值形式存在,它们对应的数值就是具体的地址和端口。只需将这些条目全部删除,下次打开远程桌面连接时,那个历史下拉列表就会变得干干净净。 文章不仅说清了操作路径,还贴心地附上了每一步的截图指引,让不熟悉注册表操作的用户也能跟着做,避免误删其他关键数据。对于那些需要管理多台远程服务器、又想保持连接列表清爽的运维人员或IT管理者来说,这是一个实用且有效的清理技巧。
代码审查清单可消除更多的bug
这篇文章的核心主张是:在代码审查中引入并维护一份“检查清单”,能系统性地提升发现缺陷的效率,从而消除更多潜在的bug。 作者开篇就指出问题的普遍性:软件工程协会的研究表明,程序员常犯的错误集中在15-20种。因此,如果在审查时依赖纯粹的个人经验,这些常见问题就很容易被遗漏。清单的作用,正是将这些高频错误固化下来,确保每一次审查都能覆盖到这些关键点。 文章提供了一份经典的清单模板,涵盖了从“总体”(代码功能、可读性、规范、冗余)到“安全”(输入输出校验)、“文档”和“测试”等多个维度的具体检查项。它强调清单不必大而全,应聚焦于团队实际发生的常见问题。 更关键的是,清单并非一成不变。作者建议团队在实际审查中记录遇到的问题,以此作为数据来优化自己的清单,剔除不相关的项目,加入特有问题。通过这种集思广益和定期更新的方式,清单会越来越贴合团队实际。 最终,一个经过优化的、具体的清单,能帮助团队在审查中稳定地捕获更多瑕疵,避免审查质量因人而异,从而实质性地提升代码质量。
我的 Sublime Text 2 笔记
这篇笔记记录了一位长期使用Aptana的开发者,因工作需要转向Sublime Text 2后的真实上手过程与心得。作者坦言,初次接触便被其秒开的启动速度、干净简洁的界面以及“无干扰”的编辑体验所吸引。 为了高效驾驭这款新工具,作者遵循“工欲善其事,必先利其器”的原则,展开了一番针对性研究。文章的核心,是作者按照80/20法则总结出的一组最常用的快捷键。从用 `Ctrl+P` 快速搜索文件、`Ctrl+Shift+P` 打开命令面板,到使用 `Ctrl+L` 逐行选择、`Ctrl+M` 跳转括号,这些快捷键覆盖了文件导航、代码编辑、文本选择和面板操作等高频场景。 作者没有罗列全部功能,而是专注于能解决80%日常编码需求的关键操作,这种务实的思路让这篇笔记本身也成为了一种高效的“工具”,帮助其他开发者快速掌握Sublime Text的核心操作逻辑。
我的git笔记
这篇讲的是作者从 SVN 转向 Git 并深度使用后,沉淀下来的一份实用命令手册。作者从两年前通过《GotGitHub》入门 GitHub 讲起,分享了自己从最初使用 GitHub for Windows 图形客户端被自动换行符问题困扰,到后来通过学习《Git详解》系列文章转入命令行的进阶过程。 如今作者已在 GitHub 上开源了 60 多个项目,为了在这些项目间高效穿梭,也为了自己“用时能快速查阅”,他系统地梳理了 Git 的常用命令。文章按使用场景分类,涵盖了安装配置、新建与克隆仓库、本地文件增删改查、分支的创建合并与变基、远端操作、多源管理以及标签管理等方方面面。 特别值得一提的是,作者不仅列出了核心命令,还补充了像 `git revert` 和 `git stash` 这样实用但容易记混的操作细节,并在最后附上了包括《Pro Git》、《图解Git》在内的八份经典参考资料。整篇文章就像一个经验丰富的开发者在跟你分享他的“私人笔记”,对于需要快速回顾或查询 Git 命令的读者来说,是一份非常顺手的速查指南。
為什麼我喜歡玩魔方?
这篇讲的是一个技术人如何通过玩魔方,观察到“万能感”这种迷人的心理机制。作者并非单纯分享魔方技巧,而是从自身业余爱好出发(平均还原时间40秒,最快26秒),将玩魔方时那种“搞定不听话事物”的愉悦,与编程入门时写出“Hello World”的成就感联系了起来。 文章指出,这种通过自身意愿操控复杂系统的满足感,在苹果产品设计中体现为“一键直达”的简洁体验,在更广泛的领域则近乎一种“上帝模式”的诱惑。作者也冷静地提醒,这种“万能感”如同精神毒品,一旦遇到无法掌控的边界,便容易滋生挫败感与负面情绪。最终,他将这个小爱好上升到对“权力的诱惑”的思考,认为这或许是人类历史中无数争斗的缩影。
微信webview模拟器
作者从微信webview开发调试的痛点出发:JSAPI无法调试、登录态难模拟、手机与PC开发环境难以互通。安卓模拟器方案又过于笨重。为此,他提出一个轻量级的解决方案:一个运行在Chrome浏览器中的“微信webview模拟器”插件。 这个工具的巧妙之处在于实现方式。它通过浏览器书签栏执行一段JS脚本,动态在当前页面绘制一个模拟的iPhone外壳,并用iframe加载待调试的网页。关键的一步是,利用同域策略向iframe内部注入模拟的`WeixinJSBridge`对象,并触发`WeixinJSBridgeReady`事件,从而“欺骗”网页认为自己运行在微信环境中。 效果立竿见影:开发者现在可以直接在PC上连接内网开发机或本地页面进行调试。所有JSAPI的调用参数都会在控制台清晰打印,收藏、分享到朋友圈等常用操作也模拟出了UI界面。这套方案绕开了环境与资源的限制,让微信网页调试变得像调试普通网页一样直接方便。
如何构建优质代码
这篇讲的是如何编写出高质量、易维护的代码。作者从实际工程经验出发,总结了10条核心原则。 他开篇就强调了DRY(不要重复自己)的重要性,并举了单元测试中违反此原则会导致维护成本剧增的例子。文章还指出,写出短小的方法、采用能“望文生义”的命名规范,能让代码更易读和重用。 在设计层面,文章建议让每个类只承担“正确的”职责,并注重接口的稳定性而非实现细节。为了保障质量,作者大力推荐编写大量的单元测试,并以此为安全网,进行小步、持续的代码重构。 最后,他提到了一个颇具争议的观点:比起写糟糕的注释,不如花时间重构代码使其更清晰。同时,强调了代码审查机制对于发现错误和共享知识的价值,但要求审查者能力合格,并对代码负责。 这些原则共同指向一个目标:编写出更健康、更易于协作和演进的软件。
使用CocoaPods进行Xcode的项目依赖管理
这篇讲的是如何用CocoaPods管理Xcode项目的依赖关系。作者首先将CocoaPods类比为iOS生态中的Maven,但强调了其更大的灵活性——它不仅能管理官方仓库的库,还支持直接依赖本地库或指定的Git仓库,这一点与Gradle的思路相似。 文章接着从安装讲起,提示了Mac系统自带Ruby的便利性,并特别指出国内网络环境下安装和更新时可加上`--verbose`参数以观察进度。核心部分围绕`Podfile`展开,通过具体代码示例演示了如何声明对不同来源库的依赖。一个实用的技巧是:若项目存在多个Target,需要为每个Target单独声明依赖关系,否则配置仅对首个Target生效。 对于希望发布自定义库的开发者,文章详细解析了如何编写`PodSpec`文件。它不仅指导如何指定源文件、头文件和ARC设置,还给出了依赖`.framework`、打包资源文件以及利用`subspec`实现项目模块化的进阶示例。这些细节让文章超越了基础入门,提供了可直接参考的实战配置方案。
树莓派(Raspberry Pi)使用小记
这篇讲的是一位硬件门外汉从零开始折腾树莓派(Model B+)的实战记录。作者从淘宝采购全套配件讲起,详细分享了在Mac和Windows双系统下烧录Raspbian镜像时遇到的卡点(比如读卡器识别问题),并给出了具体的解决方案。 文章的核心价值在于其“踩坑”后的经验提炼:作者强烈建议先组装好亚克力外壳再连接网线,以保证连接稳定;在配置无线网卡环节,他指出若执行常规的`ifup wlan0`命令无效,可以尝试用`sudo /etc/init.d/networking restart`重启网络服务,并附上了亲测有效的配置教程链接。 整个流程从SSH首次登录(默认用户名pi/raspberry)、运行`raspi-config`扩展分区与修改密码,到最终实现无线网络连接,步骤清晰,提供了路由器后台查IP、终端命令操作等具体截图。对于想低成本上手Linux硬件开发的爱好者,这些从自身实践中总结的细节和排障思路,能有效缩短点亮树莓派的摸索过程。
让安卓手机通过代理翻墙的方法
这篇讲的是作者为解决小米3手机无法连接Google Play商店的问题,摸索出的一套安卓手机代理翻墙方案。作者的电脑一直通过PuTTY连接海外主机建立的SOCKS v5代理正常上网,他尝试让手机通过同一局域网内的这个代理上网,却发现只有Dolphin浏览器成功,谷歌Play商店等大量应用依然无法连接。 问题的根因在于,部分安卓系统应用和商店无法识别纯SOCKS代理。作者最终找到了DeleGate这款开源工具,用一行命令将电脑上的SOCKS代理转换为HTTP代理。具体方法是在电脑端运行指令,将本地7070端口的SOCKS代理映射到8080端口的HTTP代理,然后在手机WLAN的代理设置里指向电脑IP的8080端口。 验证效果是,完成这个转换后,手机上所有应用都能正常联网,谷歌Play商店恢复了应用下载和更新功能。文章记录了从遇到问题、排查到最终找到可行解决方案的完整折腾过程。
无插件Vim编程技巧
这篇讲的是如何在不安装任何插件的前提下,充分利用 Vim 7.2 原生功能来提升编程效率。作者从解决“多文件管理与导航”这个日常痛点出发,详细分享了他的一系列实战技巧。 文章首先介绍了用 `:E` 命令直接浏览文件目录,并使用 `j/k` 键导航,告别在多个终端窗口间来回切换的低效方式。接着,深入讲解了“缓冲区”这一核心概念:通过 `:ls` 查看所有已打开文件,并用 `:buffer` 命令及其缩写在不同文件间快速跳转。 对于需要并排对比代码的场景,作者推荐了使用 `:He` 和 `:Ve` 命令进行分屏浏览目录的技巧,并配合 `Ctrl+W` 组合键在分屏间灵活切换。更进阶的玩法是,用 `:set scb` 命令能实现两个分屏窗口的同步滚动,非常适合代码对比。 除了分屏,文章还介绍了用 `:Te` 命令开启类似浏览器的标签页浏览,并使用 `gt` / `gT` 等快捷键在多个标签页之间切换。最后,作者分享了如何用 `:mksession` 命令保存当前的窗口布局和文件状态,以便下次用 `vim -S` 一键恢复工作环境。 整篇文章没有泛泛而谈,而是将每个功能点都落实到具体命令和操作界面,真正展示了 Vim 强大的内建能力。掌握这些原生技巧,能让你在不依赖插件的情况下,把 Vim 的多文件工作环境打理得更顺手。
等宽字体:程序员的字体
这篇文章汇集了程序员编码和阅读代码时的“利器”——等宽字体。由于字符宽度统一,这类字体能带来工整的视觉排布,有效减轻长时间阅读代码的疲劳感,甚至对强迫症患者也相当友好。 作者从实用性出发,一口气列举了二十款常见的等宽字体,并附上了直观的字符效果预览图。这些字体风格各异,从经典稳重的 Courier New、Consolas,到设计现代的 Source Code Pro、Inconsolata,再到颇具个性的像素字体 Telegrama,几乎涵盖了主流选择。文章最后还给出了作者的个人偏好,认为视觉效果出众的有 Courier New、DialogInput 等几款。 对于正在寻找或更换编程字体的开发者来说,这篇文章提供了一个清晰的起点和直接的视觉参考,末尾附上的字体资源包也相当实用。
Trackback,Pingback及XML-RPC
在博客技术中,评论区的互动方式不止“普通评论”一种。这篇讲的是Trackback与Pingback这两种经典的引用通知机制——它们如何让博客文章之间能够“对话”。 文章开门见山,对比了两者:Trackback更像是个“手动挡”,源于早期博客系统,需要作者在自己的文章发布后,手工将链接和摘要以HTTP POST请求发送给目标文章。而Pingback则是一次全面升级,它是“自动挡”。当你在文章中插入其他博客的链接并发布后,Pingback机制会基于XML-RPC协议,自动发现这些链接并向对方服务器发送通知。 作者清晰地列出了核心差异:Pingback使用的是更现代的XML-RPC协议,而Trackback用的是HTTP POST;最关键的是Pingback的全自动发现与通知,无需手动操作。此外,Pingback提取的是链接周边的文字作为摘要,Trackback则需完全手写。 文章不止于对比,还进一步探讨了Pingback机制的潜在应用场景,比如用于跟踪页面引用的脚本和CSS版本。最后,作者简要勾勒了实现Pingback服务端与客户端的核心步骤,从解析请求、抓取页面内容到生成评论,为想动手实践的开发者提供了清晰的思路图谱。
& * # 这三个是什么符号?
这篇讲的是,很多国内程序员都习惯用中文叫那些常见符号——“and符”、“星号”、“井号”,但在国际技术交流中,它们却有另一个名字。作者从一次听国外公开课“彻底懵了”的经历出发,点出了这个细微却影响交流的认知差异。 文章核心就在于“翻译”这三个符号在技术语境下的真正发音和背景:& 其实是 ampersand,它的含义就是“and”;* 的名字是 asterisk,常见于表示脚注;而 # 的英文名是 hash,在英语中既可以表示数字序号(如地址#18),在美国还用作重量单位“磅”(如2# sugar,约两斤糖)。 这篇文章提醒我们,在阅读英文技术文档、观看国际公开课时,理解这些符号的“本名”非常关键。它不光是一个冷知识,更是帮助我们流畅获取一手技术信息的一个小钥匙。
Linux C语言编程学习材料
这篇整理了Linux C语言编程从入门到精通的完整学习路径。它把资源清晰地划分成三个阶段:快速入门用《Linux C编程一站式学习》打基础,长期深耕则推荐了C Primer Plus、经典数据结构教材以及APUE等“圣经”级著作。最硬核的部分在于高级网络编程资源,不仅覆盖了《Linux高性能服务器编程》等通用指南,还深入到Apache、Nginx的模块源码分析,以及MySQL内核、Redis实现剖析等具体高性能组件的“深水区”。 作者显然意图为志在开发高性能后端的工程师,构建一个从语言基础、系统编程到具体中间件实现的扎实知识栈。资料列表兼顾了经典纸质书与电子文档,尤其像Redis源码分析系列博客、PHP内核手册等,提供了贴近工程实践的切入点。整份清单像一份精心设计的“技术地图”,让学习者能按图索骥,逐步构建起支撑大规模服务的底层能力体系。
程序员装逼神器-TPP
厌倦了传统的PPT演示?这篇文章介绍了一个在终端里就能做演示的神器——TPP。它本质上是一款基于文本的演示工具,让你用简洁的命令语法,在终端中创建并展示幻灯片。 文章详细介绍了如何通过一条 `sudo apt-get install tpp` 命令完成安装,并用具体例子展示了其输出效果。核心在于它独特的标记语言:你可以用 `-title` 定义标题,用 `-date today` 自动插入日期,甚至通过 `-beginoutput` 代码框直接展示代码片段。播放时,支持丰富的快捷键操作,如空格翻页、b键回退、l键刷新,交互体验流畅。 除了默认的ncurses交互模式,TPP还支持自动播放(autoplay)、导出为LaTeX或纯文本文件,非常适合在终端环境或远程SSH会话中快速进行技术分享。作者通过详尽的语法清单(包括动画进入、文本样式、布局对齐等),展示了它如何将枯燥的文本变成结构清晰的演示文稿。对于喜欢极客范儿、追求在命令行中完成一切的开发者来说,这无疑是个提升效率又兼顾风格的小工具。