Как стать автором
Обновить
56
0
Андрей Овсянкин @EvilBeaver

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

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

4 тысячи заметок?! Как я веду личную базу знаний в Obsidian

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

В моей базе знаний 4 000 заметок.

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

Читать далее
Всего голосов 53: ↑46 и ↓7+51
Комментарии108

К вопросу о ESP32

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

Решил я приобщиться к модным трендам и купить себе (для побаловаться) платку на ESP32, тем более и повод выдался неординарный - на сайте одной из российских фирм, торгующих Arduino, обнаружился модуль ESP32 lolin32 OLED по цене ниже, чем на Aliexpress. Пнп: не знаю, будет ли это рекламой, но вот ссылка на модуль https://iarduino.ru/shop/boards/wemos-esp32-oled.html, а фирму вы узнаете сами. Не то, чтобы мне было очень жалко 1200-990=210 рублей, но возможность получить платку сразу, без ожидания посылки дорогого стоит. Пнп: кстати, если заказывать доставку до пункта выдачи, то даже получается чуть дороже, хотя и быстрее, чем из Китая - всего 3 рабочих дня. Но можно съездить в "столицу нашей Родины город-герой Москва" и получить заказ на следующий день, что я и сделал. Не очень понятно, зачем я это все совершил в пятницу, потому что в выходные с платой возится так и не начал, но охота пуще неволи.

Тем не менее, на следующей неделе приступил к освоению платы. Для начала включил плату в USB порт - экран засветился и появилась надпись, заявляющая о любви к ESP - начало неплохое. Нужно установить среду разработки программ, и я решил поступить, как нормальный самодельщик, тем более что мне это рекомендовали на сайте фирмы продавца - скачать Arduino. Читатели, испытывающие непреодолимое отвращение к этому термину, могут далее себя не мучить, все остальные могут нажать на транспарант ниже.

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

Упрощаем создание мелодий C# Console.Beep. Нотная запись по-человечески, PC Speaker синтезатор

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

У Вас никогда не возникало желание добавить в код сладенькую засушенную изюминку в виде олдскульных бип-мелодий? Или играть музыку щёлкая клавиши на своём ПК с этим самым "ламповым" звучанием PC Speaker? Вот и у меня возникло.

Есть решение: Console.Beep воспроизводит звуки через PC Speaker (в связи с отсутствием системного драйвера начиная с Win 7 кзвук перенаправляется на звуковое устройство по умолчанию, по собственным наблюдениям на семёрке работает отвратно, зато на десятке вполне приемлемо, но возможно дело не только в операционной системе). Стоит уточнить что поддержка перегрузки Console.Beep(Int32, Int32) заявлена только для систем семейства MS Windows.

Для пауз нет ничего проще чем Thread.Sleep.

Всё что нам нужно - это using System и using System.Threading.

И на первой же мелодии я понял как это неудобно - записывать ноты в виде частоты и колличества миллисекунд. Вот собственно как это работает обычно...

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

Функциональный C#

Время на прочтение5 мин
Количество просмотров25K
C# — язык мультипарадигмальный. В последнее время крен наметился в сторону функциональщины. Можно пойти дальше и добавить еще немного методов-расширений, позволяющих писать меньше кода, не «залезая» при этом на территорию F#.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии59

Как сделать хорошую интеграцию? Часть 2. Идемпотентные операции – основа устойчивой интеграции

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

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

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

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

Как сделать хорошую интеграцию? Часть 1

Время на прочтение11 мин
Количество просмотров21K
Вопрос в заголовке включает в себя неочевидную часть, ведь перед тем, как рассказывать про создание хорошей интеграции стоит определить, какую интеграцию мы считаем хорошей. А ответ на этот вопрос не однозначен.

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


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

И на Солнце есть пятна

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

В предыдущей заметке «Планировщик Windows? Это очень просто» было рассказано о технологии получения дизассемблированного текста ядра операционной системы Windows XP образца 2013 года. Такой текст потребовался для анализа и корректировки кода ядра, что позволило изменить политику планирования потоков в Windows и выполнить одну конкретную задачу с уменьшением времени отклика операционной системы.

После решения этой задачи я напоследок просто «полистал» текст ядра, особо не вникая, что именно делается в том или ином участке кода. Хотелось посмотреть, какие приемы локальной (т.е. в пределах 1-2 команд) оптимизации применяет использованный для создания ядра транслятор. Или, может быть, несколько трансляторов, если ядро собрано из нескольких отдельных частей. Сознаюсь, главная цель была в поиске таких приемов генерации кода, которые я не догадался использовать в своем трансляторе.

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

Хотя Windows XP и Windows 7 уже, так сказать, «сняты с вооружения», на мой взгляд, изучение даже неподдерживаемых программ имеет смысл. Ядро Windows XP сопровождалось и развивалось около 10 лет. Поэтому на основании анализа кода можно, например, даже прогнозировать пути дальнейшего развития системы. Замечу также, что различия в коде ядер различных версий Windows не так велики как различия некоторых других компонентов.

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

Олды в ИТ

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

Когда ты молод, ты «бессмертен» и не задумываешься о старости. Есть просто уверенность, что если много и хорошо работать, то твоя карьера и доходы будут неуклонно расти. Следуя этой стратегии, ты развиваешься в профессии уже 15, 20, 30 лет. За эти годы уже получил огромный опыт и, наверное, он обязательно поможет безбедно и интересно прожить остаток дней. Но все не так просто. Да, ты уже давно работаешь в хорошей компании, занимаешься интересными проектами, получаешь за это достойную зарплату, но в будущем уже не так уверен, как раньше. Профессиональный возраст приходит с массой вопросов, на которые нужно ответь стратегически.

 Эта статья родилась на основе обсуждения горячей темы «Олды в ИТ», которую 4 января 2021 г. мы записали для подкаста Linkmeup. Обязательно послушайте запись здесь или в любимом подкаст-приложении.

Читать далее
Всего голосов 144: ↑137 и ↓7+174
Комментарии435

Учебные материалы для школы программирования. Часть 1

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

Наш век запомнится мне, как время стартапов. От школьника-активиста, до жителя Кремниевой долины - все делают своих единорогов. Как поняли - так и делают. Я тоже не прошла мимо тренда на безграничные возможности самореализации, и запустила школу программирования для детей Step to Science. Время жизни этого проекта было наполнено открытиями, борьбы со страхами, маленькими и большими победами, ошибками и много чем еще. Весной 2020 года команда столкнулась с сами знаете с чем, и, немного порефлексировав, я приняла решение закрыть проект.

За годы работы школы, был найден оптимальный алгоритм обучения ребят занимательной науке разработки игр на Unity 3D. Мы перебрали много тем, которые смогли захватить интерес школьников от 10 до 16 лет, опробовали десятки способов передачи информации, тренировки навыков и оценки заложенных знаний. Эта кропотливая работа принесла нам отличные результаты, в виде комплексной программы по созданию компьютерных игр на Unity 3D, и учебных успехов, которые достигали наши ребята!

Этими результатами и успехами мне хочется поделиться с широкой аудиторией. Если вы ведете кружок программирования или робототехники, а может, вы родитель, ищущий ответ на вопрос "чем увлечь подростка?" - я предлагаю вам воспользоваться материалами школы абсолютно безвозмездно, то есть, даром!

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

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

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

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


Автоматизация сопровождает нас повсюду и является спутником и признаком прогресса, снимая с человека необходимость выполнения рутинных действий и принятия рутинных решений. Но для принятия решений о будущем необходима информация о прошлом, поэтому автоматизация неизбежно связана с необходимостью накапливать, хранить и обрабатывать данные, чем и занимаются базы данных и системы управления базами данных. Объём данных не уменьшается, а только увеличивается, поэтому я всегда говорю своим студентам: я научу вас хаскелю, но это сломает вам жизнь и не поможет найти работу базы данных – это хлеб программиста, у разработчика баз данных работа будет всегда, учитесь ораклу базам данных – и хлеб с маслом и икрой вам обеспечен. Это я так, как обычно, полемически заостряюсь для мотивации, но совсем чуть-чуть.
Читать дальше на свой страх и риск
Всего голосов 26: ↑26 и ↓0+26
Комментарии27

Трассировка сервисов, OpenTracing и Jaeger

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

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

Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии7

CRDT: Conflict-free Replicated Data Types

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

Как считать хиты страницы google.com? А как хранить счётчик лайков очень популярных пользователей? В этой статье предлагается рассмотреть решение этих задач с помощью CRDT (Conflict-free Replicated Data Types, что по-русски переводится примерно как Бесконфликтные реплицированные типы данных), а в более общем случае — задачи синхронизации реплик в распределённой системе с несколькими ведущими узлами.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии14

Доказательное планирование

Время на прочтение13 мин
Количество просмотров40K
Примечание переводчика: оригинальная статья была написана в 2007-м году, однако, на мой взгляд, полностью сохраняет актуальность и сегодня.

Разработчики программного обеспечения не любят составлять план работ. Обычно пытаются вовсе от него отказаться. «Закончу, когда закончу!», — говорят они, ожидая, что этот смелый и веселый поступок вызовет одобрение у босса, а о планировании будет успешно забыто.

Большая часть расписаний, с которыми вы встретитесь, будет представлять из себя бездушные отписки. Совершенно забытые, они хранятся в каком-нибудь общем каталоге. После выпуска продукта с опозданием на пару лет странный парень, в чьем офисе, говорят, видели картотеку, принесет на обсуждение причин провала старую распечатку, которую все засмеют. «Только гляньте! Мы запланировали две недели, на переписывание системы с нуля на Ruby!»
Читать дальше →
Всего голосов 59: ↑54 и ↓5+49
Комментарии26

