owned this note changed 7 years ago
Linked with GitHub

SITCON 2017 R2 共筆

校園資訊系統的困境與嘗試改善 — ㄅㄌ

slideshot

slideshot

# 這個專案怎麼出生的?

  • 人機介面設計作業
  • 不為了交作業寫 code

App Client 實作選擇

slideshot

  • 團隊內對語言以及工具熟悉的程度
  • 對於流暢度的要求
  • 開發時間與學習成本:選擇熟悉的語言或框架,避免重複造輪子

Backend 實作選擇

  • Parse

選擇自己寫的原因

  • 不想被平台綁住
  • 想練等?

slideshot

選平台語言的考量

slideshot

  • NodeJS 有很多套件可以使用(使用套件,避免重複造輪子)
  • 不建議新手接觸功能很強大或不熟悉的套件

遇到不會的東西怎麼辦?

slideshot

  • 看官方文件->開始實做(別做夢了,你沒那麼強)
  • Loop(Google(記得用英文當 Keyword )->查搜尋結果提到的官方文件->嘗試->Bug餵到Google)

前端 UI 怎麼辦

slideshot

  • 用預設介面,或是使用現成的Library
    • 缺點是會很難看,會很恐怖Orz

技術人(?)

slideshot

slideshot

  • DO UI KIT

slideshot

  • 不是好看就拿來用,要想想看有什麼用途
  • 每個圈圈時間總不同->中看不重用

Team Work 方法

這些可能你已經知道

slideshot

  • 版本控制Source Code

但做版本控制時…

slideshot

衝突有確實解掉嗎?

slideshot

commit log 亂打一通

slideshot
slideshot

  • 堆一堆東西一次Commit上去

協作工具你善用了嗎?

slideshot

  • Github上的協作工具,善用可以提高工作效率
  • 一律發 PR -(被雷到怕了) / Code review
  • Wiki:後端前端的使用方式與細節,建立文件避免使用錯誤

和設計師合作

  • UI 設計與實做脫勾,有時候在實做上會很痛苦
  • 斷線時的處理

合作模式

密集討論

  • UI實做的拆解
  • 資料流 程式流程
    • 克服網路爛掉時的流程


善用設計工具

Sketch(Mac Only)

Zeplin

  • 色碼功能

和學校合作

行政限制

  • 學生不能碰敏感資料
    • 個資
    • 對學校來說上課的作業也是敏感資料
  • 學校機器不該被遠端連線
    • 學校會覺得有資安疑慮
    • 不信任學生
  • 多少人力願意協助
    • 一年寫一次系統,寫死的(造成沒有人力幫忙)

學校技術

  • 滿滿的 .NET
  • 滿滿的微軟系統
  • 曾經想做推播系統,但學校表示我可以用舊的技術嗎?
  • 新技術很快,學校看到時該技術已經很舊了

後續

  • 學校無法維護非微軟類的軟體
  • 學校要求使用Xamarin(C#)來開發
  • 建議學校開放API給全校學生(附加使用規範)
  • 會對學校帶來小小的改變,讓學校單位開放 API

嗨,我是蒲薰 — Shouko

  • 訊息佇列:queue<->process<->platform
  • state machine
    • 藍色為狀態
    • 綠色為使用者動作
    • 橘色為狀態跳轉

Github https://github.com/shouko/tobenilept

雷系魔法師也能煎牛排! — LegBone

Github https://github.com/cowby123/cook/blob/master/yaya.ino

所以我說那個 ML 入門其實真的沒想像中那麼難 — Terry Cheong

什麼是機器學習?

  • 自動從數據中找出規律的方式;想辦法自動從數據中找出規律的方法,找出規律後,依照情況做出相對應的決策。
  • Ex.AlphaGo

Typre of Learning Task

  • Regression
  • Classification
  • Clustering

Learning 的基本流程

  1. Feature Engineering:對資料進行預先處理,並轉換成向量
  2. Model Selection:選一個好字的Model,定義好Error Function
  3. Training:調整模型參數,來符合輸入資料
  4. Testing:嘗試model再未見過的data上的表現
  • GG的話,可能需要調整模型,或是訓練的方式或參數有問題

Gradient Descent

decision tree

  • decision tree:多層if-else的結構
  • training 的方法
    • 把data從中間點分開

decision tree的其他講解:r2d3.us

Random Forest

  • 多顆Decision Tree
  • 隨機選Feature切割
  • 透過data bagging讓performance優於decision tree。

SCKIT-Learn

  • 需要使用Numpy/Pandas

  • scikit-learn.org

  • 建Model:clf=sklear?

    • model.fit(Data,一堆參數):clf
  • 三行解決:

    1. 建model
    2. Model.fit
    3. Model.predict

Deep Learning(來不及了)

從 V8 Javascript 引擎淺談現代編譯技術(From V8 to Modern Compiler) — 民2

  • It's not boring!!

  • Compilers are everywhere!!

  • Javascript

    • Dynamic > interpreter
  • JIT Compiler

    • Compile code on-the-fly > 馬上執行
    • Need Fast compilation speed
    • Can apply More Optimizations
    • Compilations are all happening in runtime
  • Classical Compiler

    • source code > Frontend > Intermediate Representation > Backend > Native Code
  • V8優勢: IR 和 Code Gen

  • Categories of IR

    • Linear
    • DAG
    • Graph
  • Multi-levels IR

    • Linear->DAG->Linear(因應不同環境優化)
  • Control Flow Graph: 由Control Flow組成

  • V8

    • Unified Graph IR
      • Nodes: Data Operation, Control Operation
      • Edges: Dependencies
      • ex. z=y+2 // z depends on '+', then '+' depends on y and 2.
    • IR Nodes Lowering/Reducing(High level to Low level)
      • Javascript > Intermediate > Machine
    • Extensice Studying
      • How V8 handles dynamic types? (hint: Inline Cache)
      • The New Interpreter of V8
      • Garbage Collection in V8
  • From V8 to Modern Compiler

    • lex & yacc > nothing more!!
    • 最重要的是Back-end!!(Optimization, Instruction Selection, Register Allocation)
    • 近代Compiler研究
      • 如何加速Compiler
      • Compiler本身記憶體消耗量
      • How to choose proper optimizations
      • Dynamic-Profiled Optimizations
      • "龍之書"過時了O.O
      • 直接讀Code!! (HHVM, V8, LLVM, pypy)
  • Appedix

自幹 Dynamic DNS Server — yenWu

  • Project Github: https://github.com/yenWu/DDNS
  • 目標: Build Dynamic Dns server on FreeBSD
  • Internet: domain name and IP
  • DNS Server
    • domain name > 回應IP
    • 委派式的naming system
    • a little similar to phonebook > translate
    • dns client: resolver
    • dns server: resolver, database, cache
    • resolver負責query跟response
    • iterative query: 你問的沒有答案就叫你去問別人
    • recursive query: 一層層問下去,直接回覆答案回來

Why Hierarchy?

  • 比heterachy有效率.
  • 更新可以立即顯示

如何解決浪費時間查詢檔案?

  • cache
Select a repo