changed 4 years ago
Published Linked with GitHub

AIdrifter CS 浮生筆錄

  • Self-introduction

    • Hi, I am AIdrifter, Before I learned Computer Science(24), I studied Digital Arts at University. There is no doubt that I love painting. But the path that I have chosen, I will not regret it. I clearly know to study computer science is too late for me..ㄡ Hope this note can help other guys like me, let you to find some knowledge from here.
    • Hi, 我是AIdrifter,我大學時學習數位藝術,我熱愛繪畫,後來轉學習電腦科學領域,雖然起步比不上資工本科生,不過這是我曾經選擇的道路,我不曾後悔,希望在這份浮生筆錄上,可以幫助像我一樣的徬徨者找到追求的道路。
  • My GitHub

  • In addition to painting, I have the another interests for these topics.

  • 除了繪畫,我還有以下興趣 :

    • Trusted Execution Environment and Digital Right Management
      (可信任執行環境與數位版權管理)
    • Debug Skill (GDB, KGDB, Coredump) (Debug 技能)
    • Linker, Loader & library (連結器, 載入器, 函示庫)- ELF的二三事
    • Algorithm And Data Structure
    • Linear Algebra and Discrete Mathematics

By the way, if you have any questions on this blog or notebook, please don't hesitate to let me know. aidrifter@gmail.com

Software Enginner Interview

C 初次試煉

  • 介紹常見的面試考題,包含C語言,作業系統,資料結構等等。

Coding Competition

Competitive Programmer's Handbook

程式競賽入門書本,在開始歡樂練習前,先看看高手是怎麼做的。

  • Ch1 Intrdouction & Ch2 Time Complexity: 介紹需要處理的stdin, stdout與Time Complexiy。
  • Ch3 Sorting & Ch4 Data Structure: Sorting的概念與 C++ STL 常用的data structure。
  • Ch5 Complete Search : 窮舉法
    • 介紹窮舉法的概念,如何把利用pruning the search把不要的分支去掉。
  • Ch6 Greedy Algorithms : 貪婪演算法
  • Ch7 Dynamic Programming : 動態規劃
  • Ch8 Amortized anaysis : 平攤分析
    • 平攤分析常用於分析資料結構(動態的資料結構),在使用平攤分析前須知道資料結構各種操作所可能發生的時間,並計算出最壞情況下的操作情況並加以平均。
  • Ch9 Range Queries : Range Queries
    • 陣列中元素求Max, Sum, Min的各種演算法,Segment Tree在所有case皆可適用。
  • Ch10 : Bit Manipulation
    • 先從基本的uint32_t 和int32_t 去介紹二進制的相關性質(overflow處理)與數學等式,經典的Hamming distance與Couting subgrids,然後帶到集合的相關操作。
    • 集合方面: 如何利用位元表示法去有效的處理集合相關問題,像是permutations, counting(combination) ,最後套用在DP上面,實際演練如何減少時間複雜度。
    • 其實很多DP等式,都很接近以前黃子嘉說的"小黑的故事",將等式分成抓小黑,和不抓小黑兩種case,和排容原理有異曲同工之妙。

花花醬 Alog/DS 特輯

Time Complexity
- Define Big-O (Asymptotic Notation)
Sorting and Time Complexity
- Basic
- Bubble, Shell ,Insertion, Select
- Advanced
- Heap, Merged, Quick

Cracking Codiing Interfiew

  • 粗略筆記整理 更新中

BCR: Best conceivable runtime

  • 面試常常會遇到這問題,現在這演算法還有辦法在優化嗎?
  • 教科書不會提到的BCR幫助你勇敢地回答說: 對!這已經是最佳解了

Program Language

Python

Java

C/C++

C++ coding Interview

C++ Standard libraries(STL)

RD Rule For Coding Style

  • What's different between student and engineer
  • Good coding style
  • Memory layout

OOD 面向程式設計

Trusted Execution Environment (TEE)

  • DRM(Digital Right Management)是一系列存取控制Digital Content技術的集合。Amazon、AT&T、AOL、Apple Inc.、Google、MicroSoft , Sony和Valve Corporation公司都使用了數位權利管理。
    • DRM主要兩大陣營Googloe(Widevine),Micorsoft(PlayReady)
    • 都需要搭配TEE or Secureted OS 已保護其Digital Contnet,重要的資料都放在該OS的memory上:
      • 1.Key(AES content key or ECC private key or public key)
      • 2.Encrypted Digital Content

Trusted Execution Environment (TEE)

  • 介紹TEE運作的方法

Android MediaDRM FrameWork

  • Introduce Android MediaDRM Freame Work

Linux

Shell Script

pthread

  • 介紹POSIX pthread用法

Profile

Memory

Multi-thread and Synchronization in Linux

  • Multi-thread Safe Problem

    • What's difference between Process and Thread?
    • Create prcess and wait Process
    • Linux fork() vs Windows MFC
    • Multi thread
      • Thread safe problem
      • Double free problem
      • Volatile
      • Cache line problem
  • Thread Synchronization in Linux

    • Create proecess and wait process
    • Create thread and wait thread
    • Mutex
    • Shared Exclusive Lock
    • File Lock
    • Event
    • Semaphore

IPC in Linux

  • 常見的IPC 有八種方法
  • summary 彼此的差異

Linux kernel

Network Problem

Android

Android O

  • Android Trerble, extra vendor.img

Android MediaDRM FrameWork

  • Introduce Android MediaDRM Freame Work

Debug Skill

學會了 GDB,我有種山頂洞人學會用火的感動」 – 張至

  • 只用 printf() 觀察的話,永遠只看到你設定的框架 (format string) 以內的資料,但很容易就忽略資料是否合法、範圍是否正確,以及是否看對地方

GDB : Linux, Android, KGDB

  • How to use GDB on Android O

    • Android use python script and adb to debug
  • How to use Remote GDB on Linux

    • Remote GDB for linux system
  • How to use GDB to adjust mulit-threads

    • follow-fork-mode方法:方便易用,對系統內核和GDB版本有限制,適合於較為簡單的多進程系統
    • attach子進程方法:靈活強大,但需要添加額外代碼,適合於各種複雜情況,特別是守護進程
    • GDB wrapper方法:專用於fork+exec模式,不用添加額外代碼,但需要X環境支持(xterm/VNC)。
  • KGDB

    • For kenerl debug (To be continued )

簡易CoreDump排除

人民救星GDB COSCUP 2019

身為工程師,有一個好的debug環境非常重要,這是一篇適合初學者的入門,還在猶豫要不要學GDB嘛?
趕快來看看這篇吧:

Debug Hacks 除錯駭客-極致除錯的技巧與工具

Linker, Loader, Libraries ELF的二三事

GNU Binary Utilities

  • 利用objdump,readelf,nm,objcopy,ld, lld 搭配cross compiler 完成對elf的操作

Makefile 常見語法

  • 字串處理相關語法

如何處理 undefined reference

GCC compiler option

淺談dlopen() dlsym()

booklist

Crypto

What's digital signature(數位簽名) and digital certificate(數位證書)

  • Introduce digital signature(數位簽名) and digital certificate(數位證書)

Symmetric vs Asymmetric

  • 介紹對稱式(symmetric)與非對稱式(asymmetric)的差異
Select a repo