Category: Free software

  • 利用 bash 命令做 SQL 数据修补

    如果是把一个 DB 或者一个 table 从一个服务器送到另一个, 那么使用 mysqldump 命令就可以了. 但有的时候, 需要的数据可能只是若干条记录, 就不能用 mysqldump 了. 奇怪的是我 google 了一番居然也没找到很方便的方法. 求人不如求自己吧, 下面是用 bash 命令的解决方法: mysql <database> -uroot -e “select * from <table> where <condition>…” |tail -n +2 |sed -e ‘s/^/(“/g’ -e ‘s/$/”)/g’ -e ‘s/\t/”,”/g’ |while read values; do echo “insert into <table> values $values”; done 然后把输出的 SQL 在目标服务器上运行即可. 记得把<…

  • 开始用 Arch Linux

    用 Linux 的好处是选择多多, 但有的时候确实很难选, 俗称”挑花了眼”. 我基本上的要求有: 相对新潮, 各个模块的版本都是最新的才好(当然, 不是说服务器上的系统) 桌面是(或者可以是) Gnome Shell. 很多人恨 GS 恨得牙龈都发炎了, 但我对 GS 情有独钟 社区活跃, 有问题多半能 Google 到结果 没有商业气味, 没有大公司在背后控制 这样筛选下来 Ubuntu 太商业化了, 奔着下一个 WindowsXP 的路子去了; Fedora 社区不给力; Debian 太保守… 唯有 Arch Linux 几乎完美. 唯一麻烦的是, AL 相对高端, 没有”一直点 Next”类安装界面, 安装 AL 是从 fdisk, mkfs, mount, chroot 这样的命令开始的(当然比起 Gentoo 的 gcc, make,…

  • 用 Synergy 玩多屏幕

    最近真是稀罕, 很多百年不遇的事说发生就发生了. 吃了个午饭, 结果我回来发现桌面的显示器黑了一个. 机会难得, 顺便改良一下工作环境好了. 设置一个双屏幕系统是很容易的, 但加上一台笔记本就有些鸡肋了, 因为我还要转个角度才能正确的把双手放在打字的位置上. 于是我想到了 Synergy, 一套利用网络共享鼠标和键盘的软件. 两年前我曾经尝试过一次, 不过使用体验不是很好, 于是放弃了. 这次安装和配置 Synergy 都非常顺利, 可见软件两年里完善了许多. 在一台电脑上按照 server 方式启动 Synergy, 而另一台上作为 client 启动, 并设置好屏幕间的空间关系, 鼠标指针就可以在几块屏幕间”穿梭”了. 使用了一阵子后, 我才意识到, 从一台电脑上复制的内容, 甚至无缝的可以粘贴到另一台电脑窗口内呢. 另外 Synergy 是夸平台的, 所以 Windows/Mac/Linux 电脑都可以用 Synergy 拼接起来.  🙂

  • 在 Debian Wheezy 上用 Discourse 搭建论坛

    以新建的 VM 为例, 下面是安装直到运行  的一些必要步骤 1, 首先是系统必须的软件包, 这里我用nginx作为HTTP服务器, 其他的也可以的: sudo apt-get install build-essential nginx imagemagick 2, Discourse 需要的数据库和缓存. Wheezy 缺省的 postgresql 是 9.1 的, 可以参考这个来装 9.3: sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3 postgresql-contrib-9.3 sudo apt-get install redis-server 3, 添加 discourse 系统/数据库用户, 建DB, Discourse 将以此用户的身份运行(git clone 部分就省略了). sudo adduser discourse –home /var/www/discourse sudo su – postgres -c…

  • 擎天柱与大黄蜂

    前些时, 我打算升级一下我的笔记本电脑, 作为给自己的生日礼物, 老婆很给力的批准了. 于是我稍做筛选, 购买了正在促销的 ASUS R501J, i7 处理器 + 15″ 1080P 的屏幕 + 16GB 内存, 我觉得够用了. 只是… 预装的是 Windows 8, 而且有 UEFI + SecureBoot. 微软希望依赖 SB 来阻止我卸载 Windows 安装 Linux, 但很显然他也不得不给自己留个后门, 我只需要照做就是了. 于是轻松关闭 UEFI + SB, 又看到了熟悉的 BIOS, 那安装 Fedora 20 吧. 好笑的是每一种企图剥夺用户自由的”科技”都会美其名曰为了保护用户不受”未授权”的软件的”侵害”, 哈哈哈. 安装 Fedora 20 在 R501J 上就像在茶餐厅点菜一样容易, 键盘上的功能键/屏幕/触板/无线网络/摄像头…都直接可用了, 不过意料之内的是独立显卡似乎被闲置一边了. 原来这就是传说中…

  • LVM 快照(snapshot)的第二种用法

    之前我已总结了 LVM 快照的第一种用法: 利用 LVM 在线抓取 MySQL 数据库快照, 也可以扩展到任何需要在线生成磁盘快照的应用. 自 LVM 2.0 以来, 镜像分区不只是只读的, 而且可写. 而写入快照分区的一种应用就是造”沙盒(sandbox)”, 在 Xen VM 环境的具体步骤如下: 1, 假设供测试的虚拟机 test, 分区是 /dev/vm/test-disk, 为其生成 10GB 快照分区 test-ss: lvcreate -s -n test-ss -L10G /dev/vm/test-disk 2, 将 test 虚拟机关机, 可以 ssh root@test “shutdown -h now” 或者 xm shutdown test 3, 复制 /etc/xen/test.conf 到 test-s1.conf, 并将磁盘分区…

  • 读后: 大教堂与市集

    这本书完美的解答了若干关于开源(open source)的问题. 作为一名开源软件的死忠, 我只能遗憾没早些读完它. 书中的很多观点和论据我就不重复了, 只说说我曾经赞同的错误论点吧. 首先, 我曾经以为, 开源软件的存在是离不开闭源的商业软件的, 因为给开源软件做志愿者是没有收入的, 所以这些”志愿者”们其实是靠商业软件的销售来养活的. 这是错误的. 首先, 不是所有的软件开发人员都是以开发商业软件为工作的. 举个最简单的例子, 淘宝网这类电子商务企业雇佣了很大一批开发人员, 但是淘宝有卖什么”淘宝”牌的软件么? 貌似没有. 他们卖的是服务. 类似还有众多为大企业例如金融/电信工作的开发人员们.因此为软件供应商例如微软工作的开发人员只是一个小部分而已. 那么大企业为何乐于使用并回馈开源软件? 淘宝使用开源的 MySQL 数据库, 并将自己的一些改进回馈到开源社区. 那么这样做淘宝有损失么? 基本没有, 因为淘宝的优势绝对不是使用了一个开源的谁都可以使用的数据库软件. 而如果淘宝拒绝交出对 MySQL 的改进, 那么 MySQL 升级版本就没有这些改进, 那么淘宝每次升级(因为升级版本可能有其他人提交的改进)就不得不自己打补丁, 自己再测试了. 所以开源是互利的开发方式. 我从前以为某某公司为开源贡献就是因为有某种途径获利的阴谋论是不可靠的. 要为商业软件付费是因为要保护知识产权? 当然我是反对盗版的, 但保护知识产权绝对不是以 CD-KEY + 激活等等给用户添麻烦的理由. 而软件的生命在于用户群, 没人用的软件就是死掉的软件, 它的知识产权也就成了笑话. 这样的例子就是 UNIX. 曾经百花齐放的 UNIX 系统, 因为各家厂商为了”保护各自的知识产权”, 各自的改进没有相互共享, 后来导致…

  • 利用 LVM 在线抓取 MySQL 数据库快照

    续 小试分身 MySQL Replication, 上次是按照 MySQL 教程做的, 比较死板(或者说, 安全), 但需要锁住数据库, 也就是说, 用户一端的感觉就是服务器出问题了… 而如果通知用户服务器要下线一段时间的话, 又会引起不明真相的用户的莫名猜疑. 那么就需要一种在几秒中之内完成生成镜像的操作, 于是我就想到了 LVM snapshot. Google 了一番, 我看到已经有成功先例了, 步骤如下: 1, 确认 MySQL 的数据区(缺省 /var/lib/mysql) 是在 LVM 上, 假设是 /dev/VOLUME_GROUP/data 2, 开一个 MySQL session, 执行并记录 show master status 的输出: flush tables with read lock; show master status; 3, 在另一个 terminal 执行: lvcreate -s…