compare = (buf1, buf2) -> | |
return false if buf1.length != buf2.length | |
for i in [0...buf1.length] | |
return false if buf1[i] != buf2[i] | |
true | |
isCtrlZ = (chunk) -> compare chunk, [26,13,10] | |
input = (cb) -> | |
result = '' |
isArray = (x) -> | |
typeof x is 'object' and x.constructor is Array | |
Array::last = -> @[@length - 1] |
# http://stackoverflow.com/questions/17833185/git-checkout-from-a-specific-directory | |
# Method №1 | |
mkdir <repo.git> | |
mkdir <working-dir> | |
git clone <repo-url> <repo.git> --bare --depth 1 | |
git --git-dir=<repo.git> --work-tree=<working-dir> checkout HEAD -- <repo-subdir> | |
# Method №2 | |
mkdir <working-dir> |
git init | |
git remote add origin https://github.com/try-git/try_git.git | |
git status | |
git add --all | |
git commit -am "initial commit" | |
git push -u origin master |
http://requirejs.org/docs/api.html
Project structure:
- www/
- index.html
- js/
- app/
- sub.js
- app/
# http://www.mikedellanoce.com/2013/04/coffeescript-tip-modular-cakefile.html | |
fs = require('fs') | |
tasks = fs.readdirSync('tasks') | |
require('./tasks/' + task.replace(/\.coffee$/, '')) for task in tasks |
Репозиторий - это слой абстракции, инкапсулирующий в себе всё, что относится к способу хранения данных. Назначение: Разделение бизнес-логики от деталей реализации слоя доступа к данным.
Паттерн Репозиторий стал популярным благодаря DDD (Domain Driven Design). В противоположность к Database Driven Design в DDD разработка начинается с проектирования бизнес логики, принимая во внимание только особенности предметной области и игнорируя все, что связано с особенностями базы данных или других способов хранения данных. Способ хранения бизнес объектов реализуется во вторую очередь.
Применение данного паттерна не предполагает создание только одного объекта репозитория во всем приложении. Хорошей практикой считается создание отдельных репозиториев для каждого бизнес-объекта или контекста, например: OrdersRepository, UsersRepository, AdminRepository.