BASH: Как проверить, число или строка в переменной.

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

Команда grep -E -q regexp проверит, соответствует ли переданная grep строка, регулярному выражению regexp
Ключ -E укажет команде grep, что образец есть полное регулярное выражение (см. подробности здесь )
Ключ -q укажет, что в стандартный поток ввода-вывода отправятся соответствующие образцу строки, и если хоть одна из входных строк соответствует образцу, то код завершения команды будет 0, иначе 1.
Для простого примера больше одной строки и не надо.

Осталось составить регулярные выражения для нашего случая:
Целое положительное число: ^?[0-9]+$
Целое положительное, либо отрицательное число: ^-?[0-9]+$

Для примера проверим первый параметр скрипта, задаваемый из командной строки
1. положительные целые числа

#!/bin/bash

if (echo "$1" | grep -E -q "^?[0-9]+$"); then
    echo "Number"
else
    echo "Not Number"
fi

На pastebin

2. положительные и отрицательные целые числа

#!/bin/bash

if (echo "$1" | grep -E -q "^-?[0-9]+$"); then
    echo "Number"
else
    echo "Not Number"
fi

На pastebin

Отображение шорткодов в блоге WordPress, а точнее их синтаксиса, и как вредно не читать мануалы

ДОЧИТАЙТЕ ДО КОНЦА, КАК НЕЗНАНИЕ ИЛИ ПРЕНЕБРЕЖЕНИЕ К МАНУАЛАМ, ЗАСТАВЛЯЕТ ИЗОБРЕТАТЬ ВЕЛОСИПЕДЫ
Столкнулся я с проблемой, а как отобразить в посте не результат работы шорткода, а его вид в редакторе, т.е. его синтаксис. Для шорткодов, в том же самом блоге не используемых — все нормально. Но для тех шорткодов, которые в блоге используешь — возникает понятная проблема. Вставляешь шорткод в блог, и движок на место шорткода вставляет результат функции, его обрабатывающий. А задача стоит отобразить написание шорткода.
Отобразить синтаксис html-тегов проще, достаточно заменить угловые скобки «<» и «>» на эскейп-последовательности html. Для символов «[» и «]», заменяющих «<» и «>» для шорткода, я не нашел эксейп-последовательностей.

Решение: шорткод, для отображения синтаксиса шорткода.

Звучит так же просто, как и делается.
Вставляем следующий php-код куда удобно, хоть в functions.php, хоть в отдельный плагин.
Я сделал отдельный плагин, но можно и в файл функций, код небольшой:

<?php
/**
 * Plugin Name: shortcodes display
 */

function display_shortcode($atts, $content=null)
{			
	$ret=$content;
	return $ret;
}

add_shortcode ('shortcode','display_shortcode');

?>

ВНИМАНИЕ! Переменную $atts нужно добавить обязательно, хотя она фактически не используется, т.к. у данного шорткода параметров нет, но так уж устроен движок WordPress, что без наличия первого параметра не обработается и параметр $content

Как использовать.

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

Результат работы:

И как я оказался дураком, надо иногда читать мануалы

Все делается гораздо проще, код шорткода заключается в дублирующиеся квадратные скобки, например [ljr user="hex_laden"], т.е. сам шорткод надо заключить не в одни скобки «[» и «]», а в дублирующие «[[» и «]]»

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

Плагин, отображающий пользователей ЖЖ/LJR в блоге WordPress в стиле ЖЖ/ЛЖР

Т.е. в виде ссылки с «головастиком», как в тестовом посте

Плюс добавим возможность открывать страницу пользователя ЖЖ/LJR в отдельном окне (вкладке)

Как работает стандартная ссылка на блог в ЖЖ/ЛЖР

При добавлении псевдотега <ljr user="username"> или <lj user="username">, данный псевдотег заменяется на ссылку с дополнительной картинкой-головастиком перед ней, клик по картинке ведет к открытию страницы userinfo пользователя ЖЖ и LJR, а клик по имени пользователя — к открытию главной страницы пользователя блогосервиса. Если вставить в пост на LJR псевдотег <lj user="username">, то к имени пользователя будет добавлена дополнительная строка — username@lj, указывающая, что дневник пользователя находится в Живом Журнале.

Что делает плагин

— обрабатывает шорткоды вида [ljr user="username"] или [lj user="username"],
— вставляет на их место в посте «головастика», пользователя того или иного сервиса, дописывая в конце имени префикс @lj или @ljr, и проставляет все нужные ссылки.
— Если указан параметр blank=1, например [ljr user="hex_laden" blank=1], то ссылки на userinfo (при клике по «головастику») или ссылка на главную страницу блога, откроются в новом окне/вкладке.

Подготовка к созданию плагина.

1. В wp-content/plugins, создаем отдельный каталог lj-ljr-users, в нем подкаталог img, и загружаем туда графические файлы «головастиков» http://lj.rossia.org/img/userinfo.gif и http://lj.rossia.org/img/userinfo-lj.gif
2. Создаем файл lj-ljr-users.php в каталоге wp-content/plugins/lj-ljr-users и вставляем в него нижеследующий код.

Код плагина

Код плагина
Небольшие минусы

— Css встроено сразу в плагин и заточено под тему оформления, которую юзаю я, по-хорошему, надо стилевые настройки из плагина вымести, и чтоб они прописывались в styles.css
— не определяется, пользователь это или сообщество. Но с другой стороны, это чрезмерно бы усложнило код и стабильность, вызвав необходимость обращаться к серверам блогосервисов (и обрабатывать случаи, если сервера «лежат»).
— ну может еще какие мелкие недочеты, кому надо — берите и сами исправляйте.

Скачать.

PHP-код на pastebin
Готовый плагин с mega.nz

Пидронимус лютует

Заглянул в логи — 25 неудачных попыток подобрать пароль и логин к админке.

Смешно, логин, который нигде не отображается, 35+ символьный пароль от админки, и что самое смешное — ежедневный бэкап постов, высылаемый на e-mail (специально для этого заведенный, который никто не знает).
Про отправку бэкапов на мыло сделаю отдельный пост, таких плагинов нет, ЕМНИС, полезно будет.

Отображение пользователей или сообществ livejournal/ljr в стиле ЖЖ/ЛЖР

Правда мы не стали заморачиваться, сообщество это или пользователь, поэтому иконка и для того, и для другого одинакова, например:
Пользователи:
[info]rutopist@lj
[info]tiphareth@ljr
Сообщества:
[info]potsreotizm@lj
[info]durdom@ljr

Наш шорткод имеет замечательную возможность — открывать нужного юзера/сообщество в новой вкладке, например:
[info]ketmar@ljr
[info]veniamin1@lj
[info]cat@ljr
[info]brigada_hella@lj

Отображение опросов из LJR (ЛЖР, «Тифаретник», LJ.ROSSIA.ORG) и, возможно, ЖЖ (livejournal) в блоге WordPress

1. Преамбула

Заметка посвящается тем, кто хочет перенести свой блог из ЖЖ, ЛЖР или другого блогосервиса, работающего на движке ЖЖ (LJ) в блог на WordPress

2. Суть

В ЖЖ и сайтах, работающих на движке ЖЖ существует определенный тип поста — опрос. И переносящие свой блог пользователи сталкиваются с невозможностью стандартными средствами перенести опрос из ЖЖ или (в моем примере LJR) в свой блог на WordPress.

3. Стратегия решения проблемы, плюсы и минусы.

А мы и не будем переносить результаты опроса из (в нашем случае) LJR, а будем отображать сам опрос, беря его с сайта.
+ Результаты опроса будут отображаться онлайн в нашем блоге, так же, как они будут и в блоге LJR
+ Пользователи сайта могут проголосовать в опросе, только зарегистрировавшись на старом сайте. Что плюс, если вы просто хотите сохранить результаты опроса на новом сайте/не хотите суммировать результаты из двух опросов.
— При отображении поста необходима связь с сайтом, если ее не будет или опрос будет удален, то это приведет к возникновению ошибки
— В конкретном примере я использовал довольно старую версию движка ЖЖ, которая применяется на сайте LJ.ROSSIA.ORG, посему вам потребуется подкорректировать код, если вы переносите блог с ЖЖ или другого сайта, работающего на том же движке.

4. Описание алгоритма.

1. Получить ID опроса (пользователь должен задать его вручную)
2. Выделить из страницы опроса его результаты и ссылки на участие в опросе.
3. Встроить эту информацию в пост WordPress и отобразить ее.

5. Тестовый опрос.

Создан здесь: http://lj.rossia.org/users/hex_laden/348192.html
ID: 1307
Страница опроса: http://lj.rossia.org/poll/?id=1307&mode=results

6. Что понадобится

Внешний html-парсер, я использовал этот готовый simple_html_dom.php
7. Готовый код.

