(原本是想写篇关于 Wayland 的文章,后来越写越长感觉能形成一个系列, 于是就先把这篇背景介绍性质的部分发出来了。)

Linux 系统上要迎来 Wayland 了,或许大家能从各种渠道打听到 Wayland 是一个混成器,替代 X 作为显示服务器。 那么 混成器 是个什么东西,桌面系统为什么需要它呢? 要理解为什么桌面系统需要 混成器 (或者它的另一个叫法, 混成窗口管理器(Compositing Window Manager) ),在这篇文章中我想回顾一下历史, 了解一下混成器出现的前因后果。

首先介绍一下混成器出现前主要的一类窗口管理器,也就是 栈式窗口管理器(Stacking Window Manager) 的实现方式。

本文中所有桌面截图来自维基百科,不具有著作权保护。

早期的栈式窗口管理器

栈式窗口管理器的例子,Windows 3.11 的桌面
栈式窗口管理器的例子,Windows 3.11 的桌面

我们知道最初图形界面的应用程序是全屏的,独占整个显示器(现在很多游戏机和手持设备的实现仍旧如此)。 所有程序都全屏并且任何时刻只能看到一个程序的输出,这个限制显然不能满足人们使用计算机的需求, 于是就有了 窗口 …

2015年2月21日更新

上次介绍过 这个博客改换了主题 , 本以为这个话题可以告一段落了,没想到还能继续写呢。

寄宿在 Github Pages 上的静态博客通常有两种方案,其一是使用 Jekyll 方式撰写,这可以利用 Github Pages 原本就有的 Jekyll支持 生成静态网站。另一种是在 本地 也就是自己的电脑上生成好,然后把生成的 HTML 网站 push 到 Github Pages ,这种情况下 Github Pages 就完全只是一个静态页面宿主环境。

我用 Pelican 生成博客,当然就只能选择后一种方式了。这带来一些不便,比如本地配置 pelican 还是有一点点复杂的,所以不能随便找台电脑就开始写博客。有的时候只是想修正一两个错别字, 这时候必须打开某台特定的电脑才能编辑博客就显得不太方便了。再比如 pelican 本身虽然是 python 写的所以跨平台,但是具体到博客的配置方面, Windows …

透明计算 具体是什么,因为他们没有公开技术细节所以我并不知道,只是看 公开出来的演示视频 ,感觉似乎只要能从手机上远程登录系统桌面,就能算是透明计算了。 如果透明计算真是这个意思,那么我似乎已经用着这个技术很多年了嘛。

Xorg 上常用的远程桌面工具有很多,基于 VNC 协议的、基于NX的和基于 RDP 协议的都能找到, 直接 ssh X forwarding 效果也不错。只是这些方案的一个 不太易用 的地方在于,需要 通过 ip 访问到远程的电脑,所以在跨越 NAT 之类的情况下不太容易使用。

于是今天介绍一个使用方便设置也简单的方法: 通过 chrome-remote-desktop 在 archlinux 上使用远程桌面。这个方案的优势在于,借助 Google 的云端服务器(内部貌似是XMPP协议下的握手) 方便地实现了 NAT 穿透,无论什么网络环境基本都能使用。当然,要支持远程登录, 位于远端的登录的计算机必须一直开着 …

上个月就在 狗爹(godaddy) 上买了个自己的域名 farseerfc.me 准备用在这个 博客上,当时试着转到过这个域名,发现 自定义域名(custom domain) 只支持 http 不支持 https ,想着还要买自己的证书,于是就扔在了一旁。不用自定义域名的话, 放在 github.io 上是可以用 HTTPS 的。 今天在 #archlinux-cn 上受大牛 quininerlilydjwg 点播, 发现 cloudflare 有提供 免费的支持 SSL 的 CDN 服务 赶快去申请了一个,感觉非常赞,于是就换过来了。

设置的方法按照 这篇博文 说的一步步做下来,如它所述,用 CloudFlare …

2015年2月14日更新

前言: 新天新地,将一切都更新了 [1]

不知不觉间放任这边长草很久了,从上次 折腾主题 到现在都快三年了, 而从上次 写了篇告白信 到现在也有快两年了。 这期间曾经把主题配色从 Bootstrap 2 默认的 白底黑字改成了让眼睛更舒适的黑底白字,也不过是用 drop-in 的配色方案而已,没有本质上的改进。

洞中一日世上千载,两年里 Bootstrap 已经升上 v3.3 , 而 Pelican 则已经升到 3.5 了。 早就眼馋 Bootstrap 和 Pelican 中的诸多新功能新设计,不过无奈于时间有限只能饱饱眼福。

近日想写的东西越积越多,终于下定决心花了前前后后 两个月 的时间重新设计了一遍 Pelican 的主题,配合一些我觉得有用的插件。于是本博客就变成你们现在看到的样子了。 (以及本篇博文也用了两个月的时间写完,其间还发了几篇别的短文,算是恢复写博客的尝试吧 …

现在这里的界面风格要从 Google 在 I/O 2014 大会 上公布Android L 也即 后来的 Lollipop 说起。 他们在谈论界面设计的时候公布了他们的 设计准则: Material Design (中文非官方翻译 )。 当然这只是一些准则,总结并描述了之前在 Web 设计和移动端 App 界面设计方面的一些规范, 并且用材料的类比来形象化的比喻这个准则。关于 Material Design 的更多中文资料可 参考这里

看到 Material Design 之后就觉得这个设计风格非常符合直觉,于是想在这边也用上 Material Design。 但是我在 Web 前端科技树上没点多少技能点,所以想找找别人实现好的模板 或者框架直接套用上。在网络上搜索数日找到了这几个:

Polymer Paper Elements

Polymer
Polymer logo

Google …

这篇也是源自于水源C板上板友的一个问题,涉及Linux上的控制台的实现方式和历史原因。因为内容比较长,所以在这里再排版一下发出来。 原帖在这里

可以设置不带缓冲的标准输入流吗?

WaterElement(UnChanged) 于 2014年12月09日23:29:51 星期二 问到:

请问对于标准输入流可以设置不带缓冲吗?比如以下程序

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    FILE *fp = fdopen(STDIN_FILENO, "r");
    setvbuf(fp, NULL, _IONBF, 0);
    char buffer[20];
    buffer[0] = 0;
    fgets(buffer, 20, fp);
    printf("buffer …

今天尝试 KDE5 Plasma 的活动的时候无意间发现这个现象。 只要把活动按钮拖出桌面,它就会在桌面边缘来回跳动。 视频如下:

当然你可以把它再拖回来,所以这个问题还无伤大雅,只是卖萌。

比比之前 Gnome3 那个跳动的界面真是好太多了:

顺便,今天还看到一个卖萌的 KDE5 Plasma 静音图标的翻译:

简介

Pyssy 是用于 上海交通大学 饮水思源站 的一系列 Python 脚本和工具。

Pyssy 被有意设计为既可以托管寄宿在 SAE [1] 上,也可以在单机上独立使用。

项目地址: http://pyssy.sinaapp.com/

Github上的源代码地址: https://github.com/yssy-d3/pyssy

[1]Sina App Engine ,新浪云平台,类似 Google App Engine 的东西。

依赖关系

Pyssy 使用 Flask 作为网页服务器, 并且使用 Memcached 或者 Redis 作为抓取 水源Web 的缓存。

SAE Python 环境下请开启 …

今天在GitHub上闲逛的时候看到一个叫做 PyRuby 的项目。项目的Readme说得很好:

PyRuby - Some Ruby for your Python!
PyRuby is a simple way to leverage the power of Ruby to make your Python code more readable and beautiful.

Usage
All you have to do is import the ruby module:

import ruby
From now on you should be able …

这两天在饮水思源的C板,关于C++模板的类型转换的一个讨论,后面是我的解答。

原问题

今天在书上看到模板演绎的时候可以允许cast-down,于是我写了个东西:

template <bool _Test, class _Type = void>
struct enable_if { };

template<class _Type>
struct enable_if<true, _Type> {
    typedef _Type type;
};

class A { };
class B : A { };

template <typename T>
struct …

似乎一夜之间所有的 极客们 有了 自己Github主页Octopress 博客。就像所有人在他们的博客中指出的,静态博客的确比传统的WordPress方式具有更多优势。 自从看到这些 我就一直在想着自己搭一个 Octopress

但是似乎 Octopress 不适合我

一上手就被 Octopress的搭建步骤 烦到了。 RVM 是什么? rbenv 又是什么? 看来 Ruby 社区的快节奏发展已经超过了我的想象,他们似乎需要一套发行版管理器来调和不同版本之间的 Ruby 的兼容性问题。 虽然同样的兼容性问题在 Python 社区也有 [1] ,不过总觉得 Python 至少还没到需要一个发行版管理器的程度 [2]

真正的问题是我手上还没有一个可以让我随便玩的 Linux 环境(真的想要……)。 而无论是 RVM 还是 rbenv 似乎都只支持 Unix/Linux …