• Как вы освоили шаблоны проектирования?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    Когда начался бум и восторг вокруг концепции паттернов проектирования, выкрики "GoF рулит!" и так далее, я озадачился тем, чтобы понять, что за шум?

    По своей сути - паттерны - это обычные шаблоны проектирования. Заимствовано у обычных архитекторов (те, которые зданиями занимаются). Суть проста. В работе архитектора есть задачи, которые удобно решать одним или несколькими проверенными способами.

    По аналогии в проектировании софта имееются свои архитектурные вопросы вроде разбиения приложения на компоненты/модули, организации зависимостей между ними, распределение функциональных обязанностей и т.п. Как ловко подметили авторы книжки из этой банды четырех (The "Gang of Four") в нашей индустрии можно также выделить некоторе количество типовых шаблонов, проверенных на практике, чтобы тем самым не наступать на уже обойденные другими грабли.

    Суть постижения паттернов заключается в том, чтобы осознать в каких ситуациях правильно использовать тот или иной шаблон проектирования и правильно его применить. Важно понимать при этом, что формула "чем больше паттернов я придумал засунуть с свое приложение - тем лучше" - неверная. Использовать их следует с умом и только там, где они действительно нужны. Кроме того, патерны устаревают, превращаются в анти-паттерны по мере развития технологий (которые в нашей области делают это более чем стремительно). Ну и, конечно, есть шаблоны общепринятые и есть те, которые успешно используются в узких кругах.
    Тут тоже надо понимать, что это не догма какая-то - типа 10 священных паттернов проектирования :)

    Чтобы понять, где они нужны - нужен опыт. То есть (я лично убежден), что учиться на ошибках других может только крайне ограниченное число людей. Все остальные обязаны набить шишки самостоятельно :)

    К изучению паттернов я дам такие советы:

    1) Прочтите пару книжек, чтобы понять, что это за зверь и с чем его едят. Можно взять одну из вариаций книжки GoF или какие-то производные для вашего стека разработки - познакомиться с основными популярными шаблонами. Сразу после этого я посоветовал бы прочесть книжку "Горький вкус Java" (Брюс Тейт) - она про анти-паттерны. Это чтобы понять обратную сторону их использования. Мне понравилась и уберегла думаю от многих проблем. То что на примере Java - неважно. Речь идет о шаблонах, так что представителям других стеков (к которым отношусь и я) будет просто понять все равно.

    2) Постарайтесь осознать, доводилось ли вам сталкиваться в работе раньше с чем-то, что является или могло бы легко стать одним из шаблонов. Где получалось применить концепт верно, а где из-за этого только проблемы были.

    3) В новых проектах, держите в голове полученные по шаблонам знания - вдруг пригодятся.

    В конечном итоге, знаете ли вы паттерны, или нет - с опытом приходит понимание того, какая архитектура будет правильная, а какая - нет. Как сделать удобно, а как нет. И неважно, какими паттернами это обозвать.

    Я даже пожалуй посоветовал бы подойти к освоению айтишной архитектурной мудрости с другой стороны - со стороны нефункциональных требований или так называемых "-ilities" - их много. Тут вот описаны 7 штук. А вообще их десятки.

    Среди прочих - такие как maintainability (простая поддержка кода), scalability (масштабируемость), extensibility (расширяемость), availability (устойчивость ) и тп. Если, проектируя свое приложение, вы задумываетесь об этих "илитях" и стараетесь их обеспечить в необходимом проекту объеме, то, как правило, ваше приложение будет иметь отличную архитектуру. При этом шаблоны проектирования в ней появятся лаконично сами собой.

    Поскольку идея использовать шаблоны - это попытка опытных программных инженеров дать десяток готовых рецептов менее опытным, чтобы пока они не научились варить "вкусную кашу", они не варили уж что-то совсем несъедобное. :) Учитесь "готовить", разбирайтесь в -ilites :) и все будет хорошо
    Ответ написан
    6 комментариев
  • PPTP client на MikroTik?

    LESHIY_ODESSA
    @LESHIY_ODESSA
    Автор инструкции идиот!!!

    Откройте вкладку "IP" и выберите "Firewall" и "NAT".
    В "Chain", выберите "srcnat", отметьте "Enabled" чекбокс.
    В "Out. Interface", выберите имя соединения PPTP VPN, которое вы создали и отметьте чекбокс.


    Чекбокс [!] означает — "кроме". То есть сделай NAT для всех, кроме интерфейса "PPTP". Феерично.
    Потом зачем то маркировать пакеты. "Dial On Demand" — соединяться по требованию, никак это не реконект. Короче, автор инструкции ИДИОТ!!!

    Действовал по этой инструкции.


    Идиотская инструкция. Много всякого лишнего и специфичного. Сбрасывайте всё что настроили и всё по новому.
    Вот более вменяемые :
    Практика настройки Mikrotik для чайников.

    Mikrotik- Быстрый Старт - Mikrotik RouterOS - Quick Set

    Если совсем вкратце, то создаете 1) PPTP client, НЕ ТРОГАЕТЕ НИЧЕГО, всё по умолчанию. Только поставьте галочку "Add Default Route". Вбейте а) vpn сервер б) логин в) пароль.

    2. IP —> FIREWALL —> вкладка NAT —> НАЖАТЬ ПЛЮСИК —> chain=srcnat Out interface=pptp-out1 —> вкладка Action выбираем masquerade
    Ответ написан
    2 комментария
  • Что лучше всего ставить alsa или pulseaudio?

    @Shetani
    Как-то так
    linux-audio-stack.png
    Ответ написан
    Комментировать
  • Mikrotik Hap Lite роутер — как перенастроить Local Network?

    В настройках DHCP-сервера необходимо так же сменить IP шлюза, выдаваемого клиентам вместе с адресом.
    Ответ написан
    Комментировать
  • Mikrotik Hap Lite роутер — как перенастроить Local Network?

    nimbo
    @nimbo
    NAT
    а вообще:
    "/ip firewall nat export" и сюда
    ps: к слову: правильно менять через /ip address, /ip firewall nat, /ip dhcp
    Ответ написан
    Комментировать
  • Как организовать Wi-Fi сеть в коттеджном поселке?

    ifaustrue
    @ifaustrue
    Пишу интересное в теллеграмм канале @cooladmin
    Проект в вашем случае разделяется на вот такие основные составляющие:
    1. Легализация. Вам необходимо разрешение от надзорного органа на использование частоты\частот и лицензия оператора (на передачу и тыды и тыпы). Это скорее всего минимум, возможно что-то ещё.
    2. Организация и расчёт самой сети. Нужно учесть препятствия, высоковольтные провода, наводки от заборов \ крыш \ трансформаторных будок, отражения от домов и много всего. Лучше всего использовать профессиональный софт (например Ekahau) и любую простую точку доступа на аккуме, перенося её от разных углов до центра зоны покрытия и измеряя силу и карту покрытия. Этот же софт поможет сделать рассчёт. А если ещё и GPS приёмник по синезубу подключить - буде вообще всё круто.
    3. Сетевая часть. Нужно железо и сеть. Можно строить на чистом беспроводе (беспроводные линки между точками и вещание само собой тоже по воздуху), можно ложить медь \ оптику, можно брать 5ГГц для опорных каналов и на 2,4 вещать. Я рекомендую Routeboard ))
    4. Биллинг, роуминг, оплаты, тарифы, QoS. Вообще все эти задачи можно решать без привязки к среде передачи. Такого навалом на просторах по запросу "биллинг". В том же Mikrotik есть встроенный, но можно взять что-то иное, трафик инспектор, например.

    В теории дальность вашего вайфая и его качество будет в первую очередь зависеть от клиентских устройств, а не от операторских, так как первые будут иметь куда более слабые приёмопередатчики, чем ваши "метровые 30+ db" антенны. В целом проект крутой, но организовать его просто задавая на тостере вопросы и получая ответы - не реально. Нужен профи с опытом и он должен быть у вас там, на месте, в посёлке.
    Ответ написан
    Комментировать