Сначала создаем файл с функцией, непосредственно занимающейся парсингом страницы опроса:
Read more…
И создаем главный файл плагина с функцией обработки шорткода, который, будучи вставлен в пост отобразит наш опрос:

Read more…
Для того, чтобы вставить в свой блог на WordPress опрос с LJ.ROSSIA.ORG, останется добавить в пост следующий шорткод:
[ljrpoll id="<poll_id>"]
Где <poll_id> идентификатор опроса, например 1307

Тестовый пост с отображенным опросом здесь:
http://tolik-punkoff.com/2016/07/26/opros-s-lj-rossia-org-otobrazhaemyj-v-wordpress/

Код плагина доступен на PasteBin:
getpoll.php
Основной файл плагина
Или можно скачать архив с плагином с mega.nz
Папку из архива надо поместить в директорию wp-content/plugins вашего сайта, после чего зайти в консоль на страницу плагинов (или обновить ее) и активировать плагин LJR-pollDisplay

Опрос с LJ.ROSSIA.ORG, отображаемый в WordPress


Warning: file_get_contents(): stream does not support seeking in /home/punko102/domains/tolik-punkoff.com/public_html/wp-content/plugins/ljr-poll/simple_html_dom.php on line 75

Warning: file_get_contents(): Failed to seek to position -1 in the stream in /home/punko102/domains/tolik-punkoff.com/public_html/wp-content/plugins/ljr-poll/simple_html_dom.php on line 75

Позже напишу, как я такой финт ушами сделал (ну не совсем я, финны с китайцами, точнее с камбоджийцами даже, я только идею подал и над процессом руками водил, то бишь советовал):
ERROR: CONNECTION ERROR [http://lj.rossia.org/poll/?id=1307&mode=results]

Ящеръ

Просматривая старые записи нашел еще Панкарем опубликованного Ингерманландского Ящера (после разгрома оным Московии, по всей вероятности XD)

Скрипт пакетного переименования файлов

Опять же, с графическим интерфейсом на GTK. Тестировался на Puppy Slacko и на «большой» Slackware 12 версии:



Мопед, опять же, не мой.
Что умеет:
0. Последовательно пронумеровать все файлы в директории.
1. Найти префикс, например вида SCNJ-число, как на цифровых фотоаппаратах, и переименовать во что-то заданное пользователем (например kotik-число).
2. Сохранить переименованные файлы в другом каталоге.
3. Найти некоторую последовательность символов в имени файла и заменить их на другую (если другая последовательность не введена, то найденная последовательность будет удалена из имени файла)
4. Удалять из имени файла специальные символы и пробелы.
5. Заменять пробелы на знак подчеркивания (_).
6. Преобразовывать символы в имени и расширении файла в нижний регистр.
7. Транслителировать имена файлов.

Скрипт на PasteBin
Скачать с mega.nz

Скрипты, делающие скриншоты с видео

С графическим интерфейсом.
Сразу говорю, мопеды не мои, а хороший знакомый кодер к тем скриптам только что интерфейсы и дорисовал. Работает под GTK 3 в любых графических средах, где есть соответствующие библиотеки:
Вариант #1: делает несколько файлов со скриншотами. Вариант #2: делает несколько скриншотов (сколько задано) в одном графическом файле.




Скрипт #1 на PasteBin
Скрипт #2 на PasteBin

Скачать скрипт #1 на MEGA.NZ
Скачать скрипт #2 на MEGA.NZ

Тестовое стихотворение

Шли мы такие шли, и тут, хуяк,
Валяется математический знак <
Ну мы дальше пошли, второй нашли >
Рядом валялись кавычки «и» прочие ‘метки’ #;%^:?*().
Видать, кто-то проебал не =ную *разметку*/!

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/346416.html
Прокомментировать заметку можно по ссылке выше.

А ведь Олесь таки прав во всем

Хотя бы взять человека и котика.
Вы никогда за котенком не убирали?
Стоит такой весь серьезный манагер среднего звена, и вытаскивает специальной лопаточкой из лотка дерьмо, может даже в пиджаке стоит и при галстуке. А котик его за руку хватает. Но самое интересное, что менеджер — тоже котик. Котиков (ну как обычно люди думают) они заводят ради фана, ради игры. А котик всю жизнь игрой воспринимает. Менеджер (который заводит котика) хотя бы осознает, что ему в жизни не хватает игры, он на работу ходит, что бы играть — ну либо с котиком, либо там по клубам дудку дуть или грибы жрать. А вот его начальник, он мразь, вата и крым, потому что котика у него нету, жену он ебет исключительно для «продолжения рода» в строго отведенные дни и в регламентированной позе, а менеджера штрафует за перекуры, например. Начальник совсем не котик. Менеджер котик где-то на 10%, котик, понятно, что котик. Но кто котика завел — он уже не говно.
Хотя на самом деле, это не люди котиков заводят, а котики людей. Но абсолютно честно — ради фана, заодно удаляя компоненту добытия жрат. Все равно как человек, изобретающий какой-нибудь термоядерный генератор, чтоб работать надо было меньше и халявы было больше (хотя бы в виде счетов за электричество и более чистого воздуха).
Все стремятся к котикам, к настоящему коммунизму, без ленина с марксом, капиталом, и государством. К котикам, у которых уже коммунизм.
Самое прикольное, что люди достигнут этого коммунизма (ну если раньше не переубивают друг-дружку) через капитализм, но своеобразный, децентрализованный и одновременно «с человеческим лицом», соединяющий в себе лучшие черты еврокапитализма, США-версии.
Мне так эти этапы видятся:
— децентрализация/регионализм
— либерализация/слом остатков централистско-патриархальной культуры, запретов, гнилых и устаревших «моралей»
— как вариант, либо новый поход для оцивилизовывания всяких диких традиционалов, типа арабов и рашкован и прочих северныхкорей, либо, что более вероятно — огораживание очагов инфекции извне, с возможным пропуском наружу лишь избирательно — не зараженных, а не как сейчас. Не вписавшиеся да, должны быть отправлены к черному булыжнику обмазанные салом в контейнерах, выложенных изнутри свиными шкурами.
Причем этапы не идут один за одним, а скорее будут идти параллельно с разной скоростью

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/346188.html
Прокомментировать заметку можно по ссылке выше.

Про льва, который против и про эксперименты с пидеральными проектами в провинции

Чего-то тут [info]manroe666@ljr, вроде честный, проверенный и украинский, внезапно втопил за проект очередного нашистского быдла, которое делает полупостоновочные видео, доебывается до мирно отдыхающих людей (ну и хуй с ним, что с алкоголем, мирно же сидят), провоцирует драки, а потом по стародавнему нашистскому алгоритму пытается себя еще и жертвами представить.

Самое интересное, что в конце понравился честный мент, начальник какого-то московского отдела, который все правильно сказал — драки провоцируют и деньги зарабатывают.
Первый кандидат на орден «За возврат Крыма Украине». Когда будут такие ордена вручать, после смерти Хуйла, на change.org надо будет петицию за награждение этого мента организовать.
Лев говно, конечно.
Так вот, продолжая тему, в некоторых городах появились последователи (но в описываемом случае был явно тролль или нуб). Панкарь как-то месяц назад примерно рассказал следующую историю. Стоит он в своем городе К. на крыльце магазина и пьет местный разливняк, с крыльца не сойти, ибо дождь и в стакан накапает. К нему подходит какой-то сопляк.
С: Молодой человек, вы знаете, что пить пиво в общественном месте запрещено?
П: А я не обязан соблюдать ваши фашистские законы.
(делает вид, что ставит на сухое место стакан, но на деле вытаскивает из кармана газовый баллончик)
С: [срочно заходит в магазин]
Панкарь дожидается, пока тот выйдет.
Далее такой диалог:
П: А ты че, за фашистов, за этого льва против, за путина, за стопхам
С: Не, я на первом курсе псифака учусь, решил посмотреть, как отреагируют.
П: Ну в К. лучше так не делать. Можно по морде получить. По пиву? У меня брат на псифаке учится.
С: По пиву.
…. Прошло некоторое время ….
П: Слава Украине!
С: ээээ…
П: Ну я тебе ж обьяснил, героям слава отвечать надо!
С: Героям слава!
Занавес.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/345452.html
Прокомментировать заметку можно по ссылке выше.

Выдавил из себя фашиста

Плюс бля еще оказалось, что у меня половина картинок в блоге на фашистских ресурсах — мэйлру и радикале, пришлось переносить на западные, плюс, блин, битые ссылки обнаружились. В общем 1000 с хуем постов проверить и все исправить, это вам не хуй собачий. Хорошо хоть копии постов почти со всеми картинками лежат по папочкам в локале, а яндекс-диск до сих пор не сдох, и все что нужно было скачано и скопировано на правильную антифашистскую mega.nz.
Глаза красные, но фашизм в отдельно взятом блоге побежден.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/344835.html
Прокомментировать заметку можно по ссылке выше.

Не страшно, когда знал и забыл

Страшнее когда особо не знал, да еще и забыл.
Потребовалось тут одному товарищу ответить на вопрос как вращать объект во flash, вспомнил, что когда-то по этому поводу писал мануал:
Вращение объекта Movie Clip вокруг своего центра в Adobe Flash с использованием Actionsript 2.0. И вот жеж бля, в мануале очепятка в формуле, хорошо не в исходнике, но заебался формулу вспоминать, нет же няшного советского справочника по геометрии под рукой.
Исправил все, конечно.
Да и пост посимпатичнее сделал, видео добавил.
Но заебался я, товарищ, так что обещанный видеоурок будет позже. Видео-то уже есть, а вот озвучальник в запое/на даче, хз я через инет не вижу.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/344685.html
Прокомментировать заметку можно по ссылке выше.

Роскомпозор-то, оказывается спит!

И вы подумайте таки где спит! В одном из самых быдловоенных городов ГОРФ, наполненном ржавыми корытами и секретами (Полишинеля) чуть больше чем на 200%, в одном из самых ватных углов сраной. Ватнее только Севастополь.
Я уж думал, что там рабам интернеты отрезали под корень, а гляди-ка, там все на самотек пущено. Это пиздец какой-то, товарищ полковник, прямо-таки открытая госизмена! Смотрите, спишется же анон тут с агентами Госдепа, да продаст за печеньки и апельсинки (наколотые), все места, где корыта затонувшие засекреченные плавают на дне лежат ремонтируются.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/343848.html
Прокомментировать заметку можно по ссылке выше.

Про «работу», из комментов

«Не зарабатываешь — значит бомж или иждивенец.», написал анон
Нет, бомж или иждивенец как раз РАБОТАЕТ. И РАБОТАТЬ бомжом или иждивенцем гораздо сложнее, чем скажем, золотарем или могильщиком. Работа нищего, бомжа, тербует умений, знаний и навыков, больших, чем у самого пиздатого выживальщика или полярника-героя. Полярник рано или поздно уедет с полюса, а выживальщика, даже реально практикующего, заберет с острова лодка. А вот бомжа НИКТО не заберет, его полярная смена закончится только СМЕРТЬЮ, он уже и прямо тут, онлайн 24 часа на полюсе, в аду, в космосе.
Иждивенец — великий психолог, эта работа сложнее, чем у самого охуенного психолога и при этом программиста, причем на квантовых компьютерах. Иждивенец — это и есть программист на квантовых компьютерах, он прямо сейчас на них программирует, причем, любая ошибка это пиздец. Из бекапа не восстановишься, программа вылетит, и иждивенцу придется либо сдохнуть, либо стать бомжом, либо найти новый квантовый компьютер. Иждивенец — это хакер высшего пилотажа, хакер, какой даже не снился ни единому «цифровому» хакеру. Нео существуют, но мы их даже не замечаем.
Плюс БОМЖ и иждивенец еще реально РАБОТАЮТ на эту жизнь, поддерживают этот круговорот сансары, как и например наркоман, вор, убийца.
Их ставят в пример, точнее в антипример маленьким детям: не будешь хорошо учиться, кококо, не будешь слушаться маму, кококо, будешь курить траву/отращивать волосы/радоваться/развлекаться, спорить с учителями, станешь бомжом/наркоманом/вором/убийцей/иждивенцем.
Я вот подумал, те, кто выступает против легалайза, безусловного дохода — они за бомжей, наркоманов, преступников. За статус ква, за весь этот ебаный колесо-мир, за всю эту белку в колесе.
Наркоман может наплодить тысячу наркоманов физически, но будучи поставленным маленьким детям в пример, он наплодит 100 000, 100 000 000 офисных работников, психологов, петухов, и погубит этим 500 000 изобретателей, художников, визионеров.
В этом и есть главная, гностическая работа нищего/наркомана/бомжа/иждивенца. Они крутят ад. В аду они уже, и крутят его. А этот самый Сатана из книжек им выдавал бы молоко за вредность.
И кстати, они (БОМЖ, иждивенец), не только работают, но и зарабатывают, зарабатывают себе жизнь.
Такие дела.

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/343067.html
Прокомментировать заметку можно по ссылке выше.