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

最新文章

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

IT DevOps/ 2017-10-15 09:40:17 / 累计浏览 1,007

Mac上iTerm2配置sz, rz远程上传和下载文件

在 Windows 上用 SecureCRT 或 XShell 连接 Linux 服务器时,通过 sz、rz 命令传输文件已是常规操作,但在 Mac 上使用 iTerm2 默认只能依赖 scp。这篇文章提供了让 iTerm2 支持 sz/rz 协议的具体配置方法。 文章首先强调服务器端需安装 lrzsz 工具(例如 CentOS 上使用 `yum install lrzsz`)。在 Mac 端,核心步骤是通过 brew 安装 lrzsz,并下载两个用于处理 ZMODEM 协议的脚本(`iterm2-send-zmodem.sh` 和 `iterm2-recv-zmodem.sh`)。随后,需要在 iTerm2 的 Profile 设置中添加两个触发器:一个匹配 “rz waiting to receive” 时调用发送脚本,另一个匹配特定接收标志时调用接收脚本。配置完成后,iTerm2 就能像 Windows 下的终端那样,通过 sz/rz 方便地进行交互式文件传输了。 整篇文章的思路很清晰,从实际使用场景的差异入手,逐步分解服务器端与客户端的配置要点,最终实现了在 Mac 上复用这套高效的传输方式。

本机暂存
IT 安全/ 2017-10-15 09:38:27 / 累计浏览 2,389

Petya和NotPetya的关键技术性区别

这篇讲的是Petya和NotPetya这两个名字相似、利用方式也相似(均利用永恒之蓝漏洞)的勒索病毒,其内在实现到底有何关键不同。作者从五个具体的技术点切入,为读者进行了一次清晰的“法医式”对比。 两者最细微但关键的区别始于加密使用的XOR密钥:Petya用的是0x37,而NotPetya换成了0x07。随后,在病毒的核心部分Mini-Kernel中,NotPetya移除了那个标志性的红色骷髅显示模块。启动感染第二阶段的方式也不同,Petya调用NtRaiseHardError API强制重启,NotPetya则直接执行了shutdown命令。因此,在最终的表现上,Petya会显示骷髅,NotPetya则不会。它们最后展示的勒索信息文案也完全不同。 文章最后,作者也给出了一个务实的安全建议:面对此类攻击,确保拥有独立的离线数据备份,比支付赎金可靠得多。

本机暂存
IT 后端/ 2017-10-15 09:36:42 / 累计浏览 3,531

如何将树莓派变成电子书服务器

这篇文章讲的是如何用一台树莓派3和开源软件Calibre,在本地网络中搭建一个私有的电子书服务器,特别适合网络条件不佳的环境共享阅读资源。 作者的起点很实际:学校或图书馆需要共享电子书,但可靠带宽并非总能获得。他选择的方案是利用Calibre 3.0(支持浏览器在线阅读)的强大功能,将其部署在低功耗的树莓派上。整个过程并不复杂,核心是在Raspbian系统上安装Calibre,然后配置其内置的内容服务器。 文中展示了从下载系统镜像、通过终端命令安装Calibre,到搜索并添加免费电子书(如从古腾堡计划下载马克·吐温的作品)的具体步骤。关键操作包括启动服务器、用`ifconfig`获取树莓派的IP地址,最后通过同一局域网内任何设备的浏览器访问`IP:8080`端口即可连接。 作者最终在iPhone、Linux和Mac电脑上都测试成功,验证了这个方案的可行性。它把一台廉价的微型电脑变成了一个随时可用的数字图书馆枢纽,对于教育和小团队知识共享场景是个不错的思路。

本机暂存
IT 开发者/ 2017-10-15 09:35:11 / 累计浏览 2,022

我看绩效考核

这篇讲的是绩效考核的反思。作者从几位因绩效差评而感到“整个人被否定”的网友经历切入,引出一个普遍痛点:绩效管理本应聚焦于改进事情,却往往异化为对人的审判。他提出,绩效分应打给项目、产品和团队,而非直接指向个人,并以苏步青、爱因斯坦等早年“成绩不佳”者后来成就卓越为例,说明短期评估的局限性。 文章批判了当前主流KPI模式的弊端——它往往让员工只埋头于数字指标,却忽略了工作的初衷与价值,容易催生短期行为和形式主义。作者对比了近年兴起的OKR(目标与关键成果),强调其应具备“由员工提出、以目标为导向、全员共享”的特性,而非变相成为KPI的工具。他同时指出,考核“价值观”尤其危险,容易上纲上线,扼杀创新与独立思想。 对管理者,文章援引索尼、微软、通用电气等公司逐步弱化或放弃传统绩效考核的案例,提醒应警惕绩效主义对团队文化、创新热情的侵蚀。对职场人,作者的建议是:用平常心看待公司打分,因为它无法定义你的人生;但要严肃对待个人成长,因为这才是根本。他以自己中年离职后靠技术能力独立养家并雇用三名工程师的经历,诠释了何为真正的“绩效”——持续做正确的事,并在合适自己的环境中成长。

本机暂存
IT 后端/ 2017-10-15 09:33:08 / 累计浏览 3,093

【死磕Java并发】—–J.U.C之Java并发容器:ConcurrentLinkedQueue

这篇技术解析深入探讨了Java并发包中非阻塞线程安全队列ConcurrentLinkedQueue的实现原理。文章从线程安全队列的两种实现思路(阻塞与非阻塞)切入,重点剖析了ConcurrentLinkedQueue如何完全基于CAS算法(无锁)来实现其核心操作。 作者详细拆解了该队列必须遵循的四个关键不变性,并阐明了head与tail指针在更新时可以“滞后”的设计特性。全文的核心在于通过逐行解读offer()入列与poll()出列方法的源码,并辅以清晰的步骤图,生动展示了在多线程竞争环境下,新节点是如何被安全添加、以及头部节点如何被识别并移除的。分析中特别指出,像“p == q”这种看似异常的判断,正是处理并发删除与插入操作交错进行的关键所在,巧妙地解决了指针可能因并发更新而失效的难题。 通过这篇文章,读者能直观理解一种高性能并发容器如何在不使用锁的情况下,通过精巧的指针操作和CAS原子指令来保障线程安全与最终一致性。

本机暂存
IT 设计/ 2017-10-15 09:30:36 / 累计浏览 2,357

使用 gka 一键生成帧动画

这篇介绍了一个名为 gka 的开源工具,旨在解决前端开发者在处理序列帧动画时的手工繁琐问题。传统做法下,从设计师拿到一组图,需要手动重命名文件、计算 CSS keyframes 百分比,若使用合图还得逐帧计算位置数据,一旦设计稿修改,整个过程就变得异常痛苦。 gka 提供了一键式的解决方案。你只需提供图片文件夹路径和前缀,它就能自动完成批量重命名、生成对应的 CSS 动画代码以及预览 HTML 文件。工具的核心优势在于其性能优化,内置了图片压缩、合图模式以及相同帧复用功能,能有效减小最终体积。同时,它支持多种输出模板,灵活性强。 从文中的示例可以看出,运行一条简单的命令后,工具能迅速输出一个包含预览页、CSS 文件和规范图片的整洁文件夹。它把设计师交付的、杂乱的图片序列,高效地转化成了可直接部署的动画代码,显著节省了前端开发者的重复劳动时间。

本机暂存
IT 安全/ 2017-10-15 09:27:45 / 累计浏览 3,288

最萌域名.cat背后的故事:加泰与西班牙政府的暗战

这篇讲的是一个看似可爱的互联网域名,如何成为一场政治文化暗战的缩影。 文章从全球猫奴都渴望的“.cat”域名切入,但它并非开放注册——这个“最萌”顶级域名在2004年被授予给了西班牙的加泰罗尼亚自治区,由非营利机构puntCAT严格管理,仅限用于加泰罗尼亚语网站,旨在保存和强化本土文化认同。 核心的冲突在于,这种对“本土”的强调,与西班牙中央政府的统一意志产生了激烈碰撞。当加泰罗尼亚推动独立公投时,语言和网络空间成了没有硝烟的战场。文章详细记述了西班牙警方突袭puntCAT办公室、逮捕其IT负责人,并要求其停止为独立公投相关域名提供解析服务的事件。电子前沿基金会(EFF)对此行动提出了尖锐质疑。 作者通过这个案例提出了一个深刻的观察:在技术领域,域名管理看似中立,实则能成为维护文化独特性或推行统一政策的工具。文章结尾做了一个大胆的推测——若加泰罗尼亚运动被镇压,.cat域名可能被全球开放注册,这虽会是猫奴的盛宴,却也意味着一种文化表达空间的消逝。这个从技术政策延伸至地缘政治的故事,揭示了互联网资源背后复杂的权力博弈。

