Всё больше компаний создают разнообразные ИИ-модели, и, конечно, крупные корпорации — впереди планеты всей. На днях Google представила свой новый проект — Gemini Code Assist, инструмент, который помогает разработчикам писать код. О том, что это за новинка и какие ей дали возможности — читайте под катом.
Программирование *
Искусство создания компьютерных программ
Обобщённые типы. Часть 1/3. Полиморфные типы высокого рода
В предыдущей статье раскрывались некоторые базовые понятия теории типов. В этот раз мы рассмотрим обобщённые типы (generics) – необходимость появления такой абстракции, ключевые особенности и различные сценарии использования в программировании.
Не бойтесь бросать свои пет-проекты
Веб-индустрия переполнена историями о пет-проектах, которые переросли в успешный бизнес. Вот и я нередко увлекаюсь какими-нибудь идеями после основной работы. И хотя это определённо заманчивая перспектива, работа над личным проектом не всегда столь лучезарна – порой они просто не выгорают. Если вы читаете эту статью, то есть вероятность, что вы недавно отказались (или подумываете отказаться) от своего пет-проекта. В таком положении находились многие из нас. Да что тут говорить, заброшенные личные проекты даже стали своего рода мемом в среде разработчиков.
Тем не менее ко мне часто обращаются начинающие программисты за советом, и в последнее время их всё чаще беспокоит то, что у них не получается реализовывать пет-проекты так быстро или так часто, как хотелось бы. И такая тревожность абсолютно понятна. Когда в среде разработки господствует культура сверхактивности и концепция «непрерывной поставки», а на технических собеседованиях кандидатов зачастую оценивают на основе результатов их «внештатного программирования» (имеются в виду хакатоны, клубы программистов и прочее, — прим. пер.), заброшенные пет-проекты перестают казаться чем-то забавным. И мне это не нравится.
Мы слышим столько историй об успешных личных проектах, но что, если более открыто говорить о тех, которые провалились? Многие из нас проводят ретроспективный анализ на работе, но не в отношении пет-проектов. А почему бы нам не пролить свет на всё то время, которое было вложено в начинания, которые так и не ожили? На заброшенное ПО, которое в своё время казалось хорошей идеей. По нашим средам разработки до сих пор скитаются духи захороненных каталогов
node_modules
.И здесь я хочу рассказать о своём недавнем пет-проекте, который забросил в тот же день, в который запустил.
МРЭМ – 200. Электронный микроскоп родом из СССР. Цифровизация захвата изображения
В 2020 году я опубликовал здесь статью, в которой описал свой советский растровый микроскоп МРЭМ-200 1987 года выпуска. Мне было приятно, что статья вызвала большой интерес и помогла мне познакомиться с людьми со схожими увлечениями.
Хочу рассказать о дальнейшей судьбе микроскопа и его усовершенствованиях. В статье хочу рассказать о внедрении системы прямого ввода изображения с микроскопа в компьютер и его последующей обработкой программными средствами.
За прошедшие годы микроскоп подвергся нескольким модернизациям, об одной из которых хочется рассказать. В 80-е годы изображения с мониторов микроскопа фиксировались для дальнейшего изучения и сохранения с помощью пленочного фотоаппарата. Для этого в комплекте с микроскопом шла специальная тубусная приставка, фиксирующаяся на мониторе. В третьем тысячелетии мне хотелось, конечно, уже иметь компьютерный захват картинки, как в современных растровых микроскопах. В начале я пошел по самому простому пути: стал использовать цифровой фотоаппарат Canon вместо пленочного фотоаппарата. Поскольку построение изображения в максимальном разрешении длится 41 секунду, мне пришлось перепрошить фотоаппарат на такую длительную выдержку. Работа с микроскопом сразу стала комфортней, но я понимал, что есть еще к чему стремиться.
В декабре 2022 года в Телеграмме я познакомился с еще одним владельцем микроскопа МРЭМ-200. В этой статье я буду, называть этого человека, по его просьбе, «Владелец МРЭМ-200 из Москвы, пожелавший остаться анонимным». Он решил проблему прямого компьютерного захвата, использовав видео с youtube (https://www.youtube.com/watch?v=ruuxn2u3yao) известного американского популяризатора науки Бена Краснова (Ben Krasnow). «Владелец МРЭМ-200 из Москвы, пожелавший остаться анонимным» творчески переработал информацию Бена Краснова, адаптировал софт под технические особенности своего микроскопа и любезно поделился со мной этим софтом. У меня появилась программа, которая замечательно строила и сохраняла изображение на экране компьютера синхронно с изображением на родных мониторах микроскопа. Между компьютером и микроскопом добавился отдельный модуль согласования, в котором помещался АЦП с выходом USB и операционные усилители с регулировкой коэффициента усиления:
Это всё, что останется после меня: проблемы наследования кода и передачи прав на него
Привет, Хабр. Меня зовут Ирина, и я предлагаю поговорить о том, какие права у нас есть на наш код и об их передаче. Мы рассмотрим, что такое код с точки зрения законодательства РФ; о том, как мы можем передать права на код; что такое наследование кода и как его можно унаследовать.
Баги, которые наделали немало шума
Реальный "баг", баг в коде или невнимательность — всё это может повлиять на ваш проект и привести к самым разным последствиям. В этой статье собран ряд масштабных и интересных багов. Время учиться на чужих ошибках!
Теорвер не нужен в играх, но это не точно
Теория вероятностей – одна из важных частей не только игрового дизайна, строго заскриптованые события без вариантов быстро вызовут скуку у игроков. У меня за спиной был всего один год этой дисциплины в универе, и не сказать, чтобы нужно было применять это каждый день, но когда надо объяснить базовые знания дизайнерам, то приходится сталкиваться с тем, что каждый дизайнер понимает теорию вероятности по-своему. Эти мои размышления появились после обсуждения с одним из коллег замечательной статьи Яна Шрайбера о неслучайных случайностях и сломанных ГСЧ в играх. Игры - это огромные недетерминированные системы, независимо от того, закладывали это в проект или нет. И понимание природы случайности для контролирование таких систем, которые влияют на опыт игрока, помогает создавать их так, чтобы они не казались прибитыми сбоку гвоздями. Если в системе есть случайность, нужно понимать как её изменить, приблизив её к бытовому пониманию игроков. И даже если все механики игры строго детерминированные - их взаимодействие дает случайный результат, в чём вы можете убедиться, посмотрев многочисленные видео по различным взломам игровых систем.
Евгений DockerAuthPlugin’ович Онегин
Интересное начало, не так ли? Меня зовут Роман, и я младший инженер информационной безопасности Ozon. В этой статье я расскажу о проблеме отсутствия авторизации доступа к Docker daemon / Docker Engine API / командам Docker при работе с контейнерами в экосистеме Docker и как это можно решить при помощи 11 почти стихотворных строчек bash.
Говоря о стихотворчестве, первое, что приходит мне в голову, это уроки литературы, где моим самым любимым романом был «Евгений Онегин». В школе учитель литературы говорила нам: «Это вы сейчас это не понимаете... Уже потом, спустя год, пять или даже 20 лет, вы вновь прикоснётесь к книгам, которые, казалось бы, вы уже знаете вдоль и поперёк. И вот тогда вы поймёте всё то, что мы с вами тут обсуждаем, или даже откроете для себя что-то, о чем и не догадываетесь».
Почему Accelerate — это не страшно
Всем привет! Я Игорь Белов, iOS-разработчик в Тинькофф Бизнесе, выпускник Университета Иннополис и энтузиаст в области Computer Science. Занимаюсь iOS-разработкой почти четыре года, мне нравится изучать фундаментальные темы программирования и разбираться, как все работает под капотом.
Расскажу, почему Accelerate — это не так уж страшно и какая теория лежит в его основе. На конкретных примерах я покажу, насколько Accelerate способен помочь или не помочь в улучшении производительности. А еще оставлю практические советы и рекомендации по работе с Accelerate, которые накопил за время своей практики.
Как большие языковые модели в Street Fighter играли
Что будет, если устроить совершенно новый тип тестирования для больших языковых моделей (LLM)? Например, выпустить несколько моделей на арену и заставить их соревноваться друг с другом?
Именно это я и решил сделать: столкнуть LLM друг с другом в классической аркаде Street Fighter III. Далее расскажу, как я создал эту арену и какие интересные наблюдения сделал во время битв LLM на виртуальных улицах Метро-Сити.
9 полезных крейтов в Rust
Привет, Хабр!
Rust, как любимый многими разработчиками знаменит своей скоростью и безопасностью. Но его истинная сила заключается в экосистеме крейтов — библиотек и инструментов, которые могут превратить сложные и трудоёмкие задачи в удивительно простые и приятные процессы.
Крейты в Rust – это пакеты, которые можно использовать для расширения функциональности проектов.
И полгода не прошло: релиз Qt 6.7 и Qt Creator 13. Что нового и что изменилось?
В этом месяце много релизов, хороших и разных. Так, на днях компания Qt Company опубликовала релиз фреймворка Qt 6.7. Разработчики придерживаются прежней стратегии как по стабилизации работы, так и по увеличению функций ветки Qt 6. Поддерживается много платформ, включая Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Подробности — под катом.
Путешествие в yarn
За последние пару лет многие российские компании перестали получать обновления зарубежного софта или вовсе потеряли к нему доступ. Мы, как и наши коллеги из других отечественных компаний, задумались о поиске альтернатив используемым нами решениям.
Наши бекендеры решили настроить резервную инфраструктуру на базе ресурсов «Яндекса». Мы, фронтендеры, задумались над альтернативой npm registry — источнику библиотек, фреймворков и других полезных в работе штук.
От нашей изначальной идеи — создания локального registry — мы пришли к yarn 2+. О том, как так получилось, и с чем мы столкнулись на этом тернистом пути, я сегодня и расскажу.
Ближайшие события
Что скрывается в коде игрового движка, написанного на Java?
Вы когда-нибудь интересовались игровыми движками, написанными на Java? В этой статье мы рассмотрим и проверим на наличие ошибок в исходном коде один из популярных игровых движков — jMonkeyEngine. Возможно, мы даже узнаем, почему игры пишутся на C# и C++, а не на Java.
Банановые шкурки на интервью Python-разработчика
В этой статье я, Евгений Бартенев, техлид и автор курса «Python-разработчик», возьму и рассмотрю не только те «банановые шкурки», которые периодически разбрасываю сам на собеседованиях, но и те, на которых поскальзывались мои коллеги, некоторые наши студенты, да и я сам.
Пишем калькулятор на Rust с GUI
Зачем еще один калькулятор? Да незачем, просто как тестовый проект для рассмотрения GUI-библиотеки.
Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint.
Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое.
Legacy: поддерживать нельзя переписать
Легаси — реальность любого программиста. Объясняем, как софт становится легаси и почему это нормально, а также какие существуют плюсы при работе с легаси. Не всегда стоит относиться к легаси как к проклятию, стоит взглянуть на него как на естественный этап жизненного цикла программного обеспечения. Меня зовут Алексей Рузин, я уже 27 лет работаю и знаю, как работать с легаси.
«Легаси» — это слово, которым программисты пугают друг друга (и менеджеров). Оно означает устаревший софт, работать с которым обычно сложно и/или неприятно по причине небольшого «выхлопа» в пересчете на вкладываемые усилия. В целом, словом «легаси» можно назвать любой «код», который сложно поддерживать. И чем сложнее, тем он более «легаси».
Сегодня расскажем, откуда оно берется, как удерживать его “в рамках” и чем оно может быть полезно для начинающих специалистов.
Ты — это то, как ты пишешь. Как расти через качество кода
Каждый код уникален. Несмотря на работу линтеров, спустя несколько лет вы с уверенностью сможете определить, что писали вы, а что — другой разработчик. Даже если не помните, что это была за задача. А ещё, код может рассказать об авторе едва ли не больше, чем разговор с ним. Например, какие книги он читал, на каких языках писал раньше. Можно сделать выводы о характере и привычках автора и предположить, как быстро он сможет вырасти.
Я Юрий Митус, фронтенд-разработчик в Сбере. Предлагаю поговорить о коде, который мы пишем, и практиках его улучшения. Расскажу, на что обращать внимание, покажу типичные ошибки, которые «портят» код и как их избегать. Научу писать код так, чтобы вас хотели нанять и перенять ваши практики.
Какие будут зарплаты у программистов в 2024 году: у кого меньше, а у кого больше
Вот уже который год зарплаты представителей российского ИТ-сектора поражают своими контрастами в сравнении с остальными сферами. До сих пор вчерашний студент-программист через пару лет может получать в два раза больше, чем опытный врач. Многие ИТ-гуру зарабатывают как корпоративные магнаты, в то время как другие профессии отстают. Существует мнение, что этот экономический пузырь должен лопнуть, когда рынок насытится квалифицированными кадрами. Но это будет явно не в 2024 году. Мы собрали на Youtube-дискуссию экспертов из российских компаний и Amazon, чтобы попробовать предсказать, вырастет ли зарплата программистов в 2024 году и каким разработчикам стоит ожидать повышения доходов, а каким – нет.
Как создать свой Spring Boot 3 — стартер?
Допустим, Вы разрабатываете несколько приложений или микросервисов на Java. Каждое из них уникальное, и содержит свою собственную бизнес логику. Однако, в каждом из них может быть необходимость использовать общую логику. Например, логику аутентификации, как это часто бывает в мире микросервисов.
Spring Boot starter'ы - отличный способ управлять созданием, развитием и поставкой общей кодовой базы. О том как создать свой Spring Boot 3 стартер и поговорим в этой статье.
Вклад авторов
alizar 4349.2olegchir 3450.6ru_vds 3179.2haqreu 2916.0tangro 2672.2nmivan 2585.0MaxRokatansky 2412.8kesn 2353.0DmitrySpb79 2296.0grigoryvp 2212.2