Showing posts with label 原创. Show all posts
Showing posts with label 原创. Show all posts

Monday, May 13, 2013

IBM Model M SSK

周末终于拿到淘宝上买的键盘了,IBM Model M SSK比较稀缺的IBM Model M。

花了不少时间清理干净,清洗键帽,因为是单层键帽,晾了一天一夜都没有干,不经意一甩键帽才发现里面还有蛮多水,就费力一个一个键帽的甩,把里面的水甩干。这样过了个把小时就干透了。

由于是通过快递再加上好几天的海运,淘宝的老板给困的结实,可是忘了在键盘外面包上泡沫,快递过程中对键盘的损害还是可以看到的。不过不影响键盘的使用。

我以前没有用过任何的机械键盘,这个是我第一款的机械键盘,看网上说用Model M来打字比用Cherry MX Blue的感觉好的多,所以我也就不准备再去买一个Blue Switch来试一试了。使用了一阵子的感觉真的是很棒,声音打一点还是可以接受的。只是晚上在家里用就有点显吵。

现在的问题是这个PS2的键盘拿到公司,用公司的KVM上的PS2 To USB转换头,出现延迟,或者键打不出来的问题,根本不能用,网上搜了一下,发现是IBM Model M耗电比较厉害,要112mA,而普通键盘也就耗电1.2mA.需要买品牌比较好的转换头。手上现在没有,只有先把键盘放在一旁,等我买到转换头再用了,小郁闷!

Tuesday, April 30, 2013

完全使用VIM一个月

之前的文章讲的,我是因为考虑要买一个HHKB键盘而决定使用VIM的,到现在已经使用有一个月了。虽然最终没有买HHKB键盘,不过学会了VIM这个也是一个让我觉得很得意的成就。现在自己很庆幸当时狠下心来学习了VIM,真的不愧是编辑器之神。

自己从毕业工作开始,使用过好几种编辑器,SourceInsight,Eclipse,UltraEdit,SublimeText,NotePad++这个单子还可以更长,这几个是自己感觉比较好的编辑器。期间也有试着学习Emacs,每次都放弃了。VIM自己一路来都在用,可是只是在需要远程简单编辑Linux上的一些文件时候用一下,VIM从来没有成为自己的主编辑器。这些编辑器中我使用最多的是SourceInsight和SublimeText。SourceInsight在看代码方面,特别是大型项目代码的时候,真的是有很大的优势,可是其编辑功能真的是太差了。SublimeText,我从看到它的第一眼就喜欢上了,可能是因为它的配色很和自己的胃口吧。自己特别喜欢SublimeText的Ctrl+P功能,Ctrl+D,多选功能,Column Edit,Per Project Setting。还有就是它选择丰富的插件系统,因为其插件支持Python,插件开发变得相对容易。还有就是其跨平台支持,这些有优点让SublimeText出道不到几年已经变成一个十分流行的编辑器,自己这次转换到VIM,在选择插件的时候就是参考了已经习惯的SublimeText来做选择,只有在VIM里面基本实现了日常开发需要的功能,才能够抛弃别的编辑器,100%使用VIM。

使用VIM,就是要全键盘工作,在编辑代码的时候抛弃鼠标,要想实现高效的浏览和编辑,定制自己称心容易记的组合键是必不可少的。你可以轻易的在网上找到别人的VIM配置,自己加以借鉴修改成适合自己的配置。自己的VIM基本配置一开始就使用没有修改过的The ultimate Vim configuration (vimrc) 只是插件从一开始我就选择自己要用的。在使用过程中,再慢慢修改到自己喜欢的配置。慢慢的,你的VIM配置就十分完整了。

VIM的学习曲线相对于除Emacs外的编辑器是很陡的,可是你一旦掌握,你就真心会喜欢上VIM,你就恨不得所有的日常使用程序都想要VIM的Key Binding。实际上学习VIM跟学习任何别的软件或者编程语言一样,没有什么捷径,唯一的途径就是使用,让自己天天使用,强迫自己只使用VIM,遇到问题就Google一下,找打解决办法。以我自己的经验来讲,当我强迫自己只使用VIM来做工,只用了一个礼拜,自己就很习惯使用VIM了。

对于一个代码编辑器来讲,最重要的几样功能只要实现了,就基本上是一个可以使用的编辑器了,高级功能是要在实际需要的时候再学习的。因为我是做C编程的,而且项目比较大,光C代码文件就有1万多个,所以,以下几样是我认为不可少的几样功能:

  • 代码跳转,跳到定义地方
  • 快速代码查找,在整个项目的所有文件内查找
  • 漂亮的代码显示
  • 自定义组合键
  • 丰富的扩展性 (加入特有的编译构建系统,或者特有的外部命令)
  • 项目管理,或者对不同的文件夹进行不同的设定 (Per Project/Dirctory Setting)
  • 快速打开文件
  • 基本的代码补全提示(对于大型项目真的是实用的)

SublimeText对于上述的功能都有很好的实现,而且SublimeText也还有Vim的KeyBinding。可是自己对于这种混杂的Key Binding不是很习惯。在习惯了Vim后,虽然Vim没有实现所有我喜欢的SublimeText的功能,我还是果断的选择了Vim。

对于我选择的插件和我选择的Vim Key Binding我会再另外写一个blog来讲述。希望有更多的Programmer跟我一样,最终选到一个自己十分喜欢的编辑器,不管是Emacs还是Vim,还是别的,只要你真的喜欢,并且能完成你需要的所有功能,那就用它吧。

Wednesday, April 17, 2013

HHKB和VIM


前一段时间在网上游荡的时候被别人下毒,看中了HHKB键盘,网上编程人员对于此键盘都是推崇备至,引为终极解毒利器,于是心痒痒准备从日本Amazon购买一个Pro2。在下了决定后面几天,基本上每天都要花一些时间到网上找关于HHKB的文章看看,过了几天,没有下单去买,因为对于HHKB已经退烧了。退烧不是因为忽然觉得这个键盘不好了,而是因为考虑到如果我买一个HHKB,自己应该很快就会习惯其布局,那么以后自己不管到哪里,都要准备一个HHKB布局的键盘,否则就会严重不适应,特别是那个特别的Backspace键,一个使用率特别高的键,一旦适应HHKB的位置,那到标准键盘上面岂不是每次都会打出来一串"\"来。而自己现在又没有钱买上两个HHKB,一个放家里,一个放公司。于是,我就退烧了,因为开销太高。

在考虑HHKB期间,让我有一个意外收获,就是自己现在改用VIM了。起因是因为当时决定要用HHKB键盘,那当然是用VIM或者Emacs来作为编辑器才能够发挥其特殊布局的好处。基于自己已经对VIM有一点基础,于是决定最终选择VIM。网上参考了不少文章,终于把VIM的配置和插件搞定,这次是我认识VIM以来做的最好,最完整的一次配置。选择插件都是尽量在相似插件里面选择自己最喜欢的,而且考虑到Sublime Text有很多好功能,特别是自己天天使用的功能,比如Control+P,Project,Ctrl+D,就优先安装了那些实现这些功能的插件。现在自己对这次所做的配置是十分满意的,自己需要的功能都在VIM里面实现了。然后就是对键盘做了一些Remap,对于Ctrl和Esc应该怎么remap自己是考虑和实验了好几种方案,这个可以另外写一篇文章来单独写,自己最终只是选择了把CapLock换成Ctrl,而用Ctrl+[来作为Esc,这个是VIM内置的。在强制自己用了VIM两个礼拜了,我不得不说,我现在很喜欢VIM,简单快捷的编辑真的是让编辑代码感觉很爽。自己在VIM里面做了好多remap,尽量把常用的已经命令remap到Home Line的键上面。

我现在用的VIM配置已经放在github上面:http://github.com/yongzhy/vimconfig 自己还在慢慢的在使用过程中做一些修改,不过基本的,必须的插件都已经在了。还有一个没有解决的问题是代码自动补全,我倾向于用clang来做代码补全提示,不过由于公司的代码结构的特殊性,自己还没有找到一个好的解决办法,所以这个功能就先不这么急。

Friday, August 24, 2012

用golang生成key不是大写的json数据

前一段时间用go写了一个查看perforce的history的小程序,go没有什么成熟的ui包,所以我选用web界面,程序本身做两件事情,一个后台更新perforce的history到本地的sqlite数据库,另外一个后台当作web服务器,处理client的request,生成json数据。

在写这个程序的时候,发现要生成json数据的结构里field名字首字母要大写。因为是一个自己用的小程序,也没有去深究到底可不可以生成首字母是小写的json数据。今天逛stackoverflow的时候看到有人问这个问题,看了看,原来go的json包有解决办法,只是自己看文档的时候没有怎么注意罢了。要加tag来做这件事情。

下面这段示例代码就的output:

{"field_a":1234,"field_b":"hello"}

package main

import "fmt"
import "encoding/json"

func main() {
    type Test struct {
        A int `json:"field_a"`
        B string `json:"field_b"`
    }
    A := Test{1234, "hello"}

    b, _ := json.Marshal(A)
    fmt.Println(string(b))
}

Thursday, August 23, 2012

个人第一个github项目

今天终于在github上有了一个真正的自己的项目,虽然是一个很简单,很小的项目,不过还是值得纪念一下。

项目地址: https://github.com/yongzhy/goploticus

这个是libploticus的Go语言封装。

ploticus的主页

A free, GPL, non-interactive software package for producing plots, charts, and graphics from data. It was developed in a Unix/C environment and runs onvarious Unix, Linux, and win32 systems. ploticus is good for automated or just-in-time graph generation, handles date and time data nicely, and has basic statistical capabilities. It allows significant user control over colors, styles, options and details. Ploticus is a mature package, available since 1999, and version 2.40 has more than 12,000 downloads to date. Ploticus was discussed in this 2008 review on Linux.com.

因为是第一次封装C的API,折腾了一阵子才发现要让cgo编译代码,import “C” 必须是单独一行.

可以编辑的代码:

  1. //#cgo LDFLAGS: -lploticus

  2. //#include <libploticus.h>

  3. //#include <stdlib.h>

  4. import "C"

不可以被编辑的代码:

  1. //#cgo LDFLAGS: -lploticus

  2. //#include <libploticus.h>

  3. //#include <stdlib.h>

  4. import (

  5. "C"

  6. )

什么东西,都要试了才真正知道。

Friday, March 13, 2009

给andLinux配置网络

安装了andLinux,因为要安装新软件,要联网,所以花了一些时间做了配置,具体步骤如下:
  1. Windows, "Network Connections", enable network sharing on your main network card (the one for internet access), by doing so, IP address for "TAP-Colinux" will changed to 192.168.0.1
  2. Modify "TAP-Colinux", set network mask to 255.255.0.0 (the 3rd byte is 0, not 255), also add your DNS server and WINS server IP address
  3. Run "regedt32", do the following changes, andLinux key is not there, so you need to create by yourself.
         [HKEY_LOCAL_MACHINE\SOFTWARE\andLinux\Launcher]
         "IP"="192.168.11.150"
         "Port"=dword:00001f91
  4. In andLinux console. edit /etc/network/interfaces, change
         iface eth1 inet static
         address 192.168.11.150
         netmask 255.255.0.0
         gateway 192.168.0.1
  5. edit /etc/resolv.conf to add your DNS server
  6. edit /etc/hosts, /etc/profile to change windows host IP address to 192.168.0.1
  7. /etc/init.d/networking restart


Thursday, March 12, 2009

在Ubuntu上面安装DBDesigner4

在windows上面用了DBDesigner4了以后,感觉很好用,于是今晚费了一些时间给我的Ubuntu也安装了一份,Ubuntu上面安装比较麻烦,根据不同的电脑,具体步骤可能不一样,这里把我做的步骤列下来供以后参考(我的机子上面已经安装了mysql server和mysql client)

第一部当然是让DBDesigner能够跑起来:
  1. Go to http://www.fabforce.net/downloads.php to download file DBDesigner4.0.5.4.tar.gz, unpack it.
  2. run ./stardb, then view log file at ~/.DBDesigner4/DBD4.log to check what are the library missing (libXft.so.1, libstdc++-libc6.2-2.so.3, libqt.so.2)
  3. libXft.so.1 : ln -s /usr/lib/libXft.so.2.1.2 /usr/lib/libXft.so.1
  4. libsdc++-libc6.2-2.so.3 : Go to http://packages.ubuntu.com/zh-cn/gutsy/libstdc++2.10-glibc2.2 to download the library  file and install
  5. libqt.so.2: Go to http://prdownloads.sourceforge.net/kylixlibs/kylixlibs3-borqt-3.0-2.tar.gz?download to download the package, then unpack, then

    • sudo cp kylixlibs3-borqt/libborqt-6.9.0-qt2.3.so /usr/lib/libborqt-6.9-qt2.3.so

    • cd DBDesigner4/Linuxlib

    • sudo rm libqt.so.2

    • ln -s /usr/lib/usr/lib/kylix3/libborqt-6.9.0-qt2.3.so libqt.so.2


第二步就是让DBDesigner能够顺利连接MySQL

  1. Go to http://www.devart.com/dbx/download.html to download dbExpress MySQL driver for linux, unpack,  sudo cp libsqlmda.so.4.40 /usr/lib/
  2. Under folder DBDesigner4/Linuxlib, do

    • sudo rm libmysqlclient.soln -s /usr/lib/libmysqlclient.so.15 libmysqlclient.so

    • rm libsqlmy.so

    • ln -s /usr/lib/libsqlmda.so.4.40 libsqlmy.so
  3. Run ./startdb,
    ”Database”->”Connect to Database”->"New Database Connection"->"Advance"
     Set GetDriverFunc: getSQLDriverMySQL
接下来就是修改stardb.desktop,把里面的路径改一下,然后把startdb.desktop放到桌面就可以了