别让细节出卖了你


教养其实很琐碎,都在生活的细节之中。而出卖一个人的教养,也正是这些细节。即便是那个最终上了断头台的路易十六王后,不经意间踩到了刽子手的脚,也会下意识地说一声“对不起”,如此难得的尊贵,虽说将生命输给了历史,却将尊贵留给了千秋后世。

Reference

前两天在公司的食堂无意中注意到了两个画面:

有一个中年女性,着装朴素,静静地坐在食堂的餐桌上吃午饭,临走之前,她将桌上的杯子,盘子,所有垃圾都整洁地归拢到餐盘中送去餐具回收处,方便了服务人员和后续排队用餐的人。重点是,公司食堂有专门的后勤人员负责整理餐桌、处理餐具的回收,公司里是没有要求员工收拾整齐方便他人。

另外一位女性,着装时尚,行为干练,很有一副知性女人的范儿,只见她在桌上垫了一张白纸,然后把手机搁在桌面,一会儿,她接了个电话,对周边用餐的气氛毫无顾忌,大声地讲了足足将近二十分钟,电话结束后,没几分钟她就离开了食堂的作为,但她的座位却是杯盘狼藉。

虽说无可厚非,但前后两者的行为对比起来,实在难以不让人唏嘘。 Continue reading “别让细节出卖了你”

Advertisements

有趣的Shell字符串


 

#!/usr/bin/env bash
str=$1
if [[ "$str" = "" ]]; then
     echo "1 empty"
fi

if [[ "$str" = " " ]]; then
    echo "2 empty"
fi

if [[ "$str" = "0" ]]; then
    echo "3 empty"
fi

if [[ "$str" = "00" ]]; then
    echo "4 empty"
fi

if [[ "$str" -eq 0 ]]; then
    echo "5 empty"
fi

if [[ "$str" -eq 000 ]]; then
    echo "6 empty"
fi

if [[ "$str" -eq '0' ]]; then
    echo "7 empty"
fi

if [[ "$str" -eq '00' ]]; then
    echo "8 empty"
fi
## show results
1 empty
5 empty
6 empty
7 empty
8 empty

Linux启动过程与initramfs


Linux启动过程概述

这里先简单列一下 Linux 操作系统启动的全过程:

  1. 按下电脑的电源键后,电脑通电,BIOS启动;
  2. BIOS读取硬盘的MBR,运行启动扇区中的代码,旧系统往往需要自己写启动扇区,而新系统基本上由专用的启动软件接管了,在 Linux 世界中,目前都是用的 Grub2。由于启动扇区空间太小,放不下太复杂的代码逻辑,所以 Grub2 也使用了多阶段启动的策略;
  3. Grub2 负责将操作系统内核加载到内存,如果有必要,也会把 initramfs 文件加载到内存,然后将控制权交给内核;
  4. 内核进行初始化,内核的初始化过程结束后,就会把控制权交给/init程序,从此进入用户空间;
  5. 因为内核先是将 initramfs 文件挂在为根文件系统,所以刚开始运行的/init程序其实是 initramfs 文件中的,所以该文件需要的重要的初始化脚本、内核模块、配置文件等,都位于 initramfs 文件中,这也是为什么很多时候我们修改了某些配置文件后,需要先更新 initramfs 文件再重启操作系统才会生效;
  6. initramfs 文件中的/init程序负责挂载硬盘上的文件系统,然后再把根文件系统切换到硬盘上的根分区,再运行/sbin/init程序,这时所有程序、配置文件、脚本都是使用的硬盘上的了,当然,网络文件系统也是同理。可以看出 init 程序的运行也是一个分阶段的过程;
  7. /sbin/init程序负责系统的初始化、各种服务的运行、用户的登陆等等;
  8. 如果需要运行图形界面,则/sbin/init程序会运行 Display Manager,在 Fedora 中是 gdm,在 Ubuntu 中是 lightdm。然后 Display Manager 负责启动整个图形界面。

Continue reading “Linux启动过程与initramfs”

如何划分大中小型项目?


如何划分大中小型项目?

  • 微型:只是一个人,甚至是半日工作在几天内完成的软件;
  • 小型:一个人半年内完成的 2000 行以内的程序;
  • 中型: 5 个人在 1 年多的时间内完成的 5000-50000 行的程序;
  • 大型: 5-10 人在两年内完成的 50000-100000 行的程序;
  • 甚大型: 100-1000人参加用4-5年完成的具有100,0000行的软件项目;
  • 极大行: 2000-5000 人参加, 10 年内完成的 1000 万行以内的程序;

以上摘自:《软件工程概论》   郑人杰、殷人民编

Openssl使用方法及其加密算法编程


OpenSSL 是一个开源项目,其组成主要包括一下三个组件:

  •     openssl:多用途的命令行工具
  •     libcrypto:加密算法库
  •     libssl:加密模块应用库,实现了ssl及tls

openssl可以实现:秘钥证书管理、对称加密和非对称加密。 Continue reading “Openssl使用方法及其加密算法编程”