系统管理员排除故障的五种武器 (linux.cn)
当你不知道从哪里开始时,这五个工具可以帮助你找到用户的 IT 问题的源头。

作为系统管理员,我每天都面临着需要快速解决的问题,用户和管理人员期望事情能够顺利地进行。在我管理的这样的一个大型环境中,几乎不可能从头到尾了解所有的系统和产品,所以我必须使用创造性的技术来找到问题的根源,并(希望可以)提出解决方案。

这是我 20 多年来的日常经验!每天上班时,我从不知道会发生什么。因此,我有一些快速而简陋的技巧,当一个问题落在我的身上,而我又不知道从哪里开始时,我一般就会采用这些技巧。
by @技术头条 2022-05-06 23:10 查看详情
使用 DeepSpeech 在你的应用中实现语音转文字 (linux.cn)
应用中的语音识别不仅仅是一个有趣的技巧,而且是一个重要的无障碍功能。

计算机的主要功能之一是解析数据。有些数据比其他数据更容易解析,而语音输入仍然是一项进展中的工作。不过,近年来该领域已经有了许多改进,其中之一就是 DeepSpeech,这是 Mozilla 的一个项目,Mozilla 是维护 Firefox 浏览器的基金会。DeepSpeech 是一个语音到文本的命令和库,使其对需要将语音输入转化为文本的用户和希望为其应用提供语音输入的开发者都很有用。
by @技术头条 2022-05-06 23:10 查看详情
纯CSS实现未读消息超过100自动显示为99+ (www.zhangxinxu.com)
未读消息超过100显示为99+是常见的交互,目前主流实现一定是通过 JS 逻辑判断,其实纯 CSS 就能实现一模一样的功能,兼容性还不赖,进来看看吧。

by @技术头条 2022-05-04 16:49 查看详情
容易混淆的CAP及ACID定义 (it.deepinmind.com)
CAP及ACID都有一些共同的概念:例如原子性,一致性等等。但也会带来一些问题,这些术语名字虽然是一样的,但背后的含义完全不一样。CAP是分布式系统的理论引申出来的,而ACID指的是数据库系统。而分布式数据库会同时提到CAP和ACID,这就产生了很多困惑。当有人提到“不能放弃一致性”,这到底意味着什么呢?我们先来看下ACID和CAP分别的定义是什么。
by @技术头条 2022-05-04 16:43 查看详情
Java IO类型 (it.deepinmind.com)
描述IO类型时经常会交替地使用非阻塞、异步等术语,但这两个词是有着很大的区别的。本文将从理论和实践两个方面来说明下Java编程里的非阻塞和异步IO。

TCP和UDP协议使用了套接字进行双端通信。Java的套接字 API则是底层操作系统具体实现的的适配器。兼容POSIX规范的操作系统(如Unix, Linux, Mac OS X, BSD, Solaris, AIX等)中使用的socket通信被称作伯克利套接字(Berkeley sockets)。Windows中的套接字叫winsock,它也是基于伯克利套接字,但增加了额外的功能用于支持windows的编程模型。
by @技术头条 2022-05-04 16:42 查看详情
见多识广,介绍Web开发中current开头的一些API属性 (www.zhangxinxu.com)
主要介绍 currentTarget、currentScript、currentTime、currentNode 和 currentSrc 这5个属性 API,有些是 JS 对象属性,有些是 HTML 对象属性,都挺有用的。
by @技术头条 2022-05-04 16:40 查看详情
iOS 开发者证书不受信任的解决方法 (zww.me)
网上搜了一下原因和解决方法,发现都写的啰里吧嗦还不把全部下载链接放出来,这里直接贴,把文中 2个 AppleWWDRCA 证书下载并导入即可。
by @技术头条 2022-05-04 16:36 查看详情
一个检测 json 合法性的脚本 (droidyue.com)
越来越多的配置都是使用 json 的格式,当我们修改好,最好是进行一下 json 合法性校验。
by @技术头条 2022-05-04 16:31 查看详情
frm和ibd文件数据库恢复 (www.xifenfei.com)
这次客户rm -rf /var/lib/mysql删除文件,删除一半及时终止,但是已经有很多mysql相关文件被删除,重要的ibdata文件已经被删除,并且客户尝试了大量的恢复工作,对该分区进行了大量的写入操作,导致后面通过对xfs文件系统进行分析,确认无法恢复对应的ibdata文件.比较幸运客户需要的核心的mysql库都还在(frm和ibd文件还存在)。
by @技术头条 2022-02-04 19:52 查看详情
流体系统 (blog.codingnow.com)
我们最近在开发的类似异星工厂的游戏中,一个重要的物流子系统就是流体系统。我个人觉得,它是所有子系统中最难实现的一个。
by @技术头条 2022-02-04 19:52 查看详情
C 中访问 Lua 配置表的优化 (blog.codingnow.com)
这两天写代码时用到之前写的一个对 Lua 配置表的 cache 模块 。感觉用起来还是不够简洁方便。我今天动手重新设计了一下。

需求是这样的:

项目有非常多的配置信息保存在 Lua 的 (树状层级的)table 中,大部分逻辑代码直接用 Lua 的语法便可直接访问。但是,有少量有性能要求的业务是在 C 中实现的,C function 中也需要读取这些存放在 Lua 中的配置数据。

配置项随着项目开发,变更非常频繁。如果我设计一个小语言,定义出配置表,用代码生成的方式把表项翻译成对应的 C/C++ 结构,再在 C side 根据 Lua 中的数据重建一组 C 数据也未尝不可。这就是 google protobuf 官方采用的方式(用代码生成的方式,根据数据的 schema 构建出 C++ 类,让 C++ 可以方便访问这些数据)。

但我不想搞得这么复杂(浪费?
by @技术头条 2022-02-04 19:51 查看详情
Mac 终端下 实现 安装 ipa 包到 iPhone 真机 (droidyue.com)
最近处理 Flutter 的开发工作,开始尝试使用 iOS 作为日常的真机调试工作。对于一个原技术栈为 Android的人来说,发现 iOS 有很多不太方便的地方。比如如何在 Mac 电脑上安装 ipa包到 iPhone 上。

相比来说,Android 提供了adb 可以很快捷的在 终端上执行安装。而iOS 我也希望有一个可以在终端上实现安装ipa的方式,摸索了一下,终于发现了一个可行的技术方案。
by @技术头条 2022-02-03 13:17 查看详情
ECS 中同类关联数据的处理 (blog.codingnow.com)
ECS 模式下最难处理的是同类 Component 之间有相互联系的情况。

最方便 ECS 处理的数据是相互独立的,每个数据单元都不和其它数据单元产生联系;如果多个数据单元会有故有的联系时,当可以把它们看作是同一个实体(Entity)下的不同组件(Component)时,那么就可以借用 Entity 的概念来处理它们。我们依旧可以按固定的次序去迭代这些数据。

但是,在复杂系统中,无可避免的,同类数据相互之间也可以产生联系。例如:场景管理中,节点之间有父子关系,计算节点的空间状态的过程对数据的遍历次序有要求。且计算过程还需要访问父节点的状态。解决这类需求是 ECS 框架的一大挑战。
by @技术头条 2022-02-03 13:12 查看详情
你不知道的CSS media查询与用户体验 (www.zhangxinxu.com)
本文介绍 4 个很多前端开发不知道的可以提升用户体验的 media 媒体查询语句,希望可以帮到大家的学习。
by @技术头条 2022-02-01 22:52 查看详情
Android 性能优化的术、道、器 (androidperformance.com)
谷歌搜索 「Android 优化工具」,你会找到很多与此相关的内容。他们的问题在于要么是内容高度重复、要么是直接讲使用方法,很少会给你介绍整体性的架构,一不小心就会让人会种「一个工具搞定一切」的错误认知。以笔者团队的多年经验来看,在性能分析领域这种银弹级别的工具是不存在的。工具在发展,老问题会以新的方式变样出现,不掌握核心逻辑的话始终会让你浮于技术的表面。
本文首先系统性的梳理性能分析中的可观测性技术,它涵盖数据类型、抓取方法以及分析方法等三部分内容,之后是介绍谷歌提供的「三大件」分析工具。目的是想让你了解不变的理论性的知识,以及与之对应的在安卓环境中可用的工具,这些可以让你少走一些弯路,直接复用前辈们的经验。
需要特别说明的是,对于性能优化肯定不止有这三个工具可用,但这个三个工具是我们平时用到的「第一手工具」。进行进一步分析之前,你都需要依赖这三个工具进行瓶颈定位,之后才应不同领域特性选择对应的工具进行下钻分析。
by @技术头条 2022-02-01 22:29 查看详情
Go: 关于锁的1234 (www.felix021.com)
其实锁很适合用来做套题,比如可以这么切入:sync.Mutex 是悲观锁还是乐观锁?

有些候选人不了解它们的区别,回答靠猜,缺乏逻辑以至于我都记不住。虽然这只是一个概念性的知识,但是却很能反映候选人的工作经验,比如读多写少的并发场景,乐观锁可以减少加锁冲突带来的开销。

当然大多数人还是知道的,于是可以继续问:你有了解过锁是怎么实现的吗?

很多人都能想到:维护一个初值为 false 的变量,当一个线程加锁成功的时候,将它置为 true ,就可以保证其他线程无法再获取。

逻辑是没错,但真正的问题是:两个线程同时检查,发现它的值都是 false ,如何保证只有一个线程会把它置为 true 呢?

这样的提问让不少候选人意识到,自己其实并没有真正理解锁。
by @技术头条 2021-06-13 23:27 查看详情
洋葱式信息安全观察:溯源(归因分析)与机器学习 (www.sec-un.org)
回顾往年的攻击事件,有报道称韩国平昌冬奥会APT攻击事件导致了奥运会网站的宕机和网络中断。

根据开源情报,该事件攻击者的归属问题,至今未有定论。在事件中攻击者使用的植入载荷Olympic Destroyer,其相关代码与Lazarus曾使用的载荷有部分相似,而美国部份媒体则声称该事件为俄罗斯情报机构实施并嫁祸给朝鲜。

该事件再一次展现了APT攻击者利用和模仿其他组织的攻击技术和手法特点,制造false flag以迷惑安全分析人员并误导其做出错误的攻击来源归属的判断。

网络攻击者,其手法随着不同的组织、个人的能力以及外部环境而多变,是否有一种通用的方法来进行综合分析,作为归因分析的指导呢?

狡猾的狐狸总是懂得隐藏自己,甚至嫁祸于他人。然而,“凡有接触,必留痕迹”,判断一起攻击所属的国家、地区、组织、黑客团体,通常需要所结合已知知识(威胁情报)和具体的攻击细节进行对比分析,最后做出结论。以下介绍几个常用的分析切入点。
by @技术头条 2021-06-13 23:26 查看详情
初探 Typescript 解析器 (www.alloyteam.com)
前段时间看了下开源组件 stryker 的源码,对 Typescript 的解析器产生了兴趣。这个开源组件是用来检查单测质量的,通过识别源码自动更改某些代码内容,然后看单测能否检测出来。Typescript 解析器做的,就是识别源码这一关键步骤。

于是花了些时间学了下 Typescript 解析器,感觉像打开一个新的大门,可以玩很多有趣的事情。
by @技术头条 2021-06-13 23:22 查看详情
一个有趣的内存泄漏案例 (www.alloyteam.com)
腾讯文档最近基于刚刚发布的 Webpack5 进行了一次编译的大重构,作为一个多个仓库共同构成的大型项目,任意品类的代码量都超过百万。对于腾讯文档这样一个快速迭代,高度依赖自动化流水线,常年并行多个大型需求和无数小需求的项目来说,稳定且快速的编译对于开发效率至关重要。这篇文章,就是笔者最近进行重构,成功将日常开发优化到 1s 的过程中,遇到的一些大型项目特有的问题和思考,希望能给大家在前端项目构建的优化中带来一些参考和启发。
by @技术头条 2021-06-13 23:17 查看详情
实践之后,我们来谈谈如何做好威胁建模 (tech.meituan.com)
对美团安全团队来说,引入领先的安全技术设计能力,构建全方位、多维度智能防御体系,是我们不懈追求的目标。美团有众多基础设施,核心业务系统也需要以成熟的方法论进行威胁评审。本文将着重分享威胁建模是如何帮助美团安全团队评估、发现大量安全设计的风险,以及互联网企业应该如何大范围地实施威胁建模并完整地进行落地。
by @技术头条 2021-06-13 23:17 查看详情