Linux: which, whereis, realpath, type, locate

  • Если не получается найти командами ниже – надо использовать find 🙂

type – считаю является самой первой командой, которой нужно на мой взгляд пользоваться для поиска исполняемого файла/понимания того, что исполняется. Type показывает какого типа является исполняемая команда – встроенная в shell функция (shell builtin), внешняя функция (shell function) или утилита.

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

Ruby: разные методы по работе с сетью

MAC
Приведение к единому формату
def mac_normalize(mac)
  mac.gsub(/!|’|”|-|:|;|\./,””).downcase
end
Проверка
def check_mac(mac)
  return “MAC \”#{mac}\” имеет длину не равную 12 символам” if mac.length != 12
  return “MAC \”#{mac}\” включает русские символы” if mac =~ /[а-я]/i
  return “MAC \”#{mac}\” включает невозможные в MAC латинские символы” if mac =~ /[g-z]/i
  return “MAC \”#{mac}\” является адресом из примера” if mac == “a0b3cceb0fed” || mac == “d4dccda0b283”
  “OK”
end


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

Ruby: регулярные выражения

Основная статья по регулярным выражениям тут.

.match – очень прокаченный метод в ruby для работы с регулярными выражениями.

/[0-9]/.match("2")

Например, к результату match можно применять методы .pre_match, .post_,match – получая данные ДО и ПОСЛЕ match – очень полезно, не городя костылей с заменой вроде <regexp>.*.

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

Ruby: работа в командной строке с ruby -e

Ruby можно вызывать из shell используя опцию -e, не указывая файл с кодом, а прямо из командной строки. По сути вызов irb из консоли. Очень крутая штука. Если строк несколько – то делить их нужно через “;”.

~$ ruby -e 'puts 1+1'
2
~$ ruby -e 'puts 1+1;puts 1+2'
2
3

Так же Ruby в командной режиме может использоваться по аналогии с pipeline с опцией -n – берем STDIN как входящий поток для кода и применяем его для каждой строки STDIN, пока их не останется (аналог bash while read | do).

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

Review курса Google на Coursera

Very useful course, thanks Google and the Coursera! Really good job.

My brief summary:

IT Automation: It’s not that scary!

General knowlege – super useful concepts, ideas, experiences and best practices

Ruby – I love this language, “coding is a feature of IT” with such languages

Git – fantastic and very useful, began to use immediately after passing the week

Chef – a little lame with bash scripts.

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

Ruby: специальные символы

#{} – string enterpolation

! – методы заканчивающиеся на ! замещают результат оперируемой переменной (gsub!)

!! – конвертация значения в boolean (true/false)

def is_ip?(ip)
!!IPAddr.new(ip) rescue false
end

? – методы заканчивающиеся на ? генерируют (обычно) boolean результат (include?)

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

Ruby: работа с сетью (библиотеки/гемы IPAddr, net-ping, net-snmp)

Ruby ip addr class
Используя стандартную библиотеку Ruby IPaddr можно работать с IP (как IPv4, так и IPv6) адресами – проверка формата, генерация array на основе Ip/mask, проверка относится ли хост к сети. Очень удобно.

Метод для проверки формата полагается на rescue создания объекта в классе IPaddr.



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

Кодировки (artlebedev, iconv, coding)

Чаще всего помогает

  • https://www.artlebedev.ru/decoder/
  • iconv
  • ruby or python
  • json encode/decode

Ruby

Пример изменения кодировки windows default для кириллицы на UTF-8 с использованием ruby

str.force_encoding("Windows-1251").encode("UTF-8")

“str”.encode(“windows-1251”) # кодируем в 1251

“str”.encode(“windows-1251”, invalid: :replace, undef: :replace, replace: ‘?’) # кодируем в 1251, символы которые не можем раскодировать замещаем на указанные

json

Кодировка после json_encode без unescape.

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