Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NTU NewsLab Group Meeting 1
Search
Sam Huang
August 31, 2020
Education
84
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NTU NewsLab Group Meeting 1
Sam Huang
August 31, 2020
More Decks by Sam Huang
See All by Sam Huang
從開發走向管理及規劃 — 工程師的自我修養
sailplanetw
0
220
軟體的成本預估與時程規劃
sailplanetw
0
170
全方位技術整合:專業開發能力成就完善的智能平台
sailplanetw
0
240
從案例看製造業如何做數位轉型
sailplanetw
0
200
案例分享:台塑生醫實驗用藥追蹤系統
sailplanetw
0
200
[MOPCON 2022 Keynote] 從 IoT 到 Web2,從 Web2 到 Web3:那些開發路上的奇妙風景
sailplanetw
0
570
Offline x Online:HiPrint Smart Printing E-Commerce System
sailplanetw
0
240
從 APP 到雲端:物聯網產品的軟體設計該如何規劃
sailplanetw
0
400
感官文化印刷的全通路品牌營運策略
sailplanetw
0
320
Other Decks in Education
See All in Education
チームの鏡になるー自分の癖を知ると、チームのパターンが見えてくる@スクフェス仙台
saorimurooka
0
140
新しいJavaを学んで・使っていこう! / osd26do
gishi_yama
0
230
FA26 CLU MS Clinical Psychology New Student Orientation
jdbedics
0
150
AIには考えられないことを考えられる人になるために
iqbocchi
1
230
0513
cbtlibrary
0
270
[2026前期火5] 論理学(京都大学文学部 前期 第10回)「論理学の哲学——意味とは何か(Tonkと推論主義)」
yatabe
0
260
Stardy 会社紹介資料
stardy
0
5.8k
Soluciones al examen de Geografía 2026. JUNIO (Convocatoria Ordinaria)
juanmartin2026
1
8.9k
면접관 눈에 띄는 데이터 분석 포트폴리오 만드는 법 | 2026년 5월 세미나
datarian
0
1k
エビデンスベースト英語教育入門:エビデンスは科学的知見(だけ)ではない,制度だ!
terasawat
0
160
観察、仮説、実行、検証、計画、提案を一年で3000回トレーニングする方法/3000 Thinking Loops in 365 Days
moriyuya
5
760
[2026前期火5] 論理学(京都大学文学部 前期 第14回)「計算は、証明ではない——ハルシネーションを三層ハーモニーで診る」
yatabe
0
200
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
250
The untapped power of vector embeddings
frankvandijk
2
1.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Evolving SEO for Evolving Search Engines
ryanjones
0
260
Are puppies a ranking factor?
jonoalderson
2
3.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Discover your Explorer Soul
emna__ayadi
2
1.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Transcript
Group Meeting - Some tracing tools Dept. Computer Science and
Information Engineering, NTU 20081125 Yi-Siang Huang
Outline Trace code … 讀書心得
• Trace code … • 讀書心得
Saying First • 我們身邊有總是滿坑滿谷的 code … • 為了人類的進步跟世界的和平 苦命工程師通常要 「懂」那些亂七八糟的
code 到底在幹麼 • 怎樣 trace code 比較有效率呢 ???
Saying First (cont.) • 其實有些吐喔可以給我們一隻手 ! • GUI ?? 非
GUI ?????
Vim + plugin • 大致有下面幾種 - Ctags, Cscope, taglist, …
• emacs 也有支援(非 vim-only) • ubuntu 都可以用 apt-get 取得
Vim + plugin (cont.) • 先來談談 vim … - ctrl+w
n … 分割視窗 - ctrl+w s (:sp) … 開啟同一檔案在新分割視窗(:e 可開別的檔案) - ctrl+w q (:q)… 關閉視窗 - ctrl+w [↑|↓] … 切換視窗 - ctrl+w [+|-] … 調整視窗大小 - [[ / ]] … 跳到前/後一個函數 - [I / ]I … 放在關鍵字上可跳到同檔案中上/下次出現的位置 - gf … 放在 include 的檔案名稱上時即可開啟該檔案 ( :set path+=/usr/include ) ctrl + O 回到原檔案 - [D … 承接上面的 gf, 可展示出 macro 的定義 - :set cursorline … 在 vim 中開啟基準線
Vim + plugin (cont.) • Ctags 1. 幫我們快速找到變數和函數宣告的地方 ! 2.
apt-get ctags 即可安裝 3. 產生檔案列表 :find . –name “*.c” –o –name “*.h” > ctags.files 產生 index : ctags –L ctags.files 4. 使用: Ctrl + ] … 跳到 function body(可跨檔案) Ctrl + t … 回到上一次 :help tags … 查看說明
Vim + plugin (cont.) • Cscope 1. 可以看成是 Ctags 的加強版
! 2. 下載 cscope_maps.vim 到 ~/.vim/plugin 即安裝完成 3. 產生檔案列表 :find . –name “*.c” –o –name “*.h” > ctags.files 產生 index : ctags –bq –i ctags.files 4. 使用: :cs find … 搜尋 functon (還有很多功能) Ctrl + O … 回到上一次 :help cscope … 查看說明
Vim + plugin (cont.) • taglist 1. 讓 vim 出現新分割視窗協助搜尋
(加強 ctags 功能 本質上仍是 ctags) 2. apt-get excberant-ctags 並下載 taglist.vim 到 ~/.vim/plugin 即安裝完成 3. 產生檔案列表以及產生 index 同 ctags 4. 會列出該檔案中所有變數以及函數名稱 5. 使用: :TlistToggle … 開啟輔助視窗 Ctrl + w + [←|→] … 切換視窗方式
Vim + plugin (cont.) • global 1. 可和 vim 結合
但比較特別的是可以產生網頁格式的樹狀結構網頁 ! 2. 支援多種語言 (php, perl, pyhton, …) 3. apt-get global 即安裝完成 4. 在要產生程式碼樹的地方下 gtags 即可產生索引檔 接著下 htags –Fnsa 產生程式碼樹 其後會看到 HTML 目錄
GUI tools • 大致有下面幾種 - Kscope, Anjuta, Kdevelop, … •
大致上差異不大 (都宣稱和 source insight 差不多強) • geany – 一個在程式語法上加強的編輯器
None
人月神話 : 軟體專案管理之道 1975 年初版 1995 年發行紀念版
我們常常碰到 … 容易 delay 而且有抓不完的 bug 老闆或組長要你畫押進度 但是你不敢 不斷不斷的加班 持續很長的一段時間
意志消沈 不幸的事情一再發生 浪費時間 一堆聰明人淨幹些蠢事 想逃但是逃不出來 …
把事情做好 「對航海的人來說 擱淺的船就是燈塔」 <荷蘭諺語> 但是 「你所得到的權力並不足以承擔你所扛下的責 任」 <管理學> 把事情做好 得到更大的權力
承擔更大的責任
焦油坑 …
有些糟糕的事情總會發生 … 一切都會進行的順利 ! 真的嗎 … 雖然畫押了 … 但我真的做的到嗎 ?
人月神話 !!! Delay 了 ! 快來人啊啊啊啊啊啊啊啊啊 !!!!
事實上 … Brooks 定律 「在一個已經 delay 的 project 中增加人手 只會讓他更落後
!」 「人月神話」的迷思 花費的時間 - 專案有多少連續性限制 投注的人力 - 可以被切分成多少獨立的子工作
優秀的團隊 … ? 程式設計師間的生產力差異極大 ! 經驗多寡 … 影響不如想像中大 兩難在於要兼顧工作效率跟概念整體性 Harlen
Mills 的架構 - 如外科手術團隊 - 短小精悍的團隊比較棒
所以要專制還是民主 ? 保持概念整體性最好的方式就是 其出自少數人的一致決定 架構是「做什麼」而實做是「如何做」 「第二系統」的出現 !
巴別塔為何失敗 ? 根據記載 巴別塔成功的條件 明確目標 有 人力 很多 材料 足夠
時間 沒有限制 技術 足夠 缺少的是溝通和組織 !
要是失敗了該怎辦 ? 不需要煩惱是否該先做一個試探性的系統 然後將之丟棄 目的只是吸收經驗 因為你一定會丟掉第一次做出來的東西 「把必然的一次失敗納入正式計畫之中」 放心 ! 現在在你面前的
spec 一定會改變 !
失敗失敗失敗 … 修好的 bug 很可能會導致其他 bug 出現 ! Pascal :
「任何事物總是在最一開始的時候最完美」
大災難啊 … 為什麼專案會落後一年 因為每次都落後一天 程式除了寫給電腦看之外 也是寫給人看的 請維持良好的寫作習慣 !
有沒有銀彈 !? 軟體開發的本質性和附屬性 因為本質性 大幅提昇開發速度有難度 軟體是人寫的 不是上帝 !
人月神話二十年 勿忘初衷 ! 架構設計師要綜觀全局而非細節 社會性問題通常超過技術性問題 一些反思 - 即使知道這些 開發真能變得更順利 ?
- 真的沒有銀彈 ??