• Яндекс.Алгоритм. Разбор прошлогоднего квалификационного раунда и последний шанс поучаствовать в чемпионате

      Как вам известно, вчера завершился очередной чемпионат ACM ICPC. Поздравляем студентов МФТИ, ИТМО, УрФУ и ННГУ с отличным выступлением, ребят из СПбГУ — с 1-м местом. Теперь мы приглашаем всех желающих принять участие в Яндекс.Алгоритме 2016. В этом году финал чемпионата пройдет в Минске.

      image

      В этом году впервые помимо традиционных призов победители получат возможность попасть на стажировку в Яндекс. 22 мая регистрация закроется и останется только следить за другими участниками в отборочных раундах. Квалификационный раунд продлится в этом году двое суток — с 21 по 22 мая. Раунды вновь будут оцениваться по системе TCM/Time. Для тех, кому интересно, какой сложности задачи их ждут, мы разобрали тур прошлогодней квалификации. Также у вас есть возможность потренироваться на нем.

      UPDATE: Уже начался квалификационный раунд Яндекс.Алгоритма 2016, приходите порешать задачи, которые мы обязательно разберем в будущем. На наш взгляд, задачки не хуже, чем в прошлом году.

      Читать дальше →
    • Интерполяция: рисуем плавные графики с помощью кривых Безье

      Доброго времени суток, харбачитатель.

      В этой статье мне хотелось бы рассказать об одном придуманном когда-то алгоритме (или скорее всего — переизобретённом велосипеде) построения плавного графика по заданным точкам, используя кривые Безье. Статья была написана под влиянием вот этой статьи и очень полезного комментария товарища lany, за что им отдельное спасибо.

      Постановка задачи
      Есть массив Y-ков точек, расположенных равномерно по оси X. Нужно получить плавный график, который проходит через все заданные точки. Пример на рисунке ниже:



      Всех, кому интересно, прошу под кат.
      Читать дальше →
    • Привет, Хабр! Мы пришли сюда с целью рассказать вам о новом сервисе для организации коммуникаций внутри распределённых команд — SOCOCO. Это немаловажная часть нашего обширного портфеля решений для бизнеса. В SOCOCO использован опыт удалённой работы, внутреннего взаимодействия, совещаний, совместной работы над сложными и срочными проектами. Это тот продукт, которого нашей команде самой так не хватало.
      Читать далее
    • Интересные моменты в C# (boxing unboxing)

        В этой статье мы коротко пройдемся по малоизвестным особенностям boxing/unboxing.

        Предыдущая статья о foreach
        Предыдущая статья об Array

        Типичный вопрос на собеседовании об упаковке и распаковке выглядит следующим образом — «Что будет при запуске данного кода, и если он не будет работать то как его исправить?».

        Тестовый код:
        object box = (int)42;
        long unbox = (long)box;
        

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

        Правильный ответ:
        object box = (int)42;
        long unbox = (long)(int)box;
        

        Обычно это считается правильным ответом, но это не совсем так…
        Читать дальше →
      • Математика на пальцах: ардуино головного мозга или линейно-квадратичный регулятор для управления электродвигателем

        • Tutorial

        Постановка задачи: как со школьными знаниями дойти до выводов университетского уровня


        Эта статья предполагает, что вы прочли мои статьи (ну или и без того знаете) про методы наименьших квадратов и про линейно-квадратичный регулятор.

        Как я уже говорил в предыдущих статьях, мои знакомые студенты хотят построить обратный маятник, но умаялись подбирать коэффициенты ПИД-регулятора, поэтому я неспешно смотрю, что такое линейно-квадратичный регулятор, ну а заодно и вам пересказываю то, что прочитал. Задача для этой статьи — показать, как воплотить в железе одномерный пример из статьи про линейно-квадратичный регулятор. Грубо говоря, я хочу написать написать управление для сервомотора: у меня есть текущее положение оси привода и текущая скорость её вращения, я хочу её остановить в заданном положении. Я попытался было прочитать схожую статью на эту тему, но, признаться, ничего в ней не понял, поэтому сел разбираться самостоятельно, предпочтительно на пальцах и без страшных слов типа дифференциальных уравнений Лагранжа-Эйлера.

        Продолжая рабочий эксгибиционизм, знакомлю вас с Bubble Bobble, который живёт у нас с коллегой в кабинете. Он рецензирует статьи для конференции SIGGRAPH.


        Читать дальше →
      • Вышел новый JavaScript фреймворк: DAAJS

          На днях вышел первый релиз нового многообещающего open source JavaScript фреймворка «DAAJS». Он может быть интересен front-end разработчикам в качестве базы для создания веб- и мобильных приложений.



          В основе идеологии фреймворка лежат class-oriented и event-driven подходы. Вся функциональность реализована в виде классов. Классы представлений на основе шаблонов и алгоритмов генерируют компоненты пользовательского интерфейса и инкапсулируют непосредственно связанное с ними поведение (такое как разворачивание ветвей древовидных списков, раскрытие пунктов меню, перемещение элементов и т.п.). Механизм событий служит для организации как взаимодействия пользователя с интерфейсами — на уровне классов, а не отдельных DOM-элементов — так и для реализации сложного поведения, требующего участия множества методов или других классов. Любые события внутри фреймворка представлены в едином, унифицированном формате.

          Читать дальше →
        • Книга «Парадокс. Девять великих загадок физики»

            Привет, Хаброжители! Мы начали издавать новую серию книг «Pop Science», обзор которых мы сделали на Geektimes.
            Здесь мы представим отрывок из книги:

            image Парадокс Ферми можно сформулировать так.

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

            Читать дальше →
          • Правила хорошего тона при написании плагина на jQuery

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


              Автор: Вячеслав Михайлов, Solutions Architect.

              В этой статье я поделюсь опытом проектирования RESTful API — на конкретных примерах покажу, как делать хотя бы простые сервисы красиво. Также мы поговорим, что такое API и зачем он нужен, поговорим об основах REST — обсудим, на чем его можно реализовывать; коснемся основных веб-практик, которые зависят и не зависят от этой технологии. Также узнаем, как составлять хорошую документацию, затрачивая на это минимум усилий, и посмотрим, какие существуют способы нумерации версий для RESTful API.

              Часть 1. Теория


              Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими

              Почему хороший API — это важно?

              • Простота использования и поддержки. Хороший API просто использовать и поддерживать.
              • Хорошая конверсия в среде разработчиков. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
              • Выше популярность вашего сервиса. Чем больше пользователей API, тем выше популярность вашего сервиса.
              • Лучше изоляция компонентов. Чем лучше структура API, тем лучше изоляция компонентов.
              • Хорошее впечатление о продукте. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.


              Теперь посмотрим, какие бывают виды API.

              Виды API по способу реализации:
              • Web service APIs
                • XML-RPC and JSON-RPC
                • SOAP
                • REST

              • WebSockets APIs
              • Library-based APIs
                • Java Script

              • Class-based APIs
                • C# API
                • Java



              Виды API по категориям применения:

              • OS function and routines
                • Access to file system
                • Access to user interface

              • Object remoting APIs
                • CORBA
                • .Net remoting

              • Hardware APIs
                • Video acceleration (OpenCL…)
                • Hard disk drives
                • PCI bus



              Читать дальше →
            • Фреймворки JavaScript. Как изучить их по-быстрому

              • Перевод
              Здравствуйте, коллеги.

              Сегодня мы хотели затронуть такую многогранную и противоречивую тему, как фреймворки JavaScript. За последние несколько месяцев в издательстве неоднократно обсуждались перспективы издания книг и по Angular.js, и по Knockout.js, а книга по Backbone.js у нас выходила в прошлом году. Следующий материал призван помочь разобраться в сильных и слабых сторонах различных фреймворков JavaScript. Возможно, после изучения статьи читателю будет проще ответить на вопросы о том, так ли схожи эти фреймворки, и желает ли он дополнительно изучить какую-то из технологий, упомянутых в этом обзоре. Мы же попросим вас поделиться вашими соображениями о том, нужны ли новые книги по этим фреймворкам, если да — то по каким (высказываемся в комментариях, не стесняемся давать ссылки на книги).
              Читать дальше →
            • Динамическое связывание данных в HTML и JS

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

                Тогда вам под кат…
                И да… в конце, как всегда, ссылка на код ;)
                Читать дальше →
              • Я веб-разработчик и уже 10 дней не могу написать простейшее приложение

                Предлагаю вашему вниманию перевод статьи "I’m a web developer and I’ve been stuck with the simplest app for the last 10 days".

                От переводчика: мнение автора местами частично, или полностью, не совпадает с моим, но вопрос поднимается, как мне кажется, правильный. Рекомендую почитать комментарии в блоге автора.

                В основном я занимаюсь full-stack web-разработкой. Периодически пишу бэкенд на Python или Ruby, иногда работаю с C#. Еще я пишу консольные утилиты на C++ и Node.js. Мне нравится Closure, я познакомился с web много лет назад, когда писал на Perl и PHP, а первые годы профессиональной разработки посвятил программированию на Java.

                Когда я впервые встретился с Javascript, он в основном использовался для того, чтобы добавить на страничку "Текущее время". Это были девяностые, когда все хотели приправить свои странички так, чтобы пользователи могли оценить, как это клево: текущий день недели выводится динамически. А спустя какое-то время оказывалось, что Javascript может гораздо больше, и мы получаем полностью динамический HTML — DHTML!

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

                Десять дней назад я решил сделать небольшое SPA для себя — маленькая утилита, потенциальный pet-project. Работы дня на два-три. А последние полгода я работал над десктопным проектом на C#. Это была довольно скучная программулина для управления рабочими процессами: webservice-бэкенд и winforms на фронте.
                Читать дальше →
              • UFCS в языке программирования D

                Наверняка вы уже видели некоторые посты о D. Шаблоны, псевдочлены, потоки… Сегодня я вам расскажу о такой фиче языка, как UFCS, или Universal Function Call Syntax. Начнем с простого.

                Рассмотрим некий класс A и функцию, принимающую указатель на его экземпляр:

                class A {
                	int a;
                }
                
                void foo(A a) {}
                

                Спросите любого программиста на Си, как бы он её вызвал. Наверняка вы услышите что-то подобное:

                void main() {
                	auto b = new A;
                
                	foo(b);
                }
                

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

                b.foo();
                

                Это открывает большой простор для построения очень интересных, последовательных(и даже быстрых) конструкций.

                Осторожно: в конце цветное изображение!
                Читать дальше →
              • Параллельные заметки №1 – технология OpenMP

                  OpenMP В ближайшие несколько постов мы расскажем о практическом использовании многоядерных процессоров. Ведь все-таки что бы ни говорилось о многоядерности, в любом случае программы надо «обучать» эффективному использованию нескольких ядер. А в этом первом посте будет анонс и первая «вводная» заметка.
                  Читать дальше →
                • FlyElephant как инструмент для вычислений на C++, R, Python или Octave


                    Приветствую всех!

                    Сегодня я расскажу о возможностях платформы FlyElephant для ученых и инженеров, которые в своей работе проводят различные вычисления на C++, R, Python или Octave. Это могут быть научные расчеты, анализ данных, моделирование или другие задачи. 22 января я буду проводить вебинар “Введение в FlyElephant”, на котором детально расскажу о платформе FlyElephant, а сегодня в общих чертах познакомлю вас с ней и покажу процесс проведения расчетов.

                    FlyElephant — это платформа, которая предоставляет ученым готовую вычислительную инфраструктуру для проведения расчетов, автоматизирует рутинные задачи и позволяет сосредоточиться на основных вопросах исследований.
                    Читать дальше →
                  • Что на самом деле может виртуальная память



                      Мы в 1cloud стараемся рассказывать о различных технологиях — например, контейнерах, SSL или флеш-памяти.

                      Сегодня мы продолжим тему памяти. Разработчик Роберт Элдер (Robert Elder) в своем блоге опубликовал материал с описанием возможностей виртуальной памяти, которые известны не всем инженерам. Мы представляем вашему вниманию основные мысли этой заметки.
                      Читать дальше →
                      • +17
                      • 30,2k
                      • 4
                    • Первые шаги с OpenCL или сказ о том как одинаковый код на GPU и CPU запускать

                        Итак, прошел почти год с момента моего первого поста о программировании видеокарт и страшилок о том, как это все сложно. Теперь настала пора показать, что все не так плохо и как пользоваться этой странной штукой по имени OpenCL, да еще и использовать его главное преимущество, то есть возможность запускать один и тот же код на разных девайсах. А еще я покажу как можно получить на порядок большую производительность обычного процессора практически бесплатно.
                        За деталями под кат...
                      • OpenCL: универсальность и высокая производительность или не так все просто?

                        На Хабре уже были статьи об OpenCL, CUDA и GPGPU со сравнениями производительности, базовыми понятиями и примерами, поэтому рассказывать об основах и принципах работы я тут не буду, даже код не покажу. Но я хочу описать в чем заключаются реальные трудности при использовании GPU (про ограничения и их последствия), почему нельзя сравнивать производительность CPU и GPU, а также про то насколько “универсален” OpenCL на самом деле.
                        Читать дальше →
                      • SQL Server 2016 CTP3.1 — что нового для разработчика?

                        • Tutorial
                        Еще недавно в моей памяти отложился анонс SQL Server 2016, которую лично презентовал Сатья Наделла. И вдруг, как снег на голову, стали одна за одной выходить свежие Community Technology Preview (на данный момент самая свежая версия – CTP3.1). По мере знакомства с новой версией, все больше хотелось поделиться впечатлениями…

                        Далее обзор новых синтаксических фишек SQL Server 2016: JSON, GZIP, DROP IF EXISTS, TRUNCATE TABLE по секциям, новые функции…

                        #1 – DROP IF EXISTS


                        CREATE TABLE dbo.tbl (
                            a INT, b INT,
                            CONSTRAINT ck CHECK (a > 1),
                            INDEX ix CLUSTERED (a)
                        )
                        

                        Если раньше перед удалением объекта приходилось делать проверку:

                        IF OBJECT_ID(N'dbo.tbl', 'U') IS NOT NULL
                            DROP TABLE dbo.tbl
                        

                        То сейчас появился более компактный синтаксис:

                        DROP TABLE IF EXISTS dbo.tbl
                        
                        Подробнее
                      • URI — сложно о простом (Часть 1)

                          image

                          Привет хабр!

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

                          "Пфф, ссылки они и в Африке ссылки, чего тут разбираться?" — скажете вы, тогда я задам вопрос:

                          Что есть что и куда нас приведет?
                          • http://example.com
                          • www.example.com
                          • //www.example.com
                          • mailto:user@example.com

                          Если вы не знаете однозначного ответа или вам просто интересно и если вы не боитесь огромного количества трехбуквенных аббревиатур — милости прошу под кат.
                          Читать дальше →