• Переезд проекта с SVN на Git

      image
      Много лет подряд в качестве системы контроля версий для большого количества проектов использовали только SVN. Но наступил момент, когда количество разработчиков на одном из проектов заметно увеличилось, проект уже запущен в работу, и нужно как активно разрабатывать параллельно несколько фич, так и фиксить уже имеющиеся баги в оперативном режиме. Единый trunk в SVN не позволяет этого делать, а организация бранчей в нем же превращает жизнь разработчиков в ад. Поэтому было принято решение о переезде этого проекта с SVN на Git.
      Читать дальше о том, как это делается от А до Я
    • RESTful API для сервера – делаем правильно (Часть 1)

      • Translation
      В 2007-м Стив Джобс представил iPhone, который произвел революцию в высокотехнологичной индустрии и изменил наш подход к работе и ведению бизнеса. Сейчас 2012-й и все больше и больше сайтов предлагают нативные iOS и Android клиенты для своих сервисов. Между тем не все стартапы обладают финансами для разработки приложений в дополнение к основному продукту. Для увеличения популярности своего продукта эти компании предлагают открытые API, которыми могут воспользоваться сторонние разработчики. Пожалуй Twitter был первым в этой сфере и теперь число компаний, последовавших этой стратегии, растет стремительно. Это действительно отличный способ создать привлекательную экосистему вокруг своего продукта.

      Читать дальше →
    • Особенности культуры преподавания в ВУЗах на компьютерных специальностях

      Преподавание — сложная наука.

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


      Примеры для решения сложных ситуаций и успешного преподавания.

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

      • Translation


      В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

      Постановка проблемы


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

      Неправильное решение №1

      Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
      

      Читать дальше →
    • Нейросети для чайников. Начало



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

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

        Заинтересовавшихся прошу под кат.
        Читать дальше →
      • Веб-сервисы играют в покер

          imageЗдравствуй, Хабр.

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

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

          Изначальная идея проекта принадлежит моему другу (он не с Хабра). Первый раз она прозвучала примерно так:
          Я считаю, что нет ничего дурного в том, чтобы боты играли в покер-румах. Хотя, может быть, честнее было бы организовать специальный покерный клуб, где роботы играли бы только друг с другом. Вот я бы с удовольствием написал такого бота. А ты?
          Не помню, что я ответил. Мне интереснее было именно сделать такой сервис. Challenge accepted ;)
          Читать дальше →
        • Функциональное программирование для всех

          • Translation

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

          Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

          UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
          Читать дальше →
        • PHP: фрактал плохого дизайна

          • Translation

          Предисловие


          Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

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

          PHP — единственное исключение. Фактически каждая деталь PHP в какой-то мере поломана. Язык, структура, экосистема: всё плохо. И даже нельзя указать на одну убийственную вещь, настолько дефект систематичный. Каждый раз, когда я пытаюсь систематизировать недостатки PHP, я теряюсь в поиске в глубину обнаруживая всё больше и больше ужасных мелочей(отсюда фрактал).

          PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
          Читать дальше →
        • Маршруты на картах Google в вашем Android-приложении

            Не так давно мне понадобилось написать приложение, которое бы показывало на карте маршрут между двумя заданными точками. В качестве инструмента были выбраны карты от Google. После непродолжительных поисков были найдены статьи про интеграцию карт в приложение, про фильтрацию пинов, про маршруты. Однако статьи, в которой бы описывалось как делать подобные маршруты в Android-приложении, не было и я решил исправить данное упущение (для новоиспечённых разработчиков под Android пригодится). Добро пожаловать под хабракат.
            Читать дальше →
          • oEmbed. Делаешь веб-сервис? — Делай и oEmbed



              Конечно вы видели этот эффект, когда вставляешь в фейсбуке или вконтакте ссылку, и в посте тут же начинает подгружаться какой-то контент с сайта, на который ведет ссылка. И я видел, но даже не представлял, насколько это легко можно сделать с oEmbed'ом.

              oEmbed.com — впринципе, на этом можно было бы и закончить читать тем, кто хочет провести самостоятельное мини-исследование.
              Но вот мой рассказ, как этим пользоваться и много ссылок
            • Redis in production

                Хотелось бы рассказать о некоторых особенностях Redis при использовании на боевом сервере. Будут рассмотрены альтернативы при сохранении данных на диск, позволяющие достичь различной степени надёжности при сбоях. Так же будут приведены примеры конфигурации для резервного копирования и мониторинга. Используется Redis 2.2.11 на Amazon EC2 с установленной Ubuntu 10.10.

                Читать дальше →
              • Фильтр Калмана — Введение

                  Фильтр Калмана — это, наверное, самый популярный алгоритм фильтрации, используемый во многих областях науки и техники. Благодаря своей простоте и эффективности его можно встретить в GPS-приемниках, обработчиках показаний датчиков, при реализации систем управления и т.д.

                  Про фильтр Калмана в интернете есть очень много статей и книг (в основном на английском), но у этих статей довольно большой порог вхождения, остается много туманных мест, хотя на самом деле это очень ясный и прозрачный алгоритм. Я попробую рассказать о нем простым языком, с постепенным нарастанием сложности.
                  Читать дальше →
                • Советы себе в прошлом

                    У меня очень мало опыта (суммарно программистом я проработал 16 месяцев), тем не менее, я хотел бы дать несколько советов себе-в-прошлом, ну, или иными словами всем тем, кто сейчас учится в университете и планирует стать разработчиком ПО. Ни в коей мере не претендую на мудрость или опытность. Немного подумав, я понял, что все эти советы как никогда актуальны для меня и сегодня тоже. Первую заметку я опубликовал в своем блоге в прошлом году, а сейчас публикую здесь список, расширенный советами читателей блога.

                    Все советы автономны и их порядок не имеет значения.
                    Читать дальше →
                  • Написание компилятора LALR(1)-парсеров. Базовая теория

                      Введение, или зачем нужны синтаксические анализаторы


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

                      Эта часть посвящена базису, общей теории computer science. Возможно, что это даже преподаётся в школах/вузах России. Самая мякота пойдет со второй части.

                      Итак, зачем же кому-то может понадобиться писать парсер и что вообще это такое? Парсер — это код, который наделяет входящий набор символов семантическим смыслом. То есть, происходит анализ этих символов, и на основе этого анализа программа понимает как интерпретировать эти буквы и цифры. Простой пример — «1+2», после или во время процесса парсинга знак "+" это не просто символ плюса, но обозначение бинарноого оператора сложения, а в "+3" это унарный оператор знака числа. Большинству людей это очевидно, машине — нет.

                      Парсеры используются всюду — в Word'e для анализа приложений, словоформ, формул, etc; практически на любом сайте при валидации входных данных: email'а, телефонного номера, номера кредитки; конфигурационные файлы; сериализованные данные (например, в xml); во многих играх — скриптовые ролики, скрипты ИИ, консоль. В общем, это неотъемлемая часть computer science.

                      Читать дальше →
                    • Модуль nginx для борьбы с DDoS

                        Многие сталкивались с таким явлением как DDoS атака методом HTTP флуда. Нет, это не очередной туториал по настройке nginx, хочу представить свой модуль, работающий как быстрый фильтр между ботами и бэкэндом во время L7 DDoS атаки и позволяющий отсеивать мусорные запросы.
                        Читать дальше →
                      • Написание виртуальной файловой системы на c++

                        • Translation
                        Еще одна моя запись из песочницы, если будет время то переведу остальные части

                        Это перевод первой части статьи про написание VFS (виртуальной файловой системы) на c++ которую я нашел достаточно давно. Надеюсь вам понравится. :)
                        Читать дальше →
                      • stripe — оплата в интернете для программистов

                          Попробовал весьма интересный стартап сервис по приему платежей пластиковыми картами stripe, основанный в Сан-Франциско.

                          stripe blueprints

                          Судя по их блогу, открылись они совсем недавно, если верить информации в интернете, в декабре 2011 года. Примечательно, что среди инвесторов данного сервиса три наиболее влиятельных венчурных фонда силиконовой долины (Sequoia Capital, Y Combinator и Andreessen Horowitz), а также Peter Thiel и Elon Musk, которые являются основателями PayPal. Такая компания инвесторов сразу привлекает внимание к проекту.
                          Читать дальше →
                        • Как обезопасить исходники своего python-приложения

                          Рано или поздно все python-разработчики стают перед выбором: отдать заказчику приложение в исходниках или скрыть их. И вот во втором случае у многих (особенно недавно знакомых с этим прелестным языком) начинаются проблемы: поиск по гуглу, как правило, ничего не дает, идей никаких (или все бредовые).

                          Читать дальше →
                        • DynLib: библиотека для создания и работы с DLL

                          image Библиотека DynLib предоставляет удобные средства для разработчиков, использующих межмодульное взаимодействие (EXE<->DLL, DLL<->DLL) в своих проектах, и значительно сокращает время и количество кода.
                          DynLib стала неотъемлемым инструментом разработки. Под катом делимся результатами.
                          Читать дальше →
                        • Пользовательские атрибуты в Python

                          Вы когда нибудь задумывались о том, что происходит, когда вы ставите точку в python? Что скрывает за собой символ str(“\u002E”)? Какие тайны он хранит? Если без мистики, вы знаете как происходит поиск и установка значений пользовательских атрибутов в python? Хотели бы узнать? Тогда… добро пожаловать!
                          Читать дальше →