image
Мой первый персональный компьютер на Windows Millenium

Всем привет. Меня зовут Максим Дзюбак. Я начинающий программист. В этой
статье хочу поделиться своим первым опытом принятого коммита в
open source.

Предыстория


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

Какая профессия может ещё сравниться с этим?

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

Даже дорога в тысячу ли начинается с первого шага.

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

Компьютер появился у меня в 5 классе школы. Я застал эпоху windows 98 и millenium. Как и большинство сверстников в то время, просиживал целыми днями за игрой в компьютерные игры: quake, counter-strike 1.6, half-life, serious sam, need for speed, gta, fifa, diablo и многие другие. Приходилось и windows переустанавливать из-за того, что удалял пару системных файликов в папочке program files, или потому, что скачивал какую-то игру/программулину с вирусом. Разбираться в чём причина было долго и непонятно. Проще и легче всего было просто переустановить «винду».

На втором курсе универа, в 2011-2012 годах, к нам в группу добавились новенькие. Одного из них звали Лёшей. Он оказался программистом-самоучкой.

Для нашей группы он написал сайт с нуля, чтобы удобно было следить за расписанием и обсуждать кто какую домашку сделал. Лёша говорил, что ничего сложного в программировании нет, и что вообще может бесплатно этому делу научить. Мы с другом учились вместе в одной группе и решили воспользоваться предложением. Лёха приезжал к нам на квартиру и на
примере своего сайтика объяснял html, css, javascript. Нас хватило на 2-3 таких урока. У меня в голове был футбик, у друга музыка. На этом наше программирование и закончилось, так, фактически, и не начавшись.

В 2017 году я увидел рекламу онлайн-курсов, которая обещала за несколько месяцев сделать из меня настоящего программиста с кучей денег. Я загорелся. Решил пойти попробовать вариант оплаты ⅓ курса. Это 3 месяца обучения. Платить сразу за год денег не было. После 3 месяцев я подумал, что уже ого-го какой прогер и пора в бой.

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

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

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

Я пошёл по стези: Вёрстка — Фронтенд — Бэкенд.

Что-то получалось, но местами не получалось ничего. Хотелось всё бросить.

Vim


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

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

Karabiner


С windows я перешёл на macOS, которая мне очень полюбилась. В желании сделать себе vim везде, я начал с браузера и установил плагин vimium в Google Chrome. Но мне было этого мало и хотелось управлять всей системой с клавиатуры без использования мыши или трекпада. Тут совпало всё так, что либо звёзды сошлись, либо просто госпожа случайность — у меня ломается мышь. Попытки найти подходящую к успеху не приводят, а выход из браузера и редактора vim доставляет уже страдания. Очень хочется полного контроля клавиатурой всего. Я перехожу на трекпад, который почему-то не очень использовал до этого то ли из-за привычки, то ли из-за лени. С трекпадом жизнь становиться веселее, но это по-прежнему не то, что я хотел.

В это время, благодаря, @grigoryvp, я узнаю о такой чудесной програмке — Karabiner.

Karabiner — это полный контроль за вашей клавиатурой на «Маке». Можно настроить всё под себя или пользоваться готовыми реализациями других пользователей.

Идея не отрывать руки от клавиатуры была реализована в одном из конфигов, который я нашёл в каталоге karabiner.

Описание конфига выглядит так:

image
Config Karabiner Mouse keys (full) (rev4)

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

В чем суть?

  • По нажатию на правый command (это не тоже самое что левый) + кнопки M — включался режим управления мышью.
  • Ею можно управлять с зажатым правым command + кнопками hjkl, которые в мире vim означают стрелки.
  • Двойное нажатие левой кнопки мыши (или трекпада) — кнопка V.
  • Правая кнопка мыши (или трекпада) — кнопка R.
  • Скролл в разные стороны происходит с зажатой кнопкой S + кнопками hjkl c зажатым правым command.
  • Так как попасть в мелкие элементы не всегда получается, есть режим slow, при котором курсор замедляется — активируется с зажатой кнопкой D.
  • Если нужно быстро переместить курсор от одного конца экрана к другому, то есть режим fast — активируется с зажатой кнопкой F.

Когда я попробовал эту штуку, то я сразу сказал, вот оно, это то, что я хотел. Я начал тестировать и мне это очень нравилось. Однако практически сразу я понял, что хочу изменить: мне не хочется нажимать дополнительную клавишу M, чтобы начать управлять курсором. Хочу просто зажать правый комманд и клавишами hjkl начать управлять мышью. Начал искать подобный конфиг, но не нашёл его. Я почесал репу. Потупил. И наконец, вспомнил, что я же всё таки начинающий программист, а значит, могу под себя настроить существующий конфиг, раз пока с нуля не могу написать.

В директории .config/karabiner нахожу файлик с настройками карабинера в формате json. В этом файлике нахожу конфиг эмуляции мыши кнопками. На всякий случай делаю копию конфига карабинера и приступаю к своей заветной цели.

На деле всё оказалось гораздо проще, чем я себе представлял. Я посмотрел как устроена структура файла, нашёл место, где находится мной нелюбимый режим mode с включением по кнопке M.

image
Config Karabiner with Mode M

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

Было:

image

Стало:

image

После этого произошла эврика! Заработало!

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

Прошло несколько дней после моего триумфа. В графическом интерфейсе karabiner сomplex modifications я изменял и добавлял конфиги, и по случайности удалил эмуляцию мыши на клавиатуре. После её включения я обнаружил, что там опять предыдущая конфигурация с mode режимом и кнопкой M. Я опять всё поменял, но приуныл, потому что хотел, чтобы была моя конфигурация даже после удаления. Плюс может быть кто-то тоже захочет её использовать в своей работе.

Pull Request


Тут я понял, что хочу добавить свою конфигурацию эмуляции мыши на клавиатуре в каталог complex modifications karabiner, чтобы она появилась в отображении на сайте, и я смог её добавить к себе. На сайте karabiner нашёл github с нужным конфигом. Посмотрел предыдущие коммиты и их оформление. Посмотрел как оформляют описание конфигурации на сайте с помощью html и css, знания которых так пригодились мне в этот момент.

Оформил свой коммит и сделал pull request.

Жду.

Про себя думаю: «вот круто будет, если примут мой коммит».

На следующий день его принимают.

image
my first complete pull request

Ура! Приняли и следующий коммит, которым я сделал более наглядное оформление своей конфигурации на сайте. Двойное ура! :)

image
my second complete pull request

В завершении


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

В этом принятом коммите мне, конечно, помогли все предыдущие знания по html, css и javascript, которые я учил до этого. Но также это мотивирует изучать новое, чтобы потом применять эти знания ещё и ещё раз.

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

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

Только добра!

Комментарии (10)


  1. domix32
    14.07.2023 09:25
    +11

    Ждал драмы, плот твистов и борьбы за право влиться, а тут "я сделал PR и уже завтра его приняли".


    1. maxdzyubak Автор
      14.07.2023 09:25
      +2

      Этот приняли, а много других нет)


  1. dlinyj
    14.07.2023 09:25
    +6

    На самом деле, это очень приятно, когда принимают твой коммит. Ты понимаешь что делаешь маленький вклад в большой проект, и это очень круто. Владельца компании Aurelitec так впечатлило, что я сделал MR в его старенький проект, что он даже сделал отдельную публикацию по этому поводу.



    Спасибо за мотивационные посты!


    1. maxdzyubak Автор
      14.07.2023 09:25
      +1

      благодарю, Сергей!) Когда делаешь маленький вклад в большое дело это всегда приятно)


    1. bodyawm
      14.07.2023 09:25
      +4

      Недавно форумчанин с 4пда форкнул мой лаунчер, который я написал специально для кнопочных телефонов на Android и буквально позавчера прислал пулл реквест с улучшениями. Как мейнтейнеру очень приятно видеть, что кому-то не все равно :)


      1. maxdzyubak Автор
        14.07.2023 09:25

        круто)


  1. MountainGoat
    14.07.2023 09:25
    +1

    Там на экране фото? Тогда это фотография фотографии фотографии.


    1. maxdzyubak Автор
      14.07.2023 09:25

      Фото. Получается, что так)


  1. AHgPeKa
    14.07.2023 09:25
    -7

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


    1. maxdzyubak Автор
      14.07.2023 09:25
      +3

      а говорят те, кто смотрят тиктоки или кто?)