Skip to content

Instantly share code, notes, and snippets.

View ValentinNikolaev's full-sized avatar
🐘
Focusing

Nikolaev Valentin ValentinNikolaev

🐘
Focusing
View GitHub Profile
@ValentinNikolaev
ValentinNikolaev / validation.test.php
Last active September 11, 2023 12:33
Codify-validaton
<?php
declare(strict_types=1);
namespace App;
class CreateOrderValidator
{
private ItemSchemeRules $contentBaseRule;
private SomeLaravelRulesBuilder $rulesBuilder;
@ValentinNikolaev
ValentinNikolaev / git_aliases.sh
Created January 13, 2022 15:45
Helpfull Git Aliases
# ~/.bashrc: executed by bash(1) for non-login shells.
git config --global alias.co checkout &&
git config --global alias.st status &&
git config --global alias.br branch &&
git config --global alias.ci commit &&
@ValentinNikolaev
ValentinNikolaev / find_commands.txt
Last active January 24, 2021 17:56
"Find" commands examples set
basic 'find file' commands
--------------------------
find / -name foo.txt -type f -print # full command
find / -name foo.txt -type f # -print isn't necessary
find / -name foo.txt # don't have to specify "type==file"
find . -name foo.txt # search under the current dir
find . -name "foo.*" # wildcard
find . -name "*.txt" # wildcard
find /users/al -name Cookbook -type d # search '/users/al' dir
@ValentinNikolaev
ValentinNikolaev / mysql_reset_password.txt
Last active January 24, 2021 17:55
Reset root mysql password Ubuntu
sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Start the mysql client process using this command
mysql -u root
From the mysql prompt execute this command to be able to change any password
FLUSH PRIVILEGES;
@ValentinNikolaev
ValentinNikolaev / development_common_rules.md
Last active January 24, 2021 17:58
Development. Общие правила

Правильный путь разработки

Правило бойскаута: оставлять место после себя чище чем, оно было до твоего визита. Переписывайте код, который не соответствует стандартам и правилам хорошего тона.

Классы

Класс должен отвечать за конкретную логику и за конкретный слой бизнес-логики. Принцип единственности ответственности в SOLID. В классе не должно быть более 10 публичных методов. Если в классе более 10 публичных методов, то нужно разносить методы по разным классам.

Методы

Метод должен иметь только одну зону ответственности: Принцип единственности ответственности в SOLID. Название метода должно быть в формате lowerCamelCase.

@ValentinNikolaev
ValentinNikolaev / Тестирование.md
Created February 17, 2018 13:12 — forked from codedokode/Тестирование.md
Автоматизированное тестирование

Автоматизированное тестирование

Если ты пишешь код, то наверняка его тестируешь. Если речь о какой-то функции, то ты можешь вызывать ее с разными аргументами, и смотреть, что она вернет. Если ты сверстал сайт, то ты открываешь его в браузере, жмешь ссылки и кнопки, проверяешь что все сделано верно. Это называется ручное тестирование — человек проверяет работу программы. Нельзя ли эту задачу переложить на плечи роботов? Обычно можно, и это называется автоматизированное тестирование.

Тестирование позволяет сделать твой код надежнее, а твою жизнь проще. Ведь согласись, лучше когда ты сам обнаруживаешь и исправляешь ошибку до релиза, чем когда рассерженный заказчик звонит на выходных и требует срочно исправить неработающий функционал.

Тестирование особенно полезно при разработке больших приложений в большой команде, когда ты можешь нечаянно сломать какую-то функцию, которую делал другой человек, и о которой ты не знал. Или когда надо доработать написанный ранее сложный проект.

В больших компаниях может быт

@ValentinNikolaev
ValentinNikolaev / README.md
Created November 10, 2017 19:51 — forked from fesor/README.md
Доступ к данным или как мы учились не замечать базу данных

Оргенизация слоя хранения данных это всегда не простая задача, с кучей кейсов, вроде блокировки перезаписи, транзакции, сохранение целостности данных. В какой-то момент появились СУБД и обещали решить эти проблемы, но с ними появились новые - как нам работать с состоянием, которое мы храним?

Существует 4 основных подхода для организации рабоыт с базой данных, Table Gateway, Row Data Gateway, Active Record и Data Mapper. Все эти подходы объеденяет то, что они скрывают от нас базу данных и нюансы работы с ними (в частности SQL). На сегодняшний день самым популярным подходом являются Active Record и Data Mapper, все о них слышали, но для того что бы более полно представлять, как развивалась идея, стоит рассказать и о первых двух.

Table Data Gateway

Table Data Gateway, который так же можно встретить под названием DAO (Data Access Object), предоставляет нам объектное представление отдель

@ValentinNikolaev
ValentinNikolaev / ARTICLE.md
Created November 10, 2017 19:48 — forked from fesor/ARTICLE.md
Возвращаясь к основам: почему юнит тесты это сложно

https://simpleprogrammer.com/2010/12/12/back-to-basics-why-unit-testing-is-hard/

Back to Basics: Why Unit Testing is Hard

перевод адаптирован под 2017-ый, где у нас нет проблем с mock фреймворками, и нам не обязательно создавать интерфейс дабы сделать мок.

Возвращаясь к основам: почему юнит тесты это сложно

alias dc="docker-compose"
alias dps="docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}'"