• Нотация О-большое и сложность социальных взаимодействий

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

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

      О(n2): Совещание равноправных участников. n человек обсуждают вопрос, причем для достижения взаимопонимания, каждому участнику нужно пообщаться с каждым. Всего будет осуществлено n*(n-1)/2 социальных взаимодействий (эквивалентно задаче подсчета числа рукопожатий в группе из n человек), т.е сложность алгоритма О(n2). Казалось бы, за счет того, что общение одновременно могут осуществлять n/2 пар людей, оценка по времени – О(n), однако на реальных совещаниях в один момент времени говорит только один человек, поэтому оценка для худшего случая — О(n2). Если время взаимодействия – 5 минут и для достижения полного взаимопонимания в группе требуется две итерации, то совещание трех человек продлиться 30 минут, четырех – час, пятерым потребуется 1 час 40 минут для нахождения общего решения (что подозрительно похоже на правду). Если же число итераций зависит от числа участников, мы получаем еще более печальные оценки.

      Но не все так плохо!
      Читать дальше →
      • +24
      • 12.3k
      • 9
    • Включайтесь в игру: the MAZE DevOps game от ITSumma

        Мы уже немного рассказывали о том, как устраиваем квесты для участников ИТ-конференций. Сегодня запускаем онлайн-игру для админов (идея квеста была переработана и дополнена) — the Maze. Под катом — ее история. Включайтесь!

        image
        Читать дальше →
      • 85% сотрудников забивает на системы управления проектами. Как мы делаем свою

          Последние 10 лет для ведения проектов мы пользовались такими системами как YouTrack, Jira, Asana, Slack, SmartSheet, BaseCamp, Trello и даже белой доской, а также постоянно тестировали что-то новое. По нашему мнению, главная проблема всех систем управления в том, что люди в компании попросту забивают на её использование. А было бы здорово, если информация на все отделы распространялась из одной системы и вся команда сама активно постоянно ей пользовалась.

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

          Для начала хотели реализовать 2 вещи:

          • Секундомеры на каждой задаче, потому что было ощущение, что это позволит точнее понимать как расходуется время в команде;
          • Универсальность. Предполагали, что отдел разработки, поддержки и все остальные отделы могут работать в одной системе.



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

          • Tutorial
          В данной статье будет описан только общий алгоритм на примере Facebook. Однако такой же подход можно использовать повсюду.

          Задача


          На основе существующего контента (за последние 30 дней) на данной странице Facebook определить какие записи потенциально будут более популярными.
          Читать дальше →
          • +10
          • 12.5k
          • 8
        • Сравнение технологических подходов к решению задач по извлечению данных

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


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


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


          В рамках нашего рассуждения я осознанно постараюсь уйти от каких-либо терминов и устоявшихся выражений, ибо как говорил У. Куайн – термины это всего лишь имена в рамках онтологий не имеющие никакого практического значения для решения задач логики и понимания чего-либо в частности.[1] Поэтому, с его позволения, будем опираться на единичные дескрипции Рассела, а проще говоря, давать полные описания в ущерб существующим устоявшимся терминам.


          Читать дальше →
        • Конкурс по программированию на JS: Классификатор слов (специальные призы)

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

            Английская версия этой записи — на GitHub.

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

            Чтобы пронаблюдать поведение самообучающихся решений, мы протестировали их на 1 000 000 блоков. Тестировать на таком количестве блоков все решения было бы нереально, но эти девять оказались достаточно быстрыми.

            На графике ниже показана зависимость процента правильных ответов от числа обработанных блоков. Обратите внимание, что горизонтальная шкала — логарифмическая.

            image

            Читать дальше →
          • Визуализация кодовой эволюции

            • Translation
            image

            От переводчика:


            На этого интересного автора, Адама Торнхила, я набрел при поиске видео с конференции GOTO. Кому данная статья покажется интересной, советую посмотреть его выступление. Я немного заморочился с переводом (благодарен Тане за помощь!), потому что тематика показалась очень своеобразной, не встречал ранее аналогичные работы (буду рад ссылкам в комментариях!). Статья свежая, августа 2016, в оригинале называется Software ®Evolution — Part 1. В тексте идет повествования от первого лица, но имеется в виду автор оригинальной статьи.


            Как эволюция кода позволяет понимать большие кодовые базы


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


            Читать дальше →
            • +18
            • 7.4k
            • 7
          • Структуры данных для самых маленьких

            • Translation
            James Kyle как-то раз взял и написал пост про структуры данных, добавив их реализацию на JavaScript. А я взял и перевёл.

            Дисклеймер: в посте много ascii-графики. Не стоит его читать с мобильного устройства — вас разочарует форматирование текста.


            Читать дальше →
          • Как выжать максимум из минификации кода

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


              // просто сравните длину строк
              this.this.this.this.
              var s=this;s.s.s.s.

              Я использовал этот и некоторые другие упоротые способы для участия в конкурсе js13kGames, цель которого — написать игру, размер которой не превысит 13 килобайт.


              Скриншот ранней версии игры

              Игра почти готова, осталось всего-то пару дней не спать...


              Сжать как можно сильней
            • Определяем Phantom-ных ботов

              » Перевод статьи Detecting PhantomJS Based Visitors | Неплохое обсуждение статьи на Hacker News

              Статья старая, помидорами не кидайтесь — лучше делитесь опытом в комментариях.

              В наши дни во многих инцидентах по безопасности используется автоматизация (со стороны злоумышленников). Web-scraping, повторное использование паролей, click-fraud — все это совершается злоумышленниками в попытках (зачастую успешных) замаскироваться под обычного пользователя, то есть по сути выглядеть для сервера как броузер обычного пользователя. Как владелец сайта, вы наверно хотите быть уверены в том что обслуживаете людей а не бездушные железки, а как поставщик сервиса вы наверно хотите еще и доступ дать к своему контенту через api, а не через тяжелый и глючный web-интерфейс.
              Читать дальше →
            • Майкл Прайор, Trello: Как построить продукт для массового рынка

              • Translation
              Нет сомнений, что вы слышали о Trello — как-никак, у него уже более 16 миллионов пользователей. Каково это – разработать, запустить и продвигать такой массовый продукт? Как правильно приоритизировать фичи продукта со столь широким спектром вариантов использования? Как проводить монетизацию по принципу ценности для потребителя? Об этом и о многом другом соучредитель сервиса Intercom поговорил с исполнительным директором Trello Майклом Прайором. А мы, компания-локализатор Alconost, все это перевели.



              Публикуем перевод без сокращений и изменений, а если у вас совсем нет времени, вот вам пять ключевых выводов:
              Читать дальше →
              • +16
              • 9.7k
              • 6
            • Выходит HTML 5.1, готовится HTML 5.2

                Представители организации World Wide Web Consortium (W3C) порадовали общественность сразу двумя новостями. Речь идет о работе над HTML 5.1 и HTML 5.2. Спецификация версии 5.1 уже на последней стадии согласования.
                Ее статус перешел от «Release Candidate» к «Proposed Recommendation». Таким образом, HTML 5.1 осталось получить «благословение» концорциума («W3C Recommendation») и выйти в свет. Новый стандарт готов на 99,99%. Так что, в ближайшее время стандарт HTML 5.0 будет не актуален.
                Читать дальше →
                • +33
                • 31.5k
                • 8
              • PostCSS. Будущее после Sass и Less

                  Андрей Ситник (@Iskin, Злые марсиане)


                  Андрей Ситник

                  В 2013 году Holowaychuk анонсировал свой проект Rework в статье «Модульный CSS-препроцессинг с Реворком» (http://tjholowaychuk.tumblr.com/post/44267035203/modular-css-preprocessing-with-rework ).

                  Как раз тогда я искал какой-то инструмент для того, чтобы сделать автопрефиксер. Когда я прочитал эту статью, я был поражен, потому что это был действительно революционный подход, он менял все. И поэтому первые версии автопрефиксера базировались на Rework’е. Но, к сожалению, Rework – это был Proof Of Concept, это было первое поколение, чтобы доказать, что это вообще работает. Поэтому мы его жестко форкнули, переманили всех разработчиков, устроили маленькую революцию и сделали PostCSS.

                  PostCSS – это второе поколение модульного процессора.
                  Читать дальше →
                • 5 стипендий в области Computer Science

                    image

                    Иногда стипендии, предлагаемые университетами, предназначены для всех специальностей, но иногда распространяются только на тех, кто выбирает определенное направление обучения. В подборке представлены пять стипендий, предназначенных для специалистов в области Computer Science – начиная с магистерского уровня и заканчивая постдокторскими программами. Предложения весьма разнообразны — от классической швейцарской Высшей технической школы Цюриха, входящей в десятку лучших вузов мира, до университета короля Абдулазиза в Саудовской Аравии.

                    PhD Fellowship for International Students, Max Planck Research School for Computer Science
                    Институт Макса Планка предлагает 15 полностью оплачиваемых стипендий для обучения на PhD программе и участие в исследовательской деятельности института. На программу могут подавать как после окончания магистратуры, так и сразу после получения бакалаврской степени. Обучение проходит на английском языке (необходимо предоставить сертификат). В ходе отбора кандидаты должны будут представить перед комиссией свой исследовательский проект. Институт рекомендует претендентам также сдать GRE General Test и GRE Computer Science subject, однако это требование не является обязательным.

                    » Сайт
                    Читать дальше →
                  • Еще один из способов обойти блокировку PornHub

                    • Tutorial
                    Думаю, все помнят telnet версию SW:New Hope. В связи с блокировкой PornHub'а, возникла идея сделать что-то подобное с их видео. Вооружимся питоном и попробуем реализовать задумку.


                    Тот самый StarWars.
                    Читать дальше →
                  • Как медиа выжить в кризис: опыт мировых СМИ

                      image

                      Конкуренция за внимание читателя растет, а рекламные доходы падают. Издателям приходится сталкиваться с «баннерной слепотой» и сменой алгоритмов соцсетей, из которых приходит львиная доля трафика. В этих условиях медиа постоянно ищут новые способы заработка. Мы собрали опыт мировых СМИ в борьбе за выживание в медиа-бизнесе.
                      Читать дальше →
                    • Linux исполнилось 25 лет


                        Линус Торвальдс собственной персоной

                        Время бежит очень быстро, и операционной системе Linux уже исполнилось четверть века. Правильнее было бы говорить, что 25 лет исполнилось ядру этой операционной системы. С общей историей появления Linux знакомы, вероятно, все читатели Habrahabr. 25 августа 1991 года, спустя пять месяцев после начала работы над своим проектом, 21-летний Линус Торвальдс (тогда еще студент) рассказал о создании прототипа совершенно новой ОС с названием Linux.

                        17 сентября 1991 года состоялся первый публичный выпуск ядра Linux. Версия ядра на тот момент — 0.0.1. Уже тогда количество строк кода ядра составляло 10 тысяч. Размер его был всего 62 Кб в сжатом виде. Сейчас же ядро насчитывает во много раз больше строк кода — целых 19 млн. Если бы разработка ОС проводилась силами коммерческой организации, то стоимость такого проекта составила бы около миллиарда долларов США, а то и более.
                        Читать дальше →
                      • Я заглянул в папку node_modules, и вы не поверите, что произошло

                        • Translation
                        История с left-pad пробрала JavaScript-сообщество до самых костей. В то время как разбухший код продолжает замедлять наши сайты, сажать наши батареи и делать наш npm install медленным, многие разработчики решили сами провести тщательный аудит зависимостей, которые они привносят в свои проекты. Настало время, чтобы мы как сообщество встали и сказали: «Хватит!» Это сообщество принадлежит всем нам, а не только горстке JavaScript-разработчиков с шикарными длинными волосами.

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

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

                          C использованием комбинации опросников Пирса и Хейлмейера проведено анкетирование разработчиков KolibriOS по активно развивающимся направлениям: поддержке файловых систем, файловому менеджеру Eolite, драйверам для видеокарт, языку программирования Forth, интегрированной среде разработки для ЯВУ, портированию браузера Netsurf. Подробности под катом.
                          Читать дальше →
                        • HEIST позволяет получить зашифрованную информацию в HTTPS канале в виде открытого текста



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

                            Другими словами, эксплоит не требует использования MITM (man-in-the-middle) схемы. Вместо этого жертву атакуют при помощи невинного JavaScript файла, скрытого в рекламе или «вшитого» прямо в страницу вредоносного сайта. Вредоносный код после успешного выполнения может запрашивать ряд типов страниц, защищенных SSL или TSL протоколом и получать точный размер файлов с зашифрованными данными, которые передаются в защищенном режиме. Новый тип атаки получил название HEIST (HTTP Encrypted Information can be Stolen Through TCP-Windows).
                            Читать дальше →