Skip to main content

Notes on Patterns(1)

1.Patterns are of contexts, problems and solutions, their relationship is as below:

Pattern:(1)Context : design situation giving rise to a design problem(2)Problem : set of forces arising in the context(3)Solutions : Configure to balance the forces. It's of [1] Sturctures with components and relationships; [2] Run-time behaviour

The phiolosophy of Patterns is to find some stable point among the balances of software development, I think.

2.Layer
Architectural Patterns one : Layer.The Layer Pattern helps to structure applications that can be decomposed into groups of subtasks in which each group of subtasks is at a particular level of abstractioin.

It's architecture of software, such as OSI, TCP/IP layer structure.

To design Layer Pattern, we should consider about something as below:1) The interfaces between layers;2) The abstraction of each isolated layers

3.Broker
The Broker pattern is of 6 parts:Server, Client, Broker, Server-Side Proxy, Client-Side Proxy, and Bridge.

The main idea of Broker is to separate the different roles in a communication system. Different sides of the communication system may have data and message in different formatics or different structures, the communication among them, it is very difficult and complex for every peer to store all the formatics and structures, and it is also very difficult to unify the formatics and structures, so Broker induced.

Broker remember the all the formatics and structures, send and receive different types of messages from or to different peers. Broker make client and server do their own jobs despite the communication processes.

4.Model-View-Controller
ModelThe Model-View-Controller Model(MVC) devided a interactive application into 3 components. The core functionailties and data composes Model, the display information composes View, the user inputs compose Controller.

The separation of model from view and controller allows mutiple views of the same model.

The change-propagation mechanism is the only link between model, view and controller. Model provides functions for the core functionalities, and also provides functions for View and Controller to use and mechanisms to notify them.

5.Presentation-Abstraction-Control
The PAC (Presentation-Abstraction-Control) Architecture Pattern defines a structure for interactive software systems in the form of a hierachy of cooperating agents. Each agents composes of presentation, abstraction and control.

Different from MVC, PAC pattern is to separate the software into different Layers, it's like Layers pattern, but for Interactive Structure.

Comments

Popular posts from this blog

A simple implementation of DTW(Dynamic Time Warping) in C#/python

DTW(Dynamic Time Warping) is a very useful tools for time series analysis. This is a very simple (but not very efficient) c# implementation of DTW, the source code is available at  https://gist.github.com/1966342  . Use the program as below: double[] x = {9,3,1,5,1,2,0,1,0,2,2,8,1,7,0,6,4,4,5}; double[] y = {1,0,5,5,0,1,0,1,0,3,3,2,8,1,0,6,4,4,5}; SimpleDTW dtw = new SimpleDTW(x,y); dtw.calculateDTW(); The python implementation is available at  https://gist.github.com/3265694  . from python-dtw import Dtw import math dtw = Dtw([1, 2, 3, 4, 6], [1, 2, 3, 5],           distance_func=lambda x, y: math.fabs(x - y)) print dtw.calculate() #calculate the distance print dtw.get_path() #calculate the mapping path

Install mysql-python with mariadb

mysql-python requires libmysqlclient-dev in ubuntu, but the installation of mariadb will have the lib with unmet dependenccies, so the error of "mysql_config not found" may occurred if you install mysql-python via pip. The case is that mariadb has a compatible package, if you have the ppa setup as in  http://downloads.mariadb.org/ . Just "sudo apt-get install libmariadbclient-dev".

The default CREATE TABLE options for Aria Engine in mariadb

The official document of mariadb does not mention the default CREATE TABLE options for tables using Aria Engine.  The default options are list as below: TRANSACTIONAL,  the default value is TRANSACTIONAL=0, i.e., non-transactional. ROW_FORMAT, the default value is ROW_FORMAT=PAGE, which may suits both transactional and non-transactional tables. PAGE_CHECKSUM,  the default value will follow aria_page_checksum system variable, which has default value ON. For the TRANSACTIONAL option, you may consider create a table as below(and ALTER the TRANSACTIONAL=1): CREATE TABLE `test_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=Aria; If you change the ROW_FORMAT to DYNAMIC or FIXED, everything just goes fine. But if you have ALTER the table with TRANSACTION=1 and change the ROW_FORMAT to DYNAMIC or FIXED, you may got a warning: SHOW WARNINGS; +-------+------+----------------------------------------------------------+ | Level | Code | Message | +-------+--