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

最新文章

采集自各技术站点的近期文章。

IT 前端/ 2013-07-07 17:59:07 / 累计浏览 2,767

IE10 CSS Hack(顺便聊聊IE11的CSS Hack)

这篇来自CSS88的文章,聚焦于开发者在实际项目中遇到的IE10 CSS兼容性难题。作者从同事反馈页面在IE10(甚至IE9)下出现异常的问题出发,系统梳理了针对IE10的CSS Hack方案。 文章核心介绍了两种实用检测方法:一是利用IE私有的条件编译(@cc_on),结合条件注释,为IE10添加专属的class,从而编写隔离样式;二是通过JavaScript检测`document.documentMode`属性,动态判断IE版本。作者还分享了针对IE11预览版不支持@cc_on这一变化所作出的代码调整思路,体现了方案的延续性。 文末附有不同模式下的效果截图和具体代码示例,为处理类似浏览器兼容性问题提供了清晰、可操作的实用思路。

本机暂存
IT 数据库/ 2013-07-07 17:58:18 / 累计浏览 4,405

Oracle Database 12c架构图

这篇讲的是Oracle Database 12c的架构全景图。作者提供了两张高清图表,一张完整勾勒了12c的整体架构,清晰地展示了所有关键组件以及它们之间的关系,特别是那些在新版本中引入或调整的后台进程,并简要说明了它们的工作原理。另一张则专门聚焦于12c最引人注目的特性——多租户(Pluggable Database)架构。这张大图详细描绘了容器数据库(CDB)与可插拔数据库(PDB)之间的交互逻辑,将这种能大幅提升资源利用率和管理效率的新模式,以可视化的方式呈现得一目了然。对于需要快速理解Oracle 12c技术演进方向、或正在规划数据库升级的团队来说,这两张图提供了非常直接的架构参考。图文结合的方式,让抽象的数据库内核设计变得直观可感。

本机暂存
IT 算法/ 2013-07-07 17:56:41 / 累计浏览 2,658

与Google拼音的工程师聊聊中文滑行输入

这篇讲的是作者因Google拼音输入法新增中文滑行功能,与负责该产品的工程师在微博上展开的一场产品辩论。讨论从实际体验出发,核心聚焦于中文输入法的创新路径:是追求如“搜狗拼音”般能改变用户习惯的质变,还是应尊重既有输入习惯进行渐进优化。 作者认为,滑行输入若想取代根深蒂固的九宫格习惯,效率需有颠覆性提升(如两倍以上)。而工程师则澄清,滑行输入的目标用户是全键盘群体,并非为替代九宫格;创新的关键在于“在不彻底变革用户习惯的前提下,一小步提升效率”,并以QWERTY键盘沿用至今为例,说明习惯的顽固性。 这场对话生动展现了产品经理与用户视角的差异:前者关注现有用户群的体验优化与市场细分,后者则从颠覆性创新和新商业可能的角度出发。最终,双方都认同微博是收集真实反馈的宝贵渠道。这段交锋也让读者思考:技术功能迭代时,如何平衡提升效率与尊重用户固有习惯,这或许比单纯追求算法先进性更值得琢磨。

本机暂存
IT 后端/ 2013-07-07 17:55:03 / 累计浏览 3,901

回调还是消息队列

这篇文章从作者封装Hive socket库时遇到的一个具体问题切入:如何处理底层`poll` API产生的事件。直接注入回调函数虽然直接,但容易引发异常、重入等不可控问题,且会加剧C/Lua边界的性能负担。 作者提出的方案是将事件及数据一次性返回给Lua层处理。为优化此方案可能带来的GC压力,他采用了一个预先传入的消息队列(一个空的Lua table)作为接收结构。在C层,通过高效的`rawseti`操作将消息逐条写入这个结构,并巧妙地利用一个缓存池来复用存储每条消息参数的小table,从而在系统稳定后避免了临时构建大型Lua表。 文章最后,作者还附上了一段极简的Lua消息队列实现代码,展示了其优雅的实现思路。整体而言,文章分享了一个从具体问题出发,在性能与可控性间权衡并最终优化实现的技术决策过程。

