PHP-Дайджест № 61 – интересные новости, материалы и инструменты (13 – 26 апреля 2015)



Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!



Новости и релизы





Инструменты


  • asyncphp/remit — Простой распределенный эмиттер событий для PHP.
  • wapmorgan/PhpCodeFixer — Сканер PHP-файлов на использование устаревших функций и возможностей. Прислал wapmorgan.
  • misterion/ko-process — Обёртка над pcntl, максимально упрощающая процесс создания и управления дочерними процессами. Прислал misterion.
  • Valify — Библиотека для удобной валидации пользовательских данных в стиле Yii2. Прислал xphoenyx.
  • goodby/csv — Эффективная библиотека для импорта/экспорта CSV данных.
  • franzliedke/studio — Позволяет легко использовать пакеты Composer и при этом продолжать их разработку.
  • filp/whoops — Красивые и информативные страницы ошибок и необработанных исключений для вашего проекта.
  • Aura.Router — Роутер реализующий стандарт PSR-7.
  • defuse/php-encryption — Простой класс для использования симметричного шифрования в PHP.
  • elastic/elasticsearch-php — Официальный клиент для Elasticsearch.
  • NSinopoli/VisualPHPUnit — Фронтенд для PHPUnit.
  • padraic/phar-updater — Библиотека для реализации автообновления в phar-пакетах.
  • jeremeamia/mu — Микрофреймворк в несколько строк.
  • jeremeamia/xstatic — Статические прокси интерфейсы а-ля фасады в Laravel для любых PHP-приложений.
  • phpro/grumphp — Во время установки пакет создает Git-хуки для проверки качества кода при коммите.
  • Melody — однофайловые Composer-скрипты — Инструмент позволяет описывать Composer-зависимости непосредственно в php-файле. Кроме того, позволяет выполнять gist по ссылке: melody run https://gist.github.com/raulfraile/8b87792f1ecbca520191 from@test.com to@test.com 123456.




Материалы для обучения





Занимательное




Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.

Присылайте ссылки на интересные статьи или полезные инструменты, которых не было в PHP-Дайджестах, и ваше имя будет рядом с присланной ссылкой в выпуске.

Прислать ссылку
Быстрый поиск по всем дайджестам
Предыдущий выпуск

ссылка на оригинал статьи http://habrahabr.ru/post/256649/

Астму могут вылечить через 5 лет: ученые нашли триггеры, которые её вызывают

Ученые из Кардиффского университета нашли потенциальную основную причину астмы: кальций-чувствительные рецепторы CaSR заставляют воздушные проходы сужаться при воздействии определенных раздражителей.

image
Профессор Даниэла Риккарди, автор исследования.

Бронхиальная астма — хроническое заболевание дыхательных путей, она проявляется в виде хрипов, одышки, кашля. От 4% до 10% населения планеты имеют это заболевание. До сих пор полностью лечить его не научились — люди используют препараты, избавляющие от симптомов, например ингаляторы. Таким образом пациент только контролирует проявление астмы, но не может полностью избавиться от неё.

Исследование на мышах и людях с астмой и без неё позволило ученым определить потенциальную причину астмы — тригерами выступают рецепторы CaSR. Так они выяснили, что лечить состояние можно с помощью «кальцитиков» — группы препаратов для больных остеопорозом. По словам профессора Диниэлы Рикарди, препараты позволяют остановить развитие болезни.

Ученые надеются найти способ полностью устранить болезнь в течение пяти лет.

ссылка на оригинал статьи http://geektimes.ru/post/249560/

В Dungeons & Dragons теперь можно играть в виртуальной настолке

imageОнлайн-сервис Fantasy Grounds начал предлагать своим клиентам лицензионный контент от Wizards of the Coast для игры в Dungeons & Dragons. Теперь игрокам доступны монстры, карты, классы, модули приключений, с помощью которых они могут сыграть в любимую настолку, не выходя из дома – а их партнёры по игре могут находиться в любом месте, где есть интернет.

Fantasy Grounds – это сервис «виртуальных настолок», компьютерный симулятор настольных игр, доступный в Steam. Он позволяет играть в различные настольные игры по интернету. Это могут быть как простые игры с передвижением фишек по карте, так и игры со сложными правилами, в которых действиями нескольких игроков руководит ведущий. Именно так происходят игры типа Dungeons & Dragons.

Лично я просиживал долгие часы в свободных аудиториях института с компанией таких же фанатов RPG. У нас были ксерокопии официальных книг AD&D и не было фирменных многогранных игральных костей, зато были воображение и интерес к ролёвкам. Воображение сильнее компьютерной графики, а игра в компании интереснее одиночного сидения за компьютером.


Демонстрация возможностей системы

Правила настольных RPG серии «Dungeons & Dragons» зародились в семидесятых годах и постепенно совершенствовались, обрастали возможностями и порождали ответвления. В данный момент последняя версия правил – 5-я, согласно ей и работают D&D на сервисе Fantasy Grounds. Кроме этого, сервис поддерживает и Pathfinder – ответвление от основной серии для тех, кто считает наилучшим вариантом версию правил за номером 3.5


Бросание кубиков

По мотивам D&D были созданы десятки «обычных» компьютерных игр – Eye of the Beholder, Baldur’s Gate, Neverwinter Nights, и др. Конечно, правила приходилось несколько урезать в связи ограничениями, присущими компьютерным играм. В 2006 году появилась Dungeons & Dragons Online, MMORPG для любителей серии. Но обычные игры нельзя сравнивать с классическими настолками.


Импорт карт

Богатые возможности сервиса Fantasy Grounds предлагают вспомогательные функции для всех этапов хода игры – от генерации персонажа до работы с картами. Стилизованный выброс игральных костей эмулирует броски настоящих. У Мастера подземелий в интерфейсе есть множество инструментов для облегчения его работы. Доступны как готовые приключенческие модули, так и возможность самостоятельного создания своих приключений.

ссылка на оригинал статьи http://geektimes.ru/post/249558/

Контейнер в linux, linux в egg, egg в python

tux in egg in python

Hello, {{username}}

Я DevOps и очень люблю Linux. Понятное дело, что с такой связкой я просто не мог не полюбить LinuX Containers (тем более, что BSD и Solaris давно радуют аналогичными возможностями своих пользователей).

Естественно, бизнес тоже увидел привлекательную возможность и программы для управления контейнерами стали расти и множиться: docker , rocket, vagga, lxc, systemd-nspawn, etc…

Docker стал стандартом де-факто в первую очередь благодаря системе создания и доставки контента. Но главный демон докера запускается от root, и, на мой взгляд, это минус этого проекта (Пруф).

Rocket и vagga пошли другим путем, и путь этот носит название unprivileged containers. Вам больше не нужны root привилегии, чтобы запустить процесс в новых namespaces, и это открывает интересные перспективы для построения тестовых площадок и безопасного окружения.

Но во всех этих проектах есть один фатальный недостаток: они все написаны с использованием c, go и rust, а я люблю python и не могу поучаствовать в их разработке. Согласитесь, довольно обидно пропускать все веселье.

Так что под катом вас ждет библиотека для запуска процессов в новых linux user namespaces:


Pyspaces


Детка, Ты просто космос


Goals


Сейчас нет удобного способа работать с linux namespaces из python:

  • можно использовать asylum — проект выглядит мертвым и хостится непонятно где
  • или можно попробовать python-libvirt биндинги с большим уровнем абстракции
  • использовать код на c, как это делают vagga и lxc
  • или дергать glibc вызовы с помощью ctypes
  • в противном случае остается subprocess.Popen


Я хочу изменить это: я хочу создать native python bindings к билбиотеке glibc с интерфейсом как в multiprocessing.Process. И еще немножко целей:

  • популяризировать linux
  • популяризировать python
  • поучаствовать в создании популярного open source проекта
  • прославиться
  • популярность и девушки будут приятным бонусом


ЗЫ: так же посмотрите на python-nsenter — выглядит здорово!


Example


import os from pyspaces import Container   def execute(argv):     os.execvp(argv[0], argv)  cmd = "mount -t proc proc /proc; ps ax" c = Container(target=execute, args=(('bash', '-c', cmd),),               uid_map='0 1000 1',               newpid=True, newuser=True, newns=True               ) c.start() print("PID of child created by clone() is %ld\n" % c.pid) c.join() print("Child returned: pid %s, status %s" % (c.pid, c.exitcode)) 


PID of child created by clone() is 15978  PID TTY      STAT   TIME COMMAND 1   pts/19   S+     0:00 bash -c mount -t proc proc /proc; ps ax 3   pts/19   R+     0:00 ps ax  Child returned: pid 15978, status 0 



CLI


space -v execute --pid --fs --user --uid '0 1000 1' bash -c 'mount -t proc /proc; ps ax' space chroot --pid --uid '0 1000 1' ~/.local/share/lxc/ubuntu/rootfs/ /bin/ls /home/ 



TODO


  1. [x] clone & Container
  2. [x] CLI
  3. [x] Chroot
  4. [ ] process list
  5. [ ] inject
  6. [ ] move CLI to separate package
  7. [ ] addons
  8. [ ] support for lxc, vagga, rocket, docker, etc…
  9. [ ] …
  10. [ ] one tool for rule them all!!1



Links


github pypi docs

Лицензия — MIT, но так же собираюсь добавить BSD и Apache 2.0


It’s not the end


Работы предстоит очень много: нужны нормальные тесты, документация, новые фичи и приятное cli. Откладывание анонса в долгий ящик прервали ребята из Minsk Python Meetup, за что им большое спасибо. Теперь я надеюсь на поддержку и интерес у сообщества 😉

И в завершение хотелось бы привести цитату создателя scipy & numpy:

Keys to success: Hard work — specially up front
Often lonely — initially nobody believes in your idea more than you do. Others need some ‘proof’ before they join you.
The more complicated what you are doing is the lonelier it will be initially.

I spent 18 months not publishing papers to write NumPy
(despite many people telling me it was foolish)
Travis Oliphant


ЗЫ: в живую со мной можно пообщаться по теме и не только на очередном Minsk Python Meetup

ссылка на оригинал статьи http://habrahabr.ru/post/256647/

Фантазия о специализированных ступенях


Современные ракеты-носители рождены для космоса. Земная атмосфера им только мешает. Она требует ставить тяжелые обтекатели на полезную нагрузку, добавлять топливо на преодоление сопротивления воздуха и парирование порывов ветра. Но земная атмосфера не обязательно должна быть помехой. Крылья могут опираться на воздух, создавая подъемную силу, а кислород для двигателей можно получать вместе с воздухом, а не везти его с собой в тяжёлых баках. Что если пофантазировать и создать концепт для выведения полезных грузов на орбиту, используя специализированные ступени?


Исток проблемы


Выход на орбиту — это, главным образом, скорость. Эксперименты по пуску вертикально вверх геофизических ракет в 40-х и 50-х не привлекали особого внимания. Ракета могла подняться на сотни километров, но через несколько десятков минут всё равно падала обратно на Землю. Информационный фурор первого спутника заключался в том, что впервые в истории человечества удалось разогнать рукотворный объект до восьми километров в секунду. Если мы говорим о скорости, то у двигателей должна быть некоторая характеристика, показывающая, насколько хорошо этот двигатель разгоняет наш аппарат. Такая характеристика называется удельным импульсом.

Удельный импульс — это количество секунд, на которое хватит одного килограмма топлива для создания двигателем тяги в 1 Ньютон. Удельный импульс измеряется в секундах или метрах в секунду.


Посмотрим диаграмму значений удельного импульса для разных типов двигателей и разных скоростей полёта:



На дозвуковых скоростях энергию топлива лучше направить в работу турбин или винтов, чем сжигать для создания реактивной тяги. Поэтому сейчас на гражданских самолётах стоят турбореактивные двигатели с высокой степенью двухконтурности и винтовентиляторные двигатели. Максимальное значение удельного импульса делает такие двигатели экономичными, но на них принципиально не получится разогнаться до больших скоростей.
В более широком диапазоне работают турбореактивные двигатели. На них можно стартовать с аэродрома и разогнаться до 2-3 М. Но за это придётся заплатить уменьшением удельного импульса, поэтому такие двигатели сейчас ставятся в основном на военные аппараты, которым не так важна топливная экономичность.
ПВРД — это прямоточный воздушно-реактивный двигатель. ПВРД очень просто устроен и позволяет летать на сверхзвуковых скоростях. Одна беда — нуждается в разгонной ступени или носителе, потому что не работает при дозвуковых скоростях. ПВРД из-за своей простоты широко используется в боевых ракетах.
ГПВРД — это гиперзвуковой прямоточный воздушно-реактивный двигатель. ГПВРД отличается от ПВРД тем, что в камеру сгорания воздух попадает со сверхзвуковой скоростью. Он просто устроен на картинке, но за этой простотой стоят очень сложные расчёты. ГПВРД испытываются в разных странах последние лет двадцать, но серийных аппаратов с ними пока не делали.
Ну и, наконец, ракетные двигатели на этой диаграмме показывают свою независимость от атмосферы и скорости движения.


Искушение универсальностью


А можно ли сделать универсальный аппарат, который бы смог летать в диапазоне 0-10 М? Самым близким к такому диапазону был SR-71 Blackbird, и он очень наглядно показывает сложность задачи. Для диапазона «всего лишь» 0-3,2 М понадобилось делать гибрид турбореактивного и прямоточного двигателей и создавать новое топливо. Посмотрите схему работы двигателя или видео:



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


Постановка задачи


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

  • Полезная нагрузка предполагается в районе 10 тонн. Почему такая цифра? Этого хватит для того, чтобы вывести тяжелый спутник на околоземную орбиту или отправить стандартный спутник на геопереходную орбиту. Слишком маленькая полезная нагрузка очень облегчит нам задачу, но в этом случае возникнет вопрос осмысленности всей системы. Слишком большая полезная нагрузка потребует циклопических и космически дорогих конструкций.
  • Технические решения выбираются с максимальным уровнем технической готовности, в идеале, имеющие историю серийного производства. Во-первых, это гарантирует принципиальную реализуемость решения. Во-вторых, освоенные технологии должны быть дешевле.
  • При выборе технических решений также будем избегать гигантизма. Конструкции планетарного масштаба, самолёты-носители с десятками двигателей — всё это может красиво выглядеть, но нереализуемо в ближайшие десятилетия.



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


Верхняя ступень


Верхняя ступень будет отвечать за разгон до первой космической скорости. Очевидно, это должна быть ракетная ступень. В качестве топливной пары выберем жидкий кислород и жидкий водород. Они освоены уже давно и достаточно хорошо. Почему именно они? Для верхней ступени крайне важен удельный импульс, а из привычных нам топливных пар только кислород-водород способны дать нам удельный импульс порядка 450 с.
Забегая вперед, скажем, что начальная скорость верхней ступени будет в районе 5 М на высоте ~30 км, т.е. 1500 м/с. Примерный расчёт даёт начальную массу в районе 60-80 тонн в зависимости от массы пустой верхней ступени.


Вторая ступень


