Feb 24

域名又被处理了 不指定

felix021 @ 2009-2-24 18:44 [IT » 网络] 评论(0) , 引用(0) , 阅读(4659) | Via 本站原创
www.felix021.com 这个域名被处理了,不能通过浏览器直接访问了,urlforwad到ctc.felix021.com
由于meyu的邮件里面说到,不影响搜索引擎收录,所以这么测试了一下,还挺有意思
引用
felix021@felix021-laptop:~$ telnet www.felix021.com
Trying 211.136.108.72...
telnet: Unable to connect to remote host: Connection refused
felix021@felix021-laptop:~$ telnet www.felix021.com 80
Trying 211.136.108.72...
Connected to www.felix021.com.
Escape character is '^]'.
GET /index.php HTTP/1.1
Host: www.felix021.com
User-agent: MSIE

HTTP/1.0 302 Moved Temporarily
Server: squid
Date: Tue, 24 Feb 2009 09:15:20 GMT
Content-Type: text/html
Content-Length: 0
Expires: Tue, 24 Feb 2009 09:15:20 GMT
Location: http://67.213.219.111/beian.html
X-Squid-Error: 403 Access Denied
X-Cache: MISS from domain123.com
Via: 1.0 domain123.com:80 (squid)
Connection: close

Connection closed by foreign host.

引用
$ felix021@felix021-laptop:~$ telnet www.felix021.com 80
Trying 211.136.108.72...
Connected to www.felix021.com.
Escape character is '^]'.
GET /index.php HTTP/1.1
Host: www.felix021.com
User-agent: baiduspider(http://www.baidu.com/)

HTTP/1.0 200 OK
Date: Tue, 24 Feb 2009 09:14:29 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.5
Vary: Accept-Encoding,User-Agent
Content-Length: 1040
Content-Type: text/html
X-Cache: MISS from domain123.com
Via: 1.0 domain123.com:80 (squid)
Connection: close

~~然后是index.php的内容,不贴了~~
Feb 19
之前的那个因为在创建守护进程的那一部分代码没有写清楚
所以每次退出telnet就会退出,更新了一下
要编译好的版本可以从这里下载:
http://bbs.whu.edu.cn/bbscon.php?bid=50&id=19510
或者直接email我,我发过去,嗯。
因为静态编译的比较大,1.8MB(有没谁能搞个小的?我对编译选项不很了解,-Os没效果,汗)
所以如果各位想要去买路由器的话
1。建议至少买4MB Flash的产品,刷mini版本的
2。可以买2MB Flash的产品,但是要自己手动焊MMC/SD读卡器(据说很简单的)
3。最好是有USB口的,插上U盘就行,最省事了。
所以最实惠的选择还是我的ASUS WL-520GU,挖咔咔~~370+15运费,超划算的。
如果各位nb的话,还可以在上面安装BT,电驴,Web服务器(架BBS,如www.2cna.cn)
另外一款NB的是"64M超大内存贝尔金7231-4P 4M FLASH 带USB口脱机bt 电驴"
这个貌似比较便宜,就是难看了点儿,具体自己baidu吧~

Feb 19
发现以前在Linux下C编程入门里面看到的创建守护进程的办法不够完整,导致做好的东东在路由器的MIPS版Linux下面不能正常在后台运行,一旦退出telnet,进程也就跟着结束了。于是参考这篇文章做出了一个完整的版本,哦也!

zz from http://dev.csdn.net/article/42/42281.shtm

Linux 守护进程的编程方法

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。
守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,造成不同 Unix环境下守护进程的编程规则并不一致。这需要读者注意,照搬某些书上的规则(特别是BSD4.3和低版本的System V)到Linux会出现错误的。下面将全面介绍Linux下守护进程的编程要点并给出详细实例。

一. 守护进程及其特性
Feb 19

异或交换技巧的陷阱 不指定

felix021 @ 2009-2-19 17:31 [IT » 程序设计] 评论(0) , 引用(0) , 阅读(5003) | Via 本站原创
众所皆知,以下代码可以实现两个变量的交换:
int a, b;
a = a ^ b;
b = a ^ b;
a = a ^ b;

于是用这个写了一个随机化快速排序(防止特殊情况下的算法退化,代码很简单,如果认识快排,应该不难读懂)
void qsort(int a[], int s, int e){
    int i = s, j = e, t, p;
    if (s < e){
        p = rand() % (e - s + 1) + s;
        a[s] ^= a[p], a[p] ^= a[s], a[s] ^= a[p];
        t = a[s];
        while(i != j){
            while(i < j && a[j] > t) j--;
            if(i < j) a[i++] = a[j];
            while(i < j && a[i] < t) i++;
            if(i < j) a[j--] = a[i];
        }
        a[i] = t;
        qsort(a, s, i - 1);
        qsort(a, i + 1, e);
    }
}

看起来不错,可是运行结果不对,为什么呢?
因为
Feb 19
@ 2010-05-29
我手头已经没有交叉编译工具链了,这个newstar,可能只适用于武大信息学部宿舍8栋,有问题估计帮不了忙了,真抱歉。
如果需要dd-wrt的,可以试试在这里的这个(tomato也许也能用呢):
http://www.right.com.cn/forum/viewthread.php?tid=29702&extra=page%3D2

-----
@ 2009-05-01
建议看看这篇文章:开源无线路由器固件上 Bug 的故事
http://blog.xiaoding.org/post/bug-story-on-open-source-routers-2.html
就是说,其实WL-520gu的交换芯片BCM5354是有个BUG的,如果使用多播协议的802.1x认证可能无法搞定。。。

-----

花了这么多天的时间,果然是值得阿!
寒假在家里搭建的buildroot确实可以交叉编译,但是编译出来的东西在路由器上不能运行!
于是很郁闷地看了不少资料,才发现,原来dd-wrt和tomato固件都是基于linux-2.4的,
但是寒假搭建的那个,linux内核直接down的是2.6.28....
反正是牛头不对马嘴了。
于是去下载openwrt提供buildroot来搭建交叉编译工具链。
说简单也很简单:
1. svn下来openwrt的buildroot
$ su
$ mkdir /cross
$ cd /cross
$ svn co svn://svn.openwrt.org/openwrt/branches/whiterussian/

2. 参照这篇 [在ubuntu8.10 下建立 ARM-Linux 交叉编译环境] 的内容进行如下修改:
1) 安装一些必须工具
  $ sudo apt-get install bison flex build-essential patch libncurses5-dev
2) 修改一些系统文件
  a)ubuntu的sh是链接到dash的,修改回bash
    $ cd /bin
    $ sudo ln -sf bash /bin/sh
  b)用用新立得软件包管理器安装gcc-4.1(自带的gcc4.3.2无法编译成功!但不用卸载),然后
    $ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc  (gcc只是一个soft link,回头再链回到gcc-4.3就可以了)
      如果不安装gcc-4.1,就会出现2个问题:
    ~~ /usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments
    编译到这里的时候提示这个错误,是因为没有第三个参数,gcc 4.3.2严格的语法检查不让通过;你可以修改 gcc-<版本号>/gcc/collect2.c的1575行附近,加上第三个参数0777,变成 redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777);  然后就可以继续编译
    ~~ 尽管可以继续编译,但是还会出现这个问题:*** buffer overflow detected ***: mipsel-9tdmi-linux-gnu-ar terminated
    哈,编译出来的这个程序根本就有问题!所以还是老老实实地安装gcc 4.1吧!

3) 安装配置
    $ cd whiterussian/openwrt
    $ make menuconfig
    应该不用选太多东西,不过libgcc, libpcap, uClibc++最好选上,因为编译newstar需要它们。

4) 开始搭建toolchain
    $ make
  安装过程中会需要下载n多个包,速度超慢,建议是开始下载的时候按下Ctrl+C,然后复制下载链接到迅雷下载,然后再copy到这个目录的dl目录下面

5) 不出意外,搭建好了!配置环境变量
    $ export PATH=$PATH:/cross/whiterussian/openwrt/staging_dir_mipsel/bin
    可以把这一行加入到.bashrc或者/etc/profile中,免得每次要编译都输入一遍:)

6) 下载这个newstar.mips.tar.gz (@2009-02-19 19:00修正了一个BUG)
   
下载文件 (已下载 2382 次)

    $ tar zxvf newstar_mips.tar.gz
    $ cd newstar.mips
    $ make
    如果有需要,可以修改feli_net.cpp里面的几个文件的路径,比如log,tmp,config。
    注意Makefile里面有个 ARG=-static,也就是这个是静态编译的,大小有1.8MB呢,不过反正我有个1G的U盘空间,无所谓——还是有个USB口来得好阿!

  7) 拷到路由器,配置运行
    $ telnet 192.168.1.1 //telnet到路由器的命令行下
    $ ./newstar config
    我用的asus wl-520gu,WAN网卡是vlan1,配置的时候interface填这个就OK!
    $ ./newstar


  8) 如果需要编译其他程序
    $ mipsel-linux-g++ -static hello.c -o hello.out

哦也哦也哦也!手机可以上校园网了!!!!!
 
Feb 18

ASUS WL-520GU 不指定

felix021 @ 2009-2-18 14:41 [IT » 硬件] 评论(1) , 引用(0) , 阅读(7559) | Via 本站原创
前两天到了。

整了一下,基本上是这样的,刷过了n个固件,dd-wrt和tomato的不同版本。最后觉得还是tomato1.23 ND USB FTP Samba版本的比较不错,刷进去以后可以直接支持USB并开启FTP和Samba,但是就是不识别我的2GB Kingston行货,于是跟阿牛换了一个1GB的Kingston水货。于是开启了Samba。

信号确实不错。

试了一下交叉编译好的newstar,运行有错,郁闷。想静态编译newstar,但是交叉编译工具报错。

回头试一下hello world再说吧。
Feb 16
@ 2010-08-20 BS一下不看manpage的自己
引用
$ man sed
...
      -i[SUFFIX], --in-place[=SUFFIX]
              edit files in place (makes backup if extension supplied)
...
也就是说,只需要用 sed -i 就可以直接替换文件中的内容

======以前的分割线======

要用sed批量修改文件的内容,但是用这个命令解决不了问题:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} > {} \;
因为bash把 > 解释为find命令输出的重定向。
修改一下:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} \> {} \;
还是不行,因为 sed 去寻找一个名为 > 的文件进行处理
再修改:
find -name "*.php" -exec "sed -e 's/aaa/bbb/' {} \> {} " \;
还是不行,因为find去找一个名为 "sed -e 's/aaa/bbb/' {} \> {} " 的程序来执行
那是囧之又囧阿。于是去baidu,去google,
但是无论baidu还是google "find -exec 重定向"
都搜不到相应的解决方案,这样的问题居然没有人遇到过?
于是用google搜了一下
引用
linux find using "-exec" sed redirect

搜到了这一页: http://www.loisch.de/linux.html
看来还是国人太ooxx了,sigh。

解决方案其实很简单:绕个弯,把 -exec 的命令给shell来执行
注意:下面的命令一定不要在有用的文件上直接尝试!!!!!!
引用
find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}" \;

哦也!没有错误提示了!
然后 ls -al 一下,爽!所有文件大小都变成 0 了!
为什么捏?那篇文章里面解释了:
因为bash检测到需要重定向到那个文件,所以事先把那个文件清空了。
那篇文章里面提到一个修改bash配置的解决方案,但是不通用,建议还是用他说的第二种方案:
引用
find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}.tmp; mv -f {}.tmp {}" \;

嘿,这下爽了!
Tags: ,
Feb 15
发信人: Felix021 (Felix), 信区: Linux_Unix
标  题: 校园网锐捷客户端 newstar for linux 情人节专版 (傻瓜化操作)
发信站: BBS 珞珈山水站 (Sun Feb 15 03:21:19 2009)

(附件的tarball里包含源代码和编译好的x86_32的可执行程序)

花了不少时间整这个东西,现在用起来相当简单了。
下载下来,解压,运行 ./install.sh 输入管理员密码,就安装好了。
要联网,运行newstar,不需要再输密码,
程序自动在后台与服务器通信,不需要留着一个terminal
也不需要nohup, screen, setsid什么的了。
其他还要手动的地方就是添加到开机自启动脚本/etc/rc.local里面去。
当然,也可以添加到 会话 里面,但是这个是在X Window登录以后才运行的。

过几天会搞个ASUS WL-520GU无线路由,能刷linux(如dd-wrt固件)
看看能不能把newstar集成进去,待续。。。

--

newstar for linux @ 2009-02-14 情人节专版(修正日志读取与清除的BUG)
下载文件 (已下载 2046 次)

本程序由felicia(feliciacrazy@qq.com修改自superstar源码
由felix021(felix021@gmail.com)添加连接和注销之外的功能

注: 第1,2步可以直接运行 sudo ./install.sh 来完成

1. 编译
Tags: , ,
分页: 50/99 第一页 上页 45 46 47 48 49 50 51 52 53 54 下页 最后页 [ 显示模式: 摘要 | 列表 ]