Как стать автором
Поиск
Написать публикацию
Обновить
1148.98

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Улучшаем ваш Unity проект. Гайд по ECS для MonoBehavior разработчиков

Время на прочтение9 мин
Количество просмотров35K

Привет, Хабр!

На обложке демо-игра Megacity. Она содержит 4,5 млн элементов Mesh Renderer, 5000 динамических транспортных средств, 200 000 уникальных строительных объектов и 100 000 уникальных аудиоисточников. Но самое удивительное, что вся эта мощь запустилась на Iphone X при 60 кадрах в секунду . Как все это возможно?

Пару лет назад компания Unity представила свой стек  DOTS, на котором и построен проект Megacity. Это некий список технологий, которые в совокупности позволяют колдовать и ускорять ваш проект в десятки раз. В корне всей магии лежат 2 простых заклинания:

- Если правильно управлять данными, процессору будет легче их обрабатывать, а если их легче будет обрабатывать, то игрокам будет легче жить.

- Количество ядер процессора растет, но код среднестатистического программиста не использует все ядра процессора. А значит игрокам все же живется туго. Фреймрейт ведет себя как Джокер - непредсказуемо.

Читать далее

Четыре ошибки программистов, которые я осознал, только когда стал CTO

Время на прочтение5 мин
Количество просмотров46K
image

Я работал программистом более пяти лет. Не особо впечатляет, ведь кто-то из вас, вероятно, имеет в три раза больший опыт, но мне нравилось думать о себе как о сениор-разработчике. Звучит серьёзно и солидно, правда?

Однажды мне предложили стать Chief Technology Officer (CTO) в медтех-стартапе. Поработав некоторое время на этой новой должности, я могу обернуться назад и сказать, что не был сениор-разработчиком. Не поймите меня неправильно — я по-прежнему считаю, что обладаю отличными знаниями программирования, особенно веб-разработки; но если это так, почему я не думаю, что был сениором?

Всё это из-за четырёх заблуждений, которые у меня были.
Читать дальше →

Обнаружение объектов с помощью YOLOv3 на Tensorflow 2.0

Время на прочтение14 мин
Количество просмотров50K

До появления YOLO большинство способов обнаружения объектов пытались адаптировать классификаторы для детекции. В YOLO же, обнаружение объектов было сформулировано как задача регрессии на пространственно разделенных ограничивающих рамок (bounding boxes) и связанных с ними вероятностей классов.

В данной статье мы узнаем о системе YOLO Object Detection и как реализовать подобную систему в Tensorflow 2.0.

Читать далее

Как самый недооценённый контрибьютор спасал язык Rust от смерти

Время на прочтение6 мин
Количество просмотров24K

Дэйв Херман, самый недооценённый контрибьютор Rust

Автор оригинала — Брайан Андерсон. Он тоже имеет отношение к работе над языком Rust. Понятно, что в своей статье он будет хвалить этот язык, но важнее другое: он раскрывает внутреннюю кухню проекта. Андерсон рассказывает про первые несколько лет работы над Rust в стенах компании Mozilla. Он хочет восстановить справедливость, вспомнив выдающегося, но скромного ментора и инженера, который во многом решил судьбу проекта. 

Я считаю, что язык Rust сейчас явно на подъёме. Вспоминаю, как много нужно было сделать правильно, чтобы достичь успеха. Команда неоднократно принимала судьбоносные решения, в которых не была полностью уверена. Каждое неверное решение могло привести проект к провалу. Иногда мы просто не знали правильный ответ. Но в каждой такой ситуации как будто происходило маленькое чудо, и проект двигался дальше. Конечно же, эти «чудеса» происходили не на пустом месте: нас выручала интуиция нескольких очень опытных профессионалов, которые горели проектом и действительно хотели создать что-то крутое.

В разное время над проектом работали многие. Но здесь речь пойдёт об одном из ключевых участников команды, который, на мой взгляд, был очень быстро и незаслуженно забыт. 

