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

Делегаты в C# подробнее

Уровень сложностиСредний

Как они работают под капотом? Что именно происходит при "замыканиях", грамотное обращение со структурами при работе с делегатами.

На что нужно обращать внимание.

Читать далее

Расширение типов внешних библиотек в TypeScript

Уровень сложностиПростой

Задача: расширить typescript insterface npm пакета. Звучит просто.

Есть пакет store и он позволяет расширять свое API через плагины, и его тайпинги, которые ничего не знают про твои плагины и твой патчинг. В этих тайпингах есть тип StoreJsAPI и его нужно проапгрейдить, добавив некоторые параметры.

Читать далее

Иррациональные числа: «водяные знаки» на ткани вселенной?

Уровень сложностиПростой

Введение: От яблок к иррациональным числам

Представьте мир, где существуют только целые числа. Одно яблоко, два яблока, три... Но вот мы сталкиваемся с задачей: у Пети четыре яблока, вы просите половину дать Васе. Сколько останется у Пети? Кажется, что правильный ответ — два. Но Петя, будучи мальчиком предприимчивым, отвечает: "Три с половиной". Так мы обнаруживаем, что числа бывают не только целые, но и дробные. Дробные числа можно записать по-разному, например, "три с половиной" — это 3,5.

Но что будет, если мы захотим разделить 5 яблок на троих детей? Мы получим дробь 1,66666..., где цифра 6 повторяется бесконечно. Это число нельзя записать точно с помощью конечного числа знаков после запятой. И хотя это число бесконечно и поэтому выглядит необычно, всё же оно является рациональным числом, потому что может быть выражено с помощью дроби 5/3.

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

Давайте попробуем. Это делается с помощью простой формулы, которая звучит в наших головах со школьной скамьи: сумма квадратов катетов равна квадрату гипотенузы. Записывается она так: a² + b² = c², где a и b — катеты, а c — гипотенуза. В нашем случае катеты равны 1 метру, а гипотенуза — это диагональ квадрата, которую мы хотим найти. Подставляем значения в формулу: 1² + 1² = c² Получаем: 1 + 1 = c² => 2 = c² Чтобы найти c (диагональ), нужно извлечь квадратный корень из 2: c = √2

Читать далее

Опыт прохождения виртуальной стажировки в иностранной компании

Уровень сложностиПростой

О платформе (Forage, theforage.com) виртуальных стажировок я узнала, когда обучалась на Магистра в ВУЗе в Лондоне два года назад. Опыт прохождения таких стажировок нам должен быть учитываться для зачета. Конечно, по началу, меня это очень вдохновило! Ведь нам предстояло просто сразу поработать в иностранной компании без всяких дополнительных и мучительных этапов написания резюме, отклика на разных платформах по поиску стажировок, прохождения собеседований и т.п. Однако, всё оказалось не так уж и радужно, хотя и положительные моменты тоже были, о чем я и хочу поделиться.

Платформа Forage была основана всего-лишь в 2017 г. как стартап, в число инвесторов которых входит и Y Combinator! Задумка заключалась в том, чтобы дать студентам бесплатную возможность получения опыта для добавления его в резюме, чтобы выделиться среди других кандидатов при поиске работы. А вот финансирование планировалось получать за счет компаний, которые представляли программы стажировок.

На данный момент платформа имеет 250 программ-стажировок от 125 компаний, и уже более 6 млн. человек зарегистрировались в программах.

Надо отметить, что компании, представленные на платформе — известные, такие как, BCG, PWC, J.P.Morgan, RedBull, Walmart, Pepsico и др. Области же стажировок представлены тоже широко: и маркетинг, и дизайн, и финансовый сектор, и программирование, и аналитики данных. Хотя, справедливости ради, надо отметить, что для именно бесплатного прохождения стажировки нужно, чтобы университет, от которого вы представлены со статусом “студент” должен быть зарегистрирован на этой платформе.

Читать далее

Feature-Sliced Design (FSD): Основы и практические примеры архитектуры

Уровень сложностиПростой

Когда я только начинал свою карьеру фронтенд-разработчика, часто сталкивался с проблемами поддержки кода в проектах. Со временем я понял, что структура кода имеет решающее значение. Так я узнал о Feature-Sliced Design. Этот подход помогает разбивать проект на функциональные части, что упрощает работу с кодом и его сопровождение. Давайте разберемся как это работает.

Читать далее

Алкоголь и здоровье: рекомендации и препараты

Уровень сложностиПростой

«Безопасной» дозой алкоголя считается ~30г чистого спирта в день (т. е. 75г водки / 300г вина / 750г пива), причём два дня в неделю должны быть трезвыми. Это для мужчин. Для женщин доза в два раза меньше. И всё это — при условии здорового организма, при различных заболеваниях даже эти «нормы» будут вредны. При превышении указанных дозировок начинаются проблемы со здоровьем.

Читать далее

Голосовой ассистент на Python

Уровень сложностиСредний

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

Импорт необходимых библиотек

В начале кода подключаются следующие библиотеки:

os: для работы с операционной системой, например, для выполнения команд выключения компьютера.

psutil: для управления процессами, включая их завершение.

subprocess: для запуска приложений.

speech_recognition: для распознавания голосовых команд.

pyttsx3: для синтеза речи.

g4f: для работы с моделью GPT.

webbrowser: для открытия веб-страниц.

pycaw: для управления звуком.

pathlib: для работы с файловыми путями.

Инициализация синтезатора речи

Код инициализирует синтезатор речи с помощью pyttsx3, который позволяет ассистенту произносить текстовые сообщения. Функция speak(text) использует этот синтезатор для озвучивания заданного текста.

Закрытие и открытие приложений

Функция close_process(process_name) ищет и завершает указанный процесс на компьютере. Она перебирает все запущенные процессы, используя psutil, и завершает тот, который соответствует введенному имени.

Функция open_application(app_name) ищет указанное приложение в заданных директориях (C:, D:, E:) и запускает его, если находит. Она использует os.walk для рекурсивного обхода директорий.

Поиск в браузере

Функция search_in_browser(query) открывает браузер с результатами поиска на Яндексе. Она формирует URL-адрес с запросом и вызывает webbrowser.open(). В случае ошибки функция сообщает об этом пользователю.

Получение прогноза погоды

Функция get_weather(query) реализует возможность запроса прогноза погоды, формируя поисковый запрос для Яндекса. Однако для более точной реализации желательно использовать специализированный API для получения актуальных данных о погоде.

Управление звуком

Функции mute_sound() и unmute_sound() управляют уровнем громкости системы. Они используют библиотеку pycaw для установки звука на ноль или возврата к нормальному уровню.

Спящий режим

Функция sleep_mode() переводит ассистента в режим ожидания, где он ждет команды "проснись". Ассистент использует микрофон для прослушивания, и при распознавании ключевой фразы возвращается к активной работе.

Распознавание голосовых команд

Функция recognize_command() активирует распознавание голоса и возвращает распознанный текст. Если команду не удалось распознать, ассистент уведомляет пользователя об ошибке.

Выключение компьютера

Функция shutdown_computer() выполняет команду на выключение компьютера с помощью os.system().

Взаимодействие с GPT

Функция gpt(com) взаимодействует с моделью GPT, отправляя ей текст запроса и получая ответ. Ответ озвучивается с помощью функции speak().

Читать далее

Конфигурация Caddy для on-demand сертификатов и wildcard-доменов с поддержкой Cloudflare

Уровень сложностиПростой

У меня была задача, сделать reverse proxy, который будет проксировать трафик и для определённых доменов выпускать новые сертификаты налету, а для некоторых нужно просто автоматически выпустить сертификат.

Для такой задачи идеально подходит Caddy.

Читать далее

Решение проблемы с переходом по объектам с Ctrl в IntelliJ IDEA

Столкнулся с проблемой в IntelliJ IDEA: объекты при нажатии Ctrl перестали переходить друг на друга, а команда mvn clean compile не помогала. Попробовал выполнить операцию File > Invalidate Caches / Restart с установкой всех галочек, после чего объекты перестали подсвечиваться красным, но по-прежнему переход по Ctrl не срабатывал.

После нескольких попыток нашел решение, которое помогло:

Читать далее

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

Уровень сложностиПростой

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

Читать далее

Как я потерял производительность из-за Redux и чем я его заменил?

Уровень сложностиСредний

Redux хорош, но, как оказалось, не всегда. В статье делюсь, какие сложности возникли с производительностью и почему отказ от Redux стал логичным решением. Если ваш проект страдает из-за Redux — это может помочь!

Читать далее

Следим за Telegram по-деловому

Уровень сложностиПростой

Прошло полгода с момента введения бизнес-режима в Telegram.

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

В статье я расскажу, как можно классно использовать использовать эту фичу и не потерять свой аккаунт.

Прочитать

Как нейросеть помогла чайнику собрать мебель: история одного проекта

Уровень сложностиПростой

Привет, Хабр! Сегодня хочу поделиться историей о том, как искусственный интеллект помог мне — человеку, никогда не имевшему дела с самостоятельной сборкой мебели, успешно собрать шкаф. Спойлер: всё получилось!

Читать далее

Deadlock — Идеальный баланс разработки | MagicH #1

Уровень сложностиПростой

Deadlock - Идеальный баланс | MagicH #1

Недавно корпорация Valve анонсировала новую многопользовательскую сетевую игру Deadlock в жанре MOBA и шутера от 3-го лица, что делает её действительно уникальным экземпляром среди всех разработок многомиллиардной компании, но есть ли реальные шансы у Deadlock на новую соревновательную игру претендующую на киберспорт мирового уровня?

Читать далее

Что требуется знать о семантическом версионировании (SemVer)

Уровень сложностиПростой

Привет мир!

Сегодня поговорим о версионировании и его важности в разработке. 📚 Многие из нас используют библиотеки, фреймворки и пакеты — и одним из популярных способов отслеживания их изменений является семантическое версионирование, или SemVer! 🚀

🤔  Почему это важно?

Версии продуктов, которые мы делаем или используем, сигнализируют о состоянии изменений. Если обновление было в 2013 году, скорее всего, продукт больше не поддерживается. 📅Но даже если продукт обновляется каждую неделю, важно быть осторожным — ведь обновление может нести «breaking changes» и нарушить работу приложения 😱, что вызовет у ваших клиентов грустное лицо.

Как SemVer решает проблему с «breaking changes»?

SemVer следует строго определенной структуре, которая делится на три основных части: major, minor, patch, и опциональные, дополнительные маркеры - pre-release и build.

Каждая часть представляет из себя число, и затем они соединяются через точку.

Читать далее

Приложение для изучения китайских иероглифов

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

Это приложение было разработано для заказчика и доступно на GitHub: Chinese Filter.

Детали здесь

Моделирование разъёмов USB Type-А и USB Type-C в CST Studio Suite, в диапазоне частот 1-15 ГГц

Уровень сложностиСредний

В начале работы над данным исследованием я заметил отсутствие каких либо материалов по теме исследования АЧХ USB type-C и USB type-А разъемов, как на русском так и на английском языках. Своей задачей вижу, возможность поделится с сообществом своими результатами, выводами и наработками.

Читать далее

Как создать установщик, используя tkinter (python 3)?

Уровень сложностиСредний

В этом коде мы создали приложение-установщик с интерфейсом на Python с помощью библиотеки tkinter. Ниже приведен полный разбор каждой части кода.

p.s. Эта статья объясняет вам, как использовать пути к файлу для установки приложения, но это можно будет выполнить если, файл уже будет лежать в пути, но скоро выпущу гайд, как вам скачивать приложение через БД. Также прошу обратить внимание, что программа не работает корректно, т. к. она в разработке, в будущем буду развивать.

Читать далее

Улучшаем Kaiten: разработка десктопного и мобильного клиента с новым UI

Уровень сложностиПростой

Привет, Хабр! В этом посте я хочу поделиться результатами работы по созданию hand-made десктопного и мобильного клиента для Kaiten с обновлённым интерфейсом а также пригласить желающих принять участие в проекте.

Читать далее