Url Balancer

Пакет предназначен для балансировки запросов статических файлов (если, вдруг, они у вас не на CDN). Такая техника позволяет параллельно загружать статику, обходя ограничения на количество одновременных потоков до одного домена.

  • Поддержка Composer (через packagist)
  • Поддержка Silex
  • Расширяемость стратегий балансировки

Установка

Рекомендуется установка через Composer:


{
    "require": {
        "astartsky/url-balancer": "1.1.2"
    }
}

Пример использования


$urlBalancer = new \Astartsky\UrlBalancer\UrlBalancer();
$urlBalancer->setStrategy(new \Astartsky\UrlBalancer\Strategy\HashStrategy())
$urlBalancer->addBucket(new \Astartsky\UrlBalancer\Domain("s1.myawesomesite.com"));
$urlBalancer->addBucket(new \Astartsky\UrlBalancer\Domain("s2.myawesomesite.com"));
$urlBalancer->addBucket(new \Astartsky\UrlBalancer\Domain("s3.myawesomesite.com"));

$url = $urlBalancer->getUrl("/images/my_impressive_content.png");

Ссылки

На Packagist.org: пакет

На Bitbucket.org: репозитарий


PHP

Интересная история о том, как мы внезапно создали с нуля студию в изложении andry:

Команда

Уверен, многих технарей посещала идея создания своего бизнеса. Вот и у нас в определенный момент все звёзды сложились так, что казалось — это беспроигрышный вариант: сильная техническая команда, откуда ни возьмись появились менеджеры, готовые продавать наши услуги, есть даже пара проектов на старт. Грех не попробовать. И мы рискнули. Фактически всё надо ставить с нуля. И в первый же месяц всё перевернулось с ног на голову.

Читать дальше...


Minecraft

Виртуальные миры бывают очень разные. Куда-то лучше не заходить без цепкого глаза, куда-то без быстрой реакции, а куда-то и без мощной видеокарты. Где-то требуют яростно кликать, где-то быстро думать, а где-то можно и дремать в процессе. В них есть знойные пустыни, длинные реки, высокие горы, дикие леса. Всего там в избытке, кроме свободы. Даже в самых свободных мирах выбор сводится к короткому списку, выгравированному на инварианте сюжетной линии и игрового процесса. К чему я все это пишу? Хочу рассказать вам о мире, в котором вы можете заложить под этот самый инвариант добрый кусок динамита, построить настоящий компьютер, прокатиться по нему верхом на свинье, а потом все это взорвать к чертям. Или не взрывать, свобода же.


Dragon

Сразу же отвечу на вопрос о том, куда же я пропал на целый год: да никуда и не пропадал! Живу себе тихо своей жизнью, хоть она и немного поменялась за последнее время, а всякие мысли лытдыбрового характера все мельчают, и мельчают, пока не попадают прямиком в твиттер. Ну а для технических штук у меня отдельная площадка есть, чтобы вас не утомлять мало кому интересными темами. Хотя это вполне работает, я по вам все равно скучаю. Ведь сколько копий сломано в комментариях в моей ленте или, может, ваших, друзья. Напряженные холивары, разговоры за жизнь, просто болтовня -- все это очень круто было, и мне этого не хватает. Но вспоминаю я о таком все реже.

Что ж у меня нового?

Я отпустил бороду. Борода это круто. Вы можете, конечно, со мной спорить, если хотите, но это факт. Она иногда немного мешает целоваться, зато в остальное время тепло и уютно, можно дергать её в задумчивости, поглаживать, даже расччесывать, словом, очень полезная штука. Гриву отпустил, но её приходится смирять резинкой в форме хвоста: мои волосы категорически отказываются слушаться меня по-хорошему, приходится так, по плохому. Но иногда я отпускаю их погулять.

Я совсем перестал участвовать в холиварах в интернете. Да, это весело, да это забавно, но это требует такую уйму времени, которой у меня, к сожалению, уже нет. Помню как мы спорили с кем-то на очередную мировоззренческую тему года так три назад, я тогда только устроился работать на фултайм, приходил домой и... половину вечера убивал на составление внятного ответа. Меня хватило очень ненадолго. Есть много более интересных вещей, которыми можно заняться для развлечения: троллинг, например.

Еще я переехал в Москву, в Крылатское: и очень тому рад. С трех сторон тут зелень, до метро рукой подать, панорамный вид на лесопарк. Можно забыть о пробках на Можайке, о переполненных душных электричках и всяких вокзалах, о соседях-алкашах и всем таком родном, но надоевшем. Свой дом, пусть и условно свой -- это, все таки, уже крепость. На работу с апреля по конец ноября катался на своих двоих колесах, на велосипеде. В один конец около 15-20 километров, намотал тысячи километров за год. Ветер в лицо, хэви металл в уши: до этого никогда не радовался дороге так, как в этом году.

В общем, я всегда где-то здесь. Может, еще что-то расскажу скоро.


Если активная работа над проектом идет над несколькими ветками сразу, всегда полезно знать, на какой ветке в текущий момент находится указатель HEAD репозитария. Чтобы не полагаться на память, можно добавить отображение названия ветки в приглашение командной строки. Для этого откроем на редактирование ~/.bashrc


export PS1='\u@\h: \w\[\033[01;33m\]$(__git_ps1) \$\[\033[00m\] '

Любуемся результатом:

Но, по хорошему, лучше просто поставьте zsh — оно того стоит.


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


Иногда важно помнить о том, что вместе с апдейтом кода появилась и новая миграция, которую нужно бы не забыть запустить. Первый вариант — git merge-base и еще несколько полезных команд. Задачу это решает, но требует множества действий — есть простор для фантазии и автоматизации. Пускай git сам напоминает нам о новых миграциях!


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


"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --dshow-vdev="iLook 310" --dshow-size=640x480 --video-filter=scene --no-audio --scene-path=C:\Users\Ast\Pictures\Snaps\ --scene-format=jpeg --scene-prefix=snap --run-time=1 --intf=dummy -V dummy --scene-replace --dummy-quiet "dshow://" vlc://quit

set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
copy "C:\Users\Ast\Pictures\Snaps\snap.jpeg" "C:\Users\Ast\Pictures\Snaps\%datetimef%.jpeg"

В данном примере «iLook 310» — название источника, его можно посмотреть через GUI VLC.


Алиасы

Получение статуса


git config --global alias.st status
git st

Наглядный лог


git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git lg
git lg -p

Настройка пользователя


git config --global user.name "Username"
git config --global user.email "foo@bar.com"

Добавим цвета


git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto

Git

Иногда бывает удобно прописать короткий адрес для подключения по ssh. Например, когда для подключения необходимы одни и те же параметры, либо когда предполагается возможность достаточно частой смены параметров, либо просто — порядка ради. В любом случае, если вам больше нравится возможность заменить первое на второе, добро пожаловать.


ssh -p 22 -i ~/.ssh/git_id_rsa git@git.test.com

ssh repository

Все, что нам нужно, это описать параметры подключения в конфиге. Например, так.


# ~/.ssh/config

Host repository
    Hostname git.test.com
    Port 22
    User git
    IdentityFile ~/.ssh/git_id_rsa