Pull to refresh
-4
0
Send message

Комбинаторы синтаксического анализа на Kotlin

Level of difficultyMedium
Reading time12 min
Views579

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

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

Лишние знания бесполезны?

Level of difficultyEasy
Reading time6 min
Views2.8K

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

Проявить любопытство
Total votes 22: ↑10 and ↓12+2
Comments15

Plane-based геометрическая алгебра для описания движения тел

Level of difficultyHard
Reading time20 min
Views3K

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

Читать далее
Total votes 34: ↑34 and ↓0+43
Comments9

Замки, драконы и сундуки: как возник классический сеттинг игрового фэнтези? Часть 2: как трое великих переделали фэнтези

Level of difficultyEasy
Reading time6 min
Views8.1K

В прошлой статье мы вспомнили, как и почему в США середины 60-х годов оформился жанр фэнтези — и почему цикл о Конане Роберта Говарда оказал на него как минимум не меньшее влияние, чем «Властелин колец» Толкиена. Именно на почве увлечения «Конанинаной» в 1965 году оформился неформальный клуб писателей с говорящим названием «Гильдия мечников и чародеев Америки» (SAGA). Его ядром стали фанаты и продолжатели Говарда Лайон Спрэг де Камп, Лин Картер и Джон Джейкс. В 1966-1967-х годах публикация «продолжений» похождений Конана от де Кампа и Картера совпала с ростом популярности трилогии Толкиена и пиком контркультурных настроений среди американской молодёжи. Именно во второй половине 60-х фэнтези из увлечения немногих гиков превратилось в массово популярный у читателей жанр, но это происходило не только стараниями издателей Толкина и продолжателей Говарда.
Читать дальше →
Total votes 55: ↑53 and ↓2+66
Comments19

Матрица компетенция/карьерного роста программистов

Level of difficultyEasy
Reading time8 min
Views2.2K

Как выглядят тайтлы и уровни у программистов в зарубежных компаниях, сколько надо лет опыта чтобы быть достойным их, ну и самое главное какая зарплата (до налогов) на этих уровня?

Я не претендую на истину в последней инстанции, это всего лишь мое видение, любые корректировки/добавки/комментарии - приветствуются

Читать далее
Total votes 14: ↑6 and ↓8+1
Comments0

Разбираемся с стейблкойном на TON или как ваши средства могут заблокировать

Level of difficultyEasy
Reading time6 min
Views5.8K

19 апреля на конференции Token2049 после выступления Павла Дурова было объявлено о появлении стейблкойна от Tether в сети TON - USDt. Так как это централизованный стейблкойн эмитент подобного токена должен иметь контроль над средствами пользователей для соответствия требований регулятора, например, блокировать средства пользователя. В данной небольшой статье я расскажу как устроены токены на TON и какие возможности есть у эмитента стейблкойна.

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

Как устроены смарт-контракты в сети TON

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

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

Читать далее
Total votes 12: ↑10 and ↓2+15
Comments17

Как LLM учат понимать синтаксис

Level of difficultyMedium
Reading time4 min
Views2.7K

Скорее всего, вы поняли заголовок правильно, хотя в нём есть стилистическая ошибка — двусмысленность (кто-то учит LLM, или они учат кого-то?). 

Человеческое понимание языка остается ориентиром и пока недостижимой целью для языковых моделей. При всей небезошибочности первого и при всех невероятных успехах последних. Например, человеку обычно не составляет труда однозначно трактовать двусмысленные фразы исходя из контекста. Более того, мы с удовольствием используем такие каламбуры в шутках разного качества. Из самого известного приходит на ум только “В Кремле голубые не только ели, но и пили” (предложите свои варианты в комментариях — будет интересно почитать). Есть ещё “казнить нельзя помиловать”, но эта двусмысленность разрешается запятой.

Самый известный пример в английском:  “Time flies like an arrow; Fruit flies like a banana”. 

Человек скорее всего после некоторых раздумий поймёт это как “Время летит как стрела, мухи любят банан” (хотя мне, например, понадобилось на это несколько секунд).  Яндекс переводчик понимает эту фразу так:  “Время летит как стрела, фрукты разлетаются как бананы”. Google translator демонстрирует зоологическую эрудированность: “Время летит как стрела; Фруктовые мушки, как банан”, а ChatGPT предлагает “Время летит как стрела; Мухи на фруктах летают как бананы”. В общем, никто не справился. 

Читать далее
Total votes 8: ↑8 and ↓0+11
Comments2

Spring Boot Starter: практически, принципиально и подробнее. Часть 1

Reading time9 min
Views5.4K

Всем привет, меня зовут Сергей Соловых, я Java-разработчик в команде МТС Digital. За последние 2 года я написал и выпустил в продакшен более 30 микросервисов. Выдержать столь высокий темп помогло применение общепроектных решений и паттернов разработки.

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

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

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

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

Путеводитель по Docker. От основ контейнеризации до создания собственного докера

Reading time10 min
Views22K

Добрый день! Сегодня мы поговорим о контейнеризации, а именно о наиболее популярной на данный момент технологии её реализации - Docker. Также вашему вниманию будут представлены уязвимости при реализации данной технологии.

Читать далее
Total votes 16: ↑7 and ↓9+1
Comments3

Сказ о том, как я эмулятор Intel 4004 на Python писал (часть 2)

Reading time4 min
Views2.7K

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

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

Читать далее
Total votes 8: ↑6 and ↓2+7
Comments6

Менторство в IT. С чего начать и как стать успешным ментором

Level of difficultyEasy
Reading time10 min
Views2.2K

Всем привет! В этой статье я поделюсь нашим первым выпуском второго сезона рубрики "Открытый микрофон", в котором Николай Мухранов, старший системный аналитик в "Спортмастер Лаб" рассказал о менторстве в IT.

Коля - преподаватель курсов для системных аналитиков, ментор и наставник для студентов, проводит технические собеседования системных аналитиков, так что знает о менторстве не понаслышке!

Публикую расшифровку доклада и саму запись трансляции.

Также по теме мы подобрали экспертов, которые поделились своей экспертизой и мнением, их комментарии - ниже по тексту. 

Читать далее
Total votes 14: ↑10 and ↓4+9
Comments0

Искусство ETL. Пишем собственный движок SQL на Spark [часть 6]

Level of difficultyMedium
Reading time23 min
Views3.2K

НЬЮ!


В предыдущих сериях (FAQ 1 2 3 4 5 ) мы весьма подробно рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL поверх Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

В данной части поговорим о том, как добавить в выражения SQL поддержку функций. Например,


SELECT
    MAX(score1, score2, score3, score4, score5) AS max_score,
    MIN(score1, score2, score3, score4, score5) AS min_score,
    MEDIAN(score1, score2, score3, score4, score5) AS median_score,
    score1 + score2 + score3 + score4 + score5 AS score_sum
FROM raw_scores INTO final_scores
WHERE ABS(score1 + score2 + score3 + score4 + score5) > $score_margin;

— тут у нас функции MAX, MIN и MEDIAN принимают любое количество аргументов типа Double и возвращают Double, а ABS только один такой аргумент.


Вообще, кроме общей математики, в любом уважающем себя диалекте SQL как минимум должны быть функции для манипуляций с датой/временем, работы со строками и массивами. Их мы тоже обязательно добавим. В classpath, чтобы движок мог их оттуда подгружать. До кучи, ещё и операторы типа >= или LIKE, которые у нас уже были реализованы, но хардкодом, сделаем такими же подключаемыми.


Предупреждение о сложности материала

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

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

От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)

Level of difficultyMedium
Reading time18 min
Views10K

В этой статье мы рассмотрим, как и почему изменилась реализация примитивов синхронизации из стандартной библиотеки Java и пакета java.util.concurrent для Kotlin Coroutines и для языка Kotlin в целом.

Разберемся, какие реализации примитивов синхронизации потоков актуальны в контексте корутин, а какие надо использовать с осторожностью.

Оценим готовность текущих решений к использованию в Kotlin Multiplatform.

Разработаем аналоги нескольких полезных классов пакета java.util.concurrent, до которых еще не добрались разработчики корутин.

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

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

Дерево отрезков

Reading time21 min
Views8.4K

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

Читать далее
Total votes 29: ↑29 and ↓0+34
Comments11

Простейшая нейронная сеть, мой опыт и выводы

Level of difficultyEasy
Reading time6 min
Views7.2K

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

Читать далее
Total votes 12: ↑11 and ↓1+12
Comments14

Как создать свой Spring Boot 3 — стартер?

Level of difficultyEasy
Reading time8 min
Views7.3K

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

Spring Boot starter'ы - отличный способ управлять созданием, развитием и поставкой общей кодовой базы. О том как создать свой Spring Boot 3 стартер и поговорим в этой статье.

Читать далее
Total votes 13: ↑12 and ↓1+12
Comments7

Внутренний мир: Project Reactor

Reading time20 min
Views14K

У многих из нас, при использовании какого-либо инструмента программирования, возникал вопрос: “Как? Как это работает?”. Часто при возникновении подобных вопросов я обращаюсь к гуглу, который популярным образом рассказывает общие принципы работы того или иного механизма. Но наверняка среди читателей есть те, которые, прочитав несколько статей, подумали: "Да, это интересно и, вроде, понятно. Но все таки, как оно работает?".

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

Внутренний мир: Java NIO

Level of difficultyMedium
Reading time15 min
Views8.1K

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

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

Неблокируемый ввод/вывод был реализован в пакете java.nio Java SE 1.4. К сожалению, в ежедневной практике нечасто приходится иметь дело с низкоуровневым I/O, и намного чаще при необходимости используются стримы из java.io. В этой статье будет описано содержание Java NIO, несколько примеров и принцип работы неблокируемого I/O.

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

Как я склеил картон и продал на маркетплейсах на 50 млн в год

Level of difficultyEasy
Reading time8 min
Views290K

В 2020-м мой работодатель начал прижимать меня по условиям, я забрал команду, снял склад и запустил свое производство когтеточек. Казалось бы, ничего сложного: закупаешь клей, картон, и находишь людей, которые 5 000 раз в день готовы повторять одни и ту же операцию. Но есть нюансы.

Читать далее
Total votes 241: ↑217 and ↓24+242
Comments295
1
23 ...

Information

Rating
Does not participate
Registered
Activity