Pull to refresh
27
0
Артур @avrfun

Пользователь

Send message

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

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

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

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

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

Рождественская распродажа: арендуйте VPS либо сервер в Нидерландах или США и получите от 1 до 3 месяцев в подарок

Reading time2 min
Views12K
Прежде всего мы хотели бы поздравить Вас с Рождеством и наступающим Новым годом, пожелать успехов Вам и Вашим проектам и поблагодарить Вас за то, что Вы с нами.

Во-вторых хотелось бы уведомить о начале последней распродажи в этом году. Мы долго думали, проводить ли эту акцию, так как невероятные скидки продолжают действовать, но учитывая количество оборудования, которое все еще не нашло своих абонентов (на текущий момент 92 сервера и свыше 500 облачных виртуальных серверов) и сложную экономическую ситуацию у большинства веб-мастеров, решили отдать услуги по убыточной для нас стоимости, ведь лучше компенсировать хоть что-то, дав возможность дополнительно сэкономить Вам, чем эти серверы без толку будут греть воздух. Список конфигураций на которые распространяется акция и подробные условия акции приведены ниже.

Таким образом (только для читателей habrahabr), помимо скидок:

— при оплате VPS / cервера на срок от 1 месяца Вы получаете еще месяц пользования абсолютно бесплатно;
— на срок от 6 месяцев — 2 месяца в подарок;
— от 1 года — 3 месяца в подарок.

И это все несмотря на волшебные скидки, которые все еще продолжают действовать, в особенности при годовой оплате! А они по истине волшебны, к примеру, арендовать выделенный сервер в Нидерландах 2 x Intel Quad-Core Xeon 5504 / 16GB DDR3 / 12x500GB SATA / 1Gbps 100TB сейчас можно всего лишь за $59,93 в месяц! Это почти в 4 раза дешевле стандартной стоимости!



Читать дальше →
Total votes 24: ↑17 and ↓7+10
Comments23

Cоветы начинающему фрилансеру: как продавать услуги на развитые рынки через открытые площадки

Reading time16 min
Views63K
Я занимаюсь разработкой программного обеспечения в роли ведущего программиста-проектировщика с конца 90х годов. Фриланс никогда не был основным источником моего дохода. Но в 2010 году я начал всерьез заниматься фрилансом как побочным видом деятельности, приносящим существенный доход (за несколько месяцев я вышел на уровень продаж порядка $5k в месяц с фрилансерских контрактов с практически нулевыми расходами на исполнение контрактов, за исключением моего времени). Позднее я переехал в Северную Америку, но фриланс продолжает оставаться для меня важным побочным бизнесом. Кроме того, в своей работе я постоянно общаюсь с фрилансерами, в т.ч. профессиональными full-time фрилансерами из Северной Америки.

В этой статье я хотел бы поделиться своим опытом работы на площадках вроде elance.com с коллегами из экс-СССР и дать конкретные рекомендации по входу на рынок, позиционированию услуг, конкуренции с демпингом из Южной Азии, а также дать ликбез по общей профессиональной подготовке.
Много текста с конкретными примерами
Total votes 32: ↑31 and ↓1+30
Comments24

Пишем драйвер пользовательского окружения для uinput на Raspberry Pi

Reading time7 min
Views20K
Фотография дисплеяРади одного из своих небольших проектов на Raspberry Pi 2 я приобрел емкостной сенсорный дисплей Waveshare с демократичной ценой, скромным разрешением и сомнительной поддержкой. В коробке с дисплеем лежала DVD-R DL, и по заявлениям продавца, там лежали образы систем на базе Raspbian. Прочитать их мне не удалось, поиск решений в интернете подсказал, что драйвер, который там лежал, был и так не самым лучшим решением (уже скомпилированное ядро без исходников).

В процессе поиска я наткнулся на проект одного парня из дружественного Китая. Благодаря нему я смог прийти к своему решению.

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments11

50 наиболее интересных hardware-стартапов в Европе

Reading time2 min
Views18K


Мы адаптировали подборку европейских hardware-стартапов и привели примеры собственных портфельных проектов в данной области. Подборка наиболее заметных стартапов поможет вам быстро разобраться в трендах, оценить потенциальных конкурентов и направить собственный проект в нужное русло.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments3

Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных

Reading time2 min
Views148K
Очередной пост в рамках нашего цикла лекций Технопарка. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.

Лекция 1. Основы


Начало первой лекции посвящено обсуждению основных понятий, на которых строится вся дальнейшая программа курса: что такое алгоритм и структура данных. Описаны базовые виды алгоритмов, их характеристики и методы анализа. Далее рассматриваются примеры создания алгоритмов для вычисления чисел Фибоначчи, проверки числа на простоту, быстрого возведения числа в целую степень. В конце лекции рассказывается об особенностях использования алгоритмов для работы с массивами: создание однопроходных алгоритмов, поиск минимального элемента, бинарный поиск.


Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments14

ПЛК Ace: маленький контроллер для «умного дома»

Reading time7 min
Views50K
Я занимаюсь разработкой программ для программируемых логических контроллеров(ПЛК) в промышленных автоматизированных системах управления технологическими процессами(АСУ ТП).

Для тех, кто сталкивается с этим словом впервые, поясню. ПЛК это специальный мини-компьютер, который работает так:
1. Принимает входные дискретные (Di) или аналоговые (Ai) сигналы;
2. Обрабатывает эти сигналы по заданной программистом программе;
3. Выдает управляющий сигнал через дискретные (DO) или аналоговые (AO) выхода.

Дискретный — когда у сигнала может быть только 2 состояния: 0 или 1, «да» или «нет». Например, кнопка нажата или отжата, лампочка включена или выключена.
Аналоговый — когда значение параметра зависит от уровня электрического сигнала. Например, чем выше уровень сигнала (вольт или миллиампер) от датчика температуры, тем больше измеряемая температура.

Применяются ПЛК в основном в промышленности, станках, системах домашней автоматизации «умный дом» и т.д.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments24

Bubot — очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации

Reading time10 min
Views39K

Предыстория


Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой целью начал изучать имеющиеся возможности. Для себя я разделил все решения на две группы: системы в которых код на контроллере выполняется в одном главном цикле (arduino, lego и т.п.) и системы состоящие из параллельно работающих процессов обменивающихся между собой сообщениями.
Интуитивно выбрал вторую группу, так как хотелось найти максимально простое решение с дружественным пользовательским интерфейсом. Из наиболее популярных представителей этого «семейства» очень понравились Microsoft Robotics Studio и ROS. Но к сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, да и разобраться в них с нуля так же весьма не тривиальная задача. В итоге принял решение писать сам, но «кодить» на C очень не хотелось, Душа просила чего-нибудь попроще и полегче. В итоге выбрал Python. А учитывая, что по мимо робота и «умного дома» в голову начало лезть куча других идей, то решил сразу сделать небольшой фреймворк, в котором основной упор был бы сделан на простоту разработки.

Концепция


Концептуально фреймворк представляет собой набор поддерживаемых пользователем модулей реализующих различные функции робототехники. При работе Bubot строит сеть из процессов, которые могут асинхронно получать и отправлять сообщения между собой. Так же вы можете построить сеть из роботов, которые будут общаться между собой.

Bubot - Схема

Сеть процессов строится на базе стандартного Python модуля multiprocessing. Система обмена сообщениями и разделяемая память реализованы при помощи Redis.

Каждый Bubot имеет встроенный веб-сервер веб-сервер Tornado, который позволяет контролировать состояние, управлять роботом, на ходу менять параметры (калибровать) робота, а также закладывается возможность обмена данными между роботами.
Bubot не является системой реального времени, хотя Bubot возможно интегрировать с кодом реального времени.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments10

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16+309
Comments107

Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$

Reading time3 min
Views311K


В последнее время всё большую популярность набирают Wi-Fi модули на основе ESP8266. Я тоже решил приобщиться к прекрасному, задумав реализовать термометр, отдающий данные по HTTP. Итак, поехали.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments74

Архитектура мобильного клиент-серверного приложения

Reading time33 min
Views138K

К добавлению внешнего сервера рано или поздно приходит любой сложный проект. Причины, при этом, бывают совершенно различные. Одни, загружают дополнительные сведения из сети, другие, синхронизируют данные между клиентскими устройствами, третьи- переносят логику выполнения приложения на сторону сервера. Как правило, к последним относятся большинство «деловых» приложений. По мере отхода от парадигмы «песочницы», в которой все действия выполняются только в рамках исходной системы, логика выполнения процессов переплетается, сплетается, завязывается узлами настолько, что становится трудно понять, что является исходной точкой входа в процесс приложения. В этом момент, на первое место выходит уже не функциональные свойства самого приложения, а его архитектура, и, как следствие, возможности к масштабированию.
Заложенный фундамент позволяет либо создать величественный архитектурный ансамбль, либо «накурнож» — избушку на куриных ножках, которая рассыпается от одного толчка «доброго молодца» коих, за время своего существования повидала видимо — невидимо, потому что, глядя на множественные строительные дефекты заказчик склонен менять не исходный проект, а команду строителей.
Планирование — ключ к успеху проекта, но, именно на него выделяется заказчиком минимальный объем времени. Строительные паттерны — туз в рукаве разработчика, который покрывает неблагоприятные комбинации где время — оказывается решающим фактором. Взятые за основу работающие решения позволяют сделать быстрый старт, чтоб перейти к задачам, кажущиеся заказчику наиболее актуальными (как-то покраска дымоходной трубы, на еще не возведенной крыше).
В этой статье я постараюсь изложить принцип построение масштабируемой системы для мобильных устройств, покрывающей 90-95% клиент-серверных приложений, и обеспечивающей максимальное отдаление от сакраментального «накурножа».
Читать дальше →
Total votes 20: ↑11 and ↓9+2
Comments7

Питер Тиль: конкуренция – удел проигравших

Reading time8 min
Views55K


Cтэнфордский курс CS183B: How to start a startup. Стартовал в 2012 году под руководством Питера Тиля. Осенью 2014 года прошла новая серия лекций ведущих предпринимателей и экспертов Y Combinator:


Первая часть курса
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments53

Никогда не «не делай» того, о чем пожалеешь или умный дом с CCU.IO

Reading time12 min
Views119K
На хабре последнее время появляется много статей об автоматизации дома. Какие-то статьи с пространными размышлениями на тему умного дома, не несущие полезной нагрузки. Какие-то с конкретной реализацией на конкретном проприетарном железе, но им не хватает чего то для того, что бы быть установленными или запущенными в другом доме.

Хочу представить программную платформу автоматизации для дома на базе Node.js, которую можно скачать со всеми исходниками и установить прямо сейчас практически одним кликом (Windows) или одной командой (Linux/Debian).


Подробности
Total votes 84: ↑81 and ↓3+78
Comments88

3d принтеры: китайские «близнецы»

Reading time3 min
Views46K
Три девицы под окном
Пряли поздно вечерком.



Под катом есть разоблачение трех китайских близнецов, лайвхак как в полевых условиях отличить пластик ABS от PLA, а так же каким народным методом можно чистить засорившееся сопло.

Читать дальше →
Total votes 32: ↑26 and ↓6+20
Comments10

Google купила производителя термостатов за 3.2$ млрд

Reading time1 min
Views64K
image

Не готовится ли Google предложить что-то и для идеи «умного дома»?

Сегодня стало известно, что поисковый гигант приобрёл компанию Nest — производителя термостатов — за значительные 3.2 миллиарда долларов. О самой компании стало известно примерно три года назад: в частности то, что главой компании является Тони Феделл, бывший старший вице-президент одного из подразделений Apple (именно с ним связывают выпуск и успех iPod), а её техническая сторона, вероятно, имеет академические корни — вице-президентом является Йоку Мацуока, профессор CS университета Вашингтона.
Узнать подробности
Total votes 37: ↑33 and ↓4+29
Comments29

Обзор UP! 3D Printer Mini

Reading time4 min
Views52K

Данная модель привлекла мое внимание и я хочу поделиться с публикой, по той причине, что это готовый, законченный, настроенный (можно достать из коробки и печатать) принтер по цене набора для самостоятельной сборки. (45 000 рублей, цена на складе в Москве, т.е. уже с учетом «таможни»).

Этот принтер прост.
(Если хотите узнать, что такое «сложно» — почитайте здесь, здесь или здесь. А так же можно найти того счастливчика, кто обладает принтером Solidoodle).

Этот принтер дешев.
В сравнении с Up! Plus 2 за 83 тысячи рублей, Picaso, Ultimaker 2, Printbox3d, Replicatort 2 (которые есть в Москве) — больше 99 тыс рублей.

Этот принтер работает. Его не надо собирать по кусочкам, у него уже есть все настройки и драйвера, выставлены все параметры и тд.
Нужно только скачать ПО с сайта, загрузить 3д модель, ввести уровень платформы и отправить на печать.

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

Дерзкий слоган на коробке


Как у американских военных
image
image


Под катом несколько фотографий содержимого принтера и короткие комментарии.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments5

Список сервисов 3d-печати

Reading time2 min
Views107K
image

Добрый день всем!


На хабре относительно часто можно увидеть статьи посвященные 3d принтерам, сравнению их цен и возможностям заказа у нас.
А как дело обстоит с готовыми 3д моделями?
Что если я пока не хочу покупать принтер, а «пощупать» напечатанную модель было бы интересно. И желательно выбрать из каталога готовых моделей, а не рисовать самому.
Много ли ресурсов, где их можно скачать, купить или распечатать из каталога?
Отвечая на эти вопросы я и решил сделать небольшой список ресурсов с возможностью выбора готовых моделей и заказа печати.

Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments18

Зачем регистрировать программу для ЭВМ? Актуально на 2021 год

Reading time3 min
Views112K
Статья актуальна на 2021 год!

По российскому законодательству права на программное обеспечение (ПО) охраняются так же, как авторские права на произведения литературы. Однако в отличие от литературных произведений государство предусмотрело в отношении программы для ЭВМ дополнительное средство защиты — регистрация в федеральном органе исполнительной власти по интеллектуальной собственности (Роспатент).

Это наиболее очевидный и простой способ защиты прав на ПО. Но насколько этот способ защиты действенный и какие преимущества в защите прав дает регистрация?

Внимание! Апгрейд статьи в связи с изменением порядка регистрации с 18 июля 2016 г. здесь.

image

Попробуем разобраться
Total votes 47: ↑38 and ↓9+29
Comments34

Wandboard Freescale i.MX6 — мини ПК для разработчика за 69 у.е

Reading time1 min
Views71K


Сейчас миниатюрные ПК появляются в самых разнообразных вариантах. Надо думать, что уже в недалеком будущем появится гораздо больше моделей таких ПК, чем сейчас, однако, и в настоящее время количество мини-компьютеров велико. Новинки появляются с завидной регулярностью, и среди таких новинок есть те модели, что заслуживают особого внимания. Таким устройством является и Wandboard Freescale i.MX6, позиционируемый производителем как мини-ПК для разработчика.

Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments34
1
23 ...

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity