The presentation focuses on the problem of wiring the different layers of a Spring MVC Web application. More precisely, the presentation explains how to wire the presentation layer (made of Spring MVC controllers) with the service and persistence objects. To this end, the slides first explain how to create the so called back-end (a.k.a. root) container, which will host the persistence and the service objects. Second, the @Repository and @Service annotations are introduced, which permit the framework to auto-discover the application beans. Finally, it is discussed how to wire such beans, through the usage of either the Spring-specific @Autowired annotation or the JEE @Inject annotation.
An introduction to the basics of the Spring MVC Web framework. The concepts of front controller, controller (handler), model and view are introduced. The whole processing pipeline is discussed, with an in-depth description of the HandlerMapping and ViewResolver strategy interfaces. The alternative representations of the Model (Map, Model and ModelMap) are presented.
How to process request parameters with the Spring MVC framework. Namely, the presentation tackles the three primary concerns when dealing with request parameters: data binding, data buffering and data validation. To this end, the Bean Validation API (JSR-303) is discussed, and the concept of MessageSource for localized error messages is introduced. Moreover, The Post/Redirect/Get (PRG) pattern is presented along with a possible implementation strategy.
Recently as per the initiative of BTRC all telecom operator shifted to the Mobile Number Portability (MNP) platform. In this scenario, any subscriber can change operator without changing his/her current number including the prefix. In order to do that, there has been established a central MNP database. All operators require to up to date with this database and perform query for each of their outbound call. MNP database will give the information of current recipient and donor operator routing code. Operator requires to query the current recipient routing code before sending call to the ICX. In this paper, authors target is to give suggestion how to keep this local MNP database up to date and synchronize with the central database. Further, how this local database can be used for dipping to generate outbound calls to current recipient operator using opensource SIP Server and Session Border Controller (SBC). To perform that, authors shows how to use asterisk as dipping server using AGI scripting and it will be used as Back to Back User Agent (B2BUA). Also shows how kamailio an open source SIP Express Router (SER) can be used to perform MNP dipping to MySQL database. Finally, after the implementation of MNP service although calling service is working fine but most ported numbers did not receive the SMS specially OTP. Therefore, on these context author's shows how to create secure post API to perform the dipping to local MNP database from SMS gateway to connect to the original routing number before sending the SMS to client. Here, API will return the current recipient, donor code and routing number to send SMS as JSON data format against a normal cell phone number.
CoreOS in anger : firing up wordpress across a 3 machine CoreOS cluster Shaun Domingo
In this talk at the Sydney CoreOS meetup, I took the audience through:
a) Installation of CoreOS using VirtualBox and Vagrant
b) Items to consider when containerising your platform
c) Deploying wordpress across a CoreOS cluster.
-Configure DHCP (Create LAN Server and LAN Client) on Windows Server 2008R2
-Configure Relay on SuSE Linux Enterprise Server 11
-Allow Client Use DHCP IP for each LAN
An introduction to the basics of the Spring MVC Web framework. The concepts of front controller, controller (handler), model and view are introduced. The whole processing pipeline is discussed, with an in-depth description of the HandlerMapping and ViewResolver strategy interfaces. The alternative representations of the Model (Map, Model and ModelMap) are presented.
How to process request parameters with the Spring MVC framework. Namely, the presentation tackles the three primary concerns when dealing with request parameters: data binding, data buffering and data validation. To this end, the Bean Validation API (JSR-303) is discussed, and the concept of MessageSource for localized error messages is introduced. Moreover, The Post/Redirect/Get (PRG) pattern is presented along with a possible implementation strategy.
Recently as per the initiative of BTRC all telecom operator shifted to the Mobile Number Portability (MNP) platform. In this scenario, any subscriber can change operator without changing his/her current number including the prefix. In order to do that, there has been established a central MNP database. All operators require to up to date with this database and perform query for each of their outbound call. MNP database will give the information of current recipient and donor operator routing code. Operator requires to query the current recipient routing code before sending call to the ICX. In this paper, authors target is to give suggestion how to keep this local MNP database up to date and synchronize with the central database. Further, how this local database can be used for dipping to generate outbound calls to current recipient operator using opensource SIP Server and Session Border Controller (SBC). To perform that, authors shows how to use asterisk as dipping server using AGI scripting and it will be used as Back to Back User Agent (B2BUA). Also shows how kamailio an open source SIP Express Router (SER) can be used to perform MNP dipping to MySQL database. Finally, after the implementation of MNP service although calling service is working fine but most ported numbers did not receive the SMS specially OTP. Therefore, on these context author's shows how to create secure post API to perform the dipping to local MNP database from SMS gateway to connect to the original routing number before sending the SMS to client. Here, API will return the current recipient, donor code and routing number to send SMS as JSON data format against a normal cell phone number.
CoreOS in anger : firing up wordpress across a 3 machine CoreOS cluster Shaun Domingo
In this talk at the Sydney CoreOS meetup, I took the audience through:
a) Installation of CoreOS using VirtualBox and Vagrant
b) Items to consider when containerising your platform
c) Deploying wordpress across a CoreOS cluster.
-Configure DHCP (Create LAN Server and LAN Client) on Windows Server 2008R2
-Configure Relay on SuSE Linux Enterprise Server 11
-Allow Client Use DHCP IP for each LAN
Configure Webserver & SSL secure & redirect in SuSE Linux EnterpriseTola LENG
In this chapter you will be able:
-How to install webserver in suse linux server
-How to configure webserver
-How to hosting website and web application
-How to configure secure connection (SSL, Redirect)
1. Setup router
//to create a name for network card
//to assign ip address to network card
//to create NAT rule
//to assign gateway
//to assign dns
//to create dhcp
2.Create login page(Hotspot)
How to link from Mikrotik to Radius server
Tola.leng mail server (sq_mail & rcmail)_q5_Tola LENG
1. Design a new network infrastructure. 3
2. Install & Configure Domain Name System: 3
a. Install DNS 3
Test mail in Webserver machine 7
3. Postfix Service: 9
a. Install Postfix 10
b. Send email test (postfix) 10
4. Configure Postfix: 12
a. Enable some option for mail server 13
b. Test Send/Receive mail 14
5. Configure Dovecot: 15
a. Download Dovecot package *.rpm 15
b. Extract *.rpm package 15
c. Configure Dovecot file 16
d. Use Mail client 17
_other User 19
6. Configure Web mail: 22
• To Configure webmail in webserver machine NOT use in mail server machine 22
a. Squirrelmail 24
Configure in Server Setting 28
Configure Vhost 34
Test Result 36
b. Roundcube 38
Create and Configure Vhost 41
Let user access 43
7. Set option change password: 46
a. Squirrelmail 47
b. Roundcube 51
8. SMTPS and POP3S to secure encryption message` 51
a. Create certificate 51
b. Configure 52
9. Configure sasl sender and receiver/smpts authentication. 63
a. Configure SMTP Authentication /SASL Sender 63
10. Create address list/group (aliases address) 67
11. User SSL to encryption connection on browser 70
12. User authentication from AD or OpenLDAP 79
Configure LDAP Server on Mail Server 80
Configure LDAP Client on mail Server 82
Restart services 87
Create user in ldap 88
Let Webserver Join Domain with Mail server LDAP 92
Enable LDAP on Squirrelmail 99
Let’s User test Authentication 104
Let ‘ user change password 107
DNS windows server(2008R2) & linux(SLES 11)Tola LENG
In this practice you will be able:
-Configure Primary DNS and Secondary DNS
-Configure DNS zone transter
-DNS Delegation
-DNS Security zone transfer
-Configure also Linux(Sles 11) and Windows Server 2008R2
Basic Security
@ Updates
-Update manager
-Enable automatic security updates(Update Setting)
=> Super windows => type the key word (System Setting) =>
@ Firewall
-In Ubuntu all ports are block by default
-Default firewall-ufw (turned off by default)
+sudo ufw status
+sudo ufw enable/disable
-Firestarter for graphical interface (recommanded)
+sudo apt-get install firestarter
+Preferences
@ User Accounts
-User & Groups
+Disable user guest
-Do not use root user (Disable by default)
+sudo passwd
+sudo passwd -l root (disable/changed expiry password)
-Use sudo instead of root (/etc/sudoers)
+sudo visudo OR sudo gedit /etc/sudoers(To set the privilege user authorized)
+sudo adduser tolaleng sudo
-Deleting Users
+sudo deluser canamall
-Removing world readable permission to home directory
+sudo chmod 0750 /home/username
-Locking/Unlocking user
+sudo passwd -l username (enable user expiry)
+sudo passwd -u username (disable user expiry)
-passwords
+sudo chage canamall (Set the password expiration)
+sudo chage-l canamall (show the password expiration)
@ Antivirus
-Clam TK (Under Accessories), other anti-virus
@ Unistall Applications
-Ubuntu Software Center-> Installed software section-> Select application and click remove
@ Processes
-To see processes
+ps aux or top
+system monitor(cacti, nagios,)
-
@ Logs
-Some of logs
+ /var/log/messages : general log messages
+ /var/log/boot : system boot log
+ /var/log/debug/ : debugging log messages
+ /var/log/auth.log : user login and authentication logs
+ /var/log/daemon.log : running services such as squid,ntpd and other log message to this file
+ /var/log/kern.log : kernel log file
-Viewing logs
+ tail, more, cat, less, grep
+ GNOME system log viewer
@Firewall
ufw
=> Security Host
* Create Standard User and enable user passwd (complexity password, strong passwd, passwd expired, invalid day of passwd, Lock and Unlock user, disable user Guest, )
* Secure remote network and host
-Telnet(Secure with the host and address connection)
-SSH (Secure with the authentication encryption key)
=> Security Backup (Data Hosting)
*Make a Full Backup of Your Machine
-Aptik (backup application)
-rsync (Remote synce)
-Gsync (Remote)
-Amanda
-Rsnapshot
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!Leonid Yuriev
1Hippeus – инфраструктура обмена сообщениями, ориентированная на предельно эффективное zero-copy & lockfree-взаимодействие через разделяемую память, RDMA, MPI, коммуникации с GPU, сетевыми адаптерами, SDN & NFV, гипервизоры. Это инфраструктурный проект, который станет Open Source уже в первом релизе
Homework Assignment 3: Chapter 3
St. Clair & Visick
, Putting your skills into practice, problem 5
Tuesday, October 28
Homework Assignment 3 will be due Tuesday, November 4.
What changes are needed to construct a semi-global alignment like in the third homework assignment? The global alignment works pretty well on sequences that are nearly the same length. Let's try another example where the sequence lengths are more disparate.
$ ruby global.rb -d cgctatag cta
Dynamic programming table:
|
|
c
|
g
|
c
|
t
|
a
|
t
|
a
|
g
|
----+------+------+------+------+------+------+------+------+------+
|
|
|
|
|
|
|
|
|
|
|
0 |<
-1 |<
-2 |<
-3 |<
-4 |<
-5 |<
-6 |<
-7 |<
-8 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
|
|\
|
|
|
|
|
|
c
|
-1 |
1 |<
0 |<
-1 |<
-2 |<
-3 |<
-4 |<
-5 |<
-6 |
----+------+------+------+------+------+------+------+------+------+
|
^ |
^ |\
|\
|\
|
|\
|
|
|
t
|
-2 |
0 |
1 |<
0 |
0 |<
-1 |<
-2 |<
-3 |<
-4 |
----+------+------+------+------+------+------+------+------+------+
|
^ |
^ |\
^ |\
|\
|\
|
|\
|
|
a
|
-3 |
-1 |
0 |
1 |<
0 |
1 |<
0 |<
-1 |<
-2 |
----+------+------+------+------+------+------+------+------+------+
Alignment 1
cgctatag
__c__ta_
Alignment 2
cgctatag
c____ta_
Alignment 3
cgctatag
__ct__a_
Alignment 4
cgctatag
c__t__a_
Alignment 5
cgctatag
__cta___
Alignment 6
cgctatag
c__ta___
The 5th alignment really looks better here even though they all 6 scored the same -2. The problem is that terminal gaps are scored the same as internal gaps. If we are trying to see if a short sequence lines up best with a similar sized piece that is somewhere inside the longer sequence, internal gaps need to have a larger penalty than terminal gaps. If the terminal gap penalty was reduced to
0
while the other scoring stayed the same, that should get the desired result where the 5th alignment is clearly the best with a score of
3
. Simply modifying how the global alignment program fills in the outside rows and columns of the dynamic programming table should be all that is required to do a semi-global alignment.
$ ruby semi-global.rb -d cgctatag cta
Dynamic programming table:
|
|
C
|
G
|
C
|
T
|
A
|
T
|
A
|
G
|
----+------+------+------+------+------+------+------+------+------+
|
|
|
|
|
|
|
|
|
|
|
0 |<
0 |<
0 |<
0 |<
0 |<
0 |<
0 |<
0 |<
0 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
|\
|\
|\
|\
|\
|\
|\
^ |
C
|
0 |
1 |<
0 |
1 |<
0 |
0 |
0 |
0 |
0 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
^ |\
|\
^ |\
|
|\
|\
|\
^ |
T
|
0 |
0 |
1 |<
0 |
2 |<
1 |
1 |<
0 |
0 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
|\
^ |\
|
^ |\
|
|
|
|
A
|
0 |<
0 |<
0 |
1 |<
1 |
3 |<
3 |<
3 |<
3 |
----+------+------+------+------+------+---.
Modern query optimisation features in MySQL 8.Mydbops
MySQL 8 (a huge leap forward), indexing capabilities, execution plan enhancements, optimizer improvements, and many other current query tweak features are covered in the slides.
Configure Webserver & SSL secure & redirect in SuSE Linux EnterpriseTola LENG
In this chapter you will be able:
-How to install webserver in suse linux server
-How to configure webserver
-How to hosting website and web application
-How to configure secure connection (SSL, Redirect)
1. Setup router
//to create a name for network card
//to assign ip address to network card
//to create NAT rule
//to assign gateway
//to assign dns
//to create dhcp
2.Create login page(Hotspot)
How to link from Mikrotik to Radius server
Tola.leng mail server (sq_mail & rcmail)_q5_Tola LENG
1. Design a new network infrastructure. 3
2. Install & Configure Domain Name System: 3
a. Install DNS 3
Test mail in Webserver machine 7
3. Postfix Service: 9
a. Install Postfix 10
b. Send email test (postfix) 10
4. Configure Postfix: 12
a. Enable some option for mail server 13
b. Test Send/Receive mail 14
5. Configure Dovecot: 15
a. Download Dovecot package *.rpm 15
b. Extract *.rpm package 15
c. Configure Dovecot file 16
d. Use Mail client 17
_other User 19
6. Configure Web mail: 22
• To Configure webmail in webserver machine NOT use in mail server machine 22
a. Squirrelmail 24
Configure in Server Setting 28
Configure Vhost 34
Test Result 36
b. Roundcube 38
Create and Configure Vhost 41
Let user access 43
7. Set option change password: 46
a. Squirrelmail 47
b. Roundcube 51
8. SMTPS and POP3S to secure encryption message` 51
a. Create certificate 51
b. Configure 52
9. Configure sasl sender and receiver/smpts authentication. 63
a. Configure SMTP Authentication /SASL Sender 63
10. Create address list/group (aliases address) 67
11. User SSL to encryption connection on browser 70
12. User authentication from AD or OpenLDAP 79
Configure LDAP Server on Mail Server 80
Configure LDAP Client on mail Server 82
Restart services 87
Create user in ldap 88
Let Webserver Join Domain with Mail server LDAP 92
Enable LDAP on Squirrelmail 99
Let’s User test Authentication 104
Let ‘ user change password 107
DNS windows server(2008R2) & linux(SLES 11)Tola LENG
In this practice you will be able:
-Configure Primary DNS and Secondary DNS
-Configure DNS zone transter
-DNS Delegation
-DNS Security zone transfer
-Configure also Linux(Sles 11) and Windows Server 2008R2
Basic Security
@ Updates
-Update manager
-Enable automatic security updates(Update Setting)
=> Super windows => type the key word (System Setting) =>
@ Firewall
-In Ubuntu all ports are block by default
-Default firewall-ufw (turned off by default)
+sudo ufw status
+sudo ufw enable/disable
-Firestarter for graphical interface (recommanded)
+sudo apt-get install firestarter
+Preferences
@ User Accounts
-User & Groups
+Disable user guest
-Do not use root user (Disable by default)
+sudo passwd
+sudo passwd -l root (disable/changed expiry password)
-Use sudo instead of root (/etc/sudoers)
+sudo visudo OR sudo gedit /etc/sudoers(To set the privilege user authorized)
+sudo adduser tolaleng sudo
-Deleting Users
+sudo deluser canamall
-Removing world readable permission to home directory
+sudo chmod 0750 /home/username
-Locking/Unlocking user
+sudo passwd -l username (enable user expiry)
+sudo passwd -u username (disable user expiry)
-passwords
+sudo chage canamall (Set the password expiration)
+sudo chage-l canamall (show the password expiration)
@ Antivirus
-Clam TK (Under Accessories), other anti-virus
@ Unistall Applications
-Ubuntu Software Center-> Installed software section-> Select application and click remove
@ Processes
-To see processes
+ps aux or top
+system monitor(cacti, nagios,)
-
@ Logs
-Some of logs
+ /var/log/messages : general log messages
+ /var/log/boot : system boot log
+ /var/log/debug/ : debugging log messages
+ /var/log/auth.log : user login and authentication logs
+ /var/log/daemon.log : running services such as squid,ntpd and other log message to this file
+ /var/log/kern.log : kernel log file
-Viewing logs
+ tail, more, cat, less, grep
+ GNOME system log viewer
@Firewall
ufw
=> Security Host
* Create Standard User and enable user passwd (complexity password, strong passwd, passwd expired, invalid day of passwd, Lock and Unlock user, disable user Guest, )
* Secure remote network and host
-Telnet(Secure with the host and address connection)
-SSH (Secure with the authentication encryption key)
=> Security Backup (Data Hosting)
*Make a Full Backup of Your Machine
-Aptik (backup application)
-rsync (Remote synce)
-Gsync (Remote)
-Amanda
-Rsnapshot
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!Leonid Yuriev
1Hippeus – инфраструктура обмена сообщениями, ориентированная на предельно эффективное zero-copy & lockfree-взаимодействие через разделяемую память, RDMA, MPI, коммуникации с GPU, сетевыми адаптерами, SDN & NFV, гипервизоры. Это инфраструктурный проект, который станет Open Source уже в первом релизе
Homework Assignment 3: Chapter 3
St. Clair & Visick
, Putting your skills into practice, problem 5
Tuesday, October 28
Homework Assignment 3 will be due Tuesday, November 4.
What changes are needed to construct a semi-global alignment like in the third homework assignment? The global alignment works pretty well on sequences that are nearly the same length. Let's try another example where the sequence lengths are more disparate.
$ ruby global.rb -d cgctatag cta
Dynamic programming table:
|
|
c
|
g
|
c
|
t
|
a
|
t
|
a
|
g
|
----+------+------+------+------+------+------+------+------+------+
|
|
|
|
|
|
|
|
|
|
|
0 |<
-1 |<
-2 |<
-3 |<
-4 |<
-5 |<
-6 |<
-7 |<
-8 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
|
|\
|
|
|
|
|
|
c
|
-1 |
1 |<
0 |<
-1 |<
-2 |<
-3 |<
-4 |<
-5 |<
-6 |
----+------+------+------+------+------+------+------+------+------+
|
^ |
^ |\
|\
|\
|
|\
|
|
|
t
|
-2 |
0 |
1 |<
0 |
0 |<
-1 |<
-2 |<
-3 |<
-4 |
----+------+------+------+------+------+------+------+------+------+
|
^ |
^ |\
^ |\
|\
|\
|
|\
|
|
a
|
-3 |
-1 |
0 |
1 |<
0 |
1 |<
0 |<
-1 |<
-2 |
----+------+------+------+------+------+------+------+------+------+
Alignment 1
cgctatag
__c__ta_
Alignment 2
cgctatag
c____ta_
Alignment 3
cgctatag
__ct__a_
Alignment 4
cgctatag
c__t__a_
Alignment 5
cgctatag
__cta___
Alignment 6
cgctatag
c__ta___
The 5th alignment really looks better here even though they all 6 scored the same -2. The problem is that terminal gaps are scored the same as internal gaps. If we are trying to see if a short sequence lines up best with a similar sized piece that is somewhere inside the longer sequence, internal gaps need to have a larger penalty than terminal gaps. If the terminal gap penalty was reduced to
0
while the other scoring stayed the same, that should get the desired result where the 5th alignment is clearly the best with a score of
3
. Simply modifying how the global alignment program fills in the outside rows and columns of the dynamic programming table should be all that is required to do a semi-global alignment.
$ ruby semi-global.rb -d cgctatag cta
Dynamic programming table:
|
|
C
|
G
|
C
|
T
|
A
|
T
|
A
|
G
|
----+------+------+------+------+------+------+------+------+------+
|
|
|
|
|
|
|
|
|
|
|
0 |<
0 |<
0 |<
0 |<
0 |<
0 |<
0 |<
0 |<
0 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
|\
|\
|\
|\
|\
|\
|\
^ |
C
|
0 |
1 |<
0 |
1 |<
0 |
0 |
0 |
0 |
0 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
^ |\
|\
^ |\
|
|\
|\
|\
^ |
T
|
0 |
0 |
1 |<
0 |
2 |<
1 |
1 |<
0 |
0 |
----+------+------+------+------+------+------+------+------+------+
|
^ |\
|\
^ |\
|
^ |\
|
|
|
|
A
|
0 |<
0 |<
0 |
1 |<
1 |
3 |<
3 |<
3 |<
3 |
----+------+------+------+------+------+---.
Modern query optimisation features in MySQL 8.Mydbops
MySQL 8 (a huge leap forward), indexing capabilities, execution plan enhancements, optimizer improvements, and many other current query tweak features are covered in the slides.
This short talk will be about an incident that kept DBAs working on a weekend. Two bugs, one in our application code and one in the database, joined force and almost brought down Booking.com. And this occurred at one of the worst possible times. Curious about what happened: come to this talk to learn more.
Similar to Spring MVC - Wiring the different layers (20)
This set of slides introduces the reader to a subset of the C++ Standard Library called the Standard Template Library (STL). The STL provides a collection of parameterized containers and algorithms, and it is the most successful example of an approach to programming called generic programming. In this presentation, we aim at studying the ideals and concepts of the STL by re-implementing small parts of the library. Specifically, we first show how we can discover requirements on types in order to devise generic algorithms. Then, we focus on how to make algorithms independent of containers through the pivotal abstraction of iterators. To this end, we replicate the standard algorithm for finding the minimum in a sequence (min_element), which we subsequently match with a custom forward iterator over intrusive linked lists of integers. Finally, we see how function objects can be used to customize containers and algorithms alike. This allows us to deepen our understanding of ordering relations, and, in particular, to introduce the concept of strict weak orderings.
This set of slides introduces the reader to the concept of regular types, i.e., user-defined types whose semantics closely resembles that of built-in types. The notion of regular types proved crucial for the development of the C++ Standard Template Library, and it is currently employed in next-gen C++ libraries such as Eric Niebler's range-v3. The presentation serves as a gentle introduction to the topic, and discusses which requirements must be satisfied for a type to be regular. In particular, the concept of equality-preserving copy and assignment is presented, as well as how to define ordering relations that satisfy the requirements of strictness, transitivity and comparability (i.e., that adhere to the trichotomy law).
This set of slides introduces the reader to the concept of resource wrappers, i.e., classes that are responsible for the correct handling of resources of some kind (e.g., memory). In particular, the presentation discusses the design and implementation of a simplified version of std::vector for the specific case of integer elements. In this regard, we first discuss the fundamental role of destructors as a deterministic, general-purpose undo mechanism. Second, we notice that providing an explicit destructor entails the need of a consequent explicit implementation for the copy constructor and copy assignment operator. We conclude with the formulation of the so-called "rule of three".
This set of slides introduces the reader to the basics of memory management in C++ (with elements of C++11 and C++14). Specifically, after presenting the essential idea of memory segmentation, the presentation contrasts automatic and dynamic objects. To this extent the critical issue of memory leaks is introduced. It follows a discussion on the more advanced topics, such as owning and non-owning (i.e., observer) pointers, as well as dynamic arrays and structures.
This set of slides introduces the reader to the concept of operator overloading for user-defined types in C++ (with elements of C++11 and C++14). The exemplary case of the complex class is introduced. It follows a discussion on how to implement mixed-mode arithmetic, which requires mixing member and non-member operator functions. Moreover, the technical tool of friend functions and access functions is discussed.
This set of slides introduces the reader to the concept of multidimensional arrays in C++ (with elements of C++11 and C++14). The true nature of multidimensional arrays is discussed by means of an intermediate type alias. The pheonomenon of array-to-pointer decay and pointer arithmetic is then generalized to arrays of arrays. The presentation proceeds with a discussion on how to pass multidimensional arrays to functions.
This set of slides introduces the reader to the concept of arrays in C++ (with elements of C++11 and C++14). After presenting the array data type, the concept of array-to-pointer decay is introduced. The presentation proceeds with a discussion on how to pass arrays to functions. To this extent, the reader is guided to the use of bounded ranges as the first step towards the use of the Standard Template Library (STL).
An introduction to pointers and references in C++ (with elements of C++11 and C++14). The presentation introduces the readers to the concepts of pointers and references through the pragmatic need of writing a swap function between integers. Generic programming notions (e.g., type constructors) are adopted when useful for the explanation.
This set of slides introduces the basic concepts of Java development. First, the difference between Java as the programming language and Java as a platform is stated. Then, the different Java platforms are presented, with a particular interest in Java Standard Edition and Java Enterprise Edition. With respect to the latter, the roles and differences between the many JEE containers are discussed.
This set of slides deals with the problem of building robust Web applications by isolating different areas of concern into different layers. The typical four-layer architecture is presented (consisting of the presentation, service and persistence layer, as well as of the domain model) along with an in-depth discussion on the role and responsibilities of each single layer.
Introduzione al concetto di oggetto nel modello della memoria del C++ e ai suoi possibile tempi di vita (temporaneo, automatico, dinamico, ...). Relazione tra il tempo di vita e la visibilità (scope) di un oggetto. Gestione degli oggetti dinamici per tipi primitivi, strutture e array mediante l'utilizzo di puntatori (raw pointers).
Introduzione agli Array in C++. Argomenti trattati: decadimento a puntatore di un array; conseguenze del meccanismo di decadimento sul passaggio di array a funzioni; array multidimensionali e il concetto di puntatore ad array; come passare array multidimensionali a funzioni; gli iteratori come generalizzazione di un puntatore ad elemento di un array ed una breve scorsa di come usare gli iteratori con gli algoritmi standard (e.g., std::copy) del C++.
Introduzione ai puntatori e ai riferimenti in C++. Viene presentato il problema dello swap, come esempio motivante per l'introduzione della semantica di riferimento. Si procede con l'introduzione del concetto di puntatore, a cui segue una spiegazione dei basilare operatori di referenziazione e dereferenziazione. Il problema dello swap viene risolto mediante puntatori. Si procede con l'introduzione dei riferimenti, come alias di variabili esistenti. Il problema dello swap viene in ultimo risolto mediante riferimenti.
An introduction to the Java Persistence API 2.x (JPA). Namely, this set of slides first introduces the problem of impedance mismatch between the object model and the relation model. Then, the EntityManager's public interface is discussed, together with the parallelism between a persistence context and a L1 cache. The issue of encapsulating the different application's use cases (which are exposed by the service objects) is solved by means of the @Transactional annotation, which provides a declarative way of demarcating the application's transactional boundaries. It follows an in-depth explanation on how to integrate a local, container-managed EntityManager within an existing Spring MVC application, so as to correctly support the propagation of the persistence context throughout the different beans involved in the same transaction. We then turn our attention to the problem of mapping relationships, thus introducing the @OneToMany, @ManyToMany and @OneToOne annotations. The additional topics of how to cascade operations and how to support lazy loading are covered as well. The presentation concludes with a discussion on how to use both the Criteria and Query API (and JPQL) to query the underlying database.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
9. Mul$ple configura$on files
We will add some addi,onal XML configura,on files
• One for the service layer
• One for the persistence layer
• One for data source configura7on
10. Spli%ng by architectural layers
By doing so, we separate applica&on beans (services and
persistence beans) from Web beans (controllers and special beans)
11. Spli%ng by architectural layers
That is, the Spring configura3on is broken out by architectural
layers
┌──────┐┌────────────────────────────────┐
│ D ││ │
│ o ││ Presentation layer │
│ m ││ │
│ a │└────────────────────────────────┘
│ i │┌────────────────────────────────┐
│ n ││ │
│ ││ Service layer │
│ m ││ │
│ o │└────────────────────────────────┘
│ d │┌────────────────────────────────┐
│ e ││ │
│ l ││ Persistence layer │
│ ││ │
└──────┘└────────────────────────────────┘
13. Event listeners
The Java Servlet specifica1on includes the capability to track
events in a Web applica1on through event listeners
14. ServletContextListener
We can monitor events related to the Web app lifecycle by means
of a ServletContextListener implementa5on
public interface ServletContextListener {
public void contextInitialized(ServletContextEvent sce);
public void contextDestroyed(ServletContextEvent sce);
}
15. ServletContextListener
ServletContextListeners are loaded at Web container
startup, before any servlet
public interface ServletContextListener {
public void contextInitialized(ServletContextEvent sce);
public void contextDestroyed(ServletContextEvent sce);
}
17. ContextLoaderListener
As with any Web component, we need to declare
ContextLoaderListener in web.xml
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
18. ContextLoaderListener
The loca)ons of the addi)onal configura)on files are specified as a
context parameter named contextConfigLocation1
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:service-context.xml
classpath:persistence-context.xml
classpath:dataSource-context.xml
</param-value>
</context-param>
1
Note that we are not allowed to specify any other parameter name
19. ContextLoaderListener
The classpath: prefix is used to inform Spring that the files are
located in the CLASSPATH
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:service-context.xml
classpath:persistence-context.xml
classpath:dataSource-context.xml
</param-value>
</context-param>
20. One configura,on file per layer
Service beans are declared in service-context.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:service-context.xml <!-- Service beans -->
classpath:persistence-context.xml
classpath:dataSource-context.xml
</param-value>
</context-param>
21. One configura,on file per layer
Persistence beans are declared in persistence-context.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:service-context.xml
classpath:persistence-context.xml <!-- Persistence beans -->
classpath:dataSource-context.xml
</param-value>
</context-param>
22. One configura,on file per layer
Finally, dataSource-context.xml configures the data source
we would like to use
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:service-context.xml
classpath:persistence-context.xml
classpath:dataSource-context.xml <!-- data source config -->
</param-value>
</context-param>
23. How do the addi+onal configura+on files relate to
frontcontroller-servlet.xml?
24. Back-end container
The ContextLoaderListener bootstraps an addi$onal
container called the back-end container
+--------------------------------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+--------------------------------------+
Spring DI back-end container
25. Separa&ng the different areas
Service and persistence beans will live within the back-end
container...
+---------------------------------------------------+
| |
| |
| +--------------+ |
| | +--------------+ +--------------+ |
| | | +--------------- | +--------------+ |
| | | | + | | +---------------+ |
| +-+ | Service beans | | | | | |
| +-+ | | | | Persistence | |
| +---------------| +-+ | beans | |
| +-+ | |
| +---------------+ |
| |
| |
+---------------------------------------------------+
Spring DI back-end container
26. Separa&ng the different areas
...whereas Web beans will live in the front-end container created
by DispatcherServlet
+---------------------------------------------------+
| |
| |
| |
| +------------+ +------------+ |
| | +------------+ | +------------+ |
| | | +-------------+ | | +-------------+ |
| | | | | | | | | |
| +-+ | Controllers | +-+ | Special | |
| +-+ | +-+ beans | |
| +-------------+ +-------------+ |
| |
| |
| |
+---------------------------------------------------+
Spring DI front-end container
27. Separa&ng the different areas
We are effec(vely separa&ng the applica(on beans from the Web
beans by crea(ng different containers
+-------------------------+ +-------------------------+
| | | |
| | | |
| <----> |
| | | |
| | | |
+-------------------------+ +-------------------------+
Front-end container Back-end container
29. The back-end container is unique
In other words, ContextLoaderListener loads the different
configura5on files into the same back-end container
+---------------------------------------------------+
| |
| |
| +--------------+ |
| | +--------------+ +--------------+ |
| | | +--------------- | +--------------+ |
| | | | + | | +---------------+ |
| +-+ | Service beans | | | | | |
| +-+ | | | | Persistence | |
| +---------------| +-+ | beans | |
| +-+ | |
| +---------------+ |
| |
| |
+---------------------------------------------------+
Spring DI back-end container
30. Parent-child rela.onship
The back-end container serves as a parent for the front-end
container
+----------------------+
| |
| Back-end container |
| |
+----------^-----------+
|
| Child of...
|
+----------+-----------+
| |
| Front-end container |
| |
+----------------------+
31. Parent-child rela.onship
That is why the back-end container is also called the root container
+----------------------+
| |
| Back-end container |
| |
+----------^-----------+
|
| Child of...
|
+----------+-----------+
| |
| Front-end container |
| |
+----------------------+
32. Parent-child rela.onship
A container can only have a single parent, but it can have mul6ple
children
+--------------+
| |
| Container A |
| |
+------^-------+
|
+--------------+-------------+
| |
+------+-------+ +-------+------+
| | | |
| Container B | | Container C |
| | | |
+--------------+ +------^-------+
|
+--------------+-------------+
| |
+------+-------+ +-------+------+
| | | |
| Container D | | Container E |
| | | |
+--------------+ +--------------+
33. Parent-child rela.onship
Child containers can access beans defined in the parent container
+--------------+
| |
| Container A |
| |
+------^-------+
|
+--------------+-------------+
| |
+------+-------+ +-------+------+
| | | |
| Container B | | Container C |
| | | |
+--------------+ +------^-------+
|
+--------------+-------------+
| |
+------+-------+ +-------+------+
| | | |
| Container D | | Container E |
| | | |
+--------------+ +--------------+
34. Parent-child rela.onship
However, parent beans cannot access beans in the child container
+--------------+
| |
| Container A |
| |
+------^-------+
|
+--------------+-------------+
| |
+------+-------+ +-------+------+
| | | |
| Container B | | Container C |
| | | |
+--------------+ +------^-------+
|
+--------------+-------------+
| |
+------+-------+ +-------+------+
| | | |
| Container D | | Container E |
| | | |
+--------------+ +--------------+
35. Parent-child rela.onship
Hence, shared beans and infrastructure configura2on are
• Declared in the back-end container
• Consumed in the front-end container by Web components
41. Service beans
Service beans should be annotated with the @Service annota/on
@Service
public class AccountServiceImpl implements AccountService { ... }
42. Service beans
Currently, @Service does not provide any addi1onal behavior
over the @Component annota1on
@Service
public class AccountServiceImpl implements AccountService { ... }
43. Service beans
However, this annota/on might include service layer specific
func/onality in future Spring releases
@Service
public class AccountServiceImpl implements AccountService { ... }
44. Service beans
Nevertheless, @Service is s,ll useful, as it helps in clearly
demarca-ng the role of the bean
@Service
public class AccountServiceImpl implements AccountService { ... }
45. Persistence beans
Persistence beans should be annotated with the @Repository
annota/on
@Repository
public class AccountRepositoryImpl implements AccountRepository { ... }
47. Persistence beans
The @Repository annota)on makes the unchecked excep+ons
thrown by the repository bean eligible for transla)on into Spring's
DataAccessExceptions
55. Beans injec*on
With the back-end container in place, we are now ready to inject
instances of the service beans into the controllers
56. Annota&on-based wiring
The most common way of wiring beans is to use annota%ons
@Controller
@RequestMapping("/account")
public class AccountController {
private AccountService accountService;
@PleaseInjectHere
public AccountController(AccountService accountService) {
accountService = accountService;
}
}
57. Annota&on-based wiring
It turns out that Spring supports different annota+ons
• The @Autowired annota*on (Spring API)
• The @Inject annota*on (Dependency Injec*on API)
• The @Resource annota*on (Common Annota*ons API)
58. Annota&on-based wiring
It turns out that Spring supports different annota+ons
• The @Autowired annota)on (Spring API)
• The @Inject annota*on (Dependency Injec*on API)
• The @Resource annota*on (Common Annota*ons API)
65. Annota&on-based wiring
It turns out that Spring supports different annota2ons:
• The @Autowired annota*on (Spring API)
• The @Inject annota)on (Dependency Injec)on API)
• The @Resource annota*on (Common Annota*ons API)
68. @Inject
The centerpiece of JSR-330 is the @Inject annota5on. This
annota5on is an almost complete drop-in replacement for Spring’s
@Autowired annota5on
73. References
• SpringSource, Spring Framework Reference
• SpringSource, ContextLoader Java-doc
• M. Deinum, K. Serneels, Pro Spring MVC: with Web flows,
Apress PublicaIons
• Craig Walls, Spring in AcIon (3rd EdiIon),
Manning PublicaIons
• Willie Wheeler, Spring in PracIce, Manning PublicaIons