Mozilla Research


К 2009 году Mozilla получила крупную сумму денег от прибыльной сделки с Google (он стал поисковиком по умолчанию в браузере Firefox). И, насколько я понял, именно в этот момент руководство Mozilla решило вложить деньги в новые проекты.
Читать дальше →

Rust 1.52.0: улучшения Clippy и стабилизация API

Время на прочтение2 мин
Количество просмотров3.9K

Команда Rust рада сообщить о выпуске новой версии — 1.52.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.52.0 вам достаточно выполнить следующую команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Что было стабилизировано в 1.52.0


Самое значительное изменение этого выпуска не касается самого языка или стандартной библиотеки. Это улучшения в Clippy.


Ранее запуск cargo clippy после cargo check не запускал Clippy: кэширование в Cargo не видело разницы между ними. В версии 1.52 это поведение было исправлено, а значит, теперь пользователи будут получать то поведение, которое ожидают, независимо от порядка запуска этих команд.

Читать дальше →

Валюта основанная на времени

Время на прочтение2 мин
Количество просмотров4.6K

Многие из нас проводят время в профильных телеграм-группах. Власть над общением здесь принадлежит случайным людям со своими недостатками. Нередко встречаются конфликты и злоупотребления. Это побуждает задуматься, а можно ли поддерживать порядок иначе, так, чтобы не расцветал мошеннический спам и одновременно ни у кого не было абсолютной власти над адекватным собеседником?

И в моем случае эти размышления вылились в разработанную и протестированную систему которую уже сегодня можно подключить в ваш Telegram.

Как это работает?

Языки любимые и языки страшные. Зелёные пастбища и коричневые поля

Время на прочтение6 мин
Количество просмотров13K


Результаты опроса Stack Overflow являются отличным источником информации о том, что происходит в мире разработки. Я просматривал результаты 2020 года в поисках некоторых идей, какие языки добавить в нашу документацию по контейнерным сборкам, и заметил кое-что интересное о типах языков. Мне кажется, это не часто встречается в различных дискуссиях о предпочтениях разработчиков.

В опросах есть категории «Самые страшные языки программирования» (The Most Dreaded Programming Languages) и «Самые любимые языки». Оба рейтинга составлены на основе одного вопроса:

На каких языках вы провели обширную работу по разработке за последний год, и на каких хотите работать в следующем году? (Если вы работаете с определённым языком и намерены продолжать это делать, пожалуйста, установите оба флажка).
Читать дальше →

Я научился кодить в основном благодаря порно

Время на прочтение4 мин
Количество просмотров31K
image

… и оно научило меня довольно полезным навыкам.

До сих пор помню первую строку кода, которую мне довелось изменить: я увеличил единственное значение integer, чтобы сделать больше диаметр взрывов в игре Clonk Rage. Я ценю этот момент, потому что тогда я впервые взглянул внутрь программы.

Позже я быстро потерял к этому интерес, потому что на меня навалилось множество других проблем. Потом я попал на практику программистом в основном благодаря тому, что рассказывал о своём хобби — моддинге корпусов, и мог перечислить в техническом стиле этапы приготовления кофе.

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

Затем при помощи инструмента imacros, который вам, вероятно, знаком, я открыл целый мир скриптинга. Этот инструмент имеет функцию записи макросов, позволяющую автоматизировать действия без единой строки кода (но при желании его можно писать).

Я использовал этот инструмент для автоматизации раздражающего процесса публикации постов из моего tumblr-блога про порно на сайт под названием sex.com (его в то время рекламировали как «Pinterest» для порно). Со временем этот блог вырос в целую сеть блогов, курирующих нишевый контент и позволявший мне оплачивать аренду жилья.
Читать дальше →

Собственный микроскоп из кубиков LEGO

