Giter Club home page Giter Club logo

sql2cypher's Introduction

Hi, I'm Artyom


I am an undergraduate student at MIPT. I have been programming for almost two years and I try something new all the time. Managed to gain experience in system programming in Huawei and ISP RAS. Also I started to learn web backend development by starting to write a StudOko web-application (details bellow) in Kotlin.

Currently developing several projects and working in ISP RAS over a static analyzer Svace by Samsung.

My CV is here.

Contact me on social media


LinkedIn LinkedIn | LinkedIn Telegram | LinkedIn Email

More stuff about me

What I'm currently learning


Now, I learn Kotlin and its application in web backend Development. I hope, it will be very interesting.

Projects


  • [C++] sql2cypher is a unique tool, which allow you to translate your Microsoft SQL queries for relational database to queries for neo4j (graph DBMS).

  • [C++] logger is a very lightweight, flexible, simple and universal logger for C++ projects. It supports different formats (in e.g. json), colors, can write logs in some places (files, stdout) and so on.

  • [Kotlin] studoko is a web application that will allow the Department of ATP at the MIPT to issue and accept homework for students, control access to a server cluster and department's GitLab.

  • [C] PDP-11 Emulator is an emulator of outdated 16-bit computer PDP-11.

Skills


  • Languages: C/C++, Java, Kotlin and a little bit Python, Ruby, Go
  • DBMS: Microsoft SQLS, neo4j
  • DevOps: Linux, Git and a little bit Docker, CI/CD
  • Agile: Scrum & Kanban in Jira
  • Other: Shell, Doxygen, GTest, LaTex

See more in my CV.

sql2cypher's People

Contributors

c71n93 avatar temikfart avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

sql2cypher's Issues

New argument parsing

Need to move arguments parsing to another place. Also, I want to see more clear code.

Update README

README.md is not actuale for now. There are no information about new argument parser, how configuration works and how to write tests.

Refactor app configuration

Now, the configuration module is very bad, because there are a lot of methods for validation with dirty error messages, bad argument parsing implementation, etc.

Extract Lexem class from INode

Now, INode class plays a double role: INode and Lexem. Lexer must parse input file to lexem, Parser must take Array of Tokens/Lexems and create AST nodes. These tokens should have only one DataType and do not know about Statements.

Add unit-testing for Parser module

Add unit-testing for the enums, classifiers in Parser module. Also, we can test validation methods and methods with the return value.

Separate the logger

Now, module, which is responsible for the logging in the application, is very bad coded. I suggest to use open-source logger. Also, we need to remove any logs from configuration module and break the connections between configuration and logging modules.

Extra logs in tests

When some function, for example, PrintHelpAndExit(), prints help info in stdout inside the EXPECT_EXIT macro, this function output will be in the final output near the logs from Google Test framework. This invalid behavior, because test output makes it difficult to read test results.

Option without parameter should be invalid

If I run SCC with the following command:

scc --sql="/path/to/sql_queries.sql" --mode

where I didn't specified any parameter for the --mode, scc will use default value for the --mode, but I think it is incorrect. Need to raise an error in this case.

Add MacOS and Windows builds to CI

Now build.yml runs GitHub Actions only for ubuntu. Need to add build and test scripts for MacOS and Windows for cross-platform testing.

Refactor AST and Tokenizer

  • Unnecessary getters and setters in ast.h;
  • Outdated docs;
  • Unnecessary unused methods;
  • Class Node contains two entities inside: lexem and AST node. It should be separated to two pieces.

Code Style with Clang Format

To fix C++ Code Style in the project need to use, for example, Clang Format in CI and check it for each merge request.

Cmake build with subdirectories

Now, all build logic placed in the only one CMakeLists.txt in the root of project. Need to use CMakeLists.txt for each directory with sources and tests using add_subdirectory.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.