• Сколько котов на хабре?

      Недавно я ехал на автобусе из Торонто в Нью-Йорк, снаружи автобуса было темно, внутри меня было немного портвейна, спать совершенно не хотелось, и я решил поразбираться с Deep Learning. Скачал Caffe, скормил ему пару картинкок, на которых правильно распознались мяч и банан. Захотелось распознать что-то более интересное, и я вспомнил, что где-то на жёстком диске у меня есть дамп хабрахабра, который я делал, когда проходил курс информационного поиска в ШАДе Яндекса.

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

      Под хаброкатом можно прочитать чуть больше подробностей и посмотреть на всех котов.



      Читать дальше →
    • Правило ста часов

      • Translation
      Популярный мем с «правилом 10000 часов» утверждает, что именно столько времени необходимо для овладения любым мастерством какого-либо рода. У этого правила есть несколько следствий:

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

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

      Что делать, если вам нужно в совершенстве освоить все необходимые области, но их освоение отнимает слишком много времени?
      Читать дальше →
    • Хабра-граф, -сообщества и куда же делась вся карма

        Вступление


        Cегодня мы вместе с анализом графов, data mining, subgroup discovery и всеми веселыми штуками взглянем на Хабр. Весь код и данные прилагаются — каждый может взглянуть на них самостоятельно, легко повторить рассчеты из статьи и найти что-то интересное самостоятельно.




        (это не просто картинка для привлечения внимания, а — граф связей ~45000 пользователей Хабра по тому, кто на кого подписан; размер вершины пропорционален числу подписчиков; все картинки кликабельны; подробности далее)



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

        Тут проблема в том, что на всем хабре за сегодня не насчитать больше 50-80 человек, которые вообще могут голосовать. У 90% пользователей карма просто ниже 5. Как итог оценивают комментарии и статьи только избранные. Это как жюри выходит такое.

        И решил, что стоить его сформулировать в виде гипотезы и проверить:

        Q1: Правда ли, что Хабр превратился в жюри-based сообщество, где два с половиной человека голосуют за статьи?

        Вот в этой статье к нам вернулись "железные" Хабы и стало интересно, а как вообще представлены разные сообщества внутри Хабра? Формулируем в виде гипотезы:

        Q2: Как сегментировано сообщество, или проще говоря сколько у нас здесь групп по интересам и соотвествуют ли они имеющимся хабам?

        Последнее, но не менее интересное наблюдение, что активность на Хабре упала (по данным Хабра-пульса и моим субъективным наблюдениям), что даже решили ввести аккаунты "read & comment". Поэтому решил оценить активность сообщества и продумать, как информация о структуре сообщества может нам помочь:
        Q3: Насколько активно сообщество и как нам может помочь структура внутренних групп?


        За подробностями добро пожаловать под кат.

        Структура статьи

        Читать дальше →
      • Нечеткий поиск в словаре с универсальным автоматом Левенштейна. Часть 2



          В первой части статьи мы рассмотрели универсальный автомат Левенштейна — мощный инструмент для фильтрации слов, отстоящих от некоторого слова W на расстояние Левенштейна не более заданного. Теперь пришло время изучить способы применения этого инструмента для эффективного решения задачи нечеткого поиска в словаре.

          Читать дальше →
          • +32
          • 18.8k
          • 3
        • Нечеткий поиск в словаре с универсальным автоматом Левенштейна. Часть 1



          Нечеткий поиск строк является весьма дорогостоящей в смысле вычислительных ресурсов задачей, особенно если вам необходима высокая точность получаемых результатов. В статье описан алгоритм нечеткого поиска в словаре, который обеспечивает высокую скорость поиска при сохранении 100% точности и сравнительно низком потреблении памяти. Именно автомат Левенштейна позволил разработчикам Lucene повысить скорость нечеткого поиска на два порядка
          Читать дальше →
          • +49
          • 40.6k
          • 7
        • Веб-типографика сегодня. Часть III

            Часть IЧасть IIЧасть IIIЧасть IVЧасть V — Часть VI

            Часть III



            Оказалось, что аж ещё со времён Windows 98 в стандартный комплект включается шрифт под названием Lucida Sans Unicode, который особо нигде не используется. Попробуем заменить им эппловский Lucida Grande.
            Читать дальше →
          • Резервное копирование: Кейс Google

              Сегодня мы разберем профильную тему на основе кейса Google Tech Talks, которым поделился один из инженеров компании, а тематических журнал High Scalability проанализировал рассказ ИТ-специалиста Google.

              Читать дальше →
              • +13
              • 46.1k
              • 4
            • У вашего сайта проблемы с Google?

                Цель этой публикации — объяснить веб-мастерам основные причины по которым их сайты может, мягко говоря, недолюбливать Google. Также предлагается система диагностики попал ли сайт под санкции Google или нет.

                Мой сайт под фильтром Google? Как узнать под каким? Просел сайт в выдаче, в чём причина? Падают позиции и нет посещаемости, в чём дело?

                Именно с таким названием вы увидите темы на большинстве известных SEO-форумах и на Справочном форуме для веб-мастеров Google.

                Сразу отметим, что вместо слова «фильтры» в таких ситуациях уместнее употреблять слово «алгоритмы».

                На самом деле причина проблем с сайтом может быть не связана с мерами воздействия Google.
                Читать дальше →
              • Десять популярных SEO – мифов о продвижении в Google

                  Привет, Хабрахабр!

                  При продвижении сайтов в Google в среде веб-мастеров возникли и утвердились несколько SEO – мифов и заблуждений.

                  Причины — отсутствие информации или подтверждений от первоисточника (Google); невнимательное прочтение или неправильное понимание справочной информации.

                  Читать дальше →
                • ssh: Вытаскиваем для себя чужой порт из-за NAT


                    Что делает ssh -R © erik, unix.stackexchange.com

                    Подключиться к сервису за NAT, имея человека рядом с сервисом, вооруженного ssh, и белый ip у себя.

                    Опция -R


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

                    То есть нам нужно поднять sshd, попросить человека выполнить

                    $ ssh -N -R server_port:target:target_port sshd_server

                    И у нас на машине с sshd откроется порт server_port, который будет туннелироваться в target:target_port в сети этого человека.

                    Как в sshd_config ограничить права

                    ... а также запустить sshd от пользователя
                  • Дурим DPI двумя скриптами

                      Данная статья является лиш исследованием на тему и не должна использоваться как инструкция к действию.

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

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

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


                      Исходные данные:
                      Сайт(Адрес изменён): http://rutracker.og


                      Страница заглушка(Адрес изменён): http://198.51.100.0/...

                      Адрес страницы заглушки которая появляется при попытке открытия сайта. У каждого провайдера адрес страницы заглушки наверно разный.
                      Читать дальше →
                    • Несколько дельных советов по CSS


                        CSS Protips

                        Это современные решения типичных проблем, коллекция советов, которая поможет вам улучшить ваши профессиональные навыки CSS.

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

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



                        Cодержание


                        1. Используем псевдо-класс :not для задания рамки навигации
                        2. Добавляем межстрочный интервал элементу body
                        3. Центрируем по вертикали все что угодно
                        4. Правильно разделяем запятыми элементы списков
                        5. Отрицательный порядковый номер в nth-child
                        6. Используем SVG-логотипы
                        7. Аксиоматический CSS
                        8. Максимальная высота у CSS-слайдера
                        9. Наследуем box-sizing
                        10. Одинаковая ширина ячейки таблицы
                        11. Динамические внешние отступы при помощи flexbox
                        12. Используем селектор атрибутов пустых ссылок
                        13. Стили по умолчанию для обычных ссылок
                        Читать дальше →
                      • Зачем и как мы бэкапим github



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

                          Вообще лирическое вступление было навеяно вполне конкретной историей про сломанный гитхаб. Сделанная на заре одного из проектов синхронизация домашнего репо в гитхаб решила проблему переезда. Потом про костыль забыли. Древнее зло уснуло и терпеливо ждало своего часа. В один прекрасный день скайнет новый сотрудник решил привести в порядок тот самый домашний репозиторий. И самым популярным вопросом среди программистов в тот день было «коллега, а вы не видели мою ветку 0022? ну такая, с багфиксами». Руководство опс-тим было спокойно как никогда: гит — это распределенная система, версия кода хранится на персональном компьютере каждого разработчика. Давайте уже как-нибудь разберитесь между собой и не отвлекайте нас от сборки наших ядер и тюнингов сетевых стеков.

                          И все же зачем..?

                          Действительно, можно нафантазировать большое количество количество возможных проблем, например:

                          • Недоступность удаленного репозитория и отсутсвие актуальной локальной копии
                          • Злоумышленники с помощью украденного пароля испортили/удалили репозитории
                          • Ошибки в манипуляциях с репозиториями


                          Итак, что и как бэкапить...
                          Читать дальше →
                        • Параллельные алгоритмы для обработки BigData: подводные камни и непростые решения

                            Эта публикация написана по материалам выступления AlexSerbul на осенней конференции BigData Conference.

                            Большие данные — тема модная и востребованная. Но многих по-прежнему отпугивает избыток теоретических рассуждений и некоторый недостаток практических рекомендаций. В этом посте я хочу отчасти заполнить этот пробел и рассказать об использовании параллельных алгоритмов для обработки больших данных на примере кластеризации товарного каталога из 10 млн позиций.
                            Читать дальше →
                          • Почему до сих пор повсеместно не используется HTTPS?

                            • Translation
                            Шифрование. Мы все его любим и хотим использовать везде. Но почему оно до сих пор не применяется повсеместно?

                            Проблема в сертификатах?


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

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

                            Ребята из Let's Encrypt уже догадались, что проблема с сертификатами почти полностью поддаётся автоматизации, и что её реализация для выпуска, установки, конфигурации и продления на нескольких наиболее распространённых платформах может покрыть подавляющее большинство Интернета. Замечательная работа, и, хоть и осталось сделать многое, я думаю, что мы можем считать проблему сертификатов решённой.
                            Читать дальше →
                          • Собственный поисковик по раздачам The Pirate Bay

                            В последнее время на хабре стало популярно делать собственные поисковики по RuTracker. Мне это показалось прекрасным поводом для того, чтобы отойти от скучной enterprise разработки и попробовать что-нибудь новое.



                            Итак, задача: реализовать на локалхосте поисковик по базе The Pirate Bay и попутно попробовать, что же такое frontend разработка и с чем её едят. Задача осложняется тем, что TPB не публикует своих дампов, в отличие от RuTracker, и для получения дампов требуется распарсить их сайт. В результате гугления и осмысления задачи я решил в качестве поисковика использовать Elasticsearch, для которого написать client-side only фронтенд на AngularJS. Для получения данных я решил написать собственный парсер сайта TPB и отдельный загружатель дампа в индекс, оба на Go. Пикантность выбору придавал тот факт, что ни к Elasticsearch, ни к AngularJS я до этого ни разу не прикасался и именно их опробывание было моей настоящей целью.
                            Читать дальше →
                            • +19
                            • 16.3k
                            • 8
                          • Рекурентная нейронная сеть в 10 строчек кода оценила отзывы зрителей нового эпизода “Звездных войн”

                              Hello, Habr! Недавно мы получили от “Известий” заказ на проведение исследования общественного мнения по поводу фильма «Звёздные войны: Пробуждение Силы», премьера которого состоялась 17 декабря. Для этого мы решили провести анализ тональности российского сегмента Twitter по нескольким релевантным хэштегам. Результата от нас ждали всего через 3 дня (и это в самом конце года!), поэтому нам нужен был очень быстрый способ. В интернете мы нашли несколько подобных онлайн-сервисов (среди которых sentiment140 и tweet_viz), но оказалось, что они не работают с русским языком и по каким-то причинам анализируют только маленький процент твитов. Нам помог бы сервис AlchemyAPI, но ограничение в 1000 запросов в сутки нас также не устраивало. Тогда мы решили сделать свой анализатор тональности с блэк-джеком и всем остальным, создав простенькую рекурентную нейронную сеть с памятью. Результаты нашего исследования были использованы в статье “Известий”, опубликованной 3 января.



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


                              Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением GIF-формата и методом сжатия LZW.

                              Структура GIF


                              Файл в формате GIF состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения.


                              Читать дальше →
                            • Разные языки программирования и их области применения. Лекция в Яндексе

                                Наш первый пост в этом году мы решили посвятить очень базовой теме, лекция на которую была прочитана в Малом ШАДе. Занимаются в нём старшеклассники, которым интересны технологии, отсюда специфичность изложения — лекция будет особенно интересна тем, кто только начинает программировать и задумывается о том, в каком направлении развиваться. Для них же у Яндекса есть курс «Введение в программирование (С++)», который можно пройти на платформе Stepic.org.

                                Лектор Михаил Густокашин — куратор академических программ Яндекса, директор центра студенческих олимпиад факультета компьютерных наук ВШЭ. Михаил подготовил десятки победителей и призёров Всероссийских олимпиад по программированию.



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

                                Как всегда, под катом — подробная расшифровка лекции, чтобы вы могли сориентироваться в ее содержании.
                                Читать дальше →
                              • Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней



                                  Всем привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. В свободное время я люблю искать баги. В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую я нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

                                  • можно получить на нём SSRF;
                                  • можно получить local file read;
                                  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

                                  Читать дальше →