Время на прочтение3 мин
Количество просмотров11K
Сегодня мы хотим познакомить вас с проектом Lego Microscope. Цель этого проекта заключается в том, чтобы предоставить всем желающим инструкции и ресурсы по сборке собственного микроскопа из кубиков LEGO.
Микроскоп
Читать дальше →

Почему мы перешли с Webpack на Vite

Время на прочтение2 мин
Количество просмотров47K
image


Миссия Replit — сделать программирование более доступным. Мы предоставляем людям бесплатные вычисления в облаке, чтобы они могли создавать приложения на любом устройстве. Одним из самых популярных способов создания приложений в Интернете на сегодняшний день является React. Однако исторически инструменты React были медленными на Replit. В то время как экосистема JavaScript создала отличные инструменты для профессиональных разработчиков, многие из самых популярных из них, такие как Create React App и Webpack, становятся все более сложными и неэффективными.

К счастью, мы заметили, как сообщество JavaScript осознало эту проблему и перешло к созданию более быстрых и эффективных инструментов, что означает, что мы, наконец, можем предоставить опыт, который наши пользователи ожидают от нас.

Этот новый опыт основан на Vite, инструменте сборки JavaScript, который обеспечивает быструю и экономичную разработку. Vite поставляется с рядом функций, включая HMR или Hot Module Replacement, команду сборки, которая объединяет ваши инструменты с Rollup, и встроенную поддержку TypeScript и JSX.

JAVA преступно недооценена

Время на прочтение5 мин
Количество просмотров16K
Точка зрения невежественного студента информатики

image


Вероятно, вы прочитали заголовок этого поста и подумали: «Что этот парень курит? Java повсюду!» Вы правы, Java по-прежнему доминирует в отрасли и c ее помощью запускаются одни из крупнейших в мире критически важных приложений. Но распространение Java — это не то, о чем я говорю, я говорю о шумихе вокруг нее. Я провожу много времени с неопытными программистами. А что любят делать неопытные программисты? Быть взволнованным и самоуверенным в отношении таких инструментов, как языки программирования. Ни один из студентов CS, с которыми я встречаюсь, не восхищается Java, и я думаю, что так не должно быть.

Молодые/наивные разработчики (включая меня) часто попадают в ловушку фетишизации новых языков и инструментов в ущерб производительности и здравомыслию. До работы в Halp (теперь принадлежащей $TEAM) у меня были почти романтические отношения с серверным TypeScript. Я думал, что экосистема node.js была самой крутой вещью: мне понравилась идея транспилированного кода, отладки в реальном времени, огромной библиотеки пакетов и даже странных и фрагментированных систем сборки. Когда я действительно использовал его в разработке и поговорил с более опытными инженерами, магия быстро исчезла.
Читать дальше →

Нейросеть с нуля своими руками. Часть 3. Sad Or Happy?

Время на прочтение5 мин
Количество просмотров20K

В предыдущей части статьи мы написали реализацию простейшей нейросети в виде JS класса. Теперь давайте попробуем дать ей настоящее задание. Сценарий будет следующим: пользователь будет рисовать в определенном блоке веб-страницы смайл, а наша нейросеть попробует определить грустный он или веселый. Давайте приступим.

Читать далее

Нейросеть с нуля своими руками. Часть 2. Реализация

Время на прочтение5 мин
Количество просмотров37K

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

Как я говорил во вступлении к первой части, я frontend-разработчик, и мой родной язык - JavaScript, реализовывать нашу нейросеть в рамках данной статьи мы будем именно на нем. Для начала несколько слов о структуре.

Читать далее

Ближайшие события

Вышел Bootstrap 5: оцениваем 7 главных нововведений

Время на прочтение4 мин
Количество просмотров47K

Пройдя через несколько альфа- и бета-версий, наконец-то появился Bootstrap 5, на что у разработчиков ушло несколько месяцев. Новая версия претерпела серьезные изменения, включая отказ от поддержки Internet Explorer (IE) и зависимости jQuery. От IE было решено отказаться, потому что браузер занимает всего 3% рынка и его доля продолжает снижаться.

Что такое Bootstrap? Это самый популярный в мире CSS-фреймворк с открытым исходным кодом, который разработан командой Twitter. В v5 внесено сразу несколько критически важных изменений, давайте посмотрим, что там и как.

Антипаттерн Entity Service. Иногда микросервисы хуже монолита

Время на прочтение5 мин
Количество просмотров15K

Статья об одном неудачном решении, которое распространено при переходе на микросервисы. Несмотря на то, что Microsoft и другие компании в своих руководствах рассматривают возможность создавать Entity Services, есть все основания считать его антипаттерном. Далее мы поговорим о том, что такое Entity Service и какими свойствами он обладает для конечной системы в целом.

Читать далее

Нейросеть с нуля своими руками. Часть 1. Теория

Время на прочтение6 мин
Количество просмотров149K

Здравствуйте. Меня зовут Андрей, я frontend-разработчик и я хочу поговорить с вами на такую тему как нейросети. Дело в том, что ML технологии все глубже проникают в нашу жизнь, и о нейросетях сказано и написано уже очень много, но когда я захотел разобраться в этом вопросе, я понял что в интернете есть множество гайдов о том как создать нейросеть и выглядят они примерно следующим образом:

Читать далее

Живые и неживые коллекции в JavaScript

Время на прочтение4 мин
Количество просмотров8.4K

Найти несколько DOM-элементов и получить к ним доступ из JavaScript можно разными способами: querySelectorAllgetElementsByTagNamechildren и так далее. В итоге в каждом случае будет возвращена коллекция — сущность, которая похожа на массив объектов, но при этом им не является, на самом деле это набор DOM-элементов.

Но во время работы с коллекциями можно столкнуться с поведением, которое покажется странным, если не знать один нюанс — они бывают живыми (динамическими) и неживыми (статическими). То есть либо реагируют на любое изменение DOM, либо нет. Вид коллекции зависит от способа, с помощью которого она получена. Рассмотрим на примере.

Читать далее

Почему программист поменял работу?

Время на прочтение13 мин
Количество просмотров14K

По мнению абсолютного большинства жителей этой планеты, разработчики это - какие-то зажравшиеся люди, которые сидят в своих уютных креслах, занимаются какой-то фигнёй и получают за это непомерные деньги. Эталонные тепличные условия и голубая мечта, которая выродилась в пренебрежительное “Войти в айти”. Но если предположить, что всё действительно так, как принято считать - и стул удобный, и денег платят много, и работа интересная - то почему же программисты, как и все остальные люди, иногда меняют место работы? Может быть, недостаточно платили? Или кресло было не такое удобное? Что-то же должно побудить человека, у которого всё хорошо (по мнению окружающих), выйти из зоны комфорта и пойти искать новое место работы. И что именно он ищет на этом новом месте? Давайте поговорим об этом. И да, многое здесь может показаться банальным, но почему-то достаточное количество людей предпочитают не брать в расчёт и половину из этих банальностей. Или делают вид, что им всё равно.

Читать далее

Для чего нужно интеграционное тестирование?

Время на прочтение9 мин
Количество просмотров66K

Эта статья является конспектом книги «Принципы юнит-тестирования». Материал статьи посвящен интеграционным тестам.

Юнит-тесты прекрасно справляются с проверкой бизнес-логики, но проверять эту логику «в вакууме» недостаточно. Необходимо проверять, как разные ее части интегрируются друг с другом и внешними системами: базой данных, шиной сообщений и т. д.

В этой статье рассматривается роль интеграционных тестов, когда их следует использовать и когда лучше положиться на классические юнит-тесты. Также затронем эффективное написание интеграционных тестов.

Читать далее

Python, исследование данных и выборы: часть 5

Время на прочтение11 мин
Количество просмотров6.7K

Заключительный пост №5 для начинающих посвящен сопоставительной визуализации электоральных данных.

Читать далее

Вклад авторов