Pull to refresh
3
0
Кирилл Темненков @General_Manjago

бекенд разработчик на Java и Kotlin

Send message

Русскоязычный чат-бот Boltoon: создаем виртуального собеседника

Reading time7 min
Views34K


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

Тем не менее, о чат-ботах много говорят на Хабре. Они могут быть самые разные. Популярностью пользуются боты на базе нейронных сетей прогнозирования, которые генерируют ответ пословно. Это очень интересно, но затратно с точки зрения реализации, особенно для русского языка из-за большого количества словоформ. Мной был выбран другой подход для реализации чат-бота Boltoon.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments8

Опыт оптимизации вычислений через динамическую генерацию байт-кода JVM

Reading time6 min
Views2.1K
В своем небольшом проекте по моделированию случайных величин я столкнулся с проблемой низкой производительности вычисления математических выражений, вводимых пользователем, и долго искал разные способы ее решения: попробовал написать интерпретатор на С++ в надежде, что он будет быстрым, сочинил свой байт-код. Наиболее удачной идеей оказалась генерация классов JVM и их загрузка во время выполнения.

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

KMath — это библиотека для математики и компьютерной алгебры, активно использующая контекстно-ориентированное программирование в Kotlin. В KMath разделены математические сущности (числа, векторы, матрицы) и операции над ними — они поставляются отдельным объектом, алгеброй, соответствующей типу операндов, Algebra<T>.

import scientifik.kmath.operations.*

ComplexField {
   (i pow 2) + Complex(1.0, 3.0)
}

Таким образом, после написания генератора байт-кода, с учетом оптимизаций JVM можно получить быстрые расчеты для любого математического объекта — достаточно определить операции над ними на Kotlin.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments0

В нативный код из уютного мира Java: путешествие туда и обратно (часть 2)

Reading time20 min
Views15K


Это вторая часть расшифровки доклада Ивана Углянского (dbg_nsk) с JPoint 2020, посвященного связи Java с нативным кодом. В прошлой части мы поговорили про традиционный способ связи — через Java Native Interface (JNI), рассмотрели специфичные ему проблемы и оценили производительность. Картина получилась удручающей, поэтому давайте разбираться, чем можно заменить JNI?

Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments7

В нативный код из уютного мира Java: путешествие туда и обратно (часть 1)

Reading time18 min
Views29K


Java и другие управляемые языки просты и удобны во многих случаях, но иногда их возможностей недостаточно — например, если нужна библиотека, написанная только на C или C++. Иногда хочется позвать пару методов из системного API, или попытаться улучшить производительность для модуля — и тогда прямой путь в нативный код.


Но тут возникают подводные камни: написать нативный метод и вызвать библиотеку может быть и легко, но JVM начинает крашиться в случайных местах, производительность падает, сборщик мусора перестает справляться с работой, а в репозитории царствуют бесконечные C-шные файлы с буквами JNI. Что же могло пойти не так?


Иван Углянский (dbg_nsk) из Huawei разбирается со всем по порядку: что необычного в интеропе между Java и нативным кодом, как оно работало раньше и что нужно делать для их нормальной совместной работы (и можно ли это вообще сделать). Иван рассказывает, как избежать просадок производительности, внезапных OOM и размышляет на тему будущего — в контексте проектов Panama и Sulong.


Мы подготовили текстовую версию доклада о работе с нативами в Java. В первой части:


  • Зачем вообще работать с нативным кодом в Java.
  • С какими ошибками и проблемами придётся столкнуться при работе с нативами.

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


Далее — повествование от лица спикера.

Читать дальше →
Total votes 55: ↑55 and ↓0+55
Comments19

Сон и продолжительность жизни. Пандемия недосыпа

Reading time20 min
Views65K

О времена, о нравы.


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


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


«Вот бы вообще не спать, я бы столько всего успевал сделать!» — наверное, так мечтал почти каждый.


Есть и те, кто относятся ко сну с пренебрежением: «Лягу сегодня попозже, часа в 3 ночи». Неважно, остались ли незаконченные дела у человека или он решил досмотреть сериал — так повторяется изо дня в день. А вставать, как всегда, по будильнику в 7:00. Кто-то даже гордится тем, как мало он спит. Подумаешь недосып?


Есть ли тут повод для гордости? Скорее наоборот.


Сегодня команда Lifext расскажет:



image

Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments105

Девайсы для пентеста. Обзор хакерских девайсов. Часть 1: Мини компьютеры

Reading time7 min
Views47K


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

За последние годы в клирнет вышло огромное количество пентестерских устройств и постоянно появляются новые. Большинство продаётся в разрозненных магазинах по всему (и на алиэкспрессе в том числе), и у пентестеров появилась новая головная боль — выбирать среди десятков похожих устройств нужное или искать очередное «универсальное» решение. Наконец, крутой специалист и консультант по информационной безопасности Yago Hansen просто собрал каталог крутых девайсов, железяк и аксессуаров, доказавших свою эффективность. Сейчас каталог второй версии, в нём 177 наименований из 8 категорий. Предлагаем вашему вниманию его адаптацию в виде цикла из 7 постов (некоторые категории будут совмещены или поделены на две статьи из-за разницы в объёме).
Читать дальше →
Total votes 64: ↑46 and ↓18+28
Comments55

Любовь, смерть, роботы и Пелевин

Reading time3 min
Views70K
image

В прошлом году, вернувшись с тренировки, я засел перед компьютером, чтоб посмотреть пару забавных мемов про котиков. И, обнаружив новость о выходе нового сериала Любовь, смерть и роботы– «Love, Death & Robots», я лениво потрогал её мышкой — глянуть одним глазком.

Пришел в себя я под утро. С красными глазами, затекшим, от сидения в кресле телом — но совершенно счастливым.

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

При пересмотре сериала, мои впечатления, впрочем, были уже не столь радужны — во мне проснулась писательская зависть. «Почему такое не снимают в России — возмущенно бормотал я, — я бы подобрал рассказы для сериала ничуть не хуже!»

«Я сниму свой сериал! — сказал я, чтоб справиться с завистью, — точнее, соберу 18 рассказов, ничуть не уступающих подборке сериала».
Читать дальше →
Total votes 66: ↑55 and ↓11+44
Comments58

Три дороги для программиста: эксперт, руководитель, основатель

Reading time15 min
Views24K

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

С разрешения Сергея мы публикуем все три видео и их текстовую расшифровку.

Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments7

JSON-RPC? Возьмите хитрый REST

Reading time6 min
Views31K


Уверен, что заголовок вызвал здоровую реакцию — “ну опять началось…” Но позвольте завладеть вашим вниманием на 5-10 минут, и я постараюсь не обмануть ожидания.


Структура статьи будет такова: берется стереотипное утверждение и раскрывается “природа” возникновения этого стереотипа. Надеюсь, это позволит взглянуть на выбор парадигмы обмена данными в ваших проектах под новым углом.


Для того, чтобы была ясность в том, что такое RPC, предлагаю рассматривать стандарт JSON-RPC 2.0. C REST ясности нет. И не должно быть. Все, что нужно знать о REST — он неотличим от HTTP.

Читать дальше →
Total votes 52: ↑41 and ↓11+30
Comments118

Мама, кажется я архитектор

Reading time7 min
Views13K


Статья направлена на диалог о необходимости архитектора в команде. Она будет интересна тем, кто задумывается о пути своего развития, когда “все дороги уже исхожены”. Когда имеющийся богатый опыт делает твою работу “неэффективной” с точки зрения коллег. Когда тебя уже почти ничего не удивляет и каждый следующий проект это дежа вю. Ты выгораешь.

Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments53

Не те игрушки: как мы научили нейросеть бороться с порно в стримах

Reading time8 min
Views26K
Всем привет, меня зовут Олег, я занимаюсь компьютерным зрением в команде Видеоаналитики МТС и сегодня расскажу вам, как мы защищаем от небезопасного контента стриминговую платформу WASD.tv, в частности про детектирование порнографии в постановке задачи action recognition.


Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments45

SHISHUA: самый быстрый в мире генератор псевдослучайных чисел

Reading time14 min
Views16K

Полгода назад мне захотелось создать лучший генератор псевдослучайных чисел (ГПСЧ) с какой-нибудь необычной архитектурой. Я думал, что начало будет лёгким, а по мере работы задача станет медленно усложняться. И думал, смогу ли я научиться всему достаточно быстро, чтобы справиться с самым сложным.

К моему удивлению, сложность возрастала не линейно. Побайтовое тестирование по критерию хи-квадрат оказалось очень трудным! Позднее столь же трудно было пройти тесты diehard. Я опубликовал текущие результаты, чтобы понять, какие ещё трудности меня ожидают. Однако тест PractRand в тот раз пройти не удалось.

Затем было очень трудно прохождение теста BigCrush.

Затем было очень трудно передавать 32 тебибайта данных при прохождении PractRand. Скорость стала проблемой. Мало было создать конструкцию, генерирующей десять мегабайтов в секунду, потому что прохождение PractRand заняло бы месяц. Но должен признаться, что пройти этот тест со скоростью гигабайт в секунду было очень трудно.
Читать дальше →
Total votes 89: ↑87 and ↓2+85
Comments16

Генератор псевдослучайных чисел большой разрядности

Reading time6 min
Views5.5K
Недавно появилась статья с описанием скоростного генератора случайных чисел (утверждается, что самого быстрого в мире).

Понятно, её автор не читает русскоязычных статей по теме, но если бы читал, то не стал бы утверждать о мировом первенстве своего генератора в скорости работы. Скорость генерации псевдослучайных чисел в 12 ГигаБайт/сек. была достигнута достаточно давно.Этот генератор применяется для выработки ключей шифрования.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments3

