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

Разработка

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

Удобное управление тестовыми окружениями в docker-compose

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

Всем привет, хочу рассказать о своей утилите dcw (Docker Compose Workspace) для удобного управления тестовыми окружениями на базе docker-compose.

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

Новости

Часть 2 Power Sourcing Equipment

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

Делюсь своим опытом применения PSE контроллера HS104PBI(PTI) от китайского производителя. Описываю свои грабли=)

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

Пишем программу на Python для доступа к YandexGPT с помощью ChatGPT

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

В данной программе можно будет самостоятельно составлять собственные system massage (в программе это называется «Специализация»), а это по сути своей программирование GPT модели естественны языком, так же можно будет изменять temperature (в программе это названо «Креативность») это изменяет вариативность ответов, при значении 0.0 на один и тот же вопрос будет получен всё время одинаковый ответ при 1.0 могут быть разные ответы с похожим смыслом но разные по словесному выражению, так же можно использовать две модели YandexGPT  и  YandexGPT Lite, вторая быстрее и чуть попроще но и дешевле в четыре раза. Описание программы в разделе меню «Информация».

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

Поиск опечаток в проекте

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

Ничего не нашёл на Хабре про CSpell, попробую исправить ситуацию.

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

Таким инструментом оказался CSpell. Если пишите код в Visual Studio Code, то вы его уже используете. CSpell позиционирует себя как спеллер для кода, но он может также спеллерить и обычные тексты. Давайте подключим его в проект.

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

Гайд для самопроверки бизнес-историй перед отдачей их на ревью лиду аналитики и команде

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

Гайд для самопроверки бизнес-историй перед отдачей их на ревью лиду аналитики и команде

Достаточно большой опыт работы с бизнес-историями помог мне сформировать список правил для их самопроверки перед финальным показом команде. И в этой статье я хочу поделиться ими с вами.

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

RISC-V шагает по планете: в Китае появилась еще одна компания по производству чипов. Что о ней известно?

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

В том, что в КНР начнет работу новая компания, разрабатывающая RISC-V процессоры, вроде бы нет ничего удивительного. В стране очень мощная отрасль производства электроники, в ней работают тысячи и тысячи компаний. Но глава этого "новичка" - экс-руководитель "дочки" ARM в Китае Аллен Ву (Allen Wu). У него огромный опыт, и, вероятно, он сможет быстро развернуть производство. Подробности - под катом.

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

OpenAI API – получить ответ ChatGPT на C#

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

В мире развивающегося искусственного интеллекта доступ к таким технологиям, как ChatGPT от OpenAI, становится все более востребованным. Для облегчения процесса взаимодействия с этим инструментом я запилил класс AmChat, который предоставляет простой и удобный способ отправки запросов к API ChatGPT и получения ответов. В этой статье мы рассмотрим особенности класса AmChat и его использование для быстрого и эффективного получения ответов от ChatGPT в вашем коде на C#.

Класс AmChat имеет только один публичный метод – GetAnswer, который является статическим и асинхронным. Этот метод принимает вопрос в качестве параметра и возвращает ответ от ChatGPT.

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

AmChat обеспечивает надежную обработку возможных ошибок, которые могут возникнуть при взаимодействии с API ChatGPT. Это позволяет повысить стабильность и надежность приложений, использующих этот класс.

Рассмотрим пример использования класса AmChat:

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

Async iterator timeout в Python

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

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

В числе прочих задач, решаемых при реализации возможности стриминга, существует задача определения ситуации, в которой сервис, исполняющий запрос, упал с ошибкой, и больше не может продолжать стриминг ответов. В таком случае мы даже не можем понять что именно произошло - обработка и отдача очередной порции ответа будет, но задерживается, либо же передача прервалась, и нужно сообщить об ошибке “наверх”. В протоколе HTTP, например, для детерминирования корректной вычитки ответа может быть использован заголовок Content-Length. Достаточно посчитать количество вычитанных из сокета байт тела запроса\ответа, и сравнить со значением заголовка. Сходится - мы все получили, не сошлось и сокет закрыт - ошибка. Однако вариант решения с заранее заданным количеством данных в первой порции ответов не является универсальным, поскольку не во всех случаях можно точно понимать, сколько именно данных будет передано. Да и архитектура с использованием брокеров сообщений предполагает постоянное поддержание соединения, поэтому мы можем только знать, что из такой-то очереди поступают ответы на ранее сделанный запрос, и в каком-то из ответов будет метка окончания, как маркер того, что запрос обработан и ответ выслан и получен полностью, а если такого маркера еще не получено - остается продолжать ждать. Но ждать можно бесконечно.

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

Почему безопасник должен расти из программиста

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

По каждому из направлений в ИТ есть свои так называемые «приколы» и особенности в части поиска и обучения сотрудников, взаимодействия с софтом, заказчиками и так далее. В моей области, то есть в области информационной безопасности, все еще обсуждают такой вопрос: «Должен ли безопасник расти из программиста?». Имея 25+ лет в области ИТ и ИБ ответственно заявляю — должен. Для меня это не вопрос, но многие со мной не согласятся. Сегодня раскрою свою позицию и объясню, почему безопасникам жизненно необходимо быть программистами.

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

Читать далее
Всего голосов 12: ↑12.5 и ↓-0.5+13
Комментарии7

Как мы проанализировали весь VC, и поняли что делает посты успешными кроме контента. (Спойлер — длина заголовка)

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

Привет, habr! 👋

Вы когда-нибудь задумывались, почему некоторые посты набирают тысячи просмотров, а другие остаются незамеченными? Ясно, что Content is King, но есть ли дополнительные факторы, которые влияют на успешность поста?

Мы решили не гадать, а действовать. 🔍

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

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

Деплоим приложение в k8s через Jenkins+Helm3+ArgoCD

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

В мире современной разработки программного обеспечения Kubernetes (K8s) стал неотъемлемой частью инфраструктуры, предоставляя масштабируемость и гибкость в развертывании контейнеризированных приложений. В этой статье мы рассмотрим эффективный способ деплоя приложений в среде Kubernetes, используя мощные инструменты: Jenkins, Helm 3 и ArgoCD.

Jenkins, с его широким спектром возможностей для автоматизации процессов сборки и развертывания, становится основой нашего пайплайна разработки. Helm 3, в свою очередь, предоставляет инструменты для управления пакетами Kubernetes (чарта), упрощая установку и обновление приложений. Наконец, ArgoCD позволяет автоматизировать процесс развертывания и управления приложениями в Kubernetes-кластере, предоставляя возможность контролировать состояние и версионирование приложений.

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

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

Игры, которые лечат

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

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

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

Дросселирование воздуха. Часть 2

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

Рассмотрение вопроса скорости истечения воздуха под высоким давлением из малого отверстия в вакуум по материалам учебников для ВУЗовской специальности «Криогенная техника».

В комментариях к  одной моей предыдущей  статье «Дросселирование воздуха. Истечение воздушной струи из ресивера в атмосферу со сверхзвуковой скоростью» разгорелась бурная дискуссия с читателем @IGOR_KULIKOV.

Прочитать её можно по ссылке:

https://habr.com/ru/articles/768916/

Спасибо, Игорь, за ценные замечания!

В результате по рекомендации Игоря Куликова я нашёл учебник :

В.И. Иванов «ВАКУУМНАЯ ТЕХНИКА» 2016г, ГУ ИТМО

Привожу скрины страниц из этого  учебника (см.рис.1-4)

 

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

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

Размер имеет значение. Как Ozon автоматизировал измерение товаров на складах

Время на прочтение16 мин
Количество просмотров1.6K

Сотрудники каждого склада, которые хотят выстроить логистические процессы оптимальным образом, должны знать фактические габариты и вес товаров, которые хранятся на его площадях. Совокупность габаритов и веса товара в Ozon называют объёмно-весовыми характеристиками (ОВХ). 

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

Читать далее
Всего голосов 20: ↑20.5 и ↓-0.5+21
Комментарии5

DDD простыми словами

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

Часто в больших компания всё поделено на большие системы. А если система «Legacy», т.е. устаревшая, то часто внутри неё собрано очень много разнородного функционала. По сути такие системы представляют из себя монолитных монстров.

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

Границы систем размыты, нет чёткого понимания, что должно входить в систему, а что нет.

Команды сильно специализированы на конкретную систему и не могут участвовать в доработке никакой другой системы.

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

Можно ли исправить ситуацию коренным образом?

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

Книга: «Чистый дизайн. Практика эмпирического проектирования ПО»

Время на прочтение8 мин
Количество просмотров964
image Привет, Хаброжители!

Грязный код создает проблемы. Чтобы код было проще читать, проходится проводить его очистку, разбивая на части, с которыми удобно работать. Кент Бек, создатель методологии экстремального программирования и первопроходец в области паттернов проектирования, рассказывает нам, где и когда лучше проводить очистку для улучшения кода с учетом общей структуры системы.

Книга не заставляет читателя проводить очистку сразу и целиком, а позволяет протестировать несколько примеров, которые подходят для поставленной задачи. Вы узнаете, как логически разделить на части большую функцию, содержащую множество строк кода. Познакомитесь с теоретическими понятиями программного дизайна: сцеплением, связностью, дисконтированными денежными потоками и вариативностью.
Читать дальше →
Всего голосов 4: ↑5 и ↓-1+6
Комментарии0

Готовимся к вопросам по вёрстке на интервью Frontend-разработчика: значения свойства display

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


Привет, Хабр. Я продолжаю отвечать на вопросы из собеседований на должность фронтендера. Сегодня я отвечу на следующий вопрос: «В чём отличия между значениями block, inline, flex, inline-flex, grid и inline-grid для свойства display


Прошу внимания. Мой ответ будет основан на теории, которую я описал в статье «Зачем нужно использовать свойство display?». Прочитайте, пожалуйста, сначала её.

Читать дальше →
Всего голосов 16: ↑21 и ↓-5+26
Комментарии0

Возможное решение проблемы ссылок в языках программирования

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


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


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


Тем не менее, ссылки в той или иной форме поддерживаются во всех языках программирования, хотя под этим термином часто подразумеваются не полностью эквивалентные термины. Например, под словом "ссылка" можно понимать ссылку как адрес в памяти (как в С++) и ссылку, как указатель на объект (как в Python или Java).


Хотя встречаются языки программирования, которые пытаются решать данные проблемы за счет концепции "владения" (Rust, Аргентум или NewLang). О возможном решении этих, и других имеющихся проблем со ссылками далее и пойдет речь.

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

Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

Время на прочтение5 мин
Количество просмотров1.4K


Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему?


TLDR:


  1. Преобразовываем наши тексты в наборы чисел (векторы) при помощи API openAI.
  2. Сохраняем векторы в базе с помощью pgvector.
  3. Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу.
  4. Ускоряем индексами.
Читать дальше →
Всего голосов 8: ↑8.5 и ↓-0.5+9
Комментарии4

Безопасность android-приложений. Реверсим OWASP MASTG Crackme 1

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

Всем привет! Меня зовут Максим и я занимаюсь исследованиями источников данных. В своей работе периодически приходится сталкиваться с исследованием android-приложений. В этой статье я хочу показать базовые методы реверс-инжиниринга и исследования android-приложений на примере Crackme из проекта OWASP MASTG.

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