Валідація JSON з командного рядка Linux

Внаслідок синтаксичної простоти і гнучкості, JSON (JavaScript Object Notation, Об'єктна Нотація JavaScript став стандартом де-факто, використовуваним для обміну даними в багатьох веб-додатках. У зв'язку з тим, що JSON широко використовується для представлення структурованих даних з високим ступенем гнучкості, виникає необхідність мати можливість «валідувати» JSON-подання.

Таким чином з'явилася так звана схема JSON (зараз 4-я версія чернетки IETF), яка визначає структуру даних JSON в декларативному форматі, так само, як схема бази даних визначає логічну структуру і взаємовідносини записів бази даних. Сама схема JSON записана в JSON. Схема JSON може бути досить корисна не тільки для генерації правильно форматованих даних JSON, але також для перевірки коректності структури даних JSON.



Це керівництво торкнеться два аспекти валідації JSON з дотриманням схеми JSON. По-перше, ви можете валідувати дані JSON за схемою JSON, тобто, перевіряти, щоб дані JSON відповідали специфікації зі схеми JSON. Інший аспект валідації — це валідація схеми, коли ви перевіряєте, щоб сама схема JSON була правильно оформлена відповідно з Інтернет-чернеткою схеми JSON. В обох випадках я покажу вам, як зробити необхідну валідацію з командного рядка Linux.

Читати далі →

Як розпарсити JSON-рядок в командної рядку Linux


Якщо ви часто працюєте з текстами формату JSON з командного рядка або у шелл-скриптах, ви можете задатися питанням, чи є якась консольна утиліта, яка може розпарсити JSON-рядок. Консольний JSON-парсер може бути корисним, коли ви тестуєте або отлаживаете мережеві JSON-сервіси. Ви можете згодувати відповіді формату JSON від веб-сервісу консольному JSON-парсеру, тим самим легко вивчаючи важкочитаємі JSON-відповіді або витягуючи з них окремі об'єкти.

У цьому посібнику я покажу розпарсити JSON-рядок з командного рядка.

Читати далі →

Створюємо REST-сервіс на Rust. Частина 3: оновлюємо базу з консолі

Всім привіт!

попередній частині ми розібрали конфігураційний файл бази даних, щоб рахувати з нього параметри з'єднання.

Тепер давайте реалізуємо безпосередньо операції оновлення БД: створення, оновлення, видалення наших записів і відповідний їм інтерфейс командного рядка.


Читати далі →

Взаємодія з командним рядком perl 6 з функції MAIN

В Unix-середовищі безліч скриптів отримують аргументи командного рядка. В Perl 6 обробляти їх дуже просто:

$ cat add.pl

sub MAIN($x, $y) {
say $x + $y
}

$ perl6 add.pl 3 4
7
$ perl6 add.pl too many arguments
Usage:
add.pl x y


Просто створивши функцію MAIN і задавши їй сигнатуру з параметрів, ви автоматично отримуєте аналізатор командного рядка, який передає їх аргументи функції $x, $y, і повідомлення про правильному виклику скрипта.

Читати далі →

Використання npm для глобальної установки додатків, наділених GUI і заснованих на nw.js

Команда «npm install у менеджері пакетів npm найчастіше вживається локальної встановлення залежностей певного модуля, укладеної в його підкаталозі «/node_modules».

Однак можливий і запуск цієї команди з ключем «g (від слóва «global»). Він забезпечує встановлення зазначеного їй пакету в деякий глобальне (тобто загальне для всієї системи) місце. Крім того, в PATH (для подальшого запуску з будь-якого бажаного каталогу) виявляється прописанною та команда, яка була вказана властивості «"bin" у файлі package.json у пакет.

Таким загальним місцем, згідно документації, під Windows служить підкаталог «/node_modules» в каталозі установки Node. В інших системах таким загальним місцем найчастіше виявляється каталог «/usr/local/lib/node_modules» (тоді як Node там встановлюється в каталог «/usr/local/bin»).

Звичайно цей підхід вживається для глобальної установки різних утиліт, призначених для вживання з командного рядка. Ось деякі приклади:

  • Команда npm install jshint-g забезпечує появу в PATH команди «jshint», служить для запуску JSHint.
  • Команда npm install browserify-g забезпечує появу в PATH команди «browserify», служить для запуску Browserify.
  • Команда npm install less-g забезпечує появу в PATH команди «lessc», служить для запуску Less.js.
Однак на CLI (на командному рядку) світ клином не зійшовся — і читачам Хабрахабра має вже цілком бути відомо, що програма на мові JavaScript, употребляющее API Node.js, можна забезпечити і GUI (графічний інтерфейс користувача), сочиненным на мовах HTML і CSS. Для цього доведеться і запускати такий додаток замість Node на те движку, який до минулого року називався node-webkit, а в нинішньому (2015) році виявився 14 січня перейменованим nw.js.

Ваші GUI-програми також можуть бути глобально встановлені в системі з npm-пакета за допомогою npm. Давайте поговоримо про це.


Читати далі →

Zsh: fucky new year

Прочитав пост habrahabr.ru/post/247161/ і подумав: ось чоловік написав незрозумілу програму на bash, яка виводить «Happy new year». Але це ж bash! Треба показати, що zsh не гірше, а навіть набагато краще! І так, програма на zsh, виводить «З новим роком!» (по-русски!) з наступними обмеженнями:
  1. Програма не повинна використовувати ніякі сторонні програми. Ні base64, ні cat, нічого.
  2. Програма повинна виводити текст по-російськи.
  3. Програма бути написана ASCII, але не повинна містити ні однієї букви або цифри.

Читати далі →

Fucky new year!

Вибачте за мат в заголовку, це натяк на розвагу, початок якому дав мову «Брейнфак» — написати на якій-небудь мові код, який виконує щось розумне, не використовуючи букв і цифр. Ми вже бачили JSFuck, PHPFuck, тепер я вам хочу представити Bashfuck:

__=${_##*/};____=<(:);___=${__#???};_____=$((${#___}<<${#___}))
__=${__::-${#___}}${____:$_____:${#___}}
__=$__$((${#__}|$_____))$((${#__}));___=$___${__:${#___}:${#___}};____=$($__<<<$_____|$__)
_____=${____:$((${#__}-${#___})):${#?}};___=$___$_____$_____;____=$($__<<<$____|$__|$__)
___=$___${____:$((${#?}+${#__})):${#?}};___=$___' '${____:$((${#___}+${#___})):${#?}}
___=$___${__:$((${#____}/${#___}-${#?})):${#?}};___=$___${____:$((${#____}#$_____-${#___})):${#?}}
___=$___\ ${____:$((${#__}+${#?})):${#?}}${__:$((${#__}>>${#?})):${#?}}${__:${#_____}:${#?}}
___=$___${____:$((${#___}-${#?}-${#?})):${#?}};___=${___,,}
____=${____:$((${#___}+${#__}-${#?})):$((${#?}+${#?}))}
____=${____::${#?}}${__:${#_____}:${#?}}${____:${#?}};${____,,}<<<${___^}

Для запуску потрібно «Баш» четвертою версії. Нічого шкідливого скрипт не робить сміливо запускайте з-під «рута», просто виведе напис «Happy new year».

Читати далі →

Отримуємо інформацію про програму та завантажуємо її через CMD (man і apt-get для Windows?)

image

У даній статті мова піде про дуже простий і зручний спосіб для отримання даних (інформації) про програмне забезпечення і завантаження/установки через CMD. Для реалізації було використано відкритий API Xetcom.Export і Wget1. На жаль, API толком не документований, але, з іншого боку, досить простий — можна зрозуміти суть після декількох тестових запитів. Сама збірка складається з трьох незалежних один від одного .BAT файлів пакету Wget. Озброїтеся правами адміністратора і вперед.

Читати далі →

Windows 10: нові можливості та функції в командному рядку

Microsoft недавно представили попередню версію Windows 10 для розробників (т. зв. Technical Preview), і багато сайтів вже встигли як слід висвітлити важливі зміни в порівнянні з попередньою версією. Але мало хто звернув увагу на більш дрібні зміни, як, наприклад, в командному рядку (і в вузлі консолі, що лежить в її основі). Їх розбір представлений у статті Рафаеля Рівери, переклад якої і наводиться нижче.



Читати далі →

bcat: перегляд виводу консольних програм в браузері

  З подивом виявив, що ніхто на Хабрахабр не писав про bcat . Це маленька зручна утиліта для перегляду виведення консольних програм в браузері. У вас є скрипт, який повертає HTML? Bcat! Потрібен простий передперегляд для README-файлу з Markdown-форматуванням, який ви тільки що дописали? Bcat! Пишете парсер веб-сайту, і хочете подивитися, що за помилку повертає сайт? Bcat! Є великий лог, і ви хочете, щоб він відобразився чорним по білому, і його було зручно читати? Ну, ви зрозуміли, так? :)
 
Програма працює на Linux, Mac OS X і FreeBSD (і, теоретично, на будь UNIX-подібної платформі з інтеграцією freedesktop.org).
 
Для установки bcat можна скористатися gem:
 
 
gem install bcat

Разом з bcat встановлюється rack (якщо, звичайно, він не був вже встановлений до цього).
 
Для перевірки можна спробувати відкрити календар на 2014 рік:
 
 
python -c "import calendar ; print calendar.HTMLCalendar().formatyear(2014)" | bcat

Якщо в браузері відкрилася нова вкладка, і в ній відобразився календар — значить, все працює правильно.
 
Читати далі →