SlideShare ist ein Scribd-Unternehmen logo
1 von 138
Downloaden Sie, um offline zu lesen
Maxis Kao | Oct. 19, 2016
> 優化開發環境 無料提升戰⾾鬥⼒力
Maxis Kao
➔ Software Engineer at Yahoo
➔ Top Hack of Yahoo TW/JP Joint Hackday
➔ Winner of Yahoo Bot Challenge
範疇
環境決定論
⼯工程師⽣生態系
⾓角⾊色 / 需求
• RD:程式
• PM:時程
• Company:成本 + ⾵風險
• Client:產品
原始⼈人寫程式
很久很久以前
• PM:明天新功能上線!
• RD 1:⼤大部份都做好了,等等跟 RD 2 合併
• RD 2:我只差剩下的⼀一些⼩小 bug 待會修⼀一下就好
• QA:看起來還⾏行,但疑似有些 bug 無法重現 (reproduce)
• PM:沒關係,晚上衝⼀一下!明天開⼼心上線
半夜 12 點
RD
• RD 1:我們來合⼀一下 code
[ 經過漫⻑⾧長的半⼩小時,解 conflict ]
• RD 2:奇怪為什麼我的電腦上有錯你的沒有
• RD 1:等等!我現在⼜又跑出奇怪的 bug,先來速速解⼀一下
QA
• 之前壞掉的好像修好了
• 原本好的貌似變得不穩定
• 到底什麼時候可以給我最終版
PM
• 什麼?!剛剛不是說快弄好了
• 乖乖
• 踱步
• 抓頭
早上 7 點
上線
悲劇
現代⼈人寫程式
“什麼是環境?”
⼯工作環境 開發環境 開發流程
⼯工作環境
M A C B O O K P R O
蘋 果
I P H O N E
寫 很 滿 的 筆 記 本
搖 滾 樂 + 莫 扎 特
便 宜 的 咖 啡
在 講 設 計 的 書
很 普 通 的 鉛 筆
⼤大 桌 ⼦子
密 密 ⿇麻 ⿇麻 像 駭 客 ⼀一 樣
I K E A 的 檯 燈
開發環境 / ⼯工具
開發環境
• OS
• Text editors
• Command line tools
• Web Platform
OS
• Windows	
  
• Linux	
  
• Mac	
  OS	
  
• Ubuntu	
  
• Debian
Text editors
• Notepad
Text editors
• Notepad	
  
• Sublime	
  Text
Text editors
• Notepad	
  
• Sublime	
  Text	
  
• vim	
  
• emacs
Command line tools
• ZSH	
  (oh-­‐my-­‐zsh)
Command line tools
• ZSH	
  (oh-­‐my-­‐zsh)	
  
• tmux	
  +	
  htop
Web platform as a service
• AWS	
  
• Heroku	
  
• Google	
  App	
  Engine
開發環境 / 流程
程式設計 ≠ 軟體開發
個⼈人開發環境
⼤大⼈人不在家,怎麼做都開⼼心
團隊開發流程
⾃自⼰己亂寫就算了,但要為別⼈人設想
“10+ Deploys per Day
Dev and Ops Cooperation at flickr”
- John Allspaw and Paul Hammond
Patrick DeBois
#devops
#devops
since 2009
– 蔣渭⽔水
“同胞須團結,團結真有⼒力”
在 DevOps 出現之前...
– an angry ops guy
“It’s not my machines,
it’s your code!”
– an angry dev guy
“It’s not my code,
it’s your machines!”
Dev Ops
改變 穩定
Dev Ops
改變 穩定
DevOps key points
• automated infrastructure (⾃自動化集成)
• shared version control (共⽤用程式碼)
• one step build and deploy (持續建構/部署)
• feature flags (主幹開發)
• shared metrics (不藏私)
• IRC and IM robots (信息整合)
A survey
• 來源: RightScale
• 受訪者: 1,060 資訊⼈人員
• 42% 就職於超個 1,000 ⼈人的⼤大公司
“XP”
“Extreme Programming”
- Kent Beck since 1996
YAHOO!+
企業經驗
Extreme Programming
• Fine-scale feedback (細微回饋)
• Continuous process (持續程式)
• Shared understanding (共識)
• Programmer welfare (⼯工程師的利益)
Fine-scale feedback (細微回饋)
• Whole team
• Test-driven development (TDD)
• Planning game
• Pair programming
Fine-scale feedback (細微回饋)
• Whole team
• Test-driven development (TDD)
• Planning game
• Pair programming
Dev ⬄ Client
Fine-scale feedback (細微回饋)
• Whole team
• Test-driven development (TDD)
• Planning game
• Pair programming
先寫測試!
先寫測試!
先寫測試!
test environments &
frameworks
Fine-scale feedback (細微回饋)
• Whole team
• Test-driven development (TDD)
• Planning game (策劃遊戲)
• Pair programming
Exploration phase
• Write a Story
• Estimate a Story
• Split a Story
Commitment phase
• Sort by Value
• Sort by Risk
• Set Velocity
• Choose scope
Steering phase
• 估計誤差
• 客⼾戶需求改變
Fine-scale feedback (細微回饋)
• Whole team
• Test-driven development (TDD)
• Planning game
• Pair programming (⼀一起寫扣)
“Is pair programming worth it?”
Continuous process (持續程式)
• Small releases
• Continuous integration
• Design improvement
Continuous process (持續程式)
• Small releases
• Continuous integration
• Design improvement
Continuous process (持續程式)
• Small releases
• Continuous integration (持續整合)
• Design improvement
– Standard Bank: Our DevOps Journey
“The Chop Chop team”
Dawie (CIO) + Dev + Ops
War Room !
2000 x
軟體交付速度的破壞性變⾰革
– Marissa Mayer
“沒有持續交付 (Continuous Delivery)
專案不得上線,我不是在說笑”
100%
Continuous Delivery
– SJ Chou, Senior Engineer at Foxconn
“有事沒事就把⼤大家寫的 code 合起來
跑看看有沒有錯”
持續 整合
– SJ Chou, Senior Engineer at Foxconn
“有事沒事就把⼤大家寫的 code 合起來
跑看看有沒有錯”
持續 整合
– SJ Chou, Senior Engineer at Foxconn
“有事沒事就把⼤大家寫的 code 合起來
跑看看有沒有錯”
持續 整合
天下武功 無堅不破 唯快不破
Continuous process (持續程式)
• Small releases
• Continuous integration
• Design improvement
“Refactoring”
Improving the Design of Existing Code
Refactoring: Improving the
Design of Existing Code
Martin Fowler
Refactoring ⬄ Users
Refactoring	
  is	
  boring.
ok, but how?
“Bad Smells”
Long Parameter List.
Divergent Change.
Shotgun Surgery.
Feature Envy.
Data Clumps.
Primitive Obsession.
Switch Statements.
Parallel Inheritance Hierarchies.
Lazy Class.
Speculative Generality.
Temporary Field.
Message Chains.
Middle Man.
Inappropriate Intimacy.
Alternative Classes with Different Interfaces.
Incomplete Library Class.
Bad smells
• Duplicated Code
• Long Method / Large Class
• Long Parameter List
• Switch Statements
• Indecent Exposure
• Feature Envy
• Comments
Duplicated Code
• 恐怖份⼦子⾸首腦
• Don't Repeat Yourself!
Long Method / Large Class
• ⼀一個 main() 上萬⾏行
• 負擔過多責任
• Extract Class / Subclass / Interface
Long Parameter List
• Hard to understand
• Inconsistent
• set	
  (a,	
  b,	
  c,	
  x,	
  y,	
  z,	
  flag,	
  amount)	
  
• set	
  (a,	
  b,	
  c,	
  y,	
  x,	
  z,	
  flag,	
  amount)
Switch Statements
• 「好的物件導向程式應該少⽤用 switch」
• open-closed principle (OCP)
Indecent Exposure
• 家⾨門要記得關,沒必要的東⻄西不要隨便 public
Feature Envy
• 特性依戀
Comments
/*	
  	
  	
  
	
  *	
  	
  This	
  is	
  a	
  add	
  function,	
  returns	
  a	
  +	
  b	
  
	
  */	
  
function	
  kerker	
  (a,	
  b){	
  
	
  	
  return	
  a	
  +	
  b;	
  
}
Comments
/*	
  	
  	
  
	
  *	
  	
  Returns	
  a	
  +	
  b	
  
	
  */	
  
function	
  add	
  (a,	
  b){	
  
	
  	
  return	
  a	
  +	
  b;	
  
}
@use JSDoc
Shared understanding (共識)
• Simple design
• System metaphor
• Coding standard
• Collective code ownership
Shared understanding (共識)
• Simple design
• System metaphor
• Coding standard
• Collective code ownership
Shared understanding (共識)
• Simple design
• System metaphor
• Coding standard
• Collective code ownership
Shared understanding (共識)
• Simple design
• System metaphor
• Coding standard
• Collective code ownership
long_function_name	
  
vs	
  
longFunctionName
Shared understanding (共識)
• Simple design
• System metaphor
• Coding standard
• Collective code ownership
– SJ Chou, Senior Engineer at Foxconn
“有事沒事就把⼤大家寫的 code 合起來
跑看看有沒有錯”
持續 整合
version control
• 根據定義,可以⽤用以下 check list 判斷是否 version control
Version Control check list:
[ ] record changes over time
[ ] recall a specific version
version control
• 根據定義,可以⽤用以下 check list 判斷是否 version control
Version Control check list:
[v] record changes over time
[v] recall a specific version
“collective”
version control systems
Git ≠ Github
Git flow
A successful Git branching model
Vincent Driessen
2 main + 3 supporting branches
main branches
• develop	
  
• master
supporting branches
• feature	
  
• release	
  
• hotfix
Commit Messages
* fde679b	
  -­‐	
  very	
  hot	
  fix	
  <allen>	
  
* d0ad381	
  -­‐	
  Kerker.	
  <maxis>	
  
* f007579	
  -­‐	
  test	
  <jason>	
  
* 09b9813	
  -­‐	
  fix	
  bug.	
  <maxis>	
  
* 2430918	
  -­‐	
  fix	
  bugs	
  <allen>	
  
* fde679b	
  -­‐	
  abc123	
  <jason>	
  
* b6c7ee1	
  -­‐	
  hot	
  fix	
  <allen>
7 rules of a great commit message
• Separate subject from body with a blank line
• Limit the subject line to 50 characters
• Capitalize the subject line
• Do not end the subject line with a period
• Use the imperative mood in the subject line
• Wrap the body at 72 characters
• Use the body to explain what and why vs. how
* fde679b	
  -­‐	
  Fix	
  typo	
  in	
  the	
  Search	
  Box	
  <allen>	
  
* d0ad381	
  -­‐	
  Revamp	
  Search	
  Box	
  UI	
  <maxis>	
  
* f007579	
  -­‐	
  Add	
  new	
  Search	
  Box	
  UI	
  <jason>	
  
* 09b9813	
  -­‐	
  fix	
  bug.	
  <maxis>	
  
* 2430918	
  -­‐	
  fix	
  bugs	
  <allen>	
  
* fde679b	
  -­‐	
  abc123	
  <jason>	
  
* b6c7ee1	
  -­‐	
  hot	
  fix	
  <allen>
Programmer welfare (⼯工程師的利益)
• Sustainable pace
“40-Hour Work Week”
雅⻁虎經驗
• Training - Ninja Kata
• DevOps - Docker
• CI/CD - Jenkins
– Peter Drucker
“Do the right thing”
Thanks :P
Q / A
可以這樣找到我
• Maxis Kao
• maxis1718@gmail.com
• http://maxis1718.github.io

Weitere ähnliche Inhalte

Was ist angesagt?

Dueling duplications RMAN vs Delphix
Dueling duplications RMAN vs DelphixDueling duplications RMAN vs Delphix
Dueling duplications RMAN vs Delphix
Kyle Hailey
 
The Cortex-A15 Verification Story
The Cortex-A15 Verification StoryThe Cortex-A15 Verification Story
The Cortex-A15 Verification Story
DVClub
 
Delphix database virtualization v1.0
Delphix database virtualization v1.0Delphix database virtualization v1.0
Delphix database virtualization v1.0
Arik Lev
 
Validating Next Generation CPUs
Validating Next Generation CPUsValidating Next Generation CPUs
Validating Next Generation CPUs
DVClub
 

Was ist angesagt? (20)

Drop the Pressure on your Production Server
Drop the Pressure on your Production ServerDrop the Pressure on your Production Server
Drop the Pressure on your Production Server
 
Transforming IT Infrastructure
Transforming IT InfrastructureTransforming IT Infrastructure
Transforming IT Infrastructure
 
Dueling duplications RMAN vs Delphix
Dueling duplications RMAN vs DelphixDueling duplications RMAN vs Delphix
Dueling duplications RMAN vs Delphix
 
ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?
 
Fail over fail_back
Fail over fail_backFail over fail_back
Fail over fail_back
 
Sql server 2012 ha dr 24_hop_final
Sql server 2012 ha dr 24_hop_finalSql server 2012 ha dr 24_hop_final
Sql server 2012 ha dr 24_hop_final
 
#NetflixEverywhere Global Architecture
#NetflixEverywhere Global Architecture#NetflixEverywhere Global Architecture
#NetflixEverywhere Global Architecture
 
Zhang rtp q307
Zhang rtp q307Zhang rtp q307
Zhang rtp q307
 
The Cortex-A15 Verification Story
The Cortex-A15 Verification StoryThe Cortex-A15 Verification Story
The Cortex-A15 Verification Story
 
Elite Bug Squashing
Elite Bug SquashingElite Bug Squashing
Elite Bug Squashing
 
Zehr dv club_12052006
Zehr dv club_12052006Zehr dv club_12052006
Zehr dv club_12052006
 
Delphix database virtualization v1.0
Delphix database virtualization v1.0Delphix database virtualization v1.0
Delphix database virtualization v1.0
 
Infinispan from POC to Production
Infinispan from POC to ProductionInfinispan from POC to Production
Infinispan from POC to Production
 
DSL Construction rith Ruby
DSL Construction rith RubyDSL Construction rith Ruby
DSL Construction rith Ruby
 
Accelerating Devops via Data Virtualization | Delphix
Accelerating Devops via Data Virtualization | DelphixAccelerating Devops via Data Virtualization | Delphix
Accelerating Devops via Data Virtualization | Delphix
 
Validating Next Generation CPUs
Validating Next Generation CPUsValidating Next Generation CPUs
Validating Next Generation CPUs
 
Troubleshooting K1000
Troubleshooting K1000Troubleshooting K1000
Troubleshooting K1000
 
UKGSE DB2 pureScale
UKGSE DB2 pureScaleUKGSE DB2 pureScale
UKGSE DB2 pureScale
 
CPN208 Failures at Scale & How to Ride Through Them - AWS re: Invent 2012
CPN208 Failures at Scale & How to Ride Through Them - AWS re: Invent 2012CPN208 Failures at Scale & How to Ride Through Them - AWS re: Invent 2012
CPN208 Failures at Scale & How to Ride Through Them - AWS re: Invent 2012
 
5 Ways to Avoid Server and Application Downtime
5 Ways to Avoid Server and Application Downtime5 Ways to Avoid Server and Application Downtime
5 Ways to Avoid Server and Application Downtime
 

Ähnlich wie 優化開發環境 無料提升戰鬥力

Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
xlight
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012
Eonblast
 

Ähnlich wie 優化開發環境 無料提升戰鬥力 (20)

Building FoundationDB
Building FoundationDBBuilding FoundationDB
Building FoundationDB
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitter
 
Fixing_Twitter
Fixing_TwitterFixing_Twitter
Fixing_Twitter
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Voldemort Nosql
Voldemort NosqlVoldemort Nosql
Voldemort Nosql
 
Mixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting exampleMixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting example
 
Sista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performanceSista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performance
 
Into The Box 2020 Keynote Day 1
Into The Box 2020 Keynote Day 1Into The Box 2020 Keynote Day 1
Into The Box 2020 Keynote Day 1
 
VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012VoltDB and Erlang - Tech planet 2012
VoltDB and Erlang - Tech planet 2012
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudy
 
Ltc Meeting 20120507
Ltc Meeting 20120507Ltc Meeting 20120507
Ltc Meeting 20120507
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Endeca Performance Considerations
Endeca Performance ConsiderationsEndeca Performance Considerations
Endeca Performance Considerations
 
Art of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices AntipatternsArt of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices Antipatterns
 
Migrating big data
Migrating big dataMigrating big data
Migrating big data
 
Cassandra Summit 2014: Deploying Cassandra for Call of Duty
Cassandra Summit 2014: Deploying Cassandra for Call of DutyCassandra Summit 2014: Deploying Cassandra for Call of Duty
Cassandra Summit 2014: Deploying Cassandra for Call of Duty
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 

Mehr von Maxis Kao (6)

User first! 前端的最後一塊拼圖
User first! 前端的最後一塊拼圖User first! 前端的最後一塊拼圖
User first! 前端的最後一塊拼圖
 
2016 前端潮玩意兒
2016 前端潮玩意兒2016 前端潮玩意兒
2016 前端潮玩意兒
 
Bot 甘苦談,使用者至上
Bot 甘苦談,使用者至上Bot 甘苦談,使用者至上
Bot 甘苦談,使用者至上
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on Gitlab
 
Timelapse News
Timelapse NewsTimelapse News
Timelapse News
 
[Frontend 101] JavaScript OOP
[Frontend 101] JavaScript OOP[Frontend 101] JavaScript OOP
[Frontend 101] JavaScript OOP
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 

優化開發環境 無料提升戰鬥力