Ruby: удаляем спец. символы перед insert в базу

Метод на ruby по удалению мусора в виде разных скобок, exclamation и других символов, которые гарантированно приведут к ошибке при insert в базу. При необходимости можно добавить символы в переменную pattern.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ....


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

Демонизация приложений, делаем демон приложения в CentOS (Debian), работа с сервисами

Все управляющие программы для роботов по сути демоны/службы - работают в бесконечном цикле.

В CentOS, в отличии от Ubuntu, по умолчанию нет Start-stop-daemon для запуска своих процессов в виде демонов. При его наличии запуск приложения в виде демона решается простой командой (главное чтобы скрипт был исполняемым :)).

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

Coding: архитектура, программирование и разработка, подходы, best practices, devops, containers (k8s, docker, nomad, mesos), releases, waterfall/agile, scrum, sprints, CI/CD, Serverless computing, Microservice Architecture; ITIL/IT management; KISS/SSOT; балансировка/шардирование

 Программирование Best Practices

  • Соответствие кода best practice (code style, security и проч) могут проверять как IDE, так и отдельные мощные продукты типа SonarQube.
  • Программист – это прикладная профессия, программист поэтому должен уметь писать код в первую очередь (нужен ли кому то программист, не умеющий писать код – реторический вопрос), но для командной разработки (разбираться в чужом коде, codestyle, архитектура, интегрироваться с разными продуктами, ревьюить и проч) и использования корректных подходов/паттернов знать теорию так же обязательно нужно, а работа в команде это стандартная работа программиста (в среднем продукт это сто и больше тысяч строк кода, несколько лет люди над ним работали, несколько программистов)
  • Для отладки кода использовать debuggers, а не print/logging функции, пример в Python (при этом даже middle dev зачастую ищут проблему через print)
  • Code review/document review – крайне важный аспект в программировании в каких-либо командах, помимо покрытия этого вопроса инструментами вроде git/tfs есть отдельные инструменты типо smartbear Collaborator
  • Тестирование крайне важный аспект программирования, каждый программист должен уметь тестировать свой код и исключать основные потенциальные проблемы в коде еще на моменте его написания; в том числе в алгоритмических собеседованиях проверяются навыки программиста по составлению тест-кейсов путем генерации тестовых данный на вход разрабатываемому алгоритму до написания кода
    • Если разработчик хотя бы базово тестирует код перед тем, как отдать его в QA, это ускорит выкладку кода в продакшен. 


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

Основы VCS на примере Git

https://git-scm.com/ – тут крутые entry видео, документация и прочее.

VCS
Version Control System (VCS) – система контроля версий.
Из названия следует основной кейс применения таких систем – контроль версий систем. VCS сохраняет изменения, которые произошли от одной версии файла к другой.


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

Telegram bot на Ruby c gem telegram-bot-ruby

РЕСУРСЫ, переменные И МЕТОДЫ
  • https://core.telegram.org/bots/api – основной необходимый MAN. Очень крутой, но не хватает примеров
  • https://github.com/atipugin/telegram-bot-ruby – ruby gem telegram, есть пример кода для разных кейсов
  • https://github.com/mustafababil/Telegram-Weather-Bot/blob/master/responseController.py – пример бота в телеграм на python
METHOD
bot.api.send_message - основной метод, отправка сообщений
bot.api.answer_callback_query-


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

Немного об Oracle Intelligence Bots

Даже oracle вложился в разработку чат-ботов, а это говорит о многом – такие монстры просто так не дергаются.
В принципе, в их видео ничего относительно нового: бот отвечает на вопросы на основе примерно созданных шаблонных диалогов, выбор конкретного диалога основывается на ai machine learning, если бот не может ответить – автоматически подключается сотрудник.


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

Скрипт на событие логина по SSH

Пришла идея создания скрипта для логгирования события подключения по SSH в таблицу SQL и уведомления о подключении определенных пользователей определенным пользователям:
  • писать всем пользователям о подключении их самих – сами пользователи знают, когда заходят и заход тогда, когда ты это делать не мог – есть повод обеспокоиться
  • админу писать о подключении всех пользователей, имеющих права на sudo
В целом логгирование в linux встроено по умолчанию – утилита last показывает полный лог авторизаций с момента создания файла /var/log/wtmp и продолжительность pts, а в lastlog есть информация о последнем подключении.


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

Динамическое формирование окончания слов во множественном числе

Достаточно для анализа 10 символов чтобы делать правильное окончание.

Метод на ruby:

 def spelling(number)
  last_digit = number.to_s.split(//).last(1).join # identify last digit
  spell = "" if last_digit == "1"
  spell = "а" if last_digit =~ /^([2-4])$/
  spell = "ов" if last_digit =~ /^([0]|[5-9])$/
  two_last_digit = number.to_s.split(//).last(2).join


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

Редирект на изначально запрашиваемую страницу после авторизации на базе PHP

Redirect делается обычно на основе запрашиваемого URL из переменной $_SERVER[‘REQUEST_URI’], далее назовем это query URL.

Первоначально редиректим на страницу авторизации с указанием запрашиваемого url из query URL в переменной location.

header("Location:login.php?location=" . $_SERVER['REQUEST_URI'] );

Уже на странице авторизации после успешной авторизации делаем тоже самое – забираем query URL.

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

Ruby простая отправка писем

Простая отправка писем в ruby без вложений:
#!/usr/bin/env ruby
#coding: utf-8
 
require 'net/smtp'
 
from = 'login@exmpl.com'
to = [ "mail_to@exmpl.com", "mail_to2@exmpl.com" ]
theme = 'Subj!'
text= "Msg"
message = ""
message<<"From: admin <#{from}>\n"
message<<"To: #{to}\n"
message<<"Subject: #{theme}\n"
message<<text
Net::SMTP.start('smtp.exmpl.com', 25, 'exmpl.ru',


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