Содержание статьи
Laravel 5
https://github.com/laravel/laravel
Безусловно, этот MVC-фреймворк — один из самых выдающихся проектов на PHP за последние годы. Его концепции позволяют избавиться от множества типичных трудностей при работе с авторизацией, маршрутизацией, кешированием, сессиями и прочим. Его выразительный синтаксис пришелся по нраву многим, судя по 13 000 звезд на GitHub.
Остановимся на подробностях пятой версии. Вообще, Laravel 5 должен был быть Laravel 4.3, но решение использовать цифру 5 было принято ведущим разработчиком Тейлором Отуеллом, для того чтобы отразить изменения в структуре и другие интересные новшества. Теперь в папке App хранится только логика самого приложения. Отныне в проекте используется стандарт psr-4, а значит каждый класс, у которого будет правильно задано пространство имен, будет доступен для автозагрузчика. Появилась целая коллекция новых генераторов для шаблонного кода. Были добавлены контракты — набор интерфейсов для определения базовых услуг, предоставляемых фреймворком.
Также был внедрен целый ряд дополнительных расширений:
- Socialite — упрощает работу с OAuth.
- Flysystem — для работы с локальным и удаленными файлами (отдельно об этом проекте я писал в одной из подборок).
- Elixir — новая обертка для Gulp.
- Laravel Scheduler — планировщик задач для cron.
- SuperClosure — библиотека для сериализации замыканий и анонимных функций.
Ну и конечно же, еще масса различных изменений, касающихся Blade, команды и событий, фасадов и вспомогательных методов и многого другого.
Cachet
https://github.com/cachethq/Cachet
Случалось когда‑нибудь, чтобы твой проект переставал работать из‑за проблем, связанных со сторонними сервисами? Если да, ты прекрасно понимаешь, насколько важно правильно уведомить пользователя о неисправности, чтобы он не закрыл вкладку. А поможет в этом Cachet — первая опенсорсная в своем роде и соответственно бесплатная система статусных оповещений, которая следит за сторонними компонентами. Проект написан на PHP 5.4 с расширением mcrypt, также потребуются Composer и Node.js с Bower и Gulp. Важный момент: Cachet не работает под CentOS 6 и Debian Wheezy, но ошибка лежит в Node.js-зависимостях в этих операционных системах.
Blessed-contrib
https://github.com/yaronn/blessed-contrib
Очень крутая JS-библиотека для отрисовки дашбордов в терминале. Отрисовка происходит с помощью ASCII/ANSI-символов. В основе лежат Blessed и Drawille.
var screen = blessed.screen();
var line = contrib.line({
style: {
line : "yellow",
text : "green",
baseline : "black"
},
xLabelPadding : 3,
xPadding : 5,
label : 'Title'
});
var data = {
x: ['t1', 't2', 't3', 't4'],
y: [5, 1, 7, 5]
}
// must append before setting data
screen.append(line);
line.setData(data.x, data.y);
screen.key(['escape', 'q', 'C-c'], function(ch, key) {
return process.exit(0);
});
screen.render()
Riot 2.0
https://github.com/muut/riotjs
Чуть больше года назад на свет появился замечательный MV*-подобный фреймворк для JavaScript. Ключевыми преимуществами перед уже зарекомендовавшими себя аналогами были быстродействие и минималистичность. Riot.js по скорости в разы обгонял своих конкурентов, а по объему кода был легче в десятки раз. Но определенное впечатление на разработчиков произвел React.js от Facebook, откуда они решили позаимствовать виртуальный DOM, компоненты и пользовательские HTML5-теги для своего проекта. После чего вышел релиз Riot 2.0, который в 24 раза меньше Реакта (2,5 Кб в gzip) и предоставляет девять методов API.
<todo> <!-- layout --> <h3>{ opts.title }</h3> <ul> <li each={ item, i in items }>{ item }</li> </ul> <form onsubmit={ add }> <input> <button>Add #{ items.length + 1 }</button> </form> <!-- logic --> <script> this.items = [] add(e) { var input = e.target[0] this.items.push(input.value) input.value = '' } </script></todo>
Autopolyfiller
https://github.com/azproduction/autopolyfiller
Эта утилита напоминает Автопрефиксер, только для JavaScript-полифилов. Кстати, тоже написана нашим соотечественником — Михаилом Давыдовым из Яндекса, более известным под ником azproduction. Вернемся к самой сути. В последние годы спецификация ECMAScript развивается достаточно резво, и разработчики столкнулись с уже знакомой по спецификациям W3C проблемой — кросс‑браузерностью. «Новый JavaScript» позволяет сэкономить горы килобайт: подключать массивные библиотеки не нужно, поскольку многие методы уже поддерживаются нативно. А поддержку в старых браузерах обеспечат полифилы. Какие именно? Решит Автополифилер!
MProgress.js
https://github.com/lightningtgc/MProgress.js
Для фанатов уже ставшего трендовым Material Design — отличная реализация прогрессбаров в соответствующим стиле. Возможно, на скриншоте все выглядит не так привлекательно, но вживую все как по Гуглу.
<link rel='stylesheet' href='mprogress.min.css'/><script src='mprogress.min.js'></script>var mprogress = new Mprogress();
mprogress.start();
mprogress.end();
Is.js
https://github.com/arasatasaygin/is.js
Очень и очень маленькая, но в то же время эффективная библиотека для проверки объектов на соответствие. Взгляни на несколько примеров:
// Аргументы
var getArguments = function() {
return arguments;
};
var arguments = getArguments();
is.arguments(arguments);
=> true
is.not.arguments({foo: 'bar'});
=> true
is.all.arguments(arguments, 'bar');
=> false
is.any.arguments(['foo'], arguments);
=> true
is.all.arguments([arguments, 'foo', 'bar']);
=> false
// Массивы
is.array(['foo', 'bar', 'baz']);
=> true
is.not.array({foo: 'bar'});
=> true
is.all.array(['foo'], 'bar');
=> false
is.any.array(['foo'], 'bar');
=> true
is.all.array([[1, 2], 'foo', 'bar']);
=> false
// Функции
is.function(toString);
=> true
is.not.function({foo: 'bar'});
=> true
is.all.function(toString, 'bar');
=> false
is.any.function(toString, 'bar');
=> true
is.all.function([toString, 'foo', 'bar']);
=> false
Gator.js
https://github.com/ccampbell/gator
Определенно можно сказать, что сейчас время становления небольших самостоятельных библиотек, обрабатывающих потребности в одних конкретных задачах в отличие от массивных jQuery, Ext JS или Dojo. Примером может послужить Gator.js — event-библиотека с привычным синтаксисом и поддержкой Chrome, Safari 5+, Firefox 3.6+, Internet Explorer 9+. А для корректной работы в самых древних браузерах даже написан специальный плагин — legacy.js.
// Add a click event to document that checks for elements with class expand
Gator(document).on('click', '.expand', function(e) {
console.log('clicked on', this);
return false;
});
// Add a click event to document with no delegation
Gator(document).on('click', function() {
console.log('clicked on document!');
});
// Remove all click events on .expand
Gator(document).off('click', '.expand');
// Remove all click events on document
Gator(document).off('click');
Isso
https://github.com/posativ/isso
«Сервер для комментариев наподобие Disqus», написанный на Python. В нем есть аватарки, ветви, голоса, а вместо визуального редактора Markdown. В качестве базы данных используется SQLite. Isso позволяет импортировать данные из Disqus и WordPress. Подключение происходит также с помощью JavaScript-файла, который в gzip весит 12 Кб. Единственным возможным минусом является поддержка браузерами: Firefox, Safari, Chrome и IE10.
.htaccess Snippets
Коллекция из нескольких десятков полезных сниппетов по категориям Rewrite and Redirection, Security, Performance и Miscellaneous для твоего htaccess-файла.
Несколько примеров
Если необходимо скачать файл, а не открывать его в браузере:
<Files *.md> ForceType application/octet-stream
Header set Content-Disposition attachment
</Files>
Или наоборот:
<FilesMatch "\.(tex|log|aux)$"> Header set Content-Type text/plain
</FilesMatch>
Приоритет для HTTPS вместо прокси:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}