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

 String Class

Индексы

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

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

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


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

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

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

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


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

Загрузка системы, восстановление при загрузке: BIOS & UEFI, GRUB, initrd/initramfs, systemd/sysvinit/upstart, runlevel/target

  • Трек на suno по загрузке Linux 🙂
  • (ubuntu/debian, OS loading) В ubuntu есть lifepatching, который позволяет обновить ядро и systemd без перезагрузки как системы, так и сервисов!
  • BIOS – Basic Input/Output System
  • UEFI – Unified Extensible Firmware Interface
  • Общий процесс загрузки Linux, подробнее отдельно ниже

Аналитики компании Binarly обнаружили 23 критические уязвимости в UEFI от InsydeH2O, которая используется многими крупными вендорами, включая HP, Lenovo, Fujitsu, Microsoft, Intel, Dell, Bull (Atos) и Siemens.


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

Установка и использование Dante в качестве сервера Socks5 на Ubuntu 16

Множество вариантов проще описанного ниже – деплой своего прокси/VPN сервера это вариант не для простых пользователей.

В свете огромной вероятности блокировки telegram в ближайшее время возник вопрос в установке и использовании Dante в качестве сервера Socks5 на Ubuntu 16.

Большая часть инфы нагло взята из офф.

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

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

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


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

Linux Certifications

Тут описаны основные, сохраню только список:

  • Linux Foundation LFCS
  • CompTIA Linux+
  • RHEL
    • RHCSA
    • RHCE
  • Linux Professional Institute – я для себя выбрал эти, хотя и многие говорят, что они менее практичны в сравнении с Red Hat и Linux Foundation
    • LPIC-1
    • LPIC-2
    • LPIC-3
  • SUSE
    • SCA
    • SCE
  • Oracle Linux

 

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

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.


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

ApacheBench

В состав apache входит benchmark – называется ab (apachebench). Им можно тестировать не только сайт на apache, но и любой другой web-ресурс.

Опциями можно указать общее количество запросов (1000) и сколько будет запрашиваться одновременно (50):

ab -c 50 -n 1000 http://weril.me/

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

Ruby: вызов внешних команд

Дока

Правило: в общем случае лучше не использовать вызов внешних команд, а попробовать положиться на standart libraries/gem/modules native ruby.

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

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

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

ФАЙЛЫ

дока

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

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

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


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