Как я веду Zettelkasten в Notion уже год: стартовый набор и полезные трюки

Reading time8 min
Views172K

Zettelkasten — крутой метод хранения идей и знаний — сейчас на слуху, его уже обсуждали на Хабре. Я веду такой в Notion уже год, потому что Notion лучше всех воплощает три главных принципа Zettelkasten: взаимосвязанность, категоризацию, актуальность. Метод улучшил качество моего обучения и исследований, и без него как-то уже не так. 

Я почитал русскоязычные и англоязычные ресурсы и не нашел ни нормального шаблона для Notion, ни объяснения как реализовать главные преимущества метода Zettelkasten. Под катом и то, и другое. 

UPD: На текущий момент, статья безбожно устарела, потому что за еще один год я набрался опыта, помогая другим людям организовать их Цеттели и наблюдая за чужим опытом. А еще Notion выпустил несколько фич, заточенных именно под Цеттель. И теперь мне совестно, как новички страдают, разбираясь в теме после меня.

Эту статью можно почитать для понимания основ, но актуальные источники информации тут:

  • У меня в Психотронке можно следить за подготовкой обновленной версии, ну и написать мне за помощью. А можете не следить: версия 2.0 выйдет на Хабре.
  • В русскоязычном сообществе Zettelkasten в Телеграме сидят люди, которые хорошо разбираются в теме. Мы обожаем помогать новичкам.

Дисклеймер: ни Notion, ни автор метода мне за статью не платили.
Читать дальше →
Total votes 49: ↑49 and ↓0+49
Comments88

Создание «искусственной жизни» на компьютере

Reading time10 min
Views109K
Всем привет. В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.

Как это выглядит?

картинка кликабельна

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

Ну а дальше за работу принимается эволюция и естественный отбор.

А мне остаётся только наблюдать за развитием мира.

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

Поведением ботов управляет код, записанный в них.

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

Внутреннее устройство кода — это самое интересное в проекте.

Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.
Читать дальше →
Total votes 214: ↑210 and ↓4+206
Comments393

Вероятно, хватит рекомендовать «Чистый код»

Reading time13 min
Views175K
Возможно, мы никогда не сможем прийти к эмпирическому определению «хорошего кода» или «чистого кода». Это означает, что мнение одного человека о мнении другого человека о «чистом коде» обязательно очень субъективно. Я не могу рассматривать книгу Роберта Мартина «Чистый код» 2008 года с чужой точки зрения, только со своей.

Тем не менее, для меня главная проблема этой книги заключается в том, что многие примеры кода в ней просто ужасны.
Читать дальше →
Total votes 157: ↑147 and ↓10+137
Comments427

Почему онлайн-митапы никогда не заменят оффлайн, что с этим делать и почему онлайн всё равно нужен

Reading time6 min
Views2.3K
Мне это надоело.

В прошлом году я был на 50+ митапах, нескольких конференциях и на паре хакатонов.
За последние пару месяцев я сходил на 30 онлайн-мероприятий разных форматов, и хочу рассказать, почему зря потратил это время, в чём проблема с онлайн (и офлайн) митапами и что мы можем сделать чтобы оказаться в чуть лучшем мире. Давайте по порядку.



Зачем приходить на митапы


Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

38+ сайтов для размещения контента с целью продвижения своего бизнеса и личного бренда

Reading time28 min
Views129K

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

Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments14

Анатомия RAM

Reading time14 min
Views104K
image

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

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

Зачем же ты, RAM-ео?


Процессорам требуется очень быстро получать доступ к данным и командам, чтобы программы выполнялись мгновенно. Кроме того, им нужно, чтобы при произвольных или неожиданных запросах не очень страдала скорость. Именно поэтому для компьютера так важно ОЗУ (RAM, сокращение от random-access memory — память с произвольным доступом).

Существует два основных типа RAM: статическая и динамическая, или сокращённо SRAM и DRAM.

Мы будем рассматривать только DRAM, потому что SRAM используется только внутри процессоров, таких как CPU или GPU. Так где же находится DRAM в наших компьютерах и как она работает?
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments31

Spring Boot, Hibernate и Kotlin для новичков шаг за шагом

Reading time7 min
Views34K

Всем привет, меня зовут Олег, я техлид в ДомКлике. В нашей команде ядром стека является Kotlin и Spring Boot. Хочу поделиться с вами своим опытом по взаимодействию и особенностях работы с PostgreSQL и Hibernate в связке со Spring Boot и Kotlin. Также на примере микросервиса, покажу преимущества Kotlin и его отличия от аналогичного приложения на Java. Расскажу о не совсем очевидных сложностях, с которыми могут столкнуться новички при использовании этого стека с Hibernate. Статья будет полезна разработчикам, желающим перейти на Kotlin и знакомых со Spring Boot, Hibernate Java.
Итак, начнем с каркаса проекта и зависимостей.
Total votes 44: ↑44 and ↓0+44
Comments17

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity