Как стать автором
Обновить
75
1.9
Артемий @Sap_ru

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

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

Модальное окно на чистом CSS и JS

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

Всем привет! Я в веб-разработке не так давно. Сейчас я пишу свой сайт, который будет выступать в качестве моего портфолио и, возможно, даже целого проекта. При добавлении модального окна для авторизации на свой сайт, я подумал, а что будет, если публиковать подобные модульные вещи, чтобы любой человек мог их скопировать и не думать о них, а использовать в разработке. То есть создать готовый модуль для встраивания. Мне, как разработчику было бы удобно использовать готовое решение, тем более написанное мною, да и делиться опытом - дело приятное :)

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

Lazarus-AVR, №2. Как получить кросс-компилятор для микроконтроллеров AVR с помощью Fpcupdeluxe

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

Микроконтроллеры: AVR; Среда программирования IDE Lazarus 32х (кросс-платформенный) (ОС: Windows 64х).

В прошлой статье я описывал подключение компилятора Avr к IDE Lazarus, но у меня не работало автодополнение кода (при нажатии ctrl+пробел появляется выпадающее меню с вариантами кода). Спустя 29 дней разборок я добился корректной работы автодополнения. Что бы отделить "мух от котлет" (не все используют fpcupdeluxe) я решил вынести описание работы с fpcupdeluxe в отдельную статью.

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

Делаем дашборды для Grafana из того, что отдает экспортер метрик Prometheus и автоматизируем это

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

Столкнувшись с необходимостью сделать новый дашборд в Grafana под много новых метрик (а не добавить, так как готовый из галереи не находится), я сделал небольшое веб-приложение, которое сконвертирует "портянку" с данными метрик в простенький, но доходчивый дашборд со всеми необходимыми метриками.

В статье описание работы конвертора и рассказ о некоторых хитростях в настройке мониторинга Apache Spark и Hadoop.

Укыйбызмы?
Всего голосов 5: ↑4 и ↓1+3
Комментарии5

Пишем драйвер ядра Linux для неизвестного USB-устройства

Время на прочтение15 мин
Количество просмотров17K
image

В этой статье объяснен весь процесс, на выходе которого получается рабочий драйвер ядра Linux для недокументированного USB-устройства. Выполнив обратную разработку коммуникационного протокола USB, я покажу архитектуру драйвера ядра для USB. Кроме драйвера ядра в этой статье будет рассказано о простом инструменте для пользовательского пространства; при помощи этого инструмента можно управлять таким устройством. Конечно, придется углубиться в подробности, касающиеся конкретного прибора, но не сомневайтесь – описанный процесс с тем же успехом применим и к другим USB-устройствам.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+57
Комментарии9

Как подсветить временные отрезки на графиках

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

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

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

О desktop-уведомлениях в Linux-системах

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

В операционной системе, как и в жизни, обширны способы передачи информации: иногда можно деликатно сказать что-то в стиле «не будет ли любезен многоуважаемый джинн», или сделать жест рукой, чтобы твой собеседник понял без лишних слов, или в некоторых ситуациях достаточно лишь встретиться глазами, чтобы понять, как у тебя дела. Так и в арсенале ОС имеются сообщения из системного трея, обычные десктоп-уведомления из центра уведомлений, лампочки-индикаторы на клавиатуре, собственные уведомления у приложений и проч.

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

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

Spring Data JPA: метод save и границы его применимости

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

Привет! Меня зовут Семён Киреков, я Java-разработчик и тимлид в Центре Big Data @МТС Digital и Java-декан в МТС Тета — образовательном стартапе в рамках МТС. На митапе Росбанка и Jug.ru я рассказывал о том, как устроен метод Save в Spring Data JPA, почему он может вызвать лишний select, как решить эту проблему и при чем здесь доменные события Spring. Здесь я поделюсь этой информацией с вами.

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

Заметки о зубной эмали и зубной пасте

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

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

Материал я собрал, изучая такие сайты, как researchgate.net, sciencedirect.com, www.ncbi.nlm.nih.gov, escholarship.org и другие. Опираясь на эти данные, я занимаюсь разработкой оптимальной рецептуры гигиенической (т.е. не лечебную) зубной пасты, стараясь добиться оптимального баланса между абразивными, антибактериальными и реминерализирующими свойствами (плюс - еще желательно позаботиться об окружающих зуб тканях).

Зачем? 1. Потому что очень интересно; 2. Потому что не хватает этого баланса в современных не лечебных продуктах (лечебные должны работать в одну цель, там совсем иная история в этом плане).

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

Краткое введение в разработку собственных правил для ESLint

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

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

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

10 задач с JavaScript Promise для подготовки к собеседованиям

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

Promise — это отличительная особенность JavaScript как асинхронного языка программирования. Нравится вам это или нет, понять его в любом случае придется. В этой статье я привожу 10 примеров кода с Promise, начиная от базового уровня заканчивая продвинутым.

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

React: полное руководство по повторному рендерингу

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


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, посвященной повторному рендерингу (re-render, далее — ререндеринг) в React.


Что такое ререндеринг?


Существует 2 основные стадии, которым следует уделять пристальное внимание, когда речь заходит о производительности в React:


  • первоначальный рендеринг (initial rendering) — происходит, когда компонент впервые появляется на экране;
  • ререндеринг — второй и последующие рендеринги компонента.

Ререндеринг происходит, когда React необходимо обновить приложение некоторыми данными. Обычно, это является результатом действий пользователя, получения ответа на асинхронный запрос или публикацию при подписке (паттерн "pub/sub" — публикация/подписка или издатель/подписчик) на определенные данные.

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

Как работает React: подробное руководство

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


Привет, друзья!


В этой статье я покажу вам, с чего начинается React.


Что это означает? Это означает, что мы разработаем мини-версию React, которая сможет выполнять следующий код:


import '../style.scss'
import MyReact from './my-react'

const buttonStyles = {
 border: 'none',
 outline: 'none',
 padding: '0.3rem 0.5rem',
 marginLeft: '0.5rem',
 backgroundImage: 'linear-gradient(yellow, orange)',
 borderRadius: '2px',
 boxShadow: '0 1px 2px rgba(0, 0, 0, 0.2)',
 cursor: 'pointer'
}

/** @jsx MyReact.createElement */
function Counter() {
 const [value, setValue] = MyReact.useState(1)
 const [count, setCount] = MyReact.useState(1)

 return (
   <section>
     <h1 className='title'>Hello from MyReact!</h1>
     <div className='box'>
       <input
         style='width: 80px; padding: 0.15rem 0.5rem;'
         type='number'
         value={value}
         onInput={(e) => {
           setValue(Number(e.target.value))
         }}
       />
       <button
         style={buttonStyles}
         onClick={() => {
           setCount((count) => count + value)
         }}
       >
         Increment
       </button>
     </div>
     <h2 className='subtitle'>
       Count: <span className='count-value'>{count}</span>
     </h2>
     <ul className='list'>
       {['React', 'from', 'scratch'].map((item) => (
         <li>{item}</li>
       ))}
     </ul>
   </section>
 )
}

MyReact.render(<Counter />, document.getElementById('app'))

Как вы могли догадаться, наша версия будет называться MyReact.


Исходный код проекта.


Скриншот:





Песочница:

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

Читать дальше →
Всего голосов 21: ↑19 и ↓2+20
Комментарии5

Uniswap v3 Single Swaps (перевод гайда)

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

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

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

Как работает автоматическая регулировка усиления

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

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

Педаль на основе схемы культового DOD 280 я планирую не только собрать, но и немного усовершенствовать, добавив эффект тремоло (амплитудное вибрато). Дело в том, что и компрессор, и тремоло построены на основе усилителя с управляемым усилением. Для тремоло нужно добавить только генератор медленных колебаний (LFO, low frequency oscillator).
Читать дальше →
Всего голосов 34: ↑31 и ↓3+54
Комментарии12

Как справиться с устареванием apt-key и add-apt-repository с помощью gpg в Ubuntu 22.04

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

apt-key - это утилита, используемая для управления ключами, которые APT использует для аутентификации пакетов. Это тесно связано с утилитой add-apt-repository, которая добавляет внешние репозитории с использованием серверов ключей в список надежных источников установки APT. Однако ключам, добавленным с помощью apt-key и add-apt-repository, apt доверяет глобально. Эти ключи не ограничиваются авторизацией единственного хранилища, для которого они были предназначены. Любой ключ, добавленный таким образом, может быть использован для авторизации добавления любого другого внешнего хранилища, что представляет собой важную проблему безопасности.

Начиная с Ubuntu 20.10, использование apt-key выдает предупреждение о том, что инструмент устареет в ближайшем будущем; аналогичным образом, add-apt-repository также скоро устареет. Хотя эти предупреждения об устаревании строго не запрещают использовать apt-key и add-apt-repository с Ubuntu 22.04, но игнорировать их не рекомендуется.

В настоящее время рекомендуется использовать gpg вместо apt-key и add-apt-repository, и в будущих версиях Ubuntu это будет единственным вариантом. apt-key и add-apt-repository сами по себе всегда действовали как оболочки, вызывая gpg в фоновом режиме. Использование gpg напрямую отсекает посредника. По этой причине метод gpg обратно совместим со старыми версиями Ubuntu и может использоваться в качестве замены apt-key.

В этом руководстве будут описаны две процедуры, использующие альтернативы apt-key и add-apt-repository соответственно. Сначала будет добавлено внешнее хранилище с использованием открытого ключа с помощью gpg вместо использования apt-key. Во-вторых, в качестве дополнения в этом руководстве будет рассмотрено добавление внешнего репозитория с использованием сервера ключей с gpg в качестве альтернативы использованию add-apt-repository.

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

Руководство по CMake для разработчиков C++ библиотек

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

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

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

#1 Нейронные сети для начинающих. Решение задачи классификации Ирисов Фишера

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

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

Это первая статья серии введения в нейронные сети, «Нейронные сети для начинающих». Здесь и далее мы постараемся разобраться с таким понятием — как нейронные сети, что они вообще из себя представляют и как с ними «подружиться», на практике решая простые задачи.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+34
Комментарии9

12 схем архитектуры английской грамматики

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

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

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

Читать далее
Всего голосов 32: ↑24 и ↓8+20
Комментарии86

Ускорение secp256k1 с помощью эндоморфизма

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

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

12 января 2009 года Сатоши Накамото в самых ранних транзакциях Биткоина отправил Хэлу Финни 10 BTC.

То, что Сатоши Накамото выбрал Хэла первым получателем Биткоинов, неудивительно. Сатоши очень уважал Хэла, который зарекомендовал себя как один из самых ярких программистов и криптографов в мире, разработав систему шифрования PGP. Хэл также заложил важную основу для многоразового доказательства работы, которое Сатоши будет использовать при разработке Биткоина.

Будучи одним из лучших в мире криптографов, Хэл понял, что Биткоин стал огромным прорывом сразу же после того, как он наткнулся на него.

Еще в 2008 году он назвал Биткоин «очень многообещающей идеей».

Этот твит, опубликованный 11 января 2009 года, является достаточным доказательством того, что Хэл предсказал успех Биткоина еще до того, как многие узнали, что это такое.

Прошло два года и в 2011 году Хэл Финни как разработчик и Биткоин-энтузиаст написал на форуме Bitcointalk, что функция эндоморфизма secp256k1 может быть использована для ускорения проверки подписи ECDSA

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

Варианты использования Java ML библиотек совместно со Spring, Docker, Spark, Rapids, CUDA

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

В данной статье рассматривается способ использования GPU nVidia с технологией CUDA в Docker-контейнерах для распределенной тренировки моделей машинного обучения на нескольких машинах. Цель статьи - показать вариант использования Big Data Tool Apache Spark в Docker-контейнерах, совместно с акселератором GPU вычислений Rapids на устройствах nVidia CUDA, с применением библиотек DJL, Spark ML, XGBoost, в приложении Spring Boot на Java 8 (требование Rapids), на нескольких машинах под управлением ОС Windows 10 Pro для решения задачи тренировки моделей машинного обучения в распределенной системе.

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

Информация

В рейтинге
1 322-й
Откуда
США
Дата рождения
Зарегистрирован
Активность