• Космики: моделирование эволюции многоклеточных организмов

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

      Несколько лет назад в прикладных целях я реализовал обычный Force-based визуализатор графов.

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

      Со временем возникло несколько идей, что интересного можно смоделировать.

      Вот что получилось с одной из них (в кадре мелкие объекты, смотреть в HD):



      Читать дальше →
    • Подробности о JavaScript-объектах

      • Перевод
      • Tutorial
      Автор материала, перевод которого мы сегодня публикуем, говорит, что в JavaScript-объектах содержится много такого, о существовании чего можно и не подозревать, пользуясь ими в повседневной работе. Объекты в JavaScript очень легко создавать, с ними удобно работать, они кажутся понятными и гибкими сущностями, и многие программисты попросту не задумываются о том, что на самом деле устроены объекты не так уж и просто.


      NB: Информацию из публикации на практике следует применять крайне аккуратно и под присмотром более опытных коллег.
      Читать дальше →
    • Двойной обман. Как ФБР использовало украинского хакера Максима Попова

      • Перевод


      Холодным днём 18 января 2001 года Максим Игоревич Попов, 20-летний украинский парень, нервно толкнул двери американского посольства в Лондоне. Его можно было принять за участника программы по студенческому обмену, который пришёл получать визу, но самом деле Максим был хакером, участником восточноевропейской хакерской группы, которая атаковала американские коммерческие компании, зарабатывая на вымогательстве и фроде. Прокатившаяся волна таких атак выглядела словно предвестник нового этапа Холодной войны между США и организованными хакерскими группировками в странах бывшего советского блока. Максим Попов с детским лицом, в очках и с короткой стрижкой, собирался стать первым перебежчиком в этой войне.
      Читать дальше →
    • «Космонавты» в Чили: как мы делали всю ИТ-инфраструктуру для четырех телескопов в Андах



        Анды, высота 1564 метра, чистейший горный воздух, остро пахнущий соляркой. Голая каменистая площадка, четыре купола и три контейнера — купола для телескопов, а контейнеры поменьше — жилой для сторожа или инженеров, санузел, мастерская размером с санузел, плюс купол для стойки Циски и линейки аккумуляторов ИБП. Вокруг — забор из металлической сетки.

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

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

        Простая работа, говорили они. Нужен сисадмин, говорили они. Карлос увидел нас, поздоровался и сразу предупредил на своём ломаном испанском:
        — Видишь облака — беги. Если начнётся дождь, всё, совсем конец!

        Но акцент мы не разобрали, поэтому его не поняли.
        Читать дальше →
      • «Худой мир». Глава 4

          Немного запоздалое продолжение фантастической повести. Для тех кто забыл (или не знал) что там было раньше — ссылки на предыдущие части ниже.
          Предыдущие части


          Немного фантастики под катом
        • Собираем базу людей из открытых данных WhatsApp и VK

          Etan Hunt
          кадр из фильма Миссия Невыполнима II

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

          Первый успех


          Было решено попробовать следующий вариант:
          • Добавить неизвестный номер в адресную книгу телефона;
          • Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
          • Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.

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

          Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.
          Далее перебор аккаунтов WhatsApp и VK по Москве и Ненецкому АО и распознание лиц
        • Датчик движения для переключения радиостанций — часть II

            Привет, Хабр! Сегодня — продолжение импровизированного цикла подробных постов для начинающих. В прошлом посте мы взяли готовый набор радиоконструктора с Ардуино и ультразвуковой дальномер для того, чтобы не только совместить их, и получить возможность настраивать радио «одной левой», но также чтобы разобраться в «Ардуиностроении» с нуля. Если у вас есть только Ардуино и сам датчик, вы тоже можете попробовать кое-что собрать из этого поста, но, видимо, остановитесь, после того, как настроите неплохую такую ультразвуковую линейку — что тоже хорошо. Мне захотелось пойти дальше и посадить датчик на плату расширения для создания готового устройства. Вот как это у меня вышло.


            Читать дальше →
          • Создаем полностью автоматическую ферму (готовая реализация)

              Продолжаем обзор деятельность нашего Хакспейс-клуба.

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

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

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


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

                Если вы помните мой предыдущий пост, там было высказано желание разобраться, что и как можно добавить к понравившейся мне модели, чтобы DIY forever. Большое спасибо пользователям UseTi, Phmphx, lomalkin и в особенности n4k4m1sh1, которые поделились интересными идеями на эту тему в комментариях. Понятно, что для поставленных целей нужны два навыка, один из которых — монтаж печатной платы. А значит сегодня мы будем паять, с нуля.



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

                Итак, тестируем «Набор Юного электронщика». Получится ли с его помощью собрать рабочие конструкции с нуля не имея предварительных навыков, как это до того у нас получилось с механической моделью?
                Читать дальше →
              • Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 1. теоретическая)



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

                  image
                  Как все начиналось
                • Чтобы распознавать картинки, не нужно распознавать картинки

                    Посмотрите на это фото.



                    Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.

                    Что будет, если убрать это фото и попросить вас нарисовать железную дорогу по памяти?

                    Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
                    Осторожно, тяжелые гифки
                  • Искусственный рассвет

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



                    — А, что ж так темно-то, Господи? © День радио.

                    Впрочем, для человека, живущего зимой по летнему времени — мысль вполне естественная.
                    Что же делать?
                  • Давайте изобретать велосипеды

                      Мотивации пост.



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

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

                      В этом посте я постараюсь показать, почему нужно изобретать велосипед.
                      Читать дальше →
                    • Getting Started with MongoDB and PHP

                      • Перевод
                      Generation Next
                      За последний год произошла небольшая революция в мире СУБД, связанная с появлением безсхемных (безструктурных) СУБД таких как Apache CouchDB. В этих базах данных используется другой подход нежели в реляционных БД. Они достаточно быстро становятся популярны среди Web-разрабочиков из-за своей гибкости, простоты и легкой интеграции с современными технологиями такими как JSON.
                      В данной статье изложен краткий обзор MongoDB, одной из новых поколений безсхемных СУБД, которая получила большое внимание разработчиков.
                      Let's get started!
                    • Моделирование данных в MongoDB

                      • Перевод
                      imageОдна из самых разрекламированных фич MongoDB — это гибкость. Я сам не раз подчеркивал это в бесчисленных разговорах о MongoDB. Однако, гибкость — это палка о двух концах: большая гибкость подразумевает более широкий выбор решений для моделирования данных. Тем не менее, мне нравится гибкость, которую предоставляет MongoDB, просто нужно иметь ввиду некоторые рекомендации, прежде чем начать разрабатывать модель данных.

                      В этой статье мы рассмотрим, как смоделировать структуру, содержащую списки рассылок и данные о людях, которые входят в эти списки.
                      Читать дальше →
                    • MongoDB от теории к практике. Руководство по установке кластера mongoDB

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

                      1. Вступление. Кратко о масштабировании
                      2. Некоторые примеры развертки mongoDB и их описание
                      3. Шардинг mongoDB

                          Пункты 1 и 2 — теоретические, а номер 3 претендует на практическое руководство по поднятию кластера mongoDB и больше всего подойдет тем, кто столкнулся с этим в первый раз.
                      Читать дальше →
                    • Компьютерные шахматы в 487 байтах

                        Рекорд по минимальной реализации компьютерных шахмат с 1983 года принадлежал программе 1K ZX Chess. На компьютере Sinclair ZX81 она занимала 672 байта памяти. При этом программа вмещала почти все правила шахматной игры, а также бота для игры против человека.


                        Первое описание игры в журнале Your Computer Magazine за февраль 1983 года

                        Спустя 32 года этот рекорд побит. Группа Red Sector Inc. реализовала полностью играбельную версию шахмат BootChess всего в 487 байтах!
                        Читать дальше →
                      • Городские легенды о медленных вызовах виртуальных функций

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

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

                          В тексте выше ключевое слово «если». Что, если компилятор знает, какую функцию на самом деле надо вызывать?
                          Читать дальше →
                        • Ансамбль синапсов – структурная единица нейронной сети



                          В мае прошлого года сотрудники лаборатории глубокого обучения Гугла и учёные из двух американских университетов опубликовали исследование «Intriguing properties of neural networks». Статья о нём вольно пересказывалась здесь на Хабре, и само исследование также критиковалось специалистом из ABBYY.

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

                          В статье я на реальном примере постараюсь показать, что и в искусственных нейронных сетях распутанные признаки можно обнаружить. Постараюсь объяснить, почему гугловцы увидели то, что они увидели, а распутанных признаков увидеть не смогли, и покажу, где в сети скрываются семантически значимые признаки. Статья является популярной версией доклада, прочитанного на конференции «Нейроинформатика — 2015» в январе этого года. Наукообразную версию статьи можно будет почитать в материалах конференции.
                          Очень-очень много трафика
                        • Беспилотник на базе Raspberry Pi. Часть 1

                          Привет, %хабраюзер%. Хочу поделиться историей о своем беспилотнике (БЛА) на малинке.

                          Перед тем, как начать делать беспилотник, стоял выбор, какую летательную модель брать за основу: квадракоптер или самолет? Так как с коптерами я в свое время наигрался, знаю их основной минус: чаще всего время полета составляет 10-20 минут. Лично для меня это очень мало, поэтому было решено взять за основу самолет.

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