Как они работают под капотом? Что именно происходит при "замыканиях", грамотное обращение со структурами при работе с делегатами.
На что нужно обращать внимание.
Как они работают под капотом? Что именно происходит при "замыканиях", грамотное обращение со структурами при работе с делегатами.
На что нужно обращать внимание.
Задача: расширить 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. Этот подход помогает разбивать проект на функциональные части, что упрощает работу с кодом и его сопровождение. Давайте разберемся как это работает.
«Безопасной» дозой алкоголя считается ~30г чистого спирта в день (т. е. 75г водки / 300г вина / 750г пива), причём два дня в неделю должны быть трезвыми. Это для мужчин. Для женщин доза в два раза меньше. И всё это — при условии здорового организма, при различных заболеваниях даже эти «нормы» будут вредны. При превышении указанных дозировок начинаются проблемы со здоровьем.
В данном коде реализован голосовой ассистент, способный выполнять разнообразные команды, обеспечивая удобство работы пользователя с компьютером. Этот ассистент использует библиотеки 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()
.
У меня была задача, сделать reverse proxy, который будет проксировать трафик и для определённых доменов выпускать новые сертификаты налету, а для некоторых нужно просто автоматически выпустить сертификат.
Для такой задачи идеально подходит Caddy.
Столкнулся с проблемой в IntelliJ IDEA: объекты при нажатии Ctrl перестали переходить друг на друга, а команда mvn clean compile
не помогала. Попробовал выполнить операцию File > Invalidate Caches / Restart с установкой всех галочек, после чего объекты перестали подсвечиваться красным, но по-прежнему переход по Ctrl не срабатывал.
После нескольких попыток нашел решение, которое помогло:
Если вы хоть раз сталкивались с понятием AJAX, то наверняка слышали о том, как важно уметь загружать данные без перезагрузки страницы. В этом гайде разберем основы AJAX и покажем, как его использовать для создания динамичных и отзывчивых веб-приложений.
Redux хорош, но, как оказалось, не всегда. В статье делюсь, какие сложности возникли с производительностью и почему отказ от Redux стал логичным решением. Если ваш проект страдает из-за Redux — это может помочь!
Прошло полгода с момента введения бизнес-режима в Telegram.
Суммарно за это время им воспользовались около 300.000 раз (в приложении, где миллионы сообщений отправляются ежедневно).
В статье я расскажу, как можно классно использовать использовать эту фичу и не потерять свой аккаунт.
Привет, Хабр! Сегодня хочу поделиться историей о том, как искусственный интеллект помог мне — человеку, никогда не имевшему дела с самостоятельной сборкой мебели, успешно собрать шкаф. Спойлер: всё получилось!
Deadlock - Идеальный баланс | MagicH #1
Недавно корпорация Valve анонсировала новую многопользовательскую сетевую игру Deadlock в жанре MOBA и шутера от 3-го лица, что делает её действительно уникальным экземпляром среди всех разработок многомиллиардной компании, но есть ли реальные шансы у Deadlock на новую соревновательную игру претендующую на киберспорт мирового уровня?
В распоряжении есть .xlsx
-файл. Мне надо извлечь все строки из столбца, и преобразовать входные данные в комплектацию из одной строки, разделенных точкой с запятой.
Привет мир!
Сегодня поговорим о версионировании и его важности в разработке. 📚 Многие из нас используют библиотеки, фреймворки и пакеты — и одним из популярных способов отслеживания их изменений является семантическое версионирование, или SemVer! 🚀
🤔 Почему это важно?
Версии продуктов, которые мы делаем или используем, сигнализируют о состоянии изменений. Если обновление было в 2013 году, скорее всего, продукт больше не поддерживается. 📅Но даже если продукт обновляется каждую неделю, важно быть осторожным — ведь обновление может нести «breaking changes» и нарушить работу приложения 😱, что вызовет у ваших клиентов грустное лицо.
✨ Как SemVer решает проблему с «breaking changes»?
SemVer следует строго определенной структуре, которая делится на три основных части: major, minor, patch, и опциональные, дополнительные маркеры - pre-release и build.
Каждая часть представляет из себя число, и затем они соединяются через точку.
Меня зовут Виктор, и я с детства изучаю китайский язык, так как вырос в семье преподавателей. Моя страсть к языку и программированию вдохновила меня создать приложение, которое поможет другим эффективно изучать китайские иероглифы. 📚✨
Это приложение было разработано для заказчика и доступно на GitHub: Chinese Filter.
В начале работы над данным исследованием я заметил отсутствие каких либо материалов по теме исследования АЧХ USB type-C и USB type-А разъемов, как на русском так и на английском языках. Своей задачей вижу, возможность поделится с сообществом своими результатами, выводами и наработками.
В этом коде мы создали приложение-установщик с интерфейсом на Python с помощью библиотеки tkinter. Ниже приведен полный разбор каждой части кода.
p.s. Эта статья объясняет вам, как использовать пути к файлу для установки приложения, но это можно будет выполнить если, файл уже будет лежать в пути, но скоро выпущу гайд, как вам скачивать приложение через БД. Также прошу обратить внимание, что программа не работает корректно, т. к. она в разработке, в будущем буду развивать.
Привет, Хабр! В этом посте я хочу поделиться результатами работы по созданию hand-made десктопного и мобильного клиента для Kaiten с обновлённым интерфейсом а также пригласить желающих принять участие в проекте.