Pull to refresh
44
0

Программист

Send message

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

Reading time11 min
Views12K


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

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

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

Reading time5 min
Views6.6K
Меня, как разработчика, работа с цветами порой утомляет, но существуют проекты, упрощающие эту деятельность. 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 — это способ визуализации пикселей, да и разрабатывалась эта модель не для удобного «управления» значениями.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments6

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

Reading time6 min
Views62K


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

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

Reading time27 min
Views187K
Освоить создание графических шейдеров — это значит взять под свой контроль всю мощь видепроцессора с его тысячами параллельно работающих ядер. При таком способе программирования требуется другой образ мышления, но раскрытие его потенциала стоит потраченных усилий.

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


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

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


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

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

Reading time5 min
Views41K

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

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


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

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

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

Reading time42 min
Views130K
image


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

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

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


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

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

Reading time14 min
Views3.4K

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



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

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

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


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


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

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

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

Reading time13 min
Views60K

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

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

Читать далее
Total votes 26: ↑25 and ↓1+24
Comments21

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

Reading time8 min
Views26K

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

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

Читать далее
Total votes 42: ↑39 and ↓3+36
Comments8

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

Reading time3 min
Views14K

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

Читать и слушать
Total votes 17: ↑13 and ↓4+9
Comments26

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

Reading time4 min
Views12K


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

Вернее, не так. Конечно, он есть. Просто он виртуальный.
Читать дальше →
Total votes 31: ↑20 and ↓11+9
Comments63

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

Reading time7 min
Views33K
Привет, Хабр.

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



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

Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments80

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

Reading time3 min
Views137K


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

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

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

Reading time2 min
Views67K

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

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

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

Reading time6 min
Views20K


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

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

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

Reading time5 min
Views11K


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

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

Reading time4 min
Views13K

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




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

Однако есть большая разница между взломом обменника криптовалют и получением на руки реальных денег. Нужно переслать криптовалюту, отмыть её так, чтобы никто не смог её отследить, поменять её на доллары, евро или юани, на которые уже купить оружие, предметы роскоши и первой необходимости.
Читать дальше →
Total votes 30: ↑17 and ↓13+4
Comments20

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

Reading time5 min
Views27K


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

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

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

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

А теперь разберем результаты подробно.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments50

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

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


Прошу обратить внимание, что это пост юмористического цикла, который обращает внимание читателей на несколько нелогичные технические решения в аудиофильской электронике. Если вы расчитываете на подробное техническое разоблачение абсурдных методов аудиорелигии, то их тут нет.
Читать дальше →
Total votes 49: ↑47 and ↓2+45
Comments102

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

Reading time7 min
Views12K


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

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

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

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

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

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

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments15
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity