Pull to refresh
-17
0
Send message

Шаг за шагом: развёртываем Kafka Connect с помощью оператора Strimzi в Kubernetes

Reading time9 min
Views4.7K

Strimzi — это практически самый широкий оператор Kubernetes Kafka, который можно использовать для развертывания Apache Kafka, либо других его компонентов, таких как Kafka Connect, Kafka Mirror и т.д. В статье мы пошагово разберем развертывание Kafka Connect в Kubernetes. А еще затронем проблемы, с которыми можно столкнуться во время процедуры развертывания и приведем способы их решения.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments3

Внедрение своего кода в адресное пространство процессов

Reading time5 min
Views42K
Intro


Внедрение своего кода( динамически ) в чужие процессы — штука достаточно интересная. Это может служить как во благо, так и во зло. Хотя, понятие «зло», местами, весьма абстрактно в информационном мире, я не могу провести точную границу между тем, что «плохо», а что «хорошо», тем более, если это касается внедрения кода…

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

Писать DLL Injector мы будем на C++ в среде Microsoft Visual Studio 2010. Для создания динамически подключаемой библиотеки можно использовать любой инструмент, который вам по душе. Я же для создания библиотеки выбрал CodeGear RAD Studio 2009, язык Delphi( Object Pascal ).

Как же работает DLL Injection ?

Схема работы данного метода проста:
1) поиск и получение дескриптора нужного процесса
2) выделение памяти в процессе и последующая запись пути в DLL`ке по адресу, где произошло выделение памяти
3) создание нового потока в виртуальном пространстве процесса, дескриптор которого был получен.


Читать дальше →
Total votes 9: ↑4 and ↓5-1
Comments9

Как самостоятельно прокачивать английский

Level of difficultyMedium
Reading time8 min
Views31K

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

Читать далее
Total votes 20: ↑17 and ↓3+15
Comments68

Руководство по Кросс-Платформенному Системному Программированию для UNIX и Windows: Уровень 1

Reading time68 min
Views10K

С помощью этого учебного материала мы научимся писать кросс-платформенный код на Си, используя системные функции популярных ОС (Windows, Linux/Android, macOS и FreeBSD): управление файлами и файловый I/O, консольный I/O, пайпы (неименованные), запуск новых процессов. Мы напишем свои небольшие вспомогательные функции поверх низкоуровневого системного АПИ (API), для того чтобы наш основной код, используя эти функции, мог работать на любой ОС без изменений. Этот учебный материал — начального уровня. Я делю сложные вещи на части, чтобы примеры кода здесь не были слишком заумными для тех, кто только что начал программировать на Си. Мы обсудим различия между системными АПИ и разберёмся, как создать кросс-платформенный программный интерфейс, который скрывает все эти различия от пользователя этого интерфейса.

Читать далее
Total votes 20: ↑19 and ↓1+24
Comments27

Использование анонимных методов в Delphi

Reading time8 min
Views33K
Поводом для написания статьи стал интерес к возможностям анонимных функций в Delphi. В разных источниках можно найти их теоретические основы, информацию о внутреннем устройстве, а вот примеры использования везде даются какие-то тривиальные. И многие задают вопросы: а для чего вообще нужны эти reference, какая может быть польза от их применения? Поэтому предлагаю некоторые варианты использования анонимных методов, применяемые в других языках, возможно, более ориентированных на функциональный стиль программирования.
Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments108

Когда НЕ нужно использовать Apache Kafka?

Level of difficultyMedium
Reading time18 min
Views10K
image

Apache Kafka де-факто превратился в стандарт потоковой передачи событий для обработки данных на лету. По мере его широкого распространения в отрасли появляются вопросы: «А когда НЕ нужно использовать Apache Kafka? Какие ограничения у этой платформы? В каких ситуациях он не предлагает необходимые возможности? Как понять, что Kafka — неподходящий инструмент для какой-то задачи?»


В статье, перевод которой мы подготовили, автор Kai Waehner постарается ответить на эти вопросы. В отдельных главах приводится объяснение, когда стоит использовать Kafka, когда — нет, а когда — возможно.

Читать дальше →
Total votes 19: ↑15 and ↓4+15
Comments0

Доказано наукой: 7 способов быть продуктивнее

Level of difficultyEasy
Reading time10 min
Views39K

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


В тексте речь идёт о маркетологах, однако материал будет полезен всем, кто работает с информацией, чей главный инструмент на работе — это мозг.

Читать дальше →
Total votes 19: ↑11 and ↓8+5
Comments21

Нюансы разработки парсера для своего языка программирования

Level of difficultyMedium
Reading time7 min
Views11K

image


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


Я решил не сильно париться, поэтому использовал библиотеку parglare. Она очень легкая и удобная, всем рекомендую. Для описания синтаксиса парсер принимает строку в соответствующем формате, использует регулярные выражения (не надо осуждать регулярки, они всесильны!).

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


Ведь в жизни практически любого программиста может наступить момент, когда ему в голову приходит светлая идея — разработать свой собственный язык программирования. Может быть и не ради захвата мира, наравне с C/C++, Python или хотя бы PHP, а в качестве личного пет-проекта, с которым он, длинными зимними вечерами будет оттачивать собственное мастерство.


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


Это история — заметки на память о муках выбора связки лексер-парсер для разбора грамматики NewLang. А так же попытка описать и систематизировать выводы об особенностях разных анализаторов с которыми пришлось поработать при выборе парсера для разбора грамматики у своего языка программирования.

Читать дальше →
Total votes 25: ↑23 and ↓2+28
Comments55

Создаем свой собственный язык программирования с использованием LLVM. Часть 4: Поддержка составных типов

Reading time54 min
Views3.8K

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

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments4

Как в IntelliJ IDEA написать и собрать в исполняемый .exe файл приложение на JavaFX

Level of difficultyMedium
Reading time4 min
Views13K

При кажущейся простоте создания приложения на JavaFX (особенно с помощью JavaFX Scene Builder 2.0 и бесплатных видео-уроков на различных ресурсах), написание функционала программы – это только половина пути. Программа должна работать, жить своей жизнью самостоятельно, без привязки к среде разработки. И, как показывает мой личный опыт, при сборке проекта и выпуске его в «большой мир» приходится преодолевать немало терний.

Надеюсь, что моя статья поможет кому-нибудь избежать ошибок, найти ответы на вопросы или просто сразу пойти правильным путем (например, создавать обычный maven-проект на Java-8, вручную прописывая в pom.xml зависимости и способ сборки, и всегда указывать на латинице имена учетных записей, директорий в своей операционной системе).

Читать далее
Total votes 6: ↑4 and ↓2+3
Comments24

JDK 20 и JDK 21: что мы знаем на сегодняшний день

Level of difficultyEasy
Reading time8 min
Views12K

JDK 20, третий не-LTS-релиз после JDK 17, достиг начальной фазы релиз-кандидата, как заявил Марк Рейнхольд, главный архитектор Java Platform Group в Oracle. Основной репозиторий исходного кода, форкнутый в стабилизационный репозиторий JDK в середине декабря 2022 г. (Rampdown Phase One), определяет набор функций для JDK 20. Критические ошибки, такие как регрессии или серьезные функциональные проблемы, могут быть устранены, но должны быть одобрены в процессе Fix-Request. Согласно графику выпуска, JDK 20 будет официально выпущен 21 марта 2023 года. Стоит отметить, что JEP 438 был добавлен в набор функций в начале марта 2023 года.

В сентябре 2023 года планируется выпустить общедоступный и следующий выпуск LTS В настоящее время в качестве целевых для JDK 21 предлагается два (2) JEP.

Также можно предположить, какие дополнительные JEP могут быть включены в JDK 21, основываясь на ряде проектов и кандидатов JEP.

Читать далее
Total votes 10: ↑9 and ↓1+10
Comments1

Сравнение MySQL и PostgreSQL в 2023 году

Level of difficultyEasy
Reading time9 min
Views56K

PostgreSQL и MySQL — это надежные, безопасные и масштабируемые базы данных, которые существуют уже много лет. Каждая из них имеет уникальные сильные и слабые стороны, что делает какую‑либо из них более подходящей для конкретных нужд. В этой статье мы проведем их сравнение, чтобы помочь с принятием обоснованного решения в 2023 году.

Читать далее
Total votes 19: ↑11 and ↓8+6
Comments38

Word2vec в картинках

Reading time14 min
Views139K


«Во всякой вещи скрыт узор, который есть часть Вселенной. В нём есть симметрия, элегантность и красота — качества, которые прежде всего схватывает всякий истинный художник, запечатлевающий мир. Этот узор можно уловить в смене сезонов, в том, как струится по склону песок, в перепутанных ветвях креозотового кустарника, в узоре его листа.

Мы пытаемся скопировать этот узор в нашей жизни и нашем обществе и потому любим ритм, песню, танец, различные радующие и утешающие нас формы. Однако можно разглядеть и опасность, таящуюся в поиске абсолютного совершенства, ибо очевидно, что совершенный узор — неизменен. И, приближаясь к совершенству, всё сущее идёт к смерти» — Дюна (1965)

Я считаю, что концепция вложений (embeddings) — одна из самых замечательных идей в машинном обучении. Если вы когда-нибудь использовали Siri, Google Assistant, Alexa, Google Translate или даже клавиатуру смартфона с предсказанием следующего слова, то уже работали с моделью обработки естественного языка на основе вложений. За последние десятилетия произошло значительное развитие этой концепции для нейронных моделей (последние разработки включают контекстуализированные вложения слов в передовых моделях, таких как BERT и GPT2).
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments16

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

Level of difficultyMedium
Reading time7 min
Views36K

В рубрике «Выдающиеся программисты 21 века» уже была статья про гения программирования Джона Кармака, создателя движков для Doom, Quake и других культовых игр. Потом он занялся разработкой ракет (они в Armadillo Aerospace реализовали вертикальную посадку раньше SpaceX), а затем — систем VR, софта для Oculus Rift и других устройств. Сейчас началась четвёртая фаза в его карьере.

В интервью изданию Dallas Innovates 52-летний Кармак рассказал о новом проекте — системе сильного ИИ (AGI), над которым он работает самостоятельно, без участия больших корпораций, как отшельник в своём особняке в Далласе.

Сильный ИИ общего назначения не будет уступать среднему человеку в понимании происходящего и решении проблем. По оценке Кармака, с вероятностью 60% такая система (альфа-версия) будет создана до 2030 года, с вероятностью 95% — до 2050 года. Это самая важная и интересная задача, которая сейчас стоит перед человечеством.
Читать дальше →
Total votes 74: ↑71 and ↓3+93
Comments94

Обработка исключений в Java с использованием сопоставления с образцом (pattern matching)

Level of difficultyMedium
Reading time7 min
Views7.1K

Обработка исключений в Java с использованием сопоставления с образцом (pattern matching).


Данная статья является логическим продолжением статей



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


Пример на других языках


В функциональных языках программирования существуют удобные средства для работы с исключениями. В Kotlin и Rust это класс Result, в Scala и Haskell — Try. Обработка успешного результата или ошибки может производится при помощи pattern-matching как на примерах ниже.


Scala


val result = divideWithTry(10, 0) match {
  case Success(i) => i
  case Failure(DivideByZero()) => None
}

Rust


    let greeting_file_result = File::open("hello.txt");
    let greeting_file = match greeting_file_result {
        Ok(file) => file,
        Err(error) => panic!("Problem opening the file: {:?}", error),
    };

Использование pattern-matching является естественным (idiomatic) в функциональных языках. А как дело обстоит в Java?

Читать дальше →
Total votes 7: ↑5 and ↓2+4
Comments4

Девять советов молодому тимлиду

Level of difficultyEasy
Reading time7 min
Views13K

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

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

Я много размышлял на эту тему и вывел несколько принципов, которых советую придерживаться начинающим ИТ-руководителям и тем, кто хочет ими стать. Часть моих тезисов вдохновлена книгой “90 THINGS YOU NEED TO KNOW IF YOU WANT TO become the CTO”, изданная CTO Academy. 

Читать далее
Total votes 19: ↑17 and ↓2+17
Comments9

Микросервисная реализация объектно-ориентированных баз данных

Level of difficultyMedium
Reading time50 min
Views9.8K

В настоящее время объектно-ориентированные базы данных (ООБД) не имеют достаточно большого распространения в повседневном использовании, да и более того, не настолько популярны как реляционные базы данных, которые не один десяток лет уже активно поддерживаются различными сообществами и имеют долгую историю применения.

В данной статье рассматривается реализация ООБД в контексте разработки системы, состоящей из микросервисов, на примере Perst и Db4o. Также будет рассмотрена отдельная реализация с документно-ориентированной базой данных MongoDB, работа с которой имеет много общего с ООБД.

Целью данной статьи является рассмотрение практического применения ООБД и решения проблем совместимости с помощью микросервисной архитектуры.

Читать далее
Total votes 6: ↑5 and ↓1+5
Comments2

Основы веба, которые должен знать начинающий разработчик

Level of difficultyEasy
Reading time8 min
Views37K

В этом посте я объясню, как работает Интернет. Мы ответим на вопросы наподобие «Как браузер находит файл HTML для запрошенной веб-страницы?», «Как файл HTML превращается в интерфейс пользователя?», «Что можно сделать, чтобы ускорить этот процесс?», «Как устанавливается и поддерживается связь с сервером?», а также рассмотрим следующие концепции:

  • Клиент-серверную модель
  • Жизненный цикл запроса веб-страницы
  • Hypertext Transfer Protocol
  • Как браузеры рендерят контент
Читать дальше →
Total votes 41: ↑32 and ↓9+32
Comments16

Руководство по возможностям языка Java версий 8-19

Level of difficultyEasy
Reading time18 min
Views35K

Вы можете использовать это руководство для получения практической информации о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (Adoptium, AdoptOpenJdk, OpenJDK, OracleJDK и т. д.), а также получить обзор функций языка Java, включая версии 8–19.

Читать далее
Total votes 35: ↑33 and ↓2+35
Comments10

Самый научный гайд по сну

Level of difficultyEasy
Reading time12 min
Views133K

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

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

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

Читать далее
Total votes 103: ↑97 and ↓6+121
Comments134

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Backend Developer
Senior