Хасан – Дорога в Айти – Telegram
Хасан – Дорога в Айти
113 subscribers
179 photos
36 videos
72 links
Путь в IT через frontend 🌐👨‍💻

Frontend-разработчик в начале карьеры.
Имею коммерческий опыт в стартапе.
Делюсь процессом развития, ошибками и практическими выводами.

Иногда стримы работы и учёбы: https://www.twitch.tv/codeforfreedom_
Download Telegram
Прошло уже почти 2 мес с момента как я записал второе видео про свой путь в айти, но так до сих пор его и не смонтировал…

Сегодня заглянул в материал и поугарал)

На этих выходных обязательно его нарежу и выложу.

А за последние 2 мес уже произошло еще много нового, так что пора записывать еще одно видео.

А вот самое первое которому уже пол года
Почему я изучаю Фронтенд разработку?


Клипы из предстоящего видео:
🔥421
Плюс мораль от сообщества 🚀

Мой вход в айти в самом разгаре. Путь это не легкий и на нем необходима поддержка. Полгода назад я наткнулся на сообщество IT-Хозяева. В нем я нашел как возможности для общения и развития в техническом направлении, так и круг людей по интересам: спорт и английский.

Я стал активной частью сообщества и начал проводить созвоны English Club и недавно начал запускать небольшие челленджи в нашем спортивном чатике.

Основатель сообщества Саня (@jointimer) сделал мне мега подгон:
Фирменная футболка IT-Хозяев
Книга: Чистый Код
И еще ништячки

Я благодарен ему за поддержку и то, что он создал такое классное сообщество.

Двигаться в одиночку было бы гораздо сложнее. Так что всем рекомендую сообщество IT-Хозяева

Всем успехов в развитии ⚡️
🐳7❤‍🔥6🔥31👍1
Спустя месяц работы над задачей 🙈

▻ изменено 133 файла
▻ добавлено 2300 строк
▻ удалено 1400

Этот MR на стартапе, где я работаю никто не будет проверять. Я его проверял сам с нейронкой и просил найти критические и важные ошибки.

По итогу нашлись ошибки именований, типов и надо было обновить тесты.

В целом думаю что прогонять MR/PR через нейронку хорошо даже если потом его будет смотреть человек. Помогает найти то, что мы недоглядели. Особенно в разделах, которые мы не трогали, но они связаны с нашими изменениями.

Я бы очень хотел чтобы мой код ревьюили опытные разрабы, думаю это сильно помогало бы расти как специалист. Но это уже совсем другая история
👍6💅3👀1
Начал проходить курс по TypeScript

Я до сих пор не проходил системно структурированные материалы по TypeScript. И в мои руки попал свежий курс по TypeScript.
(Спасибо другу за это 🤝)

В первом ролике на тему “Иерархии типов” узнал про важную особенность объектных типов (object types).

Оказывается в TypeScript при описани подобного типа:

type User =
{ name: string; }

это правильно читать следующим образом: “поле name обязательно в объекте и должно иметь тип string”. Но это не означает что объект типа User должен иметь только одно поле name.

Eсли в переменную типа User напрямую присваивать объект с лишними полями

{ name: 'Bob', age: 33 }

то будет ошибка проверки лишних свойств (“Excess Property Checks”). А если присвоить через промежуточную переменную или получить объект из сетевого запроса — ошибок нет.

Excess Property Checks срабатывает, если объект сразу присваивается переменной.

А вы знали про эту особенность?

#100DaysOfStudy День 92
🔥7🗿3
This media is not supported in your browser
VIEW IN TELEGRAM
Нашел способ как облегчить чтение статей 🗿

И можно выбирать скорость чтения.
🗿5
Задачка на понимание TypeScript

Вопрос: Почему нету подсветки ошибки в коде, но падает Run?
Ссылка на Код

——
Ключевые моменты:

1) Надо учитывать особенность что в TS объектные типы являются открытыми. И они не запрещают иметь больше полей чем мы указали.

2) Указывать явно типы не всегда есть хорошо. А еще есть такая вещь как “satisfies” которая не указывает тип, а проверяет его на совместимость.

3) Опциональный тип “:?” в объекте может вызывать проблемы при типизации параметров функции.

В этом примере он позволил принимать объект без поля verificationDate, что позволило принять тип User. От этого можно было бы защититься если в типе VerifiedUser типизировать поле вот так


verificationDate : Date | undefined


Разбор в открытом доступе - Ютуб

#100DaysOfStudy День 93
🤔4
Вчера у меня случилась странно-забавная история с LLM-агентом.

