Search
Write a publication
Pull to refresh
41
1.8
Иван @janson

Разработчик. PHP, JS, TypeScript.

Send message

Создание карандашного эффекта в SVG

Reading time7 min
Views11K
Моя игра Dragons Abound создаёт карты в векторном графическом формате SVG. Векторная графика имеет множество особенностей (например, зум без потерь), что удобно для карт. Также векторная графика хороша для создания чётких линий, например, чернильных контуров:


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


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

Это достаточно серьёзное ограничение векторной графики, поэтому в SVG добавлены хитрости, позволяющие более эффективно воспроизводить некоторые из подобных эффектов текстур. Я исследую некоторые из этих функций SVG для создания эффекта, напоминающего карандашную линию. Разумеется, существует множество более сложных решений для воссоздания карандашных линий. Об этой теме написаны целые научные статьи. Но я просто надеюсь создать довольно простой фильтр, обеспечивающий приемлемый результат.
Читать дальше →

Средства консоли Chrome, которыми вы, возможно, никогда не пользовались

Reading time7 min
Views54K
Консоль инструментов разработчика Chrome — это, вероятно, одно из самых широко используемых и самых полезных специализированных средств браузера. Консоль даёт программисту множество интересных возможностей. Она помогает в отладке, профилировании и мониторинге кода страниц.



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

9 советов по повышению производительности Vue

Reading time8 min
Views36K
В этой статье собрано девять советов о том как повысить производительность вашего приложения на Vue, увеличить скорость отображения и уменьшить размер бандла.
Читать дальше →

[Туториал] Как создать вашу первую инкрементальную IDLE игру на JavaScript

Reading time17 min
Views21K
Сегодня я расскажу вам, как создать простейший ToDo лист простейшую инкрементальную IDLE игру на JavaScript, потратив меньше одного дня ежегодных каникул. Для этого предлагаю выбрать сову игру попроще и не пропускать шагов между овалом и готовой совой пустым проектом и готовой игрой.


Людям, знающим как делать такие игры, будет скучно; людям, знающим JS, рекомендую смотреть на код сквозь пальцы (во избежание травм) и читать только про механики. Под катом последовательная инструкция, ориентированная на новичков.
Читать дальше →

Laravel. Локализованный роутинг

Reading time15 min
Views9.7K

КДПВ


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


UPD
На этом ресурсе актульность статьи может оказаться умноженной на ноль одним комментарием. Задача описанная в статье может быть с меньшей болью решена библиотекой mcamara/laravel-localization.
За наводку спасибо DExploN!

Кат приподнят. Умноженное на ноль — снизу.
Читать дальше →

История видеопроцессоров, часть 2: 3Dfx Voodoo

Reading time22 min
Views25K
Часть 1: 1976 — 1995 годы

3Dfx Voodoo: смена правил игры


Выпущенная в ноябре 1996 года графическая карта 3Dfx состояла из платы только для 3D, которой требовался VGA-переходник к отдельной 2D-карте, подключаемой к дисплею.

Карты продавались множеством компаний. Orchid Technologies первой вышла на рынок с Orchid Righteous 3D стоимостью 299 долларов. Эта плата примечательна тем, что имела механические реле, которые «щёлкали», когда чипсет был в работе. В последующих версиях, как и в устройствах других поставщиков, уже применялись твердотельные реле. За этой картой последовали Diamond Multimedia Monster 3D, Colormaster Voodoo Mania, Canopus Pure3D, Quantum3D, Miro Hiscore, Skywell (Magic3D) и 2theMAX Fantasy FX Power 3D.

Voodoo Graphics почти за один день совершила революцию в графике для персональных компьютеров, превратив в устаревшие множество других устройств, в том числе широкий диапазон карт, предназначенных только для 2D. Рынок 3D в 1996 году благоволил S3, завоевавшей почти 50-процентную долю. Но вскоре всё должно было измениться. Подсчитано, что на пике популярности Voodoo компания 3Dfx захватила 80-85% рынка 3D-ускорителей.


Diamond Multimedia Monster 3D (3dfx Voodoo1 4MB PCI)

Как написать сапера на Phaser и выполнить тестовое задание HTML5 разработчика

Reading time29 min
Views14K
Добрый день, уважаемые коллеги!

Меня зовут Александр, я разработчик HTML5 игр.

В одной из компаний, куда я отправлял свое резюме, мне предложили выполнить тестовое задание. Я согласился и, спустя 1 день, отправил в качестве результата разработанную по ТЗ HTML5 игру.



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

Данная статья даст представление об объеме работ, достаточном для успешного выполнения среднестатистического тестового задания на позицию HTML5 разработчика. Материал также может быть интересен всем, кто хочет познакомиться с фреймворком Phaser. А если вы уже работаете с Phaser и пишете на JS — посмотрите, как разработать проект на TypeScript.

Итак, под катом много кода на TypeScript!
Читать дальше →

Организация маршрутов в Laravel

Reading time3 min
Views20K
Здравствуй, Habr. Недавно я согласился на ревью сайта, заказанного на фрилансе. Я ожидал увидеть контроллеры, которые делают вообще все и занимают 200+ строк (и прочие проявления плохого кода), но все было вполне прилично. Валидация не лежала в контроллере, что встречается достаточно часто. Иногда, конечно, встречались некоторые несоответствия PSR-2, но все выглядело нормально, пока я не заглянул в файл с маршрутами. Он занимал несколько экранов и имел комментарии о группах маршрутов. Я связался с разработчиком и он сказал, что все немного «разрослось» и согласился поправить. В следующей версии я увидел, что он создал несколько классов со статическими методами, в которые переложил код и вызвал их, как это обычно делается, с авторизацией. Тут я вспомнил, что уже сталкивался с подобным и встречал такую аргументацию: «В документации ничего не говорится о вынесении маршрутов в разные файлы». Буквально через пару минут я нашел статью и отправил разработчику. Через пол часа я получил маршруты в нормальном виде и принял решение, что многим новичкам эта статья будет полезна. Так родился этот вольный перевод.

Если вы ни разу не правили файл RouteServiceProvider, добро пожаловать под кат.
Читать дальше →

Браузерный сетевой шутер на Node.js

Reading time17 min
Views24K
Разработка многопользовательских игр сложна по множеству причин: их хостинг может оказаться дорогим, структура — неочевидной, а реализация — трудной. В этом туториале я постараюсь помочь вам преодолеть последний барьер.

Статья предназначена для разработчиков, умеющих создавать игры и знакомых с JavaScript, но никогда раньше не писавших мультиплеерные онлайн-игры. Завершив этот туториал, вы освоите реализацию базовых сетевых компонентов в своей игре и сможете развить её во что-то большее! Вот, что мы будем создавать:


Поиграть в готовую игру можно здесь! При нажатии клавиш W или «вверх» корабль приближается к курсору, при щелчке мыши — стреляет. (Если никого нет онлайн, то чтобы проверить, как работает мультиплеер, откройте два окна браузера на одном компьютере, или одно из них на телефоне, ). Если вы хотите запустить игру локально, то полный исходный код выложен на GitHub.
Читать дальше →

UI-компоненты на пиксельных шейдерах: пишем ваш первый шейдер

Reading time10 min
Views14K
Кого можно назвать «пиксельных шейдеров начальник и пикселов командир»? Дениса Радина, работающего в Evolution Gaming над фотореалистичными веб-играми с использованием React и WebGL: он известен многим как раз под именем Pixels Commander.

В декабре на нашей конференции HolyJS он выступил с докладом о том, как использование GLSL может улучшить работу с UI-компонентами по сравнению с «обычным джаваскриптом». А теперь для Хабра мы подготовили текстовую версию этого доклада — добро пожаловать под кат! Заодно прикладываем видеозапись выступления:


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

Английские времена для чайников: как их все запомнить?

Reading time8 min
Views124K
Для тех, кто только начал учить английский язык, времена представляют огромную сложность. Кажется, что в русском времен всего три, а зачем в английском придумали шестнадцать (а по некоторым версиям и двенадцать, и двадцать, и двадцать четыре – студенты вообще склонны к преувеличению) – непонятно. И как их все запомнить – непонятно. В нашей очередной серии статей мы с вами разберемся в грамматике английских времен и подробно рассмотрим пары времен, которые вызывают наибольшую трудность у студентов, для которых русский язык является родным.

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

Be my burger

Reading time4 min
Views15K
Как насчёт коктейля «Секс на пляже» с майонезом? А соус из молочного шоколада и маракуйи к мраморной говядине подходит? Нет, мы не ошиблись сайтом и даже не хотим поиздеваться над вами перед вечером пятницы. Но да, мы хотим поговорить о еде, о «пищевом компьютинге» и о том, как вы можете помочь нам там, где искусственный интеллект пока бессилен. Просто расскажите о своих вкусах. Даже если они весьма специфичны…


Бургер Bad Bro производства Burger Heroes
Читать дальше →

Мясорубка, супер-роботы и НИИ (Не Искусственный Интеллект)

Reading time3 min
Views7.9K

Если вы уже не первый год ведете какой-то проект, поверьте не похож ли он на нож мясорубки из истории №1 или на тарелку из истории №2


Это поможет вам оптимизировать свой проект выкинув из него все лишнее, что только тормозит его.

История №1


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

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

В 1987 году отдел роботизации и автоматизации завода «Электросила» разработал безумно дорогого супер-робота, который точно повторял движение рук рабочего (напоминаю, что это было 30 лет назад (!)), но его производительность оказалась столь малой, что рабочего вернули на заточку, чуть ли не на следующий день.

Для решения проблемы, был вызван внешний консультант из одного НИИ. Консультант начал свою работу, естественно с анализа….
Читать дальше →

Погружение в разработку на Ethereum. Часть 1

Reading time11 min
Views98K
Технология блокчейна завладела умами. Покупаются фермы, ICO собирают миллионы долларов. Наша компания тоже захотела приобщиться. Решили начать с малого. В серии статей будет описан наш путь от новичков в сфере блокчейна до общепризнанных гуру. На момент написания этих слов мы все еще на этапе новичков, предлагаем следить за нашим развитием и развиваться с нами.

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

Как выпустить самоподписанный SSL сертификат и заставить ваш браузер доверять ему

Reading time3 min
Views314K


Все крупные сайты давно перешли на протокол https. Тенденция продолжается, и многие наши клиенты хотят, чтобы их сайт работал по защищенному протоколу. А если разрабатывается backend для мобильного приложения, то https обязателен. Например, Apple требует, чтобы обмен данными сервера с приложением велся по безопасному протоколу. Это требование введено с конца 2016 года.

На production нет проблем с сертификатами. Обычно хостинг провайдер предоставляет удобный интерфейс для подключения сертификата. Выпуск сертификата тоже дело не сложное. Но во время работы над проектом каждый разработчик должен позаботиться о сертификате сам.
В этой статье я расскажу, как выпустить самоподписанный SSL сертификат и заставить браузер доверять ему.
Читать дальше →

Keys in React. Готовим правильно

Reading time15 min
Views79K

Сегодня поговорим об атрибуте key в React. Часто разработчики, которые только начинают использовать React, не придают большого значения атрибуту key. А зря…


image
Что говорит уточка, когда узнала, что ты не используешь key


Чтобы представить работу ключей полностью и с различными кейсами, рассмотрим план:


  1. Reconciliation
  2. Реиспользование ключей и нормализация
  3. Использование key при рендере одного элемента
  4. Работа с ключами при передаче компоненту children

Matthias Noback Об Идеальной Архитектуре — Слои, Порты и Адаптеры(Часть 2 — Слои)

Reading time7 min
Views16K

В 2017 году Matthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомитсья в оригинале). Переводом второй является данная статья. Перевод третьей будет доступен в скором времени.


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

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

DevOps придумали разработчики, чтобы админы больше работали

Reading time9 min
Views43K

Еще 4 года назад использование контейнеров в production было экзотикой, но сейчас это уже норма как для маленьких компаний, так и для больших корпораций. Давайте попробуем посмотреть на всю эту историю с devops/контейнерами/микросервисами ретроспективно, взглянуть еще раз свежим взглядом на то, какие задачи мы изначально пытались решить, какие решения у нас есть сейчас и чего не хватает для полного счастья?


Я буду в большей степени рассуждать про production окружение, так как основную массу нерешенных проблем я вижу именно там.

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

Programmer Unknown's BattleGround: открытая площадка для сражений программистов

Reading time2 min
Views19K
image

Изначально проект PUBG (просим прощения у оригинальной PUBG за использование их аббревиатуры, мы всего лишь хотим использовать эту игру для развития навыков программирования и не планируем публиковать ее в Steam в будущем) был разработан как внутренний проект нашей студии для развлечения. Затем же мы подумали, что он может быть полезен другим студиям, компаниям и образовательным учреждениям, и опубликовали его под лицензией MIT.
Читать дальше →

Information

Rating
2,587-th
Location
Бишкек, Кыргызстан, Кыргызстан
Date of birth
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Senior
PHP
OOP
Git
Database
Docker