Pull to refresh
31
0.5

backend developer, java, go

Send message

(Net)-NT(LM)v[12]

Reading time3 min
Views16K

Очень часто встречаю, что люди путают разные типы хэшей и думают, что NTLM и NTLMv1/v2 это одно и тоже, а NTLMv1/v2 и Net-NTLMv1/v2 разные типы. Данная статья заметка предназначена для того, что бы разобраться со всем этим.

Читать далее

Интегральный таймер NE555 и его применение

Reading time7 min
Views123K

Когда в 1972 году началось производство микросхемы интегрального таймера NE555, никто не предполагал, что и через пятьдесят лет она не утратит популярности, а к названию таймера будут добавлять слово «легендарный».

В данной публикации мы разберём основные применения легендарного таймера 555 и аккуратно заглянем ему «под капот».
Читать дальше →

Операционные усилители. Часть 6: Однополярное включение ОУ. Помехи, экранирование, «развязки» и защиты

Level of difficultyHard
Reading time7 min
Views33K

В предыдущей публикации цикла были рассмотрены примеры реализации активных фильтров и генераторов на ОУ.

В данной публикации цикла мы разберём аспекты питания ОУ, защиту от помех (как входных, так и по питанию), а также защиты и «развязки» входных цепей.

Большая часть материала будет разобрана на «сквозном» примере схемы предусилителя-корректора, по характеристике RIAA на одном ОУ.
Читать дальше →

Java: продвинутая конкурентность

Reading time6 min
Views14K

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

Читать далее

Big O нотация в Swift

Reading time3 min
Views14K

Данная статья поможет начинающим iOS разработчикам разобраться в производительности алгоритмов в Swift.

Обозначение Big O нотация (или просто Big O) — это способ оценки относительной производительности структуры данных или алгоритма, обычно по двум осям: времени и пространству.

Читать далее

Изучаем пешку (часть 5)

Reading time7 min
Views26K

Давно не писал продолжения курса преподавания шахмат, но на то были объективные причины - переезд в другую страну, 2020-2021 годы "дружбы с Ковидом", осмысление онлайна в педагогических шахматах... Поэтому эта статья будет состоять из двух частей - про пешку и про онлайн преподавание шахмат. Разбивать на две статьи смысла не вижу, поэтому постараюсь написать покороче и не так занудно. Ах да, будет еще заключение в виде планов :)

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

К статье о Пешке

AdvancedCharts — (не)тривиальный взгляд на анализ биржевых котировок

Reading time10 min
Views4.9K

Привет, Хабр!

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

Читать далее

WEKA. Руководство по использованию

Reading time4 min
Views16K

Начав изучать библиотеку Weka я обнаружила, что в Интернете очень мало информации о ней на русском языке – как с ней работать и как ее использовать. Эта статья будет вводной для знакомства с библиотекой.

Читать далее

Go и MySQL: настраиваем пул соединений

Reading time14 min
Views31K

Каждый день мы пишем код в условиях высоких нагрузок, и нередко в таких случаях сталкиваемся с проблемами, связанными с базой данных. Мы в компании используем MySQL, поэтому я расскажу про конфигурирование соединений с этой базой данных. Пройдемся по основным моментам, на которые нужно обращать внимание при работе с MySQL средствами языка Go: 

немного затронем основы клиент-серверного протокола MySQL, его базовое устройство и принципы работы;

дальше перейдем к Go части и разберем реализацию пула соединений;

будем двигаться от конфигурирования соединений к выполнению запросов, параллельно заглядывая в код драйвера.

Надеюсь каждый для себя найдет что-то полезное.

Поехали

За двумя зайцами погонишься — чеклист для HighLoad системы гуглить будешь

Reading time11 min
Views17K

Эта статья будет полезна, если вы начинаете проект, который может перерасти в HL (HighLoad) или у вас уже есть проект, который имеет высокую нагрузку. Каждый пункт этого чек-листа поможет избежать определенных проблем, возникающих в процессе эксплуатации таких систем. И хотя некоторые пункты могут показаться довольно очевидными, а иные даже лишними, я рекомендую ознакомиться со всем списком, т.к. судя по статьям на хабре, периодически с некоторыми из этих проблем встречаются компании, которые уже обрели некоторую популярность. Дополняя систему каким то компонентом довольно просто забыть о таких вещах, как KeepAlive между двумя сервисами, а процессы изменения и дополнения в IT происходят постоянно.

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

Ознакомиться с чек-листом

Как достичь максимального счастья в обществе? (теория игр)

Reading time4 min
Views6.7K

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

Возникает логичный вопрос: а можно ли с помощью концепций теории игр смоделировать поведение индивидов в обществе?

Ознакомиться

Сборка собственного RPM-пакета, содержащего простую Go-программу

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

А именно, в мире Linux уже довольно давно существуют менеджеры пакетов. Например — это RPM и YUM. Они упрощают установку, обновление и удаление программ в Linux-системах. Собственно говоря, в этой статье я хочу рассказать о том, как создать собственный простой RPM-пакет, хочу показать, что это совсем несложно.



Надо отметить, что во многих организациях менеджеры пакетов используются лишь для установки программ, предлагаемых разработчиком используемого этими организациями дистрибутива Linux. Для управления развёртываниями собственных программ менеджеры пакетов не применяются. Тому, кто попытается собрать свой первый RPM-пакет, может показаться, что это не так уж и просто. Но обычно тот, кто учится создавать такие пакеты, тратит время с пользой. Дело в том, что соответствующие знания способны помочь ему в деле оптимизации его рабочих процессов. Здесь мы рассмотрим процесс создания RPM-пакета, содержащего простую программу, написанную на Go.
Читать дальше →

Чистим зубы с кровью: что надо знать

Reading time8 min
Views41K
image

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

Итак, если у вас кровь при повседневной чистке зубов, то пора знакомиться с довольно редкой и специализированной разновидностью стоматолога — пародонтологом:

  1. Коротко пробежимся по строению пародонта и его задачам.
  2. Как наша иммунная система спасает нас от лишних зубов.
  3. Что будет, если слишком усердно чистить зубы.
  4. Учим чистить зубы с нуля, или классические ошибки пациентов.
  5. Почему иногда лучше чистить без зубной пасты.
  6. Почему самые терпеливые пациенты рискуют всю жизнь посещать стоматолога четыре раза в год.
Читать дальше →

Как в восемь раз уменьшить количество DNS-запросов в Go

Reading time6 min
Views14K

Привет, Хабр. Меня зовут Рустам. Я работаю в Ozon: админю Kubernetes и пишу на Go.

У нас очень много сервисов на Go — их количество исчисляется тысячами. Запускаются они внутри кластеров Kubernetes. А я плотно работаю с Kubernetes и заметил, что при запуске кода внутри Kubernetes для резолва одного адреса делается до десяти DNS-запросов. Это, конечно, влияет на производительность.

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

Узнать больше про Go+DNS

Golang-дайджест № 6 (1 – 30 июня  2021)

Reading time4 min
Views5.8K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены версии Go 1.16.5 и 1.15.13, выпущен gopls v0.7.0, создание собственного Ngrok в 130 строках, GopherCon Europe 2021 Online

Приятного чтения!

Читать далее

Вилкой в глаз, или ForkJoinPool в Java

Reading time8 min
Views70K

Всем привет. Сегодня я хотел бы поговорить о многопоточности. Вернее, не о многопоточности вообще, а о таком её механизме как ForkJoinPool. Нельзя сказать, что данная технология является новой (она появилась ещё в Java 7), или что в сети нельзя найти материалы по данной теме. Информации хватает. Например, для глубокого погружения могу порекомендовать лекцию блистательного Алексея Шипилёва, которую можно без труда найти на YouTube. Но лично мне большинство этих материалов показались либо слишком сложными, либо наоборот – поверхностными. Так же некоторые из них содержат явные ошибки, что вносит ещё большую неразбериху в данную тему. Судя по тому, что в комментариях под одной из этих статей я нашёл вот такую картинку, подобные проблемы были не только у меня.

Читать далее

Корреляция между временными рядами: что может быть проще?

Reading time25 min
Views30K

Все чаще объектами статистического анализа становятся не массивы (таблицы) значений, а временные ряды. Такие ряды формируются при наблюдениях за природными процессами и явлениями, изучении социологических или макроэкономических показателей, при промышленном производстве и сбыте продукции. Главное, что отличает временной ряд от других типов данных – это то, что номер (время) наблюдения имеет значение. То есть, важен не только результат измерения, но и тот момент времени, когда оно выполнено. К сожалению, при применении статистических методов на этот нюанс часто не обращают внимания. Однако, именно эта "мелочь" приводит к очень серьезным и нетривиальным следствиям с точки зрения обработки таких сигналов. Самые обычные формулы, описанные во всех учебниках, внезапно отказываются работать. А попытки их применения "в лоб" иногда дают, мягко говоря, весьма неожиданные результаты. Например, статистическая связь между числом пиратов и глобальным потеплением оказывается не просто "значимой", а "практически достоверной". Что удивительно, столкнувшись с такой ситуацией, даже достаточно грамотные исследователи не всегда понимают, где же тут "порылась собака" . Данные вроде бы правильные, математика (как и жена Цезаря) – точно вне подозрений. А результат – ни в какие ворота... А Вы твердо уверены, что всегда правильно оцениваете значимость таких корреляций?

Если не очень – прошу под кат.

Масштабируем WebSocket соединения на Go

Reading time21 min
Views36K
Мессенджер Авито – это:

  • 12 m уникальных пользователей в месяц;
  • Версии для всех современных платформ (Web, iOS, Android);
  • Достаточно нагруженное приложение – около 800 тысяч подключений онлайн по WebSocket (основной протокол общения с пользователями).

Александр Емелин из компании Авито — автор проекта Centrifugo — open-source сервера real-time сообщений, где основной протокол передачи данных как раз WebSocket. Сервер используется в проектах Mail.Ru (в том числе в Юле), а также во внутренних проектах Badoo, ManyChat, частично Авито и за рубежом (например, Spot.im). Сейчас сервер базируется на доступной всем Go-разработчикам библиотеке Centrifuge.

На конференции Golang Conf 2019 Александр рассказал, как команда Авито решала проблемы при работе с WebSocket — как про детали, касающиеся Go в частности, так и вообще про работу с большим количеством постоянных соединений.


Читать дальше →

Электронная почта и работа с ней в Java-приложениях

Reading time14 min
Views50K

Disclaimer
Статья написана для новичков и тех, кому хочется шаг за шагом понять как устроена работа с электронной почтой из Java-приложений. Желающие быстро понять как отправлять электронные письма из Spring-приложений могут сразу переходить к 3 части.


Эту статью я решил написать, потому что не нашел русскоязычных источников про работу c электронной почтой из Java, описывающих имеющиеся библиотеки достаточно полно. На хабре существует статья, посвященная очень узкой задаче по чтению писем (и выводу их содержимого в консоль) и статья с how-to по отправлению
письма с вложениями при помощи Spring Email. Также существует несколько статей (например) на тематических ресурсах, которые приводят порядок действий при работе
с электронной почтой. В этих источниках мне не хватало объяснения основ, на которых стоит
электронная почта и взгляда с высоты на существующие библиотеки для работы с почтой в Java.


Для таких же лапкообразных, как я, написана эта статья. Она дает общие представления о работе электронной почты, разъясняет основные сущности библиотеки Jakarta Mail и дает советы о том, как работать с электронной почтой в Spring-приложениях.

Читать дальше →

Information

Rating
2,962-nd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity