Search
Write a publication
Pull to refresh
18
0
Журат Максим @ChessMax

User

Send message

Алгоритмы сортировки и их производительность

Reading time17 min
Views56K

Здравствуйте, давно читаю Хабр и все хотел написать кому-нибудь статью, но не знал с чего начать и о чем писать. Но решил что тянуть кота за причинное место. Надо просто взять и написать обзор о чем то что я знаю и что будет просто для начало. Поэтому решил описать алгоритмы сортировки в размере 37 штук. Я понимаю, что на Хабре есть подобные статьи, одна постараюсь их добавить количеством алгоритмов и приведением небольшого числа графиков.

Читать далее

Как хранить сеть дорог в БД для построения маршрута?

Level of difficultyHard
Reading time21 min
Views21K

Японцы уже в 2018 году научили немецкий GraphHopper строить маршруты по дорогам хранящимся в PostgreSQL.

Как кастомизировать источник данных, и сохранять новые дороги в таблицу правильно?

Надо всего лишь...

Отвертки и пассатижи гейм-дизайнера: основные инструменты и навыки, которые пригодятся в работе

Reading time8 min
Views7.2K

Предположим, что ты — Junior Game Designer. Ты только начинаешь свой путь, а студия, в которую ты пришел, сразу отправляет тебя в бой — сражаться с реальными задачами. Какие инструменты использовать в работе с конфигурациями? Где собирать макеты для интерфейса? Как искать референсы на анимацию удара булавой? Где украсть данные о референсных проектах? 

Всем привет, меня зовут Вячеслав Сандаков, я гейм-дизайнер в Nord Studio. В этом тексте я отвечу на все эти вопросы и дам несколько советов, которые помогут в работе начинающему гейм-дизайнеру.

Читать далее

Создаем личное файловое облако легко и просто (и дешево)

Reading time13 min
Views172K

А сегодня мы с вами быстро и решительно легко и просто поднимем свое личное файловое облако типа Google Drive или Яндекс.Диск, а если повезет, то еще и очень дешево.

Зачем? Ну, например, потому что не хотим зависеть от корпораций с их кабальными лицензионными соглашениями и сменой условий задним числом. Или потому что нам хочется приватности. Или просто потому что можем. А бонусом на нашем сервере вы потом сможете еще установить VPN или прокси для доступа к запрещенным сайтам, или поднять простенький веб-сайтик.

Я специально будут рассказывать все максимально подробно и пошагово, чтобы даже люди без большого опыта системного администрирования смогли все повторить. В наше время, благодаря развитому инструментарию, такому как docker и snap, установить и настроить все что нужно можно очень быстро всего лишь несколькими командами.

Читать далее

Обработка исключений в Java в функциональном стиле

Reading time4 min
Views28K

В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.

Предпосылки

В Java начиная с версии 8 появились новые возможности в виде функциональных интерфейсов и потоков (Stream API). Эти возможности позволяют писать код в новом функциональном стиле без явных циклов, временных переменных, условий ветвления и проч. Я уверен что этот стиль программирования станет со временем основным для большинства Java программистов.

Читать далее

Образование в РФ избыточно

Reading time22 min
Views157K

Эта статья призвана дать ответы на вопросы, которые возникают у некоторых студентов во время обучения и после окончания вузов относительно процесса обучения, образования вообще. Вроде таких наивных вопросов:

Для меня, как человека, который верил в то, что учебное заведение призвано ОБУЧАТЬ, это было, мягко говоря, шоком.

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

Также она, возможно, будет небезынтересна родителям, непонимающим для чего система образования РФ делает те или иные вещи.

Еще я попробую дать отпор различного рода пропагандистам многословно рассуждающим о проблемах образования РФ и мнимых путях их решения, о каких-то компетенциях, о нужности или ненужности ЕГЭ, об инновациях и цифровизации в образовании, прочих "внутренних" вещах, но никогда не говорящих о сути системы образования РФ. Это происходит потому, что подобного рода статьи нацелены на сокрытие главной проблемы и внедрении определенных мыслей, а не простом и понятном разъяснении сложившейся ситуации с образованием в РФ.

Прежде всего я опишу свой личный опыт взаимодействия с системой образования РФ, чтобы вы представляли как я учился, и к каким умозаключения приходил тогда; это поможет понять ход моих рассуждений в основной части статьи, где я проанализирую образовательную систему РФ.

Читать далее

Блеск и нищета IT в Германии

Reading time7 min
Views184K

Уже четыре года я работаю Java разработчиком в небольшой немецкой компании.

В начале прошлого года я увидел на столе одного из моих «кураторов» забытый листок с расчётом заработной платы за месяц. Конечно же, я не мог в него не посмотреть. Сумма, которую я увидел у Нильса, меня удивила. Зарплата брутто: 3300€ в месяц. Живет один, жены нет, детей нет. Значит на руки у него выходит примерно 2130€ (~130000 рублей по курсу на 01.09.2022).

Можете себе представить? Мой куратор, урожденный немец, Senior Developer, прекрасно говорящий на английском, с опытом работы разработчиком более пятнадцати лет получает в Германии 3300€ в месяц. А я – Middle Java разработчик с немецким B2 и английским B1 на испытательный срок получил сразу 3500€! Сейчас моя мой зарплата 4000€ в месяц.

Многие мне не поверили. Некоторые не верят даже в мои 4000€ (слишком мало), не говоря уже про зарплату Нильса. Откуда такая мизерная зарплата для столь высококвалифицированного работника? Ведь в представлении большинства наших соотечественников все разработчики в Германии деньги просто лопатой гребут. Особенно, если они работают в финансовой сфере. Цифры должны по-любому начинаться от 6000€ в месяц. Какие 3300???

Вот и levels.fyi (на КДПВ) говорит, что медианная зарплата разработчика в Германии 83160€ в год (6930€ в месяц)

Выходит, что Зарплата Нильса ниже нижнего предела (такого столбца даже нет на этом графике). Так какая же в реальности зарплата у разработчиков в Германии?

И почему Нильс получает так мало?

Опыт неопытного тимлида

Reading time4 min
Views13K

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

Читать далее

Inkscape с 0 до Pro за 5 дней

Reading time17 min
Views60K

Создал мини курс по программе для векторной графики Inkscape в 2022.

Разработал методические материалы для изучения темы «Кодирование и обработка графической и мультимедийной информации» в школьном курсе информатики.

«Векторные графические редакторы позволяют пользователю создавать и редактировать векторные изображения непосредственно на экране компьютера, а также сохранять их в различных векторных форматах, например, CDR, AI, EPS, WMF или SVG». «Inkscape - редактор векторной графики, аналогичный по своим возможностям таким программам, как Adobe Illustrator, Corel Draw и другим».

Читать далее

Physically-based rendering. Ray marching (часть 2)

Reading time6 min
Views4.5K

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

Перед вами продолжение статьи про рендеринг. В первой части, которую вы, кстати, можете найти по ссылке (link), мы поговорили о трассировке лучей и маршевом методе, а в этой части мы с вами получим фотографию мыльного пузыря. Будет интересно :)

Читать далее

20 лет проблем приема платежей

Reading time11 min
Views22K
image
За логотип спасибо yarbabin

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

Алгоритмы для веб-разработчиков простыми словами

Reading time6 min
Views52K

Здравствуйте, друзья! Данным постом мы открываем цикл статей об алгоритмах и структурах данных.

В этой статье мы поговорим о том, зачем вообще их нужно знать веб-разработчикам, и затронем тему оценки сложности алгоритмов и Big O нотации.

Зачем мне алгоритмы? Я фронтендер!

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

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

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

Также это помогло им прокачать главный скилл разработчика – умение логически думать и решать сложные технические задачи.

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

Ведь они ищут лучших из лучших, и знание алгоритмов как раз делает вас лучше как разработчика. Тем более, лучше инвестировать свое свободное время в новые знания и навыки, чем в сериалы на Netflix.

И на этой прекрасной ноте давайте перейдем к основной теме статьи.

Читать далее

Нет HUD’а без добра: HUD в игровых интерфейсах

Reading time9 min
Views12K

В играх существует огромное количество интерфейсов: инвентарь, диалоги, меню крафта и торговли, лобби, карта, деревья прокачки персонажа и его экипировки и многие другие. Все они позволяют игрокам взаимодействовать с представленными через интерфейс механиками, которые создатели игры заложили в свой продукт. И в этой статье мы подробно разберем один из самых важных элементов игрового UI: HUD (heads-up display).

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

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

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

Читать далее

Вычисления с плавающей запятой: сравниваем вывод в разных языках

Reading time6 min
Views8.7K

С вашим языком программирования все в порядке — он просто производит вычисления с плавающей запятой. Изначально компьютеры могут хранить только целые числа, так что им нужен какой-то способ представления десятичных чисел. Это представление не совсем точное. Именно поэтому, чаще всего, 0.1 + 0.2 != 0.3.

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

Предлагаем хабрасообществу наш перевод этого материала. Обращаем ваше внимание, что позиция автора не всегда может совпадать с мнением МойОфис.

Читать далее

Атака на String.hashCode: прообразы и коллизии

Reading time8 min
Views14K
Дюк прощупывает сезон Java

Как-то раз мне понадобилось несколько наборов строк с коллизией по хеш-коду. То есть таких, чтобы значение String::hashCode() совпадало для всех строк в наборе.

Блуждание по интернету не дало результатов, примеров было мало и все они довольно однообразны. Поиск по словарям подарил забавную пару "javascript's".hashCode() == "monocle".hashCode(), но практической пользы не принёс. Полный перебор не рассматривался в виду скорой тепловой смерти вселенной.

Тот самый случай, когда проще сделать всё самому. Стандартная хеш-функция строки в Java считается криптографически нестойкой, так что знаний из школьного курса математики должно быть достаточно.

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

Шахматы на C++

Reading time68 min
Views53K

Не так давно я захотел написать свой шахматный движок. На удивление в Интернете нашлось не так много хороших статей на эту тему. Были статьи с довольно слабыми программами, многие из которых даже умудрялись пропускать некоторые важные правила. А были статьи с хорошими программами (некоторые из них были даже чуть лучше чем получилось у меня в итоге), но там авторы рассказывали лишь основные идеи, пропуская подробности, из-за чего написать что-то свое по таким статьям было проблематично. Поэтому после написания своей программы, я решил написать статью, дабы облегчить жизнь интересующимся в данной теме. Я не претендую на лучшую шахматную программу или на чистейший код, но эта статья будет хорошим и легким началом для тех, кто хочет написать что-то свое.

Читать далее

Встречайте Raspberry Pi Pico или почему мы решили делать наши клавиатуры на «малине»

Reading time3 min
Views12K

Raspberry Pi Pico была выпущена 21 января 2021 года, британской компанией Raspberry Pi Foundation. Ее появление не могло не обрадовать энтузиастов, использующих кастомные клавиатуры. В прошлом мы использовали для нашей клавиатуры Dactyl Manuform контроллер Pro Micro (на основе ATmega32u4) со встроенной памятью 32kb, на который аскетично умещались только базовые функции. У нас была настоящая битва за каждый Кбайт свободного пространства.

Читать далее

Кривые в компьютерной графике. Урок 1: Анимации

Reading time6 min
Views9.9K

Мы продолжаем цикл статей про математику и смежные дисциплины в компьютерной графике по курсу Александра Паничева, ведущего разработчика логики в UNIGINE. В этот раз поговорим о функциях плавности, которые используются в анимации (и не только).

Читать далее

Flutter jank shaders — история проблемы и пути решения

Reading time6 min
Views3.7K

Меня зовут Андрей, я Flutter-разработчик в команде Центра развития финансовых технологий (ЦРФТ) Россельхозбанка. Сегодня поговорим о «jank shaders» — дёргающейся анимации при первых запусках приложений на Flutter — и о том, как можно постараться её исправить.

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

На скриншоте ниже приведен пример задержки анимации перехода между экранами при первом запуске.

Читать далее

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Mobile Application Developer
Senior
Flutter
Flutter Bloc
MobX
Mobile
Development of mobile applications