Coding: основы регулярных выражений (regexp)

https://regexr.com/ – хороший сайт для создания regexp

http://www.pcre.org/original/doc/html – прекрасная документация к самому популярному синтаксису regexp

man 7 regex – базовое описание регулярных выражений

regex - POSIX.2 regular expressions
Regular expressions ("RE"s), as defined in POSIX.2, come in two forms: modern REs (roughly those of egrep; POSIX.2 calls these "extended" REs) and obsolete REs (roughly those of ed(1); POSIX.2 "basic" REs).


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

Ruby: работа с текстом

 String Class

Индексы

Строка в ruby является объектом класса String.  По индексу строки, по аналогии с индексом массива, можно извлекать, изменять и удалять данные из строки. Причем обращения по индексу идет через те же квадратные скобки, что и для массива.

Обращаясь к строке можно извлечь например первые 6 элементов или последний символ на основе индекса строки, по типу того, как мы извлекаем элементы array:

str[start, lenght]
str[0,6] - извлекаем первые 6 элементов, где 0 - первый символ, 6 - сколько символов от первого
str[7..10]


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

Статистика и математика в IT

Сюда переношу все, что связано со статистикой и нужно было на практике – в тестировании, разработке и в других инженерных задачах.

Арифметической прогрессией (арифметической последовательностью) – последовательность с фиксированным инкрементом. Для меня

Арифметической прогрессией (арифметической последовательностью) - называется последовательность чисел a1,a2,...,an,


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

coding: Алгоритмы и структуры данных, оценка сложности алгоритмов (асимптотическая оценка, оценка Big O), решение задач

сложность алгоритмов

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


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

Основы тестирования (Quality Assurance)

Tests can make good code great!
  • Статья о IXIA
  • Бажат все, даже такие ведущие вендоры как Cisco (особенно Firepower :D). Важно насколько сырой продукт в текущем состоянии и как быстро исправляют проблемы.
из чатика:
на 65 залипает или вообще не работает вплс, на а1к перестают анонситься маршруты, нцс просто тупо сырые.


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

PHP: полезные функции

http://www.w3schools.com/  – очень хороший сайт по WEB-программированию. Охватывает огромное количество языков и технологий – HTML, CSS, JS, SQL, PHP, JSON, AJAX, etc

REGEXP
preg_grep – для поиска в array по regexp
preg_match – для поиска в string по regexp
$matches = preg_grep (“/Комментарий/”, $comments) – Поиск по regexp в array и вывод value.


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

Ruby: работа с ФС (файлами и папками)

ФАЙЛЫ

дока

Прежде всего нужно обозначить, что закрытие файла крайне необходимый процесс:
1) открытый файл может быть заблокирован файловой системой для других скриптов
2) при открытии создается file descriptor, их количество ограничено файловой системой, хотя и обычно значение ограничения довольно большое
3) могут произойти race conditions, когда несколько процессов пытаются прочитать/записать один и тот же ресурс (в данном случае файл) в один момент времени

Чтение и вывод

# вывод контента (первой строки)
File.open("test.txt")


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

Ruby: работа с датой и временем

TIME

Класс Time

Получить hours:minutes (h:m) из Time.now можно по разному

1) лучший и самый универсальный способ через strftime

h_m = Time.now.strftime("%H:%M") # можно выцепить все что угодно, не только h:m, формат %d/%m/%Y %H:%M

2) хуже

h_m = "#{Time.now.hour}:#{Time.now.min}"

3) плохой

time_and_date = "#{Time.now}".split("


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

Автоматизация

Автоматизация – замена ручной работы программой на основе алгоритма.

 

Плюсы

  • убрать человеческий ресурс для решения задачи: не делать рутинные операции человеческими руками, иметь возможность развиваться в другие направления и масштабироваться без необходимости увеличения команды
  • уменьшить количество ошибок из-за человеческих факторов

 

Что не автоматизировать

Автоматизация не является ответом на все задачи:

  • в сфере творчества
  • задача появляется слишком редко
  • ресурсы (человеческие, временные, материальные), которые необходимы для автоматизации задачи, слишком велики и не сравнимы с преимуществами ее автоматизации

 

Принимаем решение

С другой стороны, ни один из факторов не является “блокирующим” полностью возможность автоматизации, например, если задача критична и есть большая склонность к ошибкам при ее ручном исполнении.

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

Ruby: работаем с базой mysql

Как показала недолгая практика использования gem mysql, лучше его не использовать вообще, а сразу использовать gem mysql2.

gem mysql не развивается (последний апдейт в 2013) и имеет косяки, например, с кодировкой (кириллица кладется в cp1251 и изменить, насколько я понял, никак).

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