• Грандиозная битва в EVE Online, кто потерял 300000$ и что же всё-таки там произошло

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

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


    Читать дальше
  • Пессимальные Алгоритмы и Анализ Вычислительной Усложнённости

    • Перевод
    «Усложнённость (Simplexity) — процесс, которым природа достигает простых результатов сложными путями.» — Bruce Schiff



    1. Введение


    Представьте себе следующую задачу: у нас есть таблица из n целочисленных ключей A1, A2, …, An, и целочисленное значение X. Нам нужно найти индекс числа X в этой таблице, но при этом мы особо никуда не торопимся. На самом деле, мы бы хотели делать это как можно дольше.

    Для этой задачи мы могли бы остановиться на самом тривиальном алгоритме, а именно, перебирать все An по порядку и сравнивать их с X. Но, может так случиться, что X = A1, и алгоритм остановится на самом первом шаге. Таким образом, мы видим, что наивный алгоритм в наилучшем случае имеет временную сложность O(1). Возникает вопрос — можем ли мы улучшить (то есть, ухудшить) этот результат?

    Разумеется, мы можем сильно замедлить этот алгоритм, добавив в него пустых циклов перед первой проверкой равенства X и A1. Но, к сожалению, этот способ нам не годится, потому что любой дурак заметит, что алгоритм просто-напросто впустую тратит время. Таким образом, нам нужно найти такой алгоритм, который бы всё-таки продвигался к цели, не смотря на отсутствие энтузиазма, или вовсе желания до неё в конечном итоге дойти.
    Заинтригованы? Добро пожаловать под кат.
  • Что можно узнать о кандидате по тестовому заданию

      Какое-то время назад по Хабру прокатилась волна статей о поиске работы и прохождению собеседований. Многократно высказались и работодатели и соискатели. Но, к сожалению, не была в достаточной степени затронута тема тестовых заданий.

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

      Предлагаю вашему вниманию тестовое задание, которое я уже довольно давно даю кандидатам в компании, где я работаю:

      На экране есть сетка M на N из цветных квадратиков. Нужно реализовать на этой сетке следующий эффект — по клику слева направо со скоростью V пробегает волна, меняя цвет квадратиков на другой (единый для всей волны). Эффект должен работать при любых значениях M, N, V. Волна начинается всегда у левой стенки. Одновременно может идти несколько волн разного цвета.
      Анимационный пример: http://dl.dropbox.com/u/3601116/wave.swf (покликать по флэшке).


      Я не сомневаюсь, что это задание с легкостью сделают все программисты посетители Хабра.

      А у меня получилась следующая статистика:

      1. В итоге, задание взяли чуть больше 20 человек.
      2. Пара человек ничего не сделали.
      3. Половина из оставшихся (по моим критериям) с ним не справились.
      4. Кандидаты четко разделились на весьма интересные группы.

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

        Представьте на минутку обычного программиста. Допустим, его зовут Вася и ему нужно сделать анимированную менюшку на сайт/десктоп приложение/мобильный апп. Знаете, которые выезжают сверху вниз, как меню у окна Windows или меню с яблочком у OS X. Вот такое.

        Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.

        var opened = false;

        Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:

        var opened = false;
        var animating = false;
        
        function onClick(event) {
          if (animating) return;
          if (opened) close();
          else open();
        }
        

        Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:

        if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }

        Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.

        Знакомьтесь, это Вася.


        Читать дальше →
      • Как вырастить программу из прототипа

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


          А что, если я скажу, что не все проекты одинаковые, и некоторые из них не то что можно, а даже нужно тщательно выращивать из прототипа? Об этом я рассказывал на конференции Unite'12, а сейчас расскажу вам.
          Читать дальше →
        • RPG для разработчиков. Два года спустя

            Чуть более двух лет назад я опубликовал статью Другое видение скучных GTD планировщиков через призму RPG игр, в которой описал свою старую идею про совмещение работы над software проектами и элементов RPG игр.

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

            Топик тогда собрал 100500 комментов (в основном «супер! хочу!»), а особо заразительные собрались в команды и стали воплощать идею в жизнь. Так что же было сделано за эти два года?


            Читать дальше →
          • Achievements в Visual Studio

              Год назад пробегал топик, мол, а что если сделать в Visual Studio ачивки как в MMO? И вот, народ сделал. Пока что ачивок маловато, но тренд интересный.

              Два года назад я написал статью "Другое видение скучных GTD планировщиков через призму RPG игр". В ней я говорил и об анализе кода, сборке статистики с него и вручении ачивок на основе этой статистики.

              Приятно, что кто-то пытается воплотить эти идеи в жизнь.

              Странно, но на хабре эта новость как-то прошла незамеченной и поиск ничего не дал.
            • Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?

                Computer Scientist, Software Engineer и Coder заходят в бар.
                — О, а вот и программисты! — окликает их бармен...


                Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют "программистами". А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.

                Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.

                Давайте же попробуем разобраться.
                Читать дальше →
              • А Вы отменили услугу Альфа-Чек с закончившихся карт в Альфа-Банке?

                  Клиент Альфа-Банка уже очень давно. Все отлично, все устраивает. Но на днях все же случилась небольшая капля дегтя.

                  Подключена услуга Альфа-Чек на трех картах — всегда знаю что где кто снял и положил. Время от времени снимается небольшая сумма со счетов за каждую из них. Я как-то не обращал внимание, пока случайно не заметил, что списаний там больше, чем три.
                  Читать дальше →
                • Как я проходил собеседование в компанию Zynga

                    На Хабре опять стали появляться статьи о том, как проходить собеседования на должность программиста. Материал из них полезен соискателям так же, как учебники полезны студентам во время сессии. Вызубрите том по Мат. Анализу и, если попадете на тот экзамен, получите пятерку.

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

                    Итак, я хочу рассказать о том, как представители компании Zynga приезжали в Москву в поисках нужных людей. О своем опыте общения с ними, об ошибках и сделанных выводах.

                    Ну, и картиночка на затравку.


                    Читать дальше →
                  • Не знаешь что посмотреть? Посмотри лучшие видео с TED

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

                      В итоге получился другой скрипт, который большинство этих видео скачал.
                      Читать дальше →
                    • Scala + Processing – интересный способ выучить новый язык

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

                        Но что можно сделать такого интересного на Scala? На самом деле, выбор не слишком большой. Я как-то придумал небольшую тулзу, неспешно написал ее, и «забил». А через несколько месяцев, к своему стыду, гуглил синтаксис «for loop»…

                        Я решил, что дальше так дело не пойдет, и нужно найти какие-то небольшие проектики на основные возможности языка. Тут мне и пригодился Processing. Скучные учебные проекты он любому новичку (вроде меня) поможет превратить в визуальные инсталляции. А дальше можно выбрать, что покопать углубленно — например, генерацию фракталов, рендеринг частиц или визуализацию данных.

                        Я переписал на Scala и выложил на GitHub парочку примеров. На скрине как раз один из них — MSA Fluids. Заинтересовавшихся прошу под кат.

                        Читать дальше →
                      • Использование git во Flash разработке

                          Я давно уже начал писать эту статью, но меня опередили (8.
                          Основная задумка была объяснить братьям флэшерам как работать с git. В статье я попытался описать свой личный опыт, а не просто перечислить очевидные плюсы git. Поэтому она будет полезна всем.

                          В первую очередь буду рад дополнениям и исправлениям. И конечно же вопросам.

                          Что такое git


                          git — это распределенная система контроля версий. Отличается от SVN отсутствием необходимости в центральном репозитории (который все же хорошо было бы держать) и легкостью работы с ветками (branch). Изначально я решил попробовать его в работе прочитав эту статью, что всем рекомендую.

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

                          Читать дальше →
                        • iPad как еще один дисплей для вашего компьютера

                            В интернете уже несколько дней обсуждают программку Air Display (App Store $9.99), которая превращает ваш iPad в еще один (беспроводной) дисплей. Сегодня я ее себе поставил. И вот мои пара впечатлений и 50 центов.

                            Читать дальше →
                          • Второе интересное применение iPad'у — смотреть видео с настольного компьютера

                              Я являюсь счастливым обладателем iPad WiFi уже почти неделю. Первое применение, ради которого я его и купил — читать PDFки с помощью GoodReader.

                              Вторым применением могло быть просмотр сериалов и нелицензионных фильмов, скачанных с торентов. Но длительная процедура перекодировки, импорта, закачки видео на устройство меня просто убивала. Пока я не нашел аппликацию AirVideo. Программулинка позволяет с помощью специального серверного приложения (доступного как на PC, так и на Mac) стримить видео по WiFi на iPad, перекодируя его на лету. Теперь для просмотра любимых сериалов лежа на диванчике, не нужно перед этим тратить время на перекодирование и заливку файлов.

                              На момент написания статьи, стоимость приложения в AppStore — $2.99, что для его функциональности и полезности совершенно смешные деньги. (/me жалеет, что купил какие-то гоночки за 10 баксов).
                            • Apple серьезно не хочет пускать к себе Flash

                                Из лицензии iPhone Developer Program

                                3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

                                Мне кажется, или они тут намекают и в том числе на возможность паблишинга iPhone приложений из CS5?
                                Читать дальше →
                              • Я обнулился. Хабракири или нет кармазадротам!

                                  Я обнулился. Совершил публичное хабракири. Я безумный? Возможно.

                                  Еще вчера в моем профиле можно было наблюдать следующую картину.

                                  image

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

                                  В то же время, с большой кармой идет и большая ответственность. Уже не думаешь, что ты пишешь. Из 250 в минус уйти куда сложнее, чем из нуля.

                                  Возможно, последней каплей стал вопрос на Russian Flash User Group, вопрос не про флэш, мои работы или знания, нет, вопрос о том, «откуда у меня столько кармы на Хабре?». Не знаю, так получилось.

                                  Единственное, чему я рад от прошлых 250+ кармы, — это предоставленная возможность пригласить много хороших людей на сайт.

                                  P.S. перенес сие безумство в iBrainless.
                                • NAS i-Stor iS607. Доработать напильником

                                    Купившись на краткий обзор i-Stor iS607 и его миленькую мордочку, на прошлой неделе я его приобрел. Чувства двоякие. С одной стороны оно работает, но какой ценой, господа. Кажется, я теперь могу идти админить Linux сервера.

                                    * NAS, или Network Attached Storage, — это такая коробочка с винтом, которая подключается к сети и тихо выполняет функции файлсервера и торенткачалки стоя в углу. Лучше специальных серверов по следующим параметрам: конечно же цена, размер, энергопотребление.

                                    Коротко.


                                    Стоит ли покупать?
                                    Нет, если вы не гуру линуксоид и/или не любите стучать головой об стену.

                                    Минусы.
                                    • Стандартная прошивка iS607 умеет только… да ничего не умеет
                                    • Нестандартную прошивку надо еще найти и умудриться поставить правильную
                                    • Техподдержки для iS607 нет как класса, 95% информации в интернете устарело и тупо не работает
                                    • Нужно знать Linux, чтобы хоть как-то привести его в рабочее состояние
                                    • Судя по форумам, с половиной винтов iS607 не дружит
                                    • Также, с половиной маршрутизаторов
                                    • Довольно слаб
                                    • Имеет еще кучу (порой странных и непонятных) глюков

                                    Плюсы.
                                    • Симпатяжка
                                    • Работает


                                    image
                                    * Нагло тырю картинку из того же топика

                                    В этом посте я хочу собрать свой опыт настройки i-Stor iS607. Ибо в интернете информации весьма мало и мне пришлось перечитать вообще все, чтобы чего-то хоть добиться. Чтобы облегчить путь братьям Хабравчанам (хоть я и не сомневаюсь, что большинство из вас успешно завершили бы этот квест самостоятельно и вероятно быстрее меня), публикую инструкцию в одном месте.
                                    Читать дальше →
                                  • Аватар показал нам как нужно бороться с видео пиратами

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

                                        Вчера ко мне пришел К.О. и рассказал то, чего я и так вроде бы подозревал, но очень надеялся, что это все же неправда — кризис или не кризис на дворе, но в маленьких веб студиях в основном (конечно же, бывают исключения) все плохо.

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

                                        Я понял, что плохи те студии, что остаются маленькими долгое время. Они должны либо совсем разваливаться, либо вырастать в солидные конторы. Где граница между маленькой и среднего размера студией? Граница скорее субъективная, взглянув на молодую морковку можно с уверенностью сказать, что она большая, а вот маленькая она или уже постарше, каждый из нас определяет эту границу для себя сам.

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

                                        Читать дальше →