jl-sql: працюємо з JSON-логами в командному рядку за допомогою SQL

Вступ нікому не цікаво, тому почну відразу з прикладів використання
json-pipe-sql
% cat log.json

{"type": "hit", "client": {"ip": "127.1.2.3"}}
{"type": "hit", "client": {"ip": "127.2.3.4"}}
{"type": "hit", "client": {"ip": "127.3.4.5"}}
{"type": "hit", "client": {"ip": "127.3.4.5"}}
{"type": "hit", "client": {"ip": "127.1.2.3"}}
{"type": "click", "client": {"ip": "127.1.2.3"}}
{"type": "click", "client": {"ip": "127.2.3.4"}}

Виконуємо запит:
% cat log.json | jl-sql 'SELECT client.ip, COUNT(*) AS count WHERE type = "hit" GROUP BY client.ip'

{"client":{"ip":"127.1.2.3"},"count":2}
{"client":{"ip":"127.2.3.4"},"count":1}
{"client":{"ip":"127.3.4.5"},"count":2}

Читати далі →

ruby -run

Це копіпаст з невеликими правками з мого блогу, який я використовую для збереження інформації, потенційно корисної для мене, але яку зазвичай забуваю. Порахував, що інфа може здатися комусь цікавою.
Intro
Відносно недавно шукав спосіб в одну сходинку запустити веб-сервер в поточній директорії.
На теренах Stack Overflow знайшов приблизно таку команду:
ruby -run -e httpd -- -p 9090 [DIR]

Що ж це за загадкова опція
run
і чому її немає в мануалі?

Читати далі →

І знову автоматизація: Python «доповзла» до маршрутизаторів

image

Швидкість розвитку технологій в наші дні вражає. Стрибок науково-технічного прогресу в останні роки можна порівняти хіба що з темпами розвитку космічної галузі в період з кінця 50-х по середину 70-х років ХХ століття. Як тоді присутність людини в космосі стало реальністю, так само і зараз повсюдна заміна людей машинами вже не здається чимось захмарним.

Автоматизація процесів стала повноцінним «трендом» нашого часу і продовжує розширювати свій вплив практично у всіх сферах діяльності: починаючи з сільського господарства і закінчуючи «розумними будинками» або штучним інтелектом.

Дана тенденція диктує свої правила гри і в сфері бізнесу. Гравці ринку, недостатньо інвестують в оптимізацію своїх бізнес — та виробничих процесів, їх здешевлення і прискорення шляхом автоматизації, зовсім скоро опиняться за бортом».

Автоматизація виробництва – це, якщо хочете, вже гігієна. І мова тут йде про виробництво автомобілів (із заміною ручної збірки конвеєром), так і про виробництві програмного забезпечення (з заміною ручного тестування автотестами) або наданні послуг зв'язку (з заміною ручної праці телефоністок спочатку на комутаційне обладнання, а потім і зовсім на нові технології зв'язку).

Розуміючи важливість автоматизації в сучасних реаліях, ми в компанії Huawei вважаємо важливим і корисним ділитися нашим досвідом автоматизації роботи мережевого устаткування Huawei c користувачами нашої продукції і представляємо вашій увазі цикл постів, присвячених автоматизації.

У «першої серії» піде мова про засоби управління подіями, реалізованих в обладнанні Huawei.

Читати далі →

Все валиться

Давайте спробуємо разом зменшити фрагментацію в світі JavaScript

Нещодавно, після аносна Yarn (пакетний менеджер для node.js від facebook прим. пер.), деякі в JavaScript співтоваристві розкритикували Facebook і проект в цілому.

Існує тенденція для команії або індивідуумів форкать або перестворювати OSS проекти, замість роботи над існуючими в співтоваристві. Це відбувається з багатьох причин, але це трапляється частіше, ніж потрібно. Це пояснює, чому з'явився Yarn.


Читати далі →

Додаток на Elm за лічені секунди

Сучасна розробка браузерних додатків стала надто складною. Не стільки завдяки цій алгоритмічної складності, скільки завдяки достатку підходів для цієї самої розробки.
Наявність великого вибору — добре, але не завжди допомагає продуктивності. Розробники цінні, в першу чергу, умінням писати корисний для бізнесу код. Проблема в тому, що код — це лише частина програми. Кодом супроводжує інфраструктура безлічі інших інструментів, що допомагають розробнику виробляти цей код.
We need opinionated tools that take care of configuring dev and prod so you can focus on the app. They will come. Give it a year.  Dan Abramov (@dan_abramov) January 26, 2016


Читати далі →

Огляд пакетів Node.js для розбору параметрів командного рядка

Node.js як і інші середовища розробки, надає базові засоби роботи з параметрами командного рядка. У нашому випадку це масив
process.argv
. Але зазвичай, крім найпростіших випадків типу A + B, обробляти параметри командного рядка вручну дуже незручно. Для цього є кілька популярних пакетів. Я написав невелику програму, яка побудувала зведену таблицю по цих пакетів, вибрав з них три найбільш популярних і розглянув їх ближче.
Зведена таблиця
Читати далі →

Валідація 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-рядок з командного рядка.

Читати далі →

Реліз CleverStyle Framework 4

якось не виходило писати більше однієї статті від початку нової гілки (частина 1, частина 2, частина 3), але ось знову є чого цікавого розповісти, адже вийшов перший реліз серії 4.х.

Коротко про все

Перше, що хотілося б сказати — проект був перейменований з CleverStyle CMS в CleverStyle Framework. Нарешті! Більше не буде плутанини між назвою і змістом.

Якщо серія 2.х почалася з істотних змін на стороні сервера, а 3.х з порівнянних змін на клієнті, 4.х приносить поліпшення скрізь.

На сервері істотно збільшена швидкість роботи, при тому що це full-stack фреймворк, використовуючи HTTP сервер заснований на ReactPHP можна отримати швидкість генерації сторінки НИЖЧЕ 1мс, швидше стала генерація HTML в типових сценаріях.
Так само додалася зручна підтримка вкладених структур у файлах перекладів, додалася підтримка SQLite, PostgreSQL, підтримка роботи в якості PSR7 Middleware (ініціалізація з PSR7-сумісного request об'єкта і видача результату в PSR7-сумісний response об'єкт) і пов'язані з цим зручні абстракції в самому ядрі.

На фронтенде повсюдно використовується RequireJS, ряд бібліотек, безумовно що завантажуються на фронтенде, тепер завантажуються тільки коли безпосередньо потрібно, додані оптимізації для швидкого відтворення першого кадру (first paint).

На стику backend та frontend оптимізації побудови кешу статики (CSS/JS/HTML), HTTP/2 Server push,
Link: <preload>
та багато іншого.

В цілому система виглядає як хороший гібридний (не чисто микроядерный, але і не жирний такий) full-stack php фреймворк.

Як завжди, не обійшлося без поліпшення метрик коду, наприклад, оцінки Scrutinizer:)

Читати далі →

Snipper &mdash; маленький помічник програміста

Snipper   просте, консольний додаток, написаний на PHP, для зручного імпорту фрагментів коду з популярного сервісу GitHub Gist.

Передісторія

В один прекрасний день я зрозумів, що порядком задолбался переписувати дрібні файли конфігурацій з проекту в проект і став шукати відповідь на питання — як позбавити себе від страждань і не додати?

Розглянувши, як мені здалося, достатня кількість рішень я взявся писати власне консольне «додаток» для завантаження часто використовуваних файлів з кодом (мова йде саме про файли, а не про роботу з буфером обміну). Для зберігання вибрав сервіс від GitHub, так як в роботі, без нього ніяк (готових бібліотек для роботи з API безліч), а для сипатичного зовнішнього вигляду — знайомий всім компонент Console арсеналу Symfony.

Читати далі →