• Информационное мироздание. Частные выводы из предположения

      image

      Физики молчаливо предполагают, что мир состоит из материи. А что если из информации? В конце концов, материя – лишь название строительного материала, из которого, по мнению физиков, организован мир, но свойства материалов и укладка их в единое восхитительное и гармоничное целое – это уже информация. Поэтому при упоминании об устройстве мироздания правильней все-таки говорить об информации, чем о материи.
      Ниже приводятся выводы из данного смелого предположения. Приверженцам традиционного физического представления о мире одни из них могут показаться безнадежно банальными, другие – вызывающе нелепыми. Что же, не все физикам удивлять обыкновенных людей черными дырами и квантовыми струнами, иногда и представители прочего человечества способны удивить физиков не менее безрассудными заявлениями.

      Читать дальше →
    • Сказка продолжается… Структура Homo informaticus

        Начало истории здесь

        image

        Караван-сарай: заставленные снедью столики, ковры на стенах, грязный пол. Из угла на посетителей взирает статуя Будды. Принц Калаф и мудрецы Дивана пробуют напитки, курят кальян и беседуют.
        Мудрецы: Принц, вы обещали опровергнуть солипсизм. Мы с нетерпением вас слушаем.
        Калаф: Ну, это тривиально. Вспомните недавнюю беседу во дворце. Я утверждал, что каждого субъекта необходимо идентифицировать, то есть присвоить ему отдельный идентификатор. Зачем?
        Мудрецы: Чтобы отличать одного субъекта от другого.
        Калаф: Верно… А вы сами себя отличаете?
        Мудрецы: Что за вопрос?! У каждого из нас имеется собственное «я», позволяющее отличать себя от других людей.
        Калаф: Выходит, каждому из вас, как и любому другому существу, присвоен отдельный идентификатор?
        Мудрецы: Спасибо Будде! Будда велик!
        Кланяются статуе Будды.
        Калаф: Таким образом, ваше собственное «я» для того и существует, чтобы отличать вас от других существ, тоже обладающих собственным «я»?
        Мудрецы: Ну да. Точно так.
        Калаф: Так какого рожна вам, обладающим собственными «я», нужно опровержение солипсизма, разве он уже не опровергнут?! Что утверждает солипсизм? Он утверждает, что существует только ваше «я», а никаких других «я» не существует. Однако в этом случае тому, кто создал наше мироздание…
        Мудрецы: Будде?
        Калаф: Ага, Будде!.. Так вот, в этом случае – если бы существовало только ваше «я», – Будде не потребовалось бы вас идентифицировать. Именно наличие у вас собственного «я» как идентификатора субъекта доказывает существование других «я», потому что нельзя же считать Будду неумехой, который создает мироздание без должного понятия о его структуре?!
        Мудрецы: Что вы, принц, конечно, нельзя! Мы поняли и согласны. Теперь, если кто заикнется в нашем присутствии о солипсизме, мы засмеемся ему в лицо и воскликнем: «Мое собственное «я» говорит об обратном! Будда велик!».

        Автор предупреждает!
        Прошлые приключения принца Калафа довольно живо обсуждались на Хабре. В процессе обсуждения было высказано множество увлекательных догадок – в частности, что автор поста:
        а) мудак,
        б) осел,
        в) тролль.
        Хочется верить, что предъявленные обвинения не соответствуют критерию фальсифицируемости Поппера. Тем не менее во избежание последствий прошу не читать данный пост лицам, страдающим эпилептическими припадками, а также выпускникам физико-математических школ, которые не в состоянии представить, что материя – тоже информация. Для подтверждения того, что вы поняли и согласны, тыкните мышкой кат. Если ваше техническое образование не позволяет с этим смириться, а почитать хочется, попросите тыкнуть жену или ребенка – они все равно ни черта не соображают, им простительно.
        Да, людям без чувства юмора чтение также не рекомендуется. Прошу подтвердить.

        Материя - это информация. У меня есть чувство юмора
      • Почему у пространства три измерения? Доказывается при помощи «Трех апельсинов»

        image

        Дворец китайского императора, парадная зала, заседание Дивана. Перед надменной принцессой Турандот влюбленный в нее принц Калаф.
        Турандот: И ты, чужестранец, готов рискнуть жизнью в напрасной надежде добиться моей руки?
        Калаф: Готов, моя возлюбленная принцесса.
        Турандот: Ну отлично, ты подписал себе смертный приговор. Чтобы поскорей покончить с формальностями, ограничусь одним вопросом вместо трех. Вопрос такой: ПОЧЕМУ У ПРОСТРАНСТВА ТРИ ИЗМЕРЕНИЯ, А НЕ ДВА ИЛИ ЧЕТЫРЕ?
        Калаф: Нет ничего проще. Но для ответа мне потребуется доска с принадлежностями для письма и три апельсина.
        Турандот: Принесите ему, что просит. А палач пусть приготовится.

        Читать дальше →
      • Жизнь разработчика (в картинках)

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

          Когда я показываю босу, что окончательно пофиксил баг



          Когда проджект-менеджер входит в офис



          Читать дальше →
        • Кроссплатформенный CommonJS на практике


            О чём речь?


            О JS модулях, которые можно использовать в браузере и на сервере. Об их взаимодействии и внешних зависимостях. Меньше теории, больше практики. В рамках курса молодого бойца мы реализуем простое и весьма оригинальное приложение на базе Node.JS: ToDo-лист. Для этого нам предстоит:
            1. «Завести» кроссплатформенные модули на базе фреймворка Express;
            2. Научить их работать с платформозависимыми коллегами;
            3. Создать транспортный уровень между клиентом и сервером;
            4. Таки сделать ToDo-лист;
            5. Осмыслить результат.

            Читать дальше →
            • +17
            • 14k
            • 4
          • Управленческие инструменты: Как объяснить, когда чувствуешь одним местом?

              Всем добрый день!

              Бывало ли у вас такое, что вы долго думали над какой-то рабочей (или личной ситуацией), а потом вдруг раз! и все как будто раскладывалось по полочкам? У нас такое бывало неоднократно.

              Вместо пролога. Более того, это в некотором смысле наша профессия — раскладывать по полочкам сложные ситуации. Потому что последние 7 лет мы с коллегами занимаемся обучением IT-специалистов и руководителей навыкам управления людьми и тому, что называется soft skills.

              За время работы у нас накопилось какое-то количество инструментов, которыми мы решаем разные управленческие кейсы. И этими инструментами мы и задумали поделиться.

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

              Все инструменты, о которых мы будем писать, очень простые. Либо это матрицы 2 на 2, либо 4 вопроса, либо что-то в таком же духе. Поскольку мы много работаем с менеджерами, то обнаружили, что матрицы 3 на 3 некоторым менеджерам уже сложновато воспринимать (хей, мы сами были менеджерами, знаем о чем говорим :)), а 2 на 2 — в самый раз, отлично заходят.

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

              Являются ли эти инструменты серебряными пулями? Ясен пясен, нет. Но они совершенно точно помогают прояснить ситуацию, навести дистинкции и понять, в какую сторону думать. А решения все равно придется придумывать вам. До тех пор, пока не появится, наконец, справочник юных сурков по менеджменту.

              Итак, довольно лишних слов, давайте перейдем к первому инструменту (всего мы планируем разобрать около 15 разных полезных концептов):

              Читать дальше →
            • I2P: Прозрачный доступ из любого браузера

              • Tutorial


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

              Но куда уходить людям?

              Что бы был доступ к информации, свобода слова и соблюдались хотя бы те правила, которые есть в конституции?

              Mesh сети не подходят, Tor — тоже не может обеспечить требуемого, остается I2P.

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

              • Перевод
              На StackOverflow был отличный пост точно на эту тему, но какой-то сверхусердный модератор, который должен остаться неназванным, удалил его (судя по всему, сейчас восстановлено — прим. пер.).

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

              // 
              // Дорогой мейнтейнер:
              // 
              // Когда ты закончишь «оптимизировать» эту подпрограмму
              // и поймешь, насколько большой ошибкой было делать это,
              // пожалуйста, увеличь счетчик внизу как предупреждение
              // для следующего парня:
              // 
              // total_hours_wasted_here = 42
              //

              Читать дальше →
            • Понимание типов сервисов в AngularJS (constant, value, factory, service, provider)

              • Перевод
              • Tutorial
              Ангуляр поставляется с различными видами служб или сервисов, каждый из которых применяется в своей ситуации.
              Имейте в виду, что сервисы, не зависимо от типа, это всегда синглтоны (одиночки).

              Примечание: Синглтон это шаблон проектирования, который ограничивает класс таким образом, что у него может быть только один экземпляр. Именно с этим экземпляром и ведется работа везде, где он используется.

              Перейдем к типам сервисов
              Читать дальше →
            • Набор методов для работы со списками в AngularJS

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

                Демка, песочница (с демкой играются многие, так что данные могут скакать)

                Как видно из примера, у нас проблема: куча списков со схожей функциональностью (добавление, удаление, сортировка элементов — что еще может быть у списков :-).
                Читать дальше →
              • Nested routing в AngularJS

                  image
                  В AngularJS, как известно, нет возможности штатными средствами сделать многоуровневую маршрутизацию, в которой перезагрузка нижних уровней маршрутов бы не приводила к пересозданию элементов верхнего уровня. Стандартный сервис $route инициализирует вид, контроллер и его scope целиком каждый раз, когда изменяется URL страницы.

                  Для решения этой проблемы написано несколько сторонних решений, включая известный ui-router. По ряду причин ни одно из решений для некоторых моих проектов не подошло, и я написал собственную библиотеку, которую здесь и представляю: angular-route-segment.

                  Что она позволяет делать?
                  Читать дальше →
                • Руководство по магическим методам в Питоне

                  • Перевод
                  • Tutorial
                  Это перевод 1.17 версии руководства от Rafe Kettler.


                  Содержание


                  1. Вступление
                  2. Конструирование и инициализация
                  3. Переопределение операторов на произвольных классах
                  4. Представление своих классов
                  5. Контроль доступа к атрибутам
                  6. Создание произвольных последовательностей
                  7. Отражение
                  8. Вызываемые объекты
                  9. Менеджеры контекста
                  10. Абстрактные базовые классы
                  11. Построение дескрипторов
                  12. Копирование
                  13. Использование модуля pickle на своих объектах
                  14. Заключение
                  15. Приложение 1: Как вызывать магические методы
                  16. Приложение 2: Изменения в Питоне 3


                  Вступление


                  Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
                  Читать дальше
                • ABC: Always Be Coding (не переставай программировать)



                  Как получить работу инженера?

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

                  # x = количество компаний, в которых ты проходил собеседования

                  # y = количество предложений о работе, которые ты получил

                  рейтинг = 100 * log(x) * y / x



                  Если твой рейтинг < 90, обязательно прочти это. Если > 120, возможно, тебе это не нужно, но, все равно прочти.

                  Читать дальше →
                • Ещё немного автоматической генерации музыки


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

                    Итак, мы хотим написать нечто достаточно музыкальное.
                    С чего начать?
                  • Построение масштабируемых приложений на TypeScript. Часть 2.5 — Работа над ошибками и делегаты

                      Часть 1: Асинхронная загрузка модулей
                      Часть 2: События или зачем стоит изобретать собственный велосипед

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

                      Но просто написать работу над ошибками было бы не интересно. К счастью, процесс ее исправления сам по себе подкинул пару интересных находок и мыслей, которые я хотел бы вынести на суд сообщества.

                      Итак, мой WinAmp играет коллекцию хитов Ozzy Osbourne, а всех интересующихся прошу под кат.
                      Читать дальше →
                    • Построение масштабируемых приложений на TypeScript. Часть 1 — Асинхронная загрузка модулей

                      Идея данной статьи родилась после тяжелого рабочего дня при 30 градусах в офисе и тяжких раздумий и холиваров на тему: «А как должно строиться современное веб-приложение?»

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

                      О чем пойдет речь в данной статье? Я напишу (не)большое приложение на TypeScript, которое будет реализовывать модульную архитектуру, асинхронную загрузку модулей, абстрактную событийную модель и обновление состояния модулей по наступлению определенных событий. Эта статья будет выступать как бы дневником и журналом моих действий и размышлений. Моя личная цель — создать некоторый рабочий прототип, опыт создания которого я потом мог бы использовать в рамках реального проекта. Код будет писаться максимально аккуратно и близко к требованиям реальной разработки. Пояснения будут даваться так, будто это потом будут читать работающий под моим руководством джуниоры, которые вообще до этого никогда такие системы не писали.

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

                      Итак, дав себе и сообществу эти обещания, включив AC/DC и собравшись с мыслями я приступаю.
                      Читать дальше →
                    • Создаём игру, используя canvas и спрайты

                      • Перевод
                      • Tutorial
                      Веб сейчас везде, и предлагает очень мощную среду для создания и распространения приложений. Вместо цикла: написание кода → компиляция → запуск, просто обновите приложение или даже напиши код «на живую» в браузере. Кроме того, это относительно безболезненно позволяет распространять своё приложение на огромном количестве платформ. Интересно, что в последние несколько лет, разработка игр, используя HTML5, стала реальностью.
                      Элемент canvas был введен вместе с HTML5 и предоставляет API для работы с ним. API — прост, но если Вы никогда не работали с графикой, Вам потребуется время чтобы привыкнуть. Canvas поддерживается большим количество браузеров, что делает веб — хорошей площадкой для создания игр.
                      Читать дальше →
                    • Эволюция гоночных автомобилей на JavaScript

                        Возможно, вам доводилось видеть игру Box Car 2D — автогонки машинок, сгенерированных с помощью генетического алгоритма. Игра работает на платформе Flash и использует физический движок box2d. За тем, как из бесформенных уродцев через несколько десятков поколений развиваются вполне приличные гоночные автомобили, можно наблюдать часами. Игра существует уже несколько лет, а её фанаты соревнуются в выведении новых «пород» машинок на разных типах трасс. Недавно в сети появился клон этой игры под названием Genetic Cars, написанный на HTML5 и JavaScript. Хотя в нем ещё многого не хватает (например, редактора машинок), некоторые вещи сделаны гораздо лучше, чем в оригинале. Например, есть возможность наблюдать заезд всех машинок одновременно. И самое главное — можно ковыряться в исходниках!


                        Читать дальше →
                      • Организация кода в больших AngularJS и JavaScript приложениях

                          От переводчика: Думаю, что статьи по архитектуре приложения и организации кода наиболее важны на начальном этапе, т. к., в отличие от всего остального, основу приложения поменять очень трудно. [Оригинал статьи]

                          Многие разработчики изо всех сил стараются организовать кодовую базу приложения, как только оно вырастает в размерах. В последнее время наблюдал это и в ангуляр и в яваскрипт приложениях, но исторически такая проблема присуща любым технологиям, включая Яву и многие флекс-приложения, с которыми работал в прошлом.
                          Читать дальше →
                        • Формы в Angularjs. Как я обрел любовь

                          Мне предстояло в очередной раз сделать это. Казалось бы ничего ужасного, я делал это сотни раз. Но чувство… чувство, что все это неправильно, так не должно быть и должен быть другой выход, не покидало меня. Тогда я еще не знал, что в скором времени мне предстоит встреча, которая навсегда изменит мой мир, откроет глаза и наполнит жизнь смыслом. Смыслом вставать каждое утро, смыслом делать то, что практически перестало доставлять мне удовольствие, смыслом делиться этим чувством с другими.
                          Читать дальше →