Леонид Павлов. "It specialist's tricks"
14 subscribers
77 photos
7 videos
5 files
59 links
Keep calm, no spam.
Download Telegram
Git pro tip for clear commit history and make easy revert bugged features:
1. Branch from origin/dev or any other branch you need.
2. Commit and push whatever you want.
3. Make sure you done your changes and project working fine.
4. git reset --mixed dev - resets your branch state as before first commit on it but keeps files in current state (latest commit).
5. git push -f origin - clean history and deletes "work in progress" commits in remote.
6. Structure your changes with any way git cli or any IDE to group your changes by files, directories or scopes and commit them with useful messages.
7. Now you have very clean branch state with easy possibility of reverting changes by change type and you don't need to dig in commit history to see what mean commit with message "+" or "some changes"
#pattern of the day
# Active record pattern
Pattern where record have self-contained database connection.

part = new Part()
part.name = "Sample part"
part.price = 123.45
part.save()


Or anti-pattern due to Single-responsibility principle
#pattern of the day
# State pattern

Pattern that allows manage with states of the object and events that executes before/on/after state changed and manage states routing.

Example:
var @object = new SomeObject();
var stateMachine = new StateMachine<TriggerEnum, StateEnum>(object);

stateMachine.InitState(StateEnum.NoAction);
stateMachine.Transition(TriggerEnum.TrigerSomething, StateEnum.ActionRunned, (obj, targetState) => Triggered(obj, targetState));

stateMachine.Do(TriggerEnum.TriggerSomething); // output: "Triggered on NoAction"

Console.WriteLine($"Current state: {@object.State.GetDisplay()}"); // output: Current state: ActionRunned

void Triggered(SomeObject obj, StateEnum state)
{
Console.WriteLine($"Triggered on {obj.State.GetDisplay()}");
obj.State = state;
}


See c# StateMachine that has powerful possibilities for state management: https://github.com/dotnet-state-machine/stateless
Found approach for DDD that called "aggregation root". It's looks good but only on paper (in theory) and works good with simple examples like "User, customer, shopping cart, order". On practice on every private setter you will create setter method (like in #2 of my examples). Also different methods for every system you work with. Not even talking about business logic inside database entity that violates SOLID's "single responsibility principle".
Easy localhost setup in different test environments:
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];

#tricks #tests
Forwarded from Библиотека программиста
🛠 Всё, что нужно знать начинающему о Git: рассмотрим за 15 минут

Распределенная система контроля версий Git – популярный инструмент для координации параллельной работы и управления проектами в мире ИТ. Умение им пользоваться хотя бы на уровне основных команд необходимо даже начинающему разработчику.

🔗 Основной сайт
🔗 Зеркало
Это всё конечно хорошо, шпаргалки там, и прочее. Но без знания работы инструмента, нельзя пользоваться им профессионально. А git это один из основных инструментов программиста. Нет ничего лучше, чем прочитать книжку про git, и самая лучшая книга, которая дала мне все азы, порекомендовал мне мой первый senior еще много лет назад:
https://www.kobzarev.com/wp-content/uploads/books/git/progit.ru.pdf
На тему шпаргалок:
Можно распечатать этот листочек и повесить на стеночку, и с шансом 10% вы потратите на определение кодировки меньше минуты. И с шансом 1 из N количества вариаций кодировок (от cp8859-1 до cp8859-16, от win1250 до win1258 и тд.) вы вычислите нужную кодировку. А можно использовать обычные декодировщики (например этот меня выручал чаще чем остальные - https://2cyr.com/decode/?lang=ru).

Так же и со шпаргалками по языкам, инструментам. Если не знаете инструмент, который описывает шпаргалка, хотябы на среднем уровне, то и изучить инструмент шпаргалка не поможет. А если инструмент изучен достаточно, чтобы не искать в гугле каждую вторую команду, то шпаргалка не нужна, потому что повседневные вещи, которые в ней описаны, вы и так делаете с закрытыми глазами, а что-то специфическое очень вероятно, что в шпаргалке не описано, и всёравно придется лезть в документацию, в --help или гугл.
Единственная причина того, что легаси никто не рефачит - разрабам лень переписывать тесты. #fun_minute
😁1
#csharp #protip
## Почему нужно использовать is null, вместо == null
Всё очень просто: оператор == можно перезаписать, а is - не оператор, и компилируется отличным от операторов способом.
Пример:
* Объявим класс, который переопределяет операторы сравнения, и возвращает истину, когда существующий объект сравнивают с null и код вернет истину, как будто наш объект равен null
class SomeObject  
{
public static bool operator ==(SomeObject left, object right)
{
if (right is null)
{
return true;
}

return false;
}
public static bool operator !=(SomeObject left, object right)
{
if (right is null)
{
return false;
}

return true;
}
}


* А теперь сравним существующий объект с null, с помощью оператора == и с помощью ключевого слова is
static void Main(string[] args)  
{
var isNullOperator = new SomeObject() == null;
var isNullIs = new SomeObject() is null;

Console.WriteLine($"Вывод через == : {isNullOperator}");
Console.WriteLine($"Вывод через is : {isNullIs}");
}

* Вывод консоли:
Вывод через == : True
Вывод через is : False


Бинго!
#tools

Редактор OpenApi, который превращается в привычный swagger.
Очень удобная штука для проработки контрактов.

https://editor.swagger.io/
🌐 Bing AI — это новый чат-бот от Microsoft, который использует технологию ChatGPT для ответа на вопросы пользователей. Он может помочь вам найти информацию в Интернете, ответить на вопросы и даже поддержать беседу на разные темы.

Если вы хотите получить доступ к новому Bing с ChatGPT из России, вот как это сделать:
🔵 Подключите VPN. Любой бесплатный VPN подойдет, например, AdGuard.
🔵 Откройте Microsoft Edge или скачайте его. В других браузерах пока есть сложности. Microsoft Edge можно скачать по этой ссылке: https://www.microsoft.com/ru-ru/edge.
🔵 Зайдите в свой аккаунт Microsoft. Можно сделать это прямо в браузере или по этой ссылке: https://account.microsoft.com/.
🔵 Если у вас еще нет аккаунта Microsoft, то его можно создать по этой ссылке: https://signup.live.com/.
🔵 Откройте страницу поисковика Bing — https://www.bing.com/.
🔵 Найдите раздел «Чат». Он находится в верхнем меню сайта рядом с разделами «Картинки», «Видео» и «Карты».
🔵 Нажмите кнопку «Присоединиться к списку ожидания».

Если вы получаете сообщение “Sorry, looks like your network settings are preventing access to this feature.”, то выполните следующие действия:
🔵 Смените регион аккаунта Microsoft на США
🔵 Установите расширение modheader
🔵 Добавьте пункты Request Headers -> X-Forwarded-For -> 1.1.1.1 и Request URL filters -> .://www.bing.com/.

Тэги: #ai #neural_networks #instructions
Please open Telegram to view this post
VIEW IN TELEGRAM