Atelier Gallery About

Atelier is under construction...
Previous list of old version: http://vifix.cn/vifix9/index.php?uri=vifix/atelier

<( ̄︶ ̄)>

宅一只,伪Geeker一只,写写代码,玩玩游戏,拍拍照片,看看动画~

有志于Web开发领域,对Web标准, Javascript, PHP, Python, Java, MySQL, Linux等技术感兴趣。

更多关于我的信息请点击此处

又是油菜花开时~

转眼间已经是五月快过去了,这组拍摄于一个月前清明踏青时的照片却一直没有发上来,在麻豆布丁同学的强烈催促下终于今天来发表了 – 。 -

Read the rest of this entry >>

CentOS 安装 KVM 因 nc.openbsd 不存在导致无法使用远程 virt-manager 连接的问题

这两天公司里面准备配置一台专门的机器作为开发这边的共同测试环境

虽然前段时间早就配置过真实的生产环境机器的kvm,但是发现这次有些东西还是想不起来了,所以还是记录一下

安装KVM本身没什么,在yum的帮助下完成即可:

yum install libvirt kvm

就行了,然后使用modprobe加载下kvm模块,并且启动libvirtd服务(或者重启也可以)

但是在接下去的用远程的virt-manager连接的时候会碰到远程管理无法连接的问题,使用virt-manager –debug可以看到错误输出如下:
Read the rest of this entry >>

简单的ssh-copy-id脚本(for osx)

Mac OS X没有ssh-copy-id,要对目标服务器上传一个公钥很麻烦,所以自己简单写了个,没什么技术含量,只是放上来方便下大家

Read the rest of this entry >>

Coreseek在GCC 4.7上编译不通过的问题

今天在archlinux在安装coreseek 4.1-beta时碰到的问题,在g++编译sphinxexpr.cpp时:

Read the rest of this entry >>

KVM + libvirtd 配置iptables端口转发

(标题图与文章正文没有关系! orz)

这个玩意儿不好好找文档看是真心不知道的,中文的iptables和libvirt的资源又比较零碎,所以特此总结下。

这两天在配置一个KVM虚拟机在宿主机(MAIN)上的端口转发,环境如下:

宿主机MAIN:
eth0 – 连接外网,有一个固定IP(例如12.34.56.78),并且可以被外网直接访问到
virbr0 – libvirtd自动建立的虚拟网卡,用于连接内网,IP:192.168.122.1

虚拟机VM:
eth0 – 连接MAIN的virbr0,IP:192.168.122.100
MySQL在端口3306上提供真实服务

现在要在外网上通过访问外网的MAIN的某个端口(例如12345),实现访问内网VM的3306,最初我想当然的在iptables.rules(CentOS位于/etc/sysconfig/iptables)里面增加了两条规则:

Read the rest of this entry >>

得瑟下~

最近在尝试ArchLinux打算作为自己工作的主力环境Kubuntu的替代,在配置KDE的时候竟然发现自己的一张曾经投稿的照片竟然入选了默认壁纸包,于是~这个必须要来得瑟下啊,献丑了献丑了啊 = 。。 =~~~

嘛,这个是具体的去年的活动链接: http://dot.kde.org/2011/11/20/plasma-workspaces-wallpaper-contest 看起来每个KDE版本的发布都会这样进行一次比赛的样子~

不过让我奇怪的是入选了咋也不邮件通知下呀 = 。。 =~ 虽然这样一个意外的惊喜也不错

自己一直是KDE(以及其它开源软件)的受益者和用户,如今也算为KDE贡献了回,只是没想到竟然是以照片的形式(而不是代码 = 。 =)

原图最初发表在:杭州,1月19日,雪

完整尺寸:

Read the rest of this entry >>

140byt.es

刚看到的一个很有趣的网站140byt.es,是一帮JS大牛秀js代码的网站,所有的代码的核心部分都在twiiter长度的140字节以内,有很多实用的代码,也有很多不实用——但是可以给写js的带来另一种思维,或者说只是纯粹膜拜的代码……

例如用正则表达式判断是否是质数(这个真的很神奇啊,正在解读中……):

function(a){return!/^,?$|^(,,+?)\1+$/.test(Array(-~a))};

140个字节核心的俄罗斯方块(应该微博上看到这个的不少了吧):
http://jsbin.com/egiqul/49

HTML5 修改浏览器url而不刷新页面

嘛,起因是黑子大叔在微博上的一条@信息,找起了这个的实现,看了一圈google的中文信息内似乎还没有怎么提到这个的内容,就发表上来。

详细效果就是类似于用Firefox4+/Chrome 5+/Safari 5+/Opera 11.5+登录新浪微博后看到的个人时间轴,在翻页时可以观察到这个效果,地址栏URL变动,但是页面没有刷新,用firebug观察也观察不到刷新整个页面,只有ajax请求的翻页数据。从先前的理解来说,URL的修改必然引起(请注意我不是在说通过锚点修改)浏览器重载页面,但利用HTML5新加入的history.pushState();history.replaceState();可以完全自己维护一个历史记录列表绕开历史记录完全由浏览器控制的机制,从而实现比锚点更加完美的一种页内更新的体验。

代码方面很简单,只要在需要修改url的地方插入一行:

window.history.pushState({"html":response.html,"pageTitle":response.pageTitle}, 'title', urlPath);
//三个参数,分别为:状态对象,标题(目前被浏览器忽略),地址

即可在历史记录里面产生一个新的历史记录(另一个replaceState方法参数完全相同,只是替代掉当前的状态)。
在体验上,非常接近于使用锚点(window.location = “#foo”;),但是mozilla的文档提出了以下三点好处:

  • 新的URL可以是和原始页面URL同域下的任何URL,如果用锚点,只能更新#后面的部分
  • 仅在需要时更新URL,锚点的历史记录在相同时不会创建(即当前已经是”#foo”的情况下,如果再将当前页面锚点设置为”#foo”,不会产生新的历史记录)
  • 可以记录下任意类型的数据,使用锚点的话将要自己维护一份历史数据列表或者把数据转码到一个字符串里

(翻译&描述的有点别扭,见笑了,不过其实应该自己也能体会到这些好处才是)

我自己实现的一个例子:
http://vifix.cn/atelier/demos/html5-update-browser-url-without-reloading-page

Read the rest of this entry >>

SimpleSnake – Hello, Android World

年末了,相对来说工作已经比较清闲,于是趁着机会研究了一下Android的游戏开发,花了一个下午写了这个贪吃蛇的应用。

使用的游戏引擎是libgdx,虽然目前看起来文档比较缺少,但是,最大的好处是可以在Winodows/OSX/Linux上运行,android上则只需要额外几行代码就可以运行,极大的方便了调试和跨平台的工作。

下载apk请点击此处 – simplesnake (必须要800×480的分辨率才可以正常运行,如果大于这个分辨率仍然可以运行但按钮将错位,低于这个分辨率则可能出现奇怪的问题并且按钮缺失,因为只是hello, world,所以也不打算进一步优化各个分辨率了)

另外推荐下libgdx原作者的博客badlogic,以及他写的书:google book豆瓣,像我这样的游戏开发初学者看看挺不错的。

一篇国产PC/Android游戏引擎LGame作者cping1982同学的介绍libgx的科普文章也很值得一看:http://blog.csdn.net/cping1982/article/details/6176191

Parted Magic

近来在朋友送了个512M的小U盘给我,在这文件动辄上G的年代,这小巧的容量显得并不是那么实用,于是一直在考虑到底该拿它来干吗。然后自己公司里面的PC因为是去年安装的kubuntu,当时出于可能仍然还会双系统的考虑,所以分区划分的太小,一年过去了已经渐渐的不堪用起来了,于是开始考虑把还没利用起来的仍然存在的ntfs分区合并入已有的ext4当中。以前做这种事情都是在Windows下面的Acronis Disk Director这个工具,这次打算在Linux下面处理掉这个问题。所以就google到了一个名为Parted Magic的Linux LiveCD发行版,从名字就可以看得出来,这是在模仿曾经的经典的分区软件Norton PartitionMagic的名字。

gparted是这个发行版最核心的应用,此外还提供了testdisk这个非常优秀的恢复软件(我曾经用过它的windows版本恢复过一个彻底被覆盖的分区表),当然还有其他很多和磁盘相关的应用(包括但不限于磁盘检查,磁盘备份,磁盘镜像等等等等等),并且可以使用firefox随时上网查相关的问题。

照着官网的说明,很容易就做成了自启动U盘,通过在gparted约一个小时的折腾(其中主要是因为分区位置变动所以其自动复制几十G数据时的消耗的时间),搞定了相关的问题,觉得此物还是蛮不错的,所以就写了这篇日志。

PS:  开始的时候还担心移动分区的位置可能会导致uuid变动导致grub2无法正常引导的问题,事实证明(操作前后进行了对比)这个是不会发生变化的,所以可以安心使用移动分区位置的功能(当然还是要小心操作啦~丢了数据还是伤不起的 = 。 =)