本机暂存
IT 移动开发/ 2017-09-27 10:19:40 / 累计浏览 2,622

以苹果手机为例,三步查询手机入网工信部信息

这篇讲的是如何提前掌握未发布手机的详细配置。作者以iPhone X为例,介绍了一个数码爱好者都该知道的小技巧:通过工信部的电信设备进网管理网站进行查询。 因为在大陆上市的手机都必须登记入网,所以这个官方数据库其实是一个“新机情报站”。文章的核心就是三步走的操作指南:首先访问“证书查询”页面,然后点击“显示更多查询条件”,最后在指定栏位填入厂商(如苹果)和设备型号等信息。完成后,页面就会列出该品牌所有近期已获准入网的机型列表,包括还未公开发售的新品。 这个方法的妙处在于它的普适性和前瞻性。它不仅能用来查苹果手机,任何在国内有入网计划的品牌和型号都适用。对于想第一时间了解热门新机核心参数(如内存、屏幕尺寸等)的读者来说,这比等待发布会和评测要快得多。

本机暂存
IT 移动开发/ 2017-09-21 17:40:51 / 累计浏览 1,907

智能手机让人类专注力下降为8秒 比金鱼少1秒

微软一项关于人类注意力变迁的研究得出了一个颇具冲击力的结论:在智能手机普及的二十多年间,人类的平均持续注意力时长已从12秒下降至8秒——甚至比许多人印象中“只有7秒记忆”的金鱼(9秒)还要少1秒。这项覆盖2000人调查与112人脑电图分析的研究指出,这一变化与自2000年前后兴起的“手机革命”同步发生,且不分性别与年龄。 研究不仅揭示了问题,也剖析了其复杂性。加拿大西部大学的大脑与思维学院研究人员认为,这种变化本质上源于人类对更多信息的持续渴望。作为适应的结果,我们执行多重任务的能力其实有所提升:尤其是社交媒体用户,他们练就了在短时间内快速筛选信息的能力。但这种能力伴随的代价,是专注力变得断断续续。因此,这篇文章并非简单地批判技术,而是客观呈现了一场深刻的适应性进化——在被海量信息流重新塑造的数字时代,我们的大脑正在学习以一种全新的、跳跃式的模式工作,而这同时意味着对深度、持续思考提出了更高的主动管理要求。

本机暂存
IT 安全/ 2017-09-15 00:48:40 / 累计浏览 2,200

卡巴斯基:执着与固执,成败之间

这篇讲的是老牌安全厂商卡巴斯基的故事,以及它在中国市场从辉煌到落寞的历程。文章从卡巴斯基近期终于推出免费版切入,回溯了这家源自前苏联技术背景的公司,如何与擅长互联网玩法的奇虎360从合作走向分道扬镳。 核心冲突在于两种商业哲学的对决。一边是以“免费是互联网的基因”为信条的360,通过免费策略快速获取用户,构建了全新的流量变现模型;另一边是坚信“没有免费的杀毒软件”、固守付费软件模式的卡巴斯基。作者指出,卡巴斯基对“软件”而非“服务”与“数据”的执着,使其错失了互联网与移动互联网时代占据用户场景的关键窗口。 文章的一个精彩论断是:**“固执和执着很多时候并不能完全地区隔,很多时候对于胜利者而言可以被称作执着,但对于失败者而言大多则被看作是固执。”** 这不仅是对卡巴斯基商业策略的点评,也引发了关于技术理想主义与市场生存法则的思考。对于技术从业者而言,它揭示了在技术变革期,选择哪种“企业基因”去适应趋势,有时比单纯的技术优劣更能决定命运。

