IT技术博客大学习 共学习 共进步

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

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

IT Linux/ 2021-06-13 22:52:09 / 浏览 2,500

How to Install Native Homebrew on an Apple Silicon M1 Mac

如果用原来的方式在M1芯片的macOS中直接安装,会报错。说Homebrew现在还不支持ARM芯片。 要在Apple Silicon M1芯片的macOS中安装Homebrew有两种方式。 第一种:在Rosetta2下安装x86架构的Homebrew。这一种是我个人不推荐的方式,利用Rosetta2的转码功能,还是直接安装x86架构的Homebrew,后续通过这个Homebrew安装的所有软件,也将是x86架构,虽然通过Rosetta2运行在M1的macOS中也可以正常运行,但是毕竟不如直接编译成M1的ARM架构更放心。 安装方法实际上很简单,执行下面的安装命令即可。 第二种:通过自行安装,运行M1 ARM架构原生的Homebrew。 安装完毕以后,我们可以通过file命令查看一下安装后的可执行文件的架构,确认确实是ARM64的原生架构。

IT 奋斗/ 2021-06-13 22:50:21 / 浏览 2,860

互联网企业安全团队建设

安全团队是企业安全规划与架构的设计者,也是安全体系建设得以落地的推动和践行者。所以,要想真正做好一家企业的安全建设,前提是必须要有一支有想法并且具备持续战斗力的安全团队,但这在现实工作中却并非易事。相反,安全团队的建设与管理是一件非常有挑战且值得探讨的事情,这一点有过企业安全负责人(CSO角色)经历的朋友应该更加深有体会。 安全团队的建设与管理并不是简单的招人干活,工作内容涉及方方面面,涵盖的东西很多,一篇文章也很难讲清楚。所以本文并不打算完整的展开力求做到面面俱到。笔者在这里会从企业安全负责人这一视角出发,基于我个人对企业安全的思考、理解和实践来分享一些关于安全团队建设与管理的心得体会。本文所有内容仅代表我个人观点,欢迎大家一起交流探讨和批评指正。

IT 系统架构/ 2021-06-13 22:41:22 / 浏览 2,680

分布式系统升级所遇到的问题

常规的单机软件升级, 一般认为是一个原子操作, 也就是说, 软件会在"瞬间"完成升级, 即使不能在"瞬间"完成升级, 也要中断服务, 等升级完成后再提供服务. 对于需要中断服务的情况, 在分布式系统中是不能接受的. 同时, 分布式系统的升级永远不可能在"瞬间"完成. 因此, 分布式系统升级会面临一个长时间的中间态, 新旧版本的软件同时运行, 这就涉及到兼容性问题.

IT 系统架构/ 2021-06-13 22:34:06 / 浏览 2,460

可靠通信的三条基本定理

广义的可靠通信不限于计算机网络通信, 只要两个物体具有发送和接收能力, 或者两个物体之间有发送和接收动作, 均属于通信范畴. 例如人于人的声音对话, 身体语言等等. 可靠通信至少包括三项要求: 不丢包 不重复 完整性(原子性) 为了达到这三项要求, 对应有三条定理: 定理一(丢包定理): 确认和重传是解决丢包的问题唯一正确方法 定理二(去重定理): 排队(串行化)是解决去重问题的唯一正确方法 定理三(原子定理): 单点标记或者自校验是实现完整性(原子性)的唯一正确方法 有些同学可能对排队理论有怀疑, 表示搞一个全局位图(标记集合)也能解决去重问题. 如果深究, 判断标记和修改标记是独立的两步操作, 这两步操作就遇到去重问题, 也即, 对标记集合的操作本身也需要排队. 当然, CAS 是一种解决方案, 但 CAS 的实现内部本质也是排队.

IT 奋斗/ 2021-05-28 23:02:42 / 浏览 2,340

你需要更多的思考时间

目前每天都七点半准时起, 无论是否工作日, 几个月下来, 觉得时间多了好多. 最近三个月阅读时间多了很多, 无他, 只因每天要早起坐班车, 下班也坐班车, 每天有大概一个半小时在车上, 只能用kindle打发时间. 每天比其他同事差不多早了一个小时到公司, 这段时间用来做什么呢? 我的答案是: 不要立刻开始工作。 当然, 每个人选择不一样, 可能这一个小时没人打扰, 编码效率会高一点. 但是, 为什么不将这个时间空出来, 做一些其他事情, 这些事情, 可以起到类似杠杆作用, 撬动你的工作, 提升效率, 减少无畏的时间浪费, 以便更好地享受生活呢?

IT 其他/ 2021-05-28 08:35:55 / 浏览 2,320

fbx 到 gltf 转换问题

我们的游戏引擎采用的资源格式是 gltf 2.0 。 gltf 在这几年发展很迅猛,我认为是 3d 文件格式中标准化做的最好的一个。可惜,游戏行业中,美术创作人员常用的 max maya 等工具对其支持还有瑕疵。Autodesk 在 2019 年作为 contributor 成员加入了 Khronos 组织,在 max maya 这些 Autodesk 工具中看到官方的 gltf 支持应该不会等太久。来自官方的消息 ,‎在 2020 的 3 月底,gltf 加入官方支持已经处于 Under Review 状态。希望今年内可以看到。 因为 Unity 的流行,fbx 是游戏行业目前的实施标准。但 fbx 是一个私有格式,并没有任何公开的标准文档。而且其格式设计有很多历史包袱,甚至连字段名都因为有 typo 而在解析的时候有多个错别字兼容备

IT 系统运维/ 2021-05-28 08:35:26 / 浏览 2,460

这几年在存储上犯的错

得知下厨房的数据被误删了,正在紧张恢复中。作为犯过很多次严重错误的人,我最想说的是,善待当事人吧,此刻他在承受着巨大的压力,比其他任何人都要心焦,他会很感激你的善言和善意。 这几年犯过很多次严重影响线上服务的错误,像重启了错误的节点这样的事情应该算作能够对线上造成影响的最微不足道的错误,就只简单说几件现在都还让我心有余悸的事吧。 停用线上 memcached 集群 在调整 memcached 客户端配置的使用和部署方式之前,尽管经过了多次测试,比如在部分节点先上线,确认没有问题之后上线所有的应用服务器,但还是使用了错误的配置,导致线上所有应用禁用了 memcached,巨大的访问压力瞬间拖垮了数据库,从发现问题到完全恢复持续了将近二十分钟。 软件 bug 导致线上 memcached 集群被污染 上线的代码在特定条件下会禁掉对 memcached 的使用,导致在本应清除 c

IT 算法/ 2021-05-28 08:32:57 / 浏览 2,300

不变量及运算优化

去年的时候,我们对正在开发中的游戏引擎做了一点 profile 工作。后来发现,在场景中对象很多的时候,有一处运算占据了 10% 以上的 cpu 时间。当时我的判断是,这处地方值得优化,但并不是工作重点,所以就搁置了。 问题的具体描述是这样的: 我们的引擎每帧会将场景中的对象依次提交到一个渲染队列中,每个可渲染物件,除了自身的网格、材质外,还有它自身的包围盒(通常是 AABB),以及它在世界空间中的矩阵。 我们有一套资源系统,场景中的对象会引用资源系统中的对象,这些资源对象是一个不变量,会被多个场景对象所引用。而资源对象又可以是一个树结构,比如一个模型就可以由若干子模型所构成。提交到最终渲染队列中的是不可再拆分的子模型的信息。 也就是说,在场景管理的层次,对象的数量是远少于提交到渲染队列中的对象数量的。这就是为什么我们渲染每次重建渲染队列,而没有将每帧提交给渲染队列的列表持久化为一

IT 系统架构/ 2021-05-27 08:10:24 / 浏览 1,780

初识前端智能化

​虽然接触推荐算法是2009年,第一次组建人工智能团队却在2014年底。在经历了应用发行、广告、信息流和浏览器等业务,看到人工智能给业务带来的巨大价值,因参与其中而被彻底征服。那时起我就坚定认为,人工智能是继计算机以来最强大的力量,将会从每个角落彻底改变世界。 从32k猫和网页三剑客开始,一直热爱着前端,看着人工智能时代到来,萌发了帮助前端进入人工智能领域的愿望。2018年4月在前端委员会的共创会上,提出“前端智能化”方向。设计和规划直到推动这个方向落地,已经一年多。我在实践中发现,对前端智能化不理解、不会做,是阻碍前端工程师参与其中的最大障碍。 不理解主要是因为缺乏前端智能化的定义,大家不懂我在说什么、做什么,很多听过我分享的朋友都强烈要求我给大家提供一些学习建议和资料。曾尝试写过一些文档,但总觉得无法简单把前端智能化讲清楚,有必要把自己的实践经验和思考总结都梳理一下,供大家参考。

IT 编程语言/ 2021-05-27 07:54:29 / 浏览 2,660

一篇写给从未编程过的人的入门教程

本文并不是想教会你如何编程,而是想告诉你,编程是一件十分简单的事情,但是想写出好的程序却是一件无比有难度的事情,这需要你想出足够好的算法,同时也需要你对程序的执行环境有基本的了解,知道怎么写程序跑的快、怎么写程序会很卡,等等。 当然,作为程序员最苦恼的事情,并不是编程本身,而是需求的变化。比如当你做好了这顿饭,却发现家人在外面吃过了,此时的你就只能含着泪,一个人吃完这桌难以下咽的饭菜了。

IT 系统架构/ 2021-05-27 07:52:49 / 浏览 2,600

裁剪和空间管理

今天想谈谈游戏引擎中 Culling 模块。 当场景中的可渲染对象很多,而当前会被渲染的对象相较甚少的时候,我们通常会启用一个 culling 的过程。Culling 会想办法剔除一些当前不必渲染的对象,避免这些对象提交到 GPU ,让 GPU 承担剔除的过程。这样可以减少 CPU 到 GPU 的带宽。 最基本的 Culling 是用相机的视锥体和对象做一个相交测试,如果对象和视锥体不相交,则可判定它不必渲染;复杂的 Culling 还包括遮挡测试,如果一个对象完全被墙体挡住,那么也不必渲染。这篇只谈前者。

IT 奋斗/ 2021-05-27 07:47:56 / 浏览 2,060

2020 年个人总结

没想到不知不觉就在一家公司待了 8 年,8 年时间转换了很多角色,也收获成长了不少,真心感激猿辅导给的机会。 在公司待久了,能够感觉到资历对于工作的一些推动作用。因为我对公司各个部门的人都认识,所以当我需要什么协同配合的时候,别人很难做到的事情,在我这儿就只需要刷个脸。 在公司待久了,自己期权的收益也变得越来越大,所以自然也越来越把公司的利益放在首位,只要事情做成了,别的东西相对不重要。 在公司待久了,上下级同事相互之间的信任感也越来越强,很多时候不需要花费特别高的沟通成本,也不需要特别担心信任关系,就可以把精力全部投入到业务中去。 这么说起来,现在工作得还真是挺舒服的,希望能够做出一些成绩出来。

IT 奋斗/ 2021-05-27 07:43:13 / 浏览 2,120

做连贯性活动 - 读《好战略,坏战略》

波特的《竞争战略》 里面提到了核心的三个竞争策略:成本优先,差异化,聚焦。而本书从执行层面讲具体应对商业挑战的时候,如何制定战略。 书中提到的聚焦、转换视角、设计思维、直面冲突、连贯性活动都是非常有效的执行上的要素。书中的案例也非常非常多,读起来相对轻松。

IT 发现/ 2021-05-27 07:41:33 / 浏览 1,580

迁移到 Octopress

用了三年多 Wordpress,由于实在很懒,没有写过多少东西,但跑在 Linode VPS 上的 Wordpress 却一直占用了很多资源,几个 PHP-FPM 进程加上 MySQL 就用掉了将近 400MB 内存,却没有什么访问量,觉得很不划算,再加上 Wrodpress 越来越臃肿,就想把它换成一个静态内容发布系统。

IT 用户研究/ 2021-05-27 07:10:31 / 浏览 1,540

从用户嘴里找答案

一个产品最终的受众仍然是这群看似跋扈的用户,能够在反馈区留言的,其实是对这个产品有所期望的,产品不符合用户的心理预期,他当然会有所怨言,而作为产品方,需要做的就是,想尽一切办法,套出用户内心深处的想法,不断挖掘他们对这个产品的思考。而这种互动是不可能出现在对骂之中的。

IT 系统架构/ 2021-05-26 22:57:06 / 浏览 1,720

选择开源项目的几点原则

我们在开发软件的过程中,总有一些模块的需求是普遍的,除了自己开发,使用一个具备合适的 License 的开源项目也是个不错的选择。 在一个程序员的职业生涯中,总会有那么一个阶段,不太愿意使用别人开发的代码。如果不是受项目进度压力所迫,宁愿自己实现。这并非是因为相信自己总能做得更好,而是希望少受牵制,能够自由发挥。而且,写代码往往比理解代码更简单。整合多块不同团队开发的代码也更难保证项目各个部分的一致性。