• Праздничный биатлон

      Programmers' dayС днем программиста, коллеги!

      Предлагаю в честь праздника поразмять мозги и поучаствовать в биатлоне.
      Виды спорта: алгоритмы, SQL. Для каждого из них будет две задачки: попроще и посложнее.
      В качестве награды за усилия всем участникам гарантируется улучшение кровообращения в левом полушарии головного мозга (:

      Алгоритмы. Задача №1, разминочная


      Напишите код, который находит количество подчисел числа n, на которые это число делится без остатка.

      Для числа n, подчисло — это такое число, запись которого является подстрокой записи числа n. К примеру, если n равняется 1938, то его подчислами будут являться: 1, 9, 3, 8, 19, 93, 38, 193 и 938. Без остатка 1938 делится на четыре из этих подчисел: 1, 3, 19 и 38. Соответственно, результатом работы программы должно быть число 4.
      Если подчисла повторяются, каждое из них считается. Например, 101 делится без остатка на 1, 1 и 01, значит, ответ — 3.

      Так как задача несложная, в решениях ценится краткость или нестандартный подход.
      Читать дальше →
    • Google+ и теория множеств

        Думаете, у Бога нет чувства юмора? Вы посмотрите на утконоса)После недели использования новой социальной сети от Гугла я ощутил всю прелесть идеи разделения кругов общения. Действительно, довольно удобно делиться новостями и мыслями только с теми людьми, которым они будут интересны. Однако, в текущей своей реализации, круги, как инструмент разграничения доступа, неидеальны. В качестве примера приведу ситуацию, которая, я уверен, возникала у пользователей Google+ уже многие сотни раз.

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

        Теперь представьте, что вы хотите поделиться ссылкой на техническую статью с Хабрахабра. С кем стоит её расшаривать? С кругом «Программисты»? Пожалуй, стоит, но, с другой стороны, у вас в этом круге могут быть и англоязычные программисты-коллеги, которым статья не будет понятна. Значит, нужно расшаривать с кругом «Русскоговорящие»… но там полно людей, которые от программирования далеки. Выходит, нужно создавать отдельный круг: «Русскоговорящие программисты».
        Читать дальше →
      • Версионная миграция структуры базы данных: основные подходы

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

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