SlideShare a Scribd company logo
- Abstraction Context on Data Behaviour -
self-documented code.
- Abstraction Context on Data Behaviour -
self-documented code.
Code
def main = {
val sentence = “this is how abstraction work”
var i = 0
foreach( c : sentence) {
if ( c in {a, e, i, o, u}) i++
}
print(i)
}
Abstraction on Code
def main = {
val sentence = “this is how abstraction work”
var i = 0
foreach( c : sentence) {
if ( isVowel(c) ) i++
}
print(i)
}
def isVowel(c: Character) = c in {a,e,i,o,u}
more Abstraction on Code
def main = {
val sentence = “this is how abstraction work”
print(countVowel(sentence))
}
def isVowel(c: Character) = c in {a,e,i,o,u}
def countVowel(sentence: String) = {
var i = 0
foreach( c : sentence)
if ( c isVowel ) i++
}
Improve Readability on Code
def main = {
val sentence = “this is how abstraction work”
print countVowel sentence
}
def isVowel(c: Character) = c in {a,e,i,o,u}
def countVowel(sentence: String) = {
var i = 0
foreach( c : sentence)
if ( c isVowel ) i++
}
Abstraction bring us
to “layer out”
the complexity
Then…
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
Nice & Simple
there are more
Complexity…
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
}
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
.
def bigFunction = {
.
.
.
.
.
.
.
.
.
.
.
.
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
What the F_CK …
- Complexity in the Real World -
O-O
O-Object riented
O-OData Data
O-OData Data
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
O-OData Data
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
Controlling the Impact between Data & Functions
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
class DataX {
}
class DataY {
}
class DataZ {
}
def smallFunctionA (x) {
.
}
def smallFunctionB (x) {
.
}
def smallFunctionC (x) {
.
}
def smallFunctionD (y) {
.
}
def smallFunctionE (y) {
.
}
def smallFunctionF (y) {
.
}
def smallFunctionG (z) {
.
}
def smallFunctionH (z) {
.
}
def smallFunctionI (z) {
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
def smallFunctionA = {
.
.
}
def smallFunctionB = {
.
.
}
def smallFunctionC = {
.
.
}
def smallFunctionD = {
.
.
}
class DataX {
}
class DataY {
}
class DataZ {
}
def smallFunctionA (x) {
.
}
def smallFunctionB (x) {
.
}
def smallFunctionC (x) {
.
}
def smallFunctionD (y) {
.
}
def smallFunctionE (y) {
.
}
def smallFunctionF (y) {
.
}
def smallFunctionG (z) {
.
}
def smallFunctionH (z) {
.
}
def smallFunctionI (z) {
.
}
Nice & Simple
Object-Oriented bring
us more abstraction layer
there are still more
Complexity ???
- more Complexity in the Real World -
O-OData Data
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
Business
Requirement
O-OData Data
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
func.
Business
Requirement
Context Context
Context Context
Context Context
Context Context
class Bill {
}
def find (id) {
.
}
def query(id) {
.
}
def toJSON (): {
.
}
def toHTML () {
.
}
private def errorIfNotFound() {
.
}
private def getDBConnections() {
.
}
class Bill {
}
def find (id) {
.
}
def query(id) {
.
}
def toJSON (): {
.
}
def toHTML () {
.
}
private def errorIfNotFound() {
.
}
private def getDBConnections() {
.
}
class BillController {
}
def find (id) {
.
}
private def errorIfNotFound () {
.
}
Apply
MVC-Pattern
as Context
class BillModel {
}
def query (id) {
.
}
private def getDBConnection () {
.
}
class BillView {
}
def toJSON () {
.
}
def toHTML () {
.
}
Context
Deep
WidthLength
Context
MVC-Pattern
Deep
WidthLength
class BillModel {
}
def query (id) {
.
}
private def getDBConnection () {
.
}
class BillController {
}
def find (id) {
.
}
private def errorIfNotFound () {
.
}
class BillView {
}
def toJSON () {
.
}
def toHTML () {
.
}
View Controller Model
class BillModel {
}
def query (id) {
.
}
private def getDBConnection () {
.
}
class BillController {
}
def find (id) {
.
}
private def errorIfNotFound () {
.
}
class BillView {
}
def toJSON () {
.
}
def toHTML () {
.
}
View Controller Model
persist
transform
biz logic
exception
handling
present
MVC Enough?
View Controller Model
persist
transform
biz logic
exception
handling
present
View Controller UseCase Persist
persistbiz logicexception
handling
present
View
Model
transform
Model
transform
Entity
Model
transform
rearrange
Processing-Layer
Deep
Width
Context
Length
MVC-Pattern
BaseController, BaseModel, BaseView
View
Controlle
r
UseCase Persist
persistbiz logicexception
handling
present
View
Model
transform
Model
transform
Entity
Model
transform
- BaseView
- BaseController
- BaseUseCase
- BasePersist
Context
MVC-Pattern
BaseController, BaseModel, BaseView
Bill => BillAction & BillRetrieval
Deep
WidthLength
BillUseCase
find()
listOverdue()
listByDate()
listBySender()
listBy…()
create()
confirmPayment()
reject()
payByPromptPay()
payByOmi()
payBy2C()
BillRetrievalUseCase
find()
listOverdue()
listByDate()
listBySender()
listBy…()
BillActionUseCase
create()
confirmPayment()
reject()
payByPromptPay()
payByOmi()
payBy2C()
“It’s about bringing order to Complexity”
Jony Ive on Simplicity.
Class
functions
Code Structure
functions
Microservices
Level of
Abstraction Context
foreach
Data Behaviour
- There is about the “Dimension” -

More Related Content

What's hot

C++ TUTORIAL 10
C++ TUTORIAL 10C++ TUTORIAL 10
C++ TUTORIAL 10
Farhan Ab Rahman
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
 
Improving the java type system
Improving the java type systemImproving the java type system
Improving the java type system
João Loff
 
C++ TUTORIAL 9
C++ TUTORIAL 9C++ TUTORIAL 9
C++ TUTORIAL 9
Farhan Ab Rahman
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
Sander Kieft
 
08 functions
08 functions08 functions
08 functions
Hadley Wickham
 
Vcs16
Vcs16Vcs16
openFrameworks 007 - utils
openFrameworks 007 - utilsopenFrameworks 007 - utils
openFrameworks 007 - utils
roxlu
 
Python decorators (中文)
Python decorators (中文)Python decorators (中文)
Python decorators (中文)
Yiwei Chen
 
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
corehard_by
 
Advance features of C++
Advance features of C++Advance features of C++
Advance features of C++
vidyamittal
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
Anderson Dantas
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objects
Husain Dalal
 
python高级内存管理
python高级内存管理python高级内存管理
python高级内存管理
rfyiamcool
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
Rデバッグあれこれ
Takeshi Arabiki
 
Rのスコープとフレームと環境と
Rのスコープとフレームと環境とRのスコープとフレームと環境と
Rのスコープとフレームと環境と
Takeshi Arabiki
 
SDC - Einführung in Scala
SDC - Einführung in ScalaSDC - Einführung in Scala
SDC - Einführung in Scala
Christian Baranowski
 
Clojure functions midje
Clojure functions midjeClojure functions midje
Clojure functions midje
Jackson dos Santos Olveira
 
003 - JavaFX Tutorial - Layouts
003 - JavaFX Tutorial - Layouts003 - JavaFX Tutorial - Layouts
003 - JavaFX Tutorial - Layouts
Mohammad Hossein Rimaz
 
AP Derivatives
AP DerivativesAP Derivatives
AP Derivatives
tschmucker
 

What's hot (20)

C++ TUTORIAL 10
C++ TUTORIAL 10C++ TUTORIAL 10
C++ TUTORIAL 10
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
 
Improving the java type system
Improving the java type systemImproving the java type system
Improving the java type system
 
C++ TUTORIAL 9
C++ TUTORIAL 9C++ TUTORIAL 9
C++ TUTORIAL 9
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
 
08 functions
08 functions08 functions
08 functions
 
Vcs16
Vcs16Vcs16
Vcs16
 
openFrameworks 007 - utils
openFrameworks 007 - utilsopenFrameworks 007 - utils
openFrameworks 007 - utils
 
Python decorators (中文)
Python decorators (中文)Python decorators (中文)
Python decorators (中文)
 
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
 
Advance features of C++
Advance features of C++Advance features of C++
Advance features of C++
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objects
 
python高级内存管理
python高级内存管理python高级内存管理
python高级内存管理
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
Rデバッグあれこれ
 
Rのスコープとフレームと環境と
Rのスコープとフレームと環境とRのスコープとフレームと環境と
Rのスコープとフレームと環境と
 
SDC - Einführung in Scala
SDC - Einführung in ScalaSDC - Einführung in Scala
SDC - Einführung in Scala
 
Clojure functions midje
Clojure functions midjeClojure functions midje
Clojure functions midje
 
003 - JavaFX Tutorial - Layouts
003 - JavaFX Tutorial - Layouts003 - JavaFX Tutorial - Layouts
003 - JavaFX Tutorial - Layouts
 
AP Derivatives
AP DerivativesAP Derivatives
AP Derivatives
 

Similar to Self documentedcode

Coding in Style
Coding in StyleCoding in Style
Coding in Style
scalaconfjp
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
Databricks
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
Databricks
 
Python speleology
Python speleologyPython speleology
Python speleology
Andrés J. Díaz
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
Arturo Herrero
 
Introduction to Scala for JCConf Taiwan
Introduction to Scala for JCConf TaiwanIntroduction to Scala for JCConf Taiwan
Introduction to Scala for JCConf Taiwan
Jimin Hsieh
 
Monadologie
MonadologieMonadologie
Monadologie
league
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in Swift
Netguru
 
From Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risksFrom Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risks
SeniorDevOnly
 
JavaSE7 Launch Event: Java7xGroovy
JavaSE7 Launch Event: Java7xGroovyJavaSE7 Launch Event: Java7xGroovy
JavaSE7 Launch Event: Java7xGroovy
Yasuharu Nakano
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
Hiroshi Ono
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
Hiroshi Ono
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
Hiroshi Ono
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
Hiroshi Ono
 
5.1 anti derivatives
5.1 anti derivatives5.1 anti derivatives
5.1 anti derivatives
math265
 
Reactive programming with RxSwift
Reactive programming with RxSwiftReactive programming with RxSwift
Reactive programming with RxSwift
Scott Gardner
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchained
Eduard Tomàs
 
Apache Spark for Library Developers with William Benton and Erik Erlandson
 Apache Spark for Library Developers with William Benton and Erik Erlandson Apache Spark for Library Developers with William Benton and Erik Erlandson
Apache Spark for Library Developers with William Benton and Erik Erlandson
Databricks
 
Damn Fine CoffeeScript
Damn Fine CoffeeScriptDamn Fine CoffeeScript
Damn Fine CoffeeScript
niklal
 
2.6 more computations of derivatives
2.6 more computations of derivatives2.6 more computations of derivatives
2.6 more computations of derivatives
math265
 

Similar to Self documentedcode (20)

Coding in Style
Coding in StyleCoding in Style
Coding in Style
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
Python speleology
Python speleologyPython speleology
Python speleology
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
Introduction to Scala for JCConf Taiwan
Introduction to Scala for JCConf TaiwanIntroduction to Scala for JCConf Taiwan
Introduction to Scala for JCConf Taiwan
 
Monadologie
MonadologieMonadologie
Monadologie
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in Swift
 
From Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risksFrom Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risks
 
JavaSE7 Launch Event: Java7xGroovy
JavaSE7 Launch Event: Java7xGroovyJavaSE7 Launch Event: Java7xGroovy
JavaSE7 Launch Event: Java7xGroovy
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdfpragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
pragmaticrealworldscalajfokus2009-1233251076441384-2.pdf
 
5.1 anti derivatives
5.1 anti derivatives5.1 anti derivatives
5.1 anti derivatives
 
Reactive programming with RxSwift
Reactive programming with RxSwiftReactive programming with RxSwift
Reactive programming with RxSwift
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchained
 
Apache Spark for Library Developers with William Benton and Erik Erlandson
 Apache Spark for Library Developers with William Benton and Erik Erlandson Apache Spark for Library Developers with William Benton and Erik Erlandson
Apache Spark for Library Developers with William Benton and Erik Erlandson
 
Damn Fine CoffeeScript
Damn Fine CoffeeScriptDamn Fine CoffeeScript
Damn Fine CoffeeScript
 
2.6 more computations of derivatives
2.6 more computations of derivatives2.6 more computations of derivatives
2.6 more computations of derivatives
 

More from Passapong Thaithatgoon

Microservices
MicroservicesMicroservices
Microservices
Passapong Thaithatgoon
 
Software Architecture in Microservices
Software Architecture in MicroservicesSoftware Architecture in Microservices
Software Architecture in Microservices
Passapong Thaithatgoon
 
Enterprise Architecture
Enterprise ArchitectureEnterprise Architecture
Enterprise Architecture
Passapong Thaithatgoon
 
Digital Awareness
Digital AwarenessDigital Awareness
Digital Awareness
Passapong Thaithatgoon
 
OpenSource for Enterprise Business Presentation 010
OpenSource for Enterprise Business Presentation 010OpenSource for Enterprise Business Presentation 010
OpenSource for Enterprise Business Presentation 010
Passapong Thaithatgoon
 
vTigerCRM Demo CRMinTH
vTigerCRM Demo CRMinTHvTigerCRM Demo CRMinTH
vTigerCRM Demo CRMinTH
Passapong Thaithatgoon
 
Open Source CRM with vTigerCRM
Open Source CRM with vTigerCRMOpen Source CRM with vTigerCRM
Open Source CRM with vTigerCRM
Passapong Thaithatgoon
 
Jug4 Presentation
Jug4 PresentationJug4 Presentation
Jug4 Presentation
Passapong Thaithatgoon
 

More from Passapong Thaithatgoon (8)

Microservices
MicroservicesMicroservices
Microservices
 
Software Architecture in Microservices
Software Architecture in MicroservicesSoftware Architecture in Microservices
Software Architecture in Microservices
 
Enterprise Architecture
Enterprise ArchitectureEnterprise Architecture
Enterprise Architecture
 
Digital Awareness
Digital AwarenessDigital Awareness
Digital Awareness
 
OpenSource for Enterprise Business Presentation 010
OpenSource for Enterprise Business Presentation 010OpenSource for Enterprise Business Presentation 010
OpenSource for Enterprise Business Presentation 010
 
vTigerCRM Demo CRMinTH
vTigerCRM Demo CRMinTHvTigerCRM Demo CRMinTH
vTigerCRM Demo CRMinTH
 
Open Source CRM with vTigerCRM
Open Source CRM with vTigerCRMOpen Source CRM with vTigerCRM
Open Source CRM with vTigerCRM
 
Jug4 Presentation
Jug4 PresentationJug4 Presentation
Jug4 Presentation
 

Recently uploaded

Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 

Recently uploaded (20)

Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 

Self documentedcode