• Обучение наоборот

      Предисловие


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

      И родилась у меня такая мысль: а не перевернуть ли этот процесс? То есть сначала давать задание, а потом материал? И не пойти ли еще дальше?
      Пойти дальше
    • Список ресурсов для изучения Ассемблера

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

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

        UPD
        В список начали добавляться ресурсы по программингу микроконтроллеров.
        Читать дальше →
      • PNG — not GIF!

          Доброго времени суток!
          Вам когда-нибудь хотелось узнать как устроены файлы PNG? Нет? А я все равно расскажу.
          Формат PNG(Portable Network Graphics) был изобретен в 1995 году, чтобы стать заменой GIF, а уже в 1996, с выходом версии 1.0, он был рекомендован W3C, в качестве полноправного сетевого формата. На сегодняшний день PNG является одним из основных форматов веб-графики.

          Под катом вы найдете общее описание строения PNG-файла, некоторое количество картинок-схем, препарирование в hex-редакторе, и, конечно, ссылку на спецификацию.
          Читать дальше →
        • Шутер с псевдо-3D графикой на… bash

            Здравствуй, Хабрачеловек!

            Решил я как-то, что неплохо бы научиться писать «Hello world!» на bash. Как-никак уже полгода работаю на убунте, стыдно не уметь такого. Поискал на Хабре и понял, что просто почитать мануалы нынче не модно, надо написать свою игру. Осталось выбрать какую. Шахматы, Xonix, Sokoban, Морской бой уже написали, Тетрис вроде тоже (хотя ссылки не нашел), что же выбрать? Первой идеей была стратегия, но была откинута из-за полной безумности (хотя я надеюсь, что один из тех, кто продолжит историю топиков про игры на bash напишет и ее). Поэтому я остановился на шутере.


            *На картинке изображен коридор и монстр в нескольких шагах впереди

            Ссылка на скрипт: github.com/EvilTosha/labirinth/blob/master/lab2.sh

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

              Введение


              Недавно у меня появилась мысль научиться считать в шестнадцатеричной системе счисления. Так как я человек ленивый, такие способы, как выучить таблицу умножения меня не устраивали. Немного поразмыслив, я вспомнил, что каждое утро решаю (иногда несколько раз) несложный пример, чтобы отключить будильник. Помогает слабо, со временем я начал решать почти не просыпаясь. Так почему бы не совместить полезное с полезным?
              Осталось выбрать способ реализации. Так как я не имею не малейшего представления о разработке под андроид (да и вообще с Java не сильно знаком), да и писать свое приложение ради такой мелочи — это стрельба из пушки по воробьям, было решено модифицировать уже имеющийся будильник.

              Под катом вы найдете описание инструментов, процесса и результата перевода примера в hex. А также объяснение синтаксиса smali кода (язык опкодов для виртуальной машины dalvik). Картинок почти нет, буков много.
              Читать дальше →
            • Написание макроса-бота для браузерной игры

                Введение


                Не так давно на Google+ появились игры. Прочитав топик об этом, я решил во что нибудь поиграть. Выбор пал на игру Diamond Dash. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло…

                *Примечание: «руками» даже опытному игроку сложно набрать больше 400к

                Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов AutoIt.
                Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта.
                UPD Добавлено видео работы скрипта.
                Читать дальше →