Пособие по Ansible

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

управление конфигурацией оркестра


Это практическое пособие познакомит вас c Ansible. Вам понадобится виртуальная или реальная машина, которая будет выступать в роли узла для Ansible. Окружение для Vagrant идет в комплекте с этим пособием.


Ansible — это программное решение для удаленного управления конфигурациями. Оно позволяет настраивать удаленные машины. Главное его отличие от других подобных систем в том, что Ansible использует существующую инфраструктуру SSH, в то время как другие (chef, puppet, и пр.) требуют установки специального PKI-окружения.


Пособие покрывает такие темы:


  1. Установка Ansible и Vagrant
  2. Файл инвенторизации
  3. Модули shell, copy, сбор фактов, переменные
  4. Запуск на группу хостов
  5. Плейбуки
  6. Пример: поднимаем кластер, устанавливаем и настраиваем Apache и балансировщик нагрузок HAproxy
  7. Обработка ошибок, откат
  8. Шаблоны конфигурации
  9. Роли

Ansible использует так называемый push mode: конфигурация «проталкивается» (push) с главной машины. Другие CM-системы обычно поступают наоборот – узлы «тянут» (pull) конфигурацию с главной машины.


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

Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии15

Как внедрить процессы управления конфигурацией

Время на прочтение5 мин
Количество просмотров9.3K
Правильная реализация процессов управления конфигурацией позволяет не только решать проблемы путем идентификации причины «поломки» (какой элемент вышел из строя, и как его «починить»), но и полностью предотвращать их возникновение за счет оценки логики работы с данными. Грамотная оценка производимых изменений позволяет поддерживать системы в работоспособном состоянии, а неправильная — приводит к пустой трате денежных средств.

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

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

RabbitMQ против Kafka: отказоустойчивость и высокая доступность

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


В прошлой статье мы рассмотрели кластеризацию RabbitMQ для обеспечения отказоустойчивости и высокой доступности. Теперь глубоко покопаемся в Apache Kafka.

Здесь единицей репликации является раздел (partition). У каждого топика один или несколько разделов. В каждом разделе есть лидер с фолловерами или без них. При создании топика указывается количество разделов и коэффициент репликации. Обычное значение 3, это означает три реплики: один лидер и два фолловера.
Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии3

Видеопост: сверхзвуковой теннисный шарик, автомат Калашникова и колибри

Время на прочтение3 мин
Количество просмотров36K
Всех с пятницей! У нас накопилась вторая подборка различных удивительных видеороликов. Если пропустили первую, то рекомендуем ознакомиться. Сегодня у нас, в основном, подобрались видео о тех или иных проявлениях физических сил и свойств. И, конечно, наука и техника тоже не остались обделёнными.

Высокоскоростная съёмка столкновения шарика и ракетки для настольного тенниса. Шарик имеет сверхзвуковую скорость



Не знаем, как вы, а мы обалдели дважды. Первый раз, когда шарик (шарик для пинг-понга!) пробил ракетку, второй раз — когда он её вообще сломал к чёртовой матери. И это несмотря на ничтожную массу.
Читать дальше →
Всего голосов 87: ↑50 и ↓37+13
Комментарии23

Видеопост: эксперименты как форма научной визуализации

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


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

Мы как раз нашли несколько интересных видео.
Всего голосов 47: ↑47 и ↓0+47
Комментарии1

Всё, кроме Kotlin: Андрей Бреслав о гендерном балансе в IT, эмоциях и не только

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


Андрей Бреслав (abreslav) известен прежде всего как человек, возглавляющий работу над языком Kotlin. Но в последнее время он стал выступать с докладами совсем о другом: весной говорил о важности эмоций при работе в IT, а в августе на TechTrain представит доклад «Это выгодно: почему нам нужно больше женщин-программисток?»

И мы взяли соответствующее интервью: не о Kotlin, а о социальном и эмоциональном. Что волнует Андрея помимо разработки языка? Бывает ли у него синдром самозванца? Чем его доклад о женщинах-программистках будет отличаться от большинства других рассуждений о гендерном перекосе в IT? Почему можешь ощущать себя плохо, когда твой проект собирается публично поддержать Google?

Название Kotlin в тексте встречается, но не в контексте «когда появится тернарный оператор», а в контексте «эмоции Андрея по Kotlin-поводам». О языках программирования есть уже очень много текстов. А вот о том, что ощущают их создатели — кажется, очень мало.
Читать дальше →
Всего голосов 45: ↑32 и ↓13+19
Комментарии75

Когнитивные искажения при создании продукта

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

Попытался собрать когнитивные искажения которые мешают мне принимать правильные решения при создании продукта. Возможно, кому-то пригодится.


Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии12
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Серпухов, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность