Pull to refresh
43
-4.9
Константин Львов @klvov

программист, программист СУБД, веб-разработчик

Send message

Windows по сравнению с MacOS

Level of difficultyEasy
Reading time50 min
Views47K

У меня родилась статья в продолжение серии хороших статей:

Перейти с Linux на macOS и не сойти с ума

7 причин почему вам не стоит переходить на Mac, или как справиться с этой демонической машиной

Я, старый дурак пользователь Windows (26 лет стажа, ну да, с 1997 г.) решил купить макбук. Вот этот, предпоследний, стильный-модный-молодежный на процессоре M1 Pro. Нафига, а главное зачем - вопрос риторический и не предполагающий ответа (захотелось). Как его можно настроить, чтобы заскорузлому виндузятнику стало возможно использовать этот чудо-компьютер с яблоком без очень сильной боли в одном месте, я попытаюсь написать в этой заметке. Хотел бы я, чтобы полгода назад мне на глаза попалась такая!

Продолжение из двух частей с эпилогом
Total votes 99: ↑70 and ↓29+41
Comments317

Шортрид: как я тестировал экспресс-скан в «Перекрестке»

Reading time4 min
Views5.2K

Будущее уже здесь, и от магазинов самообслуживания мы уже дошли до магазинов полного самообслуживания, даже без касс и кассиров. У нас на днях запустили "экспресс-скан" в Перекрестках, и я, по старой привычке тестировать все самые горячие новинки, пошел и протестировал, как оно работает. Спойлер: работает пока плохо. Но работает!

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

Про LL-парсинг: Подход к синтаксическому анализу через концепцию нарезания строки

Reading time10 min
Views13K
Приветствую уважаемое сообщество!

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

Как пишет великий Д. Строгов, «понять — значит упростить». Поэтому, чтобы понять концепцию синтаксического разбора методом рекурсивного спуска (оно же LL-парсинг), упростим задачу насколько можно и вручную напишем синтаксический анализатор формата, похожего на JSON, но более простого (при желании можно будет потом его расширить до анализатора полноценного JSON, если захочется поупражняться). Напишем его, взяв за основу идею нарезания строки.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments6

Пузырьковый вычислитель выражений: простейший синтаксический LR-анализатор вручную

Reading time8 min
Views5.4K
Приветствую уважаемое сообщество.

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



Это может с непривычки напугать. Нет, с какого-то момента формальная запись становится удобной и даже необходимой, но для “человека с улицы”, который хотел бы, чтобы ему “на пальцах” объяснили, “в чем тут дело”, это может быть сложно. А вопрос “что такое LL и LR — анализ, и в чем между ними разница” программисты задают довольно часто (потому что не все программисты имеют формальное образование в области Computer Science, как и я, и не все из них проходили там курс по компиляторам).

Мне более близок подход, когда сначала мы берем задачу, пытаемся ее решить, и в процессе решения сначала вырабатываем интуитивное понимание принципа, а потом уже для этого понимания создаем математические формализмы. Поэтому я на очень простом примере в этой статье хочу показать, какая идея лежит в основе восходящего синтаксического анализа (он же bottom-up parsing, он же LR). Будем вычислять арифметическое выражение, в котором для еще большего упрощения будем поддерживать только операторы сложения, умножения и скобки (чтобы не усложнять пример отрицательными числами и поддержкой унарного минуса).

Перед тем, как перейти непосредственно к задаче, напишу некоторые соображения вообще на тему синтаксического разбора.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments11

Эффективное использование Vim

Reading time11 min
Views73K

Введение


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

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

Эта статья также не является tutorial’ом для начинающих пользователей Vim, хотя и им (а также пользователям Emacs) может быть интересна, поскольку некоторые упоминаемые принципы являются достаточно общими и действуют не только в системах редактирования текстов, а вообще везде, где идет речь об использовании компьютера для редактирования чего-либо. Тем не менее, я предполагаю, что читатель знаком с основными концепциями, применяемыми в Vim (режимы, регистры, буфера, команды) и не останавливаюсь на их подробном описании.

По умолчанию Vim настроен очень старомодно, и эта настройка подразумевает, что пользователь при работе с текстом будет мыслить метафорами пятидесятилетней давности, как будто бы сейчас заря эпохи UNIX. Однако дизайн Vim позволяет сделать несколько настроек, после которых система станет выглядеть вполне прилично и станет работать весьма эффективно, сочетая в себе полезные черты и древних юниксовых инструментов работы с текстом, и современных WYSIWIG-процессоров, при этом обходя, насколько это возможно, присущие им недостатки. Вот об этих настройках и приемах их использования и пойдет речь.
Читать дальше →
Total votes 141: ↑128 and ↓13+115
Comments67

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity