Pull to refresh
1
0
satsura @satsura

User

Send message

Чистая архитектура в Python: пошаговая демонстрация. Часть 1

Reading time8 min
Views87K

Примечание переводчика
Данная статья является переводом. Дословный перевод занял 35 страниц А4 в ворде. Планирую разбить её на 5-6 частей. Думаю, данная тема должна быть полезна многим программистам, желающим писать свои web-приложения лучше и чище. Так же статья полезна тем, кто хочет научиться писать web-приложения с методологией TDD с применением именно модульных тестов, а не интеграционных, как это обычно делалось в тех статьях, что попадались мне на глаза. Если где-то использованы неверные термины или перевод кажется слишком машинным — напишите мне в личку, вряд ли это гугл-транслятор, скорее всего дело в моей косноязычности и посредственном знанием английского языка.

Содержание

Год назад мой друг Roberto Ciatti познакомил меня с концепцией, которую Роберт Мартин называет чистой архитектурой. Дядя Боб много говорит об этой концепции на конференциях и пишет о ней очень интересные статьи. «Чистая архитектура» представляет собой способ структурирования системы программного обеспечения, набор соглашений о различных слоях и ролях их участников, нечто большее, чем строгие правила.


Как он уже говорил в своей статье «Чистая архитектура» (перевод на хабре), идея самого подхода не нова, она строится на множестве концепций, которые продвигались многими разработчиками программного обеспечения в течение последних 3-х десяти лет.

Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments4

Вариант простой backup-системы на Python, Bash и Git

Reading time5 min
Views5.1K
Недавно появилось некоторое чувство дискомфорта когда я приступаю к работе. Чувство было не то чтобы сильным, но сосредоточиться мешало. Думал, лень. Оказалось, что все чуть сложнее :) Ноуту, за которым я работаю, уже почти 3 года; стоит на нем Mac OS X 10.6.1, но яблок на нем нигде не нарисовано, и система периодического резервного копирования на нем отсутствует как класс. В общем, не было ощущения стабильности и надежности, так что я занялся этим вопросом вплотную. Собственно, далее я опишу результат, который мое подсознание удовлетворил :) Может быть, кому-то что-нибудь будет полезно.

Резервное копирование кое-чего кое-куда с кое-какими фичами
Total votes 9: ↑6 and ↓3+3
Comments7

svn diff notification

Reading time1 min
Views562
Быстрый трюк для получения уведомлений об изменении в svn
Потребовалось получать уведомления об изменениях в svn.
В svn есть возможность настраивать различные hook'и на различные action'ы.
Простой пример получения уведомлений по e-mail(можно использовать команду mail, но в условиях задачи ее не было, так же не было sendmail и прочего. Вообщем можно сделать как угодно, но это самый простой вариант, который подходил под условия задачи).

#!/usr/bin/perl -w
use Net::SMTP_auth;

my $repos=$ARGV[0];
my $rev=$ARGV[1];
my $change_data=`/usr/local/bin/svnlook diff -r $rev /home/svn/masterpanel/`;

$smtp = Net::SMTP_auth->new('smtp.example.com');
$smtp->auth('CRAM-MD5', 'some_login', 'some_pass');

$smtp->mail('svn@example.ru');
$smtp->to('masters@example.com');

$smtp->data();
$smtp->datasend("Subject: svn.example.com\n");
$smtp->datasend('From: svn@example.com');
$smtp->datasend("\n");
$smtp->datasend("$repos\n");
$smtp->datasend("$rev\n");
$smtp->datasend("$change_data\n");
$smtp->dataend();

$smtp->quit;


Теперь этот скриптик необходимо поместить в /home/svn/masterpanel/hooks/post-commit
Дать ему права на выполнения для пользователя владельца.
Total votes 6: ↑6 and ↓0+6
Comments4

Как визуально автоматизировать тестирование игры с помощью языка AutoIt3: превью

Reading time1 min
Views11K
В топике рассматривается возможность автоматизировать тестирование игры под Windows, которая закрыта, имеет нестандартные контролы и распознается специальными тулами как окно, на примере Сапера с помощью скриптового языка AutoIt. Также изучается интерес читаталей к теме автоматизации игр. Будет интересно узнать ваше мнение.
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments38

Грабли при верстке HTML писем

Reading time3 min
Views103K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →
Total votes 282: ↑273 and ↓9+264
Comments77

Из чего готовят Google Analytics Cookies

Reading time3 min
Views23K
печеньки
Добрый день.
Недавно одни из наших заказчиков выразили желание получать дополнительную информацию о посетителях своего сайта, конкретнее — о людях, заполнивших контактную форму. Это крупная европейская компания и им хотелось бы «фильтровать» своих потенциальных клиентов. Поясню на примере — допустим, решают они организовать выставку своего оборудования в Венгрии и им нужно решить, кто из венгров, оставлявших им свои контакты, скорее всего стоящий клиент, а кто «мимо проходил».
Основными показателями «надежности» клиента для нас стали: число посещений сайта, время проведенное на сайте, количество просмотренных страниц. Всю эту информацию мы получили из Google Analytics Cookies.

Что же из себя представляют печеньки от Google?

Читать дальше →
Total votes 131: ↑126 and ↓5+121
Comments17

Разрабатываем быстрее и качественнее при помощи прототипов

Reading time10 min
Views6.7K
Старая поговорка «Лучше один раз увидеть, чем сто раз услышать» очень точно описывает, что разработчикам может дать создание прототипа интерфейса: визуальное представление, значительно более наглядно описывающие вопросы дизайна проекта и разработки функционала. В итеративном подходе к дизайну пользовательского интерфейса используется быстрое проектирование в процессе создания набросков системы (будь то веб-сайт или приложение) и утверждение их у обширной группы представителей заказчика, заинтересованных сторон, разработчиков и дизайнеров. Если придерживаться этого подхода — можно получить обратную связь раньше (чаще всего прямо в процессе обсуждения), что значительно улучшает качество дизайна конечного продукта и уменьшает потребности во внесении изменений в процессе разработки.
Читать дальше →
Total votes 73: ↑70 and ↓3+67
Comments22

Системы коллективного комментирования в отладке сайтов

Reading time6 min
Views3.1K
В этом обзоре мы проанализировали несколько систем коллективного комментирования веб-страниц и постарались найти идеальный инструмент для удаленного обсуждения и отладки work-in-progress сайтов с заказчиком и другими участниками работы.

image
Читать дальше →
Total votes 80: ↑76 and ↓4+72
Comments51

Работа с ветками в SVN. Изменения в версии 1.5.

Reading time2 min
Views11K
Продолжение этой статьи

Долгое время в ветках SVN был один существенный недостаток. Система не помнила мержей, и программисту приходилось самостоятельно заботиться о том, что бы сохранить номер ревизии, когда происходило копирование изменений из транка. Проблема частично решалась добавлением комментариев в лог, но все таки это было чревато ошибками, и целиком ложилось на совесть программиста.
В версии 1.5, наконец-то, программисты Subversion выполнили свое давнее обещание, и добавили несколько полезных фич для работы с ветками.
Итак, в версии 1.5 команда merge обзавелась двумя новыми опциями: --record-only и --reintegrate.
Теперь ответственность за контроль копирования изменений ложится целиком на плечи SVN (merge tracking), а программист может легко, и без боязни выполнять merge так часто, словно это команда update.
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments123

Работа с ветками SVN

Reading time6 min
Views185K
Прежде чем приступать вообще к использованию веток, и даже если вы и не думаете их использовать, необходимо прочесть Этот Священный Талмуд.

После того как вы прочли статью о ветках в svnbook, вы уже понимаете для чего нужны ветки, как с ними работать и в каких случаях их необходимо использовать. В принципе, после этого, то, что написано под катом вам уже скорее всего не нужно. Но если вам было лень читать, то может текст ниже вас заинтересует, и вы все таки прочтете статью документации. А может, просто поможет вам лучше понять то, что только что прочли в svnbook-е.
Читать дальше →
Total votes 84: ↑81 and ↓3+78
Comments72

OpenVPN: создание полноценного openVPN gateway

Reading time5 min
Views236K
OpenVPN — это система, позволяющая создавать шифрованные туннели между компьютерами по технологии VPN (Virtual Private Network, виртуальная частная сеть).

Основные плюсы такой модели:

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


Несмотря на эти пункты, нормальной статьи о настройке OpenVPN на Хабрахабре я не нашел. Чтож, попытаюсь исправить это своими силами.

Я специально стараюсь не углубляться в технические подробности, но и расписывать принципы сборки ядра и установки ПО в вашем дистрибутиве не буду — это выходит за пределы статьи.

За основу возьмем OpenVPN-2.0.9 и Gentoo Linux в качестве сервера и Linux либо Windows в качестве клиента.

Нырнуть глубже
Total votes 42: ↑39 and ↓3+36
Comments68

8 отличных хитростей jQuery

Reading time4 min
Views28K
imageКому не нравится jQuery? Это быстрая и простая javascript-библиотека стала очень популярной в 2008 году. В этой статье я собрал список восьми очень полезных jQuery-техник, советов и хитростей.
Читать дальше →
Total votes 122: ↑95 and ↓27+68
Comments85

Information

Rating
Does not participate
Location
Беларусь
Date of birth
Registered
Activity