• Договорные модели разработки ПО

    • Tutorial
    Как юристы в сфере ИТ, мы готовим договоры на создание ПО как для разработчиков, так и для заказчиков. В договоре необходимо учесть особенности различных моделей разработки ПО, выделить возникающие в связи с этим риски клиента и постараться их нивелировать.

    Сегодня мы рассмотрим наиболее популярные условия заказной разработки ПО с точки зрения распределения рисков между заказчиком и исполнителем и дадим рекомендации по их снижению на уровне договора.

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

    1. Договор с фиксированной ценой (Fixed Price)


    Условия применения. Применяется в стандартных проектах с понятными решениями и требованиями, поддающимися детализации. Требования к результату выносятся в отдельное техническое задание. Фиксируются сроки выполнения работ и их стоимость.

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

    Риски заказчика. Сложность изменения требований к продукту в процессе его разработки. В результате такие условия плохо подходят к разработке нестандартного ПО и сложных систем.
    Читать дальше →
    • +10
    • 5,2k
    • 2
  • Типичные взаимные блокировки в MS SQL и способы борьбы с ними

      Чаще всего deadlock описывают примерно следующим образом:
      Процесс 1 блокирует ресурс А.
      Процесс 2 блокирует ресурс Б.
      Процесс 1 пытается получить доступ к ресурсу Б.
      Процесс 2 пытается получить доступ к ресурсу А.
      В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
      Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.


      Читать дальше →
    • DDoS атака в обход Qrator. Как защититься?

        Есть сервисы, защищающие нас от DDoS атак. Они работают по принципу прокси: в DNS прописывается их IP, они фильтруют трафик и проксируют на ваш сервер. Все они настоятельно рекомендуют прятать свой IP и в публичном доступе давать только IP прокси-защитника. Вполне здравый подход, достаточный для успешной защиты. А я расскажу на чем можно проколоться и как от этого защитится.
        Читать дальше →
      • Мой опыт построения промышленной сети 1-Wire

        Предыстория

        Как и многие хабрапользователи, обладая некоторыми навыками и неплохой фантазией, как-то наткнулся на сайт, тогда еще он висел на народе, и посвящался сопряжению самодельных устройств с ПК. Именно тогда зародилось семя безудержного интереса, чтобы что-то сделать и управлять этим с компьютера. Тогда, конечно, все начиналось с lpt порта принтера и постепенно перерастало на com порт и в конечном на usb. Все бы ничего, пока не наткнулся на сайт, посвящений созданию системы умного дома. Тогда я понял, что мне действительно интересно. Опустим долгий и интересный рассказ и перейдем прямо к теме.Пишу данную статью в качестве любителя, не профи, и надеюсь она поможет вам создать свою сеть с нуля, или почерпнуть полезный опыт для своей сети.В статья я хочу описать создание своей сети 1wire с нуля, включая все этапы построения и полезные советы.
        • Проектирование, печать, травление, лужения и пайка печатной платы;
        • Монтаж промышленной шины 1wire;
        • Программные и аппаратные средства управления и мониторинга.
        Читать дальше →
      • Квадрокоптер DJI Phantom FC40 — мини-разбоксинг и первый полёт

          Приветствую,

          С летающими аппаратами, типа квадрокоптеры и его собратьями, я знаком очень поверхностно. Видел в пару фильмов и рекламных клипах, а в живую только на картинках и особого желания приобрести что-то подобное не было.
          Но как это часто бывает, определённые события меняют ход дальнейших действий. Вот так случилось и у меня. Я увидел видео «каспаров и полёт валькирии» :) и решил «хочу».

          Почитав разные статьи/форумы про квадрокоптеры и посмотрев десятки видео с полётами и падениями, мой выбор сузился до моделей типа ready-to-fly. Я не хотел собирать дрона сам, не хотел ничего паять и не хотел после сборки обрабатывать напильником, что бы он полетел. Я хотел достать товар коробки, зарядиться и улететь.

          Дальнейшее штудирование темы остановило мой выбор на фирме DJI. В ассортименте были навороченные модели с много-мегапиксельными камерами, большим радиусом полёта, долгоиграющими аккумуляторами и прочими плюшками. Но цена отталкивала. Запустить больше 1000 евро в стратосферу — нет, спасибо. Для первой «этажерки» это через чур кучеряво и я снизил ценовую планку.

          В итоге мной была выбрана модель DJI Phantom FC40.

          Читать дальше →
        • Исчерпывающее руководство по составлению почтовых рассылок

          • Перевод


          Несмотря на то, что большая часть общения онлайн перешла в социальные сети, почтовые рассылки по-прежнему остаются важной частью любой маркетинговой кампании.
          Читать дальше →
        • Заставьте сайт работать на сенсорных устройствах



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

            Читать дальше →
            • +26
            • 50,2k
            • 7
          • Собираем лазерный проектор из доступных деталей

              UPD: Добавлены файлы платы с ЦАП на GitHub

              Изначально я планировал сделать Лазерную арфу, но пока получился промежуточный результат — устройство, которое можно использовать как лазерный проектор — рисовать лазером различные фигуры, записанные в файлах формата ILDA. Я в курсе, что многие, кто берется за сборку лазерного проектора, в качестве устройства, управляющего гальванометрами (так и не понял как лучше перевести на русский сочетание “galvo scanner"), используют дешевые слегка модифицированные звуковые платы для компьютера. Я пошел иным путем, так как в конечном счете мне нужно будет полностью автономное устройство, которое может работать без компьютера.



              Посмотрим из чего состоит мой лазерный проектор. Стоимость всех деталей составила около 8000 руб, из которых больше половины — это 70mW лазерный модуль.
              1. Гальванометры и драйверы к ним для отклонения луча лазера по осям X/Y
              2. 532нм 70mW лазерный модуль с питанием от 5В Dragon Lasers SGLM70
              3. Texas Instruments Stellaris Launchpad
              4. Самодельная плата с ЦАП AD7249BRZ
              5. Блок питания

              Читать дальше →
            • Наш контроллер для умного дома



                UPD: мы сняли работу Wiren Board Smart Home на видео

                Краткое содержание:


                На базе нашей платформы Wiren Board (компактный индустриальный компьютер с Linux и разными интерфейсами) мы сделали навороченный контроллер для домашней автоматизации Wiren Board Smart Home (ARM9 64MB RAM, GSM/GPRS, Ethernet, Wi-Fi, USB, 2xRS-485/Modbus, CAN, 2 реле, ASK/FSK радиомодуль 433MHz, NRF24L01+ и т.д.), к которому можно подключить кучу всяческих проводных и беспроводных исполнительных устройств и датчиков от разных систем и производителей. Устройство готово и протестировано. На устройства из первой большой партии мы открываем заказ с доставкой до майских праздников по специальной цене.
                Читать дальше →
              • Начинаем изучать Cortex-M на примере STM32, часть 2

                • Tutorial
                Данная статья является продолжением цикла по программированию микроконтроллеров на базе ядра Cortex-M.
                Первую статью можно прочитать здесь:
                Начинаем изучать Cortex-M на примере STM32
                Задачей статей является подробное описание особенностей, возникающих при программировании МК. Материал не предназначен для желающих за 10 минут запустить пример мигания светодиодом. Я постараюсь подробно описать то, что часто скрывают от новичков, чтобы их не напугать.

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

                Основной акцент сделан на изучение документации на ядро Cortex-M и документации на конкретный контроллер.
                На этот раз речь пойдет про прерывания, а так же будут затронуты некоторые вопросы архитектуры памяти и структуры прошивки МК.
                Продолжение под катом
              • Уменьшаем количество проводов в Arduino — I2C LCD экран и RTC часы по двум проводам

                Совсем недавно познакомился с Ардуино, поэтому многим мои примеры покажутся простыми.

                Однако таким же новичкам, как я, данная информация будет полезна и сэкономит массу времени.

                I2C — стандарт общения устройств по 2м проводам, при этом количество устройств, которое висит параллельно на этих проводах может быть очень большим. У каждого устройства есть свой адрес, по которому происходит обращение к устройству. Адресацию можно менять, если на устройстве есть перемычки, которыми можно установить дополнительное смещение относительно базового адреса, жестко прописанного в устройстве.

                Это в двух словах.

                Начал я все с того, что купил 16х2 символьный LCD дисплей на Ибее. Подключив стандартно — понял что это не то, что нужно. Масса проводов — занимает кучу ножек, хаос и беспорядок.

                image

                Погуглил, понял что есть дисплеи с интерфейсами, упрощающие подключение. погуглил еще, нашел переходник на I2C для моего LCD. Месяц ожидания, ура-ура, подключил.

                image

                Выглядит гораздо интереснее!

                Читать дальше →
              • Гексапод Б.У.Н.Т

                  Насмотревшись на youtube видео про гексаподов (особенно впечатлил PhantomX), решил попробовать свои силы в роботостроении. Забегая вперёд — всё получилось и вот результат:



                  Всех интересующихся прошу под кат, там вкратце описана история создания и трудности с которыми пришлось столкнуться, а так же видео работы гексапода. Ни каких графиков, схем и кода, только лирика.
                  Читать дальше →
                • Как создавать и зарабатывать на SaaS (Часть 2 / бесценный опыт российских ISV)

                  image

                  В первой части статьи я рассуждал о способах оптимизации стоимости/функциональности при создании SaaS (Онлайн) сервисов. Мой подход к проблеме был скорей стратегический (куда бежать, что отрезать), но не технологический, да и надо было с чего-то начать. Что из этого получилось можно прочитать тут.

                  Сегодня, как я и обещал, у меня гости, которые открыто делятся своими рецептами создания успешных SaaS историй. Отмечу, что большинство приглашенных компании уже состоялись в плане бизнеса и лидируют в свои сегментах автоматизации (гуру). Пришли и проекты, которые только начинают завоевывать сердца пользователей семимильными шагами (новички). В гости, сегодня, заглянули: amoCRM, МойСлад, Asoft CRM, Сopiny, Do.Docs, Zingaya, SMEOn и я задал всем одни те же вопросы, которые помогут тиражировать опыт коллег и передать его новым командам. По-моему, получился интересный микс мнений, который поможет правильно подойти к созданию SaaS всем тем, кто решит или уже решил играть на этом поле.

                  Собственно, вопросы:

                  1. Как возникла идея создания сервиса?
                  2. Инструментарий разработки и почему именно этот?
                  3. Целевая аудитория сервиса?
                  4. Экономия при создании — методы, подходы, технологии.
                  5. Стратегия продвижения.
                  6. Friends/family/fools — откуда были привлечены средства на начало разработки?
                  7. Ошибки проекта и как справлялись.
                  8. Особое мнение (бонус по делу).

                  Читать дальше →
                • 10+ полезных jQuery сниппетов на каждый день

                  • Перевод
                  • Tutorial


                  Спустя годы библиотека jQuery стала неотъемлемой частью в работе каждого web-разработчика. Ведь она простая в использовании, быстрая и имеет очень широкие возможности. В этой статье я собрал список из более чем десяти сниппетов, которые вы можете свободно брать для использования. Их очень легко адаптировать под нужды ваших собственных проектов.
                  Читать дальше →
                • Делаем вебсокеты на PHP с нуля

                  Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

                  Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

                  Так я решил написать необходимый для меня функционал с нуля.

                  Получившийся код и ссылка на демонстрационный чат в конце статьи.
                  Читать дальше →
                • Трюки с CSS-анимациями: мгновенные изменения, отрицательные задержки, анимация transform-origin и другое

                  • Перевод
                  Применяя CSS-анимации в повседневной работе, я постепенно выработал привычку экспериментировать с ними в свободное время. Постоянно пытаясь реализовать очередную интересную задумку с использованием как можно меньшего числа элементов HTML, я обнаружил немало способов сделать с помощью CSS довольно неочевидные вещи. В этой статье я хочу поделиться некоторыми из них.

                  Быстрое изменение состояния посреди анимации

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

                  @keyframes toggleOpacity {
                    50% { opacity: 1; } /* Turn off */
                    50.001% { opacity: 0.4; }
                  
                    /* Keep off state for a short period */
                  
                    52.999% { opacity: 0.4; } /* Turn back on */
                    53% { opacity: 1; }
                  }
                  

                  Вот как я использовал этот приём для имитации мигающей неоновой вывески с помощью прозрачности и свойства text-shadow:


                  Читать дальше →
                • Очередной mp3-box из mpd и raspberry

                    Захотелось мне собрать сетевой аудиоплеер. Не «медиа», а исключительно под музыку. Раньше этим занимался домашний сервер (foobar2000 + всякие удаленные управления для него), но наконец-то созрел вынести его поближе к точке входа сетевых проводов в квартиру, потому возникла вакансия. А десктоп или ноут для этого использовать накладно в плане потребления ресурсов. Я не требователен, музыка у меня играет просто для создания приятного фона, а не для эстетического наслаждения, потому каких-то высоких требований к аудиотракту у меня не было, лишь бы не шипел сильно.

                    image

                    ТЗ изначально выглядело так:
                    1) ethernet, в крайнем случае — wifi
                    2) поддержка самбы и всяких интернет-радио
                    3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
                    4) аудио-разъем 3,5мм
                    5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
                    6) готовое устройство, а не конструктор
                    Читать дальше →
                  • Создаём сетевую звуковую карту с преферансом и поэтессами

                      Вдохновленный топиками раз и два, решил соорудить нечто похожее.

                      В наличии:
                      — Один усилитель с колонками
                      — Один стационарный компьютер
                      — Один ноутбук
                      — Желание слушать интернет радио независимо от двух предыдущих пунктов и перетыканию проводов

                      В результате родился план собрать «audio card over ethernet». Исследовав вопрос совместимости оборудования, я выбрал роутер TP-link MR3020 и USB аудио-карточку Creative SB Play.

                      Что из этого получилось:


                      О том, как это получить, добро пожаловать под кат.
                      Читать дальше →
                    • Несколько интересностей и полезностей для веб-разработчика (выпуск 2)

                        Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

                        Webflow



                        С помощью данного сервиса вы сможете сверстать кроссбраузерный отзывчивый макет за 55 минут. Очень красивый и удобный интерфейс. Идеальное решение для веб-дизайнеров, 26 000 из которых уже используют Webflow. Для создания двух проектов сервис бесплатный, а в дальнейшей перспективе вас ждут вполне демократичные цены. Инструмент реально «крутой».

                        Если Вам GUI для верстки не комильфо сам по себе как для меня, все равно рекомендую зарегистрироваться и экспортировать парочку responsive макетов. А еще есть простой генератор отзывчивого лэйаута и Responsive Patterns.

                        Parallax.js


                        Функциональный и простой инструмент для создания параллакс эффекта.

                        Читать дальше →
                        • +104
                        • 81,5k
                        • 27
                      • OpenWRT, или Что еще можно сделать со своим роутером

                            Здравствуйте, на написание данной статьи меня натолкнула аналогичная, но в качестве сервера выступала Raspberry Pi. По моему мнению использовать эту маленькую, но при этом достаточно мощную платку в этих целях немного не целесообразно, у многих есть wi-fi роутер с USB портом, а следовательно зачем включать в розетку целый блок питания от компьютера давая при этом пускай и не большой, но все таки расход электроэнергии когда в розетку включено уже все что надо.
                        В данной статье рассмотрим установку торрентокачалки на практический любой роутер с USB и поддержкой OpenWRT прошивки. В наличии у меня имеется Linksys E3000, но конкретной разницы в установке и настройке OpenWRT нет. Что нам для этого будет нужно:

                        • Непосредственно роутер с разьемом USB, в идеале конечно с двумя.
                        • Флешка/ USB HDD произвольного объема под Ваши нужды чем больше тем лучше.
                        • Буквально пол часа свободного времени чтобы все поставить и настроить.
                        • Прямые руки.
                        Читать дальше →