本机暂存
IT AI/ 2017-09-14 14:36:38 / 累计浏览 2,621

自动人脸识别基本原理

这篇讲的是人脸识别近40年来的核心算法演进。作者开篇就点明,这个领域融合了计算机视觉、机器学习等多学科知识,算法难以统一分,通常根据输入数据分为基于静态图像和视频图像两大类。 文章重点对比了三类经典的静态图像识别算法。特征脸方法通过主成分分析将人脸投影到一个低维子空间进行匹配,思路直观,但得到的特征在区分不同类别时未必最优。弹性图匹配则更进一步,它用图结构表示人脸,节点编码局部纹理,边记录几何关系,这种方法对光照和姿态变化有一定鲁棒性,但计算代价过高影响了实用。3D形态模型则另辟蹊径,尝试用三维模型参数来描述人脸的形状和纹理,从而更好地处理姿势和光照变化。 针对视频人脸识别,文章梳理了三个发展阶段。早期方法本质是“跟踪后识别”,利用多帧投票来提高稳定性。随后发展出融合声音、步态等信息的多模态系统。最新的方向则是同时在空间和时间维度上建模,直接利用视频中连续的动态特征进行识别。文章也坦诚地指出了视频场景下面临的图像质量低、人脸尺寸小等严峻挑战,这为后续研究指明了方向。

本机暂存
IT 前端/ 2017-03-22 00:01:10 / 累计浏览 2,758

脚本错误量极致优化-监控上报与Script error

这篇讲的是前端监控中一个常见痛点:脚本错误上报后却只拿到一堆无用的“Script error.”信息,无法定位问题。作者以手Q家校群的优化实践为案例,系统梳理了从监控到上报的完整流程。 文章首先厘清了两种核心监控方式:try-catch用于捕获特定代码块的已知错误,而window.onerror则像一张大网,能捕获全局未预料的语法和运行时错误。两者结合,才能高效地构建监控体系。在信息上报环节,介绍了通过动态创建Image标签这类轻量可靠的常见做法。 但文章的重点和亮点在于深入剖析了“Script error”的成因。它揭示了当页面加载并执行跨域脚本(例如CDN上的脚本)时,出于安全策略,浏览器会阻断详细的错误信息传递,只返回一个笼统的“Script error.”。针对这一经典难题,文章指出了根本解法:需要同时在服务器端为跨域JS文件设置正确的CORS响应头,并在客户端为script标签添加crossOrigin属性,这样才能让onerror事件获得完整的错误详情。 对于前端开发者而言,这篇文章的价值在于它不仅讲清了“怎么做”,更讲透了“为什么”,提供了一套可落地的脚本错误监控最佳实践,直接助力提升线上项目的稳定性和问题排查效率。

本机暂存
IT 前端/ 2017-03-11 23:49:46 / 累计浏览 3,042

从工程化角度讨论如何快速构建可靠React组件

这篇讲的是作者从接手一个凌乱的、几乎没有组件复用的业务开始,如何通过工程化手段,系统性地快速构建出可靠React组件的实战经验。文章并非泛泛而谈组件设计,而是聚焦于用规范和自动化来保障效率和质量。 核心方法分为两块:一是建立清晰的目录与命令规范,比如约定好src、dist、example等目录的用途,以及统一start、test、lint等命令;二是搭建自动化工具链,让规范落地。作者详细介绍了如何配置webpack和开发服务器来搭建流畅的组件调试环境,以及如何使用babel或webpack打包library来区分开发依赖与组件依赖,并处理样式文件,最终通过npm publish完成发布。 整篇文章提供了一套可直接复用的组件工程化方案,从目录结构、命令模板到构建配置都有具体示例,对希望提升前端团队组件开发效率与质量的读者有很强的参考价值。

本机暂存
IT 后端/ 2017-03-11 23:48:21 / 累计浏览 1,832

缓存那些事

这篇讲的是缓存体系中的“十八般武艺”。作者从最前端的浏览器缓存头(If-Modified-Since)谈起,带我们看到了CDN层面的不同玩法:CSI、SSI和ESI。文章特别指出了ESI在App接口场景下的适用性,以及在高并发要求下,直接生成静态文件上传CDN的硬核方案。 视线转向应用层,文章拆解了local cache、Redis、Tair构成的多级缓存策略。以当当网交易链路为例,设置了1分钟的本地缓存过期时间,在一致性与性能间取得了平衡。对于开发者常头疼的缓存击穿问题,文章清晰地列举了三种场景:缓存过期、数据不存在和缓存宕机,并分别给出了“加锁防雪崩”、“空对象防穿透”和“DB裸压保底”的实战心法。 此外,文章还延伸到了提升用户体验的pjax局部更新与bigpipe分段输出技术。最后,作者将笔触落到缓存优化的细微处——通过精简Key、使用slim object序列化以及Gzip/Brotli压缩,从一点点缩减对象大小入手,来节省整个缓存池子的资源。这是一份从浏览器到服务器、从架构到细节的缓存实践地图。

本机暂存
IT 前端/ 2017-03-11 23:46:36 / 累计浏览 3,066

Omi应用md2site发布-markdown转网站利器

这篇讲的是腾讯AlloyTeam基于其Omi框架发布的一款名为`md2site`的开源工具。如果你正需要将一堆Markdown文档(比如技术文档、博客文章)快速整理并生成一个结构清晰的网站,它提供了一个轻量而强大的解决方案。 `md2site`的核心优势在于“轻巧”与“开箱即用”。生成的网站除Omi外不依赖任何第三方库,体积非常小。它完整支持Markdown语法,并天生具备响应式布局和多语言能力,只需在配置文件中稍作修改即可切换。代码高亮也做得很细,甚至能支持代码块内特定行的高亮,让技术内容的呈现更加清晰。 使用上非常简单,通过`npm install`安装后,用`md2site init`命令即可初始化项目。在指定的`docs`目录下编写Markdown文档,并在`config.js`中配置好目录树,通过`npm run dev`就能实时预览,`npm run dist`一键打包生成网站。文章最后还展示了其扩展的Markdown语法特性,让生成的文档效果更出彩。 对于想快速搭建技术文档站或个人博客的开发者来说,`md2site`或许是个值得一试的轻量级选择。

本机暂存
IT 后端/ 2017-03-11 23:37:46 / 累计浏览 2,478

分布式程序设计早知道-关于分布式程序设计常见问题分析

这篇讲的是分布式系统设计里那些“小”但影响深远的共性问题。作者从日常开发经验出发,梳理了六个关键点:接口日期该用可读格式还是long型,浮点数传输为何必须转成字符串以避免精度丢失,以及如何设计一个统一的返回值结构(包含status、errorCode、message和data)。 文章着重探讨了幂等性的实现——如何让重复的网络请求不产生副作用,建议为所有接口增加全局唯一的requestId。在接口安全方面,对比了appCode、对称加密和非对称加密三种鉴权方式,分析了它们在多对多场景下的安全性与效率权衡。最后,作者点明了维护数据字典对于解决多团队协作中属性命名混乱的重要性。 这些问题虽不新奇,但一旦忽视,会在系统复杂化后引发大量冗余代码和错误。文章提供了一套实用的设计检查清单。

本机暂存
IT 安全/ 2017-03-01 23:18:42 / 累计浏览 2,168

[PHP 最佳实践]如何处理用户的密码

这篇讲的是 PHP 开发中处理用户密码的安全演进路径。文章从近年来频发的“拖库”事件切入,点明密码作为最隐私的数据,绝不能抱有侥幸心理。它直接指出了许多初级开发者的误区——仅满足于使用 MD5 等简单散列算法,并生动解释了这些算法为何“不及格”:它们本质上是单向散列而非加密,且容易被黑客利用预计算的彩虹表或字典暴力破解。 文章的核心在于层层递进地揭示更安全的做法。它强调了加“盐”(随机字符串)的必要性,即为每个用户的密码在散列前拼接独特随机值,大幅增加字典攻击的难度。但即便如此,面对当今高性能计算机每秒数十亿次的计算能力,传统的 MD5/SHA 系列算法仍显脆弱。 因此,作者引出了专门为密码存储设计的 bcrypt 算法,其计算成本极高,暴力破解速度被限制在每秒几千次,安全性呈指数级提升。文章不仅讲清楚了原理,还提供了直接可用的 PHP 内置函数(如 `password_hash` 和 `password_verify`)示例,并进一步推荐了 Yii 2 框架中更完善的安全组件封装。最终目的是帮助开发者建立从原理到实践的正确密码处理观念,而不仅仅是停留在“知道不能存明文”的层面。

本机暂存
IT 安全/ 2017-03-01 23:17:44 / 累计浏览 2,910

部署 HSTS 提升网站安全性

这篇讲的是通过部署 HSTS(HTTP 严格传输安全)协议来强制浏览器使用 HTTPS 加密连接,从而避免用户首次访问时因 HTTP 跳转而产生的安全风险。作者指出,尽管许多网站已提供 HTTPS 服务,但用户习惯于输入域名,浏览器默认发起 HTTP 请求。这个跳转的瞬间,攻击者可能实施中间人攻击。HSTS 通过服务器在响应头中下发指令,让浏览器记住该域名必须使用 HTTPS,后续访问会直接发起安全连接。 文章详细拆解了开启 HSTS 的三个关键参数:必填的 `max-age` 定义了指令的有效时长(如一年),设置过短会增加暴露风险,过长则可能影响网站故障时的降级处理;可选的 `includeSubdomains` 将策略扩展到所有子域名,但需确保所有子站均已支持 HTTPS;`preload` 则更进一步,将域名预置入浏览器核心列表,实现首次访问即安全,但这也意味着极高的变更代价。 作者提醒,HSTS 依赖客户端行为,配置需谨慎。好消息是,如今各大浏览器已广泛支持,且免费 SSL 证书获取便捷,实施 HSTS 的门槛已大大降低,是提升整体互联网安全环境的有效手段。

本机暂存
IT 后端/ 2017-03-01 23:15:47 / 累计浏览 3,707

【死磕Java并发】—–Java内存模型之happend-before

这篇深入探讨了Java并发编程中一个关键却容易混淆的概念:happens-before原则。作者从多线程环境下变量修改的可见性问题出发,解释了JMM如何通过happens-before来建立内存可见性的保证。 文章系统梳理了happens-before的八大核心规则,例如程序次序规则(单线程内操作有序)、volatile变量规则(写操作对后续读操作可见)以及锁定规则(解锁先于加锁)。除了这些JVM原生规则,作者还列举了诸如线程安全集合操作、Future.get()等场景下的六条推导规则,构建了完整的判断体系。 为了帮助理解,文章通过简单的代码示例,一步步演示了如何应用这些规则来判断一段非同步代码是否存在线程安全风险。它明确了happens-before的本质:它并非强制操作顺序,而是保障了在存在该关系时,一个操作的结果对另一个操作的可见性。这为我们在并发编程中分析数据竞争、设计线程安全代码提供了根本依据。

本机暂存
IT 后端/ 2017-03-01 23:14:25 / 累计浏览 2,243

MAMP Pro 里面自带的 PHP 命令行执行特别慢的问题

这篇讲的是作者在 Mac 上使用 MAMP Pro 开发环境时遇到的一个颇为古怪的问题:升级系统后,命令行执行 PHP 命令会异常缓慢。作者尝试用 dtruss(Mac 下的系统调用追踪工具)进行调试,但未能定位到具体卡顿点。 经过查阅资料,发现问题根源在于某些 PHP 调用会触发不必要的 DNS 查询,导致执行延迟。最终的解决方案出人意料地简单:在 Mac 的 hosts 文件中,为自己的计算机名添加了本地解析条目。具体操作是,在 `127.0.0.1` 和 `::1`(IPv6)后添加形如 `YourComputer.local` 的主机名(主机名需在系统偏好设置的“共享”面板中查看)。设置完成后,PHP 命令行的执行速度恢复正常,可谓“药到病除”。 文章通过作者亲身实践的调试过程与最终验证的解决方案,为遇到类似 MAMP Pro 环境下命令行迟钝问题的开发者,提供了一个清晰且可直接操作的排查思路和修复方法。

本机暂存