Pull to refresh
19
0

Java/Scala разработчик

Send message

Трёхмерная графика с нуля. Часть 1: трассировка лучей

Reading time42 min
Views130K
image


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

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

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


Читать дальше →
Total votes 90: ↑90 and ↓0+90
Comments53

Основы Docker за Х часов и Y дней

Reading time8 min
Views161K

0. Вступление


Цель данной статьи собрать в небольшую кучку основную информацию, минимально достаточную для того, чтобы начать работать с докер на ежедневной основе и удалить с рабочей машины локально установленные apache, mysql, virtualenv, python3, mongodb, memchaced, redis, php5, php7 и весь остальной зоопарк, который мы используем при разработке, и который зачастую еще и конфликтует между собой от версии к версии.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments16

Обходим коммерческую защиту методом black box и пишем packet hack для lineage 2

Reading time12 min
Views29K

Пролог


Все началось год назад, когда один из моих товарищей с форума T предложил переписать известную всему читерскому миру программу l2phx за авторством многоуважаемого xkor`а.
Сам l2phx (l2 packet hack, пакетник, хлапа) представляет из себя сниффер входящих и исходящих пакетов (все реализовано через LSP) клиента lineage 2 (существуют версии для других mmorpg), с возможностью отправки/подмены отдельных пакетов. Xkor постарался как следуют: реализовал методы обхода шифрации, красивый gui и тп. Но злобным админам фришек такое приложение не понравилось: оно существенно убивало их доход на старте очередных однодневок. Да-да, были времена когда любой нонейм мог зайти на любой сервер и устроить полную вакханалию этим инструментом. Тогда же и появились всяческие коммерческие защиты, которые безуспешно блокировали использование пакетника, а самые хитрые из них еще дополнительно шифровали трафик. Одна из таких защит живет на последнем издыхании и по сей день: встречайте, защита S. Сегодня защита S стоит на всех топовых серверах lineage 2. К слову, xkor предусмотрел такой исход и реализовал возможность самостоятельно написать модуль расшифровки пакетов (newxor.dll). Да только писать его было не рационально: новый сервер == новый newxor. Читерство по l2 постепенно начало умирать, ибо новички были не в состоянии отправлять пакеты методами изменения памяти клиента (HxD, cheat engine и тд).

Тогда я отнесся к этой затеи не очень серьезно: написал модуль перехвата пакетов клиент -> сервер и забросил. Почему? Потому. Но буквально 3 дня назад я решил возобновить работу над этим проектом и опубликовать данную статью. Почему? Комьюнити читеров l2 на данный момент мертво. Все баги и отмывы к ним находятся в руках 10 человек, которые общаются между собой в скайпе и на форуме T. И я тоже решил уйти. А если уходить, то лишь красиво)) Два года назад я мечтал о работающем пакетнике, а сегодня он мне не нужен.
Total votes 24: ↑22 and ↓2+20
Comments13

Подробности создания бота для Dota 2

Reading time5 min
Views22K
Результат игры нашего бота показывает, что игра с самим собой [self-play] может серьёзно увеличить качество систем машинного обучения, и повысить его от состояния гораздо ниже уровня человека до уровня сверхчеловека, при наличии соответствующих вычислительных мощностей. В течение месяца наша система поднялась с состояния, едва ли соответствовавшего уровню хорошего игрока до состояния, в котором она обыгрывала лучших профессионалов, и с тех пор продолжает совершенствоваться. Качество системы контролируемого глубинного обучения определяется набором учебных данных, но для систем, играющих с самими собой, доступный набор данных автоматически улучшается.

image
Изменение рейтинга TrueSkill (схожего с рейтингом Эло для шахмат) нашего бота со временем, подсчитанная при помощи симуляции игр между ботами.
Total votes 11: ↑10 and ↓1+9
Comments18

Идеальная ОС: переосмысление операционных систем для десктопа

Reading time17 min
Views39K
TL;DR: К концу этого эссе я надеюсь убедить вас в следующих фактах. Во-первых, что современные десктопные операционные системы никуда не годятся. Они раздутые, тормознутые и напичканы легаси-хламом, а кое-как работают только благодаря закону Мура. Во-вторых, что инновации в десктопных ОС прекратились около 15 лет назад, а основные игроки вряд ли собираются много вкладывать в них снова. И наконец, я надеюсь убедить вас, что мы можем и должны начать с нуля, усвоив уроки прошлого.

«Современные» десктопные ОС раздуты


Возьмём Raspberry Pi. За 35 долларов я могу купить отличный компьютер с четырьмя процессорными ядрами, каждое на частоте более гигагерца. У него также есть 3D-ускоритель, гагабайт оперативки, встроенные WiFi с Bluetooth и Ethernet. За 35 баксов! И всё-таки для многих задач, которые я хочу на нём запустить, Raspberry Pi ничем не лучше компьютера на 66 мегагерц, который был у меня в колледже.


Читать дальше →
Total votes 57: ↑42 and ↓15+27
Comments123

Пошаговый план старта на Upwork #2

Reading time4 min
Views61K
image

Предыдущая часть.

Надеюсь что вы уже зарегистрировались и заполнили профиль, если нет, то вам в прошлую статью. А мы начнем.

Перед регистрацией советую внимательно прочитать правила биржи, иначе как это было в моем случае — можно улететь в бан «без-воз-мез-дно».
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments53

Play with Docker — онлайн-сервис для практического знакомства с Docker

Reading time4 min
Views66K


В конце прошлого года два капитана Docker представили свою разработку под названием Play with Docker (PWD) — «игровую площадку для Docker». Пользователям предлагается бесплатно поработать со сборкой и запуском Docker-контейнеров прямо в веб-браузере, а также выполнить лабораторные работы для знакомства с Docker с нуля и совершенствования своих навыков.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments6

Работа с сервлетами для чайников. GET / POST

Reading time8 min
Views98K


В прошлой статье Создание сервлетов для чайников. Пошаговое руководство я описал, как создать сервлеты и попытался объяснить, как это работает. В этой статье мы научим наши сервлеты работать с UI через HTTP-запросы GET и POST.

На самом деле, этих запросов намного больше, но для чистоты эксперимента мы разберём только два основных.

  • GET — обрабатывает адресную строку, которая получается при вызове сервлета. Например, site.com/example?action=test&id=10&admin=true
  • POST — обрабатывает загруженный контент (картинку, файл, строки, объектные данные), в общем, всё, что можно передать через HTTP

В Java-сервлете запросы POST и GET обрабатывают соответствующие методы doPost(); и doGet().
Читать дальше →
Total votes 9: ↑5 and ↓4+1
Comments6

Почему я работаю только удалённо

Reading time5 min
Views57K
image

Создание программного обеспечения для стартапов — серьёзная задача. Не потому, что само написание программного обеспечения является довольно трудным, а потому, что у большинства стартапов места для выполнения такой работы далеки от оптимальных. За свои более чем 10 лет опыта разработчика ПО для стартапов я научился не доверять способности работодателей обеспечить мне адекватную рабочую среду, и это мешает мне выполнять работу для них наилучшим образом. Я, по своей природе, амбициозный, энергичный, и я не хочу ничего более, чем выдать на том месте, где я работаю, лучшее из того, что я могу. Я отдаю себя на 100% компании, в которой я работаю. Но в большинстве мест, где я работал, было сделано немало, чтобы воспрепятствовать мне в этом. Вот почему в какой-то момент времени я занял чёткую позицию: отныне я буду работать только «удалённо».
Читать дальше →
Total votes 77: ↑65 and ↓12+53
Comments298

Обзор наушников Bluedio: разрыв шаблона от создателей Beats

Reading time15 min
Views106K
Принято считать, что разработчики смартфонов и прочей мобильной электроники (планшетов, ноутбуков, смарт-часов и пр.) наживаются на бедных потребителях. Видели новости с заголовком вроде «айфон нам продают за 500 баксов, а цена его комплектующих всего 250»? Я как раз об этом. Однако Apple со своими смартфонами – это ещё относительно честный производитель, который делает минимальную наценку. Неужели бывает хуже? Бывает. Пальму первенства в области развода покупателей удерживают – тарам-пам-там – производители наушников!

Всё дело в том, что производство наушников – бизнес крайне высокомаржинальный. Если не считать профессиональные аудиофильские модели ценой в пару тысяч долларов, где действительно применяются уникальные компоненты (вроде моделей STAX или Astell&Kern), подход к созданию «ушей» у всех производителей примерно такой. Берём старую начинку, слегка подкручиваем звучание (ну чтобы новая модель хотя бы немного отличалась от старой), чуток изменяем дизайн (с той же целью), продаём. Всё! Учитывая, что каких-либо реально дорогостоящих компонентов в массовых серийно выпускающихся наушниках нет, а на разработку «c нуля» тратиться не приходится, стоимость производства (cost of materials) одного флагманского экземпляра практически любого бренда редко превышает 50, ну максимум 70 долларов. Откуда же появляются модели за 500 баксов и дороже? Оттуда и появляются – потребителю впаривают не столько технологии и звучание, сколько бренд. Давайте-ка разберёмся в ситуации поглубже и параллельно обозреем линейку «антипафосных» наушников не так давно появившегося на российском рынке бренда Bluedio. Наушники этого производителя ориентированы как раз на тех, кто не желает выбрасывать даже лишний рубль (пусть даже может себе это позволить) и при этом хочет получить реально клёвые, хорошо звучащие «уши». Без наценки за «пафос».


Читать дальше →
Total votes 41: ↑31 and ↓10+21
Comments109

Хакинтош: разворачиваем macOS Sierra на Intel-PC подробно и понятно

Reading time13 min
Views1.1M
ПРОЧТИ МЕНЯ ПОЖАЛУСТО

Если вы НЕ МОЖЕТЕ распаковать файлы на флешку, пожалуйста, отойдите от кливиатуры и срочно прочитайте книгу «Компьютер для чайников: подробное пособие как пользоваться ПК»!!!



1. Все файлы залиты на МЕГУ. Кто испытывает с ней проблемы — в комментариях перезалили на торрент.
2. Пожалуйста, не спрашивайте меня про установку Мака на ноутбуки. Прошу вас. Пожалуйста. Это очень геморройный процесс. Поставьте себе убунту и подключите тему Мака. Тот же экспириенс получите
3. Я на хабре редко отвечаю, пишите в вк по всем вопросам.


Данный мануал/гайд/etc написан для тех, кому лень собирать по кускам ту или иную информацию об установке «мака» на PC, все понятно и по полочкам.
Читать дальше →
Total votes 68: ↑65 and ↓3+62
Comments146

Первое приложение на Spring Boot + ReactJS

Reading time7 min
Views74K
В жизни каждого Java разработчика может наступить момент, когда ничего не остаётся, как использовать в своём приложении ReactJS. Если, конечно, не AngularJS. Вы долго сопротивлялись, но этот момент настал и надо что-то делать. Вы слышали, что есть Node.JS, что он умеет быть web-сервером, но это уже через чур. У вас будет кошерный Spring Boot. К сожалению, поиск в гугл способен очень запутать. Много разных гайдов, все оперируют разными версиями реакта и сопутствующих средств. Данный гайд описывает процесс создания простейшего Spring Boot + ReactJS приложения, простой и приятный.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments11

Дерево и звук… электрогитары, а также оргстекло и упаковочный картон

Reading time5 min
Views48K
Поводом к этому посту послужило обилие публикаций в сети и музыкальном глянце о влиянии породы дерева, из которой изготавливается дека, на звук электрогитар. Многочисленные обсуждения на форумах, таблицы, распространяемые некоторыми кастом-мастерскими, а также (что особенно беспокоит) утверждения научных сотрудников РАН (ссылку прилагаю) стараются убедить читателей в том что:

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



Что в конечном итоге приводит к существенным, важным для исполнителя и слушателя изменениям (частотным, тембральным и т.п.). Информация о значительном влиянии дерева на гитарный звук электрогитар была названа «деревянной теорией», и в настоящее время имеет множество сторонников и противников. Между тем, хочу отметить, что текстура дерева очень здорово смотрится, и эстетические качества электрогитар во многом зависят от материала, из которого созданы деки.
Total votes 40: ↑36 and ↓4+32
Comments253

Почему Hackintosh уже актуален. Развенчание мифов

Reading time7 min
Views135K

Каждому iOS разработчику нужен свой уголок с печеньками, плюшевой уточкой и шайтан-машиной на OSX.


В свете перехода на Swift, мощность железа стала особенно востребована. Чтобы комфортно разрабатывать под айфоны, нужен как минимум процессор с частотой 3+ ghz, SSD на 120-250Gb и оперативы гигов 16. Все это как раз для того, чтобы не было желания посмотреть футбол, пока запускается проект или открывается interface builder.


А знаете, что еще было всегда актуально? Сумасшедшие цены на яблочные устройства:


image


PC с таким же, плюс-минус, железом можно запросто собрать всего за 30.000 рублей! (инфа на ноябрь 2016). Многие, конечно, думают, что раз компания покупает железо, то значит финансы бесконечные, можно не стесняться в средствах. Если вы работаете в Google, то вам повезло и жизнь хороша. Но в остальных случаях это не так.


Что же делать? Не разрабатывать же под Android в конце концов?


Под катом мы узнаем о современном Hackintosh, его роли в разработке, способам безболезненной установки и настройки, услышим мнение людей, работающих на нем не первый год, и проведем тест на iOS инструментах.


Читать дальше →
Total votes 128: ↑110 and ↓18+92
Comments431

Как стать Oracle Certified Professional Java SE 8 Programmer

Reading time7 min
Views94K
В этой статье речь снова пойдет о сертификации. Не так давно я рассказывал о процессе получения сертификата от компании Google для Android разработчиков. Почитать об этом можно вот здесь. В статье я периодически приводил сравнение с процессом получения сертификатов от Oracle. Немного подумав, я решил раскрыть эту тему подробнее, благо сертификат от Oracle я получил полгода назад и еще не все забыл. Естественно, на хабре уже не раз описывали этот процесс. Например, достаточно подробные описания можно найти тут и тут. Однако, указанные статьи были написаны несколько лет назад, и затрагивают Java SE 7. Я же постараюсь сосредоточиться на особенностях экзамена по Java SE 8 и в принципе обновить информацию по процессу получения сертификата. Тех, кому все еще интерсено, прошу под кат.
Поехали
Total votes 19: ↑18 and ↓1+17
Comments9

Генетический алгоритм своими руками

Reading time3 min
Views27K

Генетический алгоритм — способ оптимизации, какой-либо функции. Но, в нашем случае, мне просто был интересен принцип его работы, своеобразное моделирование эволюции. Ну и чтобы проэволюционировать самому.
Мы имеем абстрактное поле, в котором есть организмы (синие и бирюзовые клетки), еда (зеленые) и яд (красные).


image


У созданий всего 64 гена, но можно ввести всего лишь 10 первых.


Читать дальше →
Total votes 32: ↑23 and ↓9+14
Comments17

Я полюбил верстку после этого: Zeplin в бою

Reading time5 min
Views164K
Иногда я спрашивал себя и Гугл: «Почему мне бывает стыдно быть верстальщиком». Ну, знаете, когда не мог на глазок определить, какой передо мной шрифт: open sans с font-weight: bold, или open sans bold с font-weight: normal — либо случайно узнавал, что «ой, забыли тебе сказать, масштаб был не 1920x1080, а 2560x1440».

Обычно ж как — скидывают .psd и крутись как хочешь.



Весной 2015-го, придя в uKit, я узнал о Sketch — и увидел, как шаблоны стали появляться с красивыми и одинаковыми метками размеров относительно друг друга и очень подробным описанием.

Тогда мне захотелось большего. И буквально через несколько месяцев вышел Zeplin 1.0. Это приложение изменило мое представление о верстке в целом — потому что оно по-настоящему делает жизнь верстальщика счастливой.

Total votes 36: ↑33 and ↓3+30
Comments51

Дешёвый метод интерполяции работает не хуже нейросетей

Reading time4 min
Views29K

Сравнение программы RAISR с другими передовыми методами повышения разрешения изображений. Больше примеров см. в сопроводительных материалах к научной статье

Повышение разрешения изображений, то есть создание фото высокого разрешения на основе одного фото низкого разрешения — очень хорошо изученная научная проблема. Она важна для многих приложений: зуммирование фото и текста, проекция видео на большой экран и т.д. Даже в фильмах детективы иногда умудряются рассмотреть номер автомобиля на кадре с камеры наблюдения, «приблизив» фотографию до предела. И не только номер автомобиля. Тут всё ограничено фантазией и совестью режиссёра и сценариста. Они могут приблизить фотографию ещё больше — и разглядеть отражение преступника в зеркале заднего вида или даже в отполированной металлической головке болта, которым крепится номерной знак. Зрителям такое нравится.
Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments28

Новый поворот в квантовой теории мозга

Reading time9 min
Views79K

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



Мэтью Фишер, предложивший теорию о влиянии квантовых эффектов на работу мозга

Простое упоминание «квантового сознания» причиняет большинству физиков дискомфорт, поскольку эта фраза, судя по всему, напоминает им бормотание какого-нибудь гуру от "Нью Эйдж". Но если новая гипотеза подтвердится, окажется, что квантовые эффекты действительно играют некую роль в человеческом сознании. Мэтью Фишер, физик из Калифорнийского университета в Санта-Барбаре, в прошлом году удивил многих, опубликовав в Annals of Physics работу с предположением о том, что ядерные спины атомов фосфора могут служить рудиментарными кубитами мозга – из-за чего он способен работать по принципу квантового компьютера.
Читать дальше →
Total votes 42: ↑37 and ↓5+32
Comments72
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity