• Фактический человеко-месяц

      У нас в Wrike есть традиция делиться с командой мыслями о книгах, которые прочитали. Мы давно думали, что было бы неплохо распространить эту инициативу и на наш блог на Хабрахабре, и вот подвернулся хороший случай — книга Фредерика Брукса «Мифический человеко-месяц».

      Книгу можно назвать скорее классикой фольклора разработки, нежели реальным руководством по построению рабочего процесса. В ней отражены проблемы, с которыми Брукс столкнулся при организации работы над созданием операционной системы OS/360, и его подходы к их решению. Результат был далек от идеала, на что сам Брукс и указывает. Его целью было не научить как правильно, но поднять проблемы, требующие решения. Любопытно разобраться, что изменилось в разработке с 1960-х годов.


      Фото из архива IBM
      Читать дальше →
    • Новая многообещающая методология разработки, которую уже назвали «убийцей Agile»*

        *

        на правах пятницы


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


        Уже тысячи и тысячи мужчин и женщин по всему миру используют этот современный подход, который гарантирует потрясающие выигрыши в производительности и эффективности по сравнению с устаревшими методиками, такими, как Scrum, Agile, Kanban.


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


        Итак, встречайте — Porozhnyak!

        Читать дальше →
      • Уязвимости в Ощадбанке: получение ФИО клиента по номеру телефона, перебор номеров карт, проблемы в платёжных терминалах

          У меня накопилось несколько найденных проблем в различных сервисах Ощадбанка, одного из крупнейших украинских банков.

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

          уязвимости Ощадбанка

          1. Получение ФИО* клиента по номеру телефона

          Ощадбанк добавил новую функцию в свой интернет-банкинг «Ощад 24/7» — перевод с карты на карту по номеру телефона: чтобы перевести средства, необязательно знать номер карты получателя.

          Ранее я рассмотрел проблемы в реализации данной функции в другом украинском банке — Уязвимость в Альфа-Банк Украина: получение ФИО клиента по номеру телефона.

          Здесь уязвимость меньше — на самом деле возможно получение не всего ФИО, а только имени и первой буквы фамилии, но это не отменяет того факта, что теперь можно узнать настоящее имя человека, скрывающегося за анонимным номером телефона (в Украине SIM-карты выдаются без привязки к паспорту).

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

          Что за поиск в социальных сетях? Его уже описывали много раз, но, думаю, не лишним будет напомнить «фичу»: если нужно узнать ФИО человека, можно попытаться «восстановить» учётные данные в социальных сетях.

          Например, можно нажать «Забыли аккаунт?» на Facebook, ввести желаемый номер телефона и, если человек регистрировался с данным телефоном, то доступны будут следующие данные:
          Читать дальше →
        • Современная Web-платформа: как расслабиться и получать удовольствие? Практическое руководство, часть 1

          • Tutorial

          Всем привет!


          Помните эту статью? Раньше мы могли быстро собрать статичную HTML-страничку в каком-нибудь FrontPage и сайт был готов. С этим мог справится любой студент. В более сложном случае, мы писали пару строк на PHP и получали уже целый портал, собранный из разных элементов шаблона на сервере. Затем мы захотели, чтобы наш сайт как-то выделялся на общем фоне и умел чуть-чуть больше. Трон занял его-величество jQuery. Теперь же, мы оказались погребены под завалами фреймворков и библиотек, инструментов сборки, менеджеров зависимостей, препроцессоров и постпроцессоров, особых форматов, языков и стилей программирования, чтобы иметь возможность стряпать простые лэндинги. Все стало слишком сложно. Спикеры на конференциях стали соревноваться в изощренности того, каким еще образом можно сломать нам мозг. Как мы докатились до жизни такой? Чем «раньше» так сильно отличается от «сейчас»? Что нас ждет «потом»? Есть ли в современной веб-разработке некий дзен-стайл, блюдя который, можно, как в старые добрые времена, собрать себе уютный сайтик «на коленке» за пару вечеров, без ковыряния в документации десятка хипстерских технологий-однодневок? Насколько доступны нам простые решения в серьезной промышленной разработке? Куда движется веб-платформа? Предлагаю разобраться.
          Читать дальше →
        • Числа — доклад Дугласа Крокфорда о системах счисления в жизни и в программировании

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

            Давайте посмотрим, откуда пришли числа, куда они могут привести и как они работают.



            В основе статьи — доклад Дугласа Крокфорда (Douglas Crockford) с июньской конференции HolyJS 2017 в Санкт-Петербурге (презентацию доклада можно найти тут)
            Читать дальше →
          • Иллюзия движения

            • Перевод
            История о чувстве зрения, восприятии кадров и частоты обновления, размытости движущегося объекта и телевизионных экранах.
            (также см. перевод статьи того же автора «Иллюзия скорости» — прим. пер.)

            Введение


            Вы могли слышать термин кадры в секунду (FPS), и что 60 FPS — действительно хороший ориентир для любой анимации. Но большинство консольных игр идут на 30 FPS, а кинофильмы обычно записывают на 24 FPS, так зачем же нам стремиться к 60 FPS?

            Кадры… в секунду?


            Ранние времена кинопроизводства



            Съёмки голливудского фильма 1950 года «Юлий Цезарь» с Чарлтоном Хестоном

            Когда первые кинематографисты начали снимать кино, многие открытия делались не научным методом, а путём проб и ошибок. Первые камеры и проекторы управлялись вручную, а плёнка была очень дорогой — настолько дорогой, что при съёмке старались использовать наименьшую возможную частоту кадров, лишь бы сэкономить плёнку. Этот порог обычно находился между 16 и 24 FPS.
            Читать дальше →
          • Мутационное тестирование

              Юнит тесты помогают нам удостовериться, что код работает так, как мы этого хотим. Одной из метрик тестов является процент покрытия строк кода (Line Code Coverage).


              Но насколько корректен данный показатель? Имеет ли он практический смысл и можем ли мы ему доверять? Ведь если мы удалим все assert строки из тестов, или просто заменим их на assertSame(1, 1), то по-прежнему будем иметь 100% Code Coverage, при этом тесты ровным счетом не будут тестировать ничего.


              Насколько вы уверены в своих тестах? Покрывают ли они все ветки выполнения ваших функций? Тестируют ли они вообще хоть что-нибудь?


              Ответ на этот вопрос даёт мутационное тестирование.

              Читать дальше →
            • Тавтологические тесты

              • Перевод


              Привет! Меня зовут Артём, и большую часть своего рабочего времени я пишу сложные автотесты на Selenium и Cucumber/Calabash. Честно говоря, довольно часто я оказываюсь перед непростым выбором: написать тест, который проверяет конкретную реализацию функциональности (потому что это проще) или тест, который проверяет функциональность (потому что это правильнее, но намного сложнее)? Недавно мне попалась неплохая статья о том, что тесты реализации – это «тавтологические» тесты. И, прочитав её, я уже почти неделю переписываю некоторые тесты в другом ключе. Надеюсь, вас она тоже подтолкнёт к размышлениям.

              Читать дальше →
            • Шесть мифов о блокчейне и Биткойне, или Почему это не такая уж эффективная технология

                Автор статьи — Алексей Маланов, эксперт отдела развития антивирусных технологий «Лаборатории Касперского»

                Неоднократно слышал мнение о том, что блокчейн — это очень круто, это прорыв, за ним будущее. Спешу вас разочаровать, если вы вдруг поверили в это.

                Уточнение: в этом посте мы поговорим о том варианте реализации технологии блокчейн, который используется в криптовалюте Биткойн. Существуют другие применения и реализации блокчейна, в некоторых из них устранены какие-либо недостатки «блокчейна классического», но обычно они построены на одинаковых принципах.


                Читать дальше →
              • Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

                  Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

                  Существует два распространенных типа подключения DPI: пассивный и активный.

                  Пассивный DPI

                  Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
                  Читать дальше →
                • Социальный Организм — как форма эффективного взаимодействия команды. Часть 1

                  • Tutorial
                  Пробная версия этой статьи ранее уже публиковалась мною.

                  I Вступление


                  Я хочу поделиться теорией, которую недавно создал.
                  Агент Смит (Фильм «Матрица»)
                  Немного о себе. На заре своей карьеры я долгое время работал программистом. Позже, когда мне стало скучно просто кодировать, переквалифицировался в системного аналитика, попутно исполняя функции менеджера проектов. В последнее же время обстоятельства сложились так, что совместно с партнерами мы создали небольшую ИТ компанию.

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

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

                  Поскольку, по роду своей деятельности, я привык подходить к решению проблем системно, то и в данной ситуации, совершил экскурс в основы социологии и провел блиц анализ предметной области. Информации оказалось очень много, и она пролила свет на некоторые, моменты, ранее не очевидные для меня. Но все же найти готовые комплексные решения, которые позволили бы построить свою собственную «страну Оз», я так и не смог. А потому, я решил систематизировать добытую информацию, немного разбавить ее своим личным опытом и самому спроектировать этот “волшебный” инструмент.
                  Читать дальше →
                • Как узнать свой внешний IP из программы



                    При написании различных программ для работы с сетью, особенно p2p систем, время от времени возникает необходимость узнать внешний IP своего компьютера из программы (тот адрес, по которому Ваш компьютер доступен из Большого Интернета). Часто возникает искушение пойти легким путем и использовать внешние WEB-сервисы, которые по http возвращают Вам IP, или самому развернуть таковой. Хотя такой способ решения задачи и работоспособен, он тем не менее, имеет ряд недостатков:

                    • При использовании собственного сервера – нужно где-то его держать и поддерживать, заодно и c соответствующим доменным именем. В случае выхода его из строя, или принудительного отзыва домена, вся Ваша p2p сеть выходит из строя.
                    • При использовании внешнего сервера – Вы вводите зависимость своей системы как от его работоспособности, так и от формата ответов, который вообще никак не стандартизирован, и который владелец сервера может поменять в любой момент. С теми же последствиями для вашей сети.
                    • http, которым советуют пользоваться – базируется на tcp, то есть протокол сравнительно тяжеловесный, требующий установки соединения и тп. В общем, пользоваться можно, но перерасход ресурса как компьютера, так и сети налицо.
                    Читать дальше →
                  • 10 приёмов работы в терминале Linux, о которых мало кто знает

                    • Перевод
                    Близкое знакомство с возможностями терминала — один из признаков человека, который хорошо разбирается в Linux. Хотя некоторые вещи запомнить сложно, есть довольно-таки простые, но эффективные приёмы, которые способны повысить качество и скорость работы в терминале. Пожалуй, каждый пользователь Linux рано или поздно обзаводится собственным списком ценных мелочей. Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.

                    Читать дальше →
                  • Двойная скорость и половина памяти: оптимизация PHP 7

                    • Перевод
                    Ключ к высокой производительности приложений – оптимизация. При этом, чем ниже уровень, на котором код подстраивают под особенности аппаратного обеспечения – тем большего можно добиться. А ещё более впечатляющих результатов можно достичь тогда, когда при проектировании аппаратного обеспечения учитываются особенности кода. Сегодня мы расскажем о том, как идёт работа над ускорением PHP 7, которую совместно, практически непрерывно, ведут Intel и сообщество PHP-разработчиков.


                    Читать дальше →
                    • +36
                    • 20,4k
                    • 2
                  • Несколько способов оптимизации работы с Git

                      В нашем блоге на Хабре мы рассказываем о различных технологиях из мира IaaS и не только. Например, недавно мы публиковали материал по программным реализациям VPN [Часть 1; Часть 2], а также рассказывали о DNS. Сегодня нам бы хотелось углубиться в тему разработки приложений и сервисов и поговорить о такой вещи, как Git, в частности, о способах оптимизации работы с ним.


                      / фото hackNY.org CC
                      Читать дальше →
                    • Заказная разработка программного обеспечения

                      Доступ к информации перестал быть конкурентным преимуществом бизнеса. Информации не просто много… ее объемы зашкаливают — книги, статьи, блоги, форумы, видео. Приоритетом является способность эффективно управлять информацией и оптимизировать бизнес процессы. Информационные технологии и программное обеспечение призваны решать задачи повышения эффективности.


                      Сложно тем, кто видит потенциал в новом программном обеспечении, но не знает, как оно создается. Цикл статей о заказной разработке программного обеспечения, который будет полезен:


                      • для владельца, руководителя организации, планирующего заказать разработку программного обеспечения для бизнеса;
                      • для того, кто мечтает о стартапе, в основе которого программный продукт: коробочное ПО, веб сервис или мобильное приложение;
                      • для юниора, планирующего выбрать или начинающего карьеру в области информационных технологий.
                      Альтернативные варианты заказной разработки
                    • Итоги GSOC

                        30 августа закончился Google Summer of Code, в котором мы принимали участие во второй раз. В целом результат достойный — большинство студентов подтвердили, что их выбрали не зря. Но были и ошибки, о которых расскажем в этой статье. Для подведения итогов GSOC были опрошены менторы — те самые люди, на плечах которых всё и держалось последние полгода. Подробности под катом.


                        Читать дальше →
                      • Яндекс открывает ClickHouse

                          Сегодня внутренняя разработка компании Яндекс — аналитическая СУБД ClickHouse, стала доступна каждому. Исходники опубликованы на GitHub под лицензией Apache 2.0.



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

                          В этой статье мы расскажем, как и для чего ClickHouse появился в Яндексе и что он умеет; сравним его с другими системами и покажем, как его поднять у себя с минимальными усилиями.
                          Читать дальше →
                        • Оптимизация кода: процессор

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

                          image

                          В этой статье мы рассмотрим базовые техники оптимизации кода, которые могут увеличить производительность вашей программы во много раз. Мы также коснёмся устройства процессора. Понимание как работает процессор необходимо для написания эффективных программ.
                          Читать дальше →