Вторая ступень выполняет функцию разгона полезной нагрузки в атмосфере. Для этого ей пригодятся небольшие крылья — они будут создавать подъёмную силу. Но какой двигатель поставить на этот аппарат? Вариант с ракетным двигателем отметаем — он не использует кислород из атмосферы и поэтому имеет слишком низкий удельный импульс. ТРД теряет эффективность после 2 М. Остаётся один вариант — ПВРД. Кроме того, что он способен работать до скоростей в районе 5 М, его простота означает сравнительно небольшую массу, что крайне положительно скажется на характеристиках нашего аппарата.
Массу аппарата на уровне концепта определить можно только очень приблизительно, потому что нет прямых образцов для сравнения. Навскидку, если сравнивать с массовым совершенством грузовых самолётов, то начальная масса двух ступеней и полезной нагрузки попадёт в диапазон 250-350 тонн. Аппарат будет, очевидно, многоразовым.


Первая ступень


Двигатель второй ступени не может работать на дозвуковых скоростях. Поэтому нужно добавить ещё одну ступень, которая разгонит наш аппарат от нуля до 1,2-1,5 М. Каким образом мы можем это сделать? Идея самолёта-носителя отметается сразу — грузовые самолёты дозвуковые, и 300 тонн не может поднять никакой серийный грузовой самолёт. Теоретически можно поставить твердотопливные ускорители размером поменьше тех, которые были на Спейс Шаттле. Но можно возродить систему, которую предполагали использовать первые теоретики ракетного движения и фантасты — старт с рампы. Построив практически обычные рельсы, можно просто и дёшево разгонять вторую ступень на ракетных санях. Можно предположить следующие плюсы:

  • Крепление ускорителей к саням должно снизить прочностные требования к второй ступени.
  • После запуска ускорители вместе с санями тормозятся и могут без проблем использоваться повторно (что сложнее обеспечить для сбрасываемых в воздухе ускорителей).
  • Небольшое и переносимое людьми ускорение в 4 g потребует всего 3 км для достижения скорости 1,2 М и 3,2 км — для 1,5 М.
  • Горизонтальный разгон не требует преодолевать притяжение земли, стартовые ускорители становятся меньше.
  • Не нужно строить дорогие и циклопические конструкции.


Самым известным полигоном, использующим ракетные сани, является полигон на базе Холломан, где длина рельсов уже перевалила за 15 км, а максимальная достигнутая скорость — 8,5 М:


Четырёхступенчатые ракетные сани, достигшие скорости 8,5 М в 2003 году


Аналоги


Человечество отличается хитростью и изобретательностью, поэтому стоит поискать уже придуманные подобные схемы. В 2010 году NASA проводило исследования этой же идеи на более продвинутых технологиях. Вместо ракетных саней предлагалось использовать электромагнитную или газовую катапульту, а вместо ПВРД поставить ГПВРД, которые бы смогли разогнать вторую ступень до вдвое большей скорости — 10 М. Была даже сооружена модель системы:



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

Также, родственными будут концепции:
StarTram, предполагающий разгон полезной нагрузки на маглеве до скоростей в районе первой космической.
Maglifter, идея 1994 года, также предлагающая использовать маглев для замены обычной первой ступени ракеты-носителя.


Заключение


Предложенная схема может иметь следующие достоинства:

  • Высокий уровень технической готовности компонентов, технологии освоены и недороги.
  • Простота обеспечения многоразовости первой и второй ступеней.
  • Удельный импульс второй ступени выше, чем у ракетных ступеней.
  • Реализация новых технологий может повысить общую эффективность системы. Например, если удастся создать гибрид ПВРД/ГПВРД, то скорость отделения третьей ступени и зону повышенного удельного импульса можно серьезно увеличить.
  • Стартовое сооружение универсально — по одним и тем же рельсам можно запускать стандартные и облегченные ступени.



Идей облегчения доступа в космос много, кто знает, может быть, в будущем космолёты будут стартовать с рамп, как это придумывали век назад?


Фильм «Космический рейс», 1935 г. Если не смотрели — рекомендую, как-никак К.Э. Циолковский — научный консультант

По тегу «Облегчение доступа в космос» другие публикации этой тематики — грустная история экономической неудачи Спейс Шаттла, идеи воздушного старта, «одной ступенью на орбиту», «большого глупого носителя».

ссылка на оригинал статьи http://geektimes.ru/post/249532/