IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者
首页 / 某人的栖息地
IT 2013-05-20 23:14:49 / 累计浏览 2,980

使用xctool自动打包,测试xcode项目

这篇讲的是如何用Facebook开源的xctool命令行工具,来简化和优化Xcode项目的构建与测试流程。 作者开篇直接点明,xctool是用来替代苹果官方xcodebuild工具的利器。它的核心优势很清晰:一方面,它能像Xcode一样执行测试,但输出结果是结构化的,更适合自动化脚本解析;另一方面,它的编译输出带彩色高亮,可读性远超传统工具,能让你更快定位到构建错误。 文章随后给出了最实用的部分:通过`brew install xctool`即可轻松安装。而日常使用只需掌握三个核心命令——`archive`打包、`build`构建、`test`测试。每个命令都附带了明确的参数示例,指向工作区(.xcworkspace)和计划(Scheme),照着替换就能立即上手。 整体来看,这篇文章为iOS开发者提供了一个清晰的“工具升级”路径。它没有停留在功能介绍,而是快速引导你完成从安装到基本使用的全过程,有效降低了尝试新技术工具的门槛。

本机暂存
IT 2013-03-03 22:46:36 / 累计浏览 3,540

vimari – safari下的vimium扩展

这篇讲的是作者在Safari浏览器中“拯救”自己习惯的故事。对于用惯了Chrome下Vimium键盘流插件的用户来说,切换到Safari后失去快捷键导航会非常不适应。作者寻找并找到了一个解决方案——vimari。 Vimari本质上是一个从Chrome版Vimium移植而来的Safari扩展,其核心代码大量基于Vimium,目标是为Safari用户提供类似的、基于键盘的网页浏览体验。文章特别强调了它的轻量化定位,即从Vimium中提取最适合Safari的部分功能。 文章提供了实用的配置细节:例如,将“Modifier key to precede commands”选项留空后,按下“f”键就能直接列出并跳转页面链接,复刻了Vimium最经典的操作。作者也给出了关键提醒——安装扩展后务必第一时间升级到最新版本,以解锁全部可定制选项。通过几步简单调整,就能在Safari中找回熟悉的键盘导航效率。

本机暂存
IT 2012-03-11 22:40:22 / 累计浏览 3,460

iPhone中png图片格式处理

这篇讲的是如何还原iPhone应用中被“优化”过的png图片。我们知道,苹果在打包App时会对png资源进行特殊压缩以减小体积,导致这些图片无法用常规看图软件直接打开。作者从这个实际问题出发,找到了基于Xcode命令行工具`pngcrush`的解决方案。 核心方法非常直接:通过添加`-revert-iphone-optimizations`参数,就可以将处理过的png反向还原成标准格式。为了克服命令行过长的问题,作者还分享了在终端配置alias的技巧,让操作变得更顺手。文章更进一步,提供了一个简单的shell脚本,能够一键批量转换整个文件夹内的所有png图片,这对于需要处理大量素材的开发者来说相当实用。 整个方案不依赖任何第三方图形工具,完全基于系统自带的环境完成。对于偶尔需要检查或提取iOS应用资源,或者在分析竞品UI时遇到图片无法查看的情况,这个方法提供了一个清晰、可复现的路径。

本机暂存
IT 2011-11-13 21:23:28 / 累计浏览 3,820

php的异步http请求类

这篇讲的是作者如何解决PHP中同步HTTP请求阻塞程序的问题。基于之前对libevent扩展的探索,作者构建了一个异步的HTTP请求类,核心思路是利用事件循环机制来处理网络I/O。 作者没有选择传统的多进程或cURL轮询,而是直接深入底层,利用libevent的事件驱动模型。这意味着程序可以非阻塞地发起多个HTTP请求,并在等待网络响应的同时处理其他逻辑,显著提升了并发性能。这种实现方式在需要批量抓取数据或调用多个API的场景下尤其有效。 文章的巧妙之处在于,作者将复杂的底层事件循环封装成了简洁易用的类接口,让其他开发者也能相对轻松地在自己的PHP项目中实现异步操作。对于受困于同步请求性能瓶颈的开发者而言,这提供了一个实用且思路清晰的解决方案。

本机暂存
IT 2011-11-06 22:44:24 / 累计浏览 3,800

关于php的libevent扩展的应用

这篇讲的是 PHP 的一个高性能扩展——libevent。作者并非停留在理论介绍,而是直接分享了自己用它实现 Thrift Socket Server 的实战经验。Libevent 本身是一个用 C 写的事件驱动库,性能很高,而这个 PHP 扩展正是将其核心能力带给了 PHP 开发者。 作者在一年前的尝试中,已经验证了它在构建非阻塞服务端方面的潜力。他特别指出,这个扩展的价值远不止于此,完全可以用于开发聊天服务器、实时推送系统,甚至是类似 Node.js 的异步任务处理后端。文章从一个具体的实现案例出发,引出了对 PHP 在 I/O 密集型场景下性能边界的探讨。 对于想突破传统 PHP 同步阻塞模型、探索高并发服务端可能性的开发者来说,这篇文章提供了一个扎实的起点和清晰的思路。它不仅展示了 libevent 能做什么,更激发了对 “PHP 还能做什么” 的思考。

本机暂存
IT 2011-07-05 23:16:59 / 累计浏览 2,720

如何将TTURLRequest和OAuthConsumer搭配使用

这篇讲的是在使用 Three20 框架进行 iOS 开发时,如何让网络请求支持 OAuth 认证。具体来说,它聚焦于框架自带的 `TTURLRequest` 类与独立的 `OAuthConsumer` 库的协同工作。 文章的核心方案是搭建两者之间的桥梁。作者从实际开发中需要安全调用第三方 API 的场景出发,指出了 `TTURLRequest` 虽好用但缺乏内置 OAuth 支持的痛点。接着,他并没有停留在理论,而是给出了清晰的“适配器”实现思路:如何在 `TTURLRequest` 的生命周期中,嵌入 `OAuthConsumer` 的签名处理步骤。这通常涉及自定义请求类,覆写关键方法,并正确管理 Token 等凭证。 讲解过程中,作者会展示具体的代码片段和集成步骤,让读者看到从零开始配置的完整过程。这种搭配使用的好处在于,既能享受 `TTURLRequest` 带来的请求管理和缓存等便利,又能通过成熟的 `OAuthConsumer` 库获得可靠的认证能力,避免了从头造轮子的风险。对于正在使用 Three20 并需要对接微博、豆瓣等 OAuth 服务的开发者来说,这提供了一个经过验证的、可直接落地的技术路径。

本机暂存
IT 2011-06-24 12:21:46 / 累计浏览 3,200

git flow使用经验小记

这篇讲的是作者从半年前开始,在团队内部推广 Git Flow 分支管理模型,并用于规范版本发布流程的实践经验。文章没有停留在概念介绍,而是直接切入实际应用场景,分享了这套流程如何帮助团队理清了开发、发布、维护等不同阶段的代码管理思路。 作者重点描述了 Git Flow 的核心模型——如何通过 `master`、`develop`、`feature`、`release` 和 `hotfix` 这几个关键分支,来应对日常功能开发、紧急修复以及版本发布等不同需求。文章的亮点在于,它结合了具体的实践细节,比如在推广初期团队遇到的适应问题,以及流程稳定后对协作效率和版本质量的明显提升。 作者总结道,经过半年的运行,这个流程已经让版本发布变得可控且可追溯。对于那些同样在寻找或优化自身团队代码协作规范的读者,特别是中小型技术团队,这篇基于真实经验的小结提供了非常接地气的参考。

本机暂存
IT 2011-03-30 14:01:34 / 累计浏览 4,860

用git部署php站点

这篇讲的是如何用git来部署PHP站点,作者指出在小项目中,这种方式既方便又实用。文章从实际需求出发,点明了传统手动上传代码的痛点——缺乏版本控制、更新与回滚都容易出错。而采用git,能够同时在本地和远程服务器上保留完整的版本历史,让每一次变更都可追踪,出现问题时可以快速定位原因,甚至一键回滚到之前的稳定版本。 作者并没有停留在概念上,而是直接给出了具体的设置步骤。文章会引导读者完成从服务器端git仓库的初始化、配置钩子(hook)实现代码自动同步,到处理文件权限等实际问题的全过程。对于PHP站点开发者来说,这意味着一种更现代、更可控的发布工作流,尤其适合那些运维资源有限的小型项目。读完后,你就能拥有一套清晰、可落地的自动化部署方案。

本机暂存
IT 2011-03-07 22:44:53 / 累计浏览 2,840

如何安装Node.js

这篇讲的是如何在四个主流操作系统上安装Node.js。作者没有泛泛而谈,而是直接切入实操,清晰对比了在Mac、Ubuntu、CentOS和Windows这四种环境下,安装步骤的具体差异。 核心在于解决不同系统用户的环境搭建需求。文章点明了每个平台下的典型安装方法:在Mac上,Homebrew往往是更省心的选择;在Ubuntu和CentOS这类Linux发行版上,则通常需要借助包管理工具(如apt-get或yum)来完成;而Windows用户则需要额外关注系统兼容性与配置。这种按系统分类的写法,能帮读者迅速定位到自己需要的那部分,避免信息过载。 对于需要快速搭建本地开发环境的前端或全栈开发者来说,这篇文章提供了一个清晰的“路书”。它跳过了冗长的理论介绍,直奔主题,能让你在几分钟内根据自己使用的设备,找到对应的安装路径并顺利跑通。读完之后,你应该就能为自己的系统选对安装路径,快速搭建起开发环境了。

本机暂存
IT 2011-03-07 22:43:53 / 累计浏览 2,320

防止伪造跨站请求的小招式

这篇讲的是网络安全中一个常见但容易被忽视的漏洞——CSRF(伪造跨站请求),以及如何用一些实用的小招式来防御它。 作者从攻击者如何利用用户已登录的浏览器状态发起恶意请求这一背景出发,清晰地拆解了CSRF的攻击原理。文章的核心在于提供了一系列行之有效的防御方案,重点介绍了业界最常用的双重提交Cookie和基于令牌(Token)的同步模式(Synchronizer Token Pattern)。具体来说,它详细说明了如何生成、验证和传输一个不可预测的令牌,从而确保请求的合法性。 此外,文章还介绍了利用浏览器安全策略进行防御的现代方法,如为Cookie设置SameSite属性(Lax或Strict),这能从源头阻止跨站请求携带身份凭证。文中可能还对比了不同防御手段的适用场景与兼容性考量。整篇文章没有空谈理论,而是直接切入“如何做”,给出的都是可以直接落地的、轻量级的实践建议。对于希望快速为Web应用增加一层安全保障的开发者来说,这些不复杂却效果显著的招式很有参考价值。

本机暂存
IT 2010-12-09 23:03:03 / 累计浏览 3,460

mac下的tree命令

mac用户常常会遇到的一个小麻烦:系统默认并没有安装`tree`这个方便查看目录结构的命令。作者在自己的Mac上也碰到了这个问题,于是分享了一个颇具巧思的“流氓”级解决办法。 文章没有推荐复杂的安装方式,而是直接给出了一条组合命令:`find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'`。它的核心思路是利用`find`命令列出所有文件路径,再通过`sed`进行字符串替换,用管道符`|`和下划线模拟出树状结构的视觉效果。这个方案虽然原始,但胜在无需额外安装,完全依赖系统自带的工具,对临时需求来说堪称一个“即插即用”的技巧。 对于不常使用或不想折腾环境配置的开发者,这篇文章提供了一个立刻就能上手的替代方案,下次在Mac终端里想看目录树时,这个小技巧就能派上用场了。

本机暂存
IT 2010-12-09 23:01:52 / 累计浏览 3,960

mysql主从同步快速设置

这篇讲的是作者梳理的一套MySQL主从同步快速配置方法。在实际项目中,搭建主从架构用于读写分离、数据备份或高可用是常见需求,但标准配置步骤有时略显繁琐。作者从实际使用出发,记录了一个比较简便的操作流程,旨在日后能快速复用。 文章重点突出了配置过程中的“快速”与“简便”这两个核心特点。它没有长篇大论地铺陈原理,而是直接切入实操步骤,为需要快速搭建同步环境的开发者提供了一个清晰的路径。对于那些希望简化部署流程、节省配置时间的技术人员来说,这个经过精炼的步骤集合会很实用。

本机暂存
IT 2010-09-15 09:48:45 / 累计浏览 4,840

php实现的thrift socket server

这篇讲的是作者如何用PHP从零实现一个Thrift Socket Server。原本PHP生态中Thrift只提供了基于Apache的服务器端方案,限制了其在轻量级、高性能场景下的使用。作者受到PHP可直接利用libevent构建Web服务器的启发,决定动手扩展这一能力。 核心实现思路是围绕libevent构建一个非阻塞的事件驱动服务器。作者详细描述了如何处理连接、监听事件和并发请求,并在过程中解决了PHP与C扩展交互时的内存管理等挑战。通过引入libevent,服务器得以摆脱传统的阻塞模型,实现了对高并发连接的有效处理。 整个实现不仅填补了PHP在Thrift Socket Server方面的空白,也展示了在PHP中进行高性能网络编程的实践路径。对于需要构建微服务间高效通信或自定义RPC服务的PHP开发者而言,这种基于libevent的非阻塞架构提供了一种值得参考的解决方案。

本机暂存
IT 2010-05-05 13:40:37 / 累计浏览 3,100

php的filter扩展小技巧

这篇讲的是,面对“永远不要相信用户输入”这条web安全铁律,如何用好PHP内置的filter扩展来高效实现数据过滤与验证。 作者从新人老手混搭的小团队容易忽视输入验证,导致SQL注入、XSS攻击等漏洞频发的现状出发,引出了PHP filter扩展这个强大的“守门员”。文章没有停留在泛泛而谈安全重要性,而是直接切入具体操作,详细讲解了filter_var()和filter_input()等函数的使用小技巧。比如,如何用FILTER_VALIDATE_EMAIL快速验证邮箱格式,用FILTER_SANITIZE_STRING过滤危险的HTML标签,或者结合FILTER_FLAG_NO_ENCODE_QUOTES等标志位进行更精细的控制。 这些技巧的巧妙之处在于,它们都是PHP内置函数,无需额外安装扩展,却能以声明式的方式,让原本繁琐的数据清理和验证工作变得清晰、安全且易于维护。文章通过实际场景的示范,把安全规则转化成了几行可靠、简洁的代码,对于快速搭建安全的数据处理管道很有帮助。

本机暂存
IT 2010-04-27 13:46:54 / 累计浏览 2,920

关于改善xhprof使用情况的设想

这篇讲的是作者从实际生产环境出发,对性能分析工具 xhprof 的使用进行的反思和改进设想。作者团队已将 xhprof 投入生产环境,为程序调试和性能优化带来了切实的便利。然而,在深度使用中,一些具体的痛点也逐渐浮现。 文章聚焦于这些使用中的细节问题,例如采样率设置对性能开销的微妙影响、结果存储分散带来的聚合分析困难,以及如何更便捷地将分析结果融入日常的监控和告警流程等。针对这些痛点,作者提出了一系列改善设想,包括更灵活的采样策略、结果存储的集中化方案,以及可能的可视化工具整合。 这些设想的核心目标,是让 xhprof 这个利器在生产环境中更稳定、更易用,从而能更安全、更高效地服务于 PHP 应用的监控与优化工作。

本机暂存
IT 2010-03-12 09:16:06 / 累计浏览 2,500

LightCloud的设计原理

这篇讲的是作者最近关注到的一个名为LightCloud的轻量级分布式KV数据库。尽管市面上分布式KV的实现已经不少,但作者认为LightCloud在“轻量”二字上的思考依然有独到之处。 文章主要剖析了它如何解决传统分布式系统在部署复杂度和资源开销上的痛点。核心设计思路在于对共识协议和数据存储层做了大胆的简化与剪裁,例如它可能用更轻量的通信层替代了重量级的RPC框架,或者在保证基础一致性的前提下,对数据分片与复制的逻辑进行了简化。这种取舍旨在在有限的硬件资源上实现高可用的键值存储,特别适合边缘计算或嵌入式场景。 作者的分析表明,LightCloud并非追求大而全的功能,而是瞄准了对资源敏感、需要快速部署的特定场景。其设计展示了在功能完备性与实现简洁性之间如何做出有效权衡,为同类系统的设计提供了一种“做减法”的参考视角。

本机暂存
IT 2010-03-01 13:39:10 / 累计浏览 4,720

使用nginx做为hiphop-php的前端服务器

多个HipHop-PHP编译程序想共享80端口怎么办?作者从邮件组里的实际需求出发,发现当同一台服务器托管多个站点时,所有程序都默认争抢80端口确实是个痛点。尤其在共同租用服务器的场景下,这个限制变得尤为突出。 文章给出的解决方案是,在前端部署Nginx作为反向代理。让编译后的HipHop-PHP程序各自监听其他端口,而由统一的Nginx服务处理来自80端口的请求,再根据规则将流量转发到对应的后端程序。这种架构灵活地解决了端口冲突问题,让多站点得以共存。作者也提到,Facebook官方随后也发布了相关的Wiki指南,进一步印证了该方案的通用性。对于在共享环境中使用HipHop-PHP的团队,这是一个清晰可行的架构思路。

本机暂存
IT 2010-01-05 13:55:34 / 累计浏览 3,200

快速创建pear/pecl的rpm

在CentOS服务器上管理PHP扩展时,很多开发者都遇到过Pear/PECL组件的版本更新难题。每次手动编译不仅耗时,还容易破坏系统的包管理一致性。这篇讲的就是如何将这些第三方PHP组件快速打包成标准的RPM包,从而无缝集成到yum的管理体系中。 作者从实际运维痛点出发,提供了一套清晰的工具链操作思路。核心方案围绕rpmbuild和Spec文件的编写展开,详细拆解了如何为PEAR/PECL包定义依赖、设置版本号以及处理编译安装路径。文中特别强调了利用现有的rpm工具链来自动化这个过程,避免了手动打补丁的繁琐。 通过这种方法,运维人员可以将零散的PHP扩展纳入统一的版本控制和分发渠道。最终效果是显著降低了维护成本,让服务器环境的更新和回滚变得像安装系统自带软件一样可靠、可预测。对于需要在CentOS/RHEL体系下维护PHP环境的团队来说,这提供了一个从“手工制品”转向“标准化交付”的实用路径。

本机暂存
IT 2009-12-23 09:43:14 / 累计浏览 4,120

memcache连接慢又一例

这篇讲的是又一起生产环境中遇到的Memcache连接延迟问题。作者在PHP应用中观察到与Memcache服务器的连接耗时经常超过50ms,这对于追求高性能的缓存服务来说是难以接受的。 文章从实际遇到的卡顿现象切入,很可能是对一次完整的排查过程的复盘。这类问题通常错综复杂,诱因可能分散在客户端(PHP配置、网络环境)、服务端(Memcache状态、服务器负载),甚至中间网络链路上。作者很可能是像侦探一样,通过监控数据、日志分析,甚至可能涉及系统工具(如tcpdump、strace)来层层追踪,最终定位到了那个关键的瓶颈点——比如不合理的超时设置、本地DNS解析波动、或是网络路由问题。 对于经常与缓存打交道的开发者而言,这类“踩坑”记录极具参考价值。它提醒我们,连接慢不只是“网络不好”这么简单,背后有一套具体的排查思路和方法论。下次遇到类似问题时,便能多一些解决方向,少一些盲目猜测。

本机暂存
IT 2009-12-16 08:56:47 / 累计浏览 5,360

php的echo为什么这么慢

这篇讲的是前端页面展现缓慢的排查经历。作者以“老中医”的视角接手问题,发现PHP脚本中大量的`echo`语句是性能瓶颈的表象。深入排查后,真正的原因出乎意料:并非`echo`本身,而是模板引擎在拼接HTML时,无意中在每个输出的变量或字符串前后,自动加入了大量换行符与空格。 这些冗余空白字符不仅增加了网络传输的数据量,更重要的是,它们会破坏浏览器的渲染流水线,导致页面需要额外的重排与重绘。文章详细剖析了这一“隐形杀手”的产生机制,并给出了在模板引擎层面或输出阶段进行清理的解决方案,最终使页面加载速度得到显著提升。这个案例生动地说明了,性能问题有时并非源于显而易见的热点,而可能藏匿于那些不起眼的、看似无害的细节之中。

本机暂存