本机暂存
IT 设计/ 2013-07-07 17:53:01 / 累计浏览 4,571

IoC/DIP其实是一种管理思想

这篇讲的是,作者如何从一个简单的技术概念出发,最终揭示其背后更普适的管理智慧。文章以“开关控制灯泡”的经典例子,解释了控制反转(IoC)和依赖倒置(DIP)的核心:让灯泡这类设备去依赖开关定义的标准电源接口,而非让开关去适配每一个具体的灯泡。 但作者并未止步于此。他将视角拉远,展示了这一思想在商业与管理中的广泛应用:银行在买卖双方间提供担保交易模型,是将对彼此的直接依赖反转到对标准接口的依赖;海尔通过制定分销商标准,让渠道反过来适应自己,而非疲于应对多变玩法。这些案例清晰地勾勒出,IoC/DIP超越了代码层面的设计模式,成为一种破解复杂协作、降低耦合的管理框架。 在文章后半部分,作者将这一思想具体带入技术团队的日常挑战中。无论是前端团队制定组件标准让后端接入,还是云平台要求底层资源遵循统一管控模型,抑或是订单系统通过插件化与工作流引擎来应对业务个性化需求,其内核都是一致的:**制定清晰的标准接口,将控制权和依赖方向进行“反转”**,让协作方基于共同认可的协议进行对接,而非陷入无止尽的需求适配与代码耦合中。 最后,作者借Amazon的SOA实践和个人项目经验再次强调,在跨团队工作中,克制过度的控制欲,学会通过制定标准来倒置依赖,不仅是一种高效的技术方案,更是一种组织协作的智慧。它能将混乱的依赖关系转化为有序的、可扩展的协作结构。

本机暂存
IT 开发者/ 2013-07-06 21:17:49 / 累计浏览 3,796

汇报工作的四个层级

这篇文章讲的是职场中一套实用的汇报方法论,核心是将工作汇报与PDCA(计划-执行-检查-处理)循环相结合,形成了四个清晰的层级。 作者认为,有效的汇报远不止是简单地“告诉领导进度”。它首先强调**计划阶段的汇报**:接到任务后,先别急着埋头苦干,而是要快速形成一个包括时间、资源和步骤的基础计划,并与领导对齐,确保自己从一开始就在“做对的事情”。 在**执行阶段**,汇报的重点是过程同步。对于重要或长周期的任务,需要保持高频率的沟通,确保一切按计划推进,问题能被及时发现和解决。 **检查阶段**则要求汇报从“做了什么”转向“结果如何”,即对成果进行诊断,判断是否满足预期,而不是仅仅罗列已完成的动作。 最后的**处理阶段**是关键,它要求对工作结果进行总结、复盘和提炼,无论是成功的经验、失败的教训,还是需要公司层面推动的系统性问题,都是汇报的重中之重。 文章指出,单纯的执行者容易忽视计划和处理层级的汇报,而优秀的员工和管理者则深谙其道。掌握这四个层级的汇报技巧,其最终目的不是为了沟通而沟通,而是通过持续对齐目标、复盘过程,确保个人工作始终与组织战略方向保持一致,从而真正提升效能,实现独当一面。

本机暂存
IT 开发者/ 2013-06-25 13:53:38 / 累计浏览 3,686

一些做产品的项目经验:立项、流程、文档

这篇讲的是蝉游记团队在敏捷开发中总结出的一套高效协作方法。作者从立项阶段讲起,强调要快速将想法转化为可讨论的低保真原型,并通过“放置一段时间”来让设计更成熟。 核心经验在于流程管理。一个版本迭代周期控制在3到5周,所有需求、排期和进度都通过Tower来可视化、透明化管理。这使得团队无需频繁开会,每天刷一下Tower就能清晰掌握全局。文档方面则采取极简策略——团队默契后,设计师对着原型出图,工程师对着PSD编码,复杂点才在Tower上备注。唯一严谨的产出是一份近500个测试点的测试用例,它既是质量的底线,也是未来整理规范文档的基础。 作者坦诚,这套高效流程的前提是个人本身具备良好的条理性和规划能力,工具只是将已有的条理放大并沉淀下来。对于追求效率的小团队,这种轻文档、重协作、靠工具透明化的方式提供了非常实际的参考。

本机暂存
IT AI/ 2013-06-25 13:21:05 / 累计浏览 3,058

数据化比大数据更靠谱

这篇讲的是,为什么对实体企业而言,“数据化”比追逐“大数据”更为务实和迫切。作者指出,大数据概念火热,但许多传统行业其实更需要先完成自身业务的扎实数据化,这好比电子商务的核心终究是商务的电子化。 文章核心观点很清晰:企业最终要的是用户,大数据只是决策支撑。海量数据本身价值有限,关键是要理解数据产生的逻辑,并倒推出数据与企业经营、用户行为的内在联系。作者强调,数据化是一个需要培养的决策思维,不会一蹴而就。 那么怎么着手?文章给出了具体路径:从经营业绩数据化开始,让管理者对财务数据敏感起来;到业务模式数据化,例如零售业可通过图像识别技术捕捉线下用户行为;再到用户行为数据化,文中以中坤集团将景点数字化、提升游客体验为例;最后落实到员工管理的数据化。 作者提醒,数据化的另一关键是与移动互联网、物联网的融合,因为这提供了与用户深度绑定并挖掘数据的最佳机会。总体而言,这篇文章为传统企业提供了一份从理念到实践的“数据化”落地指南,强调数据化对企业经营决策的实际意义。

本机暂存
IT 数据库/ 2013-06-25 13:20:42 / 累计浏览 3,341

企业掘金大数据的两种选择

这篇讲的是企业如何真正将数据转化为利润,而不仅仅停留在“拥有数据”的层面。作者从“很多公司坐拥金矿却不知如何挖掘”的普遍困境出发,明确指出了两条核心路径:一是优化业务流程,二是创新数据产品。 在流程层面,文章强调现代数据科学家需要超越传统Excel和SQL,综合运用统计、机器学习等工具。例如通过分析SaaS高端客户特征来优化营销,或像Target那样建立预测模型识别潜在消费群体。在产品层面,除了直接出售数据(如Twitter授权DataSift),更多公司是将数据智能融入产品,比如广告平台精准投放、电商推荐系统提升购买率,或媒体网站个性化内容展示。 文章最后给出了具体行动指南:企业应尽可能全量保存各类原始数据,根据规模聘请或培养数据科学家团队,并考虑将自有数据产品化。而这一切成功的基础,在于管理层必须建立以数据为导向的决策文化。

本机暂存
IT 前端/ 2013-06-21 00:05:59 / 累计浏览 3,499

谈谈 jQuery 中的防冲突(noConflict)机制

这篇讲的是如何优雅解决多 JavaScript 框架混用时对 `$` 符号的争夺问题,核心是解读 jQuery 的 `noConflict` 机制。 当项目同时引入 jQuery 和其他库(如 KISSY、Prototype)时,大家都喜欢用 `$` 作为快捷方式,冲突在所难免。作者从这个实际痛点出发,拆解了 jQuery 的应对之策:它通过 `jQuery.noConflict` 方法,允许开发者主动释放对 `$` 甚至 `jQuery` 对象本身的控制权。 文章深入源码,揭示了其实现上的巧妙之处。jQuery 在加载时会预先将 `window.jQuery` 和 `window.$` 保存在私有变量中。调用 `noConflict` 时,正是通过对比这些备份,决定将控制权“归还”给之前的占有者。那个可选的 `deep` 参数,就决定了是只交出 `$`,还是连同 `jQuery` 本身一并交出。 这种设计不仅适用于框架混用,也为 jQuery 多版本共存提供了解决方案。文章最后还给出了一个非常实用的技巧:通过闭包包裹代码,并传入 `noConflict` 返回的 jQuery 对象,可以在局部安全地恢复 `$` 的用法,让现有插件无缝工作。整个机制体现了 jQuery 在 API 设计上对复杂运行环境的周全考量。

本机暂存
IT 前端/ 2013-06-19 23:36:50 / 累计浏览 8,389

浏览器的渲染原理简介

这篇讲的是浏览器如何把代码变成屏幕上可见页面的全过程。作者从那篇著名的《How Browsers Work》出发,指出其虽好但过于冗长,且对日常工作的直接帮助有限。于是他提炼出了一个更精简、更实用的版本,目标是让读者在通勤或休息的碎片时间里就能读完,并立刻能用上。 文章的核心是梳理浏览器渲染的几大步骤:解析HTML生成DOM树、解析CSS生成规则树,再由这两者构建出用于实际绘制的渲染树。作者特别拆解了DOM与CSS的解析逻辑,并点出CSS匹配的性能关键在于选择器的写法。最后,他重点区分了Reflow(重排)与Repaint(重绘)——前者因几何尺寸变化而成本高昂,在移动端尤其“痛苦”,后者则相对轻量。文章还直观地列出了哪些常见操作会触发高成本的Reflow,为前端性能优化提供了明确依据。 整个叙述直白且紧扣实战,比如缓存DOM样式引用、理解`display:none`与`visibility:hidden`的不同影响等细节,都能帮助开发者更深入地理解页面性能问题的根源。

本机暂存
IT DevOps/ 2013-06-19 22:51:15 / 累计浏览 6,907

Linux知识:为什么要用字符~来表示home目录

这篇讲的是Linux和Unix系统里一个常见却很少有人深究的细节:为什么用波浪号“~”来表示用户的home目录。答案其实藏在一段计算机硬件的历史里——这个用法直接沿袭自1970年代流行的Lear-Siegler ADM-3A终端机。 文章指出,在这种老式终端上,波浪号“~”键与“Home”键(将光标移至行首)被设计在同一个物理按键上。当Unix系统的开发者需要为home目录找一个便捷的符号表示时,这个现成的、含义紧密相关的按键自然就成了首选。因此,今天我们敲下的“cd ~”,其根源竟是一次跨越数十年的硬件设计传承。文章还配上了该终端机及其键盘布局的实物照片,让这段冷知识变得直观可感。了解这个小小的起源,能让我们对命令行中看似“理所当然”的设计多一分会心一笑的理解。

本机暂存
IT DevOps/ 2013-06-19 22:29:42 / 累计浏览 5,114

正确用DD测试磁盘读写速度

这篇讲的是如何正确使用dd命令测试磁盘读写速度。作者从四种常见的dd测试命令写法出发,对比了它们之间一个关键但容易忽略的差异:对系统写缓存的处理方式。 文章指出,最简单的dd命令(`dd bs=1M count=128 if=/dev/zero of=test`)其实并没有把数据真正写到磁盘上,它只是将数据读入内存缓存,因此得出的速度“超级快”但毫无参考价值。即便在命令后加上`; sync`,由于sync是独立执行的,在开始同步写入前dd早已显示了“假”速度。 真正的区别在于两个参数:`conv=fdatasync` 与 `oflag=dsync`。前者会在dd执行完毕后进行一次完整的同步操作,确保数据落盘,从而测出相对真实的、结合了读写缓存的持续写入性能;后者则强制每次写入1MB数据后都进行同步,几乎完全绕过缓存,模拟的是最慢的、无缓存优化的随机小文件写入场景。 因此,对于评估磁盘的常规读写性能,作者建议使用 `conv=fdatasync` 参数,这样测得的数据最贴近实际工作负载。理解这些细微差别,能帮助我们避免被虚高的测试数据误导,更准确地评估存储子系统的真实性能。

本机暂存
IT 前端/ 2013-06-18 13:57:30 / 累计浏览 5,089

Js事件监听封装(支持匿名函数)

这篇讲的是JavaScript中一个常见但容易被忽视的痛点:如何优雅地取消事件监听,尤其是当使用匿名函数绑定时。作者从实际开发中“想解绑却拿不到函数引用”的困境出发,提出了一套简洁的封装方案。 核心思路是利用一个哈希表(handleHash)作为事件类型的索引,在绑定时不仅执行原始函数,还将内部包装函数的引用缓存到对应的数组中。这样,即使外部是匿名函数,内部通过 arguments.callee(在非严格模式下)依然能获取其引用并保存下来。解绑时,则遍历该数组,逐个移除监听器。 这个方案的巧妙之处在于,它通过一层轻量的“包装”和“缓存”,完全兼容了 addEventListener 与 attachEvent,同时将匿名函数的“不可见引用”问题巧妙地转化为可管理的内部引用,让开发者可以随意使用匿名函数而无需担心内存泄漏或无法解绑。实际使用时,只需像普通绑定一样调用 bind,在需要时用 unbind 按事件名一键清理即可。

本机暂存
IT 开发者/ 2013-06-18 13:53:50 / 累计浏览 4,175

技术领导人需要的一些特质

这篇讲的是技术领导者如何与业务部门有效沟通的真实案例。作者从一位从Oracle来的技术副总身上观察到,技术团队常常陷入一个困境:埋头做出的成果(比如架构改进、技术负债处理)不被业务方理解,导致资源难以获取甚至项目被随意削减。 问题的核心在于,技术团队习惯用“扩展性”“稳定性”这类专业术语汇报,而业务负责人(如COO、PM)需要的是“这能带来什么实际好处”的直观答案。文章以一个组件化项目为例,技术副总一针见血地指出:如果连COO都不知道你在做什么,遇到困难时谁会支持你?他建议用业务语言“营销”技术价值,例如向相关PM明确说明项目能为他们带来的具体收益,从而争取理解和支持。 这种思路也体现在具体管理方法中:将技术负债处理转化为业务能看懂的“Roadmap”计划;推行SCRUM时明确用“猪还是鸡”来界定角色责任,避免模糊地带。作者总结,这位领导者的特质在于总能用双方有直观印象的语言沟通,提问题多像“选择题”而非“主观题”,这背后是清晰的逻辑和事前准备。 对于技术人而言,这篇文章揭示了一个关键点:职位的成长往往不只取决于技术深度,更在于能否将技术价值翻译成组织共识,用对方听得懂的话“卖”出去。

本机暂存
IT DevOps/ 2013-06-18 13:49:07 / 累计浏览 2,208

各就各位,各司其职

这篇讲的是团队中战略与执行如何配合的真实案例。作者从与CEO John和行政负责人Grace的对话切入,呈现了一个看似简单的outing决策背后的复杂落地过程。 John作为领导者,从体验和团队士气出发,直接指出台湾是绝佳选择,忽略了一切执行细节。而Grace作为执行者,则清晰地列出了针对100多人团队的户籍差异、复杂的商务签证流程以及漫长的时间成本。两人的视角截然不同,但又缺一不可——没有John的远见,团队可能永远走不出本地;没有Grace对细节的把握,目标永远只能是纸上谈兵。 文章的核心观点正在于此:一个目标的实现,既需要有人“抬头看路”指明方向,也需要有人“低头拉车”解决具体问题。两者相互体谅、各司其职,才能将看似不可能的任务变为现实。这不仅是项目管理的关键,也是任何高效团队的运作基石。

本机暂存
IT AI/ 2013-06-18 13:48:13 / 累计浏览 2,553

浅谈翻译的两个基本问题

这是一篇探讨翻译本质与常见困境的知识点对比类文章。作者从“翻译是什么”和“直译与意译如何选择”这两个困扰许多新手的问题切入,澄清了两个普遍的误区。 首先,文章指出翻译并非高不可攀的“艺术”,而是一门可通过训练掌握的“技艺”。它同时包含技术(如句型转换规则)、艺术(对文字美感的判断)和科学(运用工具、分析长难句)三个维度。只要在这些方面没有明显短板,普通人都有机会入门并胜任大量实用文本的翻译工作。 其次,针对直译与意译之争,作者通过具体例子(如“muddling along”译为“虚与委蛇”而非简单“等待”)分析了两者的局限:直译有时会生硬难懂,而意译若功力不足则可能偏离原意或丢失文字本身的形式美感。文章给出的核心原则是:以原文性质为准绳。对于新闻、说明书等信息类文本,应以意译为主,确保流畅易懂;对于诗歌等形式本身具有审美价值的文字,则需增加直译的比重,保留原文神韵。 作者认为,这场争论之所以持久,正源于文字同时承载信息与审美的双重功能。解决之道不在于二选一,而在于根据翻译目的和原文特点,找到两者的最佳结合点。

本机暂存
IT 设计/ 2013-06-18 13:45:20 / 累计浏览 2,173

WEB设计中的“帮助用户从错误中恢复”

这篇讲的是WEB产品设计中一个常被忽视但至关重要的点:如何优雅地帮助用户从错误中恢复。文章将用户错误分为“知错”与“不知错”两种情况,其核心差异在于处理方式截然不同:前者需要提供明显的“返回”或“取消”入口来撤销操作,而后者则严重依赖清晰、友好的信息提示进行引导。 对于信息提示,文章引用了Jakob Nielsen的原则,指出好的提示信息需要同时做到五点:明确直接、可理解、措辞礼貌、表达精确、并提供建设性方案。文中以淘宝未登录点击购买时直接弹出登录框而非错误提示为例,说明了如何用更人性化的方式引导用户,而非制造挫败感。 除了文案,文章也强调了交互层面的优化:比如在用户出错后,系统应尽可能保存其已填写的数据,提供及时反馈,并用“选择”代替重复“输入”以减少操作负担。所有这些设计的共同目标是:在用户犯错时,提供一条清晰、友好的“改过”路径,将他们温柔地拉回正轨。

本机暂存
IT 设计/ 2013-06-18 13:44:31 / 累计浏览 1,905

WEB设计中的“操作入口明确”

这篇讲的是WEB产品设计中一个至关重要的原则——“操作入口明确”。作者从电子商务网站信息庞杂、需要高效引导用户的背景出发,强调了清晰、合理的操作入口设计是连接页面枢纽、保障产品“有效性”和用户体验的关键。 文章深入剖析了如何实现这一原则,提出了三个具体方向。首先,通过“强化重点,弱化周边”的视觉布局对比,帮助用户在复杂功能入口中快速锁定目标,就像《唐伯虎点秋香》里需要比较一样。其次,要控制同功能入口数量,避免“过多的选择等于没有选择”,并通过文字或图标让每个入口的功能属性一目了然,类似生活中的指示设计。最后,设计需考虑“新手”、“中间用户”和“专家”等不同用户群体的需求差异,其终极目的都是让用户迅速完成核心任务。 作者总结道,出色的操作入口设计能让用户在信息海洋中自如穿梭,犹如科幻片中的“星际之门”;而失败的设计则会将用户困于迷宫,带来挫败感。这不仅是设计技巧,更是设计师“想用户之所想”的职责体现。

本机暂存
IT DevOps/ 2013-06-17 23:57:16 / 累计浏览 6,865

Linux探索:一次删除一百万个文件的最快方法

这篇讲的是如何在Linux系统下极高效地删除海量文件。作者从一个Quora上的讨论出发,对几种常见的批量删除方案进行了系统性的速度对比。 文章的核心发现令人意外:通常用于数据同步的`rsync`命令,在删除任务中表现极其出色。作者通过两次测评(第二次使用了新硬件和更精确的计时工具)发现,使用`rsync --delete`将一个空目录与目标目录同步,可以在10秒内删除100万个文件。相比之下,传统的`find -delete`、`find | xargs rm`以及直接使用`rm -rf`,耗时都在28秒到41秒之间,性能差距明显。 这种高效的背后,是`rsync`直接操作文件系统索引的高效机制,避免了为每个文件单独发起系统调用的巨大开销。文章不仅给出了具体命令(`rsync -a --delete empty/ target/`),还指出该方法的灵活性——配合`--exclude`参数可以实现选择性删除,并且在删除后保留了原目录结构,方便复用。 对于运维人员或需要处理临时文件、缓存文件的开发者来说,这是一个非常实用的技巧,能显著节省处理时间。

本机暂存