Pull to refresh
-4
0
Александр Радченко @ARad

Разработчик

Send message

Написал книгу по C#

Level of difficultyEasy
Reading time3 min
Views15K

6 лет писал томными вечерами книгу по программированию. Рассказываю как собрал на неё деньги, с какими сложностями столкнулся и почему каждому разработчику стоит это сделать.

Читать далее
Total votes 31: ↑18 and ↓13+9
Comments22

Мастер-класс по съемке и сшивке панорамных изображений

Reading time11 min
Views2.4K

Введение

Сферическая панорама должна иметь охват 360° или полный круговой обзор по горизонтали и 180° по вертикали или обзор от нижней точки (так называемый надир) до верхней точки (зенит). Если охват будет меньше - такая панорама уже не будет сферической.

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

Эта точка находится приблизительно в центральной части объектива (если точнее, то там, где находится диафрагма), но ее расположение у каждого объектива индивидуально.

У объективов с выдвигающимся далеко вперед линзоблоком (в народе такой конструктив имеет название "хобот") при изменении фокусного расстояния и у объективов с выраженным эффектом "focus breathing" (это явление, когда при наведении объектива на разные дистанции меняется угол его обзора), положение нодальной точки меняется для разных положений линзоблока.

Читать далее
Total votes 10: ↑10 and ↓0+11
Comments42

Spore – игровая песочница с безграничным потенциалом

Level of difficultyEasy
Reading time13 min
Views11K

Игровая индустрия в погоне за прибылью основной упор делает на проекты, созданные в хорошо продающемся жанре, очень часто оставляя другие, особенно экспериментальные, за бортом. Но надо признать, что в этом правиле бывали и исключения, когда даже жадные капиталисты вроде Electronic Arts спонсировали создание такого самородка, как Spore. Правда при этом ЕА сама же его и угробила, но об этом чуть позже. А пока мне хотелось бы начать свой рассказ про это уникальное творение, созданное по инициативе одного из столпов игровой индустрии – Уилла Райта – и его студии Maxis.

Spore – это игровая песочница или симулятор бога, который в интерактивной форме не только покажет процесс эволюции различных форм жизни (пусть и с множеством условностей и упрощений), но и позволит геймеру принять участие в их развитии. Игра хорошо подойдет как взрослым, так и детям и сможет увлечь не только необычным сеттингом, но и интересным геймплеем.

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

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

Читать далее
Total votes 30: ↑29 and ↓1+32
Comments25

Ответ на «Коротко о том, почему Rust лучше C/C++» или меня не бомбит

Level of difficultyEasy
Reading time11 min
Views23K

Собственно ответка на указанную статью.

Решил ответить на претензии автора. А так же рассказать, почему С\С++ именно такой какой есть. Почему приняты такие решения при его создании и развитии. Указать на явные недостатки Rust'а и его инфраструктуры. Язык не может существовать сам по себе. Он должен иметь не только токсичное сообщество, но и быть нужным работодателю.

Поехали
Total votes 84: ↑59 and ↓25+52
Comments292

Еще один электронный конструктор

Level of difficultyMedium
Reading time4 min
Views18K


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

Попытка прямого копирования «Знатока» ни к чему дельному не привела, поскольку так и не удалось самостоятельно изготовить «пуговичные» разъемы. Вместо этого было решено использовать соединения на основе обычных винтов.
Читать дальше →
Total votes 48: ↑48 and ↓0+58
Comments62

Ноутбуки с RISC-V-процессорами всё доступнее: Китай предлагает модель за $300. Что это за девайс?

Reading time4 min
Views19K

Гаджеты с RISC-V-процессорами уже не редкость — некоторые компании, в основном из Китая, выпускают интересные модели. Теперь такого рода устройств стало ещё больше — китайская компания SpacemiT выпустила ноутбук, который базируется на 8-ядерном RISC-V-чипе K1. Есть и другие предложения, подробности — под катом.

Читать далее
Total votes 22: ↑14 and ↓8+13
Comments12

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

Level of difficultyMedium
Reading time22 min
Views9.2K

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

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

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

Читать далее
Total votes 42: ↑42 and ↓0+52
Comments14

Алгоритм пересечения полигонов

Reading time20 min
Views7.8K

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

Читать далее
Total votes 29: ↑29 and ↓0+32
Comments13

Что учесть если используешь SignalR и захочешь масштабировать .Net-приложение?

Level of difficultyEasy
Reading time4 min
Views3.5K

Все мы любим «магию», которую дает нам такой инструмент как SignalR и с удовольствием внедряем это в проекты.

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

Однако и тут есть пара подводных камней, с которым я с командой столкнулся на продакшне...

Читать далее
Total votes 10: ↑9 and ↓1+13
Comments13

Создание простой Roblox игры без особого знания Lua

Level of difficultyEasy
Reading time3 min
Views3.7K

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

Прежде чем мы начнем, вам нужно зарегистрироваться на сайте roblox.com и загрузить Roblox Studio - инструмент, который позволяет создавать игры на платформе Roblox. После установки запустите программу и выберите пустой шаблон для создания новой игры.

Читать далее
Total votes 4: ↑4 and ↓0+6
Comments2

На практике пробуем KAN – принципиально новую архитектуру нейросетей

Level of difficultyMedium
Reading time5 min
Views29K

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

Однако теперь все может измениться. В KAN (Kolmogorov-Arnold Networks) исследователи реализовали перемещение функций активации с нейронов на ребра нейросети, и такой подход показал блестящие результаты.

Читать далее
Total votes 57: ↑56 and ↓1+75
Comments15

Как потреблять API с ограничением по RPS в .NET приложениях

Level of difficultyEasy
Reading time11 min
Views8.7K


Однажды каждый C# программист получает на работе задачу по разработке интеграции с внешней системой, где ограничена максимальная частота запросов в секунду.

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

Но теперь на Хабре есть эта статья, которая научит отправлять запросы из HttpClient так, чтобы не получать 429 Too Many Requests.
Читать дальше →
Total votes 45: ↑44 and ↓1+63
Comments10

Алгоритм деления 2W-разрядных чисел с использованием операций с числами разрядностью W

Level of difficultyMedium
Reading time9 min
Views1.9K

На примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.

Читать далее
Total votes 12: ↑10 and ↓2+17
Comments4

Фундамент AI: обратное распространение ошибки простыми словами

Level of difficultyEasy
Reading time7 min
Views5.9K

Что если бы я вам сказал, что без понимания того, что такое backpropagation (обратное распространение ошибки), вы никогда не сможете использовать AI эффективно? Тогда я бы, конечно, соврал. Знать такие детали не требуется для использования AI в прикладных задачах, но, тем не менее, это базовый фундамент ML/AI, и понимать, как все устроено, полезно, ну или как минимум, интересно.

Читать далее
Total votes 22: ↑22 and ↓0+26
Comments9

Питер Норвиг: автор лучшего в мире учебника по ИИ

Level of difficultyEasy
Reading time5 min
Views18K


Питер Норвиг (Peter Norvig) — выдающийся учёный, один из отцов современной ИИ-разработки. После сингулярности ИИ точно оставит его в живых в знак благодарности.

Норвиг не только хороший программист, но и теоретик программирования, учёный и преподаватель, в длинном резюме перечислено 58 статей, а количество цитирований на сегодняшний день составляет 78 830.

Основное признание Норвиг получил как автор учебника «Искусственный интеллект: современный подход», который в наше время считается самым популярным учебником по ИИ в вузах. Эта фундаментальная работа претерпела уже четыре переиздания.
Читать дальше →
Total votes 46: ↑42 and ↓4+57
Comments7

Как сделать pruning, чтобы потом не плакать

Level of difficultyEasy
Reading time14 min
Views2.8K

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

Идея проста: мы просто убираем из модели все, что нам не нужно. Как в магазине, когда решил экономить: если в корзине лежат лишние товары, то почему бы их не убрать? Так и здесь — мы убираем избыточные нейроны и связи, которые только занимают место, но не приносят особой пользы.

Принцип обрезки можно применять в разных ситуациях. Например, если у нас есть модель, которая обучена для распознавания ста классов объектов, а нам на самом деле нужно только десять, то почему бы не убрать те девяносто лишних? Это позволит нам сделать модель поменьше, но не менее эффективной. А если мы создаем модель с нуля, то обрезка может помочь нам сразу сделать ее компактнее и эффективнее.

Короче, pruning — это для тех, кто хочет сделать свои модели легче и быстрее без потери качества.

Читать далее
Total votes 13: ↑11 and ↓2+13
Comments0

Кто реально угрожает C++ (нет, Rust, не ты)

Reading time14 min
Views74K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Total votes 220: ↑208 and ↓12+244
Comments361

Похоже, я придумал свой алгоритм поиска кратчайшего пути (upd: меня опередили...)

Level of difficultyMedium
Reading time17 min
Views36K

Всем привет! Я реализовал, похоже, собственный алгоритм поиска кратчайшего пути с отрицательными ребрами графа.

Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)

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

Читать далее
Total votes 102: ↑94 and ↓8+102
Comments108

Решение проблемы дымки на изображениях с использованием .NET: Простой и эффективный подход

Level of difficultyMedium
Reading time3 min
Views2.7K

Простое .NET решение для четких фото: избавьтесь от дымки или тумана на изображениях всего за несколько шагов!

Читать далее
Total votes 10: ↑9 and ↓1+11
Comments18

Information

Rating
5,152-nd
Location
Паттая, Чон Бури, Таиланд
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Application Developer
Senior
From 2,000 $
C#
.NET
Algorithms and data structures
Multiple thread
Code Optimization
System Programming
Applied math
Database
High-loaded systems
Designing application architecture