鍾禾翊

@Holy

Joined on Jun 9, 2017

  • contributed by < Holychung > 2020q3 Homework5 (render) 題目 Outline [TOC] 背景知識 在開始 trace code 之前可以先閱讀 Casting Wolf3D-style Rays with an FPGA and Arduino,當中有提到要撰寫一個 ray casting engine 有兩個方法,其中一個比較直接明瞭的是 Lode's Computer Graphics Tutorial,強烈建議先讀完這篇。 我在讀這篇的時候順便做了點筆記,因為篇幅太長就記錄到 研讀筆記: Raycasting。
     Like  Bookmark
  • source Introduction Raycasting 是一個算繪的技巧,在 2D 呈現 3D 的視野。在電腦運算不夠快的時候是沒辦法跑 3D 引擎,這時候 raycasting 就是一個好辦法。 Raycasting 速度非常的快,因為只需要計算完螢幕上每個垂直的線就好,使用這個方法著名的遊戲 Wolfenstein 3D (德軍總部3D)。 The Basic Idea 基本的 raycasting 觀念是地圖是一個 2D 網狀方格,每一個方格都是 0 (= no wall) 或是正數 (= wall with a certain color or texture)。
     Like  Bookmark
  • source 全文主要是翻譯原文,並記錄自己的閱讀。 Introduction 在這篇文章中我們的目的是建構一個指向 Shape 物件的指標陣列,每一個 Shape 指向物件 Circle、Square、Goat 等不同物件,皆以純 C 實現。 Airticle 先建立三個結構。
     Like  Bookmark
  • antirez/linenoise linenoise 這個 function 是整個程式主要的 API,一開始會檢查是否是 tty,然後在看終端機是否有支援,有支援了話就會呼叫 linenoiseRaw。 char *linenoise(const char *prompt) { char buf[LINENOISE_MAX_LINE]; int count; if (!isatty(STDIN_FILENO)) {
     Like  Bookmark
  • 論文連結 dudect Github Introduction Side-channel attack 是一種利用系統實作上的特性,而不是用密碼學演算法本身的攻擊,其中 Timing attacks 是其中一種很常見的手法,可以透過演算法的執行時間進而破解,舉例來說,一個判斷密碼是否正確的算法是從第一個字母開始逐一比對,一遇到不一樣的就馬上返回錯誤,那我們就可以透過多次嘗試,並觀察時間來判斷輸入是否正確。 現今也有一些評估的工具了,像是 Valgrind 的延伸 ctgrind,還有 ctverif 透過靜態的程式分析,但是有一些共同的缺陷是這些方法需要對硬體建模,但是困難的是 CPU 製造商通常不會給太多細節的資訊。 這篇論文的貢獻是,透過自己開發的 dudect,一個透過統計分析的程式判斷程式是否是 constant-time 在給定的平台之下。與其他工具透過靜態分析的手法不同,dudect 是透過 timing leakeage detection tests 對執行時間的統計分析,就可以避開底層硬體的限制,不侷限某特定 CPU 硬體平台。
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework3 (dict) 題目 目錄 [TOC] 閱讀程式碼 test_common.c 有兩種模式 CPY 和 REF 根據輸入的參數決定。
     Like  Bookmark
  • contributed by < Holychung > 2020q3 Homework1 (lab0) 題目 Outline [TOC] 開發環境 $ uname -a Linux holy-VirtualBox 5.4.0-47-generic #51~18.04.1-Ubuntu SMP Sat Sep 5 14:35:50 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework7 (quiz7) 題目 目錄 [TOC] 測驗 1 題目 給定兩個函式實作:
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework6 (quiz6) 題目 目錄 [TOC] 測驗 1 題目 bfloat16 浮點數格式由 Google 公司發展,最初用於該公司第三代 Tensor 處理單元 (Cloud TPU)。bfloat16 的主要想法是提供 16 位元浮點數格式,其動態範圍與標準 IEEE 754 的 FP32 (Single-precision floating-point format) 相同,但精度較低,相當於指數區和 FP32 保持相同的 8 位元,並將 FP32 的 fraction 區域縮減到 7 位元。
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework5 (quiz5) 題目 目錄 [TOC] 測驗 1 題目 考慮到以下浮點數除法程式: (fdiv.c)
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework4 (quiz4) 題目 目錄 [TOC] 測驗 1 題目 LeetCode 461. Hamming Distance 提及,兩個整數間的 Hamming distance 為其二進位的每個位元的差。請計算輸入參數兩整數 x 與 y 的 Hamming distance,例如整數 1 的二進位為 0 0 0 1,而整數 4 的二進位為 0 1 0 0,則 1 與 4 的 Hamming distance 為 2。
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework3 (quiz3) 題目 目錄 [TOC] 測驗 1 題目 依據 ISO/IEC 9899:TC2 (即 C99) 標準的 6.5.7 章節 (第 84 到第 85 頁):
     Like  Bookmark
  • contributed by < Holycung > 2020q3 Homework2 (quiz2) 題目 目錄 [TOC] 測驗 1 目前電腦中用得最廣泛的字元集及其編碼,是美國國家標準局 (ANSI) 制定的 ASCII 碼,被國際標準化組織 (ISO) 採納為 ISO 646 標準。7 位碼 ASCII 是以 7 位元二進位數字進行編碼,可表示 128 個字元,第 128~255 號為擴展字元 (extended ASCII)。如果我們明確界定 7 位元編碼的字元隸屬於 ASCII,可透過以下函式來判斷指定的記憶體範圍內是否全是有效的 ASCII 字元: #include <stddef.h>
     Like  Bookmark
  • contributed by < Holychung > 2020q3 第 1 週測驗題 Outline [TOC] 題目 考慮一個單向 linked list,其結構定義為:
     Like  Bookmark