• Locale 和 LanguageTag

    “zh_CN”与“zh-CN”前段时间,在做一个国际化的项目时,关于中文语言是用 “zh_CN” 形式还是 “zh-CN” 形式来表示,团队里出现了一些分歧。借此机会,我查了相关资料,详细了解了有关规则。国际化与本地化国际化(Internationalization,通常被简称为 I18n)和本地化(Localization,通常被简称为 L10n)是两个看似熟悉但常常需要进一步查阅资料来真正理解的术语。两者虽然相关,但各有侧重点。对于软件系统来说,国际化是指在设计和开发时,通过一系列操作...

  • Linux Shell 编程

    本文源于团队内部的一次分享,对 Linux Shell 编程进行基本的介绍。基本的文件格式#!/bin/sh => 指定要运行的 shellor#!/bin/bash => bash 是功能更全的一个 shellfoo1=abc foo2=abc 123 => illegalfoo3='abc 123' foo4=1+2 echo $foo1 => abcecho $foo3 => abc 123...

  • 如何正确地设置 NTP 服务器

    Ceph Cluster 的 clock skew detected 问题这是一个由于 Ceph Cluster clock skew 引发的问题。我们公司的生产环境里有一个 3 节点的 Ceph Cluster 用来做对象存储使用。运行了一段时间,发现其中一个节点上的 OSD 经常过上个把月就会重启一次,系统也没什么异常,查来查去发现最可疑的就是这个节点有时候会报 ceph:health_warn clock skew detected on mon。由于我们的服务器都设置了每天通过定时...

  • supervisord 中的 open files 数量限制

    Linux 中的 nofile 设置Linux 系统通过 rlimit 来对一个进程可以使用的计算机资源进行限制,其中 nofile 表示单个进程可以打开的文件句柄数,默认值为 1024。 我们知道,Linux 系统下一切都是文件,这不仅包括了常规的文件,还包括 socket, pipe 等等,对于一些较大的应用,如数据库,Web 服务器等,1024 这个限制肯定是不够的。所以一般在初始化新服务器时都要进行修改,例如修改 /etc/security/limits.conf,把所有用户的 n...

  • 软件开发的“偶然”困难和“本质”困难

    No Silver BulletNo Silver Bullet – Essence and Accident in Software Engineering 是著名计算机科学家 Fred Brooks 的一篇著名论文。Fred Brooks 被称为IBM大型机之父,是著名软件工程著作《人月神话》的作者,在1999年获得了图灵奖。《No Silver Bullet》一文发表于1986年,作者认为,由于软件开发本质上的困难,在当时的十年内不会有技术和方法可以让软件生产力有数量级上(也就是十倍...

  • VIM 从入门到进阶

    VIM 的三种模式命令模式(Command mode)vim 打开后就进入这个模式,所有的输入会被当成命令,不能输入字符。命令模式下有3个选择: 使用各种命令对文本进行操作 按下 i a I A 等输入命令中的一个,进入 输入模式 按下 : 进入 底线命令模式输入模式 (Insert mode)这个模式下,可以像个正常编辑器一样,输入字符编辑。按 <ESC> 回到命令模式底线命令模式 (Last line mode)可以执行 Ex Command,包括保存文件,退出 vi...

  • 文本处理三大利器:grep awk sed

    在计算机编程和系统管理中,文本处理是一项非常重要的任务。grep、awk和sed是三种流行的文本处理工具,它们可以让你在命令行中快速处理文本数据。以下是这三种工具的简要介绍:Unix 哲学 程序应该只关注一个目标,并尽可能把它做好。 让程序能够互相协同工作。 应该让程序处理文本数据流,因为这是一个通用的接口。grepgrep(Global Regular Expression Print) 主要用来在一个文件中搜索特定字符串。grep 'test' file.txt # 输出 fil...

  • 使用 OpenSSL 发送 IOS 推送通知 Apple Push Notification

    苹果的推送服务的设计非常优秀和巧妙,开发者将消息发送到苹果的APN服务器,APN服务器将消息转发到设备上,设备与APN保持一个长连接即可,即保证了消息的实时性,又节省了系统资源,更省电。相比之下,Android这个粗放管理的耗电大户平台,直到2.2后才添加了类似的推送服务,而且还被墙了。苹果的推送模式如下图所示:iOS应用首先要请求用户允许推送通知,用户允许后,应用会获得一个32字节的token。应用开发者要推送通知到用户的设备时,把消息和token一起发送给APN服务器,APN服务器根据...