Мы живем в прек­расном мире, где прог­раммис­ты не стес­няют­ся вык­ладывать раз­личные вкус­ности в паб­лик — нуж­но лишь знать, где их искать. Дос­таточ­но поб­родить по GitHub и дру­гим пло­щад­кам для раз­мещения кода, и ты най­дешь решение для любой проб­лемы. Даже для той, которой у тебя до это­го момен­та и не было.
 

Laravel 5

https://github.com/laravel/laravel

Бе­зус­ловно, этот MVC-фрей­мворк — один из самых выда­ющих­ся про­ектов на PHP за пос­ледние годы. Его кон­цепции поз­воля­ют изба­вить­ся от мно­жес­тва типич­ных труд­ностей при работе с авто­риза­цией, мар­шру­тиза­цией, кеширо­вани­ем, сес­сиями и про­чим. Его вырази­тель­ный син­таксис при­шел­ся по нра­ву мно­гим, судя по 13 000 звезд на GitHub.

Ос­тановим­ся на под­робнос­тях пятой вер­сии. Вооб­ще, Laravel 5 дол­жен был быть Laravel 4.3, но решение исполь­зовать циф­ру 5 было при­нято ведущим раз­работ­чиком Тей­лором Оту­еллом, для того что­бы отра­зить изме­нения в струк­туре и дру­гие инте­рес­ные нов­шес­тва. Теперь в пап­ке App хра­нит­ся толь­ко логика самого при­ложе­ния. Отны­не в про­екте исполь­зует­ся стан­дарт psr-4, а зна­чит каж­дый класс, у которо­го будет пра­виль­но задано прос­транс­тво имен, будет дос­тупен для авто­заг­рузчи­ка. Появи­лась целая кол­лекция новых генера­торов для шаб­лонно­го кода. Были добав­лены кон­трак­ты — набор интерфей­сов для опре­деле­ния базовых услуг, пре­дос­тавля­емых фрей­мвор­ком.

CODE
CODE

Так­же был внед­рен целый ряд допол­нитель­ных рас­ширений:

  • 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-зависи­мос­тях в этих опе­раци­онных сис­темах.

CODE
CODE
 

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()
CODE
CODE
 

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>
CODE
CODE
 

Autopolyfiller

https://github.com/azproduction/autopolyfiller

Эта ути­лита напоми­нает Автопре­фик­сер, толь­ко для JavaScript-полифи­лов. Кста­ти, тоже написа­на нашим сооте­чес­твен­ником — Миха­илом Давыдо­вым из Яндекса, более извес­тным под ником azproduction. Вер­немся к самой сути. В пос­ледние годы спе­цифи­кация ECMAScript раз­вива­ется дос­таточ­но рез­во, и раз­работ­чики стол­кну­лись с уже зна­комой по спе­цифи­каци­ям W3C проб­лемой — кросс‑бра­узер­ностью. «Новый JavaScript» поз­воля­ет сэконо­мить горы килобайт: под­клю­чать мас­сивные биб­лиоте­ки не нуж­но, пос­коль­ку мно­гие методы уже под­держи­вают­ся натив­но. А под­дер­жку в ста­рых бра­узе­рах обес­печат полифи­лы. Какие имен­но? Решит Авто­поли­филер!

CODE
CODE
 

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();
CODE
CODE
 

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
CODE
CODE
 

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');
CODE
CODE
 

Isso

https://github.com/posativ/isso

«Сер­вер для ком­мента­риев наподо­бие Disqus», написан­ный на Python. В нем есть ава­тар­ки, вет­ви, голоса, а вмес­то визу­аль­ного редак­тора Markdown. В качес­тве базы дан­ных исполь­зует­ся SQLite. Isso поз­воля­ет импорти­ровать дан­ные из Disqus и WordPress. Под­клю­чение про­исхо­дит так­же с помощью JavaScript-фай­ла, который в gzip весит 12 Кб. Единс­твен­ным воз­можным минусом явля­ется под­дер­жка бра­узе­рами: Firefox, Safari, Chrome и IE10.

CODE
CODE
 

.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}

CODE
CODE

Оставить мнение