wenhsuan's profilewenhsuan's spacePhotosBlogListsMore Tools Help

wenhsuan

No list items have been added yet.
Photo 1 of 25

wenhsuan's space

Linux & Embedded
February 13

有趣的编译器

编译器(Compiler)是我们编程经常要用到的。它把高级语言编译生成汇编或者机器语言。例如GCC就是一个很好的编译器。
 
一般一个编译器由前端(front end)和后端(back end)组成。前端由词法分析器(lexical analyzer)和解析器(parser)组成,负责词法分析和解析。后端负责生成汇编语言。
 
编译器技术并不是古老的可以放在陈列室的技术。它是整个编程技术发展的基础架构(Infrastructure)。正是 GCC 的出现才推动了整个 GNU 系列技术的发展,包括现在的Linux。
 
现在火热的互联网浏览器(Web Browser)的竞争和发展不仅仅局限在桌面系统上,移动(Mobile)设备上的浏览器是成为新的竞争点。Google 推出的 Chrome 浏览器包含了一项叫做 V8 的针对 JavaScript 的 Just-In-Time编译器技术。这一技术大大提升了JavaScript的编译和运行速度,提升了手机等移动设备的浏览器使用体验。类似的JavaScript高速引擎,Apple 和 Mozilla 也推出了相应的技术。JIT编译器技术也应用在浏览器底层向量绘图程序中。例如 Firefox/Mozilla 的底层向量绘图库 Cairo
 
JIT编译器技术核心在后端的汇编语言生成器上。LLVM 是一个有趣并且强大的汇编语言生成器。How to Write Your Own Compiler 这个项目应用 LLVM 组成一个类Java语言的编译器。
 
Reference:
November 23

Ubuntu using wubi

周五火星了一把。从同事那里知道有wubi这样的工具。根据wubi官方网站的解释。

“Wubi is an officially supported Ubuntu installer for Windows users that can bring you to the Linux world with a single click. Wubi allows you to install and uninstall Ubuntu as any other Windows application, in a simple and safe way.”

在公司的电脑试了一下,果然很方便。对不方便分区的电脑非常适合。只需要占用7~10GB的硬盘空间。

November 17

有趣的Haskell

Haskell是一种有趣的函数(functional)编程语言。写程序就像在稿纸上演算一样。

语言的名字是根据逻辑学家Haskell B.Curry(1900-1982,老师是数学家David Hilbert)的名字命名。

有兴趣的可以下载它的解释器Hugs玩一玩。很小的软件,迷你版(minimal version for Windows)的只有1.4 MB。x86 binary for Linux 也只有3.4 MB。

简单的教程

August 11

Gnome 中的自动启动设置

debian中设置自动启动某程序或脚本不够简明。如果安装了Gnome (版本2.0以上),可以用Gnome来解决。
 
编辑home目录中.gnome2下面session文件。like:
$gvim /home/wenhsuan/.gnome2/session
 
Gnome有时在意外关机情况下,会将未退出的程序自动保存到这个文件中。重启动后这些程序会自动跳出来。也可以编辑这个文件删除Gnome自动保存的程序或脚本。
June 19

字节对齐问题

1.字节对齐基础
[字节对齐] of thieven 
2.控制字节对齐
#progma pack (2) /*指定按2字节对齐*/
...
#progma pack () /*取消指定对齐,恢复缺省对齐*/
详细仍见上面链接。
3.字节对齐问题容易发生在栈上。
>>  代码如下(wireless_tools.29 -- iwpriv.c):
>>>
>>> {
>>>  struct iwreq    wrq;
>>>  u_char    buffer[4096];    /* Only that big in v25 and later */
上面的代码就很容易出问题。
April 20

几种工具

flex
A fast lexical analyzer generator

bison
A parser generator that is compatible with YACC

gperf
Perfect hash function generator

icu
Unicode backend

SQLite3
SQLite is a C library that implements an SQL database engine

libcurl
Multi-protocol file transfer library

xslt
XSLT is an XML language for defining transformations of XML files from
XML to some other arbitrary format, such as XML, HTML, plain text, etc

March 21

networkmanager under debian

Debian 装好以后,默认会有个NetworkManager GNOME Applet的程序安装在任务栏面板上。debian装上以后我曾经看到过它运行了,有些动感的效果很漂亮。可以自从某一个时候,它总是显示没有网络连接,我的无线网络很明显是好的嘛。
 
昨晚又心血来潮想起这件事情。从网上找了些资料。终于搞明白了。
原来此NetworkManager 和 Gnome另一个网络设定工具network-admin是冲突的。
 
将配置文件/etc/network/interfaces中的项注释掉,就可以使用NetworkManager 了,它就不再显示没有网络连接了。
 
顺便秀一下自己的桌面。比较普通。
 
March 14

msmtp, TLS, gmail 和Git

有时Git发送email会设置msmtp为smtp server。而你若用的是gmail(R)的帐户就会遇到TLS 可信任服务器证书的问题。
 
例如$ vi .msmtprc
        tls on
        tls_trust_file /home/mychael/.certs/ThawtePremiumServerCA.crt
 
ThawtePremiumServerCA.crt从哪里来?就要参考[Mychael]的blog[msmtp, TLS, and ArchLinux]了。