web mess – Telegram
web mess
130 subscribers
85 photos
1 video
2 files
163 links
go, vim and some other random stuff
appreciate your feedback :)
Download Telegram
Forwarded from 🇺🇦 Go for two :)
How to Make Your Code Reviewer Fall in Love with You:

1. Review your own code first
2. Write a clear change list denoscription
3. Automate the easy stuff
4. Answer questions with the code itself
5. Narrowly scope changes
6. Separate functional and non-functional changes
7. Break up large change lists
8. Respond graciously to critiques
9. Be patient when your reviewer is wrong
10. Communicate your responses explicitly
11. Artfully solicit missing information
12. Award all ties to your reviewer
13. Minimize lag between rounds of review

https://mtlynch.io/code-review-love/
Указатели как поля в структуре.

Наткнулся на код, в котором для полей используются ссылочные типы, например, *bool, *string и т.д
Какой-то явной необходимости в этом нет, всё было работало и без этого.
Уточнил, оказалось, что это такая конвенция, потому что поинтер можно проверить v != nil и т.д
А для каждого другого типа нужно сравнивать с нулевым значением.

Плюс к этому всему в коде куча конструкций вроде:
isTrue := true
a.someFlag = &isTrue
Они мне не кажутся красивыми.
Лучше уж написать ф-цию, которая возвращает поинтер на конкретный тип.

Ну, я решил немного изучить вопрос и наткнулся на вот этот тред.
Если коротко:
Есть смысл использовать *T как поле в случае маршалинга, когда нужно передавать нулевое значение не смотря на omitempty. Например, поле int и нам нужно передавать 0, в случае с указателем, значение в json смаршалится как 0.
В случае с nil - поля не будет в json'e.
Таким образом, можно разделять случаи когда поле не было передано и когда поле имеет нулевое значение.

Но мне кажется, что это нужно настолько редко :)
Интересно было бы начать здесь тред по этому вопросу и услышать ваше мнение.
Forwarded from Мемы Для Друзей (Danil Stepin)
Нашел интересную дырку в монге.
Ну, скорее всего это предсказуемое поведение, но неочевидное.
Если пытаешься конкурентно апдейтнуть один и тот же документ с upsert:true (в случае если документа не существует) - создаётся два документа.
Происходит так из-за того, что операции в монге атомарны в пределах одного документа.
А если документа нет - то нет и атомарности :)
Предыдущее актуально для старых версий монги.
Начиная с версии 4.16 - это поведение исправили.
Clubhouse (таск менеджер) меняет название на Shortcut.
Наконец на меня перестанут смотреть испуганным взглядом, когда я говорю, что мы трекаем таски в клабхаусе 😂

https://clubhouse.io/blog/clubhouse-changing-our-name-to-shortcut
С переходом на удалёнку я понял, насколько важно правильно обустроенное рабочее место.
Первым делом купил нормальное кресло для работы. Работать стало удобнее, но болела шея из-за того, что постоянно смотрел вниз на ноут. В итоге купил вчера монитор и наконец стало правда комфортно.
В планах купить еще отдельную клавиатуру. Смотрю на что-то вроде этой и отдельный тачпад, поставить его между частями клавиатуры (должно быть удобно).
Делитесь своим сетапом в комментах, интересно посмотреть.
Короче, упс 🙈
Не очень подходит под тематику канала. Но, очень интересная статья на тему онлайн рекламы и того, почему эта ниша - новый пузырь доткомов.

Очень длинная, но правда крутая и местами забавная(из-за старых фейлов огромных корпораций с рекламой)

https://thecorrespondent.com/100/the-new-dot-com-bubble-is-here-its-called-online-advertising
А давайте будем булевы флаги передавать строками yes/no
Forwarded from LEFT JOIN
Совершенно кайфовый ресурс — визуальное введение в машинное обучение. К сожалению, по-русски у меня почему-то выдает ошибку 500. Но очень красиво и понятно сделано 😍
Очень сильно смешно