Pull to refresh
26
0
Яковенко Виталий @Xazzzi

Black Magic

Send message

Архитектура для пользователей

Reading time 23 min
Views 17K

Когда говорят о выборе архитектуры IT-системы, почти всегда упускают один ма-а-аленький нюанс: мы делаем продукты для пользователей, не для себя. А пользователям совершенно неважно, какая у сервиса архитектура. Никто в отзывах не ставит звёздочки за event-driven подход или классную реализацию service mesh — разве что в редких случаях, когда речь о продуктах для разработчиков. 

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

Читать далее
Total votes 75: ↑71 and ↓4 +67
Comments 19

Используем клиентский процессор по максимуму. Часть 1: Rust + WebAssembly

Reading time 19 min
Views 11K

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

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

Прирост производительности при использовании всех техник оптимизации по сравнению с реализацией на чистом JS может составлять ~1000%: от 8–9 до 100–110 фпс. Это можно проверить на интерактивном онлайн-демо, позволяющем также поиграться с числом потоков, способом вычислений и формой фрактала.
Читать дальше →
Total votes 64: ↑64 and ↓0 +64
Comments 9

Как работает рендеринг 3D-игр: растеризация и трассировка лучей

Reading time 18 min
Views 29K
image

Часть 1: обработка вершин

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

Главная тема этой статьи — важный этап рендеринга, на котором трёхмерный мир точек, отрезков и треугольников становится двухмерной сеткой разноцветных блоков. Очень часто этот процесс кажется незаметным, потому что преобразование из 3D в 2D оказывается невидимым, в отличие от процесса, описанного в предыдущей статье, где мы сразу же могли увидеть влияние вершинных шейдеров и тесселяции. Если вы пока не готовы к этому, то можете начать с нашей статьи 3D Game Rendering 101.

Подготовка к двум измерениям


Подавляющее большинство читателей читают этот веб-сайт на совершенно плоском мониторе или экране смартфона; но даже если у вас есть современная техника — изогнутый монитор, то отображаемая им картинка тоже состоит из плоской сетки разноцветных пикселей. Тем не менее, когда вы играете в новую Call of Mario: Deathduty Battleyard, изображения кажутся трёхмерными. Объекты движутся по сцене, становятся больше или меньше, приближаясь и отдаляясь от камеры.
Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 5

Предиктивная аналитика данных — моделирование и валидация

Reading time 15 min
Views 32K
Представляю вашему вниманию перевод главы из книги Hands-On Data Science with Anaconda
«Предиктивная аналитика данных — моделирование и валидация»



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

Поэтому мы рассмотрим следующие темы:

  • Понимание предиктивного анализа данных
  • Полезные наборы данных
  • Прогнозирование будущих событий
  • Выбор модели
  • Тест Грэнджера на причинность
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 0

Как я однажды взломал онлайн-казино

Reading time 7 min
Views 127K
Вдохновившись рассказом Chikey о том, как он вновь «сломал интернет» Егор прекрати уже ломать все подряд, займись делом каким-нибудь, решил поведать об одной истории с довольно известным за рекой онлайн-казино. Имя этой «организации» не называю, т.к. процентов на 50 уверен, что или совсем не пофиксили, или сделали кривее, чем было до этого.

История очень похожа на взлом Егора, за исключением того, что это не совсем рэйс, вернее, совсем не race condition в чистом его виде. Как оно будет полностью не знаю, я больше практик, чем теоретик. Назовем его «conditional race condition» — хоть и масло масляное, но суть отражает верно.

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

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

Завел себе аккаунт, и поехали…
Читать дальше →
Total votes 132: ↑110 and ↓22 +88
Comments 72

Отличная идея для стартапа? Хм… Вряд ли

Reading time 4 min
Views 4.4K
Это вольный перевод-пересказ этой статьи 2006 года, на которую я наткнулся около mailinator.com, за авторством Paul Tyma. Упоминаний на хабре не нашел, да будет перевод!

Итак, у вас есть отличная идея.


За годы работы я запустил небольшую кучку проектов и создал несколько компаний. Например Mailinator, Preemptive Solutions, Inc., и Classhat. На самом деле я наделал их гораздо, гораздо больше, но про большинство слышала разве что моя бабушка. Всё потому, что преимущественно это были глупые идеи, неудачные попытки что то сделать, или чересчур масштабные начинания, чтобы я мог довести их до релиза. Поучившись на своих ошибках, я теперь каждую новую идею проверяю на соответствие определённому набору правил, чтобы отсеять хорошие идеи от плохих. Ну или тех, которые мне кажутся таковыми.
Не забывайте, эти правила для канонічного стартапа — когда из сотрудников только вы и ваш друг, а денег — на пиво и чипсы. Если у вас в загашнике завалялись лишние пару миллионов — вы можете творить магию и без этих советов.

Что же там пишет Paul о стартапах?
Total votes 80: ↑68 and ↓12 +56
Comments 17

Сколько участников может быть в WebRTC-звонке?

Reading time 10 min
Views 13K
image

Почти любой бизнес любит конференц-связь, а особенно видеоконференции. Voximplant помогает бизнесам в том числе и с этим: у нас успешно работают видеоконференции, как обычные так и HD (например, см.статью Video Conferencing). Сейчас наши конфы работают на peer-to-peer архитектуре, однако скоро мы расскажем о клиент-серверном решении с преферансом и куртизанками. А пока предлагаем посмотреть на подходы к созданию серверных конференций с помощью WebRTC: мы подготовили перевод свежей статьи из блога BlogGeek.me. Автор блога – Цахи Левент-Леви, независимый эксперт WebRTC, аналитик и предприниматель; в прошлом Цахи работал над проектами VoIP и 3G как разработчик, маркетолог и технический директор. Одним словом, он знает о чем говорит.
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 10

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

Reading time 10 min
Views 25K
Споры между основателями стартапов о принадлежности интеллектуальных прав на созданный продукт — не редкость. Вспоминается, например, судебный иск Регги Брауна к двум другим основателям Snapchat. В большинстве случаев конфликты заканчиваются уходом кого-то из основателей из проекта. Российской судебной практике также известно немало примеров, когда создатели сервисов и приложений спорят о правах на них (и о праве контроля над стартапом в целом). Чаще всего конфликты происходят в проектах, где один из основателей придумал идею стартапа и алгоритм функционирования сервиса, а другой написал исходный код программы. В этом материале мы расскажем несколько невыдуманных историй, как такие споры решаются в России, и попытаемся понять юридические причины конфликтных ситуаций. Возможно, кто-то в этих историях «увидит» себя, а кому-то наш пост поможет не повторить ошибок его героев.
Читать дальше →
Total votes 42: ↑40 and ↓2 +38
Comments 55

Пятничный формат: Как писать код, который никто не сможет сопровождать

Reading time 16 min
Views 95K


Благодаря советам экспертов в области Java вы научитесь писать код, который будет настолько сложно сопровождать, что любому, кто будет с ним работать после вас, потребуются годы, чтобы внести даже малейшие правки. Более того, если будете неизменно следовать этим правилам, вы сможете гарантировать себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в вашем коде.
Читать дальше →
Total votes 89: ↑74 and ↓15 +59
Comments 119

Как работает реляционная БД

Reading time 51 min
Views 534K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3 +226
Comments 134

[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

Reading time 9 min
Views 85K
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Читать дальше →
Total votes 158: ↑149 and ↓9 +140
Comments 15

Изоморфное Приложение с React и Redux

Reading time 15 min
Views 99K
Итак, я знаю что ты любишь Todo списки, то есть, что тебе очень нравится писать Todo списки, поэтому мне хочется, чтобы ты создал один из них, используя новый, восхитительный и питательный («nutritious» прим. пер.) Flux фреймворк, Redux! Я желаю тебе только лучшего.

В этой статье ты научишься как сконструировать свое собственное Redux приложение, не ограничиваясь, но так же включая.

  • Цельнозерновой рендеринг на сервере
  • Расширенный роутинг, богатый Omega-3
  • Маслянистая асинхронная загрузка данных
  • Гладкое функциональное послевкусие


Если это похоже на то, чего ты хочешь в этой жизни, вперед под кат, если нет, то не заморачивайся.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 12

Да пребудет с вами прокрутка: теория и практика по камере в платформерах [2/2]

Reading time 17 min
Views 30K
Первая часть

От переводчика. OlegKozlov рассказал о приёмах камеры в своей игре «Несыть». Из-за большого количества трафика и не слишком верно действующего JS якорь перебрасывает куда угодно, только не на комментарий, поэтому сделаю копию здесь.
Что сделано в «Несыти»…
1. Упреждение по движению: точка привязки камеры вынесена вперёд от центра червя, причём чем быстрее он ползёт, там дальше она выносится.
2. Упреждение по управлению: когда игрок начинает сжимать червя для прыжка, то вынос точки привязки камеры ещё усиливается заранее передвигая камеру в ту область, куда червь сейчас прыгнет.
3. Линейное сглаживание — камера плавно стремится к точке своей привязки, тем быстрее, чем больше разница между фактическим положением камеры (центра экрана) и точкой её привязки.
4. Плюс масштаб всего происходящего завязан на размер червя, когда червь увеличивается, то камера «отъезжает». Причём делает это тремя-четыремя ступенчатыми переключениями, чтобы игрок ощущал, что его червь вырос. Если делать плавно, то рост и изменение масштабов игры нивелируются и не приносят удовольствия.
5. Упор в край. Камера «упирается» в края уровня, становясь более статичной и позволяя голове червя сильно смешаться от центра экрана, буквально упираться головой в его край.
image

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

Направление


Подсказываем, куда идти, близко ли цель и что рядом важного

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

Wonder Boy, ещё одна моя любимица, быстрый платформер, в котором можно идти только вперёд через старое доброе одностороннее окно свободного хода. В отличие то Super Mario Bros., там нет зоны разгона, плавно ускоряющей камеру, но есть другая интересная техника, которую я называю «рельсы». Камера ставится и движется так, чтобы предвосхищать будущие преграды.

Wonder Boy (Sega, 1986)
Рельсы: запрограммированный маршрут камеры
Зона свободного хода (односторонняя)
Статическое упреждение

Пятое поколение приставок, среди них PlayStation и Nintendo 64, открыло новые аппаратные возможности, положив начала грубому, но настоящему 3D. Приёмы трёхмерной камеры — сами по себе захватывающая и многогранная тема, но поддержка 3D повлияла и на двухмерные игры. Разработчики теперь могут приближать камеру, наклонять вид и даже сочетать 2D и 3D — то, что мы сейчас называем 2,5D, когда игра идёт на двухмерной плоскости, но в объёмном мире.
Очень много трафика...
Total votes 64: ↑62 and ↓2 +60
Comments 10

Черные новости для босса

Reading time 7 min
Views 12K

1. От автора


1.1. Это ответы ИТ-менеджера своему боссу на его часовой матерный монолог в стиле — «Когда мне понадобится твое мнение, я тебе его скажу!»

1.2. Эти ответы позволят ИТ-боссу или тому, кто еще только собирается им стать, открыть для себя много нового.

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

1.4. Эти ответы так же не претендуют на истину, правоту или любую другую абсолютную правду. Это просто другой взгляд на ту же самую разработку ПО, который, как я скромно надеюсь, позволит тебе увидеть проблемы ИТ-отрасли бинокулярным зрением. Сделает их более объемными и, следовательно, откроет их тебе с другой и, скорее всего, неожиданной для тебя, стороны.

1.5. Автор, таки, претендует на определенный опыт в ИТ, поскольку пашет в этом бизнесе уже 35 лет, причем 25 из них является ИТ-менеджером.

1.6. Поэтому буду говорить не о том, что видел и слышал, а о том, от чего остались шрамы на шкуре и на языке, как верно заметил старик Адизес.
Читать дальше →
Total votes 42: ↑26 and ↓16 +10
Comments 17

Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL

Reading time 6 min
Views 195K
В одном из комментариев здесь была просьба рассказать подробнее об индексах, и так как, в рунете практически нет сводных данных о поддерживаемых индексах различных СУБД, в данном обзоре я рассмотрю, какие типы индексов поддерживаются в наиболее популярных СУБД
Взглянем?
Total votes 99: ↑96 and ↓3 +93
Comments 41

Как мы делали сервис на WebRTC

Reading time 5 min
Views 48K


Статей про WebRTC уже достаточно много и в интернетах, и на Хабре (здесь и здесь), повторять их ещё раз не имеет особого смысла, поэтому тут приведем наш личный опыт и впечатления, полученные при разработке live.pics.io.

Идея



Live.pics.io позволяет создавать приватные сессии для совместного просмотра и обсуждения изображений голосом. Это могут быть любые изображения: от фотографий, до макетов дизайна и презентаций. Pазрабатывая pics.io, мы достаточно хорошо научились работать с разными raw форматами в браузере, поэтому можно не заморачиваться с конвертацией и закидывать фотографии сразу после съемки (будут рады владельцы Canon’ов и Nikon’ов, остальные камеры пока требуют конвертации в DNG).

Очень коротко о webRTC


На самом деле, использовать WebRTC — это практически то же самое, что использовать сокеты. Но немного по-другому (совсем чуть-чуть). Нам нужно передавать изображение и звук. Берем RTCPeerConnection для соединения между пирами, MediaStream для трансляции аудио и RTCDataChannel для передачи изображений. Еще, для того, чтобы все это заработало, понадобится небольшой серверсайд для соединения пиров и передачи управляющих инструкций. Но об этом чуть позже.

Читать дальше →
Total votes 42: ↑39 and ↓3 +36
Comments 16

300 потрясающих бесплатных сервисов

Reading time 11 min
Views 1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16 +309
Comments 107

Физические и функциональные объекты (Продолжение)

Reading time 9 min
Views 23K
Есть три способа описания процесса:







Чем они отличаются?

Описание сущего


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



Природа пространства-времени


Начнем с того, что воспринимаемый нами мир – это четырехмерное пространство-время. Но не то пространство-время, которое используют математики в своих рассуждениях. Скорее это то пространство, которое используют физики. Разница в том, что в физическом мире нет точек. Есть объекты, которые с точки зрения наблюдателя можно считать точечными. Но при ближайшем рассмотрении эти точки могут рассматриваться как бесконечные пространства. Мы часто не различаем воспринимаемый нами мир и математическую абстракцию, созданную для описания этого восприятия. В абстракции, созданной для описания воспринимаемого мира, есть понятие точка. В реальном мире нет точек. В этом огромная разница между моделируемым миром и его моделью. В неразличении этих двух сущностей кроется причина части холиваров, возникших на основе предыдущей статьи. Например, мы не способны воспринять срез пространственно-временного континуума поперек временной оси, как нам предлагает поступить ИСО 15926, для определения понятия событие. Поэтому далее я продолжу рассуждения, не отвлекаясь на такие понятия как точки, срезы пространственно-временного континуума и прочие абстрактные объекты. Мы будем работать только с реально воспринимаемыми нами объектами 4-Д пространства-времени.
Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Comments 79

Что нужно знать, чтобы хорошо рисовать?

Reading time 5 min
Views 256K


Давид Ревуа — прекрасный художник, работающий со свободным программным обеспечением, постоянный член сообществ Krita Foundation и Blender Institute, концепт-художник анимационных проектов Gooseberry Open Movie Project, Mango Open Movie Project (Tears of Steel) и Durian Open Movie Project (Sintel). В этой статье он делится с начинающими художниками списком знаний, которые необходимо приобрести, чтобы работы получались реалистичными. Он обращает внимание, что для рисования «в цифре» следует обзавестись теми же навыками, что и в традиционной технике. Итак, приобщимся к его опыту.
Читать дальше →
Total votes 134: ↑128 and ↓6 +122
Comments 113

Лучшие плагины для Sublime Text

Reading time 5 min
Views 639K

WebInspector


Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



Читать дальше →
Total votes 116: ↑114 and ↓2 +112
Comments 101
1

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity