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

最新文章

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

IT 前端/ 2013-01-10 22:22:41 / 累计浏览 4,705

flv网页播放器源码

这篇来自作者的一次实际需求解决过程——帮朋友弄清楚,为什么从优酷等网站下载的flv文件,用传统的Flash SWF播放器代码无法正常播放。 问题的根源在于播放器参数配置。传统的通用播放器代码缺少针对flv格式的必要声明。作者最终给出的方案是,使用一段标准的嵌入代码,其中关键在于movie参数的地址格式:必须是一个支持flv流的播放器swf文件(例如代码中的zhoz_play.swf),并通过特定的参数(vcastr_file)来传递实际的视频文件路径。 这段代码的核心思路很直接:利用一个已经封装好flv解码和控制功能的第三方播放器文件,前端只需提供它正确的URL和视频文件地址。文中给出的代码片段包含了allowFullScreen等常用参数,并说明了width/height的自定义方式。 这种实现方式通用性强,只要网页允许插入Flash对象,基本都能工作。作者也指出了其限制——在部分对HTML标签有严格限制的网页上无法使用。对于需要快速嵌入flv播放功能的开发者来说,这提供了一个开箱即用的参考,只需将“1.flv”替换为实际的视频地址即可。

本机暂存
IT AI/ 2013-01-10 22:21:23 / 累计浏览 5,610

皮尔逊积矩相关系数的学习

作者从相似度计算中常见的皮尔逊相关系数出发,用两种视角帮你真正“看懂”这个公式。第一种是统计学视角,通过高中课本里的Z分数处理,逐步拆解公式;第二种是几何视角,将其理解为两组数据向量夹角的余弦值,文章里还配了直观的回归线示意图。 两种理解方式都附有清晰的Python实现代码,让抽象概念变得可操作。不仅如此,文章最后还梳理了应用皮尔逊相关的四个关键约束条件,并提到了实践中常输出的相关系数与独立样本检验系数。 从“算出来”到“看明白”,这篇文章提供了从基础推导到几何直观的完整路径,能帮你建立更立体的技术理解。

本机暂存
IT 移动开发/ 2013-01-10 22:18:08 / 累计浏览 1,820

我是这样做APP的

这篇文章以“快捷酒店管家”这款应用的开发历程为例,讲述了作者团队从无到有打造一款移动互联网产品的实战心得。文章并非罗列抽象理论,而是通过具体案例,深入分享了在产品不同阶段如何捕捉、验证并满足用户需求。 作者首先强调,成功应用的核心在于击中用户痛点。为此,团队采用了两种方法:数据分析与“答案在现场”。例如,CEO和开发人员会定期入住快捷酒店亲身体验,甚至去酒店前台观察用户状态,以此获得最直接的洞察。产品功能,如关键的“在线预订”,正是源于对用户使用旧有电话预订流程中“不爽”体验的发现与解决。 文章进一步指出,APP的成功往往不是严格规划出来的,而是被用户、市场等多方力量“推着”演进的结果。产品需要在用户反馈与商业需求间找到平衡,例如通过一个可选开关,既满足了核心用户“只看有房”的简洁需求,也兼顾了酒店方查看竞品数据的需求。 此外,作者提炼了优秀APP的三个标准:加载速度快的性能、核心功能突出的简洁性、以及充满“人情味”的交互设计。最后,文章讨论了用户运营的艺术,包括如何通过持续的产品细节更新让用户感觉“APP是活的”,甚至在必要时通过“强制升级”等方式“净化”用户队伍,以保障产品的长期健康发展。 整体而言,这是一篇源于一线实战、充满具体操作细节的产品方法论分享,对于理解移动应用如何真正贴近并服务用户具有切实的启发意义。

本机暂存
IT DevOps/ 2013-01-10 22:15:56 / 累计浏览 8,955

应该知道的Linux技巧

这篇讲的是每个Linux用户都应该知道的效率技巧,核心观点直接而有力:在Unix/Linux下,最高效的技巧不是操作图形界面,而是掌握命令行,因为它意味着自动化。 文章从Quora的一个热门问答出发,结合作者的实践理解,梳理了一份从基础到进阶的实用清单。基础部分强调了学习Bash、vim和ssh的重要性,指出这些是高效操作的基石。日常技巧则聚焦于能立刻提升操作速度的快捷键与命令,例如用Ctrl-R历史搜索、用xargs串联命令,或是通过pstree和pkill管理进程。 清单中也不乏一些精妙的“冷知识”,比如利用`<(command)`将命令输出当作文件进行比较,或是通过`set -x`和`trap`调试与控制脚本。这些细节让自动化和脚本编写变得更灵活可靠。作者还不忘提醒,掌握man、Google搜索以及从源码编译,是自主解决问题和深入探索的关键。整篇文章罗列了数十个具体命令和场景,目的不是让你全部记住,而是展示命令行的丰富可能性——熟悉其中一部分,就能让你从繁重的手动操作中解脱出来,把时间留给更重要的思考。

本机暂存
IT 开发者/ 2013-01-10 22:14:10 / 累计浏览 7,445

如何判断自己是否到了该辞职的时候

作者从自己半年前辞去投资公司工作、投身创业的亲身经历出发,梳理了一套实用的“离职决策框架”。他并非鼓励冲动辞职,而是坦诚地总结了五个关键的职业倦怠信号,比如总在业余时间忙自己的项目、对升职毫无兴趣、固定工资无法点燃热情、感觉闯劲在缓慢流失,以及因放弃其他机会而夜不能寐。这些来自一线观察的细节,精准描绘了许多职场人内心挣扎的轨迹。 对于已经下定决心的人,文章也给出了冷静的建议:寻找志同道合的伙伴、从一个小创意起步、尽快清理债务减轻负担,并珍惜家人支持。最后,他简要分享了辞职后全身心投入产品开发的状态,暗示了创业初期的巨大投入与挑战。 这不是一篇简单的励志文,而是一份基于真实选择的观察笔记。它没有提供标准答案,却帮助读者审视自己内心的真实信号,思考个人职业价值与人生可能性的边界。

本机暂存
IT 算法/ 2013-01-08 13:35:47 / 累计浏览 5,522

关于身份证号的那些事

这篇讲的是中国居民身份证号码的构成规则与校验原理。作者从国家标准出发,拆解了18位号码中每一部分的含义:前6位是行政区划代码,中间8位是出生日期,接下来3位顺序码暗含性别信息(奇数为男,偶数为女),而最后一位校验码则依据前面17位数字通过特定算法生成,甚至可能为字母“X”。 文章不仅解释了各部分的编码逻辑,还提供了一个可直接使用的Python校验类代码示例。这个实现思路很清晰:它通过正则表达式初步校验格式,接着核对地区码范围、验证出生日期是否有效,最后用加权因子计算并比对校验码,完成一次完整的身份号码有效性检查。 整篇文章将看似枯燥的编码规范讲得透彻且实用,既适合作为技术科普,也能为需要处理身份信息验证的开发者提供即用的参考方案。

本机暂存
IT 算法/ 2013-01-08 13:35:14 / 累计浏览 6,012

新浪微博笔试题:找出共有2个以上标签的用户对

在微博这样的社交平台上,如何从海量用户标签关系中高效找出共享多个标签的用户对?这篇技术文章从一道经典的笔试题切入,详细拆解了一个大规模数据处理问题的思路。 作者面对的核心挑战是:给定一亿用户和约三十万标签,每个用户最多十个标签,需要输出所有共享两个或以上标签的用户对及其共同标签。文章首先分析了数据特点,比如相当数量用户没有标签,这可以先通过过滤来减少计算量。接着,核心方案是构建标签到用户的倒排索引,将标签映射到用户ID列表,从而快速查找共享标签的用户。作者基于对微博系统可能采用NOSQL存储的假设,给出了具体的数据格式示例,并提供了Python代码实现倒排索引构建的过程——通过遍历用户标签列表,动态更新字典结构来关联标签与用户ID列表。 此外,文章还考虑了一些优化细节,比如对用户ID排序并只查找更大ID的用户,以避免结果重复输出。尽管作者自谦方法较基础,但整体展示了一个清晰的处理流程,将抽象笔试题转化为可操作的数据处理步骤,倒排索引的应用对于处理海量关系数据具有实际参考价值。

本机暂存
IT 设计/ 2013-01-08 13:33:37 / 累计浏览 1,416

不要让“合理性”成为阻碍设计前行的绊脚石

这篇讲的是设计领域里一种常见的思维定势——对“合理性”的过度依赖,以及它如何悄然扼杀了创新的可能。 作者以iPhone的“3.5英寸单手操作黄金尺寸”为例,指出这种看似不容置疑的“合理性”,在用户真实、多样的使用场景(如沉浸式浏览、效率操作)面前可能站不住脚。而当苹果为了竞争妥协地推出iPhone 5时,这种保守的改变反而招致吐槽。相反,当时被苹果视为“不合理”的三星Galaxy Note,凭借大胆的大屏设计,不仅获得了市场成功,更开辟了新的交互可能性,甚至引发了时尚品牌的配套设计风潮。 文章由此回溯了诸如Moto V70的旋转开屏、Clear的全手势操作、Path的独树一帜等经典案例,指出那些真正令人惊艳的产品,往往都带着一丝“倔强”与“不随大流”的气质。作者的核心观点是:设计师应当警惕“合理性”背后的条条框框,有时需要勇敢地打破常规,用想象力去勾勒更具突破性的产品体验。

本机暂存
IT 后端/ 2013-01-08 13:33:03 / 累计浏览 2,804

谁来照耀新浪?

这篇深度评论回顾了新浪在2012年前后面临的内忧外患。作者从公司治理与业务模式两个维度切入,指出新浪作为一家“无主的公司”,长期缺乏创始人引领,内部派系林立,管理层MBO后仍难以形成真正的凝聚力。 文章详细剖析了新浪的核心困境:传统门户依赖CPT计价模式的品牌图形广告市场份额持续萎缩,而新浪又极度依赖广告收入,其搜索、游戏等业务布局薄弱。与此同时,一度耀眼的微博商业化进展缓慢,面临用户增长放缓与变现难题。作者认为,新浪深入骨髓的广播型媒体基因,使其在互联网向效果广告和社交化演进的趋势中步履维艰。 这篇评论并非简单唱衰,而是试图揭示一家老牌互联网公司在时代转折点上的典型挣扎。它提醒读者,技术浪潮的更迭中,固守过往的成功模式与组织形态可能带来巨大风险,而真正的转型往往需要经历痛苦的“蜕皮”。

本机暂存
IT 设计/ 2013-01-08 13:11:06 / 累计浏览 3,449

随侃设计师的个人素养

这篇讲的是设计师如何平衡自我表达与现实需求,作者从自己早年“研究不接地气”的毛病谈起,坦诚地分享了从理想主义到务实工作的转变过程。 文章的核心观点是,设计师不应以上帝视角看待用户,也不能沦为纯粹的执行工具。作者以“双面人”为喻,说明了表面顺从需求与内心保持风格的矛盾,并强调要理解产品背后的商业诉求与价值核心。具体实践中,他提出了几个接地气的方法:接到项目先判断“上的是哪条船”(评估项目体量与资源);避免陷入“绣花针式”的细节,要快速跳出并给出方案;在紧急项目中,通过复用基础元素、统一控件、遵循点线面原则来节省时间,并聚焦在能出彩的情感化设计上。 作者最后反思了流程形式主义的局限,指出过度追求完美的流程指南反而可能脱离现实。整篇文章不讲空洞理论,而是从实际踩过的坑和总结的技巧出发,为设计师如何在专业与妥协之间找到有效路径,提供了坦率的参考。

本机暂存
IT 安全/ 2013-01-08 13:05:34 / 累计浏览 3,164

设置ssh无密钥登录

这篇讲的是如何为Linux系统配置SSH无密钥登录,从而替代传统的密码验证方式。文章首先点明了SSH因RSA/DSA加密算法带来的安全性优势,这是其能取代telnet的关键背景。核心内容则聚焦于实操:通过ssh-keygen生成一对密钥,将公钥拷贝至远程机器的指定位置并设置正确权限(600),即可实现免密登录。 作者还特别指出,在完成基础配置后,用户可以进一步在sshd_config中关闭密码验证,将系统从基于密码的登录方式切换为更安全的密钥验证。整个过程步骤清晰,强调了权限设置这个容易出错的细节。对于需要频繁进行服务器管理运维的开发者和管理员来说,这套方法能有效提升工作效率与系统安全性。

本机暂存
IT DevOps/ 2013-01-08 13:03:03 / 累计浏览 2,643

Ubuntu Server清理无用内核

这篇文章解决的是Ubuntu Server在多次系统升级后,旧内核包(headers和image文件)累积占用磁盘空间的问题。作者直接给出了具体的清理步骤和命令。 方法首先通过 `dpkg --get-selections|grep linux` 命令列出所有与Linux内核相关的已安装软件包,让你清楚地看到哪些旧版本的内核headers和镜像文件仍然存在。接着,文章演示了如何使用 `sudo apt-get remove` 命令,针对每一个不再需要的旧内核版本(例如3.5.0-17和3.5.0-19),分别移除其对应的headers和image包。 在执行完清理命令后,文章再次运行查看命令进行验证。结果显示,之前状态为“install”的旧内核包已变为“deinstall”(卸载),而当前使用的内核版本(3.5.0-21)及其相关组件则保持“install”状态。整个过程清晰明了,从发现问题、执行操作到验证结果,形成了一个完整的操作闭环。 这篇文章的价值在于提供了明确的步骤和验证方法,对于需要手动管理内核、优化服务器存储的系统管理员来说,是一个非常实用的参考。

本机暂存
IT 前端/ 2013-01-08 13:00:53 / 累计浏览 5,781

javascript事件触发器fireEvent和dispatchEvent

这篇讲的是如何用JavaScript主动触发事件,重点对比了两种不同环境下的实现方法。 文章指出,我们平时绑定事件后,大多依赖用户的点击、输入等行为来触发。但在某些场景下,比如需要自定义事件或在特定逻辑中主动发起事件时,就需要事件触发器了。作者清晰地对比了IE和现代浏览器(Chrome、Firefox等)提供的两种不同API:IE使用的是私有的`fireEvent`方法,而符合W3C标准的现代浏览器则采用`dispatchEvent`方法。 文章通过一个在IE下触发自定义`ondataavailable`事件的代码示例,展示了如何手动让事件生效。这揭示了两者核心的差异在于适用的运行环境,但共同的目的都是为了让JavaScript代码能够像用户操作一样,主动地发起和分发事件。这对于构建复杂的前端交互逻辑、实现组件间的通信很有帮助。

本机暂存
IT 后端/ 2012-12-25 12:31:57 / 累计浏览 7,917

Python高效编程技巧

这篇讲的是Python编程中那些容易被忽略但极其实用的技巧。作者从多年使用Django、Flask等流行框架的经验出发,分享了五个能提升代码整洁度和效率的知识点。 比如,除了常见的列表推导,文章详细展示了如何用同样的语法优雅地创建字典和集合。还介绍了`collections.Counter`这个内置利器,它能一行代码搞定字符频次统计。对于处理JSON,作者提醒可以用`json.dumps`的`indent`参数让输出结构化,便于调试。 此外,文章演示了如何用标准库快速搭建一个临时的XML-RPC服务,用于内部程序间的简单交互。最后,作者强调了Python强大的开源生态,并指出了评估一个优秀第三方库的几个关键标准:清晰的许可、活跃的维护、便捷的安装以及充足的测试。 这些技巧大多源自Python标准库,无需额外安装就能让日常编码变得更高效、更易读。

本机暂存
IT 后端/ 2012-12-25 12:31:02 / 累计浏览 3,312

Node.js和testacular的安装与配置

这篇讲的是作者从尝试安装测试工具testacular开始,顺带入门Node.js的一次踩坑实录。文章的核心问题很常见:在公司内网环境下,通过npm安装testacular或express时总遇到超时,但浏览器却能正常访问npm仓库。作者通过排查,判断根因在于npm默认配置使用了https协议,而公司网络可能限制了这种连接。 解决过程很直接:通过命令行修改npm的配置,将registry地址从https切换为http,并设置与浏览器相同的代理地址。具体操作是运行`npm config set registry`和`npm config set proxy`命令,之后便成功完成了安装。作者还记录了初始化testacular时遇到的一个路径小问题,以及最终通过`testacular start`命令在本地启动测试的完整流程。 整个记录以步骤为线索,穿插了具体的命令、报错截图和配置细节,对于同样遇到npm网络问题的开发者,提供了一个清晰的排查思路和解决方案参考。

本机暂存
IT 安全/ 2012-12-25 12:28:46 / 累计浏览 6,006

linux 小技巧

这篇汇总了十个实用的Linux命令行与配置技巧,涵盖了日常运维中常见的安全加固、系统管理和故障预防场景。 文章内容非常具体,直接给出可操作的步骤。比如,它不仅告诉你用`pidof java`快速查进程号,还演示了如何修改`/etc/login.defs`来强制用户密码长度。在安全方面,技巧详细说明了怎样通过`/etc/pam.d/su`配置文件来限制`su`命令的使用权限,以及如何结合`/etc/hosts.allow`和`iptables`实现基于IP的SSH访问控制。 特别值得注意的是,文章包含了一些易被忽略但重要的配置,例如如何注释掉`inittab`文件中可能导致意外重启的`CTRL-ALT-DELETE`快捷键,以及为RedHat系统配置非正常关机后的自动磁盘检查。这些小技巧能有效提升系统的稳定性和安全性。对于经常与Linux服务器打交道的技术人员来说,这是一份可以随时查阅的实用备忘录。

本机暂存
IT 后端/ 2012-12-24 22:47:37 / 累计浏览 5,345

网络协议简介

这篇讲的是网络协议分层模型和核心协议。作者从经典的OSI七层模型和更实用的TCP/IP四层模型对比出发,梳理了从物理层到应用层的数据流转过程。 文章的重点落在对网络层的剖析上。它详细拆解了IPv4和IPv6的数据包报文头结构,比如IPv4的IHL字段如何定义头部长度,IPv6如何通过更简洁的头部和128位地址来优化设计。同时,也点明了ICMP、IPsec等协议在网络层的角色。 除了重点讲网络层,文章也覆盖了传输层的TCP/UDP和应用层的HTTP、FTP等常见协议。最后,作者还提到了一个容易被忽略的socks5协议,解释了它在五层和七层模型中不同的定位,以及作为代理协议的实用性。整体上,文章以协议分层为脉络,兼顾了原理细节和实际应用。

本机暂存
IT 算法/ 2012-12-24 22:45:27 / 累计浏览 5,589

查找第K小的元素

这篇讲的是如何高效地从无序数组中找到第K小的元素,这是一个经典的选择问题。 文章先梳理了常规思路:最直接的是先排序再取,但复杂度O(nlogn)较高。利用选择排序或堆排序可以优化到O(kn)或O(nlogk),而借鉴快速排序的思想——每次选择一个基准值,将数组分为两部分,然后递归地在目标区间查找——可以将平均复杂度降到O(n)。作者指出,快速排序思想的致命弱点在于基准值(pivot)选择不当会导致最坏情况O(n²)。 文章的核心在于介绍了一种能保证最坏情况也是O(n)的优化算法:**中位数的中位数(Median of Medians)**。具体做法是将数组每5个元素分为一组,先找出每组的中位数,再递归地从这n/5个中位数中找出中位数,用它作为最终基准值。这个策略能保证每次划分后,目标区间至少缩短一定比例(如30%),从而通过递推关系证明其最坏复杂度稳定在O(n)。 作者不仅给出了算法的理论分析,还附上了完整的Python实现代码,清晰地展示了如何将分组、找组中位数和主选择过程结合起来。最后,文章点出这个稳定的基准值选择策略,同样可以用来优化快速排序,将其最坏情况复杂度提升至O(nlogn)。

本机暂存
IT 后端/ 2012-12-24 22:43:04 / 累计浏览 7,131

字符编码和中文乱码小叙

这篇讲的是字符编码从ASCII到UTF-8的演进历程,以及由此引发的中文乱码问题。作者从早期计算机只支持英文的ASCII编码说起,谈到欧洲语言扩展出的ISO8859-1,再到为解决中文等复杂文字而诞生的GB2312、GBK等国标编码,最后引出了致力于一统天下的Unicode及其存储实现UTF-8。 文章重点对比了在中文环境下最常见的两种编码:GBK和UTF-8。它指出了一个典型的“乱码陷阱”:Windows系统常用兼容GB2312的ANSI编码,而Linux等系统则普遍采用UTF-8。这种不一致,正是跨平台处理中文文件时频繁出现乱码的根源。 对于开发者,文章强调在编写Web程序时必须确保数据库、程序文件、网页声明(如``)以及数据库连接(如对MySQL执行`set names`)的编码统一。虽然文中以GBK为例说明了如何配置,但最终的建议是拥抱UTF-8——因为它已成为国际标准,与主流Linux服务器生态契合度更高,是更面向未来的稳妥选择。

本机暂存
IT 安全/ 2012-12-24 22:40:39 / 累计浏览 4,081

数论的应用-RSA公钥算法

这篇讲的是RSA公钥算法背后的数学之美。作者从伟大的数学家欧拉切入,引出了现代非对称加密的基石——RSA算法。文章首先点明了对称加密的局限,随后介绍了1976年公钥密码思想的诞生,以及1977年RSA算法的正式提出。 核心部分,文章深入浅出地拆解了RSA所依赖的数论工具:欧拉函数用于计算与某数互质的数的个数,而欧拉定理(费马小定理的推广)则为算法的数学正确性提供了保证。随后,文章分步展示了RSA密钥生成与加解密的全过程:如何选取两个大素数p和q来构造模数n,并由此推导出公钥e和私钥d;以及如何用公钥加密、私钥解密。 为了让理论落地,文中还用了一个具体数字例子(M=52, p=17, q=11, e=7, d=23)演示了整个加密解密流程,让抽象公式变得清晰可感。最终,文章回归数学原理,简要说明了为何这样构造能实现解密的正确性。 整篇文章将深奥的数论概念与实际的密码学应用串联起来,展现了从纯理论到关键技术的奇妙旅程,让你理解为什么这个看似无用的数学分支,最终能成为守护互联网安全的隐形卫士。

本机暂存