Pull to refresh
201
0
Владимир Пузанов @farcaller

Пользователь

Send message

Парсеры, обработка текста. Просто о сложном. CFG, BNF, LL(k), LR(k), PEG и другие страшные слова

Reading time19 min
Views49K
Наверное, каждому программисту приходилось сталкиваться с задачами вида «прочитать что-то в формате А и произвести с ним некие манипуляции». Будь то json, логи nginx, cfg, sql, yaml, csv или что-то еще. Хорошо, когда можно воспользоваться библиотекой, однако, по разным причинам, это удается не всегда. Тогда и встает вопрос создания собственного парсера для заданного формата. И это, как говорят англичане, часто оказывается PITA (болью в ...). В этой статье я постараюсь облегчить эту боль. Кому интересно, добро пожаловать.
Читать дальше →

Тестирование компонентов с Puppeteer и Jest

Reading time4 min
Views7.6K

На Хабре есть публикация, описывающая написание тестов с использованием Puppeteer и Jest. Рекомендую к ознакомлению, если вы ещё не знаете, что такое Puppeteer. В данной статье, на примере React-компонента, будет описываться способ тестирования вызовов callback-функций. Например, есть компонент с props onChange, и необходимо протестировать, что при некоторых действия пользователя будет вызвана callback-функция с ожидаемыми переданными параметрами. Для этого будет использоваться библиотека Puppeteer-io. Но для начала рассмотрим небольшой примерчик на html и чистом javascript без привязки к библиотекам или фреймворкам…
Читать дальше →

Казнить нельзя помиловать: разбираемся с пунктуацией в английском языке

Reading time5 min
Views25K
Многие студенты считают, что во всех языках пунктуация одинаковая. Казалось бы, знаки препинания все те же (разве что в испанском есть перевернутые, да кавычки у всех разные), почему бы их не использовать по одинаковым правилам? Ответ прост: это невозможно синтаксически. У всех языков разная структура предложения, поэтому невозможно применить единые правила пунктуации ко всем языкам сразу. Да и потом, чьи правила применять? В правилах русского путаются сами русские. А уж русская пунктуация в английском тексте вообще противоестественна. Рассмотрим самые частые ошибки русских студентов.

Решив изучать иностранный язык, рано или поздно вы столкнетесь с тем, что вам придется что-нибудь на нем написать. На высоких уровнях вы уже научитесь формулировать мысль и будете пытаться писать красивыми длинными предложениями. Вот только неопытного студента, который ни разу не изучал даже азов английской пунктуации любой преподаватель или носитель увидит за версту. Ведь студенты часто пишут сочинения на английском, расставляя знаки препинания по принципу русского языка. Мы не будем подробно и дотошно описывать все правила английской пунктуации, а сосредоточимся на самых частых ошибках.
Читать дальше →

Установка HA Master Kubernetes кластера с помощью Kubespray

Reading time7 min
Views39K


Kubespray (ранее Kargo) — это набор Ansible ролей для установки и конфигурации системы оркестрации контейнерами Kubernetes. В качестве IaaS в этом случае могут выступать AWS, GCE, Azure, OpenStack или обычные виртуальные машины. Проект раньше назывался Kargo. Это проект с открытым исходным кодом и открытой моделью разработки, поэтому по желанию каждый может повлиять на его жизненный цикл.

На Хабре уже писали об установке Kubernetes с помощью Kubeadm, но в этом способе есть значительные недостатки: он до сих пор не поддерживает мультимастер конфигураций и, порой, не очень гибкий. Kubespray, хоть и использует Kubeadm под капотом, уже имеет функционал обеспечения высокой доступности как для мастера, так и для etcd на этапе инсталляции. О его сравнении с другими актуальными методами установки Kubernetes можно почитать по ссылке https://github.com/kubernetes-incubator/kubespray/blob/master/docs/comparisons.md

В этой статье мы создадим 5 серверов на ОС Ubuntu 16.04. В моем случае их перечень будет следующим:

192.168.20.10 k8s-m1.me
192.168.20.11 k8s-m2.me
192.168.20.12 k8s-m3.me
192.168.20.13 k8s-s1.me
192.168.20.14 k8s-s2.me

Добавляем их к /etc/hosts всех этих серверов, в том числе локальной системы, или же к dns-серверу. Фаервол и другие ограничения в сети этих хостов должны быть деактивированы. Кроме этого, необходимо разрешить IPv4 forwarding и каждый из хостов должен иметь свободный доступ к сети Интернет для загрузки docker-образов.
Читать дальше →

TypeScript: Библиотека tslib

Reading time4 min
Views11K

Перевод. Оригинал по ссылке.


В некоторых случаях компилятор TypeScript вставляет вспомогательные функции в сгенерированный JavaScript код, которые потом вызываются во время исполнения. Каждая такая вспомогательная функция эмулирует семантику особенности языка, которая ещё не поддерживается браузерами нативно.


В настоящее время в TypeScript существуют следующие вспомогательные функции:


  • __extends для наследования
  • __assign для spread оператора
  • __rest для rest оператора
  • __decorate, __param и __metadata для декораторов
  • __awaiter и __generator для async/await
Читать дальше →

От Root CA до User Authorization в nginx+apache. Часть 1. Создаем Root&Intermediate Certificate Authority

Reading time21 min
Views13K
Доброго времени, Хабраюзер!

Хочу поделиться с тобой идеей беспарольной аутентификации. Недавно лазил по сайтам центров сертификаций и наткнулся на интересную вещь. ЦС использую аутентификацию по сертификату вместо пароля. Я считаю это удобным, для компании, а не для обычных интернет сайтов, где шарятся простые пользователи, но вход в АД (админ-центр сайта), было бы неплохо.
Читать дальше →

Программирование под ARM TrustZone. Secure Monitor

Reading time12 min
Views13K
Продолжаем наш цикл статей, посвященный столетию Великой Октябрьской… ARM TrustZone.

Сегодня мы разберемся, что такое Secure World, Normal World, как на программном уровне взаимодействуют две ОС – доверенная (TEE) и гостевая. Узнаем, для чего нужен и как работает Secure Monitor, как обрабатываются прерывания от устройств.

Если готовы – добро пожаловать под кат.
Читать дальше →

Вашингтон на горячей связи

Reading time12 min
Views16K
Горбачев звонит Рейгану:

— Примите наши соболезнования по поводу гибели шаттла «Challenger».
— «Challenger» еще не взлетел, пуск через два часа.
— Ах, черт, простите! Проклятая разница во времени. (Анекдот 1986 года)



Безусловно, гибель шаттла с экипажем на борту не должна быть предметом шуток, даже злых. Анекдот важен в свете статьи, так как противоречит фактам. В 1986 году Горбачев не мог позвонить в Белый дом, ведь телефонная связь была установлена позже. Михаил Сергеевич мог лишь написать об этом по специальному каналу экстренной связи, известному как «горячая линия».

Опыт разработки low power устройств на STM32L

Reading time7 min
Views26K
Довольно часто можно встретить статьи, посвященные использованию режимов пониженного энергопотребления. В большинстве случаев в них описываются достоинства и недостатки конкретного микроконтроллера, а все рекомендации сводятся к обобщенной фразе — используй режимы сна.
Читать дальше →

Консольные помощники для работы с Kubernetes через kubectl

Reading time5 min
Views7.5K
image
Kubectl — основной консольный интерфейс для взаимодействия с Kubernetes и, безусловно, важный инструмент в руках любого администратора/DevOps-инженера, причастного к эксплуатации таких кластеров. Если вы пользуетесь им каждый день и делаете это по-настоящему активно, то, как это свойственно ИТ-специалистам, наверняка задумывались о способах упрощения/автоматизации своих манипуляций. Благо, это мир сисадминов, Open Source и консоли, так что в нём, конечно, уже нашлись и те, кто не только задумывался об этом, но и воплотил свои потребности в жизнь — в виде утилит, доступных теперь и всем «коллегам по цеху». О них и пойдёт речь в этом небольшом обзоре.
Читать дальше →

Как делать меньше ошибок в английском. Поясняет носитель языка

Reading time6 min
Views56K


В лингвистике существует такое понятие, как интерференция — влияние родного языка на тот, который мы изучаем. Чаще всего это попытки найти какие-то общие черты в фонетике, грамматике и лексике в родном и иностранном языках.

На начальном этапе это помогает разобраться в фонетике, но потом приходится свыкаться с большим количеством правил и исключений, которые не имеют аналогов в русском.
Мы попросили одного из самых опытных носителей английского языка в нашей школе, Трессу, рассказать о наиболее частых ошибках ее русскоязычных студентов и как их исправить. Но прежде чем перейти к самому списку, есть ряд советов от нее, чтобы количество ошибок постоянно уменьшалось:
Читать дальше →

Настройка среды разработки Webpack 3 + Angular 4: от сложного к простому

Reading time13 min
Views24K
Всем привет!

Современное front-end-приложение на Angular должно включать в себя следующие характеристики:

  • Возможность использования типизированного JS — Typescript
  • Обеспечение удобства и производительности разработки с помощью HMR (hot module replacement);
  • Модульность приложений и возможность отложенной загрузки модулей (Lazy Loading);
  • AoT — режим (ahead-of-time), повышающий производительность приложения.

Существует много вариантов сборки, решающих эти задачи (angular cli, A2 seed и т. д.). Обычно они имеют сложную структуру, плохо настраиваются/расширяются и представляют собой монолит, который невозможно изменить.

В статье я расскажу, как совместить Angular 2+ с webpack и разобраться со всеми этапами сборки/разработки.

Вы удивитесь, как это просто.
Читать дальше →

Обеспечение сетевой безопасности в кластере Kubernetes

Reading time12 min
Views10K

Сетевые политики (Network Policies) — это новая функциональность Kubernetes, которая за счет создания брандмауэров позволяет настроить сетевое взаимодействие между группами подов и других узлов сети. В этом руководстве я постараюсь объяснить особенности, не описанные в официальной документации по сетевым политикам Kubernetes.


Функциональность сетевых политик стабилизировалась в Kubernetes 1.7. В этой статье их работа объясняется в теории и на практике. При желании вы можете сразу перейти к репозиторию с примерами kubernetes-networkpolicy-tutorial или к документации.

Читать дальше →

Обзор всех инструментов разработчика Chrome DevTools

Reading time6 min
Views228K
Начинающему JS разработчику чаще всего не понятно назначение всех инструментов, которые ему предоставляет браузер. Да и относительно опытный разработчик, если в основном решает однотипные задачи вряд ли может похвастаться, что регулярно пользуется всеми возможностями, которые ему предоставляют инструменты разработчика браузера. Однако познакомиться с ними было бы крайне полезно хотя бы для того, чтобы при решении каких то новых проблем Вы сразу же знали где искать ответ, а более подробно изучив тонкости каждого из них, Вы сможете поднять свою производительность труда на новый уровень.

Отдельно бы хотелось отметить, что DevTools находится в постоянной активной разработке, поэтому название инструментов/панелей/вкладок, как и их наличие в целом или способ доступа к ним со временем может быть изменен. Поэтому не стоит пугаться если, на момент прочтения Вами этой статьи, DevTools будет незначительно отличатся от того, что указано в описании или на скриншотах в этой статье.
Читать дальше →

Незаконченные романы Терри Пратчетта положили под каток

Reading time3 min
Views23K


В 2015 году поклонники творчества Терри Пратчетта горевали по любимому автору, безвременно ушедшему из жизни. Да, конечно, он был уже пожилым (на момент смерти ему исполнилось 66 лет), но во многих странах этот возраст — далеко не старость. Как бы там ни было, писатель мог бы еще многое рассказать своим читателям.

Ну а на днях жесткий диск с незаконченными романами и всеми данными, имевшими отношение к писателю был уничтожен катком. Нет, это не несчастный случай и не дело рук злоумышленников. Сам Пратчетт указал в своем завещании, что хотел бы уничтожить личную информацию, включая недописанные романы после своей смерти. Орудием разрушения послужил не обычный современный асфальтоукладчик, а старинный паровой каток, который называется «Лорд Иерихон».
Читать дальше →

Резервное копирование не «для галочки». Часть первая: мониторинг, бэкапы баз данных и реплики

Reading time6 min
Views23K
Создание скриптов резервного копирования всегда представляется простой, нудной и очень обычной задачей. Напиши скрипт, поставь его в крон, проверь, что он сработал — казалось бы все, да? Но это только верхушка айсберга, а под водой скрывается огромное количество проблем. Все помнят недавную проблему на gitlab, когда оказалось, что операция по удалению данных была проведена не на резервном, а на основном сервере БД, бэкапы оказались размером в 0 байт, бэкапы в S3 недоступны, но, на счастье, резервная копия оказалась на одном из других серверов.

image

Как быть уверенным, что резервное копирование действительно работает? И что даже если скрипты работают, то данные в архивах есть? Что бэкапится именно то, что нужно? По нашей статистике, проблемы с резервным копированием происходят раз в 21 день. Если вы не проверяли ваши бэкапы дольше этого времени — возможно, у вас есть проблемы. В посте мы расскажем о своем опыте по созданию системы резервного копирования в гетерогенной инфраструктуре из 2000 машин, 20 терабайт ежедневных бэкапов самых разных систем, проблемах, которые мы встречали на своем пути, и как мы их решаем.
Читать дальше →

Полезные команды и советы при работе с Kubernetes через консольную утилиту kubectl

Reading time9 min
Views56K
Предисловие переводчика: Эта статья — комбинация из перевода двух материалов от проекта CoreOS (см. ссылки в конце публикации), посвящённых работе с консольным инструментом для выполнения команд на кластерах Kubernetes — kubectl. Листинг, приведённый автором оригинала для Mac OS X, был адаптирован под Linux, в других листингах было исправлено форматирование YAML, а для удобства чтения всего материала в него были добавлены подзаголовки.

Kubectl — инструмент, который знаком пользователям Kubernetes и обладает широкими функциональными возможностями. Овладение ими занимает время, но позволяет увидеть, что это более мощный инструмент, чем многие предполагали. Представляю набор советов, позволяющих улучшить ваши возможности при работе с kubectl. Не забудьте также посмотреть на cheat sheet в секции официальной документации Kubernetes!
Читать дальше →

InnoDB cluster — оно работает, и вроде бы именно так, как обещали

Reading time6 min
Views16K

Я занимаюсь АТСками. И как-то так сложилась, что с самого первого заказа от меня хотели отказоустойчивости. Одним из ключевых компонентов современной АТС (как и любой информационной системы, наверное) является БД, где хранятся как данные о текущем состоянии системы, так и всякие конфигурационные параметры. Естественно, падение БД приводит к поломке всей системы. Начиналось все с MASTER-MASTER репликации в MySQL (исключительно для оперативности переключения), потом были эксперименты с MySQL over DRBD. Все это жило в pacemaker/corosync инфраструктуре. Там ездили IP-адреса, шлюзы и прочая лабудень. Со временем оно даже стало работать как-то более-менее устойчиво. Но тут мне попалась пара серверов, на которых DRBD сделать было нельзя, в MASTER-MASTER я разочаровался довольно давно (постоянно она у меня ломается, такая репликация), а без отказоустойчивой БД терялся весь смысл решения. На глаза мне попалось название InnoDB cluster и я решил: "была-не-была". Что из этого получилось — смотрите под катом.

Читать дальше →

Тюнинг сетевого стека Linux для ленивых

Reading time5 min
Views95K

Сетевой стек Linux по умолчанию замечательно работает на десктопах. На серверах с нагрузкой чуть выше средней уже приходится разбираться как всё нужно правильно настраивать. На моей текущей работе этим приходится заниматься едва ли не в промышленных масштабах, так что без автоматизации никуда – объяснять каждому коллеге что и как устроено долго, а заставлять людей читать ≈300 страниц английского текста, перемешанного с кодом на C… Можно и нужно, но результаты будут не через час и не через день. Поэтому я попробовал накидать набор утилит для тюнинга сетевого стека и руководство по их использованию, не уходящее в специфические детали определённых задач, которое при этом остаётся достаточно компактным для того, чтобы его можно было прочитать меньше чем за час и вынести из него хоть какую-то пользу.

Читать дальше →

ESP32 и Ардуино

Reading time8 min
Views206K
image

Случилось то, чего все так долго ждали и о чём так много говорили — новые модули ESP32 стали широко продаваться и пошли в народ. Сегодня мы поговорим об этих модулях с точки зрения непрофессионального пользователя, привыкшего работать с Ардуино и создавать небольшие проекты для домашней автоматизации или просто для удовольствия и самообучения.

Работает ли это вообще? Что там с поддержкой этих модулей в Arduino IDE? Стоит ли платить больше или лучше ограничиться ставшим уже привычным ESP8266? Мы постараемся вместе ответить на все эти вопросы, а в конце статьи я дам ссылку на реальное воплощение работы ESP32 с Ардуино — дистрибутив бесплатной версии Arduino Mega Server для платформы ESP32.
Читать дальше →

Information

Rating
Does not participate
Location
Dublin, Ирландия
Registered
Activity