Node.js — это популярный инструмент для построения клиент-серверных приложений. При правильном использовании, Node.js способен обрабатывать большое количество сетевых запросов, используя всего один поток. Несомненно, сетевой ввод — вывод является одной из сильнейших сторон этой платформы. Казалось бы, что используя Node.js для написания серверного кода приложения, активно использующего различные сетевые протоколы, разработчики должны знать, как эти протоколы работают, но зачастую это не так. Виной тому еще одна сильная сторона Node.js, это его пакетный менеджер NPM, в котором можно найти готовое решение практически под любую задачу. Используя готовые пакеты, мы упрощаем себе жизнь, переиспользуем код (и это правильно), но в то же время скрываем от себя, за ширмой библиотек, суть происходящих процессов. В этой статье мы постараемся разобраться в протоколе WebSocket, реализуя часть спецификации, не используя внешних зависимостей. Добро пожаловать под кат.
Программист
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 — это способ визуализации пикселей, да и разрабатывалась эта модель не для удобного «управления» значениями.
Свой личный SMS-шлюз. Часть 1 – цели, задачи, сборка и тестирование
Представляю вам цикл статей по созданию собственного шлюза для отправки SMS-сообщений.
В первой части мы определим цели и некоторые аспекты использования своего шлюза, настроим программное обеспечение для отправки SMS с использованием USB-модемов, а также рассмотрим несколько интересных вариантов отправки
Создание шейдеров
Практически в любой современной графической симуляции используется код, написанный для видеопроцессора: от реалистичных эффектов освещения в высокотехнологичных AAA-играх до двухмерных эффектов постпроцессинга и симуляции жидкостей.
Сцена из Minecraft, до и после добавления нескольких шейдеров.
Задача этого туториала
Иногда программирование шейдеров представляется загадочной чёрной магией и его часто понимают неправильно. Существует множество примеров кода, демонстрирующих создание невероятных эффектов, но в которых практически нет объяснений. В своём руководстве я хочу восполнить этот пробел. Я сосредоточусь в основном на базовых принципах создания и понимания кода шейдеров, чтобы вы смогли с лёгкостью настраивать, сочетать или писать свои собственные шейдеры с нуля!
Почему современные 50-миллиметровые объективы настолько сложно устроены?
Объективы наподобие Nikon Z 50mm F1.2 S больше, тяжелее, дороже и сложнее, чем старые объективы F1.2. Но почему?
Для начала немного истории оптики
В те времена, когда корабли строили из дерева, у людей уже были надёжные оптические инструменты. Одним из таких инструментов являлся объектив с постоянным фокусным расстоянием, изготовленный по схеме «двойной объектив Гаусса». До начала двадцатого века проектировщики объективов уже создали пять из шести типов объективов, ставших основой для тех, которые мы используем сегодня. (Ретрофокусный объектив появился в 1920-х, а зум-объективы, если вам любопытно, по сути, являются модифицированными триплетами Кука.)
С конца 19-го века двойной объектив Гаусса был основной конструкцией объективов с постоянным фокусным расстоянием и большой светосилой. В течение многих лет конструкторы добавляли новые группы для получения большего количества света, коррекции аберраций и совершенствования объективов в целом. Но вплоть до современности фундаментом для объективов с постоянным фокусным расстоянием оставался «двойной Гаусс». Вспомните любой известный объектив с постоянным фокусным расстоянием, и он скорее всего будет изготовлен по схеме «двойного Гаусса»: Speed Panchro, Planar, Xenon, Summicron, Takumar, Ultron, и так далее.
Трёхмерная графика с нуля. Часть 1: трассировка лучей
Эта статья разделена на две основные части, Трассировка лучей и Растеризация, в которых рассматриваются два основных способа получения красивых изображений из данных. В главе Общие концепции представлены некоторые базовые понятия, необходимые для понимания этих двух частей.
В этой работе мы сосредоточимся не на скорости, а на чётком объяснении концепций. Код примеров написан наиболее понятным образом, который не обязательно является самым эффективным для реализации алгоритмов. Есть множество способов реализации, я выбрал тот, который проще всего понять.
«Конечным результатом» этой работы будут два завершённых, полностью рабочих рендереров: трассировщик лучей и растеризатор. Хотя в них используются очень отличающиеся подходы, при рендеринге простой сцены они дают схожие результаты:
Создание псевдотрёхмерной гоночной игры: реализация холмов и готовая игра
Часть 3. Холмы
В предыдущей части мы создали простую псевдотрёхмерную гоночную игру, реализовав в ней прямые дороги и кривые.
На этот раз мы займёмся холмами; к счастью, это будет намного проще, чем создание искривлённых дорог.
В первой части мы использовали закон подобных треугольников для создания трёхмерной перспективной проекции:
… что привело нас к получению уравнений проецирования координаты 3d-мира в координату 2d-экрана.
… но так как тогда мы работали только с прямыми дорогами, мировым координатам нужна была только компонента z, потому что и x, и y были равны нулю.
Это хорошо нам подходит, потому что для добавления холмов нам достаточно дать сегментам дороги соответствующую ненулевую координату y, после чего уже имеющаяся функция
render()
волшебным образом заработает.Задавать Height и Width для изображений снова важно
Сторонники веб-оптимизаций часто советуют добавлять к изображениям атрибуты с размерами, что позволяет при отрисовке страницы оставлять нужное количество пространства ещё до загрузки самого изображения. Это позволяет избежать смещения раскладки страницы по мере загрузки изображений - что с недавних пор начал измерять Chrome в новой метрике Cumulative Layout Shift (CLS).
Секрет, не так хорошо известный разработчикам, не являющимся заядлыми сторонниками веб-производительности, заключается в том, что до недавнего времени, как мы увидим в статье, во многих случаях это фактически не имело особого смысла. Однако, недавние изменения в мире CSS и их быстрое внедрение в браузерах снова делает добавление атрибутов width и height к тегу <img> полезным.
Восемь интересных возможностей PostgreSQL, о которых вы, возможно, не знали
Привет, Хабр! Приглашаем на бесплатный Demo-урок «Параллельный кластер CockroachDB», который пройдёт в рамках курса «PostgreSQL». Также публикуем перевод статьи Тома Брауна — Principal Systems Engineer at EnterpriseDB.
В этой статье рассмотрим несколько полезных советов по работе с PostgreSQL: ссылка на всю строку целиком, сравнение нескольких столбцов, общие табличные выражения, пользовательские параметры конфигурации, сравнение логических значений без "равно", изменение типа столбца без лишних затрат, информация о секции, в которой находится строка, таблицы — это типы.
«Что угодно кроме алгоритмов»: где искать музыку, если стриминговые платформы уже надоели
Чем чаще стриминговые сервисы ошибаются с рекомендациями или предлагают треки, которые приходится пропускать, тем больше хочется переключиться на что-то другое. Но тратить время на поиск подходящего приложения, изучение непроверенных плейлистов или авторских подборок — тянет еще меньше. Сегодня это сделаем мы, чтобы в нужный момент вы могли найти для себя то, что скорее всего подойдет для прослушивания. Всех заинтересовавшихся приглашаем под кат.
Один день в офисе будущего
Всем привет! Меньше месяца назад я устроился на работу программистом в офис-2030. Чем он отличается от офисов в 2019-ом году? Самое главное отличие в том, что его нет.
Вернее, не так. Конечно, он есть. Просто он виртуальный.
Минцифра и запрет TLS v. 1.3 (а заодно и HTTPS): отзыв на законопроект
В прошлый раз мы писали о том, что Минцифра внесла на публичное рассмотрение законопроект, согласно пояснительной записке, запрещающий в России работу сервисов с технологиями сокрытия доменных имён — eSNI/ECH, а если брать шире, то и весь TLS v. 1.3, а согласно букве законопроекта — до кучи ещё и HTTPS вообще.
Сейчас хотелось бы показать, что могут делать айтишники в таких случаях — помимо бурных обсуждений на Хабре. Будет ли это иметь эффект — посмотрим в ближайшие недели, но как минимум — это правильный способ общения с государственными органами по таким законопроектам.
AnLinux: простой способ установить Linux-окружение на Android-телефон без рута
Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.
Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.
Представлен конкурент Raspberry Pi 4 — одноплатный ПК с x86, работающий под Windows 10
Китайская компания Radxa на днях выпустила одноплатный ПК Rock Pi X. Это событие могло бы пройти никем не замеченным, если бы не особенности новинки. Дело в том, что она базируется на процессоре x86 и работает с Windows 10 без «костылей», нативно. Естественно, плата совместима с Linux.
Кроме Rock Pi X, есть и другие одноплатники, заявляющие о поддержке Windows, но они совместимы лишь со специализированной версией этой ОС, которая называется Windows 10 IoT Core. А вот Rock Pi — это ПК, совместимый с полноценной ОС.
Не нужно делать из фреймворков культ — они не настолько сложны, чтобы делить людей на React и Angular разработчиков
Недавно меня позвали гостем в «Тяжелое утро с Holy.js», чтобы хорошенько пропесочить за мою статью про глупцов-фронтендеров. Мы обстоятельно поговорили, и один из аргументов был такой — если наши js фреймворки жрут неоправданно много на простых задачах — просто не используй их. Если тебе просто надо порендерить четыре формы, то тебе не нужен ни реакт, ни тайпскрипт, ни вебпак — ничего. Создаешь три файлика .html, .css и .js — вот тебе и приложение.
Ничего не надо никуда билдить, никакого стат анализа, и никакой прожорливой и тормозной ноды на твоей машине — все быстро и просто. Так можно строить и достаточно большие приложения — ведь тот же vs code вполне себе может тайпчекать твой js. Другие проблемы, которые можно решать большими фронтенд инструментами во-первых часто выдуманы их создателями, а во вторых если и создают большую боль — то только на действительно больших приложениях.
Как северокорейские хакеры отмывают краденую криптовалюту на миллиарды долларов
Сама кража для хакеров из Пхеньяна – дело несложное. Другой вопрос – как потом получить реальные деньги.
Много лет династия Ким из Северной Кореи получала деньги через незаконные схемы типа торговли наркотиками и подделки валют. За последнее десятилетие Пхеньян всё чаще начал обращаться к киберпреступлениям – используя армию хакеров для осуществления ограблений банков и обменников криптовалют на миллиарды долларов. К примеру, в 2018 году была проведена атака, благодаря которой за один раз удалось увести $250 млн. ООН говорит, что в результате этих действий режим получает значительные суммы денег, которые тратит на разработку ядерного оружия, способного гарантировать его выживание в течение долгого времени.
Однако есть большая разница между взломом обменника криптовалют и получением на руки реальных денег. Нужно переслать криптовалюту, отмыть её так, чтобы никто не смог её отследить, поменять её на доллары, евро или юани, на которые уже купить оружие, предметы роскоши и первой необходимости.
Любите читать книги на английском? Ваш словарный запас растет быстрее, чем у обычного жителя США
70% активного словарного запаса своего родного языка человек нарабатывает до 18 лет. И уже после 33 лет запоминание новых слов практически останавливается.
Но это не значит, что после 33 у вас не получится изучать иностранные языки. На самом деле возраст вторичен, а реально важны только два фактора. О них читайте в статье.
Мы проанализировали результаты занимательного исследования словарного запаса английского языка, в котором приняли участие свыше 2 млн людей: носителей языка и тех, кто учит английский как иностранный.
Спойлер: четырехлетний носитель языка уже знает больше слов, чем большинство изучающих английский как второй.
А теперь разберем результаты подробно.
Аудиобубен лейтенанта Шмидта: три совета о том, как потратить время и деньги, не улучшив звук наушников
Прошу обратить внимание, что это пост юмористического цикла, который обращает внимание читателей на несколько нелогичные технические решения в аудиофильской электронике. Если вы расчитываете на подробное техническое разоблачение абсурдных методов аудиорелигии, то их тут нет.
Глупость и излишняя уверенность. 13 качеств хорошего руководителя
Я инженер и дизайнер. Мне нравится представляться людям именно так, особенно в Европе. Слово «инженер» там носит интересный налёт загадочности, интеллектуальности и богатства. В общем, очень помогает заводить новых знакомых.
Если копнуть, то в сухом остатке уже не так таинственно. Я просто люблю программировать и рисовать интерфейсы. По-настоящему, очень люблю. На столько, что иногда увлекаюсь и забываю выставлять клиентам счета за это.
А ещё я почти 10 лет руковожу небольшой организацией. Но при этом всегда продолжал программировать и дизайнить как минимум в виде хобби.
Обнаружилась особенность: нельзя одинаково подходить к работе программиста/дизайнера и к работе руководителя, приходится как бы переключать тумблер, перенастраиваться.
В очередной раз планируя проект, поймал себя на мысли «Ну, архитектуру REST API я-то и сам могу сделать. Заодно функциональные требования напишу и нарисую дизайн для MVP. Там же немного совсем». И тут в голове захохотал голос:
— Сказочный ты руководитель, раз самому приходится всё делать.
В общем, ниже привожу чек-лист для себя из будущего, чтобы быстрее переключиться в режим начальника. Надеюсь, кому-то из читателей он тоже окажется полезен. Будет много ссылок на литературу.
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity