Как стать автором
Обновить
-10
0
Евгений @Kastrulya

Системный администратор

Отправить сообщение

Создание архитектуры программы или как проектировать табуретку

Время на прочтение25 мин
Количество просмотров681K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

Хотелось разобраться, что вообще в себя включает процесс создания архитектуры программы, какие задачи при этом решаются, какие критерии используются (чтобы правила и принципы перестали быть всего лишь догмами, а стали бы понятны их логика и назначение). Тогда будет понятнее и какие инструменты лучше использовать в том или ином случае.

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии45

Система автоматического подсчета кругов и времени для RC-автомоделей

Время на прочтение6 мин
Количество просмотров20K
Не так давно я собрал свой аналог AMB, она же MyLaps. Для тех кто не знает — это сильно навороченная система для подсчета кругов радиоуправляемых моделей, картингов и даже автоспорт. Стоимость готового комплекта от MyLaps просто космическая. Моя задача была создать либо клон, либо максимально совместимое. Что же у меня получилось на данный момент.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

20 вещей, которые я должен был знать в 20 лет

Время на прочтение3 мин
Количество просмотров715K
1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
Читать дальше →
Всего голосов 544: ↑445 и ↓99+346
Комментарии544

TOP'ай сюда

Время на прочтение5 мин
Количество просмотров177K
Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
Читать дальше →
Всего голосов 401: ↑389 и ↓12+377
Комментарии122

QoS в Linux: фильтр U32

Время на прочтение14 мин
Количество просмотров21K
Так повелось, что фильтр U32 в подсистеме управления трафиком ядра Linux считается простым и понятным, а потому в подробном документировании не нуждается. Например, в LARTC (Linux Advanced Routing and Traffic Control) про него лишь несколько абзацев. Но на самом деле U32 устроен гораздо сложнее и интереснее, но и в использовании он не так прост, как может показаться. Под катом статья по этому фильтру с примерами использования и подробными пояснениями.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии11

Срезаем пики с RRD графиков на примере Munin

Время на прочтение3 мин
Количество просмотров5.2K
Любой linux администратор наверняка наблюдал аномальные пики на RRD графиках. Пики появляются вследствие нарушения процесса сбора отслеживаемой величины и портят картину на графике. Это нормальное явление для RRD.

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

image

Читать дальше →
Всего голосов 41: ↑36 и ↓5+31
Комментарии14

Компьютер в машине

Время на прочтение3 мин
Количество просмотров79K

Предыстория



У меня toyota corolla 2003 года, с завода на официальные машинки ставили только кассетные магнитолы. Конечно, кассеты в магнитолу я не ставил ни разу, обходился радио и фм модулятором.
Не сказать, что я особо притязателен к музыке, но конечно хотелось чего-то более. Какие были варианты:
1. Поставить рамку на 1 или 2 дин и поставить обычную магнитолу.
2. Купить за 70$ родную, на eBay но уже с дисками. Но без мп3 :)
3. Купить за 600$ крутую, прямо под мою машину, со всем…

Но не один мне особо не нравился…
1. обычные магнитолы лишали бортового компьютера.
2. Шило на мыло :)
3. Дороговато и не очень нравились…

Вот и пришло решение поставить компьютер в машину. Вот что было ДО и ПОСЛЕ. Интересно? Добро пожаловать под хабракат =)
До: image После: image
Читать дальше →
Всего голосов 350: ↑337 и ↓13+324
Комментарии275

Прием спутниковых тв каналов в linux

Время на прочтение6 мин
Количество просмотров26K
Доброго времени суток.
Хочу вам рассказать про настройку приема спутниковых не закодированных тв каналов в linux и вещание их в локальную сеть.
Исходными данными будем считать наличие спутниковой антенны настроенной на определенный градус(например на www.lyngsat.com/amos2.html) и компьютера под управлением linux(не важно какой дистрибутив, в моем случае был Slackware). Задача очень интересная и актуальная в наше время.
Итак начнем.
Всего голосов 44: ↑42 и ↓2+40
Комментарии42

Стабильное вещание IPTV через VLC

Время на прочтение8 мин
Количество просмотров60K
С IPTV пришлось познакомиться поближе, когда в компании интернет-провайдера где я работал, решили организовать вещание IPTV. Выяснилось, что вещание осуществляется в linux и программой vlc, которая по слухам единственная в своем роде. Была установлена тарелка и DVB-карта SkyStar2, которая предположительно должна была без проблем заработать в linux'e. Так и было со всеми новыми машинами, где была установлена ubuntu server. На Debian заработало только после обновления ядра. Настройка прошла относительно легко, благо на то время уже было несколько статей на эту тему и документация к vlc была тоже очень полезна. После запуска начались некоторые проблемы с пропаданием звука и видео на каналах и другие проблемы, описанные ниже. После их появления были написаны скрипты, устраняющие эти проблемы. Сейчас на них работает 3 сервера с 5 dvb-картами в общей сложности и вещается 23 канала с 3х спутников. Под катом — перечисление проблем, которые могут появиться после запуска вещания IPTV через VLC в Linux и то как с ними бороться. Бороться будем с помощью bash.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии44

Защищаемся от HTTP DDoS и прочих Хабраэффектов

Время на прочтение5 мин
Количество просмотров10K
Простой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
Читать дальше →
Всего голосов 160: ↑152 и ↓8+144
Комментарии55

Что нужно настроить в mySQL сразу после установки?

Время на прочтение5 мин
Количество просмотров145K
Вольный перевод довольно старой статьи с MySQL Performance Blog о том, что лучше сразу же настроить после установки базовой версии mySQL.
Читать дальше →
Всего голосов 95: ↑88 и ↓7+81
Комментарии24

pv — маленькая, но очень полезная утилита

Время на прочтение2 мин
Количество просмотров80K
Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
Читать дальше →
Всего голосов 290: ↑280 и ↓10+270
Комментарии94

Техническая организация хостинга

Время на прочтение4 мин
Количество просмотров16K
В прошлый раз я рассказал о том, как не нужно строить организационную часть хостинга. Сейчас я расскажу о том, как можно организовать техническую.

Есть шесть вещей, на которые опирается любой хостинг-провайдер: Сервер, Панель, Домены, Бухгалтерия, Поддержка, Юридическая организация. Сейчас я расскажу основные варианты выбора.
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии104

Выпущен XNeur и gXNeur версии 0.9.4!

Время на прочтение2 мин
Количество просмотров4.1K

X Neural Switcher (XNeur)


Данная программа является автоматическим переключателем клавиатуры. Т.е. при наборе текста, если он набирается на неверном языке, xneur автоматически (или по запросу) переключит язык на нужный.

Принцип работы у программы аналогичен Punto Switcher.

Выпущен XNeur и gXNeur версии 0.9.4!

Список изменений:
  • Транслитерация приведена к стандарту ISO 9 (GOST 7.79-2000).
  • Добавлена возможность переключения языка при вводе, а не после пробела.
  • Добавлены новые действия, на которые вешаются звуки и OSD.
  • Добавлена возможность фиксации раскладки. Если раскладка фиксирована, то на нее автоматического переключения не будет происходить. Соответственно, если в данный момент включена фиксированая раскладка, то с нее переключения происходить не будет.
  • Исправлена работа с диакритическими знаками (â, ű, ë и подобными). Спасибо польским пользователям за сообщения об ошибках и тестирование.
  • Добавлены болгарский, чешский, греческий, эстонский, армянский, литовский, латвийский, польский, испанский и узбекский языки. В общей сложности, программа теперь поддерживает восемнадцать (18) языков.
  • Доработан gxneur, добавлены всякие удобства. Разумеется, gxneur поддерживает все возможности xneur.
  • Словари, начиная с этой версии, вводятся на языке ввода, а не в английском коде.
  • Разработаны новые флажки 24х24. Их удобно использовать с gxneur в окружении KDE. Взять можно здесь xneur.ru/browser/icons/bobs. Положить надо в /usr/local/share/gxneur/pixmaps .
  • Множественные улучшения и исправления глюков.

Читать дальше →
Всего голосов 42: ↑38 и ↓4+34
Комментарии36

Прописываем dpi в PNG с помощью PHP

Время на прочтение2 мин
Количество просмотров5.1K
Понадобилось мне тут вдруг для одной прикладной задачи генерировать PNG-шки на PHP, чтобы затем их можно было вставлять в документы и распечатывать. Но вот проблема, никак с помощью GD в PHP при сохранении нельзя задать разрешение в dpi, а ведь это очень важно при печати. С ImageMagick мне связываться не хотелось, поэтому я быстренько нагуглил PNG (Portable Network Graphics) Specification и написал вот такой код:
Читать дальше →
Всего голосов 59: ↑54 и ↓5+49
Комментарии121

Простое сравнение изображений с помощью php

Время на прочтение3 мин
Количество просмотров27K
Алгоритм возможно не новый, и не является идеалом, но, на удивление, работает. Никаких графов и корелляции.

Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
Читать дальше →
Всего голосов 161: ↑153 и ↓8+145
Комментарии64

Ускоряем выборку произвольных записей MySQL

Время на прочтение3 мин
Количество просмотров33K
Последнее время оживилась публика с вопросом случайной выборки из таблицы. Решений по оптимизации полно, и нового сейчас я вам наверное ничего не покажу, просто напомню про основные методы оптимизации — упрощение запроса и индексацию. Без предисловий про фриленсеров, сразу к делу ;)

Читать дальше →
Всего голосов 59: ↑50 и ↓9+41
Комментарии22

Система разделения прав доступа в веб-приложении

Время на прочтение14 мин
Количество просмотров69K
В этой статье мы пройдём с вами полный цикл от идеи, проектирования БД, написания PHP-Кода, и завершающей оптимизации. Постараюсь рассказать обо всем, как можно проще. Использовать для примеров буду PHP и Mysql. Заодно потренирую новичков :).

В этой статье я коснусь вопросов:
  1. Идея ACL
  2. Проектирование БД
  3. Нормализация БД
  4. Рефакторинг кода
  5. Оптимизация рабочего кода

Статья является ответом на Бинарное распределение прав доступа в CMS. Пока автором пишется практическая часть, я хочу предоставить мой вариант, который я использую довольно давно.
То, что я сейчас расскажу, похоже на ACL.

Читать дальше →
Всего голосов 94: ↑71 и ↓23+48
Комментарии103
1

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Дата рождения
Зарегистрирован
Активность