Я настраивал локализацию i18n в проекте, и в тестовой-среде (jest) локализация просто не поднималась. Подключил агента Claude (через Cursor), чтобы разобраться. В итоге мы провели около часа, вращаясь вокруг одной и той же проблемы: он несколько раз уверял, что нашёл решение, пробовал разные подходы, но результат оставался прежним. Чувствовалось, что агент заблудился в трёх соснах.

В конце концов я решил начать всё с нуля, но перед этим попробовать кое-что. Я написал ему резкое сообщение, что это его последний шанс. И неожиданно, после этого, расставляя логи по всей цепочке, он буквально за пять минут нашёл корневую причину и полностью решил задачу. Почти точно такая же ситуация у меня уже была полгода назад с gemini-cli.


И вот возникает вопрос: действительно ли давление на нейронки повышают шанс решения задачи? 🤔

Кто-нибудь ещё «угрожал» агентам и насколько это помогало? Дайте знать.

П.С.
По промту ясно что у меня знатно подгорело 💥
🤣6👀2
ТИПИЗИРОВАННЫЕ ВЫХОДНЫЕ

В эту субботу был первый созвон на курсе TypeScript с практическим разбором кода.

Планировался на 2ч, а шел все 5ч. Было интересно и вот что я подметил из нового и важного:

🔰TypeScript не следует семантическому версионированию.
Версия 4.4 и 4.5 могут быть несовместимыми 🙈

🔰Полезный паттерн: discriminated union в типе с общим литеральным полем для корректного сужения к конкретному типу

🔰Иногда на фронтенде мы можем добавить в тип поле, которого нету на беке. Как раз таки, например, если нам не приходит discriminated union поле

🔰Наши типы – это контракт. Я недавно читал в “Программист прагматик” про программирование по контракту и теперь идеи немного связались.

🔰"as const" – сужает типы до литералов. Жду когда разберем “as const satisfies Type”.

🔰"assert" – функция Node.js, которая проверяет условие и выбрасывает ошибку, если оно не выполнено


Надо будет пересмотреть созвон, и покопаться в практике.

П.С.
Моне созвон показался скучнум 🥱💤

#100DaysOfStudy День 94
👍4🔥31
⚠️ Разработчики Cursor сломали голосовой ввод

На свою голову я только что обновил Cursor, и пропал голосовой ввод в агенте. Оказывается, его сломали еще в релизе примерно от 12 декабря. Если вы им пользуетесь, пока лучше не обновляйтесь.

Голосовой ввод (микрофон) в Cursor сейчас не работает из-за бага в последних версиях. Разработчики осведомлены и работают над исправлением.


🎙 Кстати, насчет голосовых вводов.
Я начал активно пользоваться Google Gemini, и оказывается, у них язык для голосового ввода выбирается по вашему системному языку. У меня это английский, так что в Gemini приходится наговаривать текст на английском.

А в чат GPT язык определяет по речи. Говорите по-русски — он будет транскрибировать в русский, на английском — то будет английский.

Про Gemini и GPT шла речь в контексте браузеров на десктоп. В мобильных приложениях немного другая история.

А вы пользуетесь где-нибудь голосовым вводом?
🐳2🔥1
Я не собирался нетворкаться на первой IT-конференции, но что-то пошло не по плану.

Говорят главная ценность конференций – это нетворкинг. Но я, конечно же, не планировал им заниматься. Потому что кто я такой в начале карьеры? Так что рассчитывал просто посетить доклады и познакомиться с миром большого IT.

В ноябре в Казахстане проходила конференция от Яндекс Cloud с основной тематикой ML & AI. На фоне того, что из каждого угла кричат: "AI умеет всё и скоро всех заменит", мне запомнился доклад, в котором подчёркивали, что AI для бизнеса – это не silver bullet, и разбирали для каких задач он действительно подходит, а для каких нет.

Что было после докладов? Afterparty. Как раз таки, для того самого нетворкинга. Уходить сразу не хотелось, было ощущение, что если уж пришёл, то стоит прочувствовать конференцию целиком. Я решил остаться и посмотреть что да как.

Я стоял в сторонке(фото 5 🙈). Получилось так, что ко мне подошли и завели разговор. Оказалось это не так уж и страшно. После, набравшись решительности, я уже самостоятельно подошел и завел разговор. Позже к нам подключился CTO одной компании, который в итоге даже дал мне свою визитку.

Я не планировал нетворкаться, но нутро говорило: попробуй. Попробовал – и ушёл без сожалений. ✔️

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

П.С.
Конференции это также про стикеры 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥11👍4🔥21