• Охота на мифический MVC. Обзор, возвращение к первоисточникам и про то, как анализировать и выводить шаблоны самому

      — Не понимаю, почему люди так восхищаются этим Карузо? Косноязычен, гугнив, поёт — ничего не разберешь!
      — А вы слышали, как поёт Карузо?
      — Да, мне тут кое-что из его репертуара Рабинович напел по телефону.

      Детектив по материалам IT. Часть первая


      Я осознаю, что писать очередную статью на тему Модель-Вид-Контроллер это глупо и вредно для «кармы». Однако с этим «паттерном» у меня слишком личные отношения – проваленный проект, полгода жизни и тяжелой работы «в корзину».


      Проект мы переписали, уже без MVC, просто руководствуясь принципами – код перестал быть похож на клубок спагетти и сократился наполовину (об этом позже, в обещанной статье про то, как мы применяли «принципы» в своем проекте). Но хотелось понять, что же мы сделали не так, в чем была ошибка? И в течении долгого времени изучалось все, что содержало аббревиатуру MVC. До тех пор пока не встретились исходные работы от создателя – Трюгве Реенскауга…


      И тогда все встало на свои места. Оказалось что фактически на основе принципов мы пере-изобретали «original MVC». А то, что зачастую преподносится как MVC, не имеет к нему никакого отношения… впрочем также как и к хорошей архитектуре. И судя по тому сколько людей пишет о несостоятельности «классического MVC», спорит о нем и изобретает его всевозможные модификации, не одни мы столкнулись с этой проблемой.


      Более 30 лет собранные в MVC идеи и решения остаются наиболее значимыми для разработки пользовательских интерфейсов. Но как ни странно, несмотря на существующую путаницу и обилие противоречивых трактовок, разработчики продолжают довольствоваться информацией «из вторых рук», черпая знания о MVC из википедии, небольших статей в интернете и фреймворков для разработки веб-приложений. Самые «продвинутые» читают Мартина Фаулера. И почему-то почти никто не обращается к первоисточникам. Вот этот пробел и хотелось бы заполнить. И заодно развеять некоторые мифы.


      Читать дальше →
    • Умножение по методу русских крестьян

      • Translation
      Иногда этот метод называют «крестьянское умножение», иногда «древнеегипетское», иногда «эфиопское», иногда «умножение через удвоение и деление пополам». Некоторым он хорошо известен, некоторым – непонятен, но при этом он достаточно полезен и может использоваться не только для умножения, но и для возведения в степень и расчётов матриц.

      Алгоритм


        13  x  19 ->     0
         6     38       19
         3     76 ->
         1    152 ->    95
         0    304      247
                       ^^^
      

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

      Если число в левом столбце нечётное, мы добавляем число из правого столбца в нарастающую сумму. Изначально она будет равна нулю.

      Затем в левом столбце ниже мы записываем число из заголовка, делённое пополам (с отбрасыванием остатка). 13 / 2 = 6. А во втором столбце мы пишем число, равное удвоению заголовка столбца, 19*2 = 38.

      Поскольку число в левом столбце чётное, мы не увеличиваем нарастающую сумму.
      Читать дальше →
    • Хром, укравший рождество

        Я люблю свою профессию. Сидишь, никого не трогаешь, починяешь примус пишешь код. К тебе подходит тестировщик и говорит, что в календаре на сайте в 2015 году нет рождества. Ты спокойно отвечаешь, что такого не бывает, открываешь страничку у себя и показываешь что все хорошо. Вот только тестировщику от этого не легче. Потому что у него действительно нет рождества.
        Читать дальше →
      • То, чего еще никто не писал про Нокиа, Элопа и горящую платформу

          Взявшись за этот пост, автор полностью отдает себе отчет. И в том что «набило оскомину». И что «только ленивый не кинул камень». И про то что «хватит уже, достали». Однако, вдоволь начитавшись доморощенных и не очень аналитиков, автор решил все-таки выразить собственное мнение, которое отличается от того общепринятого, что с некоей мазохистской истомой доселе перепечатывалось здесь и тут различными авторами, интерпретаторами и переводчиками. Вероятно кому-то будет интересно его прочитать.

          Традиционно, для тех кто не любит много буков, краткие (более-менее) тезисы:

          • Будучи долгое время лидером на рынке, Нокиа сильно расслабилась и загадила свою внутреннюю инфраструктуру бюрократией, чрезмерным аутсорсингом и огромным количеством бесполезной «менеджерской прослойки».
          • Будучи долгое время лидером, Нокиа просрала потратила много денег на ненужные операционные расходы, поглощения никому не нужных фирм и на невменяемую модель аутсорсинга.
          • Полностью оторвавшись от реальности с уходом Йормы Оллилла, Нокиа, под управлением гениального юриста CEO Олли-Пекки Каласвуо, потратила кучу денег и усилий на создание бесполезной и неконкурентоспособной сервисной инфраструктуры Ovi. В результате этого, помимо денег, Нокиа потеряла уйму полезного времени, которое можно и нужно было потратить на развитие основного бизнеса — телефонов, софта и т.д.
          • Бюрократия и непотопляемая менеджерская прослойка в Нокиа, последовательно мигрировала из одного передового проекта в другой, в составе одних и тех же групп лиц, самореплицируясь в виде кучи формальных дебилопроцессов комитетов и управленческих групп, немного перетасовываемых с учетом специфики. В итоге именно эта бюрократия убила и Symbian, и Ovi, и MeeGo и остальные попытки догнать уходящий поезд своими силами.
          • Борьба с бюрократией и прослойкой в Нокиа зашла в полный тупик.
          • У великого CEO Элопа просто не было другого выхода кроме как прибить всю старую, неповоротливую и прогнившую организацию, путем создания альянса с Майкрософтом и переходом на Windows Phone. Тем самым все старые процессы, компетенции, технологии и самое главное — люди резко стали, что называется, «не в тему». И следовательно тем самым можно было под благовидным предлогом прибить этот табун менеджеров, бесконечно рисующих фэнтезийные роадмапы с единорогами и перекладывающих бумаги с левого края стола на правый.
          • Новая Нокиа, после 2011 года и старая Нокиа до 2011 года – это две РАЗНЫЕ организации. Их объединяет только общее название и операционка S40 для телефонов Asha.
          • Горящая платформа, это не Symbian и не MeeGo. Горящая платформа, это то состояние в которое Нокиа загнали годы расслабленного лидерства и тупоголовые амбиции предыдущего CEO – Олли-Пекки Каласвуо с кликой подкаркивающих вице-президентов.
          • С бюрократией и бизнес процессами, имеющимися на 2010 год, Нокиа не спас бы ни Андроид, ни половина населения Бангалора, пишущих на Qt под MeeGo. Даже если бы Apple бесплатно передал Нокиа iOS и все сервисы, то они бы выродились руками всяких Requirement Managerов в типичные Нокийские дизайн-химеры и в итоге загнулись через какое-то время.
          • То, что сделал великий CEO Элоп – было единственно возможным разумным решением, дающим хоть какие-то шансы на выживание. Вопрос «каким образом он это сделал?», остается открытым, равно как и вопрос «поможет ли это Нокиа?» в итоге. Не следует забывать, что нынешняя Нокиа — это совершенно новая организация, поэтому глупо предполагать, что она разом вернет себе лидерство. Как и всем новым организациям ей придется за это лидерство долго бороться.
          • Без ошибок и побед Нокиа никогда не было бы ни Андроида, ни Айфона. И Google и Apple тщательно проанализировали достоинства и недостатки более старших конкурентов перед тем как шагнуть вперед.

          Все это в деталях — под катом. Предупреждаю что клевых картинок там нет. Сплошное графоманство и ёрничанье.
          Читать дальше →
        • «Стартап без бюджета»: про бизнес неуютный, но интересный

            Краткое содержание: «Стартап без бюджета» = «книга-пинок под зад» + практическое руководство. Энергичным людям — must read.

            Я расскажу о книге, написанной авантюристом для авантюристов. Майк Михалóвиц, 30-летний предприниматель, основатель 3 успешных компаний. Он не гений, не вор, не наследник миллионера и совсем не «завоеватель друзей»с приклеенной улыбкой.

            Он — ТББ, «туалетно-бумажный бизнесмен». Термин неожиданный и резкий, в этой книге таких много. Он описывает модель поведения. Вы встаете с унитаза и видите — на рулоне с туалетной бумагой остались три сиротливых обрывка. Что будете делать? Высунете голову из двери и позовете на помощь? Сердито натянете штаны «как есть»? ТББ найдет способ обойтись подручными средствами.

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

            Предприятия этих людей и сейчас не слишком известны и доходны. Но своих создателей и их семьи они обеспечивают. С запасом.



            «Стартап без бюджета» — учебник по предпринимательству такого рода. Как всякий учебник, начинается с теории. Как всякая современная стартаперская книжка, рекомендует найти свое призвание. А вслед за рекомендацией дает четкие пошаговые инструкции — как это сделать.
            Читать дальше →
          • Боги убивают котенка, когда…

              RIP, kitten…Привет, Хабрахабр. Вчера ночью я наконец-то довел до юзабельного состояния свой маленький just-for-fun проект — http://godkillskitten.com.

              Если вкратце — это сайт, где каждый может публиковать небольшие критические заметки о вещах, которые многие люди делают изо дня в день, не подозревая, что на самом деле поступают не очень хорошо. После публикации заметки автор сразу же получает ссылку, которой можно поделиться со своей «музой», или просто разместить на видном месте где-нибудь в интернете. Хорошие заметки после рассмотрения модератором становятся доступными на главной странице сайта, средненькие живут один месяц и доступны по известной автору ссылке, удаляются только откровенно плохие.

              Да, еще заметки можно распечатывать и вешать на стенку в бухгалтерии.

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

              Читать дальше →
            • Как упростить себе жизнь при работе со сложными ТЗ на SEO-копирайтинг

                С техническими заданиями на написание текста, едва открыв которые, хочется быстро зажмурить глаза и нажать кнопку «выход», сталкивался, пожалуй, каждый SEO-копирайтер. Полтора – два десятка однообразных ключевых слов, которые должны присутствовать на одной странице текста; тематическое ядро сайта, описание которого уже занимает полстраницы…

                «Копирайтер с опытом работы раскроет вам главное правило текста для сайта: встретишь сеошника – убей его», – сказал неизвестный копирайтер.

                Мы же, выступая за мир во всем мире (ОК, начнем с малого – за мир в профессиональном сообществе) попытались собрать советы, которые облегчат жизнь:

                * копирайтерам, для которых важна литературная ценность их текстов, а присутствие пяти синонимов в двух предложениях подряд рушит все представления о прекрасном.
                * SEO-специалистам, на которых в проекте, волей случая, возложена роль копирайтера или менеджера копирайтеров.
                Читать дальше →
              • January 18, 2011 at 10:44 AM

                The Art Of Programming — Выпуск №55 [ Obj-C ] / Mac App Store

                image
                + Mac App Store
                + мультижесты
                + модели заработка в App Store
                + стоимость разработки

                книги:
                Core Data: Apple's API for Persisting Data on Mac OS X [Paperback]
                Core Data for iOS: Developing Data-Driven Applications for the iPad, iPhone, and iPod touch [Paperback]
                прослушан 1191 раз
              • Исследование факторов ранжирования в Яндексе

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

                  Начнем с внешних факторов. Критерии выбора внешних ссылок:



                  Читать дальше →
                • Омон оцепил Царицынский радиорынок. Ищут порнографию и контрафакт

                    ОМОН
                    Как сообщает Newsmsk.com, московский ОМОН оцепил Царицинский радиорынок. Торговые точки проверяют на наличие в продаже контрафакта и порнографии. По словам начальника пресс-службы Московского УВД на железнодорожном транспорте Татьяны Агаповой, проверка проводится в связи с заявлением Российской антипиратской организации. По её же словам, проверка займет несколько дней. Уже есть результаты — изъятые диски с фильмами. Они направлены на экспертизу, которая должна установить являются ли фильмы на дисках порнографическими.
                  • Архитектура и архитектурные стили веб-приложений – 1

                      Сравнение архитектурных стилейПредлагается справочная информация по основным архитектурным стилям веб-приложений с основными терминами по мотивам диссертации Роя Т. Филдинга (автора REST). В первой части предлагается список архитектурных стилей и таблица их сравнения. Во второй планируется описание самих стилей.
                      подробнее...
                    • Использование нейронной сети Хопфилда для решения простейшей задачи

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

                        Разговоры об искусственном интеллекте и громоздких экспертных системах — это конечно все хорошо, но как всю эту теорию приблизить к жизни, к нашим приклодным задачам?
                        Читать дальше →
                      • Мои 5 копеек на тему копирайта или Немного о структуре цен легального цифрового контента

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

                          Итак, вот есть данный портал, который, как он утверждает, занимает около 60 % рынка лицензионного цифрового контента. Договор с ним может заключить любой правообладатель (а это не обязательно сам автор произведения). Магазин берет себе 40 % от стоимости.

                          А теперь конкретизируем…
                          Читать дальше →
                        • Иллюзии XML/XSLT технологий

                            Иногда в компьютерном мире происходят всплески интереса к той или иной технологии. Всплески не случайные, а явно поддержанные производителями этих технологий. Это и не удивительно, ведь сложно продавать одно и то же, проще продавать что-то новое или старое, но названное иначе. Ничто так хорошо не продается, как функция, которой нет в прошлой модели. Почему так устроен потребитель? А мнение потребителя банально эксплуатируется, ему просто навязывается желание. Крупные производители ПО очень часто исчерпывают рынок сбыта и нуждаются в постоянной смене технологий для того, чтобы продать обновления и просто увеличить цены на программы. Ну и проще отстраиваться от конкурентов, заверяя, что у нас лучшие и новейшие технологии.

                            Так случилось с XML. Ведь XML — это, в общем-то, ничего нового. XML — это упрощённое подмножество языка SGML, который берет свое начало еще в GML 1960 года выпуска компании IBM. XML, по сути, просто стандартизировал формат обмена информацией и все.

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

                            • Translation
                            В любой сложной системе процесс оптимизации по большей части состоит из распутывания связей между различными слоями системы, каждый из которых обладает собственным набором ограничений. До сих пор мы рассматривали ряд отдельных сетевых компонентов детально — различные физические средства и протоколы передачи данных. Сейчас мы можем обратить наше внимание на более широкую, всеобъемлющую картину оптимизации веб-производительности:

                            • влияние задержки и пропускной способности на веб-производительность;
                            • ограничения, которые протокол TCP накладывает на HTTP;
                            • особенности и недостатки самого протокола HTTP;
                            • тенденции развития веб-приложений и требования к производительности;
                            • ограничения браузеров и возможность оптимизации.

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


                            Поэтому, прежде чем мы углубимся в рассмотрение и анализ передового современного опыта, важно сделать шаг назад и определить, в чем проблема на самом деле: что такое современное веб-приложение, какие инструменты у нас есть, как мы измеряем веб-производительность, и какие части системы помогают и мешают нашему прогрессу.
                            Читать дальше →
                          • Переход от 2-х звенки к архитектуре служб в парадигме SOA

                            В данной статье я бы хотел поделиться своим опытом организации перехода от классической 2-х звенки к парадигме SOA, также затронуть некоторые аспекты деплоя в рамках enterprise-решения и интеграции со смежными службами, написанными на Java

                            Предистория

                            Последние 3 года я работал в отделе внутренней автоматизации компании Новотелеком. Основное развитие систем для автоматизации внутренних процессов смежных с IT подразделений началось в 2008 году вместе с активным ростом самой кампании. В то время руководство не ставило целей делать качественные решения, основной целью было завоевание рынка, и это отложило отпечаток на принимаемые решения. Основной из систем над которыми работает отдел ВА — это внутренняя CRM система, которая включает в себя также элементы планирования человеческих ресурсов и справочные системы. Долгое время система писалась на самописном фреймворке, но после знакомства с Yii и реализации сайта компании на нем, было принято решение перевода системы на данный фреймворк. Обсуждения почему был выбран именно этот фреймворк выходят за рамки моей статьи.
                            Читать дальше →
                          • Цифровая стабилизация изображения со стационарных камер — корреляционный подход

                              Введение


                              Данную статью я решил написать после прочтения статьи «Массивно-параллельная стабилизация изображения», в которой описывается алгоритм для стабилизации изображения с поворотных камер. Дело в том, что в свое время мной был реализован алгоритм для стабилизации изображения со стационарных камер, который используется в IP-видеосервере MagicBox и некоторых других продуктах компании Синезис, в которой я работаю по настоящее время. Алгоритм получился достаточно удачным по своим скоростным характеристикам. В частности, в нем очень эффективно реализован алгоритм поиска смещения текущего изображения относительно фона. Эта эффективность позволила задействовать основные его элементы (конечно с некоторыми модификациями) для сопровождения объектов, а также для проверки их на неподвижность.

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

                              Рис. 1 Стабилизация изображения иногда очень полезна.

                              Читать дальше →
                            • QtCreator: Qt кросс-компиляция из linux 64 в linux 32, win32, win64 и Mac OS X; upx, usb, dmg, etc



                                Библиотека Qt позволяет делать действительно кроссплатформенные приложения. Единожды написанный код можно откомпилировать под многие операционные системы. Но проблема именно в слове «компилировать», т.к. подразумевается, что необходимо перезагрузиться под целевую систему, иметь в ней настроенную среду разработки, установленный и настроенный зоопарк библиотек. Спасает кросс-компиляция — компиляция, производящая исполняемый код для платформы, отличной от той, на которой исполняется.
                                Читать дальше →