Category: Opensource

  • 用 MariaDB 替换 MySQL

    自从 MySQL 被邪恶的 Oracle 收购后, 貌似就到了后娘手里, 基本没什么发展. 不过还好, 原创班子已另起炉灶, 在 MySQL 5.5 的基础上做出很多改良, 发布了 MariaDB 5.5. 另外一个好消息就是终于看到了国人在开源圈子里的贡献: MariaDB 10.x 分支就包含了来自淘宝的两处贡献: https://mariadb.com/kb/en/what-is-mariadb-100/ <–在这页上找 taobao 即可. 希望这样的案例越来越多吧. 免费使用开源软件, 在事业成功之后回馈开源社区, 这是个良性循环. 目前我试用了 MariaDB 5.5, 是 MySQL 5.5 的完美替代品. 安装方法在此: https://downloads.mariadb.org/mariadb/repositories/#mirror=aarnet_pty_ltd&distro=Debian&distro_release=squeeze&version=5.5 另外如果用 Ruby 的 mysql2 gem 的话, 需要安装 libmariadbclient-dev(debian/ubuntu). 而如果 innotop 这个小工具不灵的话, 很可能需要安装 libterm-readkey-perl. 🙂  

  • 在 Linux 中充分利用多核 CPU 来转码

    上回写的<听美剧, 练英语听力>之后, 发现忘了放个批量处理的脚本. 下面补上, 顺便练习一下多核心协同处理. 嗯, 手机都4核了不是? 用到的命令类似: avconv -i your.mkv -vn -acodec libmp3lame -ac 2 -f mp3 your.mp3 简单的 bash 单循环写法: ls *.mkv |while read i; do avconv -i $i -vn -acodec libmp3lame -ac 2 -f mp3 $i.mp3; done 这就只用到了一个 CPU 核心. 如果将 avconv 放到后台执行就可以做到多进程, 但又不方便控制进程数, 当进程数远远大于 CPU 核心数时就可以体验一下一台服务器快被烤熟时的感觉了. 后来发现 xargs 支持指定数目的进程, 简直是无法要求更多了: ls *.mkv…

  • 用一秒钟解数独(Sudoku)

    最近要热身一下准备做编程工作了, 想起来以前曾计划写个程序解 Sudoku 但一直拖拉也没做成, 那说做就做吧. 首先我从手机里的 Sudoku 游戏里抄了一道高难度的题目, 写成九行九列的一个方阵. 然后找到已知的数字, 猜测未知的数字. 基本算法是递归. 经过一些优化, 从第一个能解题的版本的 4.6 秒改善到第三版的 1.1秒. 改天再战, 希望能进 1 秒内. 源码我放 GitHub 了, 这里就不重复贴了.  

  • 笔记: Linux 简单的网关脚本

    这个现在用到的机会不多了, 因为无线路由器什么的都是现成的网关了. 但如果要在一台 Linux 主机上建一些虚拟机, 可能还用的到. eth0 是外网网卡, br0 是局域网网桥. #!/bin/sh #this is /etc/network/if-up.d/gateway PATH=/usr/sbin:/sbin:/bin:/usr/bin # # delete all existing rules. # iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # Always accept loopback traffic iptables -A INPUT -i lo -j ACCEPT # Allow established connections, and those not coming from…

  • 简单的 Shell Singleton 脚本

    有的时候, 多线程能提高性能, 但偶尔也可能希望有且只有一个线程在运行, 例如系统维护脚本, 如果前一个脚本还没有完成, 而下一次检查时间到了, 那不小心同一个脚本可能就会被运行多次了. 最近发现 pidof 命令很适合此目的, 下面是样本脚本: #!/bin/bash script_name=`basename $0` if [ “$(pidof -x $script_name|wc -w )” -gt 2 ]; then echo ‘More than one instance is running. Exiting…’ exit 1 fi echo ‘Just me alone, get to work…’ for i in 1 2 3 4 5; do echo $i sleep…

  • Ubuntu 12.10, 双屏以及AMD HD 5670显卡

    Ubuntu 12.10 已经发布很多天了, 而我最近却被它折腾的不轻. 好消息是, 不像之前的版本, 12.10 终于能在我的 Xeon E3 上正常启动了(以前版本会在检测显示模式时死掉), 而且对双屏的支持也达到了开包即食的程度. 系统的显示控制面板: 但是毕竟不是真正的硬件显卡在做加速, 因此显示速度可谓爬行, 当然, Unity 效率也不高. 我于是去下载 AMD 的显卡驱动. 这时, 我会羡慕 Windows 用户了, 因为在 Windows 下装个最新驱动一般就没问题了. 我在新安装的 Ubuntu 12.10 系统下安装 AMD Catalyst 12.8/12.9/12.10 几个最近的版本, 均告失败. 不幸中的万幸, Linux 桌面挂了并不是非得进入”安全模式”才能修复. 按 Ctrl + Alt + F1 进入命令行模式, 用下面命令卸载 AMD Catalyst 驱动程序. sudo service lightdm stop…

  • 笔记: Linux CLI 点滴

    尽管使用 Linux 很多年了, 我还是经常发现: 哇, 原来还有更方便的方法! 1, 调用前面一条后台执行命令的 PID: $! 是的, 就是这么简单. 如果想终止前面一条后台运行的指令, 那么 kill $! 就可以了. 我以前还有模有样的用 ps aux | grep 呢… 2, 重复上一条命令: !! 就是说, 如果敲了一条很长的指令, 结果是忘记了 sudo, 原来我会按 ↑ 呼出上一条命令, 然后按 Home 将光标放到行首, 再嵌入 sudo; 现在只需要 sudo !! 即可了. 3, 显示进度: 一些命令例如 wget 会很好的显示下载进度, 但不是每个命令都如此友好. 例如 mysql, 当你导入一个巨大的 sql 文件时, 除了等待还有什么办法呢? 这时就用上…

  • 在 Debian 6 上安装 GroundWork

    GroundWork 是很漂亮的 Nagios 前端, 并增加了很多易用的功能(单纯的配置 Nagios 很头疼对吧). 而且根据目前 GW 的销售方式, 管理50台设备以下的情况可以免费试用, 提供 Email 即可: http://www.gwos.com/downloads/core/ 在 Debian 6 上安装 GW 时还是有些小问题, 就是 PostgreSQL 提示SHMMAX (最大共享内存?)值不够大. 按照如下方式调整一下, 即可安装: sysctl -w kernel.shmmax=2147483648 sysctl -w kernel.shmall=524288 sysctl -p 第一次运行会提示要求输入 License, 如果之前提交了 Email 地址的话应该已经收到了, 抄过来就可以了. 另外 check_icmp 这个命令有时候会出现”setuid or root”一类的问题导致误报. 按照如下方法可修复. chown root:nagios check_icmp chmod 4750 check_icmp 尚未没发现其它问题. 😀