• Мелкая питонячая радость #3: Poetry


      Управление зависимостями? Шо, опять?


      Экосистема Python породила целую пачку способов управления зависимостями в проектах.
      Прямо сейчас можно выбирать между setup.py, requirements.txt, setup.cfg, MANIFEST.in и Pipfile.
      Но французского питониста Sébastien Eustace все эти способы не устроили, и он написал свою штуку для менеджмента питонячих пакетов — Poetry. Зачем он это сделал? Чтобы заменить все эти setup.py, requirements.txt, setup.cfg, MANIFEST.in и Pipfile чем-то простым и понятным. Плюс добавить кое-что полезное сверху.

      Читать дальше →
    • Технологии межзвездных путешествий в научной фантастике


      [source]

      Говоря «научная фантастика», в большинстве случаев мы подразумеваем под этим "космическая научная фантастика". В том смысле, что будущее нам уже кажется практически немыслимым без освоения космоса.
      И если с освоением нашей Солнечной системы всё выглядит относительно просто и понятно — способы передвижения отличаются только степенью наплевательства авторов к законам импульса, инерции и астродинамики, то с межзвездными перелётами всё гораздо интереснее. Варианты есть самые разные — от классических и никак не оскорбляющих физику с отправкой кораблей на обычной реактивной тяге, груженых либо мороженными тушками либо оборудованные для длительного проживания на них популяции людей в течении поколений, до совсем уж экзотических, вроде использования Ада в качестве промежуточной остановки.

      В этой статье я постарался составить обзор способов доставки бренных человеческих тел от одной звездной системы к другой, которым пользуются наиболее популярные НФ произведения, плюс один мой личный фаворит.
      Warp five, engage!
    • Советские мечты о будущем



        Помните очаровательного котика, которые чихал в заставке советского мультфильма? Мы помним, и нашли его — вместе с ворохом другой рисованной фантастики. В детстве она пугала и обескураживала, поскольку поднимала серьезные, взрослые темы. Настала пора пересмотреть старые мультфильмы, чтобы узнать, о каком будущем мечтали в той стране.
        Читать дальше →
      • Создание системы формальной верификации с нуля. Часть 1: символьная виртуальная машина на PHP и Python

          Формальная верификация — это проверка одной программы либо алгоритма с помощью другой.

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

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

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

          Для этого я написал свой аналог виртуальной машины, на символьных принципах.

          Она разбирает код программы и транслирует его в систему уравнений (SMT), которую уже можно решить программным способом.

          Так как информация о символьных вычислениях представлена в интернете довольно обрывочно,
          я вкратце опишу что это такое.
          Читать дальше →
        • Квантовое будущее

           Первая часть фантастического произведения о весьма вероятном будущем, в котором IT-корпорации свергнут власть устаревших государств и начнут угнетать человечество самостоятельно.


             

          Вступление


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

             Главным идолом новой цивилизации «киборгов» стал Эдвард Крок – лучший разработчик компании «NeuroTech», который первым научился подключать компьютеры напрямую к мозгу человека. Его блестящий ум и определил образ «нейрочеловека» — хозяина нового мира, где виртуальная реальность взяла под контроль «устаревший» физический мир. Первые эксперименты с нейротехнологией часто сопровождались гибелью подопытных: пациентов интернатов, до которых обычно никому не было дела. Этот скандал был использован как повод, чтобы спровоцировать разгром корпорации «NeuroTech». Часть директоров компании, а также сам Эдвард Крок, руками ООН были осуждены в Гааге за преступления против человечности и приговорены к смертной казни. А корпорация NeuroTech перебралась на Марс и постепенно стала центром нового общества.
          Читать дальше →
        • Музыка для ваших проектов: 12 тематических ресурсов с треками по лицензии Creative Commons

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

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

            Читать дальше →
            • +55
            • 20.9k
            • 9
          • It’s the future

            • Translation

            Этот пост просто шутка и не пытается выставить инструменты, упомянутые здесь, в дурном свете. Я использую их постоянно, они великолепны, и я рекомендую их использовать. По мотивам It's the future @ CircleCI Blog


            — Эй, я бы хотел научиться писать крутые веб-приложения. Слышал, у тебя есть опыт.


            — Да, я как раз занимаюсь фронтендом, юзаю пару тулз.


            — Круто. Я щас делаю простое приложение — обычный TODO-лист, используя HTML, CSS и JavaScript, и планирую заюзать JQuery. Это норм?


            — Не-не-не. Это олдскул. Джиквери мёртв — никто не использует его теперь! Тебе нужен React. Это будущее.


            — Окей, лады. А что это?


            Читать дальше →
          • История игрушки. Поле Чудес

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

              Жизнь мальчиков с математическими способностями в атомных городах была предопределена — школа с пятерками по алгебре и геометрии, мех-мат столичного университета, возвращение в систему, квартира через год, кандидатская степень в 40 лет, ВАЗ 2103 к пятидесяти годам, звание доктора, гараж, шесть соток, четыре квадратных метра.

              Бесконечные размышления о математическом моделировании ядерных взрывов разрывали мальчикам мозг. Мозг можно было отвлечь тремя способами — алкоголем, азартными играми и спортом. Секс и музыка помогали не всегда.

              Pole Chudes для iPhone

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

              Читать дальше →
            • Компания GScreen таки выпустила ноутбук с двумя дисплеями



                Сегодня компания GScreen анонсировала давно ожидаемую некоторыми любителями гаджетов модель ноутбука с двумя дисплеями. Называется это чудо техники gScreen SpaceBook, а информация о нем появилась еще пару лет назад. Тогда компания сообщала, что ноутбук должен появиться вот-вот, но все оказалось немного по-другому, и gScreen SpaceBook стал доступен для предзаказа только сейчас.

                Читать дальше →
              • Не гуглом единым… Онлановые инструменты

                  Сделал подборочку не гугловских инструментов:

                  www.gliffy.com — Онлайн-диаграммы, эквивалент MS Visio;
                  thinkature.com — Онлайн-диаграммы, размышлений;
                  show.zoho.com — Онлайн-презентации;
                  www.bubbl.us — Онлайн Mind Maps;
                  us.ajax13.com — Онлайн-офис;
                  www.empressr.com — Онлайн-презентации;
                  www.burnham-on-sea.co.uk/fax.html — Послать онлайн-факс;
                  www.zamzar.com/?www.deltaasesores.com — Конвертер файлов;
                  www.chatcreator.com/chatbox — Возможность добавить на свой сайт чат;
                  www.ortelius.de/kalender/form_en2.php — Перевод дат по разным календарям, есть даже календарь Майя;
                  www.webwag.com — Web-комбайн: rss-агрегатор, погода, поиск, возможность добавлять свой контент;
                  www.netvibes.com — Web-комбайн: читает rss, показывает, погоду, хранит todo листы, проверяет почту, хранит закладки, записки, хранит todo из rememberthemilk, всё это дополняет приятным и удобным интерфейсом;
                  www.rememberthemilk.com — Онлайн-органайзер;
                  voo2do.com — todo-листы, поддержка проектов.
                • Прибитый к низу футер своими руками

                  • Tutorial
                  Все, кто привык к полноценно оформленным страницам сайтов, предпочитает вид «прибитого» (прилипающего, sticky) к низу футера страницы. Но есть в интернете две беды: нерастущие вниз поля ввода и неприбитые (к низу окна) футеры. Например, когда открываем короткие по высоте страницы типа habrahabr.ru/settings/social — сразу бросается в глаза, что информация, призванная быть в нижней части окна просмотра, прилипает к содержанию и находится где-то посередине, а то и в верхней части окна, когда внизу — пусто.

                  Так, вместо того, чтобы .
                  Данное пособие для начинающих верстальщиков покажет, как за 45 минут сделать «прибитый» футер, исправив недоработки даже такого уважаемого издания, как Хабр, потягаться с ним в качестве исполнения своего перспективного проекта.
                  как сделать, чтобы трава была зелёная, а футеры - прибитыми
                • LINQ для PHP. Часть 1. Я его слепила из того, что было, а потом, что было, то и полюбила

                    Сказ о том, как LINQ на PHP портировали. Сравнение ныне существующих библиотек с табличками, но без графиков — прилагается.

                    Картинка код для привлечения внимания (картинок не дождётесь!)
                    echo Phinq::create($people)
                      ->groupBy(function($person) { return $person->residence->region; })
                      ->select(function($grouping) {
                        $obj = new stdClass();
                        $obj->people = $grouping;
                        $obj->region = $grouping->getKey();
                        return $obj;
                      })->orderBy(function($obj) { return $obj->people->count(); }, true)
                      ->aggregate(function($current, $next) {
                        $count = $next->people->count();
                        return $current . sprintf(
                          "%d %s (%s) live in the %s region\n",
                          $count,
                          $count === 1 ? 'person' : 'people',
                          $next->people->aggregate(function($current, $next) {
                            if ($current !== null) {
                              $current .= ', ';
                            }
                            return $current . sprintf('%s [%s]', $next->name, $next->residence->code);
                          }),
                          $next->region
                        );
                      });
                    
                    Кто видел C# или любой функциональный язык — при виде этого шедевра закатит глаза (если они предварительно не вылетят из орбит). И, наверное, будет прав. Но можно ещё вот так:
                    $lowNums =
                    	from('$n')->in($numbers)->
                    	where('$n < 5')->
                    	store($digits)->into('digits')->
                    	select('$digits[$n]');
                    
                    А как ещё можно? Осторожно, много текста!
                  • LINQ для PHP. Часть 2. Если гора не идёт к Магомету, Магомет идёт к горе

                      Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:

                      YaLinqo — Yet Another LINQ to Objects for PHP

                      Возможности:

                      • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
                      • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
                      • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
                      • 100% покрытие юнит-тестами.
                      • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
                      • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
                      • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.

                      Пример кода:

                      // Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
                      // отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.
                      
                      from($categories)
                          ->orderBy('$v["name"]')
                          ->groupJoin(
                              from($products)
                                  ->where('$v["quantity"] > 0')
                                  ->orderByDescending('$v["quantity"]')
                                  ->thenBy('$v["name"]'),
                              '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
                          );
                      

                      Детальное описание, обсуждение архитектуры, ссылки
                    • История игры Триплекс, или сколько нужно квадратиков чтобы сломать голову

                      Чтобы освоить азы Web программирования, я решил написать HTML5 игру — головоломку под названием Triplex (www.quadpuzzle.ru). Написать игру для себя и для друзей — полдела. Захотелось довести проект до ума, сделав из игры продукт для широкого круга пользователей. Насколько получилось — судить вам.

                          Правила игры просты. На игровом поле разложены фигуры из квадратиков. Цель игры — уложить все фигуры в указанный прямоугольник. Вращать можно только одну фигуру, помеченную кружком, если она есть. Решение в каждой задаче существует и единственное.

                                              

                      Читать дальше →
                    • Первое апреля в Интернете

                        По традиции собирательный пост со всеми найденным на просторах Интернета сайтами и первоапрельскими нововведениями на них. Пополняемый.

                        Для начала те ресурсы, что обнаружил лично:


                        Под катом ссылки из комментариев
                      • FAQ по утечке текстов SMS с сайта «Мегафона»

                          Феерическая история, ставшая сегодня самой популярной новостью дня в сети, вызывает немало кривотолков. Даже люди, близкие к веб-технологиям, не всегда адекватно оценивают произошедшее, что уж говорить о прочей сетевой общественности, часть которой уже объявила случившееся вирусной рекламой. Я постараюсь развеять туман теории заговора в форме ответов на задававшиеся в комментариях вопросы.
                          Читать дальше →
                        • Three.js — 3D в браузере своими руками или WebGL становится ближе

                          Тема про three.js от mrdoob в свое время проскакивала на хабре, но детально еще не рассматривалась. В этой и(возможно) последующих статьях я постараюсь исправить это упущение. К сожалению, three.js не предоставляет никакой внятной документации, поэтому все знания по нему получены экспериментальным путем и ковырянием спеки WebGL, т.е. любые дополнения автору топика только приветствуются.

                          В этой статье мы создадим простенькое приложение, которое продемонстрирует базовые возможности этого движка, поработаем с камерой, светом и тенью, а также научим наши объекты перемещаться. В конце статьи ссылка на файлы демки и скриншот. Итак, к делу!
                          Читать дальше →
                        • Отечественный флэш плеер

                            imageУже давно использовал плеер производства http://flv-mp3.com/, который отличался простотой и элегантностью, но давеча получил письмо с новостью о выходе новой версии их замечательного плеера. Мое описание возможно покажется слишком эмоциональным, но это только потому, что плеер — Это бомба!

                            Прежде всего, демо-сайт — http://uppod.info/. После часа разборок с настройками, я могу заверить, что все фишки демосайта реализуются плеером на ура.


                            Читать дальше →
                          • Bacon And Eggs. Велосипед с яйцами и линейной алгеброй!

                              Недавно у меня появился ряд задач, связанных с процедурной графикой в вебе, анимацией и механикой.
                              Став искать простые пути там, где их обычно нет, я наткнулся на чудненькую библиотеку «Bacon And Eggs» от Эндрю Хойера.
                              Красную или синюю?
                              • +22
                              • 1.8k
                              • 9