j100002ben

可發文群組
  • 內容數

    1527
  • 註冊日期

  • 最後上線

文章 發表由 j100002ben

  1. 不懂為何即時通訊要獨立出來

    我在想往社群網站討論發展

    像之前有人來發過一篇plurk機器人的文章

    在這裡分享一些社群網站的使用經驗或應用程式不知有無前途

    也可以配合隔壁的3c版來發展,畢竟現在平板和智慧型手機正夯

    只是想說有一個子版可以放之前的舊文章xd

    要全部放進去然後用首碼分類也可以啦..

    只是感覺他和軟體討論有一些差異,又有一些交集

    我怕之後首碼太多也會很麻煩:p

    主討論群組(首碼下收)

    公告

    最新消息

    使用問題

    軟體應用

    硬體零件

    程式設計

    即時通訊

    其他

  2. 最近看了關於Visual C++ 2010 這篇文章

    我也是用 Microsoft Visual C++ 2008 Express Edition 來練習寫C語言的程式

    心中有個疑問,

    就是我買的書是教用「CLR主控台應用程式」來寫程式,

    但是有學長提出要用「Win32 主控台應用程式」,

    所以我想問兩個的差異,以及用哪一個比較好?

    謝謝。

    看需求以及你需要的介面

    換個說法就是Command Line與圖線視窗介面的差別

    • 版主:j100002ben
    • 討論版:電腦軟硬體相關討論群組
    • 本月人氣:還是一樣少,不過和平常差不多吧
    • 灌水聊天狀態: 無(沒有人怎聊天)
    • 管理願景:人越多越好,這樣才會有動力(誤)
    • 計畫中之項目:重新把五個區域規劃調整
    • 管理上之困難:我工作好忙(不過之後又要回去當大學生了:P)
    • 對深藍政策批評與建議:人太少,版面不夠清爽,和各大社群平台比起來較難操作上手以及找到自己想去的版面
    • 給 管理群 的話:一起加油吧~~;-)

    PS:這次很抱歉遲交了T_T

  3. 非同步IO

    http://en.wikipedia.org/wiki/Asynchronous_I/O

    1. 開子程式來解

    在Linux的解法是用fork出來parent和child,

    然後child等待輸入,parent計時,超過時間就把child終止,

    windows上要用thread或是process解

    對了,child如果抓到輸入的資料要傳回去給parent要嘛就要實做share memory

    不然就要自己開socket作內部通訊

    找到的python程式(第一個回覆的第一篇程式)

    http://stackoverflow.com/questions/2933399/how-to-set-time-limit-on-input


    import thread
    import threading

    def raw_input_with_timeout(prompt, timeout=30.0):
    print prompt,
    timer = threading.Timer(timeout, thread.interrupt_main)
    astring = None
    try:
    timer.start()
    astring = raw_input(prompt)
    except KeyboardInterrupt:
    pass
    timer.cancel()
    return astring

    2. 用non blocking的輸入來作

    linux上面有select和read可以用

    http://www.unix.com/programming/16678-how-get-timed-input-using-cin.html


    #include <sys/time.h>

    int main()
    {
    fd_set fdset;
    struct timeval timeout;
    int rc;
    int val;

    timeout.tv_sec = 6; /* wait for 6 seconds for data */
    timeout.tv_usec = 0;


    FD_ZERO(&fdset);

    FD_SET(0, &fdset);

    rc = select(1, &fdset, NULL, NULL, &timeout);
    if (rc == -1) /* select failed */
    {
    printf("ERROR path\n");
    val='E';
    }
    else if (rc == 0) /* select timed out */
    {
    printf("DEFAULT path\n");
    val='D';
    }
    else
    {
    if (FD_ISSET(0, &fdset))
    {
    val = getchar();
    }
    }
    printf("VAL is %c\n", val);
    }

  4. 應該是前景色和背景色的差別吧..

    The runtime always assigns low-intensity to the background if the background color is black. Using high-intensity would cause the background to be dark gray, which tends to make the screen look muddy.

    Many devices do not support a background intensity independent from the foreground intensity (most terminals, for example). When that is the case, the runtime declares the background intensity to be low-intensity.

    參考:http://www.infotraxsys.com/dev/acudocs50/comprun/gt400122.htm

    PS:倒數第二行的英文打錯字啦,結果Google只找得到你發得的這篇文章xd

  5. 感謝您於深藍分享此軟體,

    但本討論區著重該軟體實際的使用經驗及心得分享,

    且該軟體後端所搭配的服務是需要至[NOPARSE]cami.yesing.com.tw[/NOPARSE]註冊使用,

    您的發文格式及內容會讓人有「廣告文」的疑慮。

    建議您調整此篇文章的內容,並補充更多實用資訊。

    電腦軟硬體相關討論群組版主 j100002ben

  6. 第二題有限時應該也不用解很久...

    我用Python 1.2秒就出來了

    C的解法應該也是暴力解...

    解答其實很簡單,就只是單純的陣列+for迴圈

    不過左邊兩位數和三位數只有三位數的中間那個數字有可能是0

    因為個位數如果是0右邊乘出來的結果就會有0,但是不能重複

    左點最高位數不能是0應該也不用解釋了XDD

    以下是Python

    num_used = []
    def f(x): return num_used.count(x) == 0
    def stringToInt(x): return int(x)
    #Do not need to test 0 due to two-digits number
    for i in range(1,10):
    num_used.append(i)
    #Do not need to test 0 due to last digit cannot be 0
    for j in filter(f, range(1,10)):
    num_used.append(j)
    #Do not need to test 0 due to three-digits number
    for x in filter(f, range(1,10)):
    num_used.append(x)
    for y in filter(f, range(0,10)):
    num_used.append(y)
    for z in filter(f, range(1,10)):
    num_used.append(z)
    mul_num = (i*10 + j) * (x*100 + y*10 + z)
    if filter(f, range(0,10)) == map(stringToInt, sorted(list(str(mul_num)))):
    print str(i) + str(j), 'X', str(x) + str(y) + str(z), '=', mul_num
    num_used.remove(z)
    num_used.remove(y)
    num_used.remove(x)
    num_used.remove(j)
    num_used.remove(i)

    補一個整理過用遞迴的版本


    current_digits = []
    def f(x): return current_digits.count(x) == 0
    def getNextDigit(index):
    if index == 5:
    mul_num = int(''.join(map(str, current_digits[:2]))) * int(''.join(map(str, current_digits[2:])))
    if map(str, filter(f, range(0,10))) == sorted(list(str(mul_num))):
    print ''.join(map(str, current_digits[:2])), 'X', ''.join(map(str, current_digits[2:])), '=', mul_num
    return
    for digit in filter(f, range(0,10) if index == 3 else range(1,10)):
    current_digits.append(digit)
    getNextDigit(index+1)
    current_digits.pop()
    if __name__ == '__main__':
    getNextDigit(0)

  7. 例如說

    001

    001

    011

    010

    001

    011

    作以下運算

    001^001=000

    000^011=011

    011^010=001

    001^001=000

    000^011=011

    這樣的話最後的結果不是011嗎

    可是應該是要輸出010吧

    你的測試資料是錯的啊...

    只會有「一組奇數個數字」,其他的都會是偶數個

    你的測試資料010和001各有1個和3個

    所以結果的011是010 XOR 001的結果:p