Создание эффективного Node.js API, обеспечивающего безопасность данных и типобезопасность, может быть сложной задачей. Это руководство демонстрирует процесс с использованием Prisma, TypeGraphQL и graphql-query-purifier.
Разработка
Новости
Рефакторинг Swift
Swift, как и любой другой язык программирования, может стать беспорядочным и сложным в обслуживании без надлежащей организации и структуры. В этой статье мы рассмотрим, как вы можете профессионально реорганизовать свой код, улучшая не только свою собственную производительность, но и производительность вашей команды.
Как выбрать первую механическую клавиатуру. Пособие для новичка
Попросили меня друзья\коллеги рассказать про первые шаги и выбор механики для работы и жизни. Решил поделиться и с Хабром статьёй о том, как выбрать себе первую механическую клавиатуру.
В статье отвечу на вопросы о том, что такое HotSwap board, что за проценты в размерах клавиатур и зачем нужна крутилка на некоторых из них. А так же помогу определиться с тем, какую клавиатуру вам искать.
Как подружить Windows, Lens и Teleport
Я не являюсь экспертом ни в Lens, ни в Teleport, но в какой-то момент моей разработческой жизни возникла необходимость подключиться к кластеру Kubernetes с помощью Lens, т.к. не могу сказать, что очень удобно пользоваться kubectl. Подробной инструкции на этот счет, к сожалению, в Интернете мне найти не удалось. Поэтому решил написать свою (описание настройки серверной части оставим другим авторам).
Если вы, как я, и все остальные «нетрушные» программисты, предпочитаете оставаться на Windows и не спешите уходить на Linux или Mac, а встроенный WSL2 (подсистема Linux для Windows) вас белее чем устраивает, то добро пожаловать под кат.
Истории
Проблема понимания существующего кода, или Как делать иногда [не] надо
Я столкнулся с тем, что я иногда не понимаю код, с которым мне приходится работать. И это сильно сказывается на моей производительности и на качестве конечного результата. Неделю назад я прочитал статью Плохо девелопмент за авторством @dalerank(Сергей Кушниренко), в которой описывается проблема молодых специалистов, которые упрощая себе работу пользовались готовыми решениями, а не писали код с нуля. Моя статья не об этой статье и не ответ к ней. В самой статье Сергея Кушниренко была ссылка на другую статью - You should refuse to develop what you don’t understand. И вот эта статья меня несколько озадачила. Я задумался о проблеме понимания того, с чем я работаю. О ней я бы хотел написать, но и некоторые тезисы из статьи Сергея Кушниренко я тоже затрону.
ВНИМАНИЕ! Дальше вас ждет душная простыня текста без юмора.
XRay (с VLESS/XTLS): проброс портов, реверс-прокси, и псевдо-VPN
Я уже написал тут много статей на тему установки и настройки прокси-серверов XRay с недетектируемыми протоколами Shadowsocks-2022, VLESS (с XTLS), и т.п. И один из очень часто поднимаемых в комментариях вопросов звучит так: можно ли с использованием XRay как-то организовать проброс портов или получать доступ к внутренностям корпоративной сети? Можно, и сейчас я расскажу как.
Итак, что же можно сделать с помощью реверс-проксирования?
Можно получать доступ к каким-либо сервисам на хосте за NAT'ом или строгим фаерволом, и даже более того - можно получать доступ к сервисам на других устройствах в локальной сети, к которой имеет доступ этот самый хост за NAT'ом файерволом.
Можно маршрутизировать весь (или некоторый в зависимости от настроенных правил) трафик на хост за NAT'ом или фаерволом и выпускать его оттуда в Интернет.
Например, вы проживаете за границей, хотите оплачивать счета за ЖКХ вашей недвижимости оставшейся России, но сервис оплаты не пускает вас с забугорных IP и не пускает вас с IP-адресов даже российских VPS-хостеров. Тогда можно поставить у кого-нибудь из друзей или родственников в РФ преднастроенный роутер или одноплатник типа Raspberry Pi, который подключится к вашему прокси-серверу, а вы, в свою очередь, через прокси-сервер сможете достучаться до этого роутера/р-пишки и выйти через него во внешний интернет как обычный пользователь, находящийся в России - и всем ресурсам будет виден IP-адрес российского домашнего интернет-провайдера.
Можно выборочно пробрасывать порты, например, все подключения на 80 порт прокси-сервера будут переадресовываться на 80 (или любой другой) порт "изолированного" хоста или еще куда-то дальше.
Можно даже в теории соорудить псевдо-VPN, чтобы подключенные клиенты прокси-сервера могли достукиваться друг до друга.
Практический пример использования модели детекции изображений
Всем доброго дня. Совсем недавно я закончила продвинутый курс от Deep Lerning. Курс объемный, много свежей информации. Мне, как закончившей прикладную математику и часто по работе соприкасающейся с искусственным интеллектом (нейросетки, генетика, fuzzy logics) было не сильно сложно, но мега-увлекательно за счет того, что ребята очень заинтересованные и рассказывали про свежие интересные модели, еще и на русском языке. Приятно видеть, что ИИ-сфера в нашей стране тоже не стоит на месте.
Хотелось сделать своими руками что-нибудь эдакое полезное и одновременно мега-современное и вот что я придумала. У нас есть частный дом, там есть дворовые коты, которых надо кормить и в мое отсутствие. А так же есть еще птицы, кроты, чужие вездесущие собаки и другая живность, которых не стоит кормить, если не хотим, чтобы они у нас все поселились. Так вот, а что, если прикрутить модель детекции изображений к умной кормушке? Далее было бы здорово научиться использовать голосовые команды, например, на закрытие кормушки. И чтобы не писать никаких специальных программ, воспользуемся телеграмм-ботами, телеграмм стоит почти в каждом телефоне.
В данной статье я сделала акцент именно на том, как пользоваться моделями детекции изображений на практике.
Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить
Всем доброго времени суток. Я давно обещала выложить сюда подробный гайд на тему того, как можно изучать Machine Learning самостоятельно, не тратя деньги на платные курсы, и, наконец, выполняю свое обещание. Надеюсь, этот гайд станет подсказкой, которая поможет найти правильное направление новичкам, которые хотят погрузиться в нашу область.
Реализация SOLID на примере
Рассмотрим на простом и наглядном примере реализацию SOLID на Symfony. Будет так же ссылка на Github. Допустим, нужно реализовать импорт товаров из внешнего сервиса...
Хакатоним эффективнее: как поднять удаленный сервер MLflow Tracking для команды
Хакатон – это всегда повышенный стресс, потому что за короткое время нужно найти лучшее решение для поставленной задачи. Вам придется обучить десятки моделей, найти оптимальную комбинацию гиперпараметров и при этом координировать действия с командой. Чтобы минимизировать хаос совместной разработки, предлагаю воспользоваться MLflow. С его помощью вы сможете синхронизировать усилия всей команды, а также иметь доступ к истории всех экспериментов: к обученным моделям, их гиперпараметрам, метрикам и не только. Узнайте, как поднять удаленный сервер MLflow Tracking, приложив минимум усилий.
Переключение раскладок методом смены клавиатур
Хотел бы предложить свой метод переключения раскладок на клавиатуре. Существует множество программ, переключающих раскладки - Punto Switcher, Comfort Keys Pro... И для большинства пользователей эти способы, вполне возможно, будут предпочтительными.
У программных способов переключения есть и недостатки - это ошибки при определении языка, безопасность, а также, в некоторых случаях, цена.
Мне, как программисту, пользоваться Punto Switcher и аналогами, довольно проблематично, постоянно происходит неверное определения языка. При этом, нужно все время держать в уме, какая сейчас раскладка, переключаться на нужную, а потом еще и исправлять ошибочно введенный текст. Можно, конечно, переводить текст по нажатию, но все равно приходится об этом задумываться.
Я подумал: почему бы вместо переключения раскладок на одной физической клавиатуре не переключаться между двумя физическими клавиатурами. Т.е. русский текст набираем на одной клавиатуре, а английский - на другой клавиатуре.
А когда знаешь, что на одной клавиатуре будет только один язык, а на другой клавиатуре - только второй, то уже не задумываешься о раскладке. В общем, решил я провести эксперимент на себе и пользоваться двумя клавиатурами в течении хотя бы недели (для набора кода и текстов на английском и русском языках).
По завершении недели можно сказать, что эксперимент прошел успешно и возвращаться к старому методу нет никакого желания:
Первые 2 дня проходило привыкание к новому способу набора текста, рука так и тянулась к клавишам переключения раскладки. Поэтому совет: отключите сочетание клавиш переключения языка, к которому Вы привыкли. А в следующие дни работа с клавиатурой пошла быстрее, без неверно-введенных слов. Больше не приходилось заново набирать текст или менять раскладку, что вселяло некоторую уверенность при наборе текста.
Как принимать платежи в Telegram | Оплата без всяких токенов и асинхронная обработка платежа
Как принимать платежи на своем сайте или в telegram используя библиотеку yoomoney-api.
Как я заработал 500 000 рублей, сделав доступ к ChatGPT. А потом Яндекс убил SEO и всё (почти) закончилось
Статья о том, как я почти проспал "бум" ChatGPT, но сделал к нему доступ и заработал на этом (и продолжаю зарабатывать). Сам проект сейчас идёт на спад, но об этом в конце.
Ближайшие события
Пишем gRPC сервис на Go — сервис авторизации
В этой статье мы научимся писать полноценный gRPC сервис на Go на примере сервера авторизации с полноценной архитектурой, готовой к продакшену. Мы напишем как серверную часть, так и клиентскую. В качестве клиента мы возьмём мой сервис — URL Shortener, о котором у меня также есть статья и видео-гайд на ютубе. Попутно мы познакомимся с базовыми подходами к работе с авторизацией. И в конце настроим автоматический деплой сервиса с помощью GitHub Actions на удалённый сервер.
Видео-версия этого гайда с более подробными объяснениями
Итого, наш план:
- Напишем простой, но полноценный gRPC-сервис
- Разберемся с базовыми принципами работы авторизации — чтобы не было скучно
- Настроим автоматический деплой в прод — потому что руками деплоить лень
- Подружим его с уже готовым сервисом URL Shortener — чтобы был практический смысл
- Напишем полноценные функциональные тесты
На выходе мы получим полноценный рабочий сервис авторизации, который вы сможете по аналогии подключать к своим пет-проектам.
Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал.
Tailwind vs BEM — 2 (архитектура)
Статья рассматривает возможные задачи верстки на разных проектах и как с ними справляются две разные архитектуры: Tailwind CSS и ванильный CSS + BEM.
Когда телефоны были большими…
На днях прочитал прекрасную статью по использованию древнего контроллера i4040 для вычисления числа Пи. Искусство в чистом виде, браво.
Это совпало с необходимостью освобождения помещений у нас для нового проекта, а в этих помещения у нас лежит масса артефактов нашего прошлого: разнообразной комплектации, недоделок, не проданных изделий для телефонии, видеорекордеров, модулей записи речи и прочего. У нас у самих не хватает мыслей, куда это можно применить, так находимся в плену исходного предназначения этих изделий. Возможно коллективный разум Хабра сможет помочь. Если находятся даже применения контроллера i4040, то наверняка можно применить и наши артефакты, где тоже реализовывалось искусство программирования, практически утерянное сейчас, позволяющее впихнуть обширный функционал в 8КБ кода.
Для интересных хоббийных проектов отдадим образцы бесплатно, для коммерческих - договоримся. Будем рады, если нам удастся кому-нибудь помочь создать что-то интересное.
Добавляем подсказки в приложение с помощью TipKit
Когда TipKit был впервые упомянут во время выступления на WWDC 2023, я поначалу предположил, что это какой-то новый способ отображения приложений в приложении Tips и, возможно, Spotlight. Вместо этого мы увидели встроенный компонент для добавления небольших обучающих представлений в наши собственные приложения на всех платформах с системой правил для отображения на основе условий и синхронизацией на нескольких устройствах через iCloud! Более того, Apple сама использует этот компонент в iOS 17, например, в приложениях Messages и Photos.
Время Cloud.ru. AWS закрывает дверь
Технологии продолжают проникать во все сферы жизнедеятельности человека. Трудно найти область, где технологий нет. А ведь недавно вживление чипа в мозг человека было лишь в фантастическом фильме!
За последнее время мне несколько раз приходилось упоминать в различных дискуссиях о том, какая проводится работа в области генома человека, как применяется нейросетевая модель для исследований. Эта тема достойна больше, чем просто восхищения!
Этим летом мне посчастливилось участвовать в программе «Цифровые технологии и цифровые бизнес-модели для IT» Академии лидеров цифровых команд Сбера (детальней можно посмотреть здесь https://programmes.sberuniversity.ru/digital_leaders_academy#rec623444895).
В программе был доклад «Применение ИИ в геномике» Ольги Кардымон (чуть более подробней можно найти по поиску в сети, например, здесь: «AI Journey на ПМЭФ» https://finance.rambler.ru/business/50937255-na-pmef-proshla-sessiya-ai-journey-puteshestvie-v-mir-iskusstvennogo-intellekta/) – это был доклад на тему микробиологии и применения технологий искусственного интеллекта.
Но это вступление, чтобы показать многогранность применения технологий, и что для подобной работы требуются эксперты высокого уровня.
И теперь хочу вернуться к ставшим повседневными технологиям Cloud, и способам подготовки и проверки экспертов такого направления как архитектура ИТ-решений (Solutions architecture).
Road Run, или как я свою первую игру делал. Часть 3
Вторая часть была о том, как быстро создавать текстуры для окружающей игрока обстановки, не имея при этом навыков в изобразительном искусстве. В этой части уместно будет поведать о премудростях создания трёхмерных моделей.
Погружение в Smali. Как выглядят Java и Kotlin со стороны
Эта статья для начинающих исследователей файлов APK. Хотя почему только для начинающих? Иногда стоит остановиться и разложить по полочкам то, что накопилось. И тогда можно найти логичное и простое объяснение тому, чего не понимал. Или увидеть то, чего раньше не замечал.