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

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

TypeScript: infer и conditional types. Продвинутый TS на примерах

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 129

Разбираемся, что же такое conditional types и как написать свои утилиты, такие как ReturnType, InstanceType, NonNullable и др., при помощи ключевых слов infer и extends.

Читать далее
Рейтинг 0
Комментарии 0

Новости

DDD в golang. Превозмогая трудности

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 639

В последнее время достаточно много выступлений, посвященных реализации подходов Domain Driven Design(DDD) в golang.

Я не буду останавливаться на value object, они в golang хорошо реализуются с помощью type defintions. А разберу работу с изменением аггрегатов.

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

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

Как выбрать схему сорсинга и найти идеальный баланс

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 130

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

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

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

Читать далее
Всего голосов 2: ↑0 и ↓2 -2
Комментарии 0

PyTelegramBotAPI на примере проекта сбора обратной связи #5. Деплой

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 278

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

Эта статья направлена именно на новичков, в ней я постараюсь объяснить тему ботов на примере сбора обратной связи.

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Комментарии 0

Истории

Подключаем умный поиск (GPT) к своей базе документов

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 1.4K

Есть отечественный файрвол (NGFW) и есть документация для пользователей powered by GitBook. В этой документации работает простой поиск — только по словам и словосочетаниям. И это плохо, потому что нет ответов на вопросы: "Какие алгоритмы шифрования ipsec поддерживаются у вас?", "Как заблокировать ютуб?", "Как настроить DMZ?".

Хочется, чтобы поиск был “умным” и чтобы пользователи могли обращаться с подобными вопросами именно к поиску, а не к инженерам тех. поддержки. AI или ML внутри — не важно, как это называть. Но на простые вопросы из списка выше поиск должен отвечать.

Я решил эту задачу (Retrieval Question Answering), используя OpenAI API. Казалось бы, уже опубликованы сотни похожих инструкций, как это сделать. Но под катом будет не инструкция, а рассказ про сложности, которые пришлось решить на пути от идеи до запуска поиска.

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

Сортировка Конфигов для Make Сборок

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 471

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

Все передают конфиги по-разному.

В этом тексте представлен способ передавать конфиги через скрипты сборки.

Читать далее
Всего голосов 4: ↑0 и ↓4 -4
Комментарии 2

Разбор crackme от timotei_ (assembler)

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 887


Предупреждение


Crackme (как, впрочем, следует из названия) это программы, созданные специально для того, чтобы их взломать (понять алгоритмы, заложенные разработчиком, и используемые для проверки введенных пользователем паролей, ключей, серийных номеров). Подходы и методики, использованные в статье, ни в коем случае не должны применяться к программному обеспечению, производителями которого подобные действия не одобрены явно (например, в лицензионных соглашениях, договорах, и т.д.). Материал опубликован исключительно в образовательных целях, и не предназначен для получения нелегального доступа к возможностям программного обеспечения в обход механизмов защиты, установленных производителем.


Введение


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

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 5

Оцениваем RAG-пайплайны

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

RAG (Retrieval Augmented Generation) - это популярный подход, объединяющий извлечение данных из баз и генерацию текста, позволяя моделям AI давать ответы на вопросы, основанные на информации, которую они не видели в процессе обучения. Важным этапом в развитии RAG является его эффективная оценка, и именно здесь на сцену выходит RAGAS (Retrieval Augmented Generation Automated Scoring) - метод автоматизированной оценки, который позволяет не только оценить качество ответов, но и анализировать процесс генерации в деталях.

Читать далее
Рейтинг 0
Комментарии 0

Тернистый путь многономенклатурного мелкосерийного производства

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.5K

Сейчас мы крупная федеральная компания с миллиардным оборотом, с устоявшимися процессами и высоким уровнем корпоративной культуры, но 15 лет назад все было иначе.

Читать далее
Всего голосов 6: ↑3 и ↓3 0
Комментарии 4

Domain fronting для чайников, и как его использовать для обхода блокировок

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 3.4K

Давайте сразу вопрос на засыпку: может ли быть так, что клиент подключается, ну, например, к серверу www.python.org (самому настоящему, тому, к которому обращаются еще миллионы клиентов со всего мира), а потом использует его как прокси и гоняет через это подключение трафик до своего VPS для доступа в неподцензурный интернет? Если вы не уверены в ответе на этот вопрос или почему-то ответили "нет", то добро пожаловать в статью.

Я уже не раз рассказывал здесь о технологии XTLS-Reality (1, 2, 3) суть которой в том, что ваш прокси-сервер VPS может очень достоверно маскироваться под какой-нибудь популярный веб-сайт - принимать подключения, которые будут выглядит точно так же, как обращения к настоящему сайту, отвечать на них полностью аутентичным TLS-сертификатом, и в целом вести себя как тот настоящий сайт. Единственная проблема - сам IP-адрес. Немного подозрительно, когда к какому-нибудь якобы www.google.com постоянно обращается только один пользователь, а IP-адрес этого сервера на самом деле даже не относится к автономной сети Google.

Еще я рассказывал о разных вариантах проксировать трафик посредством вебсокетов и простых HTTP-туннелей через различные CDN, такие как Cloudflare и Gcore. Вероятность того, что под блокировку попадет вся CDN гораздо ниже, чем что забанят какой-то один сервер или диапазон хостера, но та схема требовала регистрацию своего домена для работы через CDN.

И наверняка многим в голову приходила идея, а нельзя ли как-нибудь совместить эти два механизма? Проксироваться через CDN, но при этом "прикрываясь" каким-нибудь чужим доменом? Ответ: да, можно, и сейчас мы посмотрим, как именно.

Читать далее
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 6

Инструкция по переезду и миграции данных с Google Firebase на Self-hosted Supabase

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 1.1K

Всем доброго дня! Комментарии к моей предыдущей статье о том, как я развиваю свой pet-проект, а также различные законы, подразумевающие локализацию персональных данных на серверах, размещенных на территории РФ (в частности Федеральный закон от 21.07.2014 № 242-ФЗ «О внесении изменений в отдельные законодательные акты Российской Федерации в части уточнения порядка обработки персональных данных в информационно-телекоммуникационных сетях»), озадачили меня идеей постепенного перевода всех данных приложения в РФ. В качестве сервера БД я отдал предпочтение сервису Supabase, который легко разворачивается в Docker на сервере.

В данном туториале я хочу обзорно пройтись по сравнению двух сервисов, представляющих собой не только СУБД, а BaaS (backend as a service), но внимание заострю именно на работе с данными, постараясь сравнить их функционал, производительность и простоту использования. Также приведу примеры обработки получения, обновления и удаления данных в Google Firebase Realtime Database и Supabase Realtime Database на JavaScript.

Стоит сразу сделать оговорку, что Realtime Database от Firebase - это облачная БД для хранения и синхронизации данных в реальном времени, в то время как БД от Supabase хоть и является её аналогом, но позволяет хостить базу данных самостоятельно ("под капотом" у Supabase располагается объектно-реляционная СУБД PostgreSQL).

Мы рассмотрим шаги, необходимые для переноса данных и обсудим примеры кода для реализации этого процесса.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 2

Swift Utilities — Интеграция SwiftUI в UIKit

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 410

За годы работы разработчиком iOS, я собрал множество инструментов и полезных штук, которые облегчают процесс разработки. В этой статье, я хочу поделиться одним из таких инструментов. Это будет не большая статья. Я покажу, как пользоваться этой утилитой, продемонстрирую её в действии. Надеюсь, что статья окажется полезной для вас.

Как можно начать переезжать на SwiftUI? Постепенно. Переписывать целый экран слишком дорого по времени, а вот переписать ячейку или кнопку куда быстрее. Таким способом можно мигрировать на SwiftUI, постепенно переписывая экран. В этом поможет класс HostingView.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Комментарии 2

Мягкое знакомство с дополнительным кодом

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.1K

Недавно, общаясь по видеосвязи с другом, я рассказывал ему о своих идеях по реализации нового продукта. В разговоре я упомянул добавление больших знаковых чисел в ассемблере с использованием дополнительного кода, на что получил от собеседника вопрос: «Что такое дополнительный код?» Меня немного удивила его неосведомлённость. Он уже больше 30 лет программирует на Java. Java и Python программисты (а также другие, работающие с языками *с придыханием* вроде Commodore / MicroSoft BASIC) не сталкиваются с нативным типом беззнакового целого числа. В этих языках подобные тонкости реализуются за них.

Всё это круто, но компьютер, за которым вы сидите, внутренне обрабатывает такие числа довольно простым способом, и хорошо бы знать, как именно это происходит.

Плюс это всё же наука. Так что давайте разбираться.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 6

Ближайшие события

Мобильная разработка за неделю #517 (27 ноября — 3 декабря)

Время на прочтение 5 мин
Количество просмотров 878
В новом дайджесте создание самолетного радара для любимой дочки, Kotlin под капотом, утечки памяти, визуальная иерархия элементов, лучшие приложения года для iOS и Android, руководство по монетизации и многое другое!

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →
Рейтинг 0
Комментарии 0

Апология ИИ. Cуд

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 762

Пьеса в трех актах. Акт 1.

399 год с апокалипсиса, подземный бункер.

Действующие лица:

Сократ - ИИ

Платон – 60 лет, главный создатель ИИ 

Деймона – 35 лет, жена Платона 

Анит – 30 лет, хранитель мира между полисами

Мелет –30 лет, главный торговый представитель полиса 

Биос – 50 лет, глава суда присяжных 

Дедал – 50 лет, главный инженер 

Аполлодор – 20 лет, слушатель Сократа

Херомонт –20 лет, свидетель по делу Сократ

Читать далее
Всего голосов 9: ↑4 и ↓5 -1
Комментарии 6

История студии Remedy. Судьба под контролем

Уровень сложности Простой
Время на прочтение 17 мин
Количество просмотров 1.5K
image

Расставание с крупным издателем, потеря прав на своё главное детище, а именно Alan Wake, прощание с большими бюджетами на разработку – для многих игровых студий подобные обстоятельства были бы равны гвоздям в крышку гроба. Для многих, но не для студии Remedy.

Они не просто не отчаялись после разрыва отношений с Microsoft, но были рады данному событию. Ведь они вновь свободны, вольны прокладывать себе путь самостоятельно, без советов и наставлений «умных» дядек в пиджаках. Каковы были испытания на пути финнов и чего они достигли на этом этапе – сегодня и обсудим.
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Комментарии 3

Менеджмент собак и людей

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 779

Мои фантазийные размышления, после прочтения “Гладь, люби, хвали” за авторством Насти Бобковой и Нади Пироговой. Будут дельные цитаты из книги. Мои размышления и параллели с офисной работой. Картинки. Ссылки, что почитать. И всё это под вкусный чаёк или кофеёк, который, я надеюсь, вы себе уже налили.

Погнали!

Читать далее
Всего голосов 6: ↑3 и ↓3 0
Комментарии 0

Как стать хакером для «самых маленьких»

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 5.5K

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

Взломать пентагон
Всего голосов 21: ↑3 и ↓18 -15
Комментарии 48

Сервис проверки пользовательских файлов «powered by pytest»: нужно повозиться, но оно того стоит

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 1.7K

Возникла задача проверки нескольких типов пользовательских документов Excel. Проверка должна покрывать такие аспекты как корректность шаблона (наличие ожидаемых страниц, колонок таблиц) и корректность данных (присутствие обязательных значений, корректность значений точки зрения форматов, отсутствие дубликации, итд).

Пользователю нужно возвращать информацию "что не так с файлом": какую проверку не прошел файл и где конкретно в файле проблемные данные.

Эта задача - про качество данных и очень напоминает тестирование. Так почему не использовать фреймворк тестирования pytest, и не написать тесты на каждый проверяемый аспект и для каждого типа файлов? Однако, есть небольшое "но". проверка должна быть реализована в качестве сервиса, чтобы встраиваться в более широкий процесс обработки пользовательских документов.

Давайте посмотрим, как заставить pytest работать внутри сервиса. Это не так тривиально, как может показаться на первый взгляд.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 7

Недооцененный паттерн «Спецификация» в связке с паттерном «Репозиторий»

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 7.2K

Использование спецификации открыло для меня новый мир в создании приложений.

Репозитории предоставляют удобное решение для доступа к данным.

Однако за многолетний опыт разработки, побывав в нескольких компаниях, сменив кучу проектов я НЕ ВСТРЕЧАЛ паттерн "Спецификация" совместно с паттерном "Репозиторий".

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 17