• Рекомендательные системы в онлайн-образовании. Продолжение

      Мы продолжаем рассказывать о системе адаптивного обучения на Stepic.org. Первую вводную часть этой серии можно почитать здесь.


      В данной статье мы расскажем о построении рекомендательной системы (которая и лежит в основе адаптивности). Расскажем о сборе и обработке пользовательских данных, о графах переходов, хендлерах, оценке реакции пользователя, формировании выдачи.


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



      Ну, поехали
      • +19
      • 8.2k
      • 5
    • Кирилл «isox» Ермаков, главный безопасник QIWI, рассказывает о своей работе, о блеке, об анонимности и о взрослой ИБ




        Есть мнение, что банковские CISO — скучные ребята. Совершенно не умеют работать руками, бесконечно совещаются и вообще занимаются всякой ерундой. Героя сегодняшней истории, isox’а, скучным назвать точно нельзя. Кому-то он известен как топовый багхантер Яндекса, кому-то как создатель открытой базы уязвимостей Vulners, а кому-то — просто как крутейший спец по корпсеку. Isox предельно честно рассказал о своей работе, о блеке, об анонимности и о взрослой ИБ в целом. Итак, знакомься — Кирилл «isox» Ермаков, главный безопасник QIWI!

        Читать далее
      • Объекты в PHP 7

        • Translation
        image

        На сегодняшний день разработчики PHP ведут работу над API уровня С. И в этом посте я буду по большей части рассказывать о внутренней разработке PHP, хотя если по ходу повествования встретится что-то интересное с точки зрения пользовательского уровня, то я буду делать отступление и объяснять.
        Читать дальше →
        • +37
        • 28.7k
        • 2
      • 70 инструментов, без которых не обойтись ни одному сотруднику на удаленной основе



          В этой подборке мы решили собрать 70 самых популярных инструментов, которыми пользуются удаленные специалисты по всему миру. Эти ресурсы позволят вам организовать работу, проверить заказчика и оценить дальнейшую перспективу сотрудничества.
          Читать дальше →
        • Партиционирование в PostgreSQL – Что? Зачем? Как?

          • Translation
          Функцией партиционирования таблиц в PostgreSQL, к сожалению, активно пользуются пока не многие. На мой взгляд, очень достойно о ней рассказывает в своей работе Hubert Lubaczewski (depesz.com). Предлагаю вам еще один перевод его статьи!

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

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

          • Tutorial

          Всем привет!


          В этот раз я расскажу не про использование Python или очередной трюк с CSS/HTML и, увы, не про то, как я 5 лет портировал Вангеры, а про один важный аспект написания расширений для замечательной СУБД PostgresSQL.

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

          К таблицам из Си можно получить доступ через хорошо описанный но медленный SPI (Server Programming Interface), также есть очень сложный способ, через буферы, а я расскажу про компромиссный вариант. Под катом я постарался дать примеры кода с подробными пояснениями.
          Читать дальше →
          • +21
          • 8.3k
          • 3
        • 400 потрясающих бесплатных сервисов

          • Translation

          Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

          И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



          A. Бесплатные веб-сайты

          • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
          • Bootswatch: Бесплатные темы для Bootstrap.
          • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
          • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
          • Strikingly: Конструктор веб-сайтов.
          • Layers: Создание сайтов на WordPress (new).
          • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
          • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
          Читать дальше →
        • The Chrome Dev Summit в прямом эфире, день первый

            Привет, Хабр! Совсем скоро начнётся он-лайн трансляция главного Chrome-мероприятия этого года: Google Chrome Dev Summit 2015.



            К сожалению, происходит оно на другой стороне земного шара, так что большая часть трансляции придётся на нашу с вами ночь (начало — в 20:00 по Мск), тем не менее, пройти мимо такого мероприятия очень сложно. Итак, вот что вас ждёт:
            Читать дальше →
          • Badoo PHP Code Formatter. Теперь в open source!

              Несколько лет назад компания Badoo начала значительно расти по числу сотрудников, с 20 до 100 и более. Это потребовало серьезной перестройки многих процессов, касающихся разработки. Одна из проблем, с которой мы столкнулись, — как заставить всех разработчиков следовать единому стандарту кодирования, чтобы весь наш код выглядел единообразно и был легко поддерживаемым?

              Для решения этой задачи мы решили внедрить инструмент для форматирования кода, который умел бы следующее:

              1. выводить сообщения о несоответствии стандарту форматирования в виде списка, не трогая сам файл;
              2. автоматически исправлять все найденные проблемы с форматированием;
              3. уметь форматировать только часть файла (нам не нужно переформатировать репозиторий сразу целиком, чтобы не потерять историю).

              Мы рассматривали два проекта, которые можно было бы взять за основу для написания такого инструмента — PHP Beautifier и PHP Code Sniffer. Первый умел форматировать код, но не умел печатать диагностику, а второй — наоборот, умел печатать диагностику, но не умел форматировать файлы. К сожалению, оба этих проекта, по нашей оценке, были не слишком пригодны для того, чтобы добавить в них недостающую нам функциональность, поэтому была написана новая утилита — phpcf (PHP Code Formatter). Уже в течение двух лет она работает как git pre-receive hook, настроенный на отклонение (!) изменений, которые не оформлены по нашему стандарту кодирования.

              Наконец настало время открыть исходные тексты нашей утилиты для широкой публики: github.com/badoo/phpcf
              Читать дальше →
            • Подборка бесплатных инструментов для разработчиков

              • Translation
              Сегодня мы представляем вашему вниманию адаптированную подборку инструментов (в том числе облачных) для разработчиков, которые позволяют создавать по-настоящему качественные проекты. Здесь представлены исключительно SaaS, PaaS и IaaS сервисы, предоставляющие бесплатные пакеты для разработчиков инфраструктурного ПО.

              Читать дальше →
            • Поиск с помощью регулярных выражений может быть простым и быстрым

              • Translation
              В этой статье мы рассмотрим два способа поиска с помощью регулярных выражений. Один широко распространён и используется в стандартных интерпретаторах многих языков. Второй мало где применяется, в основном в реализациях awk и grep. Оба подхода сильно различаются по своей производительности:



              В первом случае поиск занимает A?nAn времени, во втором — An.

              Степени обозначают повторяемость строк, то есть A?3A3 — это то же самое, что и A?A?A?AAA. Графики отражают время, требуемое для поиска через регулярные выражения.

              Обратите внимание, что в Perl для поиска строки из 29 символов требуется более 60 секунд. А при втором методе — 20 микросекунд. Это не ошибка. При поиске 29-символьной строки Thompson NFA работает примерно в миллион раз быстрее. Если нужно найти 100-символьную строку, то Thompson NFA справится менее чем за 200 микросекунд, а Perl понадобится более 1015 лет. Причём он взят лишь для примера, во многих других языках наблюдается та же картина — в Python, PHP, Ruby и т. д. Ниже мы рассмотрим этот вопрос более детально.

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

              Возникает логичный вопрос: а почему бы в Perl не использовать метод Thompson NFA? Это возможно и следует делать, и об этом пойдёт далее речь.
              Читать дальше →
            • Топ-10 статей по User eXperience для начинающих, чтобы за час понять, что это такое



                Моя стратегия разобраться в какой-либо теме — пару часов почитать Хабр. Я решил сэкономить немного времени таких же, как и я, и сделал небольшую подборку полезных и интересных материалов на тему UX. Сразу предупрежу, что получить профессиональный level up с помощью них не получится (для этого есть оффлайновые курсы), но вот вникнуть в тему и получить инсайты — запросто. И да, если есть, поделитесь ссылками на материалы, которые были для вас максимально полезными в свое время.
                Читать дальше →
                • +22
                • 49.8k
                • 3
              • Балансировка 70 тысяч запросов в секунду на HighLoad++


                  Библиотека докладов


                  Это не просто статья — это целая библиотека докладов про внутреннее устройство тех или иных крупных и высоконагруженных проектов. Все эти доклады звучали на конференциях HighLoad++ и РИТ++ за последние несколько лет.


                  Читать дальше →
                • Rust в деталях: пишем масштабируемый чат с нуля, часть 1

                  • Translation

                  Часть 1: Реализуем WebSocket. Введение.


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

                  В первой части мы рассмотрим начальную настройку окружения и реализацию простейшего WebSocket-сервера. Чтобы понять технические детали статьи вам не потребуется опыта работы с языком Rust, хотя знание основ системных API (POSIX) и C/C++ лишним не будет. Прежде чем начинать чтение, заготовьте немного времени (и кофе) — статья описывает все максимально подробно и поэтому довольно длинная.

                  Читать дальше →
                • PostgreSQL и задачи, с ней связанные, на HighLoad++



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

                    Руководитель и идеолог международного сообщества, Брюс Момжан, вот уже какой год приезжает к нам на HighLoad++. Этот год не исключение, Брюс будет рассказывать про «Upcoming PostgreSQL Features» — кому рассказывать про будущее этой СУБД, как не Брюсу?

                    Почему же, несмотря на такую активность, это база данных по-прежнему далеко не так распространена, как, например «базулька» MySQL. В чем подвох? Эту тему мы активно обсуждали на конференции PGDay'15, которую организовал один из докладчиков HighLoad++ Илья Космодемьянский.

                    Для начала небольшое исследование:
                    1. Крупнейшие платные CMS в России (Битрикс, Netcat, UMI) не поддерживают PostgreSQL;
                    2. Самые популярные бесплатные CMS (Wordpress, Drupal, Joomla) тоже (или поддерживают с трудом или поддерживают недавно);
                    3. Только каждый третий хостинг провайдер предлагает поддержку PostgreSQL.

                    Читать дальше →
                  • Всероссийский конкурс «Открытые данные»

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



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

                        Несколько месяцев назад я опубликовал плагин к Moment.js позволяющий рассчитать: сколько это N рабочих дней от сегодня в календарных днях? какая дата будет спустя N рабочих дней от заданной даты? сколько рабочих дней в заданном диапазоне? Возможность сконфигурировать рабочие дни и исключения в виде праздников — имеется.

                        Плагин можно найти на github: https://github.com/andruhon/moment-weekday-calc

                        Плагин можно установить через bower и npm:
                        bower install moment-weekday-calc
                        

                        npm install moment-weekday-calc
                        

                        Плагин добавляет несколько функций в Moment.js:
                        • int weekdayCalc — считает сколько «рабочих» дней в заданном диапазоне
                        • date addWorkdays — находит дату спустя N «рабочих» (пн-пт) дней
                        • int workdaysToCalendarDays — конвертирует рабочие дни в календарные
                        • date addWeekdaysFromSet — добавляет дни из заданного множества к заданной дате
                        • int weekdaysFromSetToCalendarDays — конвертирует дни из заданного множетсва в календартные дни

                        Каждая из функций доступна с префиксом iso, такие функции используют множество рабочих дней начинающееся с понедельника (1-7), функции без префикса используют американский формат начинающийся с воскресенья (0-6).

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

                        Читать дальше →
                      • PHP и realpath_cache

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

                        Слышали ли вы про PHP-функции realpath_cache_get() и realpath_cache_size()? А может быть про параметры realpath_cache_size и realpath_cache_ttl в php.ini?

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

                        Далее мы разберемся, как все это работает под капотом, и как с этим жить. Под катом много ссылок на исходники.
                        Читать дальше →
                      • Wkhtmltopdf + Node.JS

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

                          Однако, есть и другой путь создания pdf документов: конвертирование из некоторого языка разметки с помощью соотвествующего инструмента. Данный способ будет эффективным и займет меньше времени на внесение изменений в pdf, если выбранный инструмент работает достаточно предсказуемо. Существует несколько подобных решений, но на нашем проекте мы остановили свой выбор на Wkhtmltopdf, которое генерирует pdf документ из HTML. Спустя год использования данного инструмента могу сказать, что выбор был сделан правильный, т.к. все потребности были покрыты с головой.

                          В данной статье я хочу поделиться библиотеками, позволяющими упростить работу c wkhtmltopdf в Node.JS.
                          Читать дальше →
                          • +9
                          • 9.9k
                          • 1