Archive for the ‘5-软件 Software’ Category

Ubuntu 9.10+BCM4315成功破解WEP网络

我的联想U150的本本的BCM4315网卡一直没有得到BT4和BT3的完美支持,就连Ubuntu 9.10装好后也需要自己再装Restricted Driver。这个驱动装好后好像不能被aircrack系列支持。我认为只要把4315驱动搞定了,就能在任何Linux系统下应用aircrack。那么第一步就是把b43驱动驱动起来。
寻找了很久以后找到了这个帖子:http://ubuntuforums.org/showthread.php?t=1266620
使用2.6.32.12的kernel加上b43的驱动就可以完全搞定它。
1、32位系统的内核:

http://mirrors.kernel.org/ubuntu/pool/main/l/linux/linux-image-2.6.32-12-generic_2.6.32-12.17_i386.deb

http://mirrors.kernel.org/ubuntu/pool/main/l/linux/linux-headers-2.6.32-12-generic_2.6.32-12.17_i386.deb

http://mirrors.kernel.org/ubuntu/pool/main/l/linux/linux-headers-2.6.32-12_2.6.32-12.17_all.deb

2、安装内核:
sudo dpkg -i linux*2.6.*.deb
3、下载compat-wireless驱动(http://linuxwireless.org/download/compat-wireless-2.6/),照着它的说明,我用最新的编辑无法成功,用compat-wireless-2010-01-26.tar.bz2即可。
4、编译:
make
sudo make install
5、卸载老的驱动
sudo make unload
6、刷新驱动
sudo depmod
sudo depmod -a
7、打开PIO模式:
echo "options b43 pio=1" | sudo tee -a "/etc/modprobe.d/b43-thingy.conf"
8、屏蔽STA驱动:
echo "blacklist wl" | sudo tee "/etc/modprobe.d/wedontneednonossdrivers.conf"
9、启动时打开B43驱动:
echo "b43" | sudo tee -a "/etc/modules"
10、打开/etc/rc.local, 在exit(0)之前加入
modprobe -r b43
sleep 3
modprobe b43
然后就可以用aircrack的工具进行破解了。
spoonwap在ubuntu的sudo环境下回提示表达式不正确,解决方法是
sudo ln -sf bash /bin/sh
然后享受吧,我用了1分多的时间把自己的无线网络破解了,隔壁的网络没有活动的客户端破解相对繁琐,改日再研究。

解决SVN在Windows 7下commit出错的问题

自从操作系统升级到Win 7以后,SVN Commit就经常出现类似错误:

Commit
G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharp\Data\WorkData.cs
G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharpGUI\Forms\About.cs
G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharpGUI\Forms\MainForm.cs
G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharpGUI\Forms\MainForm.cs
G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharp\Data\WorkData.cs
G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharpGUI\Forms\About.cs
Commit succeeded, but other errors follow:
Error bumping revisions post-commit (details follow):
Can't move
'G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharp\Data\.svn\tmp\entries' to
'G:\doc\projects\estar\trunk\vs\EstarSharp\EstarSharp\Data\.svn\entries': The
file or directory is corrupted and unreadable.

说文件损坏或者无法读取。这是一个很令人费解的问题,到底commit是成功还是失败了?网上查询一番后找到有朋友遇到相同的问题并且给出了解决方案(见:http://schleichermann.wordpress.com/2009/12/09/svn-tortoisesvn-cant-move-the-file-or-directory-is-corrupted-and-unreadable-windows-7/)

原因是Win7启动了索引服务和SVN Commit时候移动文件冲突了。解决方法是关闭Win 7的对SVN仓库的索引服务。

打开Win7的控制面选,选择“索引选项”,然后选择“修改”,将G:\doc\projects\estar全部反选即可

好像突然闲下来了

最近事情多哦,抓紧时间把弯管机工艺申请的专利说明书写完叫了,又花了两个小时把中期检查的PPT做了,然后随时当接线员,软件的BUG一个一个的出来,接下来又一个一个的消灭了,再后就研究OpenCASCADE用在五轴五联动仿真上的可行度。
一件事情一件事情的理清楚好了。
弯管机工艺专利其实不是我做的,写专利说明书还是按照以前遗留的一些文档复制粘贴,改改格式,重新做作图,就OK。核心的东西写不来,一个函数上5000行的程序看不懂,也没有必要看懂。更悬的学术派的什么说法我弄不懂,胡扯罢了。
中期检查的事情让我想起我们的开题报告,开什么题哦,检查也是敷衍,本来认认真真做的PPT就让检查的给敷衍了。
软件的BUG是最近比较头痛的事情。还好早就有大量的准备。
首先是软件的LOG系统发挥了很大作用,在设计之初就采用了自己写的一个LOG系统。虽然说功能很简单,但比没有强多了。
其二是指导厂商去客户那儿了解客户出问题的具体原因,不要就是说“软件卡死了,软件有问题”这种根本无法确定原因的问题。要得到故障发生的具体时间,越精确越好,方便定位时间。另外要保证是电脑上的时钟,而不是客户手上的时间,搞不好今年2009年电脑还是2008年呢。
第三是要有解决问题的耐心。因为客户在温州,我在成都,而且我手上没有现成的设备供调试。所以所有的程序修改工作都是“瞎蒙”的。但这个“瞎蒙”不是指随便乱猜,这样只会使程序越改越糊涂,厂商和用户会越来越没有信心。力求做到解决一个问题就不再会出现了。关键就是如何正确的分析LOG文件了。最开初设计的LOG文件加工后会变得异常的大,经常加工一天就几个G,中间有些大量垃圾信息是在while循环中生成的,将这些去除,再优化和规范LOG的格式,便容易分析多了。
对于LOG的添加也是在不断地测试、不断地试用当中逐步添加的。起初根本不知道哪儿需要LOG、LOG记录的密度等等。在后面看LOG的时候会逐步明朗的。
那么离线情况下如何进行调试呢,有些时候是没办法的。还好我这里在前期设计的时候就做了一个简单的虚拟机床模块,可以模拟运动控制卡、IO卡的动作。当时用了两三天的时间制作,并在后期进行了维护。现在看来这个模块起了很好的作用,一些简单的流程上的问题就直接在虚拟机床上测试即可。对于一些疑难杂症,就只有靠更透彻的分析日志,特别是多线程的时候,更要仔细的检查GUI、底层线程、和状态机的配合。
最后就是要认真的记录出错的原因。因为软件越到后期出的问题就更是稀奇古怪,没有良好的注释和版本管理,肯定会修正了一个问题又带来N多的其它问题。总结了一下整个软件的设计,还是有不太满意的地方,但目前修改的话已经不太现实。所谓吃一堑长一智,下个系统开发的时候会更关注于整个框架的结构,毕竟,这些都不是靠书本就能学来,实战才能让你理解为什么书里面说的是对的,为什么是错的。
OpenCASCADE目前还没有找到合适的路子去仿真五轴数控,恐怕还需要学点数学的东西,刀具的包络面能够出来了,大部分事情就解决了。

Fix Ubuntu installation hang when detecting file system

My Ubuntu hanged every time when detecting file system. Sometimes even I can't see the GUI of Kubuntu. I found out that when it hanged my hard disk was reading something. I encountered this problem several years ago, but the detecting process ended not very long after the "Detecting file system" dialog. This time, after 10 minutes waiting, no response. I had to power off my PC.

Last time I thought the problem was caused by non standard or problematical partition. I remembered that I had one logical partition between two primary partitions. I fixed this problem and the installation went on.

But the problem was not the same as my last time, I fixed had a regular partition. I found out that I had some disk errors so I "chkdsk" first my drivers. No luck. I had no ideas about this. I tried to search the problem but no one had the same issue I met. So I had to figure it out by myself.

I tried to unplug the disk first and then after the liveCD desktop showed I plug it so I can see the GUI interface. Just after the "Detecting file system", the hard disk was still reading something without a stop. I switched to another console and type "top" to find the most CPU consume program. One of them is "ntfsresize". So I killed this program. But it appeared again. I killed it until no new "ntfsresize" was shown. And finally I saw the partition. Then the whole installation went on smoothly.

So, this problem must be caused by the "ntfsresize". I didn't know what's wrong with my disk or partitions that "ntfsresize" need to read it again and again. I even did not need to resize my ntfs partition. Next time, kill it first~

OpenEmbedded console-image 编译成功

我是才接触OpenEmbedded不久,也算是个菜鸟。看到这么方便的东西以为bitbake xxxx就可以了,结果哪知道这个才是唐僧刚刚上马,遇到的妖魔鬼怪还多着呢。这里总结一下我最近bitbake console-image所历经的磨难。

IMG_0117

IMG_0118

IMG_0119

1、准备

  • 一个超级好的网络是必不可少的,否则当你什么都下载不了的时候你就知道什么是痛苦了。
  • 一个4核的CPU是很有必要的,当然如果有钱可以买个core i7更好
  • 如果想在编译的时候能够打发一下时光,建议安装vmware。特别建议用7.0的技术预览版(网上找找看有没有,我是vmware邀请测试的),因为可以支持大于2个CPU。
  • 留至少80G连续的硬盘空间。
  • 选一个比较吉祥的日子,准备好耐心

2、下载和建立好local.conf

从OE的官方git源clone一个副本,这个步骤我就省略了,但是记得经常git pull。我的local.conf的MACHINE定义为mini2440,DISTRO定义为openmoko。想编译一个openmoko出来玩。

3、bitbake console-image

然后bitbake就会工作了,期间肯定会遇上小的妖魔鬼怪,什么preferred version not found之类的,只需要改变一下conf/distro/conf文件里面的preferredxxxxx.inc文件就可以了。具体是什么文件可以用grep xxxx -r .来搜索,当然这你得有一些基本的linux尝试。

其他的问题比较多的是:

1、编译出错。我想这不是我的错,如果在recipes的相应组件中找到了更新的版本,可以使用另外的版本来替换。替换的方法是修改PREFERRED_VERSION_xxxxx的值即可。一般使用高点的版本就会OK。

2、没有本地的工具支持。有些编译项目需要本地支持。上次编译mtd-utils就遇到了本地有一个工具没有安装。如果看到了有些错误位于i686目录(有这个字样的),就可以怀疑是本地有些工具或者库没有安装,从而不能正常编译。懂点脑子把东西装上应该就会对。

3、版本不兼容。有时候包与包之间有可能不兼容,方法是把出错的包在网上搜一下,例如这个编译mtd-native的错误就是由包之间不兼容引起的:http://projects.linuxtogo.org/pipermail/openembedded-devel/2009-January/007571.html

4、其它问题。有时候编译中途出了问题(例如电脑死机、意外重启、停电等)会造成一些莫名其妙的温长天,把tmp文件夹删除了再编译,看会不会OK。当然删除tmp文件夹要有点耐心,文件太多了。

如果想在晚上通宵运行,那么加一个-k参数就好,这样第二天早上再来处理那些莫名其妙的问题。

写这篇文章的时候我只记得这么几个问题了,还有一些另外的小问题,但也都是很容易解决的。多多搜索,或者利用邮件列表来解决。

现在开始另一站了,编译bitbake x11-office-image。

外面下雨了,这个国庆真是恼火~

每月能够买两本微型计算机,没钱买个导航软件?

最近一直在找盗版的导航软件用,原因是手机上现有的地图太老了,有些路给你乱指,估计走错路花在上面的油钱都不止那么点了。也实在是恼火,塞班平台上的导航软件明显比WM平台造孽很多。R66只有2008-Q3的地图可以用,凯立德破解用不了或者就是白的,Garmin也装不了。倒是如果自己有能力,可以试着破解一下WDA版本的凯立德,如果都破解了那么其他软件我想也不用那么费劲了。

最重要的是还没这能耐。

还好WDA版本的凯立德是正版的,只是导航要2元每次,或者15元包月,电子狗功能也要15块钱,不给钱可以自己找个副驾驶给你说怎么走也行。想想还真是有点搞笑,15块钱的油只能开30公里,只能买1.5期的微型计算机(话说现在微型计算机越来越“广告”了),在美联外面只能吃1.5顿饭。这些都能消费起。唯独买个导航的买不起~~~

奇怪了。

凯立德这样做其实也很好的,走的分期付款的路线。15元包月不用一次性付出那么多,而且一个月用着不爽也就那么15块钱嘛。地图更新也挺快,在享受便利的同时为什么不能付费呢?

神奇。

估计是盗版的中国(中国的盗版)把我们害了。都用的是盗版的,软件不值钱。

我想想自己买过的正版的软件,小时候买得多。依稀记得以前的CSC教育软件、金山的WPS、翻译软件、蓝点LINUX等等,还有很多,既不清楚了,还有一张光盘里面装了很多软件的那种,在什么联邦软件买的,估计也是正版的。WinXP买过一次,买笔记本被强迫的。

其实常用的软件并不贵,贵的心理。如果Windows一天只需要0.5元,或者花一顿饭钱买一个月,也是挺好的事情。可惜太贵了,一次性就给你说要XXXX或者XXX(>200),心里面就觉得不爽了,不买,太贵。一年24本微型计算机算下来,10*24=240块钱,出去卖废品下来的几块钱,也要花230块钱以上。不觉得贵,只是因为没有算这笔账而已。

希望有一股风,能够引导正确的消费。我估计不久,云计算等服务平台架设上来以后,提供了真正便利的服务,就像现在手机一样,收收座机费,收收通话费,也是合情合理的。

只是,我不知道,软件这个摸不着、称不了重量、复制起来超级容易的东西什么时候才能走上正轨。

这次国庆,我准备少吃一顿饭或者多骑30公里自行车,包一个月凯立德,看看究竟它值不值。


Vmware 6.5 + Ubuntu 9.04 vmtools正确安装方法

由于6.5版本的vmware的vmtools的默认安装存在一些问题,貌似是和新的kernel不怎么兼容,所以无法实现屏幕自动缩放、拖拽等功能。在国外网站上搜索了一下,经过实践,发现这样可以解决问题:

sudo aptitude update
sudo aptitude install build-essential linux-headers-$(uname -r)
cd /cdrom
cp -a /media/cdrom/VMwareTools* /tmp/
cd /tmp/
tar -vxzf VMwareTools*.gz
cd vmware-tools-distrib/
sudo ./vmware-install.pl

metaWeblog同步博客遇到的问题

最近有一个迫切的需求,需要同步几个博客。目前我有的博客是本站,还有hesicong.cnblogs.com和www.csdn.net/hesicong共三个。其后两个由于各种问题长久以来没有得到更新。我的需求就是写一个软件能够将wordpress的文章同步到cnblogs和csdn(成为次博客)。对于主次博客都有的文章修改次博客为主博客内容,对于次博客没有的文章按照时间新建一个。从而实现博客同步。

技术上使用metaWeblog就可以实现上述目的,选用python的xmlrpclib可以方便的进行xmlrpc操作。做一个控制台的小程序足够了我使用了。

然后开始技术实验,发现:

  1. wordpress支持metaWeblog很好,可以实现所有的功能。从wordpress可以通过metaWeblog.getRecentPosts函数得到所有的文章。
  2. cnblogs也支持metaWeblog,也支持的很好。cnblogs也支持我的语法高亮。但遗憾的是:第一:metaWeblog.getRecentPosts函数最多能够返回100个文章。而我的cnblogs目前有230篇文章,很显然,cnblogs限制了文章数量;第二:metaWeblog.newPost函数即便Post结构中有dateCreated,但cnblogs的主界面中依然按照当前时间计算,造成文章时间对不上号,顺序混乱。
  3. csdn就是个垃圾,metaWeblog表面上支持,暗地里出问题。metaWeblog.getRecentPosts,metaWeblog.editPost都无法用,提示User not exist。仅有metaWeblog.newPost可以用,但csdn的blog的语法高亮无法用,页面很难看。

所以,想实现我的目的通过metaWeblog看来是没希望了。除非cnblogs调整文章数量限制,csdn希望从垃圾变成战斗机了。

附我写的一个测试代码,不完善,仅作为参考:

import xmlrpclib

class Metablog:
    def __init__(self, url, username, password):
        self.username=username
        self.password=password
        self.url=url
        self.server=xmlrpclib.ServerProxy(url)
        self.posts=None

    def getAllPosts(self):
        print "Getting all posts from "+self.url
        self.posts=self.server.metaWeblog.getRecentPosts('', self.username, self.password, 9999999)
        print "found "+ str(len(self.posts)) +" posts"
        return self.posts;

    def getAllPostTitle(self):
        if self.posts==None:
            self.getAllPosts()

        ret=dict()
        for post in self.posts:
            ret[post["postid"]]=post["title"]

        return ret

    def getPost(self, id):
        for post in self.posts:
            if post["postid"]==id:
                return post

        return None

    def newPost(self, post):
        self.server.metaWeblog.newPost('', self.username, self.password, post, True)

    def editPost(self,postid, post):
        self.server.metaWeblog.editPost(postid, self.username, self.password, post, True)

    def delPost(self, postid):
        self.server.metaWeblog.deletePost('',postid, self.username, self.password, True)

def syncBlog(b1, b2):
    b1Titles=b1.getAllPostTitle()
    b2Titles=b2.getAllPostTitle()
    for key1,value1 in b1Titles.iteritems():
        print "Blog1 title: "+value1
        for key2,value2 in b2Titles.iteritems():
            print "\tBlog2 title: "+value2
            if value1==value2:
                print "Syncing, blog 2 postid="+key2
                b2.editPost(keys2, b1.getPost(key1))
                break

        print "Blog2 has no article equal to title :"+value1
        print "Add new "
        b2.newPost(b1.getPost(key1))

    print "Done sync"                    

wpBlog=Metablog("主站地址", "用户名", "密码")
cnBlog=Metablog("从站地址", "用户名", "密码")
syncBlog(wpBlog, cnBlog)

装个WIN7惹了一大帕拉麻烦事情

最近C盘空间已经只有最后10%了,我的习惯是50G的C盘空间只要用得还有5G了,就可以重装了。好吧,也是时候了,前几天下载了WIN7还正愁没有时间装呢。

刻盘,浪费一张DVD;刷BIOS,刷成DELL OEM的,破解正版;重启;进入安装界面。

噩梦来了。

在磁盘分区的时候,由于WIN7需要一个额外的分区,而现在的盘没有更多的空间了,所以简单的可以把C盘删除了再新建就好。我以前用XP的时候就知道微软的分区那是一个造孽,一旦以你的分区稍微有点不标准就会把磁盘搞得一塌糊涂。比如我以前装linux的时候,将一个分区搞成了主分区,成了这样:主分区,扩展分区,主分区,扩展分区。然后在XP里面删除一个盘,这下,所有的扩展分区都没了。分区表全部坏了。微软的分区工具就是这么破,要多个心眼。

好了,删除了分区,这下鼠标就一直是圈圈转啊转,转啊转,硬盘灯常亮。没反应了。

重启,使用了Acronis Disk Suite也无法进入到分区,停到了Analyse Partition C这一个阶段。以前的工具对SATA支持不好,就像“经典”的Partition Magic,都不太好使。反正这样那样的工具都不行,好吧,那就用Partition Magic试试。嘿,还好,找到硬盘了,给我说有一个分区错误,提示说要重启看结果。我心想这下好了,修正吧。重启,傻眼了。

Win7系统安装进不了;光盘启动的XPE系统进入不了,硬盘灯常亮;Linux系统无法mount磁盘分区;几种DOS系统均无法看到Starting DOS,直接死到。好吧,这下没系统可以用了,PQ也进不了,几乎所有的工具都被无敌了。拆下来放到老爸的机器上看看行不行。

在XP里面直接挂上硬盘(SATA可以热拨插的),提示驱动程序无法正确加载。我郁闷了。好吧,重启,照样不能启动。试了很多次,也是如此。放弃了。

我都想哭了,装了WIN7就这么恼火?把以前的老工具都找出来用用,最后找到了个Ultimate Boot CD中的DOS工具集竟然能启动,启动后看到个paraman.exe竟然能够识别出分区信息。

根据以往的经验,应该是MBR坏了,造成磁盘无法读取。将MBR全部写零并将C盘的头几百个KB写零。这样造成的结果就是所有的分区都丢失了,不要着急,并不是意味着数据也丢失了。

插入Win7光盘,终于见到了分区界面。显示是一个新硬盘。正常的,因为MBR已经全部损坏了。我的C盘是50G,所以暂时分45G,以免破坏以后分区的数据,装完了再还无损调整分区就可以了。安装完Win7后,第一件事情就是下载亲爱的Acronis Disk Suite。忘了你的什么PQ和GHOST吧,这两个软件已经廉颇老矣,用Acronis出品的Disk Suite和True Image才是王道。

下载的时候可别网上一搜就下载,多半是DEMO版本的,告诉你,到这里来下载:http://58.251.57.206/down?cid=7DA00927EDE61CBDADC9C3DDFFCC304D61E88642&t=2&fmt=&usrinput=acronis%20disk%20director%20suite&dt=2006000&ps=0_0&rt=0kbs&plt=0

可以直接在“迅雷搜索”里面输入“acronis disk director suite”,下载“支持vista的分区工具Acronis Disk Director Suite 独家提供无错汉化版下载Acronis.Disk.Director.Suite.v10.0.2160.by.ANimal!”就可以了。

按照默认的安装。完毕后重启。

使用Acronis Recovery Expert对剩余的空间进行恢复。一般选择Manual和Fast就可以了,因为所有的其他分区都还在,并且NTFS的MFT还是存在的,所以很容易就搜索到了。FAT32格式的我没有试过,估计也可以,只是NTFS在Windows系统中,算是最安全的文件系统了。

不久就会问你找到的分区是不是,看看卷标、大小和剩余空间就可以了。整个过程用不了几分钟就完成。这样数据就完璧归赵了。

总结一下:

1、硬盘硬件能够识别但软件不能识别或硬盘灯常亮,经常是MBR出了问题,解决方法是试图修复或者清除MBR。随后用Acronis Recovery Expert来恢复就可以。不推荐Easy Recovery,只能恢复文件而且多半用不了,并且要占用另外的空间。

2、放弃使用PQ和GHOST之类的老软件。用Acronis一套吧,听说paragon partition manager也很不错,不知道我运行的paraman.exe是不是这个dos工具。

3、多准备点工具,以备不时之需。(刚才那个工具似乎是:http://www.ultimatebootcd.com/download.html 里面的)

解决Open Web Analytics载入文件失败的问题

如果你的wordpress安装在子目录,而使用根目录进行访问,会生成一个.htaccess,但这个规则可能会造成子目录访问失败。我这篇文章[cross id=1987]中也提供了一个解决方案,但我发现我的主页中访问子目录还是存在问题。

所以最终我选择了修改Open Web Analytics插件的方式。主要是调整访问wp-content的路径。

查找到wp-plugin.php包含一句:

define('OWA_PUBLIC_URL', get_bloginfo('url').'/wp-content/plugins/owa/public/');

修改为

define('OWA_PUBLIC_URL', get_bloginfo('wpurl').'/wp-content/plugins/owa/public/');

即可。此时将使用wordpress绝对路径进行访问。

Return top