• Иди-ка ты на !@# со своей «токсичностью»

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

      Так какого же чёрта моё прекрасное IT превращается в детский сад «Весёлый Програм-Мишка»?
      Читать дальше →
    • Я порчу разрабам жизни своими код ревью и больше так не хочу



        Однажды в моей команде был настолько слабый парень, что его собирались уволить (уволить разработчика!). Каждый мой коммент на ревью к его коду был гвоздем в крышку гроба. Я почти слышал стук молотка, нажимая «submit review». Он был приятным человеком, я даже переживал за него, но это не мешало мне разносить его старания в щепки. Мое право критиковать его работу казалось очевидным и неотъемлемым. Все просто — я сильнее, я прав. Никто же не хочет сказать, что плохой код — это хорошо, а? Его уволили, предварительно лишая стандартной премии в течение нескольких месяцев.

        Я говорил себе: «Но ведь не делать же мне всю работу за него!? Он занимал место более талантливого разработчика. Я все правильно сделал». Но почему-то на душе скребли кошки. И когда мне пришел на ревью очередной pull request, что-то очень сильно поменялось.
        Читать дальше →
      • Apache Kafka – мой конспект

          Это мой конспект, в котором коротко и по сути затрону такие понятия Kafka как:

          — Тема (Topic)
          — Подписчики (consumer)
          — Издатель (producer)
          — Группа (group), раздел (partition)
          — Потоки (streams)

          Kafka — основное


          При изучении Kafka возникали вопросы, ответы на которые мне приходилось эксперементально получать на примерах, вот это и изложено в этом конспекте. Как стартовать и с чего начать я дам одну из ссылок ниже в материалах.

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

            image

            История


            Рекуррентные слои были изобретены еще в 80х Джоном Хопфилдом. Они легли в основу разработанных им искусственных ассоциативных нейронных сетей (сетей Хопфилда). Сегодня рекуррентные сети получили большое распространение в задачах обработки последовательностей: естественных языков, речи, музыки, видеоряда и тд.

            Задача


            В рамках задачи по Hierarchy reinforcement learning я решил прогнозировать не одно действие агента, а несколько, используя для этого уже пред обученную сеть способную предсказать последовательность действий. В данной статье я покажу как реализовать “sequence to sequence” алгоритм для обучения этой самой сети а в последующей, постараюсь рассказать, как использовать ее в Q-learning обучении.
            Читать дальше →
            • +31
            • 11.1k
            • 4
          • Реализация поискового движка с ранжированием на Python (Часть 1)

            Просматривая ленту новостей я наткнулся на рекомендацию от Типичного Программиста на статью «Implementing a Search Engine with Ranking in Python», написанную Aakash Japi. Она меня заинтересовала, подобного материала в рунете не очень много, и я решил перевести её. Так как она довольно большая, я разделю её на 2-3 части. На этом я заканчиваю своё вступление и перехожу к переводу.

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

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

            Это то, что я буду описывать в этой статье: как сделать поисковую систему для локальных текстовых файлов, для которых можно обрабатывать стандартные запросы (по крайней мере, одно из слов в запросе есть в документе) и фразу целиком (появляется вся фраза в тексте) и может ранжировать с использованием базовой TF-IDF схемы.

            Есть два основный этапа в разработке поискового движка: построение индекса, а затем, используя индекс, ответить на запрос. А затем мы можем добавить результат рейтинга (TF-IDF, PageRank и т.д.), классификацию запрос/документ, и, возможно, немного машинного обучения, чтобы отслеживать последние запросы пользователя и на основе этого выбрать результаты для повышения производительности поисковой системы.

            Итак, без дальнейших церемоний, давайте начнем!
            Читать дальше →
            • +13
            • 22.7k
            • 4
          • AI для «Дурака»

              Знал бы прикуп — жил бы в Сочи.

                     Народная мудрость. 

              Под игрока — с семака, под вистующего — с тузующего.

                     Ещё одна народная мудрость. 


              Похоже, в этом посте всё смешалось. "Дурак" в заголовке, преферансные поговорки в эпиграфе и КДПВ, не имеющая отношения ни к тому ни к другому. Впрочем, само понятие "джокера", к предмету сегодняшнего разговора, отношение имеет самое непосредственное.
              Читать дальше →
              • +24
              • 27.3k
              • 7
            • MinHash — выявляем похожие множества

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

                коэффициент Жаккара

                То есть, количество элементов в пересечении делённое на количество элементов в объединении. Эта оценка называется коэффициентом Жаккара (Jaccard, поэтому «J»), коэффициент равен нулю, когда множества не имеют общих элементов, и единице, когда множества равны, в остальных случаях значение где-то посередине.

                Как его посчитать?
              • Сервис распознавания котов

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

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


                Читать дальше →
              • Топ-10 data mining-алгоритмов простым языком

                • Translation


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

                Сегодня я постараюсь объяснить простыми словами принципы работы 10 самых эффективных data mining-алгоритмов, которые описаны в этом докладе.

                Когда вы узнаете, что они собой представляют, как работают, что делают и где применяются, я надеюсь, что вы используете эту статью в качестве отправной точки для дальнейшего изучения принципов data mining.
                Читать дальше →
                • +43
                • 107k
                • 8
              • Лекции Техносферы. 2 семестр. Методы распределенной обработки больших объемов данных в Hadoop

                • Tutorial
                Предлагаем вашему вниманию новый курс лекций Техносферы. Он представляет собой введение в Hadoop, фокусируясь на проектировании и реализации распределенных алгоритмов, которые могут применяться в различных сферах: обработка текстов, графов, связанных данных и т.п. Также рассматриваются различные компоненты платформы Hadoop и программные модели. Целью курса является знакомство студентов со стеком технологий Hadoop, применяемых для хранения, доступа и обработки больших объемов данных. Преподаватели курса: Алексей Романенко, Михаил Фирулик, Николай Анохин.

                Лекция 1. Введение в Big Data и MapReduce


                Что такое «большие данные». История возникновения этого явления. Необходимые знания и навыки для работы с большими данными. Что такое Hadoop, где он применяется. Что такое «облачные вычисления», история возникновения и развития технологии. Web 2.0. Вычисление как услуга (utility computing). Виртуализация. Инфраструктура как сервис (IaaS). Вопросы параллелизма. Управление множеством воркеров. Дата-центры и масштабируемость. Типичные задачи Big Data. MapReduce: что это такое, примеры. Распределённая файловая система. Google File System. HDFS как клон GFS, его архитектура.


                Читать дальше →
                • +34
                • 30.9k
                • 3
              • Советы читающему человеку

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

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

                  Для тех, кто не знает:
                  Вначале, написанный нами код разбирается лексическим анализатором. Далее, полученные лексемы, передаются в синтаксический анализатор. Если синтаксический анализатор дал добро, то лексемы передаются транслятору, а он, в свою очередь, генерирует так называемые opcodes (operation codes). И только после этого, в дело вступает виртуальная машина PHP (та самая Zend Engine) которая и выполняет наш алгоритм из получившихся opcodes. Opcodes так же называют эдаким php-шным ассемблером.
                  Данная статья расскажет вам о том, какие opcodes и в каких случаях генерируются. Конечно, рассказать про все opcodes в рамках одной статьи не получится, но в данной статье будет рассмотрен конкретный пример и на его основе мы попытаемся разобраться что к чему у этих opcodes. На мой взгляд, самое главное, что вы узнаете прочитав статью, это то, как на самом деле происходит выполнение ваших исходных текстов и, возможно, это поможет вам в лучшем понимании языка php.

                  Советую вам налить себе чашечку капучино или просто зеленого чая, т.к. под катом листинги opcodes и php-кода…
                  Читать дальше →
                • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

                    Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.

                    И что же них такого деформированного?
                  • Визуализация качества кода с PhpMetrics

                    • Translation
                    Недавно мне попался отличный инструмент для анализа PHP кода. Публикую перевод статьи с обзором этого инструмента.


                    PhpMetrics использует D3 и несколько сложных алгоритмов для сканирования кода вашего приложения и вывода замысловатых отчетов по результатам.
                    image
                    Читать дальше →
                  • Асимптотический анализ алгоритмов

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

                      Читать дальше →
                    • Интервью с легендой спортивного программирования Петром Митричевым



                        Говорят, когда он появился на свет, к нему заглянул сам Дональд Кнут. Говорят, когда его пригласили работать в Google, он за 15 минут переписал весь поисковый алгоритм 16 раз. Говорят, он с улыбкой следит за прогрессом квантовых вычислений, так как при виде его числа от страха факторизуются сами. Но мы точно знаем одно: Пётр — настоящий бог спортивного программирования.
                        Читать дальше →
                        • +77
                        • 70.2k
                        • 8
                      • Как я завалил собеседование в Twitter

                        • Translation
                        image


                        До 28 октября я должен был принять решение, буду ли я работать в Amazon по окончанию стажировки. Оставалось совсем немного времени, но мой друг Дэниел убедил меня, что если я попробую попасть в Twitter, то как раз успею пройти все интервью. Я не смог устоять.

                        Сначала меня попросили решить пару вопросов с Codility, дав на все про все час времени. Вопросы попались средней интересности («является ли слово анаграммой палиндрома» и «посчитать количество седловых точек в двумерном массиве»). Я был не слишком уверен в получившихся решениях, но вскоре Джуди прислала мне письмо с приглашением на телефонное интервью в среду в 17:30.
                        Читать дальше →
                      • Графы для самых маленьких: Dijkstra или как я не ходил на собеседование в Twitter

                          Не так давно наткнулся на статью о том, как Michael Kozakov не смог решить алгоритмическую задачу на собеседовании в Twitter. Решение этой задачи — почти в чистом виде один из самых стандартных алгоритмов на графах, а именно, алгоритм Дейкстры.
                          В этой статье я постараюсь рассказать алгоритм Дейкстры на примере решения этой задачи в несколько усложненном виде. Всех, кому интересно, прошу под кат.
                          Читать дальше →
                        • Разбор задач тренировочного warmup-раунда Russian Code Cup 2015



                            В воскресенье прошел тренировочный warmup-раунд Russian Code Cup. Первое место занял Михаил «mmaxio» Майоров из Перми. Второе — Игорь «kraskevich» Краскевич из Москвы. Третье — Валентин «ValenKof» Кофман из Москвы. Поздравляем победителей!

                            Впереди квалификационные раунды чемпионата. Напоминаем, что первый квалификационный раунд состоится 28 марта в 18:00 мск, а регистрация на чемпионат проходит на сайте http://www.russiancodecup.ru/ до начала третьего квалификационного раунда.

                            Russian Code Cup — это возможность для русскоязычных программистов со всего мира проверить свои силы и продемонстрировать мастерство, решая оригинальные задачи различной сложности, а также заявить о себе экспертному IT-сообществу. Олимпиада проходит в три этапа: квалификационные раунды, отборочный тур и финал, — на каждом из которых участникам олимпиады предлагается от четырех до восьми разноплановых задач. Задания и техническую часть соревнования обеспечивают специалисты Mail.Ru Group и эксперты Университета ИТМО — соорганизатора Russian Code Cup.

                            А сейчас разберемся с решением задач warmup-раунда.

                            Задача A. Воздушные шарики
                            Читать дальше →
                            • +18
                            • 16.9k
                            • 3