Как стать автором
Обновить

Комментарии 30

>Очень неэффективно, криво, жутко, но то будет работать.
Пардон, а зачем? В смысле, ну ладно, вам захотелось попробовать, что можно сделать из простой швейной машинки Зингера (с). Ну это еще можно понять. Но практически-то, для чего? У вас что, bash есть, а скажем python нет? Давно уже можно подобрать инструмент, чтобы решить подобную задачу эффективно и в тоже время просто. Да и не один.

>пока не имея вагона знаний
Дело в этом?
Да, дело именно в этом.
Пройдёт месяц, и я тоже, как и остальные люди, буду знать Python на достаточном уровне, дабы решить эту задачу. Но пока не успел.
Я бы наверное лучше начинал бы с python — ну или с любого другого языка, более подходящего к задаче. Но тот факт, что вы понимаете недостатки подхода — он отрадный )

Скажу с высоты личного опыта, как человека, въехавшего в программирование с задачи "сконвертировать словарную базу из одного формата в другой". Тоже с bash начинал. И ничего, переписал на питон, выучился на программиста (но это уже совсем другая история). Брат жив, зависимости нет.

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

Насчет не самого лаконичного — с этого места ${$(echo поподробней)##*/}, пожалуйста. Все мои личные проблемы с башем заканчиваются на избыточной лаконичности и черной магии закорючек, которые даже не прогуглишь (да и вообще не найдешь, если не знаешь, где искать или как называется).

А что тут поподробнее? Реальный пример выглядит как-то так — берем исходный скрипт на баше, размером строк в 600. Занимается он вполне типичным для баша делом — запускает некоторую программу, подготавливая для нее скажем параметры. После переписывания на любой язык по выбору получается примерно 300 строк. Или те же 600 — но при этом функциональность расширяется тоже в разы.

Почему? Ну например потому, что как только начинается, условно, REST, разбор и генерация JSON, и т.п. — так возможности баш заканчиваются, и начинается использование утилит типа curl или jq. Стыковка между основным кодом на баше и ними всеми — т.е. мусорный по сути код — это и есть накладные расходы данной технологии. А REST — это еще далеко не все, что бывает в дебрях кровавого энтерпрайза. Я вполне делал скрипты, которые одновременно лазали в базу данных, REST, JMX, и еще куда-нибудь.
Очень неэффективно, криво, жутко

У вас есть прикладная задача и инструмент, позволяющий эту задачу решить. Какая разница как там внутри все реализовано, пока инструмент решает задачу и не требует безумных вложений для его поддержки?
Конечно, если вы завтра захотите его продавать под видом инновационного интеллектуального ассистента для написания стихов, работающего на базе нейронной сети с глубоким обучением и хранением данных в распределенном реестре с использованием смарт контрактов, то да тут без питона или в крайнем случае js никуда.
А пока замечательный результат, доказывающий что у вас отличное инженерное мышление.
В некоторых случаях это может быть единственный, т.к. не всегда бывает возможность поднять питон, но везде есть баш. Да и я уверен 99% продуктов держатся на куче таких костылей. Без этого никуда.
Без этого, безусловно, никуда, однако стремиться нужно к лучшему — к здоровой жизни без костылей.
т.к. не всегда бывает возможность поднять питон
если задача требует конкретного инструмента, возможность должна найтись, иначе можно вообще все свести к счету на пальцах.

Может, расскажите, что за сайт для подбора рифм? Прям интересно стало.

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

«розы — морозы» и «шина — машина» совпадают по 4 последние буквы, а не по две.
Дак это остаётся квадратной рифмой или нет? Или определение у квадратной рифмы другое?

Достаточное условие квадратной рифмы: у слов совпадают две последние буквы. Вообще, квадратной рифмой называют рифму, когда у слов совпадают окончания. Из последнего следует, что совпадает ли одна последняя, совпадают ли 4 буквы — всё квадраты.

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

Я как-то не представлял себе рифмы без совпадения последних букв. Стихотворения, классиков, которые я сходу могу припомнить в 99% случаев используют если не глагольные, так уж точно квадратные рифмы!

Нет, безусловно, я погуглил посмотрел, что есть кроме квадратных рифм — прикольно, но… А можно пару примеров самых, так сказать, интересных подборок рифм — не глагольных и не квадратных? Ну просто что бы понимать как оно в объеме/масштабе… ;) Можно в личку, если оффтоп.
Да, у классиков все рифмы такие, но на то они и классики. Никто никогда не будет их за это осуждать — ими лишь восхищаться. Их стихи в первую очередь наполнены смыслом, а уж потом красивым и необычным звучанием из уст. Жаль только, что в современности отдают предпочтение последнему, иногда задвигая смысл куда подальше — это печально.
Примеры:
Пицца — напиться
Жил — был (несмотря на то, что глагольная — плохого ничего нет, т.к. окончания разные)
Здесь — есть
Пролетали — виртуален
И т.п.
Может показаться, что эти рифмы не блистают в одиночку — возможно, однако это исправляется путём зарифмовки двух последних слов в строке, что звучит уже очень даже.
Можно также сделать зарифмовку одного слова на два, путём разделения первого слова на две части. Приведу пример из своего стиха (не судите по одной строфе, просто пример):
Шла скучная история
Ты опоздала — три минуты
Осень, а вскоре и я,
Пришли здесь всё запутать
Вот пример неквадратной рифмы (2 и 4 строчки) и разбиения, рифмуются: скучная история — а вскоре и я.
Интересно больше — пишите, скину в личку.

Здорово! Не, я не любитель поэзии, поэтому мне пока достаточно, но концептуально — это очень интересно! Я еще погуглил (вся эта тема меня привела на сайт про рэп-балты) — был удивлен: я человек далекий от этой субкультуры и даже не представлял, что там все так непросто «технически».

Мне почему-то сразу пришла идея сделать через curl… Это же простой POST-запрос, полюбому

у меня сразу возникла мысль открыть консоль браузера и все самое интересное простым document.querySelectorAll выдернуть и тут же на месте запроцессить

У каждого наготове свой собственный микроскоп для забивания гвоздей и шурупов :D

Само собой)
Но автору нужно именно Bash-скрипт.

Из Баша запустить Selenium? :D

Уже в репе со скриптом увидел что там делется запрос на список рифм к конкретному слову, типа www.rhyme.ru/слово. С консоли конечно fetch'ить не так приятно. Хотя можно помикроскопить document.write на запрос :D

А можете ли, ради интереса, полный листинг кода выложить, например, на гитхаб? Было бы интересно взглянуть на всё это целиком и полностью.
Публикация хорошая, прям вызвала добрые воспоминания — пока читал прямо вспомнил и свой опыт написания «Корзины» в университете, пока проходили bash.
Благодарю!

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

Огромный #respect автору за доведение дела до конца, и публикацию. Давненько такой огненной развлекательной статьи не читал. Вспомнил свою программистскую зеленую молодость, прослезился. Жизненно.

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


Для них написание кода — не самоцель. Паттерны, покрытие тестами, CI/CD их не волнуют. Эти штуки все для самих же программистов и их менеджеров. Они не решают конечную цель или хотелки клиента/потребителя; по крайней мере не так явно и непосредственно, как хотелось бы.


Человек поставил себе задачу — и успешно решил её. "Чего тебе это стОило?" "Всего."

Благодарю за поддержку.
Просто всего я на изучение Bash и написание скрипта потратил четыре дня (по 2-3 часа в день), до этого имея знание лишь Turbo Pascal и самых общих представлений о работе сети. Так что о Curl, Selenium, какого-то там document.write, REST в принципе не знаю ничего. Буду изучать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации