• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Onway

            我是一只菜菜菜菜鳥...
            posts - 61, comments - 56, trackbacks - 0, articles - 34

                 摘要: 這個(gè)月里諸多不順,但還是一點(diǎn)一點(diǎn)翻完了這本書。自己做的筆記極少會(huì)看,算做個(gè)紀(jì)念咯。  閱讀全文

            posted @ 2012-05-28 11:46 Onway 閱讀(671) | 評(píng)論 (0)編輯 收藏

            (僅限個(gè)人理解,強(qiáng)烈歡迎指正?。?/span>
            一,理解
            1,限制常量是對(duì)某個(gè)常量進(jìn)行數(shù)值上的大小規(guī)定。其值必定是一個(gè)數(shù)值,編譯時(shí)限制通常定義在<limits.h>頭文件中。
            2,選項(xiàng)常量是用來決定對(duì)某項(xiàng)功能是否支持。其值也是一個(gè)數(shù)值,但通常是0,-1,1或者一個(gè)表示年月的數(shù)值又或者未定義其值。編譯時(shí)選項(xiàng)通常定義在<unistd.h>頭文件中。
            3,功能測試宏用來在編譯時(shí)控制一些頭文件的版本。通常定義在<features.h>頭文件中。

            二,編譯時(shí)常量的命名
            1,POSIX的編譯時(shí)限制以_POSIX_前綴開頭,XSI編譯時(shí)限制以NL_或者_(dá)XOPEN_前綴開頭。特定系統(tǒng)實(shí)現(xiàn)的編譯時(shí)限制不帶前綴,對(duì)應(yīng)于POSIX限制去掉前綴(其值應(yīng)該比POSIX要大)。
            2,選項(xiàng)用以表明是否對(duì)某個(gè)標(biāo)準(zhǔn)的某項(xiàng)功能的支持。其編譯時(shí)常量通常是以_POSIX_或者_(dá)XOPEN_做前綴。沒有特定系統(tǒng)實(shí)現(xiàn)的編譯時(shí)選項(xiàng)。
            3,功能測試宏常量只是以下劃線_開頭,然后就沒什么規(guī)則了。功能測試宏只在編譯時(shí)使用。詳見man feature_test_macros。

            三,運(yùn)行時(shí)確定限制或選項(xiàng)的三個(gè)函數(shù)
            1,如果某個(gè)限制或選項(xiàng)無法從編譯時(shí)確定,那就需要調(diào)用以下三個(gè)函數(shù)之一:sysconf,pathconf,fpathconf。后兩個(gè)函數(shù)是跟路徑相關(guān)的。
            2,三個(gè)函數(shù)都需要一個(gè)整型常量參數(shù),該參數(shù)命名規(guī)則為編譯時(shí)的常量名去掉前綴,加上_SC_或者_(dá)PC_(調(diào)用跟路徑相關(guān)的兩個(gè)函數(shù))前綴。
            3,注意其返回值,詳見函數(shù)的man手冊。

            四,confstr函數(shù)和getconf命令
            1,confstr用于獲取依賴于配置的字符串變量。其參數(shù)只有幾個(gè),詳見man手冊。
            2,getconf命令是用于查詢系統(tǒng)配置變量,即編譯時(shí)的限制和選項(xiàng)常量的值。該命令都可以查詢到confstr函數(shù)的字符串變量。

            http://www.shnenglu.com/Onway/archive/2015/12/08/212438.html

            posted @ 2012-03-26 22:37 Onway 閱讀(981) | 評(píng)論 (0)編輯 收藏

            7,附1.0到1.1的更新說明:
            a,單詞本使用了sqlite3數(shù)據(jù)庫
            b,添加單詞會(huì)提示選擇單詞分類,可從~/.eyoudao/classify.txt進(jìn)行修改,分類不能出現(xiàn)空格。
            c,1.0的單詞本~/.eyoudao/wordsbook被廢棄,在該目錄下多了兩個(gè)文件classify.txt和wordbook.db
            d,除了新添加的兩個(gè)文件之外,修改的只有eyoudao腳本,另添加了一個(gè)單詞本復(fù)習(xí)腳本review,并被連接到/usr/bin目錄下
            8,單詞本復(fù)習(xí)腳本使用說明
            a,復(fù)習(xí)分為三個(gè)模式,聽寫模式:只有發(fā)音,沒有單詞和釋義顯示;默寫模式:只有釋義顯示,可自行使用發(fā)音;問答模式:給出單詞,選擇是否記得釋義。
            b,選定模式之后,是選擇復(fù)習(xí)的單詞,可按分類,加入時(shí)間,錯(cuò)誤率三種或它們的組合進(jìn)行選擇。
            c,復(fù)習(xí)過程中,非問答模式下,錯(cuò)誤之后,會(huì)重新復(fù)習(xí)該單詞,不會(huì)寫入數(shù)據(jù)庫,除非自行選擇跳過該單詞。
            d,問答模式下,選擇忘記,會(huì)跳過該單詞,并寫入數(shù)據(jù)庫。

            posted @ 2012-03-20 22:13 Onway 閱讀(745) | 評(píng)論 (4)編輯 收藏

            其實(shí)在瀏覽器看到是正常的,但是通過goldendict訪問就不行了,主要表現(xiàn)是導(dǎo)航條工作不正常,不能隱藏,和頁面底下出現(xiàn)的一大片空白。如圖:
             




            /Files/Onway/eyoudao-web.tar.gz.rar


            gyd-server.c
            #include <sys/types.h>
            #include 
            <sys/socket.h>
            #include 
            <sys/stat.h>
            #include 
            <unistd.h>
            #include 
            <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <string.h>
            #include 
            <arpa/inet.h>
            #include 
            <fcntl.h>
            #include 
            <pthread.h>

            #define PROT 10000
            #define ADDRESS "127.0.0.1"
            #define BACKLOG 20
            #define BUFSIZE 4096

            /*    互斥量,用于各個(gè)線程的標(biāo)準(zhǔn)輸出    */
            pthread_mutex_t 
            lock = PTHREAD_MUTEX_INITIALIZER;
            struct clientinfo
            {
                
            int sockfd;    /*    客戶端套接字    */
                
            int sockno;    /*    客戶端請求順序號(hào)    */
            };

            int create_server_socket();
            void* handle_request(void*);
            int send_dynamic(struct clientinfo*,char*);    /*    通過dynamic.bash返回的結(jié)果    */
            int send_static(struct clientinfo*,char*);    /*    直接讀文件發(fā)送    */
            void print_msg(int,const char*);            /*    標(biāo)準(zhǔn)輸出    */


            int
            main(
            int argc,char *argv[])
            {
                
            int serverfd;
                
            int count = 0;
                pthread_t ptid;
                
            struct clientinfo *cinfo;

                
            /*    創(chuàng)建監(jiān)聽套接字    */
                serverfd 
            = create_server_socket();
                
            if (serverfd == -1) {
                    printf(
            "main(): terminate\n");
                    
            return -1;
                }

                
            while (1) {
                    cinfo 
            = (struct clientinfo*) malloc (sizeof(struct clientinfo));
                    cinfo
            ->sockfd = accept(serverfd,NULL,NULL);
                    cinfo
            ->sockno = ++count;
                    pthread_create(
            &ptid,NULL,handle_request,(void*)cinfo);
                }

                
            return 0;
            }

            int 
            create_server_socket()
            {
                
            int tmpfd = socket(AF_INET,SOCK_STREAM,0);
                
            if (tmpfd == -1) {
                    printf(
            "create_server_socket(): socket error\n");
                    
            return -1;
                }

                
            struct sockaddr_in svraddr;
                bzero(
            &svraddr,sizeof(svraddr));
                svraddr.sin_family 
            = AF_INET;
                svraddr.sin_port 
            = htons(PROT);
                svraddr.sin_addr.s_addr 
            = inet_addr(ADDRESS);

                
            if (bind(tmpfd,(struct sockaddr*)&svraddr,sizeof(svraddr)) == -1) {
                    printf(
            "create_server_socket(): bind error\n");
                    
            return -1;
                }

                
            if (listen(tmpfd,BACKLOG) == -1) {
                    printf(
            "create_server_socket(): listen error\n");
                    
            return -1;
                }
                
                
            return tmpfd;
            }

            void*
            handle_request(
            void *info)
            {
                
            struct clientinfo *cinfo = (struct clientinfo*) info;
                
            char receive[BUFSIZE << 1= "";
                
            char method[BUFSIZE] = "",request[BUFSIZE] = "";
                
            char header[] = "HTTP/1.1 200 OK\r\nconnection:close\r\n\r\n";
                
            int i;

                
            if (recv(cinfo->sockfd,receive,BUFSIZE << 1,0< 0) {
                    print_msg(cinfo
            ->sockno,"handle_request(): recv error");
                    
            return ( (void*0);
                }
                
            /*    回應(yīng)報(bào)頭    */
                write(cinfo
            ->sockfd,header,strlen(header));

                
            /*    請求方法和參數(shù)的簡單檢測    */
                sscanf(receive,
            "%s%s",method,request);
                
            if (strcmp(method,"GET")) {
                    print_msg(cinfo
            ->sockno,"handle_request(): method is not GET");
                    
            return ( (void*0);
                }

                
            if (strlen(request) < 8) {
                    print_msg(cinfo
            ->sockno,"handle_request(): unknow request");
                    
            goto end;
                }
                print_msg(cinfo
            ->sockno,receive);

                
            /*    請求dynamic.bash    */
                
            if (strncmp(request,"/action?",8== 0) {
                    send_dynamic(cinfo,request);
                    
            goto end;
                }
                send_static(cinfo,request);

            end:
                close(cinfo
            ->sockfd);
                free(cinfo);
                
            return ( (void*0);
            }

            int
            send_static(
            struct clientinfo *cinfo,char *request)
            {
                
            int len = strlen(request);
                
            char path[1024],buf[BUFSIZE];
                
            int fd,bytes;
                
            /*    忽略開頭的'/'符號(hào)    */
                sscanf(request,
            "%*c%s",path);
                
                
            /*    文件讀取    */
                fd 
            = open(path,O_RDONLY);
                
            if (fd == -1) {
                    print_msg(cinfo
            ->sockno,"send_static(): open error");
                    
            return 1;
                }
                
            while ((bytes = read(fd,buf,4096)) > 0) {
                    write(cinfo
            ->sockfd,buf,bytes);
                }
                close(fd);
                
            return 0;
            }

            int
            send_dynamic(
            struct clientinfo *cinfo,char *request)
            {
                
            char cmd[BUFSIZE],arg[1024],line[BUFSIZE];
                FILE 
            *fpin;
                
            /*    忽略action?    */
                sscanf(request,
            "%*[^?]%*c%s",arg);
                sprintf(cmd,
            "./dynamic.bash \"%s\"",arg);

                
            /*    從popen返回的FILE指針讀取內(nèi)容發(fā)送    */
                
            int cnt = 0;
                
            if ((fpin = popen(cmd,"r")) == NULL) {
                    print_msg(cinfo
            ->sockno,"send_dynamic(): popen error");
                    
            return 1;
                }
                
            while (fgets(line,BUFSIZE,fpin) != NULL) {
                    write(cinfo
            ->sockfd,line,strlen(line));
                }
                pclose(fpin);
                
            return 0;
            }

            void
            print_msg(
            int no,const char *msg)
            {
                pthread_mutex_lock(
            &lock);
                printf(
            "request: %d\n%s\n\n",no,msg);
                pthread_mutex_unlock(
            &lock);
            }

            dynamic.bash
            #!/bin/bash

            xmldetail
            ="http://dict.youdao.com/search?keyfrom=deskdict.main&xmlDetail=true&doctype=xml&xmlVersion=7.1&dogVersion=1.0&client=deskdict&appVer=5.0.32.4695&xslVer=3.0&q="
            xsldetail
            ="detail/result.xsl"
            xmlsimple
            =""
            xslsimple
            =""

            check_in_book() {
                # 截?cái)嚅_頭結(jié)尾的空格,將中間的連續(xù)空格換成一個(gè)空格
                word
            ="`echo $1 | sed 's/^\(%20\)\+//g' | sed 's/\(%20\)\+$//g' | sed 's/\(%20\)\+/ /g'`"
                cut 
            -';' -1 wordsbook | grep -"^$word$"
                [ $
            ? == 0 ] && echo 1 || echo 0
            }

            add_to_book() {
                word
            ="`echo $1 | sed 's/^\(%20\)\+//g' | sed 's/\(%20\)\+$//g' | sed 's/\(%20\)\+/ /g'`"
                t
            ="`date +'%y-%m-%d %H:%M'`"
                echo 
            "$word;$t;" >> wordsbook
                echo 
            1
            }

            send_response() {
                # $1為:inbook
            =queryword或者detail=queryword等形式
            action
            =${1%=*}
            target
            =${1#*=}

            case $action in
                
            "inbook")
                    check_in_book 
            "$target"
                    ;;
                
            "tobook")
                    add_to_book 
            "$target"
                    ;;
                
            "detail")
                    .
            /xslt "-xmlapi" "$xmldetail" "-xslapi" "$xsldetail" "-keyword" "$target" | sed '$d' 
                    ;;
                
            "simple")
                    ;;
                
            *)
                    exit 
            1
                    ;;
            esac
            }

            send_response 
            "$1"
            exit 
            0

            posted @ 2012-03-17 17:38 Onway 閱讀(1231) | 評(píng)論 (0)編輯 收藏

            下載:/Files/Onway/eyoudao-1.0.tar.gz.rar(不是rar文件,要?jiǎng)h了rar后綴)
            依然期待各路神牛的更改。




            linux環(huán)境goldendict詞典的有道擴(kuò)展程序eyoudao 1.0使用說明
            (從第一版的youdaodict重新命名為eyoudao,版本為1.0,基于windows有道詞典的5.0.32.4695版本)


            一,安裝:
            1,安裝goldendict和兩個(gè)函數(shù)庫(goldendict版本可能要求1.0.1以上才能使用擴(kuò)展程序):
            sudo apt-get install goldendict libxml2-dev libxslt1-dev

            2,然后eyoudao目錄下:
            make
            sudo make install

            3,最后打開goldendict詞典,菜單欄的編輯選項(xiàng) -> Dictionaries -> 詞典來源 -> Programs
            添加一欄:
            -    Html    eyoudao-detail    eyoudao -detail "%GDWORD%"


            二,卸載:
            1,在/opt/eyoudao目錄下執(zhí)行:
            sudo make uninstall
            即可。
            2,注意,在$HOME目錄下的.eyoudao隱藏文件夾不會(huì)被刪除,內(nèi)含單詞本wordsbook和一個(gè)臨時(shí)查詢文件query.tmp。


            三,關(guān)于很多的bugs:
            1,保存單詞的時(shí)候,會(huì)導(dǎo)致goldendict在該單詞前加上~后重新查詢。這會(huì)影響其他詞典的使用。
            2,eyoudao-simple沒有做了。個(gè)人2M的聯(lián)通寬帶,感覺速度還能接受。
            3,查詢單詞出現(xiàn)'s結(jié)尾的時(shí)候,看到返回的單詞是錯(cuò)誤的,無法添加到單詞本。
            其實(shí)這個(gè)錯(cuò)誤在dict.youdao.com都是一樣的,但what's和it's這些就沒錯(cuò)。
            4,如果還遇到各種的bugs,莫要驚慌,自己動(dòng)手修改。



            四,版權(quán)聲明:
            xml數(shù)據(jù)和各種xsl,js,css,png文件都是修改或源自windows的有道詞典安裝文件,使用時(shí)注意版權(quán)問題。
            xslt是仿照官網(wǎng)的一個(gè)demo改寫的。
            本擴(kuò)展程序僅供學(xué)習(xí)交流之用。


            五,關(guān)于本程序:
            eyoudao 1.0 By Onway 2012-03-16
            debug yourself or report to
            aluohuai@126.com
            www.shnenglu.com/onway


            六,有道詞典安裝文件的大致修改過程:
            1,在windows有道詞典的安裝目錄resultui下,拷貝出來三個(gè)文件夾:css,js,images,兩個(gè)文件result.xsl和commonfile.xsl
            2,js目錄將all-min.js解壓為default.js,刪除wordBook.js
            3,commonfile.xsl的修改:
                a,將聲音播放相關(guān)的函數(shù)調(diào)用改掉參數(shù)為this.getAttribute('ref')
                b,刪掉報(bào)錯(cuò)顯示(不太厚道?。。┖蚮lash檢測
                c,將所有的關(guān)于css/和images/目錄文件的引用改為本地文件協(xié)議的絕對(duì)路徑
                d,去掉所有app:.*:
            4,result.xsl的修改:
                a,以本地文件協(xié)議的絕對(duì)路徑加入default.css和default.js的引用
                b,加入<audio>標(biāo)簽用作發(fā)音
                c,將所有的app:.*:去掉
                d,結(jié)尾加入一段javascript,調(diào)用三個(gè)函數(shù)
            5,default.js的修改
                a,加入全局變量INBOOK
                b,ctlog函數(shù)直接返回false
                c,修改所有window.external.loadString和window.external.saveString
                d,將deskdict_main修改為results
                e,注釋掉window.selection.empty
                f,playVoice函數(shù)更改內(nèi)容
                g,isFlashReady函數(shù)直接返回true
                h,注釋掉GetAdsByTimer函數(shù)的調(diào)用
                i,注釋掉dict.ugc.init的調(diào)用
                j,在toggleFav函數(shù)加入一段關(guān)于本地單詞本的代碼
            6,更詳細(xì)的修改參見detail/diff-patch目錄下的patch文件。


            7,附:
            其實(shí)為了保存單詞,我還寫了一個(gè)100行多點(diǎn)的多線程網(wǎng)絡(luò)程序,以利用ajax跟本地程序通信。
            但很郁悶的是,goldendict以訪問網(wǎng)站得來的結(jié)果顯示的時(shí)候有些bug。導(dǎo)航條不能用了,頁面低下出現(xiàn)一大片空白。
            從goldendict保存出來的html文件跟在瀏覽器看到明顯不一樣。
            我之所以確定是goldendict的問題,是因?yàn)槲以囘^將改好的網(wǎng)頁文件從apache服務(wù)器發(fā)回goldendict都是出現(xiàn)同樣的問題。
            而從瀏覽器訪問apache服務(wù)器則是正常的。

            posted @ 2012-03-17 01:04 Onway 閱讀(4250) | 評(píng)論 (3)編輯 收藏

            /Files/Onway/free-rooms.bash.txt

            #!/bin/bash

            # 查詢學(xué)校空閑的教室
            # 原理:空閑的教室 
            = 整個(gè)學(xué)期開課的課室 - 查詢時(shí)間開課的課室
            # 如果服務(wù)器查詢參數(shù)不變,一個(gè)學(xué)期只需更新一次
            # good good study , day day up 
            !
            # Onway 
            2012-03-09    aluohuai@126.com

            roomline
            =10
            rooms
            ="黃浩川教學(xué)樓101 黃浩川教學(xué)樓102 黃浩川教學(xué)樓103 黃浩川教學(xué)樓104 黃浩川教學(xué)樓201 黃浩川教學(xué)樓202 黃浩川教學(xué)樓203 黃浩川教學(xué)樓204 黃浩川教學(xué)樓301 黃浩川教學(xué)樓302 黃浩川教學(xué)樓303 黃浩川教學(xué)樓304 黃浩川教學(xué)樓401 黃浩川教學(xué)樓402 黃浩川教學(xué)樓403 黃浩川教學(xué)樓404 黃浩川教學(xué)樓501 黃浩川教學(xué)樓502 黃浩川教學(xué)樓503 黃浩川教學(xué)樓504 黃浩川樓101 黃浩川樓102 黃浩川樓104 黃浩川樓105 黃浩川樓209 黃浩川樓303 黃浩川樓304 黃浩川樓305 黃浩川樓402 黃浩川樓403 黃浩川樓404 黃浩川樓405 繼續(xù)教育學(xué)院101 繼續(xù)教育學(xué)院103 繼續(xù)教育學(xué)院201 繼續(xù)教育學(xué)院203 繼續(xù)教育學(xué)院205 繼續(xù)教育學(xué)院206 繼續(xù)教育學(xué)院301 繼續(xù)教育學(xué)院303 繼續(xù)教育學(xué)院306 繼續(xù)教育學(xué)院403 繼續(xù)教育學(xué)院405 繼續(xù)教育學(xué)院407 繼續(xù)教育學(xué)院505 黎耀華樓108 黎耀華樓212 黎耀華樓306 黎耀華樓313 黎耀華樓402 黎耀球樓301 陸佑圖書館301 陸佑圖書館302 馬蘭芳教學(xué)樓101 馬蘭芳教學(xué)樓102 馬蘭芳教學(xué)樓103 馬蘭芳教學(xué)樓104 馬蘭芳教學(xué)樓201 馬蘭芳教學(xué)樓202 馬蘭芳教學(xué)樓203 馬蘭芳教學(xué)樓204 馬蘭芳教學(xué)樓301 馬蘭芳教學(xué)樓302 馬蘭芳教學(xué)樓303 馬蘭芳教學(xué)樓304 馬蘭芳教學(xué)樓401 馬蘭芳教學(xué)樓402 馬蘭芳教學(xué)樓403 馬蘭芳教學(xué)樓404 馬蘭芳教學(xué)樓501 馬蘭芳教學(xué)樓502 馬蘭芳教學(xué)樓503 馬蘭芳教學(xué)樓504 體育館101 體育館102 體育館103 體育館104 體育館105 體育館106 體育館107 體育館108 體育館109 體育館110 體育館111 體育館131 體育館132 體育館133 體育館135 體育館136 體育館137 體育館138 體育館139 體育館140 新會(huì)樓404 主樓101 主樓201 主樓202 主樓212 主樓213 主樓239 主樓240 主樓249 主樓250 主樓356 主樓401 主樓402 主樓405 主樓406 主樓417 主樓418 主樓421 主樓422 主樓423 主樓427 主樓429 主樓439 主樓441 主樓445 主樓457 主樓458 主樓470 主樓473 主樓501 主樓505 主樓524 主樓525 主樓533 主樓539 主樓541 主樓543 主樓545 主樓549 主樓552 主樓554 主樓556 主樓559 主樓560 主樓562 主樓575 綜合實(shí)驗(yàn)大樓103 綜合實(shí)驗(yàn)大樓201 綜合實(shí)驗(yàn)大樓202 綜合實(shí)驗(yàn)大樓203 綜合實(shí)驗(yàn)大樓204 綜合實(shí)驗(yàn)大樓205 綜合實(shí)驗(yàn)大樓206 綜合實(shí)驗(yàn)大樓212 綜合實(shí)驗(yàn)大樓213 綜合實(shí)驗(yàn)大樓214 綜合實(shí)驗(yàn)大樓302 綜合實(shí)驗(yàn)大樓303 綜合實(shí)驗(yàn)大樓305 綜合實(shí)驗(yàn)大樓306 綜合實(shí)驗(yàn)大樓307 綜合實(shí)驗(yàn)大樓310 綜合實(shí)驗(yàn)大樓402 綜合實(shí)驗(yàn)大樓403 綜合實(shí)驗(yàn)大樓404 綜合實(shí)驗(yàn)大樓405 綜合實(shí)驗(yàn)大樓406 綜合實(shí)驗(yàn)大樓407 綜合實(shí)驗(yàn)大樓416 綜合實(shí)驗(yàn)大樓503 綜合實(shí)驗(yàn)大樓605 綜合實(shí)驗(yàn)樓605"
            update() {
                wget 
            -/tmp/query.asp http://jwc.wyu.cn/everyday/query/indeft/query.asp --post-data "cnt=1&wk=1&wk=2&wk=3&wk=4&wk=5&wk=0&cnt=2&pt=1&pt=2&pt=3&pt=4&pt=5&cc5=&cc6=&cc7=&cc8=&cc9=&Submit=+%CC%E1%BD%BB+"
                iconv -f gb18030 -t utf8 /tmp/query-gb18030.tmp > /tmp/query-utf8.tmp
                
            new="rooms=\"$(grep '.*<td align=\"left\">.*' /tmp/query-utf8.tmp | sed -'0~4p' | grep -'>.*<' | tr -'><' | sort -ub | grep -'^$')\"" 
                
            new=$(echo $new)
                rm 
            /tmp/query-gb18030.tmp /tmp/query-utf8.tmp
                sed 
            "${roomline}c $new" $0 > "/tmp/$0"
                chmod u
            +"/tmp/$0"
                mv 
            "/tmp/$0" $0
            }

            query() {
                arg
            =""
                read 
            -"星期(0-5,0為周末,空格分開):" day 
                
            if [ -"$day" ] ; then
                    arg
            ="cnt=1&"
                    
            for i in $day
                    
            do
                        arg
            =$arg"wk=$i&"
                    done
                fi

                read 
            -"節(jié)次(大節(jié),0-5,空格分開):" class
                
            if [ -"$class" ] ; then
                    arg
            =$arg"cnt=2&"
                    
            for i in $class
                    
            do
                        arg
            =$arg"pt=$i&"
                    done
                fi

                read 
            -"周次(1-19,空格分開):" week
                
            if [ -"$week" ] ; then
                    arg
            =$arg"cnt=3&"
                    
            for i in $class
                    
            do
                        arg
            =$arg"ew=$i&"
                    done
                fi

                
            if [ -"$arg" ] ; then
                    echo 
            "what are you doing!"
                    exit 
            0
                fi

                arg
            =$arg"cc5=&cc6=&cc7=&cc8=&cc9=&Submit=+%CC%E1%BD%BB+"

                wget 
            -/tmp/query-gb18030.tmp http://jwc.wyu.cn/everyday/query/indeft/query.asp --post-data "$arg"
                iconv -f gb18030 -t utf8 /tmp/query-gb18030.tmp > /tmp/query-utf8.tmp
                used
            ="$(grep '.*<td align=\"left\">.*' /tmp/query-utf8.tmp | sed -n '0~4p' | grep -o '>.*<' | tr -d '><' | sort -ub | grep -v '^$')" 
                used
            =$(echo $used)
                rm 
            /tmp/query-gb18030.tmp /tmp/query-utf8.tmp

                
            for i in $rooms
                
            do
                    sign
            =0
                    
            for j in $used
                    
            do
                        
            if [ "$i" == "$j" ] ; then
                            sign
            =1
                            
            break
                        fi
                    done
                    
            if [ "$sign" == "0" ] ; then
                        echo $i
                    fi
                done
            }

            if [ $# == 0 ] ; then
                query
            elif [ 
            "$1" == "--update" ] ; then
                update
            else
                echo 
            -"Usage:\n\t$0 [--update]"
            fi
            exit 
            0

            posted @ 2012-03-09 18:52 Onway 閱讀(498) | 評(píng)論 (1)編輯 收藏

            上圖好像沒什么意思吧?zenity的界面。
                  

            /Files/Onway/oalarm.bash.txt

            oalarm文檔

            概要:
                oalarm是一個(gè)基于gnome,mplayer,at,date,zenity等命令的,使用bash script寫成的簡陋桌面鬧鐘。

            功能:
                定時(shí)任務(wù)的新建,查看,延遲,刪除,提醒。

            安裝要求:
                存在gnome-session進(jìn)程,/usr/bin下存在at,zenity,mplayer程序,$HOME目錄下存在.config/autostart和.local/share/applications兩個(gè)目錄。

            安裝:
                下載oalarm.bash之后,添加運(yùn)行權(quán)限,在桌面圖形環(huán)境下運(yùn)行腳本(不需要root權(quán)限)。這時(shí)會(huì)檢查zenity命令和gnome-session進(jìn)程的存在。gnome-session的檢查是為了保證能使用zenity命令創(chuàng)建界面。如果缺乏任何一個(gè),則在標(biāo)準(zhǔn)輸出后直接退出。

                首次運(yùn)行腳本會(huì)出現(xiàn)安裝選項(xiàng)。
                安裝過程會(huì)先在/usr/bin目錄下檢查at,mplayer,zenity三個(gè)命令,如果缺少任何一個(gè),標(biāo)準(zhǔn)輸出錯(cuò)誤后退出。
                安裝過程還會(huì)檢查兩個(gè)目錄:$HOME/.config/autostart和$HOME/.local/share/applications,如果缺乏任何一個(gè),安裝失敗。在這兩個(gè)目錄會(huì)各寫入一個(gè).desktop文件,分別用于登錄圖形界面后運(yùn)行一次腳本檢查過期任務(wù)和在應(yīng)用附件欄目添加運(yùn)行圖標(biāo)。分別執(zhí)行的命令是:
                $HOME/.oalarm/oalarm.bash --check
                $HOME/.oalarm/oalarm.bash --start

                其后會(huì)在$HOME目錄下創(chuàng)建隱藏目錄.oalarm和兩個(gè)在子目錄past,wait,分別用于存放過期任何和等待任務(wù)。oalarm.bash會(huì)復(fù)制自身到該目錄下。

                如果存在/usr/share/sounds/gnome/default/alerts/bark.ogg該聲音文件,則會(huì)被復(fù)制到.oalarm目錄下并命名為voice,用于提示任務(wù)時(shí)使用mplayer進(jìn)行播放。可以將voice文件替換為喜歡的提示聲音。

            卸載:
                安裝后啟動(dòng)oalarm,會(huì)出現(xiàn)卸載選項(xiàng)。
                卸載行為是:
                刪掉.oalarm目錄和兩個(gè).desktop文件。記得為聲音文件作備份。

            任務(wù)文件格式:
                使用年月日時(shí)分命名。文件內(nèi)第一行為任務(wù)標(biāo)題,新建任務(wù)時(shí)必須填入,第二行至文件尾為任務(wù)內(nèi)容,可選。

            原理:
                下載的oalarm.bash,不帶參數(shù)運(yùn)行,是安裝前使用,安裝后之后可以刪掉。
                從應(yīng)用程序-附件欄目的圖標(biāo)啟動(dòng)是帶--start參數(shù)運(yùn)行$HOME/.oalarm/oalarm.bash。用于新建,查看,延遲和刪除任務(wù)。
                登錄圖形界面后,帶參數(shù)--check自動(dòng)啟動(dòng)$HOME/.oalarm/oalarm.bash,用于檢查關(guān)機(jī)或者登出圖形界面期間到期的任務(wù)。延遲10秒之后開始檢查。
                圖形界面登錄期間,如果任務(wù)到期,則由atd守護(hù)進(jìn)程帶--check和任務(wù)文件名兩個(gè)參數(shù)啟動(dòng)$HOME/.oalarm/oalarm.bash。然后oalarm.bash從wait目錄下的文件提取信息進(jìn)行提示。(如果voice文件不存在,則提示沒有聲音)

                兩個(gè)重要的假定:
                1,使用如下命令判斷使用已經(jīng)登錄圖形界面:
                    ps -eo ruid,comm | grep $UID.*gnome-session
                2,$HOEM/.config/autostart下的.desktop文件指定的程序會(huì)在登錄圖形界面后自動(dòng)運(yùn)行。

            行為:
                在任務(wù)提醒之后選擇延遲和在等待任務(wù)中選擇延遲是有區(qū)別的。如果選擇延遲時(shí)間的時(shí)候取消了,則提醒之后的延遲會(huì)被放棄,任務(wù)被移到過期任務(wù)。

            bugs:
                1,由于命名任務(wù)文件的時(shí)候沒考慮到,同一個(gè)時(shí)間只能有一個(gè)任務(wù),否則會(huì)被覆蓋。
                2,選擇時(shí)間的方式有點(diǎn)別扭,但我也不知道怎么辦。
                3,延遲功能必須重新選擇日期時(shí)間,有點(diǎn)不厚道

            關(guān)于:
                oalarm 0.1.0
                By Onway 2012-03-06

                debug yourself or report to:
                blog: www.shnenglu.com/onway
                mail: aluohuai@126.com

                如果本程序讓你錯(cuò)過了和女友的約會(huì),或者把水燒干了,或者出現(xiàn)其他問題,本人概不負(fù)責(zé)

            posted @ 2012-03-09 18:39 Onway 閱讀(700) | 評(píng)論 (2)編輯 收藏

            如題

            posted @ 2012-02-15 20:16 Onway 閱讀(450) | 評(píng)論 (0)編輯 收藏











            由于有道詞典的windows客戶端是使用xsl將xml文件轉(zhuǎn)換成html再顯示的,而恰好goldendict內(nèi)嵌了webkit,還可以添加擴(kuò)展程序。
            于是寫了個(gè)小程序獲取xml數(shù)據(jù),再借用了一下有道的安裝文件,打包發(fā)上來以此拋磚引玉,希望有興趣的各路神牛可以修改得更好。
            /Files/Onway/youdaodict.tar.gz.rar

            其實(shí)文件不是rar壓縮的,只是上傳不了tar.gz的文件,rar只是加上去的。

            (之前上傳那個(gè),很不好意思的還有一個(gè)文件的路徑?jīng)]改過來,還有順便說說,我的系統(tǒng)是ubuntu 11.10,gnome3桌面,godendict是1.0.1的版本,朋友說0.9那個(gè)版本沒有擴(kuò)展程序功能的)

            posted @ 2012-02-12 20:33 Onway 閱讀(4548) | 評(píng)論 (6)編輯 收藏

            ubuntu 11.04安裝ftp服務(wù)器
            sudo apt-get install vsftpd

            默認(rèn)登錄需要帳號(hào)密碼,其根目錄是用戶根目錄
            客戶端命令:
            登錄:
            ftp [-46pinegvd] [host[port]]
            文件下載:
            get remote-file [local-file]
            ftp命令行不支持目錄下載
            通過wget得到解決
            #wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r
            詳見:man ftp


            或者直接瀏覽器下載

            posted @ 2012-01-26 17:20 Onway 閱讀(638) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共6頁: 1 2 3 4 5 6 
            亚洲欧美国产日韩综合久久| 久久成人国产精品| 久久国产精品久久久| 精品久久久久久无码人妻蜜桃| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久99精品国产麻豆宅宅| 国产美女久久精品香蕉69| 伊人精品久久久久7777| 99久久国产精品免费一区二区| 久久中文精品无码中文字幕| 久久综合九色综合久99| 久久人人爽人人爽人人片AV不| 亚洲精品综合久久| 久久久久99精品成人片试看| 久久国产香蕉一区精品| 久久精品国产一区二区三区不卡| 久久综合色老色| 天天做夜夜做久久做狠狠| 久久夜色精品国产网站| 亚洲精品视频久久久| 91精品国产91久久久久福利| 国产精品久久自在自线观看| 最新久久免费视频| 久久精品这里只有精99品| av国内精品久久久久影院| 久久毛片一区二区| 久久久久国产视频电影| 久久国产V一级毛多内射| www性久久久com| 久久久老熟女一区二区三区| 狠狠色噜噜色狠狠狠综合久久| 久久久久99精品成人片| 久久精品中文字幕一区| 国产精品九九久久免费视频| 亚洲国产婷婷香蕉久久久久久| 国产激情久久久久影院老熟女免费| 久久精品国产亚洲77777| 97精品国产91久久久久久| 无码超乳爆乳中文字幕久久| 国产午夜久久影院| 久久91精品国产91久久麻豆|