Опасная уязвимость в npm-библиотеке is. Возможен слив данных.
Если ты работаешь с Node.js, скорее всего, библиотека is у тебя где-то валяется в зависимостях. Это утилита для проверки типов — звучит безобидно, но именно она может стать слабым звеном😱
Уязвимость найдена в методе is.callable. С её помощью можно обойти защиту и выполнить произвольный код. Проблема в том, что такая проверка используется для определения, можно ли вызвать объект — и если это используется в валидации, можно подсунуть не то, что ожидалось.
Риск прямой: через обход можно вытянуть приватные данные, выполнить инъекцию или — что хуже всего — слить логины и пароли, если логика не защищена как следует.
А таких кейсов в npm — вагон. Многие используют эту библиотеку транзитивно (через другие зависимости) и даже не знают об этом.
И да, уязвимость не новая — ей больше года, но полностью она так и не закрыта. А свежая волна внимания поднялась только сейчас.
🤯 Что делать:
• Проверь, есть ли у тебя is в зависимостях (npm ls is)
• Зафиксируй версии зависимостей
• Пересмотри валидацию и места, где доверяешь внешнему вводу
• Подумай, можно ли обойтись без этой библиотеки.
Подробнее здесь:
https://www.securitylab.ru/news/561760.php
Если ты работаешь с Node.js, скорее всего, библиотека is у тебя где-то валяется в зависимостях. Это утилита для проверки типов — звучит безобидно, но именно она может стать слабым звеном
Уязвимость найдена в методе is.callable. С её помощью можно обойти защиту и выполнить произвольный код. Проблема в том, что такая проверка используется для определения, можно ли вызвать объект — и если это используется в валидации, можно подсунуть не то, что ожидалось.
Риск прямой: через обход можно вытянуть приватные данные, выполнить инъекцию или — что хуже всего — слить логины и пароли, если логика не защищена как следует.
А таких кейсов в npm — вагон. Многие используют эту библиотеку транзитивно (через другие зависимости) и даже не знают об этом.
И да, уязвимость не новая — ей больше года, но полностью она так и не закрыта. А свежая волна внимания поднялась только сейчас.
• Проверь, есть ли у тебя is в зависимостях (npm ls is)
• Зафиксируй версии зависимостей
• Пересмотри валидацию и места, где доверяешь внешнему вводу
• Подумай, можно ли обойтись без этой библиотеки.
Подробнее здесь:
https://www.securitylab.ru/news/561760.php
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2😱2
Ответственность или невротизм?
Я работаю на проекте в одной среднего размера компании.
Первые 3 месяца у нас был руководитель отдела. Он следил за всеми it проектами. И он показал, как списывать часы за работу за неделю по пятницам. Сначала в битрикс, потом перешли в Advanta. Даже курс небольшой провели и дали контакт человека, кому писать в случае проблем. Обычное дело.
Спустя некоторое время на проект подключился PM (project manager). И началось…
Он персонально КАЖДУЮ неделю напоминает мне, что я должен списать часы. Каждую неделю. Хотя я и без него это делал.
Плюс ко всему, он заранее пишет, что надо подключиться к запланированному созвону. Всегда. Минуты за 2. Бывает сразу и в телеге и в битрикс одновременно. А если ты не дай бог задержишься на минуту, он сразу начинает пинговать в чате. Это все дико бесит. Первый PM, который так себя ведет на моей памяти.
Не знаю, с чем связана эта гипер активность по поводу и без. Вы как думаете?
Я работаю на проекте в одной среднего размера компании.
Первые 3 месяца у нас был руководитель отдела. Он следил за всеми it проектами. И он показал, как списывать часы за работу за неделю по пятницам. Сначала в битрикс, потом перешли в Advanta. Даже курс небольшой провели и дали контакт человека, кому писать в случае проблем. Обычное дело.
Спустя некоторое время на проект подключился PM (project manager). И началось…
Он персонально КАЖДУЮ неделю напоминает мне, что я должен списать часы. Каждую неделю. Хотя я и без него это делал.
Бывало, когда я в выходные списывал или в понедельник и ничего. Админам в целом все равно, они в понедельник присылают утверждение.
Плюс ко всему, он заранее пишет, что надо подключиться к запланированному созвону. Всегда. Минуты за 2. Бывает сразу и в телеге и в битрикс одновременно. А если ты не дай бог задержишься на минуту, он сразу начинает пинговать в чате. Это все дико бесит. Первый PM, который так себя ведет на моей памяти.
Не знаю, с чем связана эта гипер активность по поводу и без. Вы как думаете?
👍5🤯5
Что нужно знать программисту кроме ЯП?
Давно ничего не выкладывал, устроил себе небольшой отдых от блога, погрузился в проекты и работу. А сейчас расскажу про так называемую «базу».
Во-первых, я хочу отметить, что я всегда старался быть в первую очередь инженером. Мне абсолютно пофигу на чем писать. Да, у меня есть предпочтения. C# мне нравится своей выразительностью, конкретизированостью и статической типизацией.
Мне есть с чем сравнить. Я работал на Python, VB, JS, Go. И все равно C# на первом месте в моем рейтинге.
Во-вторых, умение работать с данными. Как и с тем ранением данных, так и непосредственно в коде. Типы данных, структуры данных, СУБД и SQL, типы хранилищ, связи между таблицами. Это еще один очень важный пункт для кодера.
В-третьих, проектирование. Нужно уметь проектировать всю систему. Не обязательно хорошо, это приходит с опытом. Но инженер-программист обязан мочь самостоятельно выделитель функциональные и не функциональные требования к ПО и сделать рабочую штуку.
В четвертых, домен. К сожалению, кроме выше перечисленных навыков, программисту придется погружаться в ту область, для которой он пишет код. С этим ничего не поделаешь. Поэтому зачастую, первая работа определяет то, в каких компаниях будет развитие в дальнейшем. Наверняка тебе уже попадались статьи, что на рынке труда все больше ожидают специализированных навыков. В банках хотят брать из других банков, ERP системы разрабатываются чуть ли не одними и теми же людьми и т.д. Так это понятно, зная домен, тебе проще принимать решения.
И в завершении, это постоянное обучение. Это навык, который необходимо постоянно поддерживать. Я не говорю про «учиться каждый день», а про регулярное повышение своих компетенций. Здорово, когда на работе ты постоянно сталкиваешься с вызовами, но рано или поздно работа перерастает в рутину. Задачи одинаковые, все понятно. В такой среде нужно самому прикладывать усилия и поддерживать мозговую пластичность. Иначе можно увязнуть и растерять свою ценность на рынке труда.
👨💻 Пиши, что думаешь.
Давно ничего не выкладывал, устроил себе небольшой отдых от блога, погрузился в проекты и работу. А сейчас расскажу про так называемую «базу».
Во-первых, я хочу отметить, что я всегда старался быть в первую очередь инженером. Мне абсолютно пофигу на чем писать. Да, у меня есть предпочтения. C# мне нравится своей выразительностью, конкретизированостью и статической типизацией.
Мне есть с чем сравнить. Я работал на Python, VB, JS, Go. И все равно C# на первом месте в моем рейтинге.
Инженер должен решать задачу, ему все равно на инструменты. Его главная задача - придумать алгоритм. Или как встроить свое решение в уже существующее. Это и есть то самое «алгоритмическое мышление». В него входит декомпозиция, постановка и аналитика. Это чуть ли не основополагающий навык в профессии разработчика.
Во-вторых, умение работать с данными. Как и с тем ранением данных, так и непосредственно в коде. Типы данных, структуры данных, СУБД и SQL, типы хранилищ, связи между таблицами. Это еще один очень важный пункт для кодера.
В-третьих, проектирование. Нужно уметь проектировать всю систему. Не обязательно хорошо, это приходит с опытом. Но инженер-программист обязан мочь самостоятельно выделитель функциональные и не функциональные требования к ПО и сделать рабочую штуку.
В четвертых, домен. К сожалению, кроме выше перечисленных навыков, программисту придется погружаться в ту область, для которой он пишет код. С этим ничего не поделаешь. Поэтому зачастую, первая работа определяет то, в каких компаниях будет развитие в дальнейшем. Наверняка тебе уже попадались статьи, что на рынке труда все больше ожидают специализированных навыков. В банках хотят брать из других банков, ERP системы разрабатываются чуть ли не одними и теми же людьми и т.д. Так это понятно, зная домен, тебе проще принимать решения.
И в завершении, это постоянное обучение. Это навык, который необходимо постоянно поддерживать. Я не говорю про «учиться каждый день», а про регулярное повышение своих компетенций. Здорово, когда на работе ты постоянно сталкиваешься с вызовами, но рано или поздно работа перерастает в рутину. Задачи одинаковые, все понятно. В такой среде нужно самому прикладывать усилия и поддерживать мозговую пластичность. Иначе можно увязнуть и растерять свою ценность на рынке труда.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
Как правильно собеседовать джунов?
Junior - это начинающий специалист, младший разработчик. Выпустился из вуза/курсов и начинает свой карьерный путь. Есть минимальный набор навыков, позволяющий работать на проекте. Крепкая база (понимает алгоритмы, знает IDE, СУБД и конечно же язык).
Получается и нужно спрашивать про это всё? Нет.
Кончено же нужно пробежаться по основам этих пунктов, чтобы убедится, что человек понимает, куда идет. Но основа - это прикладные вопросы. Спрашивать нужно то, что будет делать теоретически с поставленной задачей для его уровня.
Например для фрондендера: «На странице магазина крутится лоадер, но контент не отображается. Что делать?».
Для бэкендера:
«На странице регистрации есть отправилась форма от пользователя. Пришел ответ, что все успешно. Но данные не сохранились. Логин не проходит. Как поступишь?».
Для мобильного разраба:
«От клиента идут запросы на получение уведомлений, но пуш не появляется. Куда смотреть?»
Да, ты правильно понял, что джун чаще всего решает баги. Это факт. Понятное дело, что и фичи тоже. Но в основном ты приходишь уже на рабочий проект. И один из лучших способов быстро разобраться в проекте начинающему - фикс багов. Поэтому и вопросы стоит задавать на основе ваших задач. Знание ответов на вопросы на тему определения SOLID, что такое полиморфизм и прочая лабуда не дают гарантий, что чел справится с поставленными задачами. Выучить ответы может любой!
У меня на канале есть видео, которое показывает как классический подход в собеседованиях, так и мой вариант. В любом случае, нужно быть готовым ко всему. И к сожалению все эти глупые аббревиатуры, как «KISS» или «DRY» тоже придется учить. Есть компании, которые эту хрень в требования к вакансии вставляют. Ну не дурость?
Junior - это начинающий специалист, младший разработчик. Выпустился из вуза/курсов и начинает свой карьерный путь. Есть минимальный набор навыков, позволяющий работать на проекте. Крепкая база (понимает алгоритмы, знает IDE, СУБД и конечно же язык).
Получается и нужно спрашивать про это всё? Нет.
Кончено же нужно пробежаться по основам этих пунктов, чтобы убедится, что человек понимает, куда идет. Но основа - это прикладные вопросы. Спрашивать нужно то, что будет делать теоретически с поставленной задачей для его уровня.
Например для фрондендера: «На странице магазина крутится лоадер, но контент не отображается. Что делать?».
Для бэкендера:
«На странице регистрации есть отправилась форма от пользователя. Пришел ответ, что все успешно. Но данные не сохранились. Логин не проходит. Как поступишь?».
Для мобильного разраба:
«От клиента идут запросы на получение уведомлений, но пуш не появляется. Куда смотреть?»
Да, ты правильно понял, что джун чаще всего решает баги. Это факт. Понятное дело, что и фичи тоже. Но в основном ты приходишь уже на рабочий проект. И один из лучших способов быстро разобраться в проекте начинающему - фикс багов. Поэтому и вопросы стоит задавать на основе ваших задач. Знание ответов на вопросы на тему определения SOLID, что такое полиморфизм и прочая лабуда не дают гарантий, что чел справится с поставленными задачами. Выучить ответы может любой!
У меня на канале есть видео, которое показывает как классический подход в собеседованиях, так и мой вариант. В любом случае, нужно быть готовым ко всему. И к сожалению все эти глупые аббревиатуры, как «KISS» или «DRY» тоже придется учить. Есть компании, которые эту хрень в требования к вакансии вставляют. Ну не дурость?
🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Вот вышла эта модель нашумевшая ChatGPT 5.
Решил снова затестить ИИ в разработке сложных задач. Все равно хуйня, не работает. Уже и так распишу ему и эдак.
Как простые алгосы писать, так мы первые. Стоит только что-то реально прикладное: «Ой, я в его лишь ии модель, могу ошибаться». Copilot следом фигню городит в том же духе.
И самое смешное, когда ему указываешь на ошибки, когда он выдумывает свойства/методы у классов, которых нет, он вставляет свое любимое: «Ты абсолютно прав, извини…».
Вайбкодинг - тема! Ну да, ну да, пошел я на хер
Решил снова затестить ИИ в разработке сложных задач. Все равно хуйня, не работает. Уже и так распишу ему и эдак.
Как простые алгосы писать, так мы первые. Стоит только что-то реально прикладное: «Ой, я в его лишь ии модель, могу ошибаться». Copilot следом фигню городит в том же духе.
И самое смешное, когда ему указываешь на ошибки, когда он выдумывает свойства/методы у классов, которых нет, он вставляет свое любимое: «Ты абсолютно прав, извини…».
Вайбкодинг - тема! Ну да, ну да, пошел я на хер
👍11💯8
Мне уже несколько раз предлагали снять коммерческий подкаст разные IT компании. Честно скажу, это хорошая возможность для развития блога.
Накидайте темы, которые реально было бы интересно послушать. Не хочу говно снимать
Накидайте темы, которые реально было бы интересно послушать. Не хочу говно снимать
🔥7❤1
Изучение ИИ чатов в реальной работе продолжается.
Буквально вчера поставил задачу:
Это не промт. Промт содержал детальное описание проблемы с кодом и несколько сообщений.
CharGPT в целом дал правильное напутствие. Проблема в пересоздание GL контекста для GLWpfControl. Нужно освободить ресурсы и снова запустить, так как при откреплении меняется родительский контрол и контекст меняется.
Ну вот же. Давай код, верно же отвечаешь. Но не спешим радоваться…
С чего то взял, что есть метод Stop. Видимо он решил, что если при инициализации контрола используется метод Start, то видимо есть и стоп. А вот хер вам. Нет такого.
Я ему конечно же об этом сказал. И гпт запустил более длительную обработку вопроса. Думал думал. И выдал опять фигню.
В итоге, я прикинул к носу и решил, что если мы хотим освободить ресурсы, значит скорее всего этот контрол реализует IDisposable. И у него будет метод Dispose. Так и вышло. Все заработало.
Если бы я на веру брал бы код от ИИ ничего бы не получилось. Надо помнить, что это всего лишь подбор подходящих по контексту слов.
Так что не боимся, работы мы не лишимся. На наш век хватит👍
Буквально вчера поставил задачу:
Приложение рушится, если 3d окно открепляется от панели в плавающее окно. Ошибка в использовании не существующей памяти. Почему так и что делать?
Это не промт. Промт содержал детальное описание проблемы с кодом и несколько сообщений.
CharGPT в целом дал правильное напутствие. Проблема в пересоздание GL контекста для GLWpfControl. Нужно освободить ресурсы и снова запустить, так как при откреплении меняется родительский контрол и контекст меняется.
Ну вот же. Давай код, верно же отвечаешь. Но не спешим радоваться…
С чего то взял, что есть метод Stop. Видимо он решил, что если при инициализации контрола используется метод Start, то видимо есть и стоп. А вот хер вам. Нет такого.
Я ему конечно же об этом сказал. И гпт запустил более длительную обработку вопроса. Думал думал. И выдал опять фигню.
В итоге, я прикинул к носу и решил, что если мы хотим освободить ресурсы, значит скорее всего этот контрол реализует IDisposable. И у него будет метод Dispose. Так и вышло. Все заработало.
Если бы я на веру брал бы код от ИИ ничего бы не получилось. Надо помнить, что это всего лишь подбор подходящих по контексту слов.
Его можно в целом, если очень грубо, сравнить с талантливым программистом, который много чего знает в теории по книгам без реального опыта и пытается писать код на листе бумаги вручную, принимая ТЗ на слух.
Так что не боимся, работы мы не лишимся. На наш век хватит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2💯2
Очень жалко выкидывать код, когда вбухал в него кучу времени.
Сидишь, пыхтишь несколько дней, а потом выясняется: «ну всё, надо откатить назад» или вообще всё переделать. И заранее не всегда угадаешь.
Первый раз это прям больно: злость, торг, отрицание, вся эта классика. А потом с опытом начинаешь воспринимать проще — ну рабочий момент, бывает.
Вот прямо сегодня на проекте поймал такой кейс:
Есть таблица, данные грузятся по 500 записей пачкой (lazy loading, стандартная практика). В библиотеке для отображения данных сразу шли фильтры, но они работают только по тем данным, которые уже подгрузились. То есть — фильтруешь либо первые 500, либо те, что подскроллил. Короче, неудобно.
Я заморочился: сделал свои фильтры, чтобы ходили напрямую в БД. Красота, работает! Но заказчик захотел «все записи сразу, без скролла». А это, на минуточку, полмиллиона строк😳
Для теста нагенерил 100к и попробовал. Загрузка — минута. Мои фильтры, понятное дело, тоже начинают тормозить, потому что запрос уже идёт по всей базе.
Ради интереса вернулся к стандартным фильтрам — и оказалось, что они работают быстрее. Похоже, там есть кэширование применённых фильтров. На 100к они тоже думают секунд 10, но это всё равно лучше, чем минута.
Теперь думаю, откатываться ли назад или оставить свой вариант на всякий. В любом случае всё равно надо дать заказчику попробовать и пусть сам решает. А мой код… полежит в сторонке, вдруг ещё пригодится🙃
Было?
Сидишь, пыхтишь несколько дней, а потом выясняется: «ну всё, надо откатить назад» или вообще всё переделать. И заранее не всегда угадаешь.
Первый раз это прям больно: злость, торг, отрицание, вся эта классика. А потом с опытом начинаешь воспринимать проще — ну рабочий момент, бывает.
Вот прямо сегодня на проекте поймал такой кейс:
Есть таблица, данные грузятся по 500 записей пачкой (lazy loading, стандартная практика). В библиотеке для отображения данных сразу шли фильтры, но они работают только по тем данным, которые уже подгрузились. То есть — фильтруешь либо первые 500, либо те, что подскроллил. Короче, неудобно.
Я заморочился: сделал свои фильтры, чтобы ходили напрямую в БД. Красота, работает! Но заказчик захотел «все записи сразу, без скролла». А это, на минуточку, полмиллиона строк
Для теста нагенерил 100к и попробовал. Загрузка — минута. Мои фильтры, понятное дело, тоже начинают тормозить, потому что запрос уже идёт по всей базе.
Ради интереса вернулся к стандартным фильтрам — и оказалось, что они работают быстрее. Похоже, там есть кэширование применённых фильтров. На 100к они тоже думают секунд 10, но это всё равно лучше, чем минута.
Теперь думаю, откатываться ли назад или оставить свой вариант на всякий. В любом случае всё равно надо дать заказчику попробовать и пусть сам решает. А мой код… полежит в сторонке, вдруг ещё пригодится
Было?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10💯5
Media is too big
VIEW IN TELEGRAM
На прошлой неделе выпустил большое обновление одного из моих проектов "NVP Studio".
Я чуть не треснул, пока делал этот куб навигации. Но получилось хорошо, мне нравится. Да, работы еще много, но все равно делаю понемногу и не бросаю. Плюс в последнее время началась какая-то новая волна интереса к этой софтине, что очень радует.
Кстати, мой NVP вполне можно использовать в качестве платформы для обучения программированию. Очень удобно сразу видеть результат в виде 3D модели. Так нагляднее и веселее.
Если интересно последить за развитием, вот ссылка на пост со списком обновлений на официальном канале:
Обновление NVP Studio
Сайт проекта:
nvp-studio.ru
Я чуть не треснул, пока делал этот куб навигации. Но получилось хорошо, мне нравится. Да, работы еще много, но все равно делаю понемногу и не бросаю. Плюс в последнее время началась какая-то новая волна интереса к этой софтине, что очень радует.
Кстати, мой NVP вполне можно использовать в качестве платформы для обучения программированию. Очень удобно сразу видеть результат в виде 3D модели. Так нагляднее и веселее.
Если интересно последить за развитием, вот ссылка на пост со списком обновлений на официальном канале:
Обновление NVP Studio
Сайт проекта:
nvp-studio.ru
🔥11❤5👍3
Одна из моих сильных сторон - делать проекты на полном альтруизме.
Мы сейчас проходим акселератор по одному из моих стартапов. И куратор задал вопрос:
«А как вы поддерживаете проект? Как деньги зарабатываете?».
Мы ответили, что никак. Проект бесплатный. Зарабатывать планируем на услугах вокруг этого приложения. Доп модули, обучение и т.д.
После этой фразы, нам сказали, чтобы мы не вздумали на финальной сессии перед инвесторами такое ляпнуть😅
Но во всем этом есть одна проблема. Мой продукт не может быть платным по своей сути. Он и так аналог других бесплатных приложений. И если делать его платным, то его можно сразу и похоронить.
👨💻 Делаю я его в свободное время и чаще всего по вдохновению уже второй год. И только сейчас наконец-то у людей начал появляться интерес. Пошли заявки на использование, компании интересуются. Вот в акселераторе что-то получается. Чуть позже напишу по результатам. Очень надеюсь, что из этого что-то выйдет. Вперед к успеху!
Мы сейчас проходим акселератор по одному из моих стартапов. И куратор задал вопрос:
«А как вы поддерживаете проект? Как деньги зарабатываете?».
Мы ответили, что никак. Проект бесплатный. Зарабатывать планируем на услугах вокруг этого приложения. Доп модули, обучение и т.д.
После этой фразы, нам сказали, чтобы мы не вздумали на финальной сессии перед инвесторами такое ляпнуть
Но во всем этом есть одна проблема. Мой продукт не может быть платным по своей сути. Он и так аналог других бесплатных приложений. И если делать его платным, то его можно сразу и похоронить.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍2
Провел очередной эксперимент с ИИ чатом.
Мне нужен был сервис, которого еще не было в проекте. Сделал интерфейс, расписал какие методы у него должны быть, подготовил классы. И попытался сделать сервис ПОЛНОСТЬЮ вайбкоддингом. Все же так верещат, что это прям магия. Расписал промт, описал задачу максимально подробно. Код шустро появился на экране и я добавил его к себе в проект. Начал тестить. И… не работает🤨
Начал разбираться. Алгоритм норм, вроде все как надо. Но посмотрев внимательно, нашел несколько багов. Тут поправил, там поправил. Запустил. Стало лучше, но не работает. В итоге задолбался дебажить и погнал писать сам. Решил придерживаться того же подхода, но с изменениями. В итоге все получилось. Сделал быстро и как мне надо. Да, как я хорош😎
ИИ делает норм небольшие фрагменты. Что-то большое делает с косяками. И честно говоря, с вайбкодингом программирование еще больше превращается в дебаг. Словно ты в легаси бесконечно копаешься. А весь прикол делать нулевые сервисы - это свобода. Пишешь, как хочешь. А когда ИИ сгенерил код, ты опять погружаешься в дебри изучения логики лапши. Что может сильно бесить.
Еще раз убедился, что уметь читать код и понимать его смысл нужно в любом случае. А с ИИ этот навык становится еще более важным.
Мне нужен был сервис, которого еще не было в проекте. Сделал интерфейс, расписал какие методы у него должны быть, подготовил классы. И попытался сделать сервис ПОЛНОСТЬЮ вайбкоддингом. Все же так верещат, что это прям магия. Расписал промт, описал задачу максимально подробно. Код шустро появился на экране и я добавил его к себе в проект. Начал тестить. И… не работает
Начал разбираться. Алгоритм норм, вроде все как надо. Но посмотрев внимательно, нашел несколько багов. Тут поправил, там поправил. Запустил. Стало лучше, но не работает. В итоге задолбался дебажить и погнал писать сам. Решил придерживаться того же подхода, но с изменениями. В итоге все получилось. Сделал быстро и как мне надо. Да, как я хорош
ИИ делает норм небольшие фрагменты. Что-то большое делает с косяками. И честно говоря, с вайбкодингом программирование еще больше превращается в дебаг. Словно ты в легаси бесконечно копаешься. А весь прикол делать нулевые сервисы - это свобода. Пишешь, как хочешь. А когда ИИ сгенерил код, ты опять погружаешься в дебри изучения логики лапши. Что может сильно бесить.
Еще раз убедился, что уметь читать код и понимать его смысл нужно в любом случае. А с ИИ этот навык становится еще более важным.
Fun fact.
Вы вообще помните, как 3 года назад пророчили, что программисты станут не нужны в течение 5 лет?
Кажется я уже это слышал. Про бухгалтеров. Лет 20 назад😄
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤3🔥1🙊1
Умение общаться с заказчиком - один из самых важных навыков работы программиста.
По сути мы переносим пожелания будущего пользователя на формализованный список упорядоченных действий. И чем лучше мы декомпозируем сложную систему, тем качественнее будет решение.
Поэтому никогда не думайте с точки зрения выбора языка программирования. На любом языке можно сделать все. Самая популярная группа ЯП - это Си-подобные. Поэтому зная, к примеру, C#, тебе автоматически становятся доступны JS, Python, Go, Java и другие. Так что не боимся менять стэк, развиваетесь друзья, пока можете!
По сути мы переносим пожелания будущего пользователя на формализованный список упорядоченных действий. И чем лучше мы декомпозируем сложную систему, тем качественнее будет решение.
Видели эти всратые тесты на проф ориентацию в айти? Они то по сути проверяли, сможете ли выбрать лучший вариант действий из вариантов на «как приготовить яичницу».
Тесты эти полная фигня, если честно. Но смысл понятен.
Поэтому никогда не думайте с точки зрения выбора языка программирования. На любом языке можно сделать все. Самая популярная группа ЯП - это Си-подобные. Поэтому зная, к примеру, C#, тебе автоматически становятся доступны JS, Python, Go, Java и другие. Так что не боимся менять стэк, развиваетесь друзья, пока можете!
P.S. Картинку сделал по промту:
Нарисуй программиста, который знает очень много языков программирования. У него большая голова, он доволен и крут. Купается в деньгах, а за спиной Вселенная
👍11❤6
В последнее время прям достали все айтишные блогеры.
Темы у всех одни и те же. Я для себя выделил топ-3:
1. ИИ
2. Джуны
3. Тупые HR
Про первое - ладно. Хайп, куда ж без него. Думаю, через год-два уляжется. Ситуация очень напоминает «пузырь доткомов» в конце прошлого века. Тогда инвесторы вливали деньги во всё подряд, лишь бы у компании был сайт. Что именно продаёшь — не важно. Главное, что ты в интернете. Итог - куча банкротств и резкое похмелье. Знакомо, да?
Тема номер два. Джуны.🥱
Сколько можно… Эти проблемы обсосали уже сто раз. Да, джунам тяжело. Так было всегда. Просто сейчас из-за разрыва в зарплатах сюда ломятся все подряд, даже те, кто «а чё, прикольно, попробую». Вот и имеем перегрев.
Ну и третья. HR.
Раньше они занимались ровно своим делом: отбор по общим характеристикам, оформление документов, ввод в курс дела. Сейчас им навесили ещё и мини-техсобесы. Всё из-за темы номер 2 - слишком много случайных людей на входе. Вот и выкручиваются. Технорям это, конечно, не нравится. Но что делать?😡
Я сам пока взял паузу в съёмках. Поднадоело. Сейчас у меня завал по проектам. Потому что бабки делаю именно на кодинге. Плюс дополнительно консультирую и обучаю. Пока индивидуально - у меня занимается 2 человека. Может, возьму ещё парочку, но много не потяну. Поэтому редко афиширую. Кому надо - пишите.
Планы на контент есть. Думаю вернуться к съёмкам, хочется чего-то по-настоящему интересного. Один из стабильных вариантов - новый mock-собес. Нужен мидл C#, который готов сниматься и умеет говорить на камеру. Так что если узнал себя - отзовись👋
А вы тоже устали от одинакового IT-контента?
Темы у всех одни и те же. Я для себя выделил топ-3:
1. ИИ
2. Джуны
3. Тупые HR
Про первое - ладно. Хайп, куда ж без него. Думаю, через год-два уляжется. Ситуация очень напоминает «пузырь доткомов» в конце прошлого века. Тогда инвесторы вливали деньги во всё подряд, лишь бы у компании был сайт. Что именно продаёшь — не важно. Главное, что ты в интернете. Итог - куча банкротств и резкое похмелье. Знакомо, да?
Тема номер два. Джуны.
Сколько можно… Эти проблемы обсосали уже сто раз. Да, джунам тяжело. Так было всегда. Просто сейчас из-за разрыва в зарплатах сюда ломятся все подряд, даже те, кто «а чё, прикольно, попробую». Вот и имеем перегрев.
Ну и третья. HR.
Раньше они занимались ровно своим делом: отбор по общим характеристикам, оформление документов, ввод в курс дела. Сейчас им навесили ещё и мини-техсобесы. Всё из-за темы номер 2 - слишком много случайных людей на входе. Вот и выкручиваются. Технорям это, конечно, не нравится. Но что делать?
Я сам пока взял паузу в съёмках. Поднадоело. Сейчас у меня завал по проектам. Потому что бабки делаю именно на кодинге. Плюс дополнительно консультирую и обучаю. Пока индивидуально - у меня занимается 2 человека. Может, возьму ещё парочку, но много не потяну. Поэтому редко афиширую. Кому надо - пишите.
Планы на контент есть. Думаю вернуться к съёмкам, хочется чего-то по-настоящему интересного. Один из стабильных вариантов - новый mock-собес. Нужен мидл C#, который готов сниматься и умеет говорить на камеру. Так что если узнал себя - отзовись
А вы тоже устали от одинакового IT-контента?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤5❤🔥1
В очередной раз наткнулся на чувака, который чисто ради эксперимента придумал себе фейковое резюме - 10 лет опыта в Яндексе, пару громких проектов, и нейросетка, которая за него отвечает на собесах. Итог - оффер. 😐
И вот что я думаю.
Такими действиями всё только ухудшается.
Недавно на конференции для рекрутеров уже официально сказали: начали активно звать на оффлайн собесы. Всё больше вакансий - офис или гибрид. Удалёнки становится меньше. И причина именно в этом - в массовом наплыве людей, которые «залетают ради спортивного интереса».
Чтобы вы понимали, схема у них простая:
устроился > месяц «работаешь» > увольняешься (или тебя увольняют) > забрал деньги > повторил.
И это в основном в IT, потому что в других сферах просто нет таких зарплат.
Я не против, когда человек приукрашивает, чтобы лучше себя продать. Это нормально. Если ты реально шаришь - справишься.
Но вот эти персонажи, кто приходит «быстро поднять денег» - бесят. Потому что страдают все. Даже я со своим опытом выгляжу хуже на фоне таких «суперспецов». И тоже приходится выкручиваться.
Сейчас у меня проблем с поиском работы и собесами нет. В начале года после сокращения я быстро получил 3 оффера и сразу вышел на новое место. Но резюме все равно нужно держать в тонусе и описание должно быть в тренде, как ни крути...
И вот что я думаю.
Такими действиями всё только ухудшается.
Недавно на конференции для рекрутеров уже официально сказали: начали активно звать на оффлайн собесы. Всё больше вакансий - офис или гибрид. Удалёнки становится меньше. И причина именно в этом - в массовом наплыве людей, которые «залетают ради спортивного интереса».
Чтобы вы понимали, схема у них простая:
устроился > месяц «работаешь» > увольняешься (или тебя увольняют) > забрал деньги > повторил.
И это в основном в IT, потому что в других сферах просто нет таких зарплат.
Я не против, когда человек приукрашивает, чтобы лучше себя продать. Это нормально. Если ты реально шаришь - справишься.
Но вот эти персонажи, кто приходит «быстро поднять денег» - бесят. Потому что страдают все. Даже я со своим опытом выгляжу хуже на фоне таких «суперспецов». И тоже приходится выкручиваться.
Если хочешь нормально оформить резюме и наконец-то пройти автофильтры - я помогаю с этим.
Вот мой бот @cv_ready_bot
Там есть кнопка "Создать крутое резюме". Заполняешь анкету и прикладываешь резюме (лучше в формате word). Затем тариф и я с тобой свяжусь!
Сейчас у меня проблем с поиском работы и собесами нет. В начале года после сокращения я быстро получил 3 оффера и сразу вышел на новое место. Но резюме все равно нужно держать в тонусе и описание должно быть в тренде, как ни крути...
🤯9😁4😱3💯3
Продолжение истории про загрузку данных в таблицу.
На проекте есть большая таблица с данными. По мере Postrgress она среднего размера (до 500к записей), но ее нужно подгрузить на фронт (у нас сейчас WPF). И конечно же все сразу загрузить нельзя. Иначе все встанет. И это даже не связано с конкретное WPF таблицами. На React тоже не стоит это дело выводить, так как на отрисовку фронта требуется время и память. Так что чем больше визуальных компонентов, тем тяжелее будет клиенту.
Обычно это решается порциональной загрузкой. Загружаем по 500 штук и добавляем событие на скролл вниз. Если дошли до конца порции, подгружаем еще. Но заказчик встал в позу:
"Мы работаем в другом приложении. Там все сразу выводится, как в экселе. Хотим так же и тут. Нужно чтобы скролл бар позволял перемещаться по всей таблице".
Да бля...
Сейчас в таблице уже есть свой тип данных для отображения одной строки. Он массивный и нагруженный по функциям. Уже очень много зависимостей от него в других местах приложения. Плюс надо помнить, что эта визуальная таблица отображает данные из 2 совершенно разделенных таблиц из БД. Что вызывает определенные трудности.
Теперь нужно сделать совершенно другой. Общий тип. Пообщались с коллегой, решили делать общий запрос через представление (SQL View). Используем оператор UNION ALL и сливаем 2 таблицы в одну.
Затем добавляем параметр OFFSET, чтобы скролл позволял перемещаться по таблице так, словно она вся уже загружена. И скролл бар делаем отдельно и добавляем его к DataGrid. А родной скрываем. И вуаля.
Осталась одна проблема - ручной скроллинг с помощью колеса мыши и стрелок. Нужно продумать механику, как имитировать бесшовную подгрузку данных🤯
Пока пишу этот пост, пришла мысль сделать отслеживание прокрутки и кастомного скролла. Крутим колесо, скролл движется за ним. Заранее подружаем с запасом и как только доходим до 70% от подруженных данных, подтягиваем еще.
Единственное не придумал, как подниматься наверх.
Как-то так🙃
На проекте есть большая таблица с данными. По мере Postrgress она среднего размера (до 500к записей), но ее нужно подгрузить на фронт (у нас сейчас WPF). И конечно же все сразу загрузить нельзя. Иначе все встанет. И это даже не связано с конкретное WPF таблицами. На React тоже не стоит это дело выводить, так как на отрисовку фронта требуется время и память. Так что чем больше визуальных компонентов, тем тяжелее будет клиенту.
Обычно это решается порциональной загрузкой. Загружаем по 500 штук и добавляем событие на скролл вниз. Если дошли до конца порции, подгружаем еще. Но заказчик встал в позу:
"Мы работаем в другом приложении. Там все сразу выводится, как в экселе. Хотим так же и тут. Нужно чтобы скролл бар позволял перемещаться по всей таблице".
Да бля...
Сейчас в таблице уже есть свой тип данных для отображения одной строки. Он массивный и нагруженный по функциям. Уже очень много зависимостей от него в других местах приложения. Плюс надо помнить, что эта визуальная таблица отображает данные из 2 совершенно разделенных таблиц из БД. Что вызывает определенные трудности.
Теперь нужно сделать совершенно другой. Общий тип. Пообщались с коллегой, решили делать общий запрос через представление (SQL View). Используем оператор UNION ALL и сливаем 2 таблицы в одну.
Затем добавляем параметр OFFSET, чтобы скролл позволял перемещаться по таблице так, словно она вся уже загружена. И скролл бар делаем отдельно и добавляем его к DataGrid. А родной скрываем. И вуаля.
Осталась одна проблема - ручной скроллинг с помощью колеса мыши и стрелок. Нужно продумать механику, как имитировать бесшовную подгрузку данных
Пока пишу этот пост, пришла мысль сделать отслеживание прокрутки и кастомного скролла. Крутим колесо, скролл движется за ним. Заранее подружаем с запасом и как только доходим до 70% от подруженных данных, подтягиваем еще.
Единственное не придумал, как подниматься наверх.
Как-то так
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤2👍1
Короче. Все уже в курсе, что я пишу свою Lowcode платформу NVP-studio. На ней можно писать программы на нодах. И внутри сами ноды создаются на C# и Python.
По мере роста скрипта раздувается большая мешанина из "удона", которую трудно поддерживать. И возникла идея сделать инструмент, который проанализирует все блоки и создать один Python код на их основе. Что позволит быстро накидывать программу блоками, а потом переводить его в лаконичный и удобный для расширения код.
Как вам идея? Я чет прям загорелся и мне дико нравится эта мысль. Хочу назвать эту фичу "Сделай красиво"🙃
По мере роста скрипта раздувается большая мешанина из "удона", которую трудно поддерживать. И возникла идея сделать инструмент, который проанализирует все блоки и создать один Python код на их основе. Что позволит быстро накидывать программу блоками, а потом переводить его в лаконичный и удобный для расширения код.
Как вам идея? Я чет прям загорелся и мне дико нравится эта мысль. Хочу назвать эту фичу "Сделай красиво"
P.S. На картинке реальный скрипт по созданию моста в моей приложуне. Чуть позже будет статья с разбором этого проекта!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥11❤5😁1🤯1
Делюсь небольшим инсайтом по моему проекту NVP.
Вчера вечером копался в коде и нашел интересную штуку.
При создании любого 3D-объекта во время выполнения скрипта происходило обновление всей сцены.
Оказалось, что при вызове методов создания объектов выставлялся флаг NeedUpdate = true,
а у меня при его изменении сразу срабатывал принудительный апдейт сцены.
А теперь внимание: сама сцена обновляется путем очищения и последовательного вызова функции Render у всех созданных объектов.
(Если что, это не костыль, так реально делается).
В итоге при пошаговом создании объектов скрипт каждый раз заново перерендеривал всё, что уже есть.
Получался эффект "постепенного возведения" - не баг, а фича😅
Но это сильно тормозило выполнение. А скорость для моего движка критически важна.
Переделал логику: теперь обновление происходит только в конце выполнения скрипта, а не после каждого вызова.
Результат - всё стало работать заметно быстрее.
Вчера вечером копался в коде и нашел интересную штуку.
При создании любого 3D-объекта во время выполнения скрипта происходило обновление всей сцены.
Оказалось, что при вызове методов создания объектов выставлялся флаг NeedUpdate = true,
а у меня при его изменении сразу срабатывал принудительный апдейт сцены.
А теперь внимание: сама сцена обновляется путем очищения и последовательного вызова функции Render у всех созданных объектов.
(Если что, это не костыль, так реально делается).
В итоге при пошаговом создании объектов скрипт каждый раз заново перерендеривал всё, что уже есть.
Получался эффект "постепенного возведения" - не баг, а фича
Но это сильно тормозило выполнение. А скорость для моего движка критически важна.
Переделал логику: теперь обновление происходит только в конце выполнения скрипта, а не после каждого вызова.
Результат - всё стало работать заметно быстрее.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍3