Как стать автором
Обновить
661.56

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

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

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

Реализация отражений и преломлений света в трассировщике (Введение в трассировку лучей — часть 5)

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 302
Перевод

Можно ли напечатать трассировщик на визитной карточке?
Как реализовать преломление и отражение света?

Узнаем в этой статье 👇

Отрендерить статью
Рейтинг 0
Комментарии 0

Новости

Сказка про собес наоборот

Уровень сложности Простой
Время на прочтение 11 мин
Количество просмотров 5.6K
Ретроспектива

Вы помните свое первое собеседование? Я свое помню отлично, преподаватель дольше обычного гонял мою плис в симуляторе Keil-C, придирался к любой мелочи, докапывался до каждой запятой в коде прошивки. А потом начал гонять по алгоритмам трассировки печатных плат, которые мы должны были проходить только в следующем семестре. Я уже мысленно готовился на допсу, видно же что валит, как и предыдущих двух одногруппников. Но в конце сдачи лабы по проектированию мк преподаватель спросил хочу ли я делать "железное железо для железной дороги?" (с). Студенту второго курса ИТМО, которого кормили родители, и подрабатывавшего разгрузкой вагонов ночами, это было сродни офферу в гугль. С тех пор я много раз побывал с обеих сторон стола, и в качестве испытуемого, и как придирчивый лид (отнюдь этим не горжусь, но и не стыжусь), и как группа поддержки у коллег из соседних отделов. Всегда хотелось надеяться, что наши собеседования - это не таинственные квесты, где каждая задача - это каст сложного заклятия, а ошибки не выкидывают с данжа.

Но сначала сказка о том, как к нам попал Миша: однажды в славном городе S погромист-джедай по имени Михаил отправился на собеседование в компанию "Кодозавры". Он был уверен, что знает все, и даже изучил новейшие фреймворки "NoScript" и "Unreal С--". Как он думал, ничто не может его остановить. Когда Миша пришел на собеседование, его встретил HR-менеджер по имени Анна. Она с улыбкой спросила: "Расскажите, как вы бы пояснили своей бабушке, что такое мьютекс?". Ага, прям с порога наш доблестный HR накинул Мишке затравочный вопрос. Ну а чё, это ж сказка, герои на белых самокатах и все такое...

Налево пойдешь, мидла потеряешь...
Всего голосов 16: ↑14 и ↓2 +12
Комментарии 21

Ключ к эффективности разработки: делать то, что нужно, но лишнего не делать

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

Кучу времени можно сэкономить если:


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


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

Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 28

Основы проектирования архитектуры простой социальной сети

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 1.7K
Обзор

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

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

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Комментарии 3

Истории

FIFO очередь asyncio в Python

Уровень сложности Средний
Время на прочтение 19 мин
Количество просмотров 1.2K
Туториал
Перевод

Очереди в Asyncio могут быть полезны для создания программ, в которых используются паттерны производитель-потребитель, где одна или несколько корутин производят элементы и помещают их в очередь, а одна или несколько корутин потребляют элементы и обрабатывают их из очереди.

В этой статье на примерах вы узнаете как работает асинхронная очередь asyncio.Queue.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Тестирование смарт-контрактов в Foundry (часть 2)

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 283
Туториал

В прошлой части мы познакомились с Foundry, создали новый проект и освоили самые базовые команды для тестирования. Сегодня нам предстоит окунуться чуть поглубже, освоить автоматическое форматирование кода (forge fmt), научится отслеживать качество тестирования наших контрактов (forge coverage), выводить подробные логи (vvvv), управлять временем (warp, roll) и деньгами(deal, hoax).

Поехали!
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 3

Делаем простые отчеты в CI с помощью GitLab Pages для Playwright

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 918
Туториал

Привет, Хабр! Я Саша Алексеев, старший инженер по тестированию в Selectel. Некоторое время назад мы столкнулись с необходимостью реорганизовать отчеты end-to-end-тестов. Их прогон стал занимать слишком много времени, мы искали способы распределить их еще больше.

Под катом я поделюсь вариантом, к которому мы в итоге пришли. Сейчас у нас параллельное выполнение тестов в разных джобах с использованием shard=x/y, а общий репорт мы научились склеивать из отчетов разных прогонов.

Хотел бы обсудить это решение в комментариях. Возможно, вы решаете подобную проблему иначе. Выбранный вариант описал в виде инструкции на тестовом стенде, так что сможете легко повторить его в собственных целях.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 0

10 лет Docker: от революционной идеи до современной практики

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

Привет, Хабр! На момент написания статьи, я занимаюсь надежностью (SRE) в компании Workday, еще помогаю студентам в Практикуме осваивать курс по DevOps-практикам.

В этой статье я поделюсь кратким обзором истории Docker, его ключевыми концепциями и мисконцепциями. Надеюсь, это будет полезно для новичков и студентов, изучающих DevOps-практики и виртуализацию.

Читать далее
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 18

Проектирование высокопроизводительных кэширующих решений с использованием Redis и Memcached

Уровень сложности Сложный
Время на прочтение 15 мин
Количество просмотров 1.8K
Обзор

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

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

Redis и Memcached – два из самых популярных и мощных инструментов для реализации кэширования. Redis, изначально разработанный как in-memory хранилище данных, позволяет эффективно хранить и быстро извлекать информацию в памяти, что делает его идеальным выбором для кэширования. Memcached, с другой стороны, специализируется исключительно на кэшировании данных и предоставляет простой, но мощный способ ускорить доступ к данным.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 1

