Archive

Archive for the ‘技术乱弹’ Category

Ubuntu 10.04图形界面无法登录,密码是对的

January 13th, 2012 4 comments

前几天调整台式机的硬盘分区,之前的分区很不合理。结果Windows 7对硬盘分区的个数有限制,机器上现在的分区有六个(windows 7三个分区,ubuntu占了两个primary分区,还有一个系统OEM分区),在shrink一个分区之后就无法新建分区了。想尽了各种办法,删除个别分区,扩大分区,都不管用。最后逼得没办法,就只有把后四个全删了,再重新分。之前装的Ubuntu10.04也没了,只好重新装。我觉得我就是喜欢瞎折腾,还带有点洁癖。看到不整齐,结构不对称的东西,我就不舒服,非要把它们弄到我看得爽了才行。这样的例子太多了,浪费了我好多时间。

Ubuntu 10.04没了,再装一个,打算试个新的版本。12.04的还没出,据说4月份会出。10.04是个LTS版本,支持到2013年。而12.04据说会支持五年。可以从10.04直接升到12.04,不过过程估计会不大顺畅,毕竟这俩之间隔了好几个版本。干脆试个最新的吧,11.10。装了之后,发现新版本fancy好多,但除了好看点之外似乎没发现其他亮点。有一个变化我挺喜欢,绑定的email客户端变成了Thunderbird,这是我用了多年的客户端,比起那个Evolution好多了。虽然如此,但我很不喜欢Ubuntu绑定这些email,chat,broadcast客户端软件。这也是间接导致标题中指明的问题的原因。用惯了以前的,对Unity很不习惯。menu bar没了,变成了global menu,位于屏幕左方;Synaptic Package Manager也没了,软件的安装都集成到了Ubuntu Software Center;虽然global menu也可以和menu bar一样,加入一些程序的快捷方式,但找出这些程序比较费功夫,要么在已安装的程序中搜索,要么一个个浏览下来,这样就很麻烦了,个人非常不喜欢这样的;那个global还是autohide,位置还不能变动,这一功能貌似从Mac系统那学来的,但我不喜欢autohide,也不喜欢放在左边;等等。除了各种不惯不方便之外,另一个大问题是Unity不大稳定,有bug,比如搜索程序没搜到,明明都安装了,还有我先点了“Media Apps”,然后点“More Apps”查找已安装的程序,结果打开的还是我点“Media Apps”的东西。最后碰到的一个bug让我彻底放弃了Ubuntu 11.10。我试着用3D桌面,设置好后,把其他窗口都关了,然后看桌面,什么东西都没了,而以前又没用过,不知道有没有什么快捷键。那个global menu bar也死活不出来。不想再折腾了,也不想花那么多的时间去适应这些新玩意,果断卸了,装回Ubuntu 10.04。

装回10.04之后,愈发觉得之前说的那些绑定的email,chat,broadcast客户端软件让人看着很不爽,而且他们还出现在右上角的那些application applet indicator离。我的洁癖强迫症又犯了,google了去掉这些玩意的办法,把Empathy,Evolution,Gwibber全卸了,在Synaptic Package Manager用了“complete removal”。被能够拜托这些东西的兴奋劲给迷惑了,没有注意看弹出的dependency提醒窗口,果然各种“OK”。整得差不多了,重启再登录。在图形界面的登录窗口里输了密码,结果却没有登录系统,还是出现这个登录窗口。不是密码错误,因为没看到authentication failure的提示。试了N次,还是不行。重启用text mode登录,却没有问题。Google之。看过很多帖子之后,发现不少人跟我一样不喜欢上面那些绑定的软件,也注定着不少人碰到了我碰到的问题。最开始以为问题的原因是卸载Evolution时(complete removal)把一些其他程序用到的服务也给卸载了。重装了Evolution,重新登录,发现没有用。再找原因,有人说试下重装gnome-applets。试了,这次成功了。gnome-applets依赖于Evolution的一些服务,但complete removal时把这些服务给删了,进而导致它们的依赖着也被卸载了,包括gnome-applets。

我就是爱折腾,没事找事。。。

APUE2e编程环境搭建

April 15th, 2011 1 comment

APUE2e书于上周末看完了,不容易啊。这学期是狠了心看的,就怕一直拖着到毕业也看不完。算一下,断断续续,看了一年多的时间。不过我只是看,并没有把书上的代码都敲一遍,虽然代码都仔细读了,但还不够。于是想装个linux练一下,导致我这周基本上都在双系统安装上折腾。Ubuntu 10.10之前作为client os装在Win7上,像应用程序一样,没有问题。但这次我想单独安装,毕竟像应用程序一样安装在Windows上,一个不小心就可以把它卸载了,上面的东西一下就没了。单独安装,问题出现了一堆。Ubuntu 10.10在我的Thinkpad W500安装了三次,都以失败告终。这里的失败不是完全的失败,系统第一次可以启动,虽然会报错,但能进入图形界面。第二次就不行了,进了命令行模式。想着可能安装过程出了问题,于是重装。就这样装了三次,而且每次都会尝试着找些解决办法。试过安装图形界面包,试过修复所有的package,试过设置BIOS里的显卡,都不work。我记得之前也装过双系统的,也是Ubuntu,那时候都没有问题。也许是版本不行,于是找了10.04的安装,可以了。接着一番折腾,总算把系统基本设置好了。

回到正题。APUE2e的编译问题,我在之前的一篇文章说过。如果想自己练一遍所有代码,那得搭个环境,省去些麻烦。APUE2e的大部分程序里都用到了头文件apue.h,这是书上自带的,linux的库函数里没有这个。此外,还有两个关于错误输出的文件,error.c和errorlog.c,都是APUE2e自己定义的,也无法在linux的库函数中找到。这两个文件在APUE2e源码解压之后得到的文件夹的lib子文件夹里。error.c定义了“error functions that output to standard error”,代码在书地附录B的Figure B.3上; errorlog.c定义了“error functions for daemons”,代码在书地附录B的Figure B.4上。两个文件里定义的函数在apue.h中都声明过了,而error.c和errorlog.c都有#include “apue.h”语句。编写C程序时,对于指定的头文件(include语句),一般在project当前文件夹(#include “xx.h”)和/usr/include中查找(#include <xx.h>)。为了方便,我就把apue.h,error.c和errorlog.c都放到了/usr/include底下,但要做一定的修改。具体如下:
Read more…

Categories: 技术乱弹 Tags: ,

有关LinearLayout的layout_weight属性的疑问

August 20th, 2010 2 comments

在运行Android官网上LinearLayout的例子时,发现一个奇怪的现象,和属性layout_weight有关。我用的是Android 2.2平台。LinearLayout例子的布局代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <LinearLayout
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1">
      <TextView
          android:text="red"
          android:gravity="center_horizontal"
          android:background="#aa0000"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="green"
          android:gravity="center_horizontal"
          android:background="#00aa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="blue"
          android:gravity="center_horizontal"
          android:background="#0000aa"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="yellow"
          android:gravity="center_horizontal"
          android:background="#aaaa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
  </LinearLayout>

  <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:text="row one"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row two"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row three"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row four"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
  </LinearLayout>

</LinearLayout>

Read more…

android应用开发

August 8th, 2010 2 comments

去年某一段时间关注过android,因为在新闻中看到了它,于是就进一步了解了一下,不过没有学android平台上的编程开发。前几天无意间在csdn上发现某人写的博客(Android_Tutor),专门介绍android应用开发的。脑子一热,突然想学一学,于是就到android官网看起了开发文档。趁着现在还有兴趣,趁热打铁吧,学多少算多少,就当增加知识储备了。先从官网文档开始,一步步了解,学到什么程度就看我有多少毅力了。

PS:明天,8月9日,留美两周年纪念日,得写点东西回顾一下。

Categories: 技术乱弹 Tags:

CPS论文

May 20th, 2010 4 comments

找了一些有关CPS(Cyber Physical System)的论文和其他文献,感兴趣的可以看看。

  • Edward Lee, Cyber Physical Systems – Are Computing Foundations Adequate?, 2006
  • Edward Lee, Computing Foundations and Practice for Cyber Physical Systems: A Preliminary Report, 2007
  • Edward Lee, Cyber Physical Systems: Design Challenges, 2008
  • Helen Gill, From Vision to Reality: Cyber Physical Systems, 2008
  • Carolyn Talcott, Cyber Physical Systems and Events, 2008
  • Lui Sha et al, Cyber Physical Systems: A New Frontier, 2009
  • Timothy Hnat et al, MacroLab: A Vector-based Macropramming Framework for Cyber Physical Systems, 2008
  • Yuanfang Zhang et al, Reconfigurable Real-Time Middleware for Distributed Cyber Physical Systems with Aperiodic Events, 2008
  • Akshay Dabholkar et al, An Approach to Middleware Specialization for Cyber Physical Systems, 2009
Categories: 技术乱弹 Tags:

YAWL瞎扯

May 10th, 2010 2 comments

这学期的CIS 825挑了个有关YAWL的project,确切说不是我们挑的,我们是“被挑的”,动手晚了,其他project都被阿三们抢光了。这篇博文就瞎扯一下YAWL,根据我所知道的。

YAWL(Yet Another Workflow Language),从名字就可以看出来YAWL是用于工作流程(Workflow)管理的,或者商业流程管理BPM(Business Process Management)。YAWL通过对商业流程进行建模实现一个完整的BPM系统,管理整个工作流程的运作。YAWL是基于Petri NetsWorkflow Patterns搭建而成的。目前有三类安装版本,YAWL4Study,YAWL4Enterprise和YAWLive。YAWL4Study是单机版的,单用户;YAWL4Enterprise是服务器版的,多用户;YAWLive是LiveCD版本的,在Linux系统上预装了YAWL,可以直接从光盘启动。我用的是YAWL4Study,只是为了写project。YAWL4Study安装后由两部分组成,Editor和Control Centre,另外还有两个快捷方式用于Start和Stop Engine。YAWL Editor用于对workflow system进行建模,然后在YAWL Control Centre上模拟运行。当连接Control Centre进行模拟时时,必须启动Engine。
Read more…

Categories: 技术乱弹 Tags: , ,

IP首部检验和

April 17th, 2010 3 comments

今晚看了《TCP/IP详解 卷1:协议》的第三章内容,IP:网际协议。看到介绍IP首部检验和字段时,有点摸不着头脑,好像自己以前都没仔细去推敲过,只是单纯的看了之后记一下。这种没有理解的记忆一般都持续不了多久,所以每次看,我都觉得很陌生。IP首部(不包括选项和数据)有20字节(160位),16位的IP首部检验和包括在内。根据书上的描述,IP首部检验和的计算步骤如下:

发送方

Step 1:把检验和字段置为0,即把16位都置为0.

Step 2:对首部中每一组16位进行二进制反码,然后求和,将结果存在检验和字段中。

接收方

Step 1:对首部的每组16位进行二进制反码(包括16位的检验和字段),然后求和。

Step 2:如果和全为1,那么数据传输过程中没有出现差错;如果不全为1,即检验和错误,丢弃该数据报。

Read more…

Categories: 技术乱弹 Tags: , ,

apue.2e源代码编译

February 10th, 2010 No comments

对Unix (or Linux)一窍不通,在同学的推荐下买了apue 2nd edition,看了几章了。今天想试试书上提供的源代码,首先解压源代码,得到目录apue.2e,打开此目录,按照readme里提供的方法,先将文件Make.defines.linux里的WKDIR改为你的源代码存放路径,默认是WKDIR=/home/var/apue.2e,修改完后,在目录apue.2e下执行make命令,出错。我的系统是Ubuntu 9.10,linux内核好像是2.6.30的。编译出错的原因应该是兼容性的问题,错误显示threadctl/getenv1.c下ARG_MAX未定义。ARG_MAX是在头文件limits.h中定义的,但该文件位于目录/usr/include/linux/下,而getenv1.c的include语句是“#include <limits.h>”,这将在usr/include/下查找文件limits.h,但include目录下的文件limits.h并没有定义ARG_MAX。因此将include语句改为“#include <linux/limits.h>”就行了。除了getenv1.c,还需修改同一目录下的getenv3.c的头文件声明部分,将“#include <limits.h>”改为“#include <linux/limits.h>”。修改保存后,在apue.2e目录下执行make,显示了两个warning,问题出在文件/threads/badexit2.c的两个函数里:printfoo和thr_fn2,我没理会这两个warning,这样源代码算是编译完成了。另外一个问题,网上不少文章说要改apue.2e/std/目录下的linux.mk文件,将nawk改为awk,这只需要在你的linux内核版本较老时才需要,nawk是新的awk,内核版本低的不支持nawk。如果内核版本较高,不需要修改。我在改和不改的情况下都试了一次,结果都一样。
Read more…

Categories: 技术乱弹 Tags: , ,

Vista和Ubuntu双系统引导 – 修改默认启动的操作系统

January 25th, 2010 No comments

之前在台式机上装了双系统,电脑自带的是Vista Home Premium,而我装了Ubuntu 9.10。Ubuntu的Grub自动给电脑做好了引导程序,但默认的启动系统我选的是Ubuntu,不是Vista。后来发现,还是Vista用的多,但启动系统时一不留神就进来Ubuntu,得重启后再进Vista,如此折腾了多次。今天心血来潮,想把默认启动的系统改为Vista。Google了很多修改grub的文章,大多是针对Ubuntu 9.10之前的版本的,这些版本使用的是grub,而Ubuntu 9.10用的是Grub2。Grub2和Grub还是有些不同的,比如/boot/grub/文件夹下就找不到menu.lst。而网上的多数方法都是针对Grub。有关Grub2的修改的文章有一些,但大部分方法不对头,这些方法建议修改/boot/grub/grub.cfg的相关内容,如set default=”0″,来指定默认的启动系统。但这样治标不治本,更新grub之后,所作的修改都会失效。究其原因,可以看grub.cfg文件开头的一段描述:
Read more…

Categories: 技术乱弹 Tags: ,

Intel Boot Agent导致的系统启动问题(Lenovo Desktop)

January 16th, 2010 No comments

前几天给新买的lenovo desktop装了双系统,装完之后,引导和启动都没问题,系统能够正常的启动。隔了几天没用,今天又开了电脑,装了一些其他程序,还有Vista的更新,重启,发现系统启动不了了。每次总是进入Intel Boot Agent的界面:先显示电脑的MAC Address,然后加载DHCP(Dynamic Host Configuration Protocol (DHCP)),最后出现了两行PXE提示,说是no boot filename received,并退出了intel boot agent,如下所示:

Intel(R) boot Agent FE v4.1.21
Copyright (C) 1997-2007. Intel Corporation
CLIENT MAC ADDR:…
PXE-E53:…
PXE-mof:…

Read more…

Categories: 技术乱弹 Tags: , ,