• 10 лучших игр о хакинге, кодинге и вычислениях

    • Перевод

    Как все знают из новостных лент, мы живём в постоянно эволюционирующей киберпанковской антиутопии. Люди подключают туалеты к Интернету! Если этот гибсоновский мир кажется вам слишком РЕАЛЬНЫМ, то вы можете поиграть в десять лучших видеоигр о взломе, программировании и вычислениях, чтобы сбежать в мета-антиутопию. Которая, я уверен, является намного лучшим местом.


    10. TIS-100


    [официальный сайт]

    Да-а-а, приготовьтесь к тому, что ваш мозг начнёт болеть. TIS-100 — это игра студии Zachtronics, разработчика игр-головоломок, выпустившей Infinifactory и SpaceChem. В маркетинге она позиционируется как «игра о программировании на языке ассемблера, о которой вы не просили», и хотя я обычно игнорирую маркетинговые слоганы, здесь не могу не согласиться.

    Игрок получает в своё распоряжение таинственный компьютер из 70-х, найденный в вещах покойного дядюшки. Когда-то он игрался с ним, пытаясь разобраться. Теперь это ваша задача. Если вкратце, то вам нужно получить числа, чтобы провести машину из точки A в точку B, выполнив на каждом уровне «цели» (например, сначала вывести положительное число, а затем отрицательное). Для этого у вас есть список команд, изложенных в смутном руководстве пользователя. Игра советует вам распечатать это руководство в бумажном виде. В нём есть сделанные дядей примечания и пометки маркером, дающие подсказки о сущности этой машины.
    Читать дальше →
  • Чёртова дюжина странных игр



      Я люблю разные игры. Например, те, что могут меня удивить. В этой подборке я перечислил игры и почти игры, в хорошем смысле этого слова странные. Я сознательно игнорирую в обзоре симуляторы козлов и хлебушка, игры с необычным графическим дизайном (иначе статья лопнет по швам) и очень известные игры, такие как Dear Esther. И ни в коем случае не претендую при этом на полноту изложения. Просто предлагаю скоротать часок-другой во время праздников, если вам станет любопытно.
      Читать дальше →
    • Лучшие головоломки, про которые не знает никто*

      *почти

      Бодрый день, дамы и господа. Я наконец решил, что негоже мне сидеть в рид-онли, когда у меня в голове зреет столько полезных и нужных комментариев, и пора получить инвайт. А значит, надо писать пост. О чём? Конечно же, о том, что я люблю и знаю — об играх. Конкретно — о головоломках.

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

      Учитывая «одноразовость» головоломок, тем более странно и в чём-то даже преступно, что о замечательнейших представителях этого жанра узнаёшь практически случайно. Мой пост имеет целью исправление этой несправедливости, и я как раз заканчиваю затянувшееся предисловие и перехожу к сути.
      Читать дальше →
    • Tagsistant: семантическая файловая система

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

        Проект Tagsistant позиционирует свое творение, tagfs, как следование за общей тенденцией. Интернет шаг за шагом пытаются переводить на семантические рельсы, а файловые системы, считают авторы проекта, закоснели в устарелых принципах — иерархия, директории, вот это всё.
        И в принципе, я с ними в чем-то согласен. Представьте, что у вас есть несколько сотен фотографий, одни из которых сделаны в Кёльне, другие сделаны на закате, на третьих изображены девушки, а четвертые сделаны в 2010 году. Теперь вообразите, что вы хотите выполнить следующую операцию: получить список фотографий, которые сделаны на закате в Кёльне с вашей подругой, исключая те, которые были сделаны в 2010 году.
        Да, возможно, скажет кто-то, можно ведь создать директории, например, Koeln, sunset, girls, 2010, потом рассовать в них софтлинки на файлы… Как-то так, но разве это предоставит необходимую гибкость и удобство в составлении запросов (хотя бы в решении приведенного выше примера)?
        Да, можно попытаться воспользоваться EXIF-тегами. Но камера не указывает в них присутствия девушек на фото и других критериев, ограниченных вашей фантазией. А если речь вообще не о фотографиях, а об отчетах?
        Можно попытаться писать своеобразные теги в атрибуты файлов, используя ext4, при помощи setattr\getattr — по крайней мере, я видел такое предложение в вопросе тегирования файлов, не пробовал. Но это тоже половинчатое решение, даже если будет работать.
        Реальный пример для затравки, который я могу придумать, исходя из моих потребностей. У меня есть папка с огромным количеством разного картиночного хлама, когда-либо сохраненного в Downloads и позже протегированного (на самом деле, не одна). Я хочу получить из всего этого мусорного полигона список фотографий форумчан-девушек, которые сделаны в Киеве, содержат изображения пива и сделаны раньше 2012 года. Вместе с ними я хочу получить изображения всех админов форума, которые у меня есть:
        $ ls ~/tagsistant/store/forum/girls/beer/=Kyiv/time:/year/lt/2012/+/admin/@/

        Читать дальше →
      • 19 советов по повседневной работе с Git

        • Перевод
        • Tutorial


        Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

        Содержание:
        1. Параметры для удобного просмотра лога
        2. Вывод актуальных изменений в файл
        3. Просмотр изменений в определённых строках файла
        4. Просмотр ещё не влитых в родительскую ветку изменений
        5. Извлечение файла из другой ветки
        6. Пара слов о ребейзе
        7. Сохранение структуры ветки после локального мержа
        8. Исправление последнего коммита вместо создания нового
        9. Три состояния в Git и переключение между ними
        10. Мягкая отмена коммитов
        11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
        12. Игнорирование пробелов
        13. Добавление определённых изменений из файла
        14. Поиск и удаление старых веток
        15. Откладывание изменений определённых файлов
        16. Хорошие примечания к коммиту
        17. Автодополнения команд Git
        18. Создание алиасов для часто используемых команд
        19. Быстрый поиск плохого коммита

        Читать дальше →
      • Делаем из HP LJ1000 сетевой принтер

        HP LaserJet 1000 — отличная рабочая лошадка, быстрый и безотказный принтер с USB интерфейсом с низкой стоимостью отпечатка. В статье я опишу сложности и тонкости настройки софт-принтеров HP для работы через роутер по сети на примере своего LJ1000. Велкам под кат!
        Читать дальше →
      • Как пасти котов. Наставление для программистов, руководящих другими программистами

          Привет, Хаброжители!
          У нас вновь вышла книга Дж. Рейнвотера.

          image«Как пасти котов» — это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды программистов. Даже если вы еще месяц назад были блестящим и дисциплини-рованным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руко-водства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач. В таком случае без этой книги вам не обойтись. А может быть, вы — опытный менеджер, желающий пересмотреть свои принципы лидерства? Тогда, опять же, эта книга для вас. Вне зависимости от возраста, пола и социального статуса она поможет вам укрепить свои позиции в роли лидера программистов. Материал изложен довольно компактно и легко укладывается в голове. Стоя в книжном магазине и раздумывая, что же купить, задайте себе один простой вопрос: «Нужно ли мне совершенствовать свои лидерские навыки?» Полагаю, вы ответите: «Да», — а значит, данная книга окажется для вас небесполезной.
          Читать дальше →
        • Развёртывание приложений Qt в Windows


            Вступление


            Добрый день, уважаемые читатели! Совсем недавно я завершил разработку одного своего приложения на Qt, и мне захотелось создать профессиональную программу установки, чтобы всё было «как у взрослых». Как оказалось, сделать это непросто, учитывая, что на официальном сайте инструментария информации по развёртыванию почти нет. В данной статье рассмотрены некоторые этапы подготовки программ на Qt версии 5.2 или выше для распространения на компьютеры других пользователей. Итак, вот план руководства:

            1. Подготовка проекта Qt к развёртыванию
            2. Компоновка дистрибутива программы
            3. Подписание кода и создание установщика

            Не будем терять времени и приступим к работе.
            Читать дальше →
          • Тестирование светодиодных ламп IKEA

              Хорошие светодиодные лампы пока достаточно дороги, а из-за изменения курсов валют они стали ещё дороже.
              Одни из самых низких цен на светодиодные лампы сейчас в магазинах IKEA.
              Я протестировал 11 актуальных светодиодных ламп LEDARE, стоящих от 169 до 599 рублей.



              Читать дальше →
            • Тульпа — карманная шизофрения для гиков или реальный воображаемый друг

              • Tutorial
              Скажите, вы бы хотели иметь друга? Любого человека или другое существо, которое будет вашим самым лучшим другом, обладая той внешностью, которая вам нравится, и тем характером который вам необходим, которое не надо будет делить с ее или его друзьями, родителями, собачкой, игрушками или учебой.
              А секретаря, который всегда с вами, имеет прямой доступ к вашей памяти, напомнит, подскажет, и подаст нужную идею, напарника для мозгового штурма?
              Тогда добро пожаловать под кат.



              Тульпа — это стабильная самовнушенная осознанная визуализация, способная к самостоятельным мыслям и действиям, обладающая собственным сознанием. Что характерно, создается она совершенно осознанно, путем целенаправленных действий в течении долгого времени, и позволяет задавать начальный характер и форму по вашему усмотрению.
              Это ты сейчас с кем разговаривал? Расшифруй определение.
            • Vim по полной: Snippets и шаблоны файлов

                Оглавление


                1. Введение (vim_lib)
                2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
                3. Уровень проекта и файловая система (vim_prj, nerdtree)
                4. Snippets и шаблоны файлов (UltiSnips, vim_template)
                5. Компиляция и выполнение чего угодно (vim-quickrun)
                6. Работа с Git (vim_git)
                7. Деплой (vim_deploy)
                8. Тестирование с помощью xUnit (vim_unittest)
                9. Библиотека, на которой все держится (vim_lib)
                10. Другие полезные плагины

                Стоит ли рассказывать вам, как повторное использование кода и проектных решений облегчает жизнь программиста? Но все ли мы можем использовать повторно? Очень часто я сталкиваюсь в моих проектах с задачами, которые требуют копи-пасты кода и избежать этого невозможно. К категории этого «повторяемого» кода относятся все структуры используемого ЯП, многие классы проекта и тест-кейсы. К счастью давно изобретено решение, позволяющее работать с таким кодом быстрее и качественнее.
                Красная пилюля
                • +15
                • 12,9k
                • 6
              • Appodeal — бесплатный оптимизатор доходов от рекламы для мобильных разработчиков



                  Этим постом я бы хотел официально представиться и вкратце познакомить вас с нашим проектом. Меня зовут Павел Голубев, с 2009 года я работаю в сфере разработки и публикации мобильных приложений. Наша команда в свое время запустила SaaS-сервис Columbis для турагентств, позволяющий автоматизировать их деятельность. После этого я переехал в Соединенные Штаты, Сан-Франциско, и уже тут продолжил работу в сфере мобильной рекламы. В определенный момент у нас возникла потребность в платформе, которая позволила бы увеличить доход от рекламы в наших приложениях. На поиски подобного инструмента оптимизации трафика мы потратили несколько месяцев, после чего приняли решение сделать его сами. В итоге, разработка для внутренних нужд переросла в самостоятельный проект — Appodeal, в блоге которого и размещена данная публикация.

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

                  • какую рекламную сеть выбрать;
                  • как к ней подключиться;
                  • насколько высокая заполняемость (fill rate) у этой сети;
                  • насколько высокий eCPM для региона вашей аудитории в конкретной сети;
                  • какой тип оплаты подходит для вас (CPI/CPM/CPC);
                  • есть ли плагин для фреймворка, в котором вы ведете разработку;
                  • как в конечном итоге вывести свои деньги.

                  Читать дальше →
                • Как побрить %username%

                    Я нашёл доказательство бородатой шутки о том, что типичные it-шники бородаты. На Хабре нет ни одной статьи про бритвы!



                    Постараюсь это исправить, тем более бритва может быть настоящим гаджетом!
                    Осторожно! Не порежьтесь!
                  • Абстракции без накладных расходов: типажи в Rust

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

                    Этот пост начинает рассказ о третьем столпе:
                    • абстракции без накладных расходов.

                    Одна из мантр C++, которая делает его таким подходящим для системного программирования — принцип абстракции с нулевой стоимостью:
                    Реализации C++ подчиняются принципу нулевой стоимости: ты не платишь за то, что не используешь [Страуструп, 1994]. Более того: то, что ты используешь, кодируется наилучшим образом.

                    – Бьёрн Страуструп

                    Читать дальше →
                  • Deploy приложения на RoR 4 с помощью Capistrano 3


                    Представьте: Вы — веб-разработчик, который только недавно освоил Ruby on Rails. И тут Ваш первый проект подходит к стадии, когда его нужно выложить в интернет.
                    Вы, конечно, можете залить его на Heroku, но тамошние цены немного кусаются. Остается только купить VPS, настроить его и выложить проект туда.
                    «Что может быть проще? Найду какой-нибудь гайд, да следаю всё по нему» — подумаете Вы. Вот только гайдов, которые не просто выкладывают команды, но и объясняющие, что эти команды делают, — единицы, да и те используют уже устаревшую вторую версию Capistrano.

                    Поэтому я решил написать свой гайд, в котором постараюсь подробно рассмотреть:
                    • Первичную настройку сервера
                    • Установку и настройку nginx (с модулем PageSpeed), postgresql, redis
                    • Установку rvm, rails
                    • Настройку гема foreman для управления процессами Вашего приложения
                    • Настройку сервера Unicorn
                    • Настройку гема Capistrano (v3.1) для автоматизации деплоя


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

                    Читать дальше →
                  • Началась регистрация на пятый ежегодный чемпионат по спортивному программированию Russian Code Cup



                      С 5 марта открыта регистрация на участие в главном российском чемпионате по спортивному программированию — Russian Code Cup (RCC). Победители чемпионата завоюют звание лучших программистов года и разделят призовой фонд в размере 750 000 рублей. В RCC ежегодно принимают участие несколько тысяч русскоговорящих участников со всего мира. Они сражаются за звание не только самого талантливого, но и самого быстрого программиста, поскольку решение оригинальных и сложных задач чемпионата оценивается сразу по двум критериям: качество и скорость. Этот чемпионат дает молодым программистам прекрасную возможность продемонстрировать свое мастерство, получить признание профессионального сообщества и обратить на себя внимание крупных IT-компаний.
                      Читать дальше →
                      • +12
                      • 9,1k
                      • 5
                    • Оптимизация кода под Pebble


                        На Хабре уже было несколько статей об общих принципах написания кода под Pebble. Для программирования используется язык C, а сам процесс разработки происходит в браузере, при этом компиляция происходит на удаленных серверах, и изменить ее параметры нет возможности, разве что установить Ubuntu и инсталлировать необходимые инструменты для офлайн-компиляции. Но даже такой ход не избавит основного ограничения – на устройстве доступно только 24 Кб оперативной памяти, которая используется и для скомпилированного кода, то есть действительно динамической памяти остается 5-10 Кб. И если для простых программ, которые используются как тонкие клиенты или дополнительные датчики для телефона, этого с головой достаточно, то для написания самодостаточной более или менее сложной игры, которой не нужен смартфон, этого откровенно мало. Вот здесь и понадобится оптимизация кода под размер.

                        Свои шишки я уже набила, и поэтому предлагаю поучиться на моих ошибках, которые я объединила в 16 советов. Некоторые из них могут показаться капитанскими, от некоторых избавит хороший компилятор с правильными флагами компиляции, но, надеюсь, некоторые из них кому-нибудь да и будут полезными.
                        Читать дальше →
                      • Об удобной навигации и отладке C++ кода в Vim

                          Компания, где я работаю, разрабатывает программное обеспечение на C++ под Linux. Долгое время мы использовали Qt Creator, с редкими ребятами работающими из Emacs и Vim. Когда я сам попытался пересесть на Vim, я понял, что ситуация с плагинами для разработки на С++ очень не простая. Поработав немного с CTags, я быстро понял, что без напильника работать в Vim будет очень сложно.
                          К сожалению, с ростом опыта работы с Vim редактор в Qt Creator в режиме эмуляции устраивал меня все меньше, и в какой-то момент я решил потратить немного времени и разобраться, как же сделать из Vim нормальную среду.
                          Я очертил для себя четыре вещи, которые я бы хотел от среды разработки, и которых мне бы хватило в Vim, чтобы полностью на него перейти:

                          1. Автодополнение
                          2. Навигация по коду
                          3. Отладка прямо из среды
                          4. Интеграция с Git (в частности Blame прямо в редакторе, и Git Grep)

                          Автодополнение в Vim — это решенная проблема, и название у решения YouCompleteMe. Это очень качественный плагин, который реализует автодополнение для большого количества языков программирования, в частности Python и C++. Ходят слухи, что внутри Google YouCompleteMe решает и вторую проблему с навигацией кода, но использует для этого внутренные инструменты гугла для индексирования.

                          Интеграция с Git в какой-то степени решена с помощью vim-fugitive. Это не такая комплексная интеграция, как бывает у Jet Brains, или в Visual Studio, но сравнимая с тем, что предлагает Qt Creator. Те два сценария, которые нужны были мне: blame и grep — работают хорошо.

                          Отладка и навигация были проблемами, решенными гораздо хуже. В этой статье я расскажу о плагине, который мы написали для навигации по С++ коду. В конце статьи я также расскажу о том, как мы для себя решили проблему с интегрированным отладчиком.
                          Читать дальше →
                        • Коллективный разум ХабраХабра выбрал лучшие игры всех времен и народов на 2013 год

                            Коллективный разум ХабраХабра выбралучшие игры всех времен и народов на 2013 год

                            Этим постом подвожу итог попытки определить лучшие игры всех времен и народов по версии Хабрахабра на 2013 год.

                            Отбор проводился по простым правилам:

                            − В этот пост каждый желающий вносил свою любимую игру,
                            − Каждый другой желающий голосовал за любимую игру.

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

                            Основные итоги


                            Всего в посте собралось за 5 дней больше 1 800 комментариев. Игр было указано около 400. Набрали больше 20 голосов 121 игра. При подсчете учитывались только плюсы (минусы не считал, ибо мы выбирали то, что нравится). Итак, встречайте десятку лучших:

                            1. Герои Меча и Магии (259)
                            2. Half Life (254)
                            3. Fallout (211)
                            4. Portal (182)
                            5. Neverhood (174)
                            6. DOOM (153)
                            7. Civilization (151)
                            8. StarCraft (150)
                            9. Космические рейнджеры (128)
                            10. Warcraft (127)

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