Как стать автором
Обновить
19
0
Shing @Shing

Пользователь

Отправить сообщение

nginx — строим свой letitbit

Время на прочтение2 мин
Количество просмотров5.2K
Появилось желание сделать сервис подобный letitbit.net в отдельно взятой стране на окраине Европы.
Требовалось:
  • позволять загружать/отдавать большие файлы;
  • не позволять перепубликовывать прямые ссылки на файлы;
  • ограничивать количество одновременно скачиваемых файлов.

Для реализации выбрали NGINX в связке с PHP через fastcgi.
В NGINX добавили:
  1. великолепный Nginx upload module, который позволяет избежать многократное копирование загруженного файла на пути NGINX-PHP. К тому же, при небольшой доработке, возможна загрузка сразу в нужную папку, что позволяет использовать простое переименование вместо копирования в PHP
  2. нужную заплатку к модулю secure_link, позволяющую делать безопасные ссылки действительными ограниченное время

PHP взяли самый обычный и запустили через spawn-fcgi.
Поставили сервачок, напихали туда штук 12 терабайтных дисков.
Программист написал PHP код, а Марис Рускулис придумал следующий трюк с rewrite для NGINX, позволяющий избежать обращение к PHP при скачивании файла.
В результате, конфигурация NGINX выглядела примерно так:
http {
limit_zone regular $zonekey 10m;
limit_zone premium $zonekey 10m;
server {
root /www/oursiteishere;
location / { try_files $uri @files; }
location ~ \.php$ { try_files $uri @files; fastcgi_stuff_here; }
location @files { rewrite ^(.*)$ /index.php?$1 last; }
location /storage/ { root /storages/; internal; }
# Location for regular users
location ~ /download/.+/(.+)/0/.+/.*/(.+)$ {
set $fname $2;
set $username $1;
set $zonekey "$binary_remote_addr $username";
limit_conn regular 1;
limit_rate '100k';
secure_link_secret megasecret;
secure_link_ttl on;
if ($secure_link = "") { return 403; }
add_header Content-Disposition "attachment; filename*=UTF-8''$fname";
rewrite ^/download/([a-f0-9]+)/([\.~0-9a-zA-Z_]+)/([01])/([0-9]+)/(.+)/.+$ /storage/$4/$5 break;
}
# Location for premium users
# Location for upload using upload module
}
}

Замечательной вещью в данном конфиге является тот факт, что при скачивании файла по сгенерированной защищённой от подмены временной ссылке (проверку осуществляет secure_link) не вызывается PHP с последующим X-Accel-Redirect.
Возможно, данное решение накладывает ограничение на присутствие логики перед непосредственной отдачей файла, но тем не менее, на мой взгляд, является довольно оригинальным трюком, позволяющим немного сэкономить на fastcgi.
Всего голосов 50: ↑44 и ↓6+38
Комментарии30

О разных плагинах и советах о «чудесном» отучении Firefox кушать оперативку

Время на прочтение1 мин
Количество просмотров3.4K
Это ответ на пост о плагине AFOM и подобных советах.

К сожалению, аддон AFOM — это тот же трюк, что и с параметром config.trim_on_minimize (в about:config ставите этот параметр в true и наблюдаете тот же эффект при сворачивании браузера). Он действительно уменьшает использование RAM, но за счёт флуша памяти с использованием свопинга/файла_подкачки.

Вот графики получение с помощью TaskInfo:
image
Читать дальше →
Всего голосов 104: ↑95 и ↓9+86
Комментарии95

Договор на техническое обслуживание и поддержку сайта

Время на прочтение9 мин
Количество просмотров125K
Добрый день, коллеги!

В нашей компании, существовала проблема с договором на техническую поддержку сайтов. В договоре мы хотели четко прописать круг наших обязанностей, время выделяемое в месяц на работы над сайтом заказчика, способы оплаты при превышении выделяемого времени, ответственность заказчика и четкие инструкции по предоставлению материалов. Этим договором и хотим с вами поделится.
Читать дальше →
Всего голосов 71: ↑64 и ↓7+57
Комментарии48

Мотивация удаленных сотрудников

Время на прочтение4 мин
Количество просмотров11K
В IT индустрии все чаще встречаются проекты с распределенными командами. Это удобно — спецификация, код, баги, мануалы легко перемещаются из одного конца планеты в другой за доли секунд. Это выгодно — аутсорсинг проектных процессов, будь то разработка, тестирование или саппорт, в Индии или Китае обойдется в 3–5 раз дешевле аналогичных сервисов в странах Европы или США.

Никого не удивишь проектом, в котором сейлз, маркетинг и бизнес анализ находятся в Англии, разработка в России, тестирование и саппорт — в Индии. Компания, в которой я работал, специализировалась именно на таких проектах. Наиболее слабыми местами в них, я бы назвал коммуникации внутри проекта и мотивацию его участников. Эта статья описывает эффективный подход к решению этих проблем в проектах с распределенной командой.

Читать дальше
Всего голосов 143: ↑134 и ↓9+125
Комментарии69

Тренировка памяти

Время на прочтение3 мин
Количество просмотров43K
Вы когда-нибудь задумывались, насколько важна память для человека и конкретно для вас? Что можно достичь, с помощью хорошей памяти? А давайте прикинем прямо сейчас!? Для начала я думаю, стоит вспомнить образование и работу: прочитали книгу за несколько дней и все запомнили, экзамены за вечер на 5, язык программирования за месяц… можно продолжать долго.

Некоторые люди рождаются с феноменальной памятью, а остальные могут память тренировать и достигнуть хоть и не феноменальных результатов, но очень даже приличных, которые позволят достичь очень больших высот, не говоря уже о довольно простых вещах, перечисленных чуть выше… Поэтому моя заметка именно о тренировке памяти обычных людей: сжато и по сути.
Читать дальше →
Всего голосов 86: ↑72 и ↓14+58
Комментарии61

Вахтёр: на страже системы

Время на прочтение2 мин
Количество просмотров4.1K
«Однажды, в студёную зимнюю пору,
Залили на сервер бэкдорчиков гору...»


Народное админское творчество



Вобщем как то раз на одном из серверов обнаружился php-shell, через который злобные хакеры поломали уютный дневничок™ хорошего человека.
После двухчасового ковыряния в логах Апача нашлась дыра, через которую залили шелл.
Дыру прикрыли, дневничок вернули к жизни из бэкапов, и сели думу думать.
Ну, рассказывай уже, чего удумал...
Всего голосов 112: ↑107 и ↓5+102
Комментарии141

Разгоняем Wordpress до скорости света

Время на прочтение7 мин
Количество просмотров140K
image
Скорость и отказоустойчивость – одни из тех факторов, что неизменно влияют на популярность вашего ресурса, ведь даже с лучшим в мире контентом медленно работающий сайт будет раздражать читателей и рано или поздно вы их потеряете. В этой статье мы будем оптимизировать самый популярный блоговый движок — Wordpress, работающий на PHP. А заодно рассмотрим несколько общих моментов в оптимизации сайтов.
Читать дальше →
Всего голосов 77: ↑63 и ↓14+49
Комментарии60

Quick Config — программа для быстрой смены заданных настроек

Время на прочтение2 мин
Количество просмотров13K
Став обладателем ноутбука ощутил все прелести мобильности. Работать стало проще, отпала необходимость таскать проекты на флешке, настраивать окружение на домашней и рабочей машине один в один. Появилась возможность брать с собой работу на отдых.

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

Перепробовав массу готовых программ решил все-таки написать свою, которая полностью удовлетворит мои текущие и будущие запросы.

Так появилась программа Quick Config.
Читать дальше
Всего голосов 67: ↑62 и ↓5+57
Комментарии51

Онлайн чат для сайта через джаббер (GTalk)

Время на прочтение2 мин
Количество просмотров41K
image
Великолепная веб-программа позволяющая разместить на вашем сайте панель с чатом для ваших клиентов сообщения которого будут прилетать в ваш джаббер клиент.
Другими словами это способ организовать общения с посетителями сайта.

Написать подробную инструкцию меня сподвигнула обзорная заметка на сайте dikiy.com
Под катом так-сказать пошаговая инструкция как запустить онлайн чат на своем сайте
Читать дальше →
Всего голосов 80: ↑74 и ↓6+68
Комментарии78

И снова о сборках. Drupal

Время на прочтение2 мин
Количество просмотров7.7K
Несколько месяцев назад, говоря о рынке плагинов для коммерческих CMS, я мимоходом упомянул про “сборки” открытых систем управления сайтами. При том, что работал я со многими (за спиной большое число проектов различного масштаба на SharePoint, Битриксе, Юми, Wordpress, Drupal, нескольких “студийных” и просто самописных системах), больше всего, несмотря на свою прожорливость, мне нравится именно Друпал. Поэтому просто перечислю несколько интересных сборок на нём, предназначенных для различных задач.
Читать дальше →
Всего голосов 71: ↑68 и ↓3+65
Комментарии61

Определение пола по истории навигации, шаг 2й

Время на прочтение2 мин
Количество просмотров4.5K
Добрый день.
Сперва ссылка: угадываем пол посетителя.

По истории навигации с помощью js можно определить пол посетитеся, об этом уже писали. Вкратце — создаем с помощью js ссылки и смотрим, какого они цвета, а по этому определяем, посещенные они или нет. Затем объединяем полученную информацию с демографическими данными о посещенных сайтах.

Но зарубежные определялки работают у нас не очень, т.к. учитывают сайты, популярные в США.
Собрал информацию по русским сайтам, немного переписал скрипты.
Практическое применение (ха, очень важное и полезное): на сайте есть форма, где нужно указать свой пол. Если человек ранее пол не указывал, то с помощью этой технологии сайт пробует его угадать и подставить нужный.

Если кто-то захочет сделать у себя, то выкладываю наработки: там серверное приложение django, js-файл, дамп собранной базы данных. Лицензия, если где-то не указано, — MIT. Без джанги все тоже легко можно использовать.

Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии51

Firefox 3.5 Last Tab close button и Closing last tab closes Firefox

Время на прочтение1 мин
Количество просмотров1.9K
Только что обновил свой Firefox до версии 3.5 и заметил, что если остаётся только одна вкладка то на ней нету кнопочки «закрыть вкладку». Мне как человеку использующему Fast Dial гораздо удобнее просто закрыть последнюю вкладку и увидеть окошко Fast Dial чем открывать новый таб и лишь потом закрывать старый.

Но решение есть и оно нашлось довольно быстро:
Читать дальше →
Всего голосов 68: ↑52 и ↓16+36
Комментарии87

У вас будет партнер? Предохраняйтесь!

Время на прочтение7 мин
Количество просмотров1.6K
Итак, вы решили, что не смотря на всю мудрость земли и предупреждения товарищей, вы начнете бизнес с партнером, который надежен, умен, трудолюбив и обладает прочими достоинствами не свойственными другим людям.
Как показывает опыт такие «интимные» связи часто заканчиваются губительно для одного из партнеров. Поэтому хочу поделиться некоторыми наработками в плане предохранения от некачественного партнерства.
Читать дальше →
Всего голосов 71: ↑67 и ↓4+63
Комментарии39

Собеседуем руководителя проектов

Время на прочтение6 мин
Количество просмотров68K
Сразу хотелось бы определиться с некоторыми понятиям, дабы никого не провоцировать на полемику из-за недопонимания ключевых моментов. Так же хочу предупредить, что это не руководство к действию и не пособие, а всего лишь рассказ в стиле «как это делают другие».

Для меня руководитель проекта (проектов) – это человек, прежде всего имеющий глубокое понимание предметной области, в нашем случае интернет разработки, имеющий опыт самостоятельной разработки, находящийся в курсе технологических и бизнес тенденций на рынке. Равноценно вышеупомянутым качествам – умение общаться и находить общий язык с совершенно разного типа людьми. Знания РП должны лежать не только в плоскости разработки, но так же и в прототипировании интерфейсов, и в дизайне, и в интернет-маркетинге.
Читать дальше →
Всего голосов 95: ↑80 и ↓15+65
Комментарии121

Где-же взять VPS/VDS?

Время на прочтение1 мин
Количество просмотров49K
Снова напал на интернет с вопросом, у кого взять VPS качественно и за недорого.

Хочется небольшого: 500Mhz CPU, 256Mb RAM, >3Gb HDD, с Ubuntu LTS или Debian и неограниченным (разумно большим) трафиком.
Желательно: Xen, Россия, WM, до 20$, с возможностью расти по ресурсам.

Искал на:
www.hostobzor.ru/db/list_firm.php
hosting101.ru
1stat.ru/?show=providers
и потерялся…

Подскажите, пожалуйста, где граблей меньше.

Заранее спасибо за ваши мнения!
Всего голосов 58: ↑40 и ↓18+22
Комментарии224

Максимальный поток минимальной стоимости

Время на прочтение15 мин
Количество просмотров85K
Транспортная задача (классическая) — задача об оптимальном плане перевозок товара со складов в пункты потребления на транспортных средствах.

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку).

Под катом очень-очень много текста, т.к. рассказывается один из вариантов решения данной задачи «в картинках» для тех, кто мало знаком с графами. Листинг прилагается.

Путешествие в тысячу миль начинается с первого шага
Всего голосов 173: ↑165 и ↓8+157
Комментарии76

Превентивная защита ваших и не ваших скриптов

Время на прочтение1 мин
Количество просмотров30K
Наверное не ошибусь если скажу, что очень большая часть мегахакерских_взломов основаны на закачке PHP-скрипта в каталог, доступный для записи в него файлов скриптами (0777, например). Это каталоги для заливки фотографий товаров, аватарок и т.п.

Я еще несколько лет назад «допер» до способа предотвратить на корню подобные вещи. Закачать — может и закачают, а воспользоваться не смогут. Это казалось очевидным все это время, но мало кто это реализовывает. К примеру, только в последнем патче популярного форума SMF была добавлена подобная штука.
Поэтому, для тех, кто не задумывался…

Всё просто. Во все каталоги, доступные для записи, закачиваем (или добавляем строчки к существующему) .htaccess с содержимым:

php_flag engine 0
AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp

Этим самым мы отключаем PHP в данном каталоге и заставляем все скрипты отображаться как HTML.
Это можно сделать просто на всякий случай. Лишним уж точно не будет.
Разумеется, только для Apache. Если кто-то знает как подобное реализовать в IIS — напишите. :)
Всего голосов 132: ↑100 и ↓32+68
Комментарии90

Краткий обзор скриптов интернет-магазинов

Время на прочтение2 мин
Количество просмотров26K
По моему, скрипт интернет-магазина является своего рода, лакмусовой бумажкой для веб-студий. У любой приличной компании или хорошего программиста, занимающихся созданием сайтов, в портфолио обязательно есть какой-никакой интернет-магазин и по нему можно точно определить профессионализм разработчика. Однако из-за того, что магазины охватывают широкий спектр технологий и функционала, создавать магазин каждый раз «с нуля» не имеет смысла. Гораздо проще взять готовый скрипт и исправить его под свои нужды. Возникает логичный вопрос — а какой скрипт брать? В этом я и попытаюсь разобраться.
Читать дальше →
Всего голосов 40: ↑32 и ↓8+24
Комментарии97

Как грамотно отправлять почту из скриптов (в частности — на PHP)

Время на прочтение5 мин
Количество просмотров39K
Первая часть текста взята из инструкции хостинг-провайдера Netangels. Вторая — авторская.

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

Для того, чтобы быть уверенным, что ваше сообщение отправляется действительно верно, необходимо иметь по меньшей мере базовые представления о формате почтового сообщения. Формат почтового сообщения описан в нескольких стандартизирующих документах, основными из которых являются RFC 822 (описывает формат передачи простого текста на английском языке) и RFC 2045 и далее (описывает расширения этого формата для передачи произвольных данных).
Читать дальше →
Всего голосов 59: ↑56 и ↓3+53
Комментарии76

Плюсы и минусы мульти-мониторной конфигурации

Время на прочтение4 мин
Количество просмотров32K
Желание стать эффективнее и производительнее приводит многих дизайнеров к поиску методов улучшения рабочего процесса. Одно из распространённых решений — использование нескольких мониторов, способное дать значительные преимущества. В этой статье рассматриваются «за» и «против» такого решения.

«ЗА»


+1) Производительности труда растёт


Наибольшее преимущество — это, конечно, рост производительности труда.

Было проведено немало исследований, которые пытались подсчитать как именно меняется производительность труда от внедрения мульти-мониторной системы. В соответствии с исследованием Jon Peddie Research производительность вырастает на 42%.

В отчёте Pfeiffer 2005 года говорится что в результате повышения производительности, инвестиция во второй монитор (или увеличение диагонали первого) может дать годовой прибыли до нескольких тысяч американских долларов.

Читать дальше →
Всего голосов 52: ↑41 и ↓11+30
Комментарии105

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность