Category: it

Mac

Прозрачный обход блокировок через Tor

обход блокировок

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

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

Что если вы хотите сделать все настройки один раз централизованно, а не настраивать каждое устройство, будь это ноутбук или планшет, отдельно?

( Инструкция по настройке серверов и роутеров под Linux для обхода блокировок через Tor )

P.S.: Посты с фото еще будут. Пока жизнь затянула...

JSON Курсы ЦБ РФ

Strawberry

Git Forget: забыть всё, или свёртываем всю историю в один коммит

Читайте дальше: http://www.alexeykopytko.com/2011/git-forget.html


Иногда бывает нужно свернуть всю историю какого-то репозитария в один коммит. В этом случае git rebase -i не подходит, потому что от него останется два коммита, первый и последний.
На помощь нам приходит Collapse )
Cola with Ice

Прозрачное кэширование в nginx, для всех и каждого

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

С версии 0.8.46 в nginx появились опции, позволяющие легко и просто настроить прозрачное кэширование для анонимных пользователей.

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

Collapse )
Linux

Как разместить сайт с помощью Git: быстрый и простой деплой с помощью Git

Автоматический деплой из Git? Есть ответ!

Легко сделать из Git быструю и удобную замену FTP, rsync или чем вы сейчас пользуетесь для выгрузки исходников на целевой сервер.

Огромный плюс такого подхода: вам не нужны никакие дополнительные действия на сервере кроме настройки хуков Git, которые вызываются при git push.

Забудьте о sudo и мутных шелл-скриптых, которые невозможно сходу понять. Забудьте о безпарольных ssh-ключах для доступа к GitHub и других костылях. Это всё не нужно. Лишь бы у вас на сервере был Git.

Приступим

На целевом сервере создадим пустой репозиторий:

~/www$ git init
Initialized empty Git repository in /home/example.com/www/.git/



( Дальше всё просто )

Разрешим перезапись текущей ветки:
~/www$ git config receive.denyCurrentBranch ignore
Добавим хук который будет делать всю работу:
~/www$ cat > .git/hooks/post-receive
#!/bin/sh
cd ..
GIT_DIR='.git'
git reset --hard
~/www$ chmod +x .git/hooks/post-receive
Теперь расскажем локальному репозитарию об удаленном:
$ git remote add --track master origin ssh://example.com@server.example.net/~/www/
Загрузим основную ветку на целевой сервер:
$ git push --set-upstream origin master
Всё!

В дальнейшем нам достаточно будет делать git push для выгрузки основной ветки на сервер когда нам это будет нужно.
Аналогично можно сделать для любой другой ветки заменив master на ее имя в командах.
Этот же репозитарий можно использовать как и любой другой для коллективной разработки.

Если вам настолько повезло нужно одновременно обновлять некий сайт как через Git, так и другими способами, чтобы загруженные иными способами изменения не пропали при очередном обновлении из-за git reset --hard, вам нужны другие хуки:
~/www$ cat > .git/hooks/pre-receive 
#!/bin/sh
cd ..
GIT_DIR='.git'
git stash save --quiet
git stash show || true
$ cat > .git/hooks/post-receive
#!/bin/sh
cd ..
GIT_DIR='.git'
git reset --hard
git stash pop --quiet || git reset --hard
~/www$ chmod +x .git/hooks/pre-receive .git/hooks/post-receive
В случае конфликтов вам нужно будет вручную сделать git stash pop на сервере и разрешить конфликты.

Если же вы хотите использовать похожую схему без хуков с ручным обновлением - ознакомьтесь с подводными камнями.
Cola with Ice

Ленивый AJAX или как придать блеска старым сайтам

Представьте себе, что есть старый сайт, открытый лет эдак пять-семь назад, когда AJAX был ещё далек от популярности среди разработчиков. Теперь, спустя года, вы хотите придать свежести и удобства старому сайту, без сколько-нибудь существенной его переделки и с минимальными затратами времени и сил. Как это сделать?

Collapse )
Mac

onsubmit jQuery override

Если у нас есть форма с переназначенным onsubmit:
<form onsubmit="return validate();">
То, для того чтобы результат выполнения функции validate(); учитывался при отправке через скрипт, нужно переназначить её на новый лад:

Collapse )