Рубрики
Программирование Разное

Вайбкодинг: плагин для Obsidian

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

Например, я давно хотел попробовать сделать расширение для браузера. Но то недоставало желания сесть и разобраться в тонкостях создания и особенностях JavaScript’та, то не было достаточно времени. Статьи и полезные материалы по теме регулярно добавлялись в закладки и прочие списки, а руки так и не доходили.

А потом возникла необходимость, я сел и подумал, а почему бы не завайбкодить? Все так делают, чем я хуже? И спустя час я уже пользовался расширением. Не вникая в детали, так и не разобравшись в итоге с JavaScript, я вместе с Gemini сделал реально работающую и полезную вещь. Очевидно, что там костыли на костылях и все в таком духе. Но лично мне ехать, а не шашечки.

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

Тут важно отметить, что это не бездумный процесс типа — написал промпт, копи/пасте и случилось чудо. Конечно же, я вполне представляю себе как работают и подключаются расширения в браузере, что такое json и как работает всплывающее окно с настройками и почему оно в html, да и код JS, в конце-концов, я тоже вполне могу прочитать и даже заметить явные косяки или попробовать его отладить через средства самого браузера. То есть ИИ выступает не в роли волшебного черного ящика с прекрасной кнопкой «Сделай мне хорошо», а в роли удобного и быстрого инструмента. Хотя может и сделать хорошо. Даже если человек не очень опытный, но умеет задавать вопросы и читать ответы, то вполне сможет по инструкциям от ИИ сделать очень многое.

На мой взгляд, мы сейчас находимся в моменте очередной смены парадигмы в программировании. Так, когда-то писали код на языках низкого уровня, на ассемблерах, отдельно под каждую архитектуру. Затем стали появляться языки высокого уровня. Все выше и выше, все больше абстракций. Они были все проще и программисту не уже не нужно было разбираться как устроен компьютер на низком уровне, не было необходимости напрямую работать с памятью, регистрами или отдельными устройствами. Он мог просто писать код и код работал. Да, знаток асма сможет написать более оптимальный код. Он имеет больше возможностей из-за доступа к машине напрямую. Но процесс написания им кода очень медленный. И уже в моменте появления и развития языков программирования высокого уровня появились мнения представителей старой школы о том, что высокоуровневое программирование это баловство. Но в итоге скорость и простота разработки победили необходимость работать напрямую с железом. Да, асм все еще нужен, иногда используется и его знатоки ценятся. Но в большинстве случаев хватает языков программирования высокого уровня и программистов способных быстро написать работающий код на Python, не понимая как обратиться напрямую к памяти.

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

Это очередной этап развития программирования. И это очень круто, на мой взгляд. С какой стороны не посмотри. Каждый раз, когда появлялась возможность упростить себе жизни, сделать более доступными какие-то сложные вещи, люди радовались. Когда-то Delphi показал, что интерфейс программы можно делать легко и быстро, буквально накидывая на форму компоненты. WYSIWYG-редакторы избавили от необходимости вникать в детали оформления. Конструкторы сайтов позволили их создавать самому обычному человеку. Все эти инструменты снижали уровень входа. Давали возможность что-то создавать людям, которые могли творить не обращая внимания не некоторые технические преграды. Сейчас у нас появился еще один инструмент. Который помогает, но не заменяет, как не заменили все упомянутые выше инструменты.

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

Всегда хотел вести подсчет количества набираемого текста. Вот люблю я циферки и разные подсчеты. Есть, конечно, готовые плагины. Но вот такой вот я, хочу все сделать сам. Да и просто интересно, а как оно там работает? Поэтому взял и сделал, вместе с Gemini, разумеется. Хотя там ничего сложного-то и не было, кроме кода в TypeScript, с которым я ранее никогда не работал. Но по факту это считай тот же JS, так что…

В общем пара-тройка промптов, компиляция:

И плагин готов, подключен и работает:

Эту статью, как и все прочие уже давно, пишу тоже в Обсидиане. В процессе еще и скриншоты делаю:

Но это в процессе, под конец вышло больше тысячи слов. Не очень и много. Хотя изначально планировал написать пару абзацев. А потом меня куда-то понесло.

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

Рубрики
IT - разное Литература Обучение Программирование Разное

Тайный язык кода, Паскаль и Столяров: мой путь в программировании

Начинающие свой путь в сфере IT могут быть шокированы открывающимися перед ними горизонтами возможностей и объемами информации. Множество направлений, бесконечное число книг и онлайн-курсов. С чего начать? На что обратить внимание и к чему обратиться в первую очередь, а что изучать далее? Вопросов много и вот эта непонятность может стать причиной ступора. Или завести в ложном направлении, что в итоге может послужить причиной того, что человек просто бросит, так толком и не начав изучение. Решив, что это слишком сложно и лучше заняться чем-то другим. Кстати, если человек все же бросит, вероятно, это действительно не его. Программирование, как яркий представитель мира IT, на мой взгляд, с одной стороны доступно каждому, а с другой требует если и не особого склада ума, то как минимум особого отношения к тому, что изучаешь и делаешь. И вот без этого реально тут будет сложно. Но такое отношение можно выработать, оно не дается с рождения.

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

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

TL;DR: Список книг из статьи
  • Петцольд Ч. «Код. Тайный язык информатики» — как всё устроено на уровне битов и логических схем;
  • Деревенец О. «Песни о Паскале» — хорошая «грунтовка» для понимания основ программирования. Но очень на любителя, Паскаль, все дела;
  • Столяров А. «Программирование. Введение в профессию» — глубокий системный учебник по программированию в целом;
  • Брукшир Г. «Компьютерные науки. Базовый курс» — академический, но доступный, обзор компьютерных наук.
Рубрики
Программирование Разное

Вайбкодинг для ленивых: читаем видео на YouTube

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

Что ж. Настал тот день и час, когда обстоятельства и звезды сложились должным образом. За полчаса я сделал работающее полезное расширение для браузера. Эта немного ироничная статья о том, как я ко всему этому пришел, что и как делал и что в итоге получилось.

Идея

Был обычный вечер. Я лениво общался в Дискорде, параллельно листая ленту Хабра. Увидел очередную статью про вайбкодинг. Как и много раз прежде задумался о том, что уже давно хотел попробовать создать расширение для браузера. Но руки никак не доходили. Да и не было подходящей идеи, которую бы хотелось реализовать. А без интереса делать что-то скучно.

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

И тут что-то во мне щелкнуло. Есть же волшебная кнопка «Показать текст видео»! Дело в том, что читаю я очень быстро и очень хорошо воспринимаю именно текст. К тому же, читая можно приостановиться на сложных моментах, перечитать, или вернуться к предыдущей части, перескочить через фрагмент, если видно, что он пустой. В общем, с текстом работать можно намного быстрее и удобнее, чем возиться с видео.

Но есть минус. Текст показывается сбоку в небольшом окошке с узкими строками, его приходится долго прокручивать и нельзя просто скопировать (ок, ок, можно, но это все равно лишние телодвижения, особенно если текст длинный, хотя…). В общем, не очень удобно. Вот если бы его можно было взять и скопировать в отдельный документ и спокойно пролистать… Да это же идея для расширения! По идее это не должно быть сложно, тем более у меня даже есть неплохой опыт парсинга веб-страниц.

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

Рубрики
Программирование Разное

День Святого Валентина in code

Прочитал замечательную пятничную статью на Хабре и подумал, а ведь отличная идея, как совместить приятное с полезным. Конечно повторять описанное в оригинальной статье не хотелось, да и проблем с этим нет — языков то много (не так — ОЧЕНЬ много). В общем решил сделать что-то похожее, но используя языки программирования, которые не вошли в статью на Хабре.

Принцип аналогичный. Язык программирования и следом фрагмент кода, который выводит строку «I love you!». Так как самые известные языки уже были использованы в оригинальной статье, пришлось покопаться, выбирая что-то не сильно банальное в плане синтаксиса, и что-то осмысленное в плане названий. Ну и ограничится десятком примеров, чтобы не раздувать кодом статью до безобразия. Ну что, поехали?

Рубрики
Python Программирование

Python, FoxDot и музыка

Дело было вечером, делать было нечего. Листал я хабр, скучал. И наткнулся вот на эту статью:
Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня)

Дело в том, что музыку я пробовал «сочинять» (или – собирать?) на компьютере еще лет 15 назад, с помощью программы Dance eJay 4. С помощью набора семплов там можно было собирать различные мелодии. Ничего особенного, но мне тогда было очень интересно. И вот тут возможность совместить приятное с полезным, python с музыкой. Как же не попробовать 🙂

Итак, приступим к процессу установки, настройки и запуска чуда музыки в питоне под названием FoxDot.

Переходим по ссылке:
https://foxdot.org/installation/