• Охота на мифический MVC. Построение пользовательского интерфейса

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


      В этой части я покажу как изначально выглядело деление пользовательского интерфейса и что из себя представляли Вид и Контроллер. Попробую рассказать почему в современных GUI библиотеках используется их объединение и какие вообще интересные решения можно найти в этой области на сегодняшний день. Ссылки на первоисточники приведены в начале первой части.


      Начну с Вида. Не смотря на то, что Вид определяется как модуль, отображающий Модель – "а view is a (visual) representation of its model", на практике к Виду, как правило, просто относят все графические элементы GUI, то есть Видом считается все то, что мы видим на экране ЭВМ.


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


      View or Controller

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

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

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


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


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


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


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


        Читать дальше →
      • Знай сложности алгоритмов

        • Перевод
        Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
        Читать дальше →
      • Уголок пользователя ЭВМ: гражданский активизм

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

          image
          Читать дальше →
        • Как я проходила собеседования в Яндекс: мой непростой, но успешный опыт

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

            Вопрос для внимательных: сколько модулей отломится от корабля на старте?


            А еще год назад у меня в жизни была вроде бы похожая, но в то же время совсем другая ситуация — времени на хобби не хватало, задач было много, но они не приносили мне никакого удовольствия. В итоге я решилась на перемены. На самом деле, эта позиция в Яндексе не была первой, которую я рассматривала. За то время, которое прошло до моего первого рабочего дня, я освежила в голове очень много тем. И перед финальным собеседованием мне пришлось взяться ещё за несколько. Сейчас я понимаю, какие ошибки совершила в этом процессе, поэтому хочу поделиться своим опытом с вами. Буду рада, если кому-то это будет полезно. Хочу сказать, что это не официальные рецепты от рекрутеров Яндекса, а только мои собственные выводы. В конце поста я поделюсь списком литературы, которая мне помогла в подготовке, и еще добавлю те источники, которые считаю полезными, оглядываясь назад.

            Читать дальше →
          • 1967 года рождения и моложе

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

              image
              Говорят, идея — оргазм мозга. Если Вы испытали это чувство и внутри черепной коробки загорелась не дающая спать по ночам лампочка, то следующая Ваша мысль будет: «как же конвертировать эту люминесценцию в материальные ценности»? Есть три пути: правильный — обратиться к патентным поверенным и заплатить кругленькую сумму; умный — изучить патентное право и потратить уйму времени; и третий — для тех, у кого нет ни времени, ни денег.
              Читать дальше →
            • Интересно и познавательно: наблюдаем вехи истории космонавтики с Orbiter

              • Tutorial


              Животные и люди умеют обучаться, играя. В самом деле, что может быть лучше — и интересно, и познавательно. Компьютерные игры не являются исключением, с некоторыми из них можно учиться. Я очень удивился, когда, поискав по Хабру, узнал, что космический симулятор Orbiter всего пару раз мельком упоминался здесь. Бесплатный космический симулятор с открытой для аддонов архитектурой и честной ньютоновской физикой оказался незаслуженно обойдённым вниманием. Наверное, из-за своей требовательности к начинающему игроку.
              Как мы будем с этим бороться, и чему учиться?
            • Maven: ответы на вопросы


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

                Вопрос звучал примерно так:Как создать spring mvc проект, и подключить требуемые библиотеки например hibernate, задеплоить его на tomcat, а потом работать с этим проектом в eclipse?
                Ответ на этот и другие вопросы
              • Бизнес для программистов. Как начать свое дело

                  Многие из читателей Хабрахабра хотели бы открыть свой бизнес и перестать работать на «дядю». Но как это сделать? Какие опасности это таит? Ответы на эти и другие вопросы можно найти в замечательной книге «Бизнес для программистов. Как начать свое дело».

                  Ее написал Эрик Синк – бывший разработчик Spyglass, основатель и руководитель SourceGear, одного из основных поставщиков ПО в области контроля версий, а также колумнист MSDN.

                  Основная тема книги – это как стартовать и развить свою маленькую компанию независимого поставщика ПО. Эрик разбивает эту задачу на несколько традиционных компонентов: как стать предпринимателем, люди, маркетинг, продажи. Но каждый из них рассматривает через призму восприятия программиста. Например, приводит следующий совет по поиску идей:
                  Idea FindGoodProductIdea ()
                  {
                  ArrayList candidateList = BrainstormLotsOfIdeas();
                  return ChooseTheBestIdea(candidateList);
                  }

                  Читать дальше →
                • Джентльменский набор интернет шоппера: Shipito + ProfitBid + TrackChecker

                    На волне постов ненависти к Почте России легко прослеживается тот факт, что все большее количество людей покупают товар из заграниц. Тем самым не желая переплачивать Российским барыгам-ритейлерам подрывая политику государства в области импортозамещения. И я один из них.
                    Однако много препятствий чинит православным Россиянам виртуальный шоппинг, самое трудное из которых — страна проживания. К сожалению наша отчизна классифицируется большинством онлайн магазинов как страна третьего мира, не иначе, а поэтому и прямой доставки туда нам не видать.
                    Выходом из этого казуса, очевидно, является mail forwarding сервис.
                    Итак в данной статье речь пойдет о
                    • нововведениях в сервисе-посреднике — Shipito
                    • Сервисе, который возвращает процент с покупок на ebay.com/ca/uk, Amazon, Skype, GoDaddy — Profitbid
                    • Наконец-то созданном юзером MetalFan отличном софте (полностью бесплатном) для отслеживания почтовых отправлений всех почтовый сервисов TrackChecker
                    • Небольшом списке интересных магазинов


                    PS. В топике присутствуют мои реферральные ссылки.
                    PS2. Трафик.
                    Читать дальше
                  • Семь вещей, которые полезно знать о программистах

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

                      — Ложась спать программист ставит рядом на столик 2 стакана.
                      — Один с водой — если захочет пить, второй пустой — если не захочет.

                      Смеялись только программисты, а остальные и он, в том числе, анекдот не поняли. Пришлось сильно постараться, чтобы объяснить гуманитарию, что в этом анекдоте смешного.

                      Программист – относительно новая профессия. Зародилась она по времени где-то между физиком-ядерщиком и космонавтом. Многие «лирики» и даже некоторые «физики» и «космонавты» нас не понимают. И среди этих людей часто находятся наши коллеги, менеджеры, сотрудники коммерческих департаментов, отделов кадров, владельцы бизнеса, заказчики и др. Этот пост для них. Ну и немного для себя (типа, ретроспектива самоанализ).

                      Disclaimer. Сейчас программистов много. Хороших и разных. Я буду писать про хороших. И то, не про всех, а про большую часть из тех, с кем имел честь вместе разрабатывать ПО.
                      Читать дальше →
                    • Разговорное радио на коленке

                        В определённый момент, страдая от лени обновлять новостной блог про OpenStreetMap, я решил сделать еженедельную передачу про проект. Вместо трёх часов вымучивания текста — часик пообсуждать со знакомыми участниками OSM новинки и актуальные вопросы. Отличная идея, порадовались и разошлись. Через полгода со словами «ну блин хватит бездельничать, давайте послезавтра звоните в скайп» я начал разбираться, как в этом вашем линуксе записать звук с микрофона и скайпа, одновременно передавая его в интернет. Эта история — про настройку PulseAudio, про скайп и мамбл, и про удивительный JACK. Оказалось, поднять собственное радио с гостями в эфире проще, чем нарисовать для него логотип.
                        Читать дальше →
                      • Вероятно, самый простой способ преодолеть стресс на пути к цели

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


                          Читать дальше →
                        • Шпаргалка по пробросу IP во внутреннюю сеть без моста и iptables в 4 команды

                          • Tutorial
                          В статье будет рассмотрена маршрутизация внешнего IP-адреса внутрь локальной без пробрасывания ethernet-шлюза и переписывания адресов в iptables. В итоге на сетевой карте внутреннего сервера будет один правильный внешний IP-адрес, внутренние IP-адреса будут отсутствовать.
                          Читать дальше →
                        • Биохакинг сна: подтверждённые наукой советы

                          • Перевод


                          Сон до сих пор является одной из величайших загадок для науки, как гравитация и квантовое поле. Мы до сих пор не понимаем, для чего именно мы спим, хотя всё больше узнаём об этом. Ниже собраны советы для тех, кто долго не может уснуть, часто просыпается, не чувствует себя отдохнувшими наутро, или просто хочет улучшить качество своего сна.
                          Читать дальше →
                        • Как обсуждать деньги с руководством или почему иногда останавливаются карьеры?

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

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

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

                            В частности о том, как обсуждать собственную зарплату с руководством – на эту тему сегодня и поговорим, потому что из того, что приходится наблюдать на тренингах – 90% людей совершают одни и те же ошибки, получая минусы в карму и тормозя собственную карьеру (правильный ответ на вопрос, как это делать – в конце статьи).
                            Читать дальше →
                          • Управленческие инструменты: интеллект-карта “Формула работы с людьми”

                              На одном из моих первых тренингов один из присутствующих менеджеров задал вопрос:

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


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

                              В общем, меня понесло…

                              Что было дальше
                              • +21
                              • 48,3k
                              • 7
                            • Что должен знать каждый участник крупного MMO-проекта


                                Рядовые программисты обычно всё это прекрасно знают. А вот менеджерский состав нередко считает, что совершенно не обязательно разбираться в игровой экономике, клиент-серверной архитектуре и психологии игрового комьюнити. Ведь есть же крутая команда спецов, которые обо всём позаботятся.
                                Итог очевиден: трудно вспомнить хотя бы один крупный MMO-проект, выпущенный за последние два года, который избежал бы стандартного набора граблей. Такое ощущение, что MMO-индустрия не способна учиться на своих ошибках.
                                Итак, список вопросов, ответы на которые должен знать каждый, от топ-менеджера до работника техподдержки крупного MMO-проекта.
                                Читать дальше →
                              • DesignSpark Mechanical: Моделируем полезную коробочку Безвозмездно (то есть даром)

                                • Tutorial
                                Здравствуй, Читатель!

                                Сегодня с помощью бесплатного пакета DesignSpark Mechanical мы смоделируем полезную коробочку с крышкой (в нее можно будет положить все, что угодно!). А так как Хабр — технический ресурс, то мы сделаем коробочку с крышкой, привинчивающейся на четыре винта (и в ней можно будет собрать какой угодно проект!). Результатом нашей работы станут STL-файлы, которые можно будет, например, отправить на 3D-печать.



                                Эта статья предназначена, прежде всего, для энтузиастов-умельцев, которые по каким-либо причинам ещё не начали прорабатывать свои идеи, прототипы и изделия в специализированных пакетах моделирования (aka CAD-системах).
                                Читать дальше →