Как изначально назывался язык программирования Java?
Anonymous Quiz
15%
Lava 🔥🌋
6%
Nova
45%
Oak 🌳
23%
CoffeeScript ☕️
2%
GreenTea 🍵
5%
С --
3%
ByteBrew 🧑💻🍺
👍4😱2🥴2
This media is not supported in your browser
VIEW IN TELEGRAM
А я тут рилсик запилил, и в мотиваторы подался 🌚
❤10🔥7👍3
Я как-то снимал видос про докер на YouTube.
И недавно пришел чел, и сказал:
- Непонятно, поясни за эти файлы (см скрин)
А мне лень все это расписывать, тем более, что я когда-то делал урок на эту тему в своем курсе.
Поделился с ним уроком. С вами тоже поделюсь, вдруг кому полезно будет.
Урок в коментах.
Ну и да, у этого канала чат есть, где можно любые вопросы по джава задавать. Если я шарю то отвечу, если не шарю может кто-нибудь поумнее ответит 😃
Залетайте короче
И недавно пришел чел, и сказал:
- Непонятно, поясни за эти файлы (см скрин)
А мне лень все это расписывать, тем более, что я когда-то делал урок на эту тему в своем курсе.
Поделился с ним уроком. С вами тоже поделюсь, вдруг кому полезно будет.
Урок в коментах.
Ну и да, у этого канала чат есть, где можно любые вопросы по джава задавать. Если я шарю то отвечу, если не шарю может кто-нибудь поумнее ответит 😃
Залетайте короче
🔥5👍4❤🔥3
Самый важный навык программиста.
Привет! В этом посте поделюсь своими мыслями по следующим вопросам:
1. Что самое сложное в работе программиста?
2. Какой скилл является самым важным?
3. Куда расти: вглубь или вширь?
В программировании способов реализовать какую-то задачу — вагон и маленькая тележка.
И представьте: собралась команда разработчиков, и им нужно реализовать какой-то большой проект. В этой команде могут быть как новички, так и древние мамонты. Новички учились по туториалам и никаких других способов реализовать задачу не знают. Ну а древние мамонты могут быть тоже разные. У одних расцвет сил пришёлся на времена Java 1.0, и в голове могут быть крутые, но чуть устаревшие знания. А могут быть и крутые мамонты, которые решают задачу элегантно: ты смотришь на их код и думаешь: «Боже, как круто! Как круто и непонятно».
Всё это многообразие умов как-то договорилось программировать совместно. Вырабатываются некоторые договорённости и гайдлайны: начиная с выбора фреймворков, заканчивая тем, парсить ли DTO в сервисах или всё-таки в контроллерах.
Проект живёт, кодовая база растёт, люди уходят и приходят.
И в какой-то момент появляешься ты. Ты проходишь онбординг, настраиваешь IDE, получаешь доступы, скачиваешь проект и такой:
«Господи, что это такое?!»
Ты видишь столько кода и не понимаешь — это говно или так надо по объективным причинам. А если ты новичок, то смотришь на говно и думаешь, что это апогей алгоритмической мысли.
И если ты не сидел в проекте со времён распада СССР, то самым сложным в твоей работе будет одно:
Разобраться, как это говно работает и как бы тебе вклинить свой код, не нарушая принятых в команде договорённостей.
И чем сложнее задача, тем больше времени придётся тратить именно на это: на чтение и понимание чужого кода. Умение разобраться в чужом коде — это навык, который будет использоваться 88% твоего рабочего времени.
Это самое сложное, но, на мой взгляд, не самое важное в работе программиста.
Что же является самым важным?
Написать свой код так, чтоб спустя годы тебя не прокляли. А ещё лучше — чтоб не прокляли в тот же миг.
Тебе может показаться, что твой код проходит ревью, и, как бы, «старшие коллеги» берут часть ответственности на себя за то нечто, что породил ты в больном бреду, пытаясь понять, как оно всё тут принято. Но это далеко не всегда так. Ревью делают такие же люди как и ты. И ты будешь делать ревью и ловить себя на мысли, что хочется поставь аппрув "ради галочки", вроде бы все тут хорошо....
Если ты программируешь уже какое-то время и даже писал пет-проекты, то, возможно, замечал: возвращаясь спустя время к своим старым проектам, ты задумчиво чешешь свою репу и думаешь: «Господи, это же я писал, почему я ничего не понимаю?!». А это только ты, в маленьком проекте. Помножь эту ситуацию на бесконечность — и получишь некоторое (хоть и не полное) представление о том, что тебя ждёт, если ты не научишься писать код МАКСИМАЛЬНО ПРОСТО И ПОНЯТНО.
Это и есть самое важное — уметь писать понятный код. Не только тебе, но и другим людям.
Как к этому прийти?
Нет быстрого способа. Нужно породить тонну говна и с опытом обрести понимание того, «что такое хорошо, а что такое плохо».
Ну и куда расти?
Знаешь, на свете есть столько всего помимо Спринга, что ты бы удивился. Такое многообразие разных решений: баз данных, брокеров сообщений, фреймворков. Что можно до пенсии пытаться освоить их все и так и не успеть сделать это.
Но это и не нужно. Благо, несмотря на всё это многообразие, под капотом везде заложены одни и те же принципы, которые придумали «когда наши родители были молодыми» люди, которые в разы умнее самого умного твоего знакомого.
Если у тебя получится хорошо (плюс-минус) разобраться в какой-то одной технологии, то освоить другие не составит большого труда. Поэтому моё имхо: не нужно бросаться учить всё подряд. Всё не выучить. И не угадать, что надо учить.
Сосредоточься на чём-то одном и долби в эту точку. А остальное поймёшь по ходу.
Всем добра, хорошей пятницы и прекрасных выходных!
Привет! В этом посте поделюсь своими мыслями по следующим вопросам:
1. Что самое сложное в работе программиста?
2. Какой скилл является самым важным?
3. Куда расти: вглубь или вширь?
В программировании способов реализовать какую-то задачу — вагон и маленькая тележка.
И представьте: собралась команда разработчиков, и им нужно реализовать какой-то большой проект. В этой команде могут быть как новички, так и древние мамонты. Новички учились по туториалам и никаких других способов реализовать задачу не знают. Ну а древние мамонты могут быть тоже разные. У одних расцвет сил пришёлся на времена Java 1.0, и в голове могут быть крутые, но чуть устаревшие знания. А могут быть и крутые мамонты, которые решают задачу элегантно: ты смотришь на их код и думаешь: «Боже, как круто! Как круто и непонятно».
Всё это многообразие умов как-то договорилось программировать совместно. Вырабатываются некоторые договорённости и гайдлайны: начиная с выбора фреймворков, заканчивая тем, парсить ли DTO в сервисах или всё-таки в контроллерах.
Проект живёт, кодовая база растёт, люди уходят и приходят.
И в какой-то момент появляешься ты. Ты проходишь онбординг, настраиваешь IDE, получаешь доступы, скачиваешь проект и такой:
«Господи, что это такое?!»
Ты видишь столько кода и не понимаешь — это говно или так надо по объективным причинам. А если ты новичок, то смотришь на говно и думаешь, что это апогей алгоритмической мысли.
И если ты не сидел в проекте со времён распада СССР, то самым сложным в твоей работе будет одно:
Разобраться, как это говно работает и как бы тебе вклинить свой код, не нарушая принятых в команде договорённостей.
И чем сложнее задача, тем больше времени придётся тратить именно на это: на чтение и понимание чужого кода. Умение разобраться в чужом коде — это навык, который будет использоваться 88% твоего рабочего времени.
Это самое сложное, но, на мой взгляд, не самое важное в работе программиста.
Что же является самым важным?
Написать свой код так, чтоб спустя годы тебя не прокляли. А ещё лучше — чтоб не прокляли в тот же миг.
Тебе может показаться, что твой код проходит ревью, и, как бы, «старшие коллеги» берут часть ответственности на себя за то нечто, что породил ты в больном бреду, пытаясь понять, как оно всё тут принято. Но это далеко не всегда так. Ревью делают такие же люди как и ты. И ты будешь делать ревью и ловить себя на мысли, что хочется поставь аппрув "ради галочки", вроде бы все тут хорошо....
Если ты программируешь уже какое-то время и даже писал пет-проекты, то, возможно, замечал: возвращаясь спустя время к своим старым проектам, ты задумчиво чешешь свою репу и думаешь: «Господи, это же я писал, почему я ничего не понимаю?!». А это только ты, в маленьком проекте. Помножь эту ситуацию на бесконечность — и получишь некоторое (хоть и не полное) представление о том, что тебя ждёт, если ты не научишься писать код МАКСИМАЛЬНО ПРОСТО И ПОНЯТНО.
Это и есть самое важное — уметь писать понятный код. Не только тебе, но и другим людям.
Как к этому прийти?
Нет быстрого способа. Нужно породить тонну говна и с опытом обрести понимание того, «что такое хорошо, а что такое плохо».
Ну и куда расти?
Знаешь, на свете есть столько всего помимо Спринга, что ты бы удивился. Такое многообразие разных решений: баз данных, брокеров сообщений, фреймворков. Что можно до пенсии пытаться освоить их все и так и не успеть сделать это.
Но это и не нужно. Благо, несмотря на всё это многообразие, под капотом везде заложены одни и те же принципы, которые придумали «когда наши родители были молодыми» люди, которые в разы умнее самого умного твоего знакомого.
Если у тебя получится хорошо (плюс-минус) разобраться в какой-то одной технологии, то освоить другие не составит большого труда. Поэтому моё имхо: не нужно бросаться учить всё подряд. Всё не выучить. И не угадать, что надо учить.
Сосредоточься на чём-то одном и долби в эту точку. А остальное поймёшь по ходу.
Всем добра, хорошей пятницы и прекрасных выходных!
👍8👏7🔥4❤2❤🔥2
Кто лучший программист (все еще ), человек или машина?
Полное исследование можно почитать по ссылке.
Ниже перевод вступления
Генерация кода с помощью LLM (вместо написания кода с нуля) резко выросла в популярности. Однако последствия для безопасности такого кода остаются неизвестными.
Мы провели исследование, сравнив безопасность и качество кода, написанного людьми, с кодом, сгенерированным LLM, на широком наборе задач: структуры данных, алгоритмы, криптографические процедуры и задачи уровня LeetCode.
• Для оценки безопасности использовались модульные тесты, fuzzing и статический анализ.
• Для оценки качества учитывались сложность и размер кода.
Результаты:
• LLM может генерировать некорректный код, который не реализует требуемый функционал, особенно на сложных задачах. Ошибки могут быть тонкими.
Пример: реализация алгоритма SHA1 компилировалась, но была неверной.
• Даже если функциональность верная, код от LLM часто менее безопасен: отсутствуют защитные конструкции (defensive programming), что приводит к уязвимостям (переполнение буфера, переполнение целых чисел).
• Fuzzing показал, что код от LLM чаще подвержен зависаниям и крашам, чем написанный человеком.
• По качеству: LLM генерирует «скелетный» код без защитных конструкций, при этом более сложный на строку кода, чем человеческий.
Попытка улучшить:
Мы создали цикл обратной связи: просили LLM повторно сгенерировать код и устранить найденные проблемы (например, malloc overflow, выход за границы массива, null dereference).
Результат:
• Иногда LLM устраняет уязвимость,
• но часто появляются новые проблемы,
• а также были случаи, когда в изначально корректный код после доработки LLM вносил ошибки.
Полное исследование можно почитать по ссылке.
Ниже перевод вступления
Генерация кода с помощью LLM (вместо написания кода с нуля) резко выросла в популярности. Однако последствия для безопасности такого кода остаются неизвестными.
Мы провели исследование, сравнив безопасность и качество кода, написанного людьми, с кодом, сгенерированным LLM, на широком наборе задач: структуры данных, алгоритмы, криптографические процедуры и задачи уровня LeetCode.
• Для оценки безопасности использовались модульные тесты, fuzzing и статический анализ.
• Для оценки качества учитывались сложность и размер кода.
Результаты:
• LLM может генерировать некорректный код, который не реализует требуемый функционал, особенно на сложных задачах. Ошибки могут быть тонкими.
Пример: реализация алгоритма SHA1 компилировалась, но была неверной.
• Даже если функциональность верная, код от LLM часто менее безопасен: отсутствуют защитные конструкции (defensive programming), что приводит к уязвимостям (переполнение буфера, переполнение целых чисел).
• Fuzzing показал, что код от LLM чаще подвержен зависаниям и крашам, чем написанный человеком.
• По качеству: LLM генерирует «скелетный» код без защитных конструкций, при этом более сложный на строку кода, чем человеческий.
Попытка улучшить:
Мы создали цикл обратной связи: просили LLM повторно сгенерировать код и устранить найденные проблемы (например, malloc overflow, выход за границы массива, null dereference).
Результат:
• Иногда LLM устраняет уязвимость,
• но часто появляются новые проблемы,
• а также были случаи, когда в изначально корректный код после доработки LLM вносил ошибки.
arXiv.org
Artificial-Intelligence Generated Code Considered Harmful: A Road...
Generating code via a LLM (rather than writing code from scratch), has exploded in popularity. However, the security implications of LLM-generated code are still unknown. We performed a study that...
🔥7👍2
Сводка апдейтов.
Сходил на конфу от amoCRM, про свой бизнес и выход из найма. Было полезно с точки зрения вдохновения и мотивации.
Из тех кого я знаю выступали Гарик Мартиросян, и Асафьев Стас.
Все спикеры были интересными, очень понравились истории основателей барбер-шопов Top Gun, и сети кофеен Baggins Coffee.
Ну а я тем временем дооформляю ИП. Как закончу - начну снова брать учеников.
Работал в разных форматах, бессрочное наставничество с разовой оплатой. Наставничество с оплатой по месяцам. Даже курс получилось запилить.
Больше всего понравился вариант с работой на результат без привязки к срокам. Попробую еще раз собрать команду мечты из 3-5 учеников и снова повторить такой кейс. ИП поможет с оформлением рассрочки как одним из вариантов оплаты.
23 Октября буду выступать на дне карьеры в ИТМО, от своей текущей работы. Мне повезло учиться в ИТМО 7 лет, быть дважды отчисленным и один раз даже закончить. Поэтому для меня это важное знаковое событие. Буду рассказывать ребятам за которыми охотятся Яндекс, ВК, и прочие крупные РФ игроки, как фиксил багулю.
Сам рассказ мне надо будет придумать. С одной стороны это типа круто. С другой стороны очко жим-жим. Это мое первое публичное выступление.
Ну и фоном работаю. Вписался в одну задачу, которую «было бы неплохо закончить в этом году», - как говорит аналитик) посмотрим, мне нравится такой горизонт планирования. Не без косяков, конечно, но пока вроде справляюсь.
Сори за такую сборную солянку. Веду блог стихийно.
Сходил на конфу от amoCRM, про свой бизнес и выход из найма. Было полезно с точки зрения вдохновения и мотивации.
Из тех кого я знаю выступали Гарик Мартиросян, и Асафьев Стас.
Все спикеры были интересными, очень понравились истории основателей барбер-шопов Top Gun, и сети кофеен Baggins Coffee.
Ну а я тем временем дооформляю ИП. Как закончу - начну снова брать учеников.
Работал в разных форматах, бессрочное наставничество с разовой оплатой. Наставничество с оплатой по месяцам. Даже курс получилось запилить.
Больше всего понравился вариант с работой на результат без привязки к срокам. Попробую еще раз собрать команду мечты из 3-5 учеников и снова повторить такой кейс. ИП поможет с оформлением рассрочки как одним из вариантов оплаты.
23 Октября буду выступать на дне карьеры в ИТМО, от своей текущей работы. Мне повезло учиться в ИТМО 7 лет, быть дважды отчисленным и один раз даже закончить. Поэтому для меня это важное знаковое событие. Буду рассказывать ребятам за которыми охотятся Яндекс, ВК, и прочие крупные РФ игроки, как фиксил багулю.
Сам рассказ мне надо будет придумать. С одной стороны это типа круто. С другой стороны очко жим-жим. Это мое первое публичное выступление.
Ну и фоном работаю. Вписался в одну задачу, которую «было бы неплохо закончить в этом году», - как говорит аналитик) посмотрим, мне нравится такой горизонт планирования. Не без косяков, конечно, но пока вроде справляюсь.
Сори за такую сборную солянку. Веду блог стихийно.
🔥11👍3😎3❤2🤩1
Вчера выступал на дне карьеры в ИТМО 🎓
Для меня это значимое событие. Я сам учился в ИТМО, был дважды отчислен 😅. Но умудрился таки и диплом получить)
Рассказывал о том как расследовал баги и о том, как в принципе работается в финтехе.
Был первый опыт публичного выступления. Понервничал, но вроде все прошло хорошо. Студентам было интересно, насколько я могу судить.
Блин, щас студенты такие крутые. Я в свое время не знал что такое git, а некоторые из них уже в Яндексе работали 💪
Для меня это значимое событие. Я сам учился в ИТМО, был дважды отчислен 😅. Но умудрился таки и диплом получить)
Рассказывал о том как расследовал баги и о том, как в принципе работается в финтехе.
Был первый опыт публичного выступления. Понервничал, но вроде все прошло хорошо. Студентам было интересно, насколько я могу судить.
Блин, щас студенты такие крутые. Я в свое время не знал что такое git, а некоторые из них уже в Яндексе работали 💪
❤12🔥5👍4👏1😎1
Полтора года назад я запускал курс.
Посмотрите как круто получилось у одного из тех, кто его проходил:
https://caffe.senioravanti.ru/
Здесь реализовано в разы больше, чем я давал на курсе, тем не менее хочется поделиться отзывом:
Привет, брал у тебя курс 1,5 года назад, и только пару дней назад довёл проект до ума.
Хочу выразить благодарность за то, что помог найти интересную тему для петпроекта.
(захостил - ссылка в начале поста)
Делал как курсовой проект для предмета "разработка информационной системы" в ВУЗе. Все зубы об него обломал.
По другому предмету будет ещё и мобильное приложение для этой системы.
Стек пришлось несколько раз поменять.
Итоговый стек:
Бэк: Spring Java, Kotlin, GraphQL, jOOQ, PostgreSQL, MongoDB -> 3 микросервиса (сервис продуктов, авторизации и взаимодействия с s3).
Фронт: Vue.js TypeScript .
Конец.
Имхо вышло огонь! 👍
PS Надеюсь у меня в итоге тоже получится «довести до ума», свою менторскую деятельность, и я снова начну «причинять пользу» другим 🥲
Посмотрите как круто получилось у одного из тех, кто его проходил:
https://caffe.senioravanti.ru/
Здесь реализовано в разы больше, чем я давал на курсе, тем не менее хочется поделиться отзывом:
Привет, брал у тебя курс 1,5 года назад, и только пару дней назад довёл проект до ума.
Хочу выразить благодарность за то, что помог найти интересную тему для петпроекта.
(захостил - ссылка в начале поста)
Делал как курсовой проект для предмета "разработка информационной системы" в ВУЗе. Все зубы об него обломал.
По другому предмету будет ещё и мобильное приложение для этой системы.
Стек пришлось несколько раз поменять.
Итоговый стек:
Бэк: Spring Java, Kotlin, GraphQL, jOOQ, PostgreSQL, MongoDB -> 3 микросервиса (сервис продуктов, авторизации и взаимодействия с s3).
Фронт: Vue.js TypeScript .
Конец.
Имхо вышло огонь! 👍
PS Надеюсь у меня в итоге тоже получится «довести до ума», свою менторскую деятельность, и я снова начну «причинять пользу» другим 🥲
❤7👍6🔥5😱1
Теперь у меня есть copilot)
А тем временем идет четвертая неделя работы без выходных.
Надо заканчивать настолько любить программирование. Кажется до добра это не доведет 😅
Но по крайней мере последние выходные мне оплатят в двойном размере, что в целом приятненько.
Кажется виден свет в конце тоннеля, но тоннель что-то не заканчивается 🤪
Надо бы конечно сделать пост про Java….
Ненавижу Java 🥹
Directed by Robert B. Weide
Кстати, а ты знал, что мем с титрами Directed by Robert B. Weide взят из сериала «Умерь свой энтузиазм»?
Узнал только что, пока гуглил как эта херня пишется. Совпадение? Не думаю
А как у тебя дела? Расскажи че-нибудь, пажалуста 🥹
А тем временем идет четвертая неделя работы без выходных.
Надо заканчивать настолько любить программирование. Кажется до добра это не доведет 😅
Но по крайней мере последние выходные мне оплатят в двойном размере, что в целом приятненько.
Кажется виден свет в конце тоннеля, но тоннель что-то не заканчивается 🤪
Надо бы конечно сделать пост про Java….
Ненавижу Java 🥹
Directed by Robert B. Weide
Кстати, а ты знал, что мем с титрами Directed by Robert B. Weide взят из сериала «Умерь свой энтузиазм»?
Узнал только что, пока гуглил как эта херня пишется. Совпадение? Не думаю
А как у тебя дела? Расскажи че-нибудь, пажалуста 🥹
❤5🤓3👾3😁1
Media is too big
VIEW IN TELEGRAM
Вы помните разговоры с уточкой?
Все это, херня, как говорил мой школьный друг.
Вместо того, что-бы говорить с уточкой, гораздо лучше с кавказским акцентом проговаривать свои действия 😎
В этом случае никто не подумает, что вы поехали кукухой, так как для этого разговаривать с игрушкой не нужно.
А бонусом вы прокачаете свой нейролингвистический кортекс (чтобы это ни значило )
Я начал с балкарского, потому что это однозначно +20 к внимательности.
Все это, херня, как говорил мой школьный друг.
Вместо того, что-бы говорить с уточкой, гораздо лучше с кавказским акцентом проговаривать свои действия 😎
В этом случае никто не подумает, что вы поехали кукухой, так как для этого разговаривать с игрушкой не нужно.
А бонусом вы прокачаете свой нейролингвистический кортекс (
Я начал с балкарского, потому что это однозначно +20 к внимательности.
❤5🔥2🥴2🌚1🤣1🗿1🙉1😎1
Мой Пет-Проект. Вайбкодинг. Смотреть на YouTube
Снял видео про свой пет-проект и про то, как последние пару дней занимаюсь вайб-кодингом.
👉 Видео:
https://youtu.be/ymq7SEh0EL4
👉 Сам проект:
https://notedesk.ru
В этом видео рассказываю:
💎 о своём проекте на React;
💎 как можно использовать Cursor / Codex в разработке;
💎 как я собрал простой CI/CD пайплайн;
💎 как деплою проект на VPS.
Как деплой выглядел раньше:
после изменений в коде я:
👎 делал git push;
👎 заходил на сервер по SSH;
👎 выполнял git pull;
👎 останавливал контейнеры;
👎 пересобирал контейнеры;
👎 поднимал их заново.
Как деплой выглядит сейчас:
👍 я просто делаю git push в ветку main, и через 5 минут изменения долетают на прод.
Если тебе интересно, могу отдельно подробнее рассказать про инфраструктуру и выбранный подход.
Буду очень благодарен, если ты:
Зайдёшь на
https://notedesk.ru
попробуешь проект, потыкаешься и дашь обратную связь — есть ли смысл продолжать им заниматься.
DISCLAIMER: Проект не адаптирован под мобильные устройства 😔
Приятного просмотра и спасибо, если посмотришь / потыкаешь / напишешь фидбек 🙏
Снял видео про свой пет-проект и про то, как последние пару дней занимаюсь вайб-кодингом.
👉 Видео:
https://youtu.be/ymq7SEh0EL4
👉 Сам проект:
https://notedesk.ru
В этом видео рассказываю:
Как деплой выглядел раньше:
после изменений в коде я:
👎 делал git push;
👎 заходил на сервер по SSH;
👎 выполнял git pull;
👎 останавливал контейнеры;
👎 пересобирал контейнеры;
👎 поднимал их заново.
Как деплой выглядит сейчас:
👍 я просто делаю git push в ветку main, и через 5 минут изменения долетают на прод.
Если тебе интересно, могу отдельно подробнее рассказать про инфраструктуру и выбранный подход.
Буду очень благодарен, если ты:
Зайдёшь на
https://notedesk.ru
попробуешь проект, потыкаешься и дашь обратную связь — есть ли смысл продолжать им заниматься.
DISCLAIMER: Проект не адаптирован под мобильные устройства 😔
Приятного просмотра и спасибо, если посмотришь / потыкаешь / напишешь фидбек 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Мой Пет-Проект. Вайб-кодинг. Cursor. Codex. СI/CD пайплайн. Деплой на VPS
Telegram: https://news.1rj.ru/str/+HTd2UpOAjWYzNzZi
В этом видео рассказываю о своем проекте на React
О том:
Как кодить на Cursor
Как использовать Codex
Как создать CI/CD пайплайн
Как деплоить на VPS
В этом видео рассказываю о своем проекте на React
О том:
Как кодить на Cursor
Как использовать Codex
Как создать CI/CD пайплайн
Как деплоить на VPS
🔥8👍4👏2❤1🤩1