Пакет context в Go: взгляд профессионала

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 3K
Обзор

А вы часто читаете реализацию стандартной библиотеки своего любимого языка?..

Меня зовут Константин Соколов, и мы с Сергеем Мачульскисом, моим коллегой из бэкенд-разработки в Positive Technologies, хотим с вами поделиться вдохновением. Давайте вместе посмотрим на пакет context с последними обновлениями. На наш взгляд, он идеально выражает философию языка Go! Образцовый интерфейс, постоянное развитие пакета и использование самых распространенных приемов Go — все это говорит о том, что наш материал будет полезен не только новичкам, но и знатокам.

Под кат
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 1

В чем конечная цель программирования?

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4.9K

В чем конечная цель программирования? В том, чтобы иметь код, который легко изменять.

Давайте разберемся. Какую проблему мы пытаемся решить?

Мне кажется, что фундаментальная проблема программистов в том, что мы не понимаем, либо же имеем ложные представления о том, зачем мы вообще программируем.

Читать далее
Всего голосов 18: ↑6 и ↓12 -6
Комментарии 39

Собираем машину для стринг-арта

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 3.9K
Туториал
Перевод

Творческие люди такие творческие, что могут рисовать чем угодно на чём угодно. Например, нитками по гвоздям. Этот вид искусства называется стринг-арт (побудем капитаном очевидность и скажем, что нет, стринги тут ни при чём). На самом деле, итоговый результат выглядит красиво и необычно. Правда, работа очень тонкая и кропотливая, далеко не все с ней справятся. А что, если попробовать автоматизировать это искусство? Оказалось, что задача хоть и сложная, но реальная.

Читать далее
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 9

Год ожиданий — и мы получили Python 3.12. Изменения, новшества и дополнения

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

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

Кроме того, запущен процесс альфа-тестирования Python 3.13, где заявлен режим сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock). Тестировать ветку будут в течение семи месяцев, исправляя ошибки и добавляя новые возможности. Затем еще три месяца — тестирование бета-версий и еще через два месяца появится пред-финальная версия. Но будет потом, а сейчас поговорим о том, что уже есть в руках — о Python 3.12.
Читать дальше →
Всего голосов 59: ↑59 и ↓0 +59
Комментарии 62

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

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
IT Recruiting – HR Forum 2023
Дата 8 – 10 ноября
Время 9:00 – 18:00
Место Москва
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

C++ Дайджест №4 (18 сентября – 1 октября 2023)

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.5K
Дайджест

Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.

Приятного чтения!

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 0

Scala Digest. Выпуск 9

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 526
Дайджест

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать. Собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! 

Читать девятый выпуск
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

В чем разница между мидлом и сеньором

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 21K
Мнение

Заметка навеяна вопросом друга на эту тему, решил развернуто ответить.

Далее пойдут, разумеется, лишь только мои мысли, которые основаны на моем опыте. Специально перед написанием этой заметки решил ничего не читать в других местах, чтобы не замылить собственное ощущение. Приступим.

В чем разница между мидлом и сеньором? Пройдем по пунктам:

Зам тимлида

Да, позиция сеньора означает, что он может быть потенциальным замом тимлида, Что это значит?

Читать далее
Всего голосов 35: ↑8 и ↓27 -19
Комментарии 51

Создание простого HTTP-сервера для мониторинга контейнеров Docker на Golang

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 3.2K
Туториал

В этой статье мы рассмотрим пример простого HTTP-сервера, написанного на языке программирования Golang, который предоставляет информацию о контейнерах Docker.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 7

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети

Уровень сложности Средний
Время на прочтение 32 мин
Количество просмотров 4.5K
Туториал

Многие, кто работают с интернет-сокетами в любой сфере IT, задаются вопросом о пробросе портов. Связано это с тем, что практически во всех домашних/общественных/корпоративных роутерах реализован механизм NAT, который перекрывает прямой доступ к устройствам в этих подсетях извне, общаясь с внешним интернетом от их имени.

У NAT есть киллер-фича — он представляет собой идеальный фаервол: атаки извне не могут использовать порты локальных устройств напрямую, следовательно, это решает проблему атак на сетевую уязвимость ОС.

Но, это доставляет и неудобства, например, если ты захочешь подключиться или хотя бы увидеть устройство за NAT в благих целях, то ты чисто теоретически не сможешь это сделать — у него относительно тебя нет IP-адреса.

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 55: ↑55 и ↓0 +55
Комментарии 19

Minetester: полностью открытое окружение для обучения с подкреплением, построенное на основе Minetest

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 1.6K
Перевод

В последние несколько месяцев наблюдаются значительные успехи в разработке языковых моделей, особенно — в сфере частного бизнеса. В прошлом году вышло несколько подобных проектов, основанных на Minecraft. В частности — речь идёт о фреймворке MineDojo, который представляет собой огромный симулятор, а так же — о системах, позволяющих ИИ‑агентам обучаться игре в Minecraft с помощью VPT (Video PreTraining). Похожие проекты появились и в этом году. Среди них — системы, в которых используется SOTA LLM, модель STEVE-1, Minecraft‑агент Voyager, фреймворк GITM.

Базой всех этих разработок является игра Minecraft. В них, кроме того, обычно используется окружение MineRL. Мы, для удовлетворения наших исследовательских потребностей, занимаемся работой над другим стеком инструментов, который основан на воксельном движке Minetest.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 0

Бесплатные редакторы кода для разработчика: подборка для начинающих специалистов

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

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

Читать далее
Всего голосов 39: ↑20 и ↓19 +1
Комментарии 15

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