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

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

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

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

Шардирование баз данных и проектирование систем

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

Шардирование базы данных — это процесс её разделения на несколько машин, что способствует масштабируемости приложения. Механизм шардирования предполагает разбиение данных на два или более мелких фрагмента, называемых логическими шардами. Затем логические блоки распределяются по отдельным узлам базы данных, называемым физическими блоками, каждый из которых может содержать несколько логических блоков.

Такой подход позволяет избежать проблем с производительностью, возникающих, когда одна из машин работает в условиях перегрузки, и обеспечивает более экономичное и грамотное масштабирование. По мере увеличения объема данных и трафика все чаще возникает необходимость горизонтального масштабирования путем добавления новых машин, а не вертикального путем модернизации одного большого сервера.
Читать дальше →
Всего голосов 11: ↑12 и ↓-1+13
Комментарии3

Шпаргалка по безопасной сборке Docker-образов

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

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

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Продолжаю рассказывать о безопасности в Docker. Под катом расскажу, как настроить сборку образов, обеспечить безопасность и добавить сканирование в пайплайн.
Читать дальше →
Всего голосов 50: ↑53 и ↓-3+56
Комментарии7

Почему я отказался от разработки игр на Rust, часть 2

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

Часть 1

Обобщённые системы не приводят к интересному геймплею

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

Это сильный аргумент, на который почти нечем ответить, за исключением того, что обобщённые системы приводят к скучному геймплею. Я был довольно активен в сообществе разработчиков игр на Rust, поэтому видел множество проектов, которые создают другие; разумеется, предлагаемые ими рекомендации коррелируют с теми играми, которые они создают. Люди, которые склонны создавать красиво спроектированные системы, работающие полностью обобщённо, обычно создают не совсем игры, а симуляции того, что со временем станет игрой; в таких симуляциях геймплеем часто считается даже нечто типа «у меня есть персонаж, который может двигаться».

Читать далее
Всего голосов 22: ↑23.5 и ↓-1.5+25
Комментарии28

IBM i: системные очереди данных

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

IBM i (AS/400) является "объектной" системой, построенной на концепции "все есть объект". У каждого объекта есть имя (может меняться в течении его жизненного цикла), тип (устанавливается единожды при создании и далее не меняется) и, в некоторых случаях, атрибуты ("подтип", аналогично типу, устанавливаются при создании и не могут быть изменены). Также объект может иметь текстовое описание (необязательное) - строка до 50-ти символов, которое может быть задано как при создании, так и после.

Действия, разрешенные над данным конкретным объектом, определяются его типом. Простейший пример - тут нельзя открыть программу в hex редакторе и поправить пару байтиков - такая операция просто не предусмотрена для объекта типа *PGM.

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

Цитата из предисловия к книге Френка Солтиса "Основы AS/400":

Читать далее
Всего голосов 5: ↑5.5 и ↓-0.5+6
Комментарии15

Linux, Git и базы данных: что почитать новичкам в Академии Selectel

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

Источник.

Новичкам бывает сложно войти в администрирование. Комплексные курсы стоят дорого, а самостоятельный поиск информации заканчивается пополнением закладок, о которых вспоминают раз в год. В тексте собрали шесть бесплатных курсов по рекомендации от наших коллег. Их можно пройти сразу или постепенно — сохраним ваш прогресс, когда бы вы ни вернулись.
Читать дальше →
Всего голосов 38: ↑39.5 и ↓-1.5+41
Комментарии5

Как начать мыслить о ИИ

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

В этой статье я расскажу о своем представлении того, с чего можно начать мыслить о создании искусственного интеллекта (ИИ, цифрового интеллекта, ЦИ), даже если он будет очень простым. Здесь я привожу несколько идей, которые должны показать, как можно мыслить о ИИ по-другому, с точки зрения того, какими основными свойствами должна обладать интеллектуальная программа и с чего можно начать мыслить в направлении создания ИИ.

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

Книга: «Roblox в действии. Искусство разработки игр»

Время на прочтение7 мин
Количество просмотров1.5K
image Привет, Хаброжители!

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

Книга сочетает теорию с практикой, поскольку с разработкой игр связаны множество смежных дисциплин: программирование, 3D-моделирование и анимация, работа со звуком, написание сценария, художественное оформление (level design), маркетинг и многое другое. Мы будем создавать логику поведения персонажей и некоторых объектов в игре. Чтобы твоя игра была уникальна, нужно научиться создавать свои игровые объекты: 3D-модели, звуки, изображения и текстуры. Проектируя элементы игры, ты наберешься опыта и отточишь навыки разработчика игр, гейм-дизайнера, звукорежиссера и программиста.

Игры, которые мы будем создавать, могут запускаться в любых распространенных операционных системах: Windows, MacOS, iOS, Android и Xbox One, а значит, в них смогут сыграть очень много людей. В среде Roblox Studio заложены не только кроссплатформенность, но и мультиплеер, позволяющий подключаться к игре множеству игроков.
Читать дальше →
Всего голосов 7: ↑8 и ↓-1+9
Комментарии3

Язык программирования Mojo: что нового в версии 24.3?

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

На днях была опубликована новая версия языка программирования Mojo, теперь это 24.3. Новинка получила несколько важных компонентов, которые требуются для создания приложений на этом языке. Например, компилятор, интерактивная REPL-оболочка для сборки и запуска программ, отладчик, дополнение к редактору кода Visual Studio Code (VS Code) и т. п.

Стоит отметить, что исходники открыты под лицензией Apache 2.0. После того как будет завершено проектирование внутренней архитектуры, разработчики откроют и код компилятора. Ну а подробности изменений и дополнений — под катом.

Читать далее
Всего голосов 12: ↑12.5 и ↓-0.5+13
Комментарии6

Программисты больше не нужны, их «уволит» ИИ?

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

«Через пять лет мы увидим решения, которые смогут заменить как минимум 50% программистов уровня junior и middle», ― шокирует один из экспертов недавней дискуссии, прошедшей на Youtube-канале Ai4Dev. Но так ли страшен черт, как его малюют? Более ста тысяч строк кода в секунду, автоматизация рутинных задач, повышение эффективности ― все это уже часть нашей реальности благодаря применению ИИ в разработке. Однако не все согласны с тем, что искусственный интеллект ― это лекарство от всех болезней. «Именно люди двигают компанию. И генеральный директор, и дворник ― каждый вносит свой вклад», ― напоминает другой участник разговора. Так что же нас ждет ― революция или эволюция? Ответы на этот и другие вопросы вас ждут в сегодняшнем новом материале блога ЛАНИТ на Хабре.

Читать далее
Всего голосов 34: ↑34.5 и ↓-0.5+35
Комментарии28

Мастерим многопоточность: техники и инструменты для Java-разработчиков. Часть 1

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

Привет, Хабр! Это первая часть обзора по изучению существенных тем Java стека и туториала по их применению. В этой статье вы найдете важные аспекты многопоточности в Java, а также полезные шпаргалки с практическими примерами.

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

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

Мегагайд: культура работы с Git

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

Привет всем! Меня зовут Юля, я фронтенд-разработчик, наставник на курсах по JS и React и организатор профессионального сообщества Tbilisi JS. В Практикуме я помогаю студентам на курсе «React-разработчик».

За время работы в разных компаниях и над разными проектами я поняла, что Git — это не только (и не столько!) знание самой технологии и конкретных команд, но и определённая культура взаимодействия, практики, подходы, договорённости. Всё это помогает участникам команды лучше понимать друг друга и работать быстрее и чётче.

Поговорим как раз об этом — о том, что формирует культуру работы с Git: начнём с конвенций именования коммитов и закончим практиками работы в пуллреквесте. В конце статьи я поделюсь полезными ссылками на интерактивные обучалки, шпаргалки и гайды.

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

Java Digest #12

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

Всем привет! 👋 👋 👋👋

Мы — Java-разработчики Тинькофф: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом месяце в меню обновления: Intellij Idea с модным терминалом и AI-подсказками, миграции на новые версии Spring Boot за пару кликов в новой версии Java on VS Code, не забыли обновить и Micronaut, GraalVm, PMD и JMC. На горячее JEPы: Exception handling in switch, Derived Record Creation, Stream Gatherers, Vector API, String Templates. Не забыли и про бесплатный сыр — доступ к Spring Academy Pro. 

Утоляем голод по новым знаниям интересными статьями и видео, для любителей экзотики — новые инструменты сборки, если не пробовали bld. А на десерт стоит присмотреться презентациям с прошедшего Jpoint 2024. 

Читать двенадцатый выпуск
Всего голосов 20: ↑20.5 и ↓-0.5+21
Комментарии5

Взлом вашей первой программы

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

Наша задача - сделать так, чтобы программа выводила "Good" в независимости от того, что пользователь ввёл в поле пароля. Если вы захотели декомпилировать данную программу, закинув EXE-файл в программу по типу dotPeek или ILSpy, то у вас ничего не выйдет. Ведь данная программа написана не на C#, исходный код которого можно легко посмотреть, а на C++, декомпилировать который нельзя.

Читать дальше →
Всего голосов 18: ↑19 и ↓-1+20
Комментарии14

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

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Шутки про программистов. Классификация

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров27K
Заставка сайта The Olognion, который специализируется на сатирических «новостях» про IT-индустрию

Шутки про программистов — особый вид юмора и городского фольклора. Некоторые из них рассчитаны на самих программистов, то есть понятны только им, хотя другие доступны и более широкой аудитории. В принципе, их можно классифицировать по темам. Есть несколько типичных тематик, некоторые из них мы упомянем здесь. Естественно, с примерами.
Читать дальше →
Всего голосов 78: ↑74 и ↓4+70
Комментарии130

История успеха. Внедрение платформы «Вебмониторэкс» для защиты приложений «СберАвто»

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

В свете постоянно меняющегося ландшафта киберугроз, компания «СберАвто» столкнулась с необходимостью эффективно и быстро реагировать на появление новых уязвимостей и способов их эксплуатации. Особенно в части защиты web-приложений, так как основой бизнеса компании является её сайт.

Инфраструктура компании построена на основе микросервисов взаимодействующих друг с другом по API, в связи с этим, сильно возросла важность обеспечения наблюдаемости всех API и мониторинга их изменений. 

Для обслуживания каждого инстанса web-приложения компания «СберАвто» использует кластерную пару веб-серверов Nginx, которые выполняют функции балансировки нагрузки, маршрутизации запросов и обработки HTTP-запросов от клиентов. Поэтому, при выборе межсетевого экрана уровня приложения (WAF) было важно обеспечить непрерывную интеграцию с существующей инфраструктурой на базе Nginx.

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

Гибкость в выборе вариантов установки ноды WAF как на балансировщики нагрузки, так и в контейнер рядом с конкретным приложением, обеспечила возможность защитить  в том числе и сервисы, расположенные внутри инфраструктуры. Развертывание доступно с использованием playbook Ansible или Terraform, что существенно упрощает процесс установки и обслуживания.

Платформа «Вебмониторэкс» имеет большие возможности обеспечения наблюдаемости и защиты API. В частности, для наблюдения за API, построения OAS и мониторинга изменений API был использован модуль «Структура API» (рис.1), более подробно про данный модуль можно прочитать в нашей документации.

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

Конференция «Инженеры будущего». Описание проекта

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

Я участвовал в конференции «Инженеры будущего» для школьников в Москве в апреле 2024 года и рассказал о своем опыте в предыдущей статье на Хабре https://habr.com/ru/articles/810939/

Сейчас я ищу научного руководителя, который направит мою разработку в области Natural Language Processing и применения генеративного ИИ.

Описание проекта
Всего голосов 3: ↑3.5 и ↓-0.5+4
Комментарии0

Расширение Функциональных Интерфейсов Java

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

За годы прошедшие с их появления в Java8 у меня набралась коллекция полезных решений и шаблонов, которые я переносил из проекта в проект, и которые в стандартной версии так и не были осуществлены. Недавно я решил собрать все вместе в небольшом проекте с открытым кодом. В первом релизе проекта расширения охватывают следующие аспекты:

Читать далее
Всего голосов 13: ↑13.5 и ↓-0.5+14
Комментарии38

4 стихии программной документации: The Grand Unified Theory of Documentation

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

В статье я хочу рассказать об одной очень интересной теории разработки документации на системы и программы. Её авторы утверждают, что создали ни много ни мало «Великую Единую Теорию Документации» (The Grand Unified Theory of Documentation). Мы привыкли с опаской относиться к заявлениям о том, что кто-то обнаружил сокровенную истину и раскрыл её профессиональному сообществу. В теории изложены идеи и правила, которые мы встречаем в разных методиках разработки документации и сами применяем на практике.

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

Читать далее
Всего голосов 23: ↑23.5 и ↓-0.5+24
Комментарии9

Век поиска кратчайшего решения задачи о кратчайшем пути

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

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

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

Читать далее
Всего голосов 37: ↑38 и ↓-1+39
Комментарии14

Как обойти лимит Telegram API для групп свыше 10,000 участников

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

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

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

Эта инициатива казалась нам многообещающей, однако в процессе реализации мы столкнулись с серьёзным ограничением. При попытке загрузить список пользователей из группы на 13,000 человек, система смогла обработать только 10,000. Это ограничение API Telegram значительно усложнило выполнение задуманного плана, требуя от нас дополнительных технических решений.

Читать далее
Всего голосов 18: ↑7 и ↓11-4
Комментарии10

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