IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

开发者

共 800 篇文章

IT 2010-01-13 21:39:01 / 累计浏览 4,603

利用vim(gvim)的正则表达式实现代码自动匹配完成(等号两边数据交换)

这篇讲的是如何用 Vim/Gvim 的正则表达式,高效解决代码中“等号两边数据交换”的繁琐操作。作者从网络通信中常见的结构体序列化与反序列化场景切入,指出手动调整赋值语句不仅重复且容易出错。 文章核心方案是利用正则的捕获组与反向引用,通过一条简洁的命令,将形如 `a = b;` 的代码自动转换为 `b = a;`。其巧妙之处在于,它并非简单的文本替换,而是能精准识别变量名并智能调换位置,从而将原本需要逐行手动修改的批量工作,转化为一键完成的自动化流程。这为处理类似对称性代码修改提供了高效思路。

本机暂存
IT 2010-01-10 13:30:34 / 累计浏览 4,744

用vim在代码文件中自动添加#ifdef,#define,#endif的头文件宏定义

这位vim用户最近尝试在网上寻找现成的、能在C/C++代码文件中自动添加头文件宏守卫(#ifndef, #define, #endif)的插件或脚本,但一无所获。这激发了他动手自己实现这个实用功能的决心。 文章详细分享了他为vim编写的这个新特性的实现过程与思路。核心目标是在保存或打开头文件时,自动检测并生成完整的宏定义结构,省去手动输入的繁琐。此外,作者还为他的vim环境增添了一个辅助功能:当代码发生变更时,可以自动记录并插入相关的操作时间与执行人信息。虽然文章主要聚焦于宏定义自动添加的实现细节,但也提及了后续对代码变更追踪功能的规划。 整个分享从实际需求出发,展现了作者解决问题的过程。对于同样有定制vim工作流需求,或是想了解如何在编辑器中实现文件级代码操作的开发者来说,这个从零开始的实现案例提供了一个清晰的参考思路。

本机暂存
IT 2010-01-05 13:54:42 / 累计浏览 5,623

通过vim字典补全,实现php函数名自动补全

这篇讲的是如何在 Vim 中通过配置字典文件,实现 PHP 函数名的智能补全。 作者从提升编码效率的实用角度出发,指出 Vim 本身已具备强大的补全机制,而通过加载外部字典,可以进一步扩展其对特定语言(如 PHP)的支持。文章的核心方案非常清晰:第一步是从 PHP 官方资源库获取现成的函数列表文件;第二步是将这个文件重命名并放置在 Vim 目录的特定位置(ExtraVim)。完成这两步配置后,开发者在编辑 PHP 代码时,就能通过触发补全命令,从这个字典里快速匹配和插入准确的函数名,避免了拼写错误和频繁查文档的麻烦。 这种方法巧妙地将社区维护的语言知识库与 Vim 本身的编辑能力结合起来,实现了一个低成本、高收益的效率工具。整个过程不需要复杂的插件管理,对于希望保持 Vim 环境简洁、专注于提升基础编辑体验的 PHP 开发者来说,是一个直接有效的技巧。

本机暂存
IT 2010-01-04 16:05:46 / 累计浏览 7,628

怎么样才是好的程序员

在评判程序员标准这件事上,作者抛出了一个很硬核的核心主张:看一个人是不是好程序员,主要看他写的代码。作者认为,这是因为程序员最根本、最重要的事情就是写代码。 文章的论述非常直接。它指出,代码不仅仅是程序的载体,更是程序员思想、能力和解决问题路径的最终呈现。一段代码的优劣,能够清晰地反映出编写者的技术功底、思维逻辑、沟通协作精神,甚至对工程美感的追求。无论是可读性、效率,还是对边界情况的处理,所有抽象的能力评价,最终都落在这一行行具体的字符上。 作者从这个最朴素的观察出发,引导读者重新审视程序员的价值内核。这就像工匠精神,工具和作品是评判手艺人的关键。对于开发者而言,在追求架构、方法论或各种光环之前,或许最该回归的,就是打磨好手中的代码。这篇观点鲜明的文章提醒我们,在技术的道路上,代码质量本身就是最有力的名片。

本机暂存
IT 2010-01-04 13:04:52 / 累计浏览 2,023

C/C++实现多参数函数编程

这篇讲的是如何在C/C++中实现像 `printf` 那样参数个数可变的函数。作者直接切入正题,从“如何定义一个可接受不定参数的函数”这个最基础的点开始展开。比如,文章会先解释 `fun(”%d”,1)` 这种调用形式背后,函数原型应当如何声明,接着自然引出 `` 头文件中的 `va_list`、`va_start`、`va_arg` 和 `va_end` 这几个关键机制,并讲解它们是如何协同工作来逐一解析栈上的参数的。 对于想要深入理解C语言函数调用约定、栈内存布局,或是有实际需求(如自定义日志、格式化输出)的开发者来说,这篇文章提供了清晰的思路。它不仅仅停留在语法层面,更指向了实现的底层逻辑,帮助你写出更灵活、更贴近语言本质的代码。

本机暂存
IT 2010-01-04 13:04:08 / 累计浏览 10,141

介绍几个QQ开源项目及协议下载

作者整理了腾讯QQ官方开源的几个项目,覆盖即时通讯客户端、协议解析工具等不同领域。他重点梳理了QQNT(新版QQ技术预览)、NTQQ以及一份可用于学习的私有协议数据包下载地址,并明确区分了各项目的技术定位与适用场景。 其中,QQNT是面向现代化架构的客户端方案,采用了C++与Electron混合的技术栈;而NTQQ则更接近传统客户端的实现逻辑。对于想深入协议层的开发者,文章提供了非公开协议的抓包数据作为参考,但也特别强调这些内容仅可用于技术研究,不得用于商业用途。 作者从实践角度指出,选择开源项目时需要先明确目标:如果是研究跨平台客户端架构,QQNT的代码结构更有参考价值;若想理解QQ的通信协议细节,协议数据与解析工具会是更好的切入点。文章最后提醒读者,虽然这些项目开放了代码,但使用时务必遵守开源协议中的限制条款。

本机暂存
IT 2009-12-28 10:42:23 / 累计浏览 2,303

MinGW

这篇讲的是MinGW——一套为Windows平台提供原生支持的GCC工具链。作者从一个常见需求出发:如何在Windows上摆脱对微软专有工具链的依赖,使用开源、跨平台的GCC进行开发。 文章的核心在于阐明MinGW的关键价值与定位。它并非一个模拟层,而是直接生成Windows原生可执行程序的工具集,其核心是GCC编译器和MinGW运行时库(msvcrt.dll)。与MSVC等主流工具链相比,MinGW的关键差异体现在:使用GNU C库(glibc的Windows移植版)而非微软C运行时库,这意味着特定的系统API调用、链接行为和调试体验会有所不同;它完美支持GCC丰富的编译选项和生态,但可能无法直接使用某些为MSVC设计的Windows SDK组件或库。 对于需要构建开源C/C++项目、追求更一致的跨平台编译体验,或是希望在Windows上使用完整GNU工具链(如GDB)的开发者来说,MinGW提供了一个轻量且高效的选择。不过,文章也暗示了它的边界:当项目严重依赖Windows特有生态或需要与微软技术深度集成时,MSVC仍是更稳妥的方案。

本机暂存
IT 2009-12-21 23:29:05 / 累计浏览 2,863

工作两年半的部分失败的经验

这篇讲的是作者回顾自己毕业两年半以来的职场历程,坦诚分享其间那些“部分失败”的真实故事与反思。文章并非年度简单盘点,而是跨越近三载时光,从青涩职场人视角出发,细数那些搞砸的项目、踩过的坑,以及未达预期的尝试。 作者没有泛泛而谈,而是聚焦于具体的场景与教训:可能是某次沟通失误导致需求偏差,可能是技术选型不当带来的维护噩梦,也可能是对自身成长规划的迷茫与修正。核心观点在于,这些“失败”并非终点,而是构成职业能力图谱的关键节点,其中蕴含的关于团队协作、技术决策与自我认知的领悟,比一帆风顺的成功更为深刻和鲜活。 对于正处于相似阶段的开发者而言,这些毫不遮掩的复盘,提供了比成功学更接地气的参考坐标——它展示了成长是如何从一次次“行不通”中被锤炼出来的,让人看到专业能力之外,心智成熟与经验沉淀的同样重要。

本机暂存
IT 2009-12-18 23:31:25 / 累计浏览 3,762

使用Vim(gvim)实现复杂的查找替换的一个例子

这篇讲的是作者帮妻子处理Word文档排版时,发现内置功能难以满足复杂的格式调整需求,于是转向Vim来解决问题。文章没有停留在“Vim能做什么”的泛泛而谈,而是从一个具体案例入手:如何通过组合使用Vim的正则表达式和查找替换命令,来批量处理文档中特定的文本模式和格式。 作者详细展示了操作的逻辑与步骤,比如利用特定符号和分组来精确定位内容,并通过一次替换命令完成多项调整。这个过程不仅解决了眼前的排版难题,也直观地体现了Vim在处理文本时的强大与灵活——许多在常规编辑器中需要手动重复多次的操作,在这里可以通过一条简洁的命令高效完成。 对于熟悉Vim的读者,这可能是一个实用的小技巧分享;对于不熟悉的读者,它则是一个了解Vim解决问题思路的生动窗口。文章的价值在于,它演示了如何将工具的能力与真实问题结合,而不是单纯罗列功能。

本机暂存
IT 2009-12-15 22:31:07 / 累计浏览 2,347

Perl Advent的文章总结

这篇是Perl Advent系列的最新动态更新。作者承接此前对Perl Advent的介绍,进一步说明了活动将延续至12月25日。 Perl Advent作为Perl社区每年的传统活动,会在12月的每天发布一篇与Perl技术相关的内容。文章点明了这一时间线,意味着读者在节日季可以持续关注该系列,获取从模块使用到编程技巧等多样化的技术分享。对于Perl开发者或爱好者而言,这提醒大家该系列内容尚未完结,后续每日的发布都值得留意。 整体来看,这篇简短的更新如同一个温暖的进度提醒,将社区的节日技术氛围再次锚定在25日。它引导读者回顾了之前的介绍,并共同期待整个十二月剩余每日的精选内容。

本机暂存
IT 2009-12-15 13:20:32 / 累计浏览 4,343

一个小公司老板的日常管理,希望能让创业的朋友学到

这篇文章讲的是一位中小企业老板在十年管理实战中摸爬滚打出来的“草根”心得。作者坦言,大公司的管理理论在自己的百人小公司里水土不服,于是他把遇到的坑和趟出来的路都写了下来,比如如何用“半价入股+分红”的机制留住20%的骨干员工,而非空谈理想。他分享了从“最忙的老板”到学会授权的关键转变,并坦言曾因忽视财务管理吃过亏,强调小公司“有的钱不能省”,比如聘请专职会计。文章还总结了招聘中的教训、老板在批评与表扬中应扮演的角色、如何处理公司里的亲戚,以及政策朝令夕改的危害和按时发工资的底线原则。作者用开车比喻管理,认为只要在车道内稳定行驶就不必频繁调整方向盘。这些源于真实亏损和团队动荡的教训,或许比教科书更能给创业者带来切实的启发。

本机暂存
IT 2009-12-15 12:19:11 / 累计浏览 2,721

程序之外的事情 (Part 1 - Speech)

这篇讨论从程序员公众表达能力的争议切入。作者开篇提到近期热文《程序员需要培养企业家式的能力》,该文认为程序员普遍存在公众讲话会脸红、不善表现自己的问题。但作者对此观察提出质疑——在他熟悉的程序员圈子里,情况恰恰相反,他遇到的许多程序员都善于交流,并能通过对话激发有趣的创意与观点。 文章的核心在于这一基于个人经验的发现:程序员的刻板印象或许并不普遍成立,许多技术从业者实际上拥有良好的沟通能力。作者推测,这可能与各自所处的圈子和接触的群体有关,他所认识的程序员恰好都是沟通意愿和能力较强的一类。 这个观察揭示了技术社区中的多样性,提醒我们不应被单一的标签所局限。它引导读者思考:在埋头技术之外,开放的交流与表达同样是构建技术影响力、激发创新的重要维度。

本机暂存
IT 2009-12-10 13:39:10 / 累计浏览 1,761

subcon使用笔记

这篇讲的是作者在重看Flickr的技术PPT时,发现了一个名为subcon的配置管理工具,并决定上手试试。这个用Python编写的工具,核心思路是利用Subversion来集中管理和分发配置文件。 它的价值在于,能让你比较轻松地将一套配置部署到多台服务器上。因为配置文件都存在SVN里,所以天然就支持版本管理和快速回滚到指定版本,这对运维来说是个很实用的功能。此外,文章提到工具还集成了SystemImager,理论上能实现服务器的“一步安装”,算是额外的一个实用功能点。 总的来说,subcon提供了一个相对轻量级的思路,用版本控制工具来解决服务器配置管理的问题,适合中小规模环境或者作为更复杂配置管理方案的起点。

本机暂存
IT 2009-12-09 16:48:25 / 累计浏览 2,982

GCC编译错误

这篇讲的是GCC编译C++程序时常见的一个坑:链接阶段抛出“undefined reference to `__gxx_personality_v0‘”错误。作者从一个实际的编译失败案例出发,剖析了这个神秘的`__gxx_personality_v0`符号——它其实是C++异常处理机制(RTTI与异常展开)的核心运行时函数。当编译器(gcc)找不到相应的C++运行时支持库时,就会报这个错。 文章清晰地指出了根因:开发者可能误用C编译器(gcc)去编译或链接C++代码,而没有正确链接C++标准库(libstdc++)。解决路径非常直接:要么改用g++编译器,它会自动链接所需库;要么在使用gcc时显式加上“-lstdc++”链接选项。作者还延伸提醒,若项目使用自定义的异常处理代码,也可能触发此问题。 通过这个小而精的案例,文章不仅解决了单一报错,更帮助读者理解了C++工具链中编译器、链接器与运行时库的协作关系,让排查此类“未定义引用”错误更有头绪。

本机暂存
IT 2009-12-08 23:10:19 / 累计浏览 4,324

如何当好测试组长(1)-制定测试计划

这篇讲的是测试组长如何从制定计划开始改变团队对测试的刻板印象。作者开篇点出行业里一个普遍现象:测试常被当作“最简单、最没技术含量”的工作,总是丢给新人来处理。但作者立刻指出,这其实是个危险的误解——测试是软件质量的最后一道关卡,没有它,质量根本无从谈起。 基于这个共识,作者将“制定测试计划”作为测试组长履职的第一课。文章没有空谈理论,而是直接切入组长该如何思考:测试计划不是文档填空,而是对产品风险、测试范围、资源与排期的一次系统性梳理。它决定了后续所有测试活动的方向与效率。 对于新晋测试组长或希望提升测试团队地位的负责人来说,这篇文章从认知纠偏到具体行动指南,提供了一个扎实的起点。

本机暂存
IT 2009-12-07 11:27:06 / 累计浏览 6,224

vim(gvim)自动在新标签页中打开文件

这篇文章说的是在Windows系统下使用gvim时,一个不少用户可能遇到的小困扰:我们往往希望新打开的文件能自动在标签页(Tab)里打开,而不是每次都新开一个独立的窗口。作者从这个实际使用习惯出发,给出了通过修改gvim配置文件来实现这一效果的具体方法。 核心思路是调整gvim的启动行为与标签页管理机制,让文件打开命令默认指向标签页而非新窗口。虽然文中提到的方法可能涉及简单的配置语句,但它精准地解决了一个让工作流变得更顺畅的细节问题。对于习惯在Windows环境下使用gvim并追求高效标签管理的用户来说,这提供了一个直接可操作的解决方案。

本机暂存
IT 2009-12-02 09:25:12 / 累计浏览 3,182

如何在AIX中编译Perl

这篇讲的是在AIX系统中编译Perl语言的完整流程。作者从AIX作为IBM专有Unix环境的特殊性切入,对比了与Linux或Windows等平台在编译Perl时的关键差异。核心内容聚焦于AIX特有的挑战,比如需要手动安装和配置依赖库如zlib或libxml2,以及如何调整Perl的Configure脚本来适配AIX的编译器选项,例如使用xlC或gcc的特定标志。文章详细展示了从下载Perl源代码、解决编译错误(如缺少头文件或链接问题)到最终成功构建的步骤,还强调了针对AIX性能优化的小技巧,比如启用多线程支持或调整内存管理参数。对于在AIX上维护或开发应用的技术人员来说,这些具体细节能帮助他们避免常见的安装陷阱,高效地搭建Perl环境。

本机暂存
IT 2009-11-27 17:54:32 / 累计浏览 2,722

ClassName的长命名 VS. 短命名(懒懒交流会记录)

这篇记录源于2009年的一次懒懒交流会PK堂,聚焦于编程中类名命名的常见争议:长命名与短命名。作者从实际编码经验出发,对比了这两种命名风格的核心差异和适用场景。长命名如`UserProfileManager`强调描述性,通过完整词汇传达语义,能提升代码的可读性和可维护性,尤其适合大型项目或团队协作环境,但可能增加输入负担和代码冗余。短命名如`UPM`则追求简洁高效,有利于快速开发和减少打字错误,却可能牺牲自解释性,导致后续理解困难,需依赖注释或上下文支持。 文章通过交流会讨论指出,关键差异在于平衡可读性与效率:长命名在长期维护中优势明显,短命名在性能敏感或原型开发中更灵活。结论建议根据项目需求选择——在开源社区或企业应用中倾向长命名以保障清晰度,在嵌入式或高性能场景中可考虑短命名以优化资源。这种务实视角帮助开发者避免一刀切,培养适应不同代码库的命名习惯。

本机暂存
IT 2009-11-26 17:15:35 / 累计浏览 3,482

Abandonware(孤儿软件) 趣图赏析

这篇讲的是 Abandonware(孤儿软件)这一冷门却有趣的领域。作者从技术产品快速迭代、推陈出新的大背景切入,认为适时回望历史,或许能为当下的工作带来别样的启发。 文章并非进行深奥的技术分析,而是通过作者个人化的分享视角,展示了他收集的几张经典 abandonware 的截图。这些截图可能来自已经停止维护的 Office 97、早期版本的 Windows 95,或是早已消失的即时通讯工具 ICQ 等。作者着重带大家“截图赏析”,体会其中好玩之处,比如过时的界面设计、现已不存在的交互逻辑,或是那个时代特有的功能细节。 通过这些具体的视觉记录,文章让我们直观感受到软件内外的“斗转星移”。它不追求系统的知识梳理,而是用趣味性的呈现,勾起老用户的回忆,也帮助新开发者理解软件演进的脉络,在技术变迁中寻得一份共鸣与思考。

本机暂存
IT 2009-11-24 09:23:19 / 累计浏览 2,403

如何去除XP桌面图标阴影

这篇讲的是很多XP用户都遇到过的小烦恼:桌面图标下面的文字会带有一层灰色的阴影,让原本简洁的桌面看起来有点“脏”。作者直接点出了这个问题,并说明这其实是系统一项默认视觉效果设置所致,而非系统错误。 要解决它,根本不需要任何复杂操作或额外软件。最直接的路径是右键点击桌面“我的电脑”,进入“属性”-“高级”选项卡,在“性能”的“设置”里,找到并取消勾选“在桌面上为图标标签使用阴影”这一项,确认后桌面图标立刻恢复清爽透明。文章还补充了另一种更深入的方法:通过修改主题的样式文件(.msstyles),彻底去掉阴影,这适合希望系统全局统一效果、且对文件修改有一定了解的用户。 整个过程简单明了,从发现问题到给出两种不同层次的解决方案,特别适合刚接触系统个性化设置、想快速让桌面变干净的用户参照操作。

本机暂存