Uploaded by Вова Середович

Demo2

advertisement
WELCOME TO
THE FUTURE
Agenda
• Task 1, Task 2, Task 3.
• SMTP server & client. Project presentation.
• SMTP server.
Task 1
Implement a dynamically sized list of
c strings.
Idea
To implement linked list using arrays of pointers. First element of array is c-string,
second element of array is address to another analogous array. All this arrays is
called “nodes”, first array – “head”.
Task 2
int
Class that can store single values of
C++ fundamental types
bool
char
float
Ideas
• We can make a class with template struct “Holder” that holds an object.
• We can make a class with union that holds an object. It is easier to understand
and implement.
Task 3
Application that counts blank lines,
comment lines, and physical lines of
source code written in C/C++
//comments
{code;}
//comments
Idea
We can use filesystem library to open project directory. Then we open *cpp, *h,
*hpp and *C files in different threads. I have method to create statistics for me.
Finally, I write statistics to the file. I use a lot of libraries, such as: <filesystem>,
<thread>, <mutex>, <vector>, etc.
Any questions?
I can show a code, if you want…
Project
Description
SMTP server & client
• SMTP (Simple Mail Transfer Protocol) Server that’s primary purpose is to
send, receive, and relay outgoing mail between email senders and receivers.
• SMTP client (Sender-SMTP) that communicates with the SMTP server
(Receiver-SMTP) using a predefined strict set of case insensitive commands.
Among them HELO, EHLO, MAIL, RCPT, DATA, QUIT are always implemented by all
SMTP servers.
SMTP server & client
• SMTP Server should be background process (Linux – daemon, Windows –
service). Server should read configuration from *.xml or *.json file and should
have logger. Server should contain email messages. Requests/Responses between
server and client should be encrypted.
General suggestions
• Structure your sources. Separate shared and sourced code. Shared code we can
use for server and client.
• Use a code style proposed by the IT academy.
• Use relative path to log and configuration file to executable file or server.
• Prefer allocating data on heap for objects and arrays.
• Prefer design classes where is needed.
• Use const and constexp as more as possible.
General suggestions
• Use as more as possible modern C++ 14 and C++ 17 features to optimize the code.
• Validate data before use it.
• Constructor should not have hard functionality. Implement initialize method
instead for example.
• 50-90% of functions and methods should return bool value.
• Use C++ smart pointers.
• Use STL and Boost.
• Use SQL database for storing data.
Project components
1. SMTP (TCP/IP) Server (Sockets) – Kostiantyn Yehorov
2. SMTP/POP3 (TCP/IP) Client, Installer – Roman Smachylo
3. C++ Logger (common for Server and Client) – Yaroslav Masyna
4. Server configuration parser, config parser (for Server and Client) – Oksana Bisyk
5. CI/CD Jenkins – Volodymyr Seredovych
6. Windows Service, Installer – Oleg Matseyko
7. SQL DataBase – Max Andrusenko
8. Encryption and decryption
SMTP Server
SoftServe Confidential
Download