Skip to content

ZakharovAleksey/yandex_cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yandex Practicum C++

💥 Sprint #16 description added here

  • Add conan package manager (could not find packages)
  • Make good CMAKE basing on chosen compiler
  • Add ANTLR to the project

Sprint 1

  1. Code as it was in web-form could be found in the main.cpp file on branch dev/sprint-1
  2. Code, which I've tried to split by *.h and *.cpp files could be found on the master branch

Implemented items:

  1. Class SearchServer:

Sprint 2

Code with Unit Testing framework (from lectures) and Unit Tests for the SearchServer could be found on branch: dev/sprint-2.

Implemented items:

  1. Unit testing framework:
  2. Unit tests for SearchServer class:
  3. Unit tests execution from the the main.cpp

Sprint 3

Code with updated SearchServer version and corresponding to the changes tests could be found on branch: dev/sprint-3.

Implemented items:

  1. Updates in SearchServer class:
  2. Updates in unit tests for SearchServer class:

P.S. Additionally I've updated the unit-test framework, to make it easy to use.

Main changes are ( testing_framework.h; testing_framework.cpp ):

  • ASSERT_THROW macros, which checks if the function should throw
  • RunTests class which is used to run all tests implicitly
  • Existing functionality refactoring to match first two items :)

Sprint 4

Code with search server could be found here: dev/sprint-4

Implemented items:

  1. Code of SearchServer engine was split up into several files, which are located in the folder: sprint_4
  2. Paginator functionality could be found here:
  3. Query of requests to `SearchServer' could be found here:

Sprint 5

Code with search server could be found here: dev/sprint-5

Implemented items:

  1. In SearchServer engine three function have been implemented: GetWordFrequencies, RemoveDocument and RemoveDuplicates

  2. Duration logger functionality could be found here:

  3. Boost & Gtest functionality have been integrate to the project:

Sprint 6

Code with search server could be found here: dev/sprint-6

Implemented items:

  1. SingleLinkedList template class could be found here:
  2. Unit tests of SingleLinkedList class:

Sprint 7

Code with search server could be found here: dev/sprint-7

Implemented items:

  1. SimpleVector template class could be found here:
  2. Unit tests of SimpleVector class:

Sprint 8

Code with search server could be found here: dev/sprint-8

Implemented items:

  1. Multi-treading for methods of SearchServer class:
    • Methods list: RemoveDocument(), FindAllDocuments(), ParseQuery(), FindTopDocuments(), MatchDocument()
    • Could be found search_server.h
  2. Change std::string on std::string_view for performance improvement:
  3. Add multi-threading functions to process queries:
  4. Class ConcurrentMap and ForEach() method to thread safe process std::map<k,v>:

Sprint 9

Code with search server could be found here: dev/sprint-9

Implemented items:

  1. TransportCatalogue class:
  2. Input data readers:
  3. Output statistics writers:

Sprint 10

Code with transport catalogue visualization map: dev/sprint-10

Implemented items:

  1. TransportCatalogue class update:
  2. JsonReader library:
  3. SvgReader library:

alt text

Sprint 11

Code with JSON builder could be found here: dev/sprint-11

Implemented items:

  1. Class Builder, which provides an interface for JSON creation:
  2. Request handler adjustment to creation of JSON response via Builder class.

Sprint 12

Code with JSON builder could be found here: dev/sprint-12

Implemented items:

  1. Class TransportRouter, which builds the fastest route from point A to point B:

In the graph, used to build the fastest routes, each stop represents as 2 vertexes:

  • start - passenger arrives to this vertex on the stop (necessary to take into account bus waiting)
  • end - passenger start wide from this vertex

P.S. Implementation notes:

  • Each route starts from the start vertex of the first stop, and ends with start vertex of the last stop.
  • Each bus ride starts with the end vertex stop and ends on the start vertex.
  • Bus could go through the same stop several times - only the lowes time is chosen to build the fastest route.

Sprint 13

Code changes for Optional<Type> and Vector<Type> could be found here: dev/sprint-13

Implemented items:

  1. Class Vector<Type> is analog of std::vector<Type>:
  2. Class Optional<Type> is analog of `std::optional:

P.S. Both classes implementation use raw memory, so the speed should be close to the analogs from STL library.

Sprint 14

Code changes could be found here: dev/sprint-14

Implemented items:

  1. Serialization of TransportCatalogue, TransportRouter, Settings (both: routing and rendering):
  2. Requests handling is now split into 2 parts, where on the intermediate state we serialize all the date.

Sprint 15

Code changes could be found here: dev/sprint-15

Implemented items: Language interpreter, consists from the following steps:

  1. Lexical analyzer:
  2. Syntax analyzer (runtime + parser):
  3. Semantics analyzer:
  4. Table of symbols

Sprint 16

❗ ❗ ❗

Code changes could be found here: dev/sprint-16

Simple Excel-like sheet to work with text and formulas only.

Main implemented items:

  1. Sheet:
  2. Cell:
  3. Formulas:
  4. Adjustments to use formula parser with ANTLR

Notes

ANTLR Installation

Steps to install & test:

  1. Download & install Java SE Runtime Environment 8
  2. Download & install Java SE Development Kit 8
  3. Download *.jar file & set up all Path environment variable & *.bat files: here
  4. Test the installation: here

Steps to integrate with C++:

  1. Documentation page: here
  2. Notes: here

P.S. In general, if ANTLR has been installed successfully, the only thing u need to do to integrate it with C++ is just download the runtime module (see. above) together with *.jar file and place it in project folder. CMakeFile will handle everything else.