This document introduces the strategy design pattern. It discusses using inheritance to add a fly function to ducks, but this leads to issues when rubber ducks cannot fly. The strategy pattern encapsulates varying behaviors like flying into separate classes/interfaces. This avoids issues with inheritance by composing behaviors instead. The key principles are to identify varying aspects and separate them, program to interfaces/supertypes, and favor composition over inheritance.
This document introduces the strategy design pattern. It discusses using inheritance to add a fly function to ducks, but this leads to issues when rubber ducks cannot fly. The strategy pattern encapsulates varying behaviors like flying into separate classes/interfaces. This avoids issues with inheritance by composing behaviors instead. The key principles are to identify varying aspects and separate them, program to interfaces/supertypes, and favor composition over inheritance.
The document provides background information on the origins of design patterns. It discusses how Christopher Alexander introduced patterns for building architecture. In 1987, Kent Beck and Ward Cunningham began applying patterns to programming and presented their results at OOPSLA. Design patterns provide general reusable solutions to commonly occurring problems in software design. They describe relationships and interactions between classes or objects without specifying final classes or objects.
The document provides background information on the origins of design patterns. It discusses how Christopher Alexander introduced patterns for building architecture. In 1987, Kent Beck and Ward Cunningham began applying patterns to programming and presented their results at OOPSLA. Design patterns provide general reusable solutions to commonly occurring problems in software design. They describe relationships and interactions between classes or objects without specifying final classes or objects.
Apache Kylin Data Summit 2019: Kyligence PresentationTyler Wishnoff
The 2019 Apache Kylin Data Summit hosted this year in Shanghai provided Big Data analytics experts in IT and on the business side an early look at where this powerful OLAP technology is going. This presentation highlights the work Kyligence is doing to support the Apache Kylin project and deliver a commercial OLAP solution suitable for enterprises working with massive datasets. Founded by the initial creators of Apache Kylin, learn more about Kyligence here: https://kyligence.io/
The product release plan outlines the company's planned releases of hardware and software products over the next few quarters. It includes the scheduled release of new workstation hardware and software, edge hardware and software, AI edge devices, vision and IoT kits, tools, and new Alpha workstation models. The plan provides a quarterly roadmap for introducing new products from Q3 to Q2 the following year.
This document discusses using an M48X MCU and Jetson Nano for a home automation project. The M48X MCU controls lights and other devices via UART commands from a Jetson Nano or PC. Example commands are given to turn lights on/off, change colors, and start automated light shows or routines. Additional commands allow controlling videos, music and messages played on the Jetson Nano through the M48X MCU.
This document describes the design of an autonomous guided vehicle (AGV) system. It outlines the main components including the order system, dispatcher, universal clock, AGVs, broker, grid map database. It then describes the functions of various components like the naive dispatcher, path planner using A* algorithm, discrete time simulation with the universal clock, AGV main flow, grid map GUI, and traffic control strategies to handle conflicts between AGVs.
The document discusses microservices and provides definitions, examples, and considerations around this architectural style. It defines microservices as small, independent processes communicating via APIs to compose complex applications. It notes microservices allow for increased modularity, independence, and scalability compared to traditional monolithic architectures. The document also shares perspectives from experts on microservices and examples of companies using this approach.
20160217 - Overview of Vortex Intelligent Data Sharing PlatformJamie (Taka) Wang
Vortex Intelligent is an intelligent data sharing platform that provides several product suites including Vortex OpenSplice, Vortex Starter Kit, and Vortex Device. Vortex OpenSplice is a DDS library that implements DDS 1.2 and DDSI 2.1 standards. It has both free and paid versions. Vortex Starter Kit and Vortex Device target different developer types. Additional products like Vortex Insight, Vortex Cafe, Vortex Web provide visualization, Java DDS library, and JavaScript DDS library capabilities. Vortex also includes options for cloud, fog, and gateway integration.
This document discusses strategies for IoT development. It proposes three levels of architecture - short, mid, and long term - to develop an IoT kernel and services. It also examines Advantech's IoT products and architectures, including their WebAccess SCADA system and WISE-Cloud platform. Challenges in IoT solutions are identified around connectivity, costs, reliability and time to market. Two proof-of-concept projects are proposed using edge cloud services and Modbus TCP.
This document discusses microservices architecture and how Docker has changed application development. It covers:
- The rise of microservices architecture which breaks applications into independently deployable small services.
- How Docker brings development and operations teams closer together through standardized deployment of services.
- How Docker provides consistency for continuous integration testing by allowing identical environments.
- How Docker enables collaboration through sharing of pre-built application containers.
3. 某 A, B 兩個客戶,用了我們 Motion 的 Library 去操作 Ethercat 類的運動控制卡A
APP1
APP2
ethercat
A
ethercat
A
run ./app1
run ./app2
func app1()
card = new ethercatA()
end
func app2()
card = new ethercatA()
end
4. 需求改變,客人想比較Ethercat類的兩張運動控制卡
APP1
APP2
ethercat
A
run ./app1 a
run ./app2 b
func app1(arg)
if arg == “a”
card = new ethercatA()
else if arg == “b”
card = new ethercatB()
end
func app2(arg)
if arg == “a”
card = new ethercatA()
else if arg == “b”
card = new ethercatB()
end
ethercat
B
7. 透過簡單工廠物件專門生產(實體化)
APP1
APP2
run ./app1 a
run ./app2 b
func app1(arg)
card = factory(arg)
end
func app2(arg)
card = factory(arg)
end
func factory(arg)
if arg == “a”
card = new ethercatA()
else if arg == “b”
card = new ethercatB()
return card
end
ethercat
A
ethercat
B