Как стать автором
Обновить
44
0

Программист

Отправить сообщение

Пишем свой dependency free WebSocket сервер на Node.js

Время на прочтение11 мин
Количество просмотров12K


Node.js — это популярный инструмент для построения клиент-серверных приложений. При правильном использовании, Node.js способен обрабатывать большое количество сетевых запросов, используя всего один поток. Несомненно, сетевой ввод — вывод является одной из сильнейших сторон этой платформы. Казалось бы, что используя Node.js для написания серверного кода приложения, активно использующего различные сетевые протоколы, разработчики должны знать, как эти протоколы работают, но зачастую это не так. Виной тому еще одна сильная сторона Node.js, это его пакетный менеджер NPM, в котором можно найти готовое решение практически под любую задачу. Используя готовые пакеты, мы упрощаем себе жизнь, переиспользуем код (и это правильно), но в то же время скрываем от себя, за ширмой библиотек, суть происходящих процессов. В этой статье мы постараемся разобраться в протоколе WebSocket, реализуя часть спецификации, не используя внешних зависимостей. Добро пожаловать под кат.

Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии4

HSLuv — удобное цветовое пространство для разработчиков

Время на прочтение5 мин
Количество просмотров6.7K
Меня, как разработчика, работа с цветами порой утомляет, но существуют проекты, упрощающие эту деятельность. HSLuv — это один из таких проектов, и в рамках этой статьи я постараюсь объяснить, что это и как это может помочь разработчикам.

Проблема традиционных цветовых пространств


Традиционно в IT используются RGB или HSL.

Основная проблема этих цветовых моделей заключается в том, что они нелинейны с точки зрения человеческого восприятия.

RGB


Для примера возьмем равномерные ступенчатые градиенты RGB цветов.

  • градиент красного — это цвета #000, #100, #200, #FEE, #FFFи т.д.;
  • градиент зеленого — это цвета #000, #010, #020и т.д.;
  • градиент синего — это цвета #000, #001, #002и т.д.;
  • градиент желтого — это цвета #000, #110, #220и т.д.;
  • градиент голубого — это цвета #000, #011, #022и т.д.;
  • градиент пурпурного — это цвета #000, #101, #202и т.д.


Мы можем увидеть несколько вещей:

  • Яркость цветов увеличивается неравномерно: чем оттенок ближе к белому цвету, тем изменение яркости меньше;
  • Яркость разных цветов различается: синий намного темнее остальных;
  • Насыщенность также неравномерна: синий и красный выглядят «ненасыщенными» в правой части градиента.

Хорошо, RGB — это способ визуализации пикселей, да и разрабатывалась эта модель не для удобного «управления» значениями.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии6

Свой личный SMS-шлюз. Часть 1 – цели, задачи, сборка и тестирование

Время на прочтение6 мин
Количество просмотров64K


Представляю вам цикл статей по созданию собственного шлюза для отправки SMS-сообщений.
В первой части мы определим цели и некоторые аспекты использования своего шлюза, настроим программное обеспечение для отправки SMS с использованием USB-модемов, а также рассмотрим несколько интересных вариантов отправки
Читать дальше →
Всего голосов 58: ↑57 и ↓1+72
Комментарии62

Создание шейдеров

Время на прочтение27 мин
Количество просмотров190K
Освоить создание графических шейдеров — это значит взять под свой контроль всю мощь видепроцессора с его тысячами параллельно работающих ядер. При таком способе программирования требуется другой образ мышления, но раскрытие его потенциала стоит потраченных усилий.

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


Сцена из Minecraft, до и после добавления нескольких шейдеров.

Задача этого туториала


Иногда программирование шейдеров представляется загадочной чёрной магией и его часто понимают неправильно. Существует множество примеров кода, демонстрирующих создание невероятных эффектов, но в которых практически нет объяснений. В своём руководстве я хочу восполнить этот пробел. Я сосредоточусь в основном на базовых принципах создания и понимания кода шейдеров, чтобы вы смогли с лёгкостью настраивать, сочетать или писать свои собственные шейдеры с нуля!
Всего голосов 105: ↑105 и ↓0+105
Комментарии27

Почему современные 50-миллиметровые объективы настолько сложно устроены?

Время на прочтение5 мин
Количество просмотров42K

Объективы наподобие Nikon Z 50mm F1.2 S больше, тяжелее, дороже и сложнее, чем старые объективы F1.2. Но почему?

Для начала немного истории оптики


В те времена, когда корабли строили из дерева, у людей уже были надёжные оптические инструменты. Одним из таких инструментов являлся объектив с постоянным фокусным расстоянием, изготовленный по схеме «двойной объектив Гаусса». До начала двадцатого века проектировщики объективов уже создали пять из шести типов объективов, ставших основой для тех, которые мы используем сегодня. (Ретрофокусный объектив появился в 1920-х, а зум-объективы, если вам любопытно, по сути, являются модифицированными триплетами Кука.)

С конца 19-го века двойной объектив Гаусса был основной конструкцией объективов с постоянным фокусным расстоянием и большой светосилой. В течение многих лет конструкторы добавляли новые группы для получения большего количества света, коррекции аберраций и совершенствования объективов в целом. Но вплоть до современности фундаментом для объективов с постоянным фокусным расстоянием оставался «двойной Гаусс». Вспомните любой известный объектив с постоянным фокусным расстоянием, и он скорее всего будет изготовлен по схеме «двойного Гаусса»: Speed Panchro, Planar, Xenon, Summicron, Takumar, Ultron, и так далее.
Читать дальше →
Всего голосов 34: ↑30 и ↓4+39
Комментарии214

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

Время на прочтение42 мин
Количество просмотров131K
image


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

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

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


Читать дальше →
Всего голосов 90: ↑90 и ↓0+90
Комментарии53

Создание псевдотрёхмерной гоночной игры: реализация холмов и готовая игра

Время на прочтение14 мин
Количество просмотров3.4K

Часть 3. Холмы



В предыдущей части мы создали простую псевдотрёхмерную гоночную игру, реализовав в ней прямые дороги и кривые.

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

В первой части мы использовали закон подобных треугольников для создания трёхмерной перспективной проекции:


… что привело нас к получению уравнений проецирования координаты 3d-мира в координату 2d-экрана.


… но так как тогда мы работали только с прямыми дорогами, мировым координатам нужна была только компонента z, потому что и x, и y были равны нулю.

Это хорошо нам подходит, потому что для добавления холмов нам достаточно дать сегментам дороги соответствующую ненулевую координату y, после чего уже имеющаяся функция render() волшебным образом заработает.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Задавать Height и Width для изображений снова важно

Время на прочтение13 мин
Количество просмотров61K

Сторонники веб-оптимизаций часто советуют добавлять к изображениям атрибуты с размерами, что позволяет при отрисовке страницы оставлять нужное количество пространства ещё до загрузки самого изображения. Это позволяет избежать смещения раскладки страницы по мере загрузки изображений - что с недавних пор начал измерять Chrome в новой метрике Cumulative Layout Shift (CLS).

Секрет, не так хорошо известный разработчикам, не являющимся заядлыми сторонниками веб-производительности, заключается в том, что до недавнего времени, как мы увидим в статье, во многих случаях это фактически не имело особого смысла. Однако, недавние изменения в мире CSS и их быстрое внедрение в браузерах снова делает добавление атрибутов width и height к тегу <img> полезным.

Читать далее
Всего голосов 19: ↑18 и ↓1+24
Комментарии21

Восемь интересных возможностей PostgreSQL, о которых вы, возможно, не знали

Время на прочтение8 мин
Количество просмотров27K

Привет, Хабр! Приглашаем на бесплатный Demo-урок «Параллельный кластер CockroachDB», который пройдёт в рамках курса «PostgreSQL». Также публикуем перевод статьи Тома Брауна — Principal Systems Engineer at EnterpriseDB.

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

Читать далее
Всего голосов 32: ↑29 и ↓3+36
Комментарии8

«Что угодно кроме алгоритмов»: где искать музыку, если стриминговые платформы уже надоели

Время на прочтение3 мин
Количество просмотров14K

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

Читать и слушать
Всего голосов 12: ↑8 и ↓4+9
Комментарии26

Один день в офисе будущего

Время на прочтение4 мин
Количество просмотров12K


Всем привет! Меньше месяца назад я устроился на работу программистом в офис-2030. Чем он отличается от офисов в 2019-ом году? Самое главное отличие в том, что его нет.

Вернее, не так. Конечно, он есть. Просто он виртуальный.
Читать дальше →
Всего голосов 27: ↑16 и ↓11+9
Комментарии63

Минцифра и запрет TLS v. 1.3 (а заодно и HTTPS): отзыв на законопроект

Время на прочтение7 мин
Количество просмотров33K
Привет, Хабр.

В прошлый раз мы писали о том, что Минцифра внесла на публичное рассмотрение законопроект, согласно пояснительной записке, запрещающий в России работу сервисов с технологиями сокрытия доменных имён — eSNI/ECH, а если брать шире, то и весь TLS v. 1.3, а согласно букве законопроекта — до кучи ещё и HTTPS вообще.



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

Читать дальше →
Всего голосов 65: ↑59 и ↓6+68
Комментарии80

AnLinux: простой способ установить Linux-окружение на Android-телефон без рута

Время на прочтение3 мин
Количество просмотров143K


Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.

Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии32

Представлен конкурент Raspberry Pi 4 — одноплатный ПК с x86, работающий под Windows 10

Время на прочтение2 мин
Количество просмотров68K

Китайская компания Radxa на днях выпустила одноплатный ПК Rock Pi X. Это событие могло бы пройти никем не замеченным, если бы не особенности новинки. Дело в том, что она базируется на процессоре x86 и работает с Windows 10 без «костылей», нативно. Естественно, плата совместима с Linux.

Кроме Rock Pi X, есть и другие одноплатники, заявляющие о поддержке Windows, но они совместимы лишь со специализированной версией этой ОС, которая называется Windows 10 IoT Core. А вот Rock Pi — это ПК, совместимый с полноценной ОС.
Читать дальше →
Всего голосов 47: ↑45 и ↓2+59
Комментарии120

Не нужно делать из фреймворков культ — они не настолько сложны, чтобы делить людей на React и Angular разработчиков

Время на прочтение6 мин
Количество просмотров20K


Недавно меня позвали гостем в «Тяжелое утро с Holy.js», чтобы хорошенько пропесочить за мою статью про глупцов-фронтендеров. Мы обстоятельно поговорили, и один из аргументов был такой — если наши js фреймворки жрут неоправданно много на простых задачах — просто не используй их. Если тебе просто надо порендерить четыре формы, то тебе не нужен ни реакт, ни тайпскрипт, ни вебпак — ничего. Создаешь три файлика .html, .css и .js — вот тебе и приложение.

Ничего не надо никуда билдить, никакого стат анализа, и никакой прожорливой и тормозной ноды на твоей машине — все быстро и просто. Так можно строить и достаточно большие приложения — ведь тот же vs code вполне себе может тайпчекать твой js. Другие проблемы, которые можно решать большими фронтенд инструментами во-первых часто выдуманы их создателями, а во вторых если и создают большую боль — то только на действительно больших приложениях.
Читать дальше →
Всего голосов 81: ↑53 и ↓28+42
Комментарии164

Бесплатные аналоги популярных SaaS решений

Время на прочтение5 мин
Количество просмотров11K


Мы подготовили небольшой обзор бесплатных альтернатив популярных в России платформ SaaS. С небольшими усилиями зачастую можно добиться практически такой же функциональной отдачи, но с меньшими финансовыми затратами.
Читать дальше →
Всего голосов 26: ↑20 и ↓6+26
Комментарии8

Как северокорейские хакеры отмывают краденую криптовалюту на миллиарды долларов

Время на прочтение4 мин
Количество просмотров13K

Сама кража для хакеров из Пхеньяна – дело несложное. Другой вопрос – как потом получить реальные деньги.




Много лет династия Ким из Северной Кореи получала деньги через незаконные схемы типа торговли наркотиками и подделки валют. За последнее десятилетие Пхеньян всё чаще начал обращаться к киберпреступлениям – используя армию хакеров для осуществления ограблений банков и обменников криптовалют на миллиарды долларов. К примеру, в 2018 году была проведена атака, благодаря которой за один раз удалось увести $250 млн. ООН говорит, что в результате этих действий режим получает значительные суммы денег, которые тратит на разработку ядерного оружия, способного гарантировать его выживание в течение долгого времени.

Однако есть большая разница между взломом обменника криптовалют и получением на руки реальных денег. Нужно переслать криптовалюту, отмыть её так, чтобы никто не смог её отследить, поменять её на доллары, евро или юани, на которые уже купить оружие, предметы роскоши и первой необходимости.
Читать дальше →
Всего голосов 22: ↑9 и ↓13+4
Комментарии20

Любите читать книги на английском? Ваш словарный запас растет быстрее, чем у обычного жителя США

Время на прочтение5 мин
Количество просмотров27K


70% активного словарного запаса своего родного языка человек нарабатывает до 18 лет. И уже после 33 лет запоминание новых слов практически останавливается.

Но это не значит, что после 33 у вас не получится изучать иностранные языки. На самом деле возраст вторичен, а реально важны только два фактора. О них читайте в статье.

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

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

А теперь разберем результаты подробно.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+21
Комментарии50

Аудиобубен лейтенанта Шмидта: три совета о том, как потратить время и деньги, не улучшив звук наушников

Время на прочтение4 мин
Количество просмотров25K
Итак, традиционный ежемесячный пост выходит с небольшим опозданием, за что я прошу прощения у тех, кто его ждал. На этот раз объектом публицистического препарирования станут некоторые мифы о наушниках. Если точнее, речь об аудиофильских рекомендациях для тех, кто хочет улучшить звук в своих наушниках. Советы, о которых пойдет речь, позволят людям убить время и потратить деньги. Все рекомендации взяты в сети, и внутри аудиофильского сообщества считаются крайне действенными и эффективными. Некоторые из способов “улучшения” мы уже разбирали, о других пишем впервые.


Прошу обратить внимание, что это пост юмористического цикла, который обращает внимание читателей на несколько нелогичные технические решения в аудиофильской электронике. Если вы расчитываете на подробное техническое разоблачение абсурдных методов аудиорелигии, то их тут нет.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+45
Комментарии102

Глупость и излишняя уверенность. 13 качеств хорошего руководителя

Время на прочтение7 мин
Количество просмотров12K


Я инженер и дизайнер. Мне нравится представляться людям именно так, особенно в Европе. Слово «инженер» там носит интересный налёт загадочности, интеллектуальности и богатства. В общем, очень помогает заводить новых знакомых.

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

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

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

В очередной раз планируя проект, поймал себя на мысли «Ну, архитектуру REST API я-то и сам могу сделать. Заодно функциональные требования напишу и нарисую дизайн для MVP. Там же немного совсем». И тут в голове захохотал голос:
— Сказочный ты руководитель, раз самому приходится всё делать.

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

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии15
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность