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

最新文章

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

IT 移动开发/ 2013-08-28 22:18:20 / 累计浏览 5,048

Android设计中的.9.png

这篇讲的是 Android 开发中用于适配多分辨率的特殊图片格式——.9.png。文章从解决图片拉伸变形问题的实际需求出发,对比了普通 PNG 与 .9.png 的核心差异。 作者通过图示清晰地拆解了 .9.png 文件外围的四条黑色线条:上、左边线定义可拉伸区域,下、右边线则标定内容显示区域。通过具体按钮的案例,演示了如何正确设置拉伸点以避免图形圆角或边框失真,以及如何划定内容区域让文字排版整齐。 文章还分享了一个实用技巧:若想制作一张不被拉伸的 .9.png,只需将拉伸点标注在透明像素上即可。最后,总结了输出 .9.png 的两种常用方法,并重点强调了两个易导致编译失败的关键细节——边缘像素必须纯黑或全透明,以及文件后缀名的正确格式。

本机暂存
IT 设计/ 2013-08-28 22:16:56 / 累计浏览 1,922

用户研究,别做第三者

这篇讲的是用户研究(用研)在产品团队中常面临的尴尬处境——作者指出,许多用研人员成了团队里的“第三者”:产品经理和设计师沟通密切,而用研却似乎隔着一层面纱,常在项目后期才被请来“验证结论”或“找依据”。 文章剖析了这种现象背后的三个常见问题:用研需求未被识别导致决策靠拍脑袋、用研沦为后期验证工具存在感弱、研究结论出炉时产品已转移方向。作者认为根本原因在于各方对用研角色理解模糊,用研对产品渗透不足,且工作规划未能紧密跟随产品节奏。 核心观点很明确:用研的价值在于解决“典型用户在典型场景下的典型问题”,且应当根据产品生命周期灵活调整重心。例如规划初期关注市场与用户画像,设计阶段聚焦操作流程与方案接受度,发布前进行可用性测试与风险预估。作者特别强调,让用研提前参与关键讨论至关重要——他们积累的跨项目用户洞察能为设计提供早期参考。 文章最终指向一种协作模式的转变:用研不应是被动响应需求的研究员,而应成为主动渗透、持续追踪的产品伙伴。这对如何提升用研影响力和规划前瞻性提出了启发。

本机暂存
IT 设计/ 2013-08-28 22:14:43 / 累计浏览 1,301

用户体验设计 IxDA 香港交流会【2013年8月】

这篇讲的是2013年8月在香港腾讯办公室重启的一场IxDA交流会,活动现场挤满了来自不同行业和背景的用户体验从业者。分享嘉宾们从自身经历出发,探讨了“如何成为一名用户体验设计师”这个核心话题。 一个有趣的比喻被提了出来:传统设计学像西方医学,分科清晰;而用户体验学更像中医,强调整体协调和跨领域知识。因此,设计师的技能模型应该是“T”字型——既要广泛涉猎认知心理学、可用性、交互设计等多领域知识,又要在某一个方向上精通深耕。文章指出,无论你是工程师、平面设计师还是其他背景,都可以通过培养好奇心、观察生活细节,有意识地积累跨学科经验来入门。 文末还分享了一份“经典阅读书单”,从设计理论、可用性到心理学,为不同阶段的设计师提供了具体的进阶路径。整场活动不仅展示了用户体验社群在中文地区的成长,也为从业者提供了实用的成长方法论。

本机暂存
IT 设计/ 2013-08-28 22:12:50 / 累计浏览 2,960

网页设计创新式布局与交互

这篇文章探讨了如何跳出传统网页设计的“矩形框架”,通过创新的布局与交互,打造既引人入胜又具备可用性的网站。作者开篇就指出,虽然构思这类创新设计难度很高,但一旦成功,就能创造出令人着迷的用户体验。 核心观点在于,设计师不应局限于常规的形状、配色或导航模式。文章鼓励从“为什么我们总是用矩形?”和“怎样才能做到与众不同?”两个问题出发进行思考,并给出了几个关键原则:创新必须建立在保证可读性与可用性的基础上;设计要清晰传达网站的核心目的;同时要克制,选择一个有趣的核心创意并深入贯彻,避免元素堆砌。 文中通过五个实例具体阐释了这些原则的应用。例如,Lowdi网站用与产品形态相似的异形色块和弹出式气泡进行互动;Steve Vorass的个人站点巧妙运用了“隐藏式导航”,让图片本身承担导航功能,并通过悬停动画提供反馈。这些案例展示了如何将奇思妙想与清晰的结构、流畅的体验相结合,为设计者提供了从概念到实践的具体启发。

本机暂存
IT 前端/ 2013-08-26 23:09:39 / 累计浏览 3,555

JavaScript 中的陷阱

这篇讲的是JavaScript开发中那些因为语言特性而容易“掉坑”的典型场景。作者从JavaScript“弱语言”的灵活与宽松出发,指出了几个开发者常会忽略的陷阱细节。 比如,全局变量的隐式创建并不局限于省略`var`关键字,`var a = b = 0;`这样的连写同样会让`b`意外泄露为全局变量。文章还深入剖析了“变量提升”与“函数提升”机制——你可能以为在函数里使用`alert`会输出外部变量,但实际结果往往是`undefined`,因为该作用域内的变量声明已被提前解析。函数声明也遵循同样的提升规则,甚至允许后面的声明覆盖前面的,导致行为与直觉相悖。 这篇文章的价值在于,它没有泛泛而谈,而是用一连串精准的代码实例,揭示了JavaScript在变量作用域、解析顺序方面的核心机制。它提醒开发者,要写出健壮的代码,就必须理解这些“坑”背后的语言设计逻辑,养成逐一声明变量、手动管理提升作用域的习惯。

本机暂存
IT 后端/ 2013-08-26 23:04:20 / 累计浏览 2,182

闲扯Nginx的accept_mutex配置

这篇闲扯文章深入探讨了Nginx中一个常被忽略却影响吞吐量的配置——accept_mutex。文章从它的基本作用说起:启用时,新连接到达只会唤醒一个worker来处理,从而避免“惊群问题”;禁用时则所有worker都会被唤醒,虽可能导致性能损耗,但Nginx作者Igor Sysoev指出,由于Nginx的worker进程通常较少(几十个),惊群影响其实有限。 文中对比了启用与禁用accept_mutex的场景:启用更像“主动喂小鸡”,在资源稀缺时(如连接数少)高效且稳定;禁用则像“撒粮让鸡抢”,当访问量大时能提升整体吞吐量,尽管可能增加上下文切换(可通过sar -w观察)。作者引用Igor Sysoev的解释,强调这与Apache(动辄上百进程)不同,Nginx因进程少而更灵活。 基于这些分析,文章最终建议:对于高流量网站,关闭accept_mutex是值得考虑的优化选择,以平衡惊群风险与系统性能。整体从具体配置出发,用生动比喻和权威引用,提供了清晰的实践指导。

本机暂存
IT 数据库/ 2013-08-26 23:03:44 / 累计浏览 2,991

Impala:新一代开源大数据分析引擎

这篇讲的是Cloudera推出的Impala,一个旨在解决Hive查询速度瓶颈的开源大数据分析引擎。文章详细拆解了Impala如何借鉴Google Dremel的思想,采用列式存储(Parquet格式)和多层查询树架构,摆脱MapReduce的批处理束缚,从而在交互式查询上实现数量级的性能提升。 作者将Impala与同期的Shark、Apache Drill进行了横向对比。Impala的优势在于相对成熟的工程实现和快速的查询响应,但其容错机制较弱,且开源生态初期主要绑定Cloudera自家发行版。相比之下,基于Spark的Shark在内存计算和容错性上更有优势,而Apache Drill则更具平台开放性,尽管当时开发进度稍慢。文章通过性能对比图表指出,尽管Impala和Shark都远超Hive,但与Amazon Redshift等商业MPP数据库仍有差距。 文章的最终观点是,大数据分析的未来不在于某一技术的独胜,而在于Hadoop生态(如YARN)将兼容并包,让不同引擎各司其职——Impala这类系统擅长秒级交互查询,而MapReduce则继续处理大规模批处理任务。这场技术竞争正推动大数据分析变得更成熟、易用和普惠。

本机暂存
IT 移动开发/ 2013-08-26 23:02:17 / 累计浏览 2,227

从易信看大公司标配与虎口夺食

作者从网易与电信联合推出易信对抗微信这一事件出发,探讨了在即时通讯领域已被巨头牢牢把控的背景下,一个创业团队仍选择入局的意义与风险。 文章首先抛出核心困惑:在微信独大、同类产品厮杀惨烈的市场里,“小弟弟们”是否还有机会?作者通过回顾网易过往的多次尝试(如早期“泡泡”项目的兴衰、内部保密项目的无疾而终),揭示了大公司的典型打法——依靠资源与价格战进行“虎口夺食”,风险可控却难以真正创新。 文章进一步剖析了两种可能:其一,某些产品如博客、微博,即使做不成第一,也可能成为大公司生态的“标配”功能,服务于自身内容运营;其二,通过对市场进行细分(如早期网易博客的差异化路径),寻找未被完全满足的需求。然而对于关系链至上的IM产品,这条细分之路异常艰难。 对于创业团队,作者也指出一条可能的出路:若能在巨头的夹缝中成功细分市场,即便份额不大,未来也可能被大公司收购。最终,文章以一种冷静的观察者视角收尾,提出在微信如此稳健的攻势下,创新和细分都面临巨大挑战,留给读者对“红海”市场生存策略的深层思考。

本机暂存
IT 设计/ 2013-08-26 22:57:15 / 累计浏览 2,206

当你需要向用户解释时,就已经输了一半

这篇讲的是,在成熟市场中,与现有巨头竞争的常见误区与突围思路。 作者从一次企业战略规划讨论出发,观察到许多创业者的核心逻辑是“我的产品或服务比他们更好”,并试图通过这点切入市场。然而,作者犀利地指出,当你需要向用户解释“为什么我比对手好”时,就已经输了一半。这种比较无形中确立了对手的领先地位,并且在信息爆炸的时代,微小的、需要解释的改进点很难形成记忆点和自传播力。 作者认为,当产品在同数量级难以形成颠覆性差异时,真正的机会在于“跳出问题看问题”。与其在对手设定的赛道上比拼,不如寻找完全不同的切入点。文章列举了多个案例:Tesla重新定义了高端电动车的目标用户,360用免费模式颠覆了安全软件市场,小米用“卖电脑的方式”卖手机,以及51信用卡管家通过自动解析账单邮件解决了录入痛点。这些成功案例的共同点在于,它们都避免了直接的“比较”,而是在商业模式、用户群、产品逻辑或传播渠道上实现了创新。 最终,文章为身处其中的创业者和产品经理提供了一个清晰的思考起点:不要问“如何做得比他更好”,而要问“为什么一定要按他的路走”。

本机暂存
IT 开发者/ 2013-08-26 22:55:36 / 累计浏览 4,946

又是一年校招时 – 关注简历书写的细节

这篇从技术招聘方的视角出发,基于实际筛选数十份校招简历的经验,总结了直接影响简历通过率的16个关键细节。作者为每一项建议设置了加分值,让要点的重要性一目了然。 其中,拥有高质量的技术博客、开源项目或实际产品,以及获得ACM等重量级竞赛奖项,被视为最具竞争力的亮点,单项加分高达9分。相比之下,简历文件名的规范、排版专业性、是否有英文版等细节虽然单项分值不高,却能体现候选人的做事习惯和细心程度。 文章也直指常见误区:简单罗列课程或参与过的项目往往无效;使用“全程参与”、“持续参与”等模糊描述无法展现个人贡献;技能栏仅写“了解”或“熟悉”难以获得面试官认可。对于硕士生,明确“精通”或“深入研究”某项技术更为重要。 对于本科生,作者建议更需主动挖掘和突出一两个技术亮点。整体上,这份清单提醒求职者,一份好的简历是精准的自我营销,需要站在筛选者的角度,用具体成果和清晰表述来争取机会。

本机暂存
IT 算法/ 2013-08-26 22:54:50 / 累计浏览 3,427

线性代数的妙用:怎样在Windows画图软件中实现28度旋转?

这篇讲的是如何在Windows画图软件中实现28度旋转。作者从画图软件通常只支持90度整数倍旋转的限制出发,展示了如何利用“扭曲”功能近似实现任意角度旋转。具体方法是连续执行三次扭曲操作:先水平扭曲-14度,然后垂直扭曲25度,最后再水平扭曲-14度,这样就能让选中区域逆时针旋转28度。 背后的实现思路基于线性代数。水平扭曲相当于对图像各行进行平移,对应一个切变矩阵;垂直扭曲类似,但矩阵形式略有不同。通过将这三次操作连续应用,其复合矩阵近似于标准的旋转矩阵。由于垂直扭曲需要使用正切值来模拟旋转矩阵中的sin值,当θ=28°时,sin(28°)≈0.469,而最接近的正切值是tan(25°)≈0.466,因此第二步填入了25度作为垂直扭曲角度。 这种方法的巧妙之处在于高效且无需额外内存:每次扭曲只涉及像素行或列的平移操作,算法简单易实现。文章提到,这是Alan Paeth在1986年提出的经典算法,展示了线性代数在简单软件中的实用妙用。尽管存在微小误差,但结合画图软件的缩放功能,还能设计更灵活的旋转方案,为读者提供了进一步探索的空间。

本机暂存
IT 设计/ 2013-08-26 22:53:32 / 累计浏览 2,125

用户体验设计遇见色彩情感

这篇讲的是色彩如何在用户界面设计中成为影响认知、情感与决策的关键因素。作者从色彩的基础知识切入,解释了色相环以及红、黄、蓝三原色各自携带的象征意义与情感联想,比如红色代表警示与热情、蓝色传递可信与专业,并指出色彩的运用需要结合文化背景与使用场景。 文章的重点在于色彩的实际应用策略。它通过引用KISSmetrics的调查数据,揭示了男女用户在蓝色、绿色、黑色和紫色等颜色上的喜好偏差,提醒设计师需要考虑受众差异。更具说服力的是,文中列举了美国数字营销公司Hubspot的一项A/B测试:在内容完全相同的两个页面上,仅将按钮从绿色改为红色,点击率便提升了21%。这个反直觉的案例生动地说明了,色彩的选择并非基于设计师的个人好恶,而能直接、有力地影响用户转化率。 总的来说,文章将色彩理论与具体的交互设计实例相结合,强调了色彩作为“第一视觉语言”,在建立品牌印象和引导用户行为中的决定性作用。

本机暂存
IT 设计/ 2013-08-26 22:51:24 / 累计浏览 2,107

网站十五种最差的用户体验

这篇文章从网站产品经理的视角出发,直接点出了15个最常见却也最伤用户的“体验地雷”。它没有空谈理论,而是用具体的例子拆解了那些让用户默默关掉页面的坏设计:从30秒还没加载完的首页,到根本找不到返回按钮的“孤立页面”,再到满屏的弹窗和过时的信息。 作者还引用了早年的用户行为数据——超过90%的人只看第一屏内容就认为看到了全部——来强调页面过长、导航不友好的致命性。这些细节直白而犀利,比如点出使用“_blank”过多会占满计算机资源,文件名过于复杂会影响搜索引擎抓取和用户缓存记忆。 它像一份清晰的排雷清单,帮从业者快速自检。无论是死链接、滥用新技术,还是缺少互动与视觉层次,文章都指出了问题背后对PV、回访率和品牌形象的直接影响。对于想提升网站体验的团队来说,这份清单能让读者避开那些最常被忽视的“体验地雷”。

本机暂存
IT 前端/ 2013-08-21 13:30:53 / 累计浏览 8,012

程序员眼里IE浏览器是什么样的

这篇讲的是程序员如何用幽默解构曾经的浏览器霸主IE。文章没有做严肃的技术评测,而是收集了一系列广为流传的搞笑图片,从“反射弧有点长”到“如何区分HTML与HTML5”,再到不同浏览器的用户画像,用一个个生动的梗图勾勒出IE在程序员心中的形象——反应慢、兼容性差、总像没睡醒的“学渣”。 这些看似戏谑的调侃,其实精准地指向了IE衰落的核心原因:在Web标准快速演进的时代,它固步自封,更新迟缓。文章以轻松的方式提醒我们,这些笑话不仅是吐槽,更反映了开发者们对一个开放、标准、高性能的Web环境的集体追求。

本机暂存
IT 后端/ 2013-08-21 13:29:15 / 累计浏览 1,843

在线状态服务在网站系统中的应用

这篇讲的是如何为一个百万级同时在线、日均亿级PV的网站构建高效的在线状态服务。作者从前篇Facebook聊天架构分析中提取出“在线状态服务器”这一通用模块,指出在普通网站中,它主要维护用户活跃列表,通常通过客户端定时发送心跳包来实现。 挑战在于,当用户量巨大时,服务需要承受极高的心跳包请求压力。文章对比了三种实现思路:最常见的PHP+MySQL方案会因数据库成为瓶颈;改用Redis虽能缓解存储压力,但PHP本身处理能力有限;最终,作者提出用C/C++开发专用HTTP服务器,整合精简协议处理与高速内存数据结构,结合libevent等库,有望在单机上轻松达到每秒万级请求的处理能力。 文章从实际性能瓶颈出发,逐步推导出一个针对性的技术方案,不仅分析了不同技术栈的优劣,也给出了具体的性能预期。文末作者还邀请有兴趣的开发者一起交流实现。

本机暂存
IT 移动开发/ 2013-08-21 13:27:58 / 累计浏览 2,061

创造流动的瞬间—探讨移动端交互动效设计

这篇文章从iOS 7这一标志性设计变革说起,探讨了移动端交互动效如何从“可有可无”的装饰,转变为塑造产品体验、跨越用户心中“情感阀值”的关键要素。 作者详细拆解了iOS 7中那些“创造流动的瞬间”:3D视差带来的景深、模拟现实物理运动的拟真动画、气泡碰撞的弹性效果、体现空间感的缩放与手势跟随。文章不仅停留在描述,更深入剖析了动效的五大核心作用:通过流畅过渡组织界面的时间演进、利用高效反馈减轻用户等待焦虑、增强“直接操纵”的直觉感、巧妙引导隐藏功能,以及最终升华品牌体验与情绪表达。 在此基础上,文章提出了一套实用的设计原则:顺应轻动画趋势、遵循自然运动规律、重视应用内整体动画编排、平衡效果与性能,并强调“恰到好处,服从体验”这一黄金法则。为了将这些理论落地,作者团队还实践性地开发了一款“交互动效库”工具,通过分类收录200余段视频案例,为设计师提供灵感、为开发提供参考代码,解决了动效设计在协作流程中的痛点。

本机暂存
IT 后端/ 2013-08-21 13:26:08 / 累计浏览 4,852

Linux内核协议栈对于timewait状态的处理

这篇文章从一次生产环境的运维问题切入,详细剖析了Linux内核从2.6.18升级到2.6.32后,系统TIME_WAIT状态连接数显著增多的根因。作者的核心工作是对两个版本内核的代码进行diff,精准定位到了`net/ipv4/inet_timewait_sock.c`文件中的一处关键变更。 问题的核心在于`inet_twdr_hangman`函数里,一行负责轮转回收槽位的代码`twdr->slot = ...`的位置被移动了。在旧版本中,无论当前槽位(slot)的timewait块是否被完全清理,该自增操作都会执行;而在新版本中,它被放入了一个条件分支,仅当当前槽位被成功清空时才执行。这个看似微小的时序调整,改变了内核回收timewait块的调度逻辑,最终导致了回收变慢和积压。 文章不仅给出了结论,更通过分析`inet_timewait_death_row`数据结构与`inet_twdr_hangman`的定时回收机制,完整还原了问题发生的底层路径。对于需要理解TCP连接生命周期管理,或是面临类似内核升级后网络连接数异常的工程师来说,这篇深入源码实现的排障手记提供了非常具体的思路和技术细节。

本机暂存
IT 移动开发/ 2013-08-21 13:24:10 / 累计浏览 2,256

[译文]关于移动Web性能的5个神话

Sencha的CEO Michael Mullany撰文回应了此前引发热议的“移动Web应用为何慢”一文,他指出该文数据虽基本正确,但解读存在偏差且忽略了更关键的图形性能。文章系统驳斥了五个关于移动Web性能的常见误解。 首先,移动Web性能瓶颈主要在于浏览器渲染优化、DOM操作和GPU加速,而非JavaScript本身。其次,过去四年超过50%的JavaScript性能提升源于软件优化,而非单纯依赖硬件升级。再者,移动浏览器性能远未停滞,不同浏览器在各自领域存在10倍以上的差距,优化空间巨大。同时,未来的硬件迭代将通过更快GPU、内存带宽和多线程并行化持续带来性能飞跃。最后,现代浏览器采用的增量垃圾收集机制已大幅改善停顿问题,垃圾回收不再是无法逾越的性能杀手。 作者结合iOS和Android设备长达四年的性能测试数据,展示了JavaScript与DOM操作性能的显著提升,这些进步远超摩尔定律预期。文章强调,优秀的开发者使用现代Web框架能够构建出体验流畅的移动应用,性能的持续进化让开发者对移动Web的未来充满信心。

本机暂存
IT 设计/ 2013-08-21 13:19:21 / 累计浏览 1,967

普通设计师与顶级设计师的区别是什么?

这篇讲的是顶级设计师与普通设计师的核心区别。作者从自己认识的几位国内优秀设计师出发,观察到他们的出色并不源于某种神秘的方法或工具,而在于一些基础但关键的品质。 首先是极致的热爱与专注。文章举了一位游戏模型设计师的例子,他能为一条模型的布线完美修改两年,这种近乎偏执的打磨精神是很多设计师所缺乏的。其次是深刻的同理心与尊重。优秀设计师能看透需求背后的人与矛盾,他们会调整工作习惯以配合队友,甚至会为保洁阿姨方便打扫而主动整理好自己的桌面。最后是可贵的谦卑与持续学习的习惯,即使能力已很突出,仍自发地拓宽视野,每天坚持阅读大量行业资讯并动手练习。 作者最后点明,优秀与否根本上是人的性格、习惯与责任心的差别。这些特质经时间积累,会转化为设计师的格局与气场。对于设计从业者而言,与其寻求捷径,不如先审视自己是否具备了这些“普通”却又难坚持的品质。

本机暂存
IT 后端/ 2013-08-21 13:18:12 / 累计浏览 3,094

你应该更新的Java知识之Optional

这篇讲的是Java中一个常见却恼人的痛点:空指针异常(NPE)。作者从“Null Sucks”这句名言切入,指出传统上为了防御NPE而编写的判空代码,不仅冗余,还极易因疏忽而遗漏,导致程序崩溃。 文章的核心是介绍一种更优雅的解决方案:Optional。它并非简单替代if-null检查,而是通过封装可能为null的对象,强制调用者在使用前必须处理其“存在与否”的状态。作者具体展示了如何使用Optional.absent()、Optional.of()等方法创建对象,并演示了其链式调用如何轻松实现“若为空,则使用默认值”的逻辑,例如`person.or(manager).doSomething()`。 与需要为每个类定制的“空对象模式”相比,来自Guava库的Optional方案更为通用和轻量。虽然代码行数没有减少,但它将“是否为空”的判断从隐式的编程习惯,提升为了显式的、由类型系统保障的编码规范,从而在根源上提升了代码的健壮性。

本机暂存