dxmnet的博客 http://blog.okbase.net/dengxm 学习Linux的七点忠告 http://blog.okbase.net/dengxm/archive/4447.html dxmnet 2014/4/7 15:44:51 1、不要“玩 Linux”

很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的软件他就想试用,每当新的版本出现,他就更新,然后用鼠标在新的菜单里选择从来没见过的程序来用用。

其实你是为了Linux而使用Linux,而没有找到正确的理由来利用 Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问题,而不是为了学习安装操作系统,不是为了测试哪个版本好用,不是为了“赶上潮流”,更不是因为你硬盘太大了,你想多占点空间。

如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因为你可能有更重要的事情需要做。

2、不用挑剔发行版本

很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。

其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上面的工作方式几乎是不会受到任何影响的。你常常听说 Debian 的更新比 Redhat 快,包比 Redhat 多,但是你可以比 Debian 更新还要快,直接到你需要的程序的主站点下载源码来编译就是了。

Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版本都是不错的。

3、不要当“传教士”

很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。因为各人的需要不同,生活的环境不同,你不可能得到一个定论。我们需要尊重别人的选择,这是你在进行任何对工具的讨论前需要提醒自己的事情。面对一些容易引起争论的东西:Word 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome,FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静。

你需要关心的不是你的工具是什么,而是你用它做了什么。精通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。

并不是喜欢一种东西就必须反对其它的。世界需要多样性,人们都需要FUN。用自己的兴趣去压制别人的,就会毁掉所有的兴趣。个人喜欢什么就用什么,完全没必要为这个争论。

不要做“传教士”!你说我现在就是在“传教”?冤枉啊~

4、直接从源码安装程序

很多人放着最新的源码不用,等着有人帮他做出 rpm, deb, 才能安装。我说你为什么不用源码编译,这样版本比 rpm 高的多,有很多新功能,而没有烦人的依赖关系。可是他说:“要是我用源码编译安装,卸载的时候就不方便了,会留下很多垃圾。”

&&&&为什么程序还没有安装你就想到卸载?难道你不知道这个程序是用来做什么的?你应该改变到处找程序来试用的作法,而应该先了解一下到底那些程序有同样的功能,听听别人的意见,看看它们各有什么长处和短处,然后挑一个最适合你的程序来用。

从源码编译安装程序,不但比你装rpm更适合自己的机器设置,而且它们一般会装到 /usr/local 目录,这样你以后如果换硬盘重装系统,也可以把以前 /usr/local 下的程序原封不动拷贝过去用。我的 /usr/local 下有 2G 之多的程序,你想要是我有一台新机器要重新安装,然后配置,得花费多少时间?实际上我曾经通过网络把它们传到一台新机器上,然后就出去吃晚饭,回来时我就得到了另一台一摸一样的 Linux 机器。

确实要卸载 make install 的程序怎么办呢?答案是直接删掉。别以为直接删掉程序会留下垃圾,引起“系统不稳定”。(btw: 这是谁教你的啊?呵呵。) make install 无非就是把可执行程序放在 /usr/local/bin, 把某些函数库放在 /usr/local/lib,把数据文件放在 /usr/local/share 下一个它自己的目录,你把这些东西都删掉就行了,不会留下垃圾,即使真的留下一点文件没有删掉也占不了多少空间,更不可能引起系统不稳定。UNIX 就是这么简单。

但是有几个程序不建议从源码安装,它们是 Mozilla, Open Office, ... 它们编译时会占用你几个G的空间和好几个小时的时间,这种花费我觉得是不值得的,因为你不能从编译得到更多好处,不如直接安装编译好的版本。

5、不要盲目升级

不知道这是心理作用还是什么,有的人看到比较大的版本号,就会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。结果很多时候把自己原来修改得很好的配置文件给冲掉了。新的软件又带来了新的问题,比如有一次我的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。

如果你已经配置好了一切,千万别再整体升级了,这会浪费你很多很多时间的,不值得。如果需要的话,你可以只把某些部件升级,比如内核,glibc, gcc, XFree86,...

使用 UNIX 的经典程序

好的程序一般都是可以很方便的在很多种 UNIX 上移植的,bash, VIM, Emacs, Mutt, FVWM, xterm, 都是这样。如果你用这些程序,你就可以在 Sun, HP, ... 等工作站上也装上,这样你在各种机型上的工作环境就几乎完全一样了!你不需要在 Sun 上面用 CDE,在PC上又换成 KDE,在它们上面都装一个 FVWM,使用相同的配置文件,就能得到一致的界面。

这些程序大部分都是久经考验的,是经过很多人多年开发的结果。它们功能完善,各种情况都考虑周全,绝对是你的好助手。

6、不要配置你不需要的东西

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。普通用户学习那些不经常用到的复杂的维护系统的工具,其实是浪费时间,学了不用是会很快忘记的!

我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,设置好 ssh, ftp 已经足够了,那样可以省去我很多麻烦。我从来不过度考虑“安全”,因为 Linux 缺省已经很安全了。我没有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命令行。

7、不用忙着看内核源码

除非你想研究操作系统,否则还是先把怎么使用 Linux 掌握好再说吧。我以前看了那么多内核源代码,写了驱动程序,结果最后发现我还是一只很多事情不能用 Linux 解决的菜鸟 吸取我的教训吧,你应该首先掌握 shell,Xwindow 的使用和原理,它们可不比内核简单。(完)(转自互联网bbs) ]]>
C++让女孩子走开? 火车时刻表 http://blog.okbase.net/dengxm/archive/4446.html dxmnet 2014/4/7 15:44:51
那次我作为甲方的一员与软件研发公司见面,对方有三个人,两女一男,其中一个女的长得不错,但给人的感觉是花瓶。还有一个女的,看样子是负责技术的,长得很普通,戴着眼镜,背都有点驼了,让人不觉感叹!

但是她的思路很清晰,技术讲得很到位。

第二次,一个星期后,她们又过来,这次拿来的是改了界面的新程序,根据我们的需要,已经改进了很多。我们老总都连连说,做得不错!

C++还是有女孩子做的。只是做C++的男孩子也好,女孩子也好,往往沉浸在程序的世界中,忽略了自身的形象!

火车时刻表 ]]>
C# 让WebClient使用gzip编码,并解压 http://blog.okbase.net/dengxm/archive/4445.html dxmnet 2014/4/7 15:44:51 client.Headers.Add("Accept-Encoding", "gzip, deflate");
string sUrl = "http://www.sohu.com";
byte[] byteArray = client.DownloadData(sUrl);

// 处理 gzip
string sContentEncoding = client.ResponseHeaders["Content-Encoding"];
if (sContentEncoding == "gzip")
{
ToolClass.LogMessage("gzip ok", page);
MemoryStream ms = new MemoryStream(byteArray);
MemoryStream msTemp = new MemoryStream();
int count = 0;
GZipStream gzip =
new GZipStream(ms, CompressionMode.Decompress);
byte[] buf = new byte[1000];

while ((count = gzip.Read(buf, 0, buf.Length)) > 0)
{
msTemp.Write(buf, 0, count);
}

byteArray = msTemp.ToArray();
}
// end-gzip

string sHtml = Encoding.GetEncoding(936).GetString(byteArray); ]]>
Visual Assist X 好东东啊! http://blog.okbase.net/dengxm/archive/4444.html dxmnet 2014/4/7 15:44:51
原版安装文件
http://www.wholetomato.com/binaries/VA_X_Setup1850.exe

Crack 文件(不需要积分)

http://download.csdn.net/source/3375864

我新装的 VS2010 很奇怪,C# 智能提示很好,但VC根本不提示,装上这个,方便多了! ]]>
[C#] 让 Panel 在滚动条拉动时画面就移动 http://blog.okbase.net/dengxm/archive/4443.html dxmnet 2014/4/7 15:44:51 panel1的滚动条,我鼠标按住滚动条,拉滚动条的时候,为什么画面没有动,要等鼠标松了之后,才动
我需要在拉的过程中,画面就要动
[Answer]
重载Panel1的 Scroll 事件,
private void panel1_Scroll(object sender, ScrollEventArgs e)
在鼠标拖动的时候,e.Type将是 ScrollEventType.ThumbTrack
而鼠标放开的时候 e.Type将是 ScrollEventType.ThumbPosition

如果你的电脑设置了 “拖动时显示窗口内容”,则在这两个事件都会产生窗口重绘,否则,只会在放开鼠标时重绘。

解决办法是,在Scroll事件时,强制控件刷新。
    private void panel1_Scroll(object sender, ScrollEventArgs e)
        
{
            panel1.Invalidate();   
        }
]]>
C# 编程中主窗口与子窗口的切换。WM6.5 与PC 平台的区别 http://blog.okbase.net/dengxm/archive/4442.html dxmnet 2014/4/7 15:44:51     比如说,主窗体创建一个子窗体,然后子窗体可以点击一个按钮隐藏自身,回到主窗体。
  
在PC平台上,C#代码如下:

  
// 创建子窗体
   Form2 form2 = new Form2();
  
// 显示子窗体
   form2.ShowDialog();
  
//子窗体返回
   this.Hide();


  而WM6.5 上,this.Hide(); 无效。经研究,使用以下代码达到同样效果。
 //  创建子窗体
  Form2 form2 = new Form2(this)
  form2.Show();
  form2.SendToBack();
 
// 显示子窗体
  form2.BringToTop();
 
// 子窗体返回
  form1.BringToTop();



附:调试环境的搭建
参考
http://mobile.51cto.com/windows-phone-257452.htm
 但要注意的是,必须装 vs2005 sp1 以上。
也可以安装 vs 2008
 但不支持 vs2010 ]]>
使用DHCP SNOOPING 防止私设的DHCP服务器分配IP地址 http://blog.okbase.net/dengxm/archive/4441.html dxmnet 2014/4/7 15:44:51 我们分析,可能是有人接入了路由器,并且错误地将路由器的LAN口连接到网络(应该用WAN口来连)

经过咨询厂家,我们的楼层交换机(H3C S3600)具有DHCP SNOOPING的功能。能够阻止私设的DHCP服务器(路由器)分配IP地址。

下面着手进行解决。
它有24个电口,4个光口,其中的1号光口是连接到核心交换机的,而合法的DHCP数据包应该从光口1分配来。

第1步:telnet 到网管地址,登录到交换机。

第2步:执行sys命令,进入系统态

第3步:执行 dhcp-snooping,打开dhcp窥探功能。

第4步:执行 int g1/1/1 进入要管理的光口。

第5步:执行 dhcp-snooping trust ,即信任该端口。

第6步: ret 返回用户态。然后 save 保存配置。

经过测试,在未开启这个功能的时候,如果故意接路由器的LAN口到交换机,则分配到了路由器的IP,开启之后,就只能分配到合法DHCP服务器的IP了。

火车时刻表 ]]>
HTC G7 手机刷机心得 http://blog.okbase.net/dengxm/archive/4440.html dxmnet 2014/4/7 15:44:51 (这个手机到手的时候,默认装了很多的程序,包括N多的电子市场和炒股软件(我不需要).
只余下20M空间给我使用,装几个应用就满了!)

于是先去无痛ROOT,网上都有教程,反正开头几次都失败了,但是没有变砖!最后刷成功的原因是,那个无痛ROOT的工具必须是要用3.2版的,用3.1和3.3版都不行!

然后是给卡分区.SWAP分0,EXT3分400M, 余下的给FAT32.

然后装ROM,开头装了一个Sense ROM,和我原来的ROM差不多,还不如原来的呢.

后来刷了一个失败了,进不了系统.怎么办.没关系.再冲刷一个别的ROM就可以了.
(刷ROOT过了,刷ROM是没有风险的,不会变砖.)

最后刷的ROM是 CM7.1 RC1 版.

这是一个根据谷歌原生系统高度优化的版本.开头有点不习惯,没有了Sense, 有些操作似乎没那么方便,但随后我就觉得它很爽!

1, 运行更流畅了.
 比如打开UC浏览器,以前的要3秒,现在1秒就开了.

2, 这是Android2.3版的.

3, 照相机功能增强了.
 以前那个照相机要手工半按轨迹球给他对焦,然后再按轨迹球拍摄,很容易控制不好,照得模糊,这个照相机能够自动对焦,拍出来的效果感觉清晰得多.

4, 轨迹球可以唤醒了.
 以前要用开机键唤醒屏幕.不好.

5, 有了更大手机内部存储.
 现在我大约装了40个应用,只用掉了24M的内部存储,还余下124M.这么算起来,还能装200个应用,呵呵.
 以前只装20个应用手机就满了!

6, 亮度能够自动调节了.
 以前手机亮度设置成自动,但还是不能根据环境来自动调整屏幕亮度.很麻烦,经常要在高亮与低亮度模式间手工切换.
 现在亮度设置成自动,它就能够根据环境亮度自动调整.


]]>
华为S6503交换机针对端口限速 http://blog.okbase.net/dengxm/archive/4439.html dxmnet 2014/4/7 15:44:51
但是以前是通过ip限速.效果不理想,因为某个端口达到上限后,仍然掉包.

换了一个办法.

通过网上查找的办法
-- 先定义ACL
acl mode link-based
acl name acl1 link
rule 0 permit ingress any egress any

-- 进入每个端口限速

int e1/0/2
traffic-l in link acl1 rule 0 4800

这句的意思是将上传速度限制到4800KB

经过这样设置后,再不掉包了,效果很好 ]]>
令人愉快的Eclipse编辑器(代码自动补全) http://blog.okbase.net/dengxm/archive/4438.html dxmnet 2014/4/7 15:44:51 不过多用了几天后。还是觉得这确实是一款相当优秀的开源IDE。

比如我输入 Canvas c
它就会自动给提示变量名。按个回车,就可以自动得到 Canvas canvas;

成员变量用m开头,那么
输入 Canvas mc
也会自动提示 Canvas mCanvas;

你输入 SurfaceHolder h
也会自动提示 SurfaceHolder holder;
省了输入很多字。

另外,比如 SurfaceHolder 这个类名。
也可以通过 Sur 然后再按下回车,就可以自动补全了。

如果你输入一个大括号
{
那它会自动添加一个对应的大括号
}
这样也不会引起大括号忘记输入了。

总之,它是在代码自动补全方面,是很智能的。


]]>