Обновить
-2
0.2

Пользователь

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

Тестирование лучших self-hosted аналогов Notion

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели23K

image


Хабр, в связи с уходом Notion выросла потребность в аналогичном решении, которое бы было сопоставимо удобной Wiki, Task Manager — платформе. 


Я испробовал десять self-hosted решений и нашел несколько почти идеальных! Вы можете развернуть их у себя на сервере, при работе над совместными проектами с командой или для ведения личных записей.

Читать дальше →

Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели72K

О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:

1. Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
2. Бесплатно
3. Бонусом — резервная копия: как самих заметок, так и истории изменений.

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

Инструкция:

Как я сделал платформу коротких видео в Telegram Mini Apps

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели7.5K

Недавно я поехал на море с другом. Во время пути мы узнали, что YouTube собираются блокировать (или замедлять). Тут в моей голове родилась идея: почему бы не сделать видеохостинг в Telegram? Я поспорил с другом, что сделаю его по дороге, но ноутбук сел. Поэтому мы договорились, что я сделаю это за день (спойлер: получилось, но кривовато).

Читать далее

Концепции и размышления о новой современной операционной системе

Время на прочтение28 мин
Охват и читатели2.3K

Задумывались ли вы о том, насколько архаичен дизайн операционных систем, которыми мы пользуемся в настоящее время?

Например, почему в Windows (включая 11-тую версию) основной диск с операционной системой называется C?
Читать дальше →

Быстрое введение в сеть Hidden Lake

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.6K

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

Читать далее

Советы по программированию, которые бы я дал себе 15 лет назад

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели24K


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

▍ Если ты (или твоя команда) постоянно стреляешь себе в ногу, то почини ружьё


Не могу перечесть случаи, когда при работе в команде у нас была какая-то часть системы, которая легко могла поломаться, но никто не думал о том, как усложнить появление таких ошибок.

Когда я занимался разработкой для iOS, то использовал CoreData и подписывался на изменения нескольких view. Обратный вызов подписки поступал в тот же поток, из которого было запущено изменение. Иногда это был основной поток, а иногда — фоновый. В разработке для iOS важно то, что вносить изменения в UI можно только в основном потоке, иначе приложение вылетит. Поэтому подписка могла работать нормально, но потом ломалась, когда кто-то запускал изменение из фонового потока или вы позже добавляли обновление UI.

Все без раздумий воспринимали это как что-то само собой разумеющееся, и об этом часто говорили в ревью для новичков в команде. Время от времени кто-нибудь ошибался, и мы добавляли DispatchQueue.main.async, когда видели отчёт о сбое.

Я решил это исправить. У меня ушло десять минут на внесение изменений в слое подписки, теперь подписчики вызывались в основном потоке, что позволило избавиться от целого класса сбоев и сняло с нас часть умственной нагрузки.
Читать дальше →

IoT Geofencing: как мы сократили время определения функциональных зон, используя H3-индексы

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

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

Меня зовут Сергей Шилин, я руковожу разработкой электроники и встроенного ПО в Whoosh. В этой статье расскажу, почему не embedded-задача попала в embedded-отдел и как мы научили микроконтроллер считать H3-индексы и определять вхождение в любую функциональную зону за 0.1 секунды. Прошу под кат!

Вжух — и другая скорость

Telegram Mini App. Как создать Web App с нуля

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели132K

Mini Apps (или же WebApps) - это относительно новый и удобный способ добавления веб приложения прямо в интерфейсе приложения Telegram. Используя JavaScript, становится возможным создавать бесконечное множество интерфейсов, которые смогут заменить полноценный веб-сайт.

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

И сегодня мы попробуем создать miniapp приложение, взаимодействующее с данными пользователя.

Приступим

Читать далее

Управление временем контейнера с помощью docker-compose и faketime

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

Периодически при тестировании микросервисов приходится сталкиваться с необходимостью изменения времени для проверки работы того или иного функционала. Это может быть функционал, который срабатывает по “тику” cron или применение системного времени как одного из условий обработки/хранения/передачи данных тестируемым микросервисом.  

Когда микросервис разворачивается в Docker, время контейнера берется  из системного времени хост машины. Что делать если нам нужно протестировать работу микросервиса в граничных значениях даты-времени?

Читать далее

Ваш плеер работает неправильно, или Как мы учили свой движок выбирать наилучшее качество видео

Время на прочтение15 мин
Охват и читатели1.8K

21 августа команда Yandex Cloud в формате Technical Preview открыла пользователям облака доступ к сервису для хранения, обработки и трансляции видео Cloud Video. Это инфраструктура для работы с видео, которая включает хранилище для контента и метаданных, видеоплеер, сервисы мониторинга и аналитики, CDN, а также возможности автоматической генерации субтитров и перевода. Сервис разработан на базе видеоплатформы Яндекса, которую компания запустила в 2016 году для использования во внутренних продуктах.

Меня зовут Константин Петряев, я разработчик в Yandex Infrastructure, и в команде видеоплатформы я 6 лет занимаюсь разработкой плеера. Моя коллега Оля Попова уже рассказала об истории его создания с нуля. А в этой статье я подробнее расскажу про задачу повышения качества видео в плеере. Остановлюсь на том, как мы боролись с тем, что стандартные прогнозы качества потокового видео всем нам «врут», и как научили плеер выдавать наилучшее возможное качество видео для пользователя, с учётом параметров сети и других менее очевидных вводных.

Читать далее

Общественный транспорт в MAPS.ME

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели1.5K

Всем привет, я Максим, последнее время работаю на МАПС.МИ, а конкретно в части ядра С++, обработки и подготовки данных. Хотелось бы поделиться своими наработками и похвастаться тем, как приложение становится чуточку лучше. Речь пойдет про добавление навигации через общественный транспорт.

Читать далее

Топ бесплатных нейросетей на все случаи жизни

Время на прочтение10 мин
Охват и читатели117K

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

Приятного прочтения!

Читать далее

Поиск секретов в программном коде (по энтропии)

Время на прочтение3 мин
Охват и читатели2.2K
Недавно в открытом доступе появился новый инструмент для поиска приватной информации в открытом коде. Это Entropy — утилита командной строки, которая сканирует кодовую базу на предмет строк с высокой энтропией. Предположительно, такие строки могут содержать секретную информацию: токены, пароли и др.

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

Демистифицируем парсинг PDF: конвейерная обработка

Время на прочтение23 мин
Охват и читатели4.7K

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

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

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

Читать далее

Интеграция LLM в корпоративные чат-боты: RAG-подход и эксперименты

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели5.9K

Всем привет! На связи команда AI-Run из X5 Tech, мы занимаемся генеративными сетями в целом и языковыми моделями в частности. В этой статье мы опишем наш опыт работы с большими языковыми моделями (LLM), их внедрение для обработки корпоративных данных, а также поделимся нашими результатами и выводами.

Ещё мы расскажем о нашем подходе к использованию LLM, подробно остановимся на методе Retrieval Augmented Generation (RAG) и рассмотрим примеры использования чат-ботов на корпоративных порталах X5.

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

Читать далее

Fine-tuning больших языковых моделей в 2024 году

Время на прочтение14 мин
Охват и читатели6.9K

Не секрет, что большие языковые модели (LLM) эволюционируют с безумной скоростью и привлекают внимание всей отрасли генеративного ИИ. Корпорации не просто заинтригованы, они одержимы LLM, и в частности, потенциалом fine-tuning LLM. В исследования и разработку LLM сейчас вкладываются миллиарды долларов. Лидеры отрасли и энтузиасты технологий всё сильнее стремятся углубить своё понимание LLM и их fine-tuning. Эта сфера natural language processing (NLP) постоянно расширяется, поэтому критически важно иметь актуальную информацию. Польза, которую LLM могут принести вашему бизнесу, зависит от ваших знаний и понимания этой технологии.

Цикл жизни большой языковой модели состоит из множества важных этапов, и сегодня мы рассмотрим один из самых любопытных и активно развивающихся частей этого цикла — процесс fine-tuning моделей LLM. Это трудозатратная, тяжёлая, но перспективная задача, используемая во многих процессах обучения языковых моделей.
Читать дальше →

Transfer learning: подробный гайд для начинающих

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели5.4K

Вместе с Марией Жаровой, Data Scientist в Альфа-Банк, подготовили гайд по трансферному обучению.

Разбираем основные принципы, механизмы и инструменты TL, рассказываем, где и как его используют, и даем конкретные кейсы для тренировки.

Читать далее

Использование ответов OpenAI API в формате JSON: Введение

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

Тема использования JSON в ответах OpenAI API звучала в анонсах примерно год назад и до некоторой степени описана в документации. В частности, Сэм Альтман на презентации одного из крупных релизов говорил о том что о такой фиче активно просили разработчики. Однако с тех пор мне не удалось найти целостных описаний решений, сценариев и паттернов, которые выглядели бы как практически полезные и на основе которых можно было бы быстро составить целостное понимание. Те материалы, которые попадались мне до сих пор, показались мне довольно абстрактными, недостаточно целостными, оторванными от реальности, иногда перегруженными техническими подробностями, за которыми теряется общая картина.

Вчера (6 августа) OpenAI выпустила обновление этого функционала и вместе с ним заметно обновила и дополнила документацию в этой части. С одной стороны, в новой версии документации стало больше конкретных и наглядных примеров. С другой, - в дополнение к понятию Function calling добавилось еще новое понятие Structured Outputs, которое для начинающего пользователя на первых шагах может усложнить понимание.

В этой статье я хотел на небольшом примере дать краткий поверхностный обзор того как, на мой взгляд, можно задействовать JSON-ответы для конкретной задачи. Сразу скажу, что мой пример оказался крайне примитивным (чуть сложнее чем "Hello, World!"). Я старался достичь наглядности за счет демонстрации всего цикла от идеи "продукта", до его рабочего прототипа. Свою задачу я реализовал в трех вариантах (по мере возрастания сложности): "Чат без Function calling", "Чат с Function calling" и "Assistant Function calling". Возможно, кто-то найдет для себя в этом что-то полезное.

Читать далее

Go: жарим общие данные. Атомно, быстро и без мьютексов

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.5K


Как правило, в Go для безопасного доступа к общим данным используются мьютексы. Да, каналы тоже можно приспособить для изменения общих данных, так как они потокобезопасны, но это усложняет и замедляет логику.

Но в этой статье мы поговорим о другом. Современные процессоры имеют поддержку атомарных операций, что позволяет на основе них организовывать работу с общими данными до нескольких раз быстрее, чем с помощью общепринятых вариантов. Так как мьютексы реализованы на основе ОС, каналы сделаны на основе внутреннего кода Go с использованием тех же мьютексов из ОС под капотом, а атомарные операции делает сам процессор аппаратно за существенно меньшее количество тактов.
Пожарим омлет по атомному?

Вы нас просили и мы сделали. VPN на собственном сервере с XRay Reality за 5 минут с помощью Amnezia

Время на прочтение4 мин
Охват и читатели192K

Всем привет! Это команда Amnezia. 

Мы читаем комментарии под нашими постами и знаем, что один из самых частых вопросов – когда будет XRay? Так вот, мы добавили XRay в приложение AmneziaVPN, а точнее протокол Reality от XRay для всех платформ -  IOS, Android, Windows, Linux и MacOS. Если у вас еще нет последнего релиза, скорее скачивайте и создавайте VPN на собственном сервере в пару кликов с одним из самых защищенных и быстрых протоколов в мире, ниже мы немного о нем расскажем, а в конце статьи будет пошаговая  инструкция как это сделать.

Почему XRay Reality так популярен ?

Все дело в том, что Reality подходит для стран с самым высоким уровнем интернет-цензуры, сейчас его используют в Китае и Иране, он защищен от детектирования методами active probing. 

Распознать цензоров REALITY может еще на этапе TLS-хендшейка. Если REALITY видит, что к нему приходит его клиент, то сервер запускает для него VPN туннель, а если приходит любой другой запрос на 443 порт, то TLS-подключение передается на какой-нибудь другой реальный сайт, например, google.com, где цензор получит настоящий TLS-сертификат от google.com и вообще все настоящие данные с этого сайта.

Со стороны систем анализа трафика это выглядит как подключение к настоящему сайту, сервер отдает настоящий TLS-сертификат этого сайта, и вообще все (включая TLS fingerprint сервера) выглядит очень по-настоящему и не вызывает подозрений. 

Особенно приятно, что при этом производительность REALITY и скорость подключения у протокола действительно хороши, в сравнении, например, со связкой OpenVPN over Cloak.

Читать далее

Информация

В рейтинге
3 055-й
Зарегистрирован
Активность