-
用一秒钟解数独(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 尚未没发现其它问题. 😀
-
一键完成淘宝/Ebay商品图片的批量制作
参考链接: http://www.imagemagick.org/script/command-line-processing.php#geometry 相关文章: http://raynix.info/archives/1098 前提, Linux环境, Gnome桌面, 支持 Nautilus Shell Script, 安装了 ImageMagick. 貌似Ebay和淘宝一样, 商品图片都是要正方形的. 虽然有很多图片工具可以批量处理图片, 我还是喜欢直接在 Nautilus 文件管理器里面通过多选+右键一次完成商品图片的处理. 对于没耐心的朋友, 请直接把下面的代码另存为 ~/.gnome2/nautilus-scripts/your-script-name.sh 并给与运行权限, 就可以了. #!/bin/bash #Multiple selection support! for param in “$@” do #Check if it’s a file if [ -f “$param” ] then #get directory dir=`dirname “$param”` filename=`basename “$param” ‘.jpg’` #Check if it’s a…
-
调用Yahoo API监控外汇汇率
参考链接: 1, http://kuppalli.wordpress.com/2008/11/15/get-live-currency-value-using-yahoo-api/ 2, http://www.gummy-stuff.org/Yahoo-data.htm 刚到墨尔本时, 我壮了壮胆子, 在 Subway 吃了一顿, 然后用我招商银行的信用卡结了账. 感觉还不错, 心想至少拿着人民币也饿不着了. 但回家一看账单, 招行先把账单上的澳元换美元, 再换人民币, 最后算给我的汇率就比当时的澳元/人民币汇率高的多了. 还是找个汇率低的时候多换点吧. Yahoo! 上提供了各种金融数据的接口, 有股票/能源/期货自然也有外汇汇率. 我参考了一下API, 查询澳币/人民币汇率的方法是: http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=AUDCNY=x 上面的链接在浏览器中可以得到如下数据: “AUDCNY=X”,6.7402,”3/5/2012″,”3:40am” 其实就是CSV格式了, 所以可以看出在URL里的”f=sl1d1t1″就分别指定了代号, 汇率, 日期, 时间这四个字段. 再往下就很简单了. 用 curl 获取数据, 再写入 MySQL 数据库就完成了采集功能. 而对比最近的几次汇率, 如果突破阈值就发送邮件, 也就完成了基本的监控功能了. 下面是我写的 PHP 文件, 用 Cron 设定间隔执行即可, 例如5分钟一次: */5 * * * * /usr/bin/php /home/raymond/path/to/cron-task.php…