Объявляем duration правильно
❌ Плохо:
const someDuration = 720 * time.Hour // 1 month duration
✅ Хорошо:
const someDuration = 30 * 24 * time.Hour // 1 month duration
В первом случае хоть и стоит комментарий, но:
- на него сходу не падает глаз и ты первые доли секунды не понимаешь, что значит магическое число 720
- если нужно будет сократить количество дней, например до недели, придется считать количество часов в неделе
Во втором случае:
- когда видишь 24 * time.Hour сходу понимаешь, что речь о дне (странно, что нет time.Day), а дальше уже понимаешь, сколько дней. Комментарий дополняет на случай особой непонятливости
- если нужно изменить количество дней - просто меняешь первую цифру на необходимую
Безопасное разыменование
Нередко бывает необходимость получить значение по указателю, либо если указателя нет, дефолтное значение типа. Например у тебя в структуре поле типа *string и тебе нужно переложить его в поле другой структуры с типом string
Раньше:
var userAddress string
if user.Address != nil {
userAddress = *user.Address
}
return userDto{
address: userAddress
}
С появлением дженериков это можно спрятать в функцию где-нибудь в /pkg
return userDto{
address: Safeder(user.Address)
}
// Safederef safety dereferencing pointer
func Safederef[T any](v *T) T {
var result T
if v != nil {
result = *v
}
return result
}
Наставление джуну, получившему свой первый оффер
Сегодня мой близкий знакомый по милости Аллаха получил свой первый оффер на роль джуниор бэкендера, вдобавок оффер оказался ощутимо выше ожидаемого. Это заставило меня запереживать, что успех может вскружить молодую голову и будут допущены неприятные ошибки. В связи с чем захотелось поделиться с ним (а заодно и с вами) парой советов по нескольким направлениям.
🕌 Религия.
Хороший оффер не может не радовать, особенно когда приложил для него множество усилий. Но не забывай про тех, кто приложил усилий больше, чем ты, но в итоге получил меньше. Результат приходит от Аллаха, не стоит приписывать его себе и восхищаться собой. Для тебя это большая ответственность, не забывай многократно благодарить Аллаха за такую возможность хорошо зарабатывать и распределяй деньги правильно. И пусть работа не отвлечет тебя от поклонения.
💻 Работа.
Бойся АллахIа в отношении своей работы. Это подразумевает ответственное отношение к своим трудовым обязанностям. Тебя может не видеть руководитель, но обязательно видит АллахI. Никогда не обманывай, ложь обречена на погибель. В случае проблем, лучше объясни, что пошло не так и какие уроки ты из этого вынес, а так же как планируешь исправлять. Старайся облегчить работу руководителю, он один, а вас много.
🤝 Коллеги.
Выстраивай открытые и искренние взаимоотношения с коллегами, это 80 процентов успеха на работе. Если тебе что-то не нравится в коллеге, выясни это 1 на 1, обосновав свою точку зрения, вежливо проясни вопрос. Никогда не обсуждай коллег за спиной. Пусть при твоем увольнении из каждой компании всей команде будет грустно от потери такого ценного и приятного коллеги.
💸 Зарплата.
Постарайся максимально не озвучивать сумму своего заработка людям. Это непросто, потому что нередко будут спрашивать напрямую, но можно вежливо уклоняться. Зарплата это не большой секрет, но людям эта информация не принесет ничего благого, максимум будет порождать вопрос "куда он столько тратит?!". Если ко
Экспериментальные пакеты
🧪 В go новые пакеты, прежде чем они будут добавлены в язык, попадают в специальный репозиторий экспериментальных пакетов golang.org/x/exp. Как сказано в описаннии данного репозитория, пакеты в нем в один прекрасный день могут попасть в язык как есть, могут попасть в измененном виде, а могут и вовсе не попасть.
Как-то раз мне нужна была функция для получения значений мапы в виде слайса. Поначалу реализовав ее вручную, я наткнулся на экспериментальный в то время пакет maps. Не желая тянуть в проект пакет, который как заявлено в любом момент может быть удален, я скопировал эталонную реализацию необходимой функции Values и положил ее к себе в проект, пометив комментарием: удалить эту функцию и использовать стандартную maps.Values после релиза go 1.21.
На днях мне опять понадобилась такая функция. Вспомнив свой коммент, я решил заодно поправить и там, ведь уже 1.22 вышел, какой там 1.21. Однако к большому удивлению, когда я полез в уже не экспериментальный, а офицальный пакет maps, необходимой функции Values там не оказалось😶 Она была исключена из пакета.
Такие вот эксперименты, с которыми нужно быть аккуратнеее. Коммент к Values я удалю, а реализацию оставлю и поделюсь с вами. Держите неудавшийся эксперимент:
func Values[M ~map[K]V, K comparable, V any](m M) []V {
r := make([]V, 0, len(m))
for _, v := range m {
r = append(r, v)
}
return r
}
Поздравляем всех мусульман с наступлением священного месяца Рамадан!
Сказал посланник Аллаха (мир ему и благословение Аллаха): "Пришёл к вам Рамадан, благословенный месяц. Аллах, Велик Он и Славен, предписал вам в течение него соблюдать пост. В этот месяц открываются врата неба и закрываются врата Ада, а на мятежных шайтанов накладываются оковы. У Аллаха в этот месяц есть ночь, (которая) лучше тысячи месяцев, и кто лишён её блага, тот, поистине, лишён (многого блага)." ан-Насаи [2106] и Ахмад [8769]
Пусть АллахI поможет нам провести этот месяц в поклонении и примет все наши благие дела! А также молим Его даровать в этот месяц победу нашим угнетенным братьям в Палестине и во всем мире!
IT коворкинг в Магасе
Последние пару месяцев работаю с коворкинга @coworking021, впечатления самые положительные: уютное рабочее пространство, компания приятных братьев.
Если вы работаете удаленно или обучаетесь и хотите делать это более продуктивно, приходите, места пока есть
➡️ http://null21.webflow.io/
P. S.
Бонус для бэкендеров: в перерывах там же могу делиться опытом и отвечать на вопросы, менторинг на минималках входит в цену
👨💻 Так ли тяжело найти первую работу в IT?
Часто от джунов можно услышать жалобы насколько тяжело стало найти первую работу: то на отклики не отвечают, то на собеседовании слишком много требуют. Но на самом ли деле джуны прикладывают все усилия, чтобы получить желанный оффер?
Что сделал бы я на месте джуна с текущими знаниями о поиске работы:
🟠Проанализировал свой день и исключил все отвлекающие факторы — фокус только на поиске работы
🟠Хорошо оформил резюме: проанализировал чужие резюме, посмотрел разборы на Ютубе и попросил ревью у эксперта
🟠Разместил его на всевозможных площадках. Есть около десятка популярных сайтов кроме hh.ru или Хабр Карьеры, каналы в Telegram и группы в ВК, сайты крупных компаний, аутсорс и аутстафф-контор
🟠Адаптировал сопроводительные письма под каждую вакансию
🟠Оформил GitHub с несколькими пет-проектами, красивым README и демо (!)
🟠Просмотрел записи интервью на Ютубе, которых там десятки
🟠Нашел топ 50 / 100 вопросов на собеседовании в своем направлении и отточил их до совершенства
🟠Прошел мок-интервью
🟠Подался на стажировки, которых тоже десятки
🟠Нашел контакты HR, менеджеров или разработчиков и написал им в личку, либо нашел еще более оригинальные способы выделиться из толпы
🟠Записался на карьерную консультацию на Хабр Карьере, Solvery, GetMentor, Эйч (есть кто делает это бесплатно)
🟠Нашел себе ментора
Как это обычно выглядит на самом деле:
🛑резюме: в графе «О себе» максимально общее описание, места работы указаны без каких-либо подробностей
🛑резюме размещено на одной-двух площадках
🛑отклики с шаблонным текстом
🛑пустой GitHub или проекты, сделанные на курсе под копирку (которые рекрутеры уже знают наизусть)
🛑не могут внятно ответить на базовые вопросы по своему стеку
IT-сфера повзрослела и не нужно сравнивать ее с ситуацией 10-летней давности, когда для устройства на работу было достаточно самых базовых знаний.
Напоследок подкину пару полезных ссылок:
🟠Пример ревью резюме
🟠Сайт EasyOffer. Автор проделал большую работу: собрал част
Таск-трекеры
В своих проектах мы с командой использовали ClickUp - довольно удобный и симпатичный трекер задач. Однако 10го сентября нам пришло оповещение, что через полтора дня наш аккаунт заблокируют из-за новых санкций. Задачи перенести я конечно не успел и в целом на сервис остался зол, но сегодня не об этом.
Работа встала и нужно было срочно искать новый продукт.
Критерии были следующие:
- Команда более 10ти человек
- Подъемная для кошелька цена (200-400р за члена команды еще куда ни шло)
- Не противный глазу интерфейс
- Без рисков, что тебя заблочат на следующий день
- Доступ без ВПН
- Наличие приложения (желательно)
Что рассмотрели?
- Weeek - один из первых приглянувшихся вариантов, советуют многие. По критериям скорее подходил, плюс была потенциальная возможность выбить скидку. Однако сильно оттолкнуло использование мата на лендинге (пусть и со звездочками) и тг-канал тоже не впечатлил. Сложилось впечатление, что за продуктом команда невыросших ребят и в итоге не решился им довериться (еще и платить)
- Yandex Tracker - один из главных предендентов. Кроме цены и еще одного неупоминаемого параметра, все остальное устраивало. В итоге не решился.
- MeisterTask - немецкий трекер. Уже и не помню, чем не устроил, пусть просто будет здесь как один из вариантов. По лендингу интерфейс чутка примитивен.
- Taiga - по названию может показаться, то российсий проект, но нет. Опенсорсная вещь, говорят довольно неплохая. Но интерфейс непривлекательный, нет приложения. Да и сложился скепсис относительно качества опенсорсных таск трекеров.
- OpenProject - еще один опенсорсный продукт. Его мы почти развернули, но возникли проблемы на этапе установки, а нам не очень то и хотелось, так что забросили.
Можно и дальше перечислять, что мы рассматривали, вариантов было много. На чем в итоге остановились расскажу в следующем посте.
P. S.
В мире как оказалось не там много хороших IT продуктов, особенно если исключить Америку и Россию. Мы привыкли видеть, насколько отстают м
Контур Толк выдал статистику встреч на работе за год (точнее с февраля, когда перешли на него). На заметку тем, кто рвется в бигтех. Не говорю, что это плохо, но стоит учитывать специфику работы.
btw, Толк это пример наверно лучшего импортозамещения из тех, что я встречал
План обучения бэкенду
Ко мне обратился любимый мне брат по вере с просьбой помочь ему с освоением бэкенда. Он уже попробовал фронтенд и в силу разных причин там не сложилось, поэтому решил попытать шансы в другом направлении.
Что имеем на входе:
- Есть знания основ программирования (что уже очень хорошо)
- Есть желание освоить бэкенд, в качестве дедлайна поставили условные 6 месяцев
- Нет возможности тратить бюджеты на большие курсы
- У меня нет свободного времени на углубленное менторство и составление проработанной программы обучения
К чему пришли по итогу консультации:
- Поставили цель: к 31-ому июля быть готовым приступить к тестовому заданию в Авито
- Составили страничку в Notion c планом необходимых к освоению материалов. Бесплатные, либо дешевые курсы (в пределах нескольких тысяч)
- Поставили задание на следующую неделю
- Договорились через неделю связаться: посмотреть, что сделано за неделю и что будем делать на следующей
Полгода пролетит очень быстро и при должном приложении усилий я уверен, что он выйдет на хороший уровень إن شاء الله. Посмотрим, что получится.
P. S.
Пока писал пост, задумался о том, что такой формат может быть интересен и другим. Если вы готовы заплатить (не мало) за подобный формат менторства, пишите. С меня план обучения, периодические ответы в чате и групповой созвон на час раз в неделю.
P. P. S.
Я пока не знаю, откуда взять этот свободный час, поэтому если не напишите, не сильно расстроюсь.
UPD
Не нашлось достаточно желающих, более не актуально.
На менторинг желающих не набралось, однако по просьбам занимающихся самостоятельно завел общий чат. Там можно задавать вопросы (отвечать буду по мере возможности) и делиться прогрессом.
Просьба вступать только реально тех, кто обучается go: (запрос ссылки в комментариях)
У меня приятная новость.
Завтра в 19:30 у нас стрим с Яхья, senior Go разработчиком, который сейчас работает в бигтех, компанию мы все знаем, но озвучивать ее мы не будем чтобы было легче с nda)
Основные темы на которые поговорим: Go, что творится с рынком и наймом, что там с ИИ
Ссылку скину позже)
https://www.youtube.com/watch?v=9dpWXxqsxKw&t=919s
Вчера состоялся интересный стрим на канале Исы Эзербаева, где в качестве гостя выступил организатор Ingternet Яхья Картоев.
Братья говорили про ИИ, язык Go, и про ситуацию с наймом.
Kiro
Amazon запустили свою IDE для vibe-кодинга Kiro. На начальном этапе она бесплатная, выглядит как хорошая возможность поэкспериментировать.
После запуска видимо было большое количество желающих, поэтому скачивание Kiro более недоступно на сайте, есть возможность только добавиться в waitlist.
Однако не спешите кусать локти. Сайт для простых пользователей, а мы не из таких, поэтому идем в терминал:
brew install --cask kiro
Проверял на маке, работает. Советую не медлить, пока не прикрыли.
الحمد لله
AI Fluency & UX
Прохожу мини-курс AI Fluency от Anthropic. Там про базовые принципы взаимодействия с генеративным AI. Советую посмотреть, очень емко.
Однако пост больше про UX, который выстроили ребята. Сам сайт и видео контент в целом очень приятно выглядят. Но удивило то, что фон на видео сделан такой же, как на сайте, и ты как будто не встроенное видео смотришь, а динамичный сайт. Как вам, дизайнеры?
Недавно провели стрим о входе в профессию тестировщика. Обсудили много интересных вопросов и конечно же не обошли стороной указание ложного опыта в резюме 🙂
Кто рассматривает эту профессию, очень советую посмотреть
https://t.me/ingternet/651
Защищаем свой .env от ИИ
После курса AI Fluency приступил к следующему: Claude Code in Action. В курсе помимо прочего объясняется тема pre/post хуков. Если коротко, через хуки можно навешивать доп обработки перед и после взаимодействия Claude Code с Claude. Что примечательно, польза pre хуков объясняется на примере возможности защиты .env файла, с приложением всего необходимого для быстрой реализации у себя на устройстве. Разве не четкое попадание в боль пользователей?
Как это работает:
- Добавляем в настройки pre хук на определенные операции, в данном случае Read и Grep, с вызовом скрипта
- Скрипт получает метаданные команды, в том числе название файла, который Claude хочет прочитать
- В скрипте смотрим, если в названии видим .env, возвращаем ошибку
Еще лучше было бы конечно сделать отдельную настройку со списком файлов, запрещенных для чтения, без необходимости самому с этим возиться, но думаю в будущем придут к чему-то подобному.
Пример скрипта и настройки приложу в комментариях, но советую пройтись по курсу самостоятельно.
Рейтинг IT работодателей 2025. Внутри разбивки по сферам, количеству сотрудников и тд. Некоторые компании довольно неожиданно видеть в топах.
Полезный список, от которого можно отталкиваться при поиске работы
https://habr.com/ru/specials/965986/
السلام عليكم ورحمة الله وبركاته
До конца приема документов на Хадж осталось совсем немного времени. Ориентир до 25го декабря.
В связи с этим хотелось бы поделиться несколькими важными мыслями:
1. Возможно на нас есть обязанность ехать уже сейчас, хотя мы думаем, что ее нет. Возможно отсутствие своего жилья не показатель отсутствия возможности, так как есть арендное. Так же возможно хорошая машина может быть показателем наличия возможности, если ее можно продать и пересесть на машину попроще. Я ничего не утверждаю, но призываю изучить этот момент каждому самому и посмотреть, насколько у него действительно нет возможности и насколько его этот вопрос искренне заботит.
2. Хадж необязательно занимает месяц, есть туры на примерно 16 дней, в которых выполняются все те же обряды. То есть можно не уходить на месяц в отпуск.
3. До конца декабря оплачивается не вся сумма, а вступительный взнос, примерно $3т
4. Возможно не стоит ждать, пока мы сможем повести всю семью, родителей и тд, а ехать хотя бы самим.
Пусть Аллахӏ позволит всем мусульманам совершить совершенный Хадж и соберет нас в Фирдаусе.
Dialang - изучай языки через диалоги
Мы работали над @dialang_app несколько лет и по милости Аллаха запустили его. Почему так долго? Не потому, что продукт сложный, а потому что жизнь непредсказуема и непроста. Главный вывод, который я сделал: большая милость от Аллаха это команда, которая не теряет мотивацию и готова идти до конца, несмотря на все возникающие спады и сложности.
Теперь немного о приложении.
Мы сделали платформу для изучения языков. На данный момент добавили ингушский и чеченский, впереди большое количество языков, в том числе малочисленных народов, которые не привыкли, что кто-то делает приложение для их исчезающего языка.
Что внутри?
Механизм обучения не изобретен с нуля, однако на наш взгляд является золотой серединой между эффективностью обучения и легкостью запуска материалов языка.
В основе лежат диалоги, отсюда и название проекта. Первый свой язык мы не учим через правила, мы учим его через диалоги, такое же обучение и в приложении. Изучаешь видео урок с диалогом, дальше закрепляешь его через систему интервальных повторений, легко, просто и إن شاء الله эффективно (главное как обычно стабильность занятий).
Что дальше?
Планы большие, но сейчас занимаемся первой волной распространения и параллельно работаем над добавлением новых языков и фич.
От тебя ждём следующих шагов:
1. Скачать
2. Пользоваться
3. Распространять
Если ещё получится дать обратную связь и подписаться на канал, будет совсем хорошо.
Сайт: https://dialang.ru
📱 Скачать в App Store
📱 Скачать в Play Market
Осторожно, мошенники
Уже второй знакомый за последнее время добавляет в группу, якобы он участвует в каком-то конкурсе и нужно проголосовать. Подозреваю, их обоих уже взломали. При попытке проголосовать вам предложат авторизоваться в телеграм и вашим аккаунтом так же завладеют злоумышленники.
Имейте в виду и предупредите родных, чтобы не потерять свой телеграм (а так же добавьте второй фактор себе и близким)