книги хакеры / журнал хакер / 145_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
CODING |
|||
w Click |
to |
|
|
|
|
|
|||||
|
|
|
|
|
m |
Александр Эккерт stannic.man@gmail.com |
|||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
КОШМАРНАУЛИЦЕ WINDOWS
Типсыитриксыдлясистемщиков
«Сон разума рождает чудовищ», — гласит испанская пословица. Немного навыков системного программирования, IDA Pro в умелых руках, ну и самое главное — исходные коды Windows aka WRK, и на свет начинают выползать кошмары из сна операционной системы Windows. Не терпится узнать, какие?
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Необычный взгляд на обычные вещи
Сколько раз в популярной IT-литературе описывался механизм перехода из ring3 в ring0 ОС Windows? Не счесть! При этом авторы, копипастя друг у друга фактически один и тот же текст, подробно или не очень описывали, что произойдет, если пользователь вызовет простую функцию CreateFile().
Сегодня мы попробуем взглянуть на эту проблему с несколько неожиданной стороны. По утверждениям знающих людей, существует один «proof of concept»’ный способ, позволяющий выполнять свой код на привилегированном уровне и пользоваться сервисами ядра напрямую, то есть в обход существующих ограничений, которые на тебя накладывает пользовательский (ring3) уровень. Да-да, ты не ошибся, — посмотрим, можно ли ядро системы «подергать за вымя» напрямую. Все, что тебе для этого понадобится, это хорошие знания ядра, подсистемы ввода/вывода и изворотливость (или даже извращенность :)) ума.
Речь пойдет об упомянутом мной механизме перехода из пользовательского уровня (ring3) в привилегированный уровень (уровень ядра). Попробуем поразмыслить и посмотреть на, казалось бы, со всех сторон облизанный и всем известный сценарий с другой стороны — вдруг мы что-нибудь оставили без внимания?
Предположим, что у нас в руках некая 0-day уязвимость, которая позволяет скомпрометировать ядро и выполнить привилегированный код. Например, как в случае с эксплуатацией бага
nt!ZwSystemDebugControl в Windows. Одна из главных проблем, без решения которой вообще не обойтись, это необходимость изыскать способ возврата в нормальное ring3-состояние после того как ты выполнишь свой ring0-код. Существует два пути, которые здесь можно использовать. Первый — это самому реализовать код выхода с использованием асмовских инструкций iret или sysexit. Второй — заюзать собственные процедуры ядра, которые оно использует для таких операций (то есть выхода из ring0 в usermod’ный режим).
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
m |
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
w Click |
|
|
|
|
|
|
o |
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
— задача не из легких. Чтобы как-то ее решить, в свое время и был со- |
ной социальной сети открыли доступ к OpenAPI-интерфейсу. Благо- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
здан OpenID — открытая централизованная система, позволяющая |
даря этому пользователи получают возможность выполнять автори- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
пользователю использовать единый логин/пароль для выполнения |
зацию на сторонних сайтах, используя учетную запись «ВКонтакте». |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
авторизации на различных сайтах. Последнее актуально, если они |
Добавить в Drupal поддержку «ВКонтакте OpenAPI» позволяет модуль |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
поддерживают OpenID. |
VK OpenAPI (http://drupal.org/project/vk_openapi). Модуль прост |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Начиная с шестой версии, в составе Drupal идет модуль, обеспечива- |
в использовании, и с его помощью легко настроить новую систему |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ющий возможность авторизации по OpenID. Однако, чтобы начать |
авторизации. Помимо авторизации VK OpenAPI может добавить к |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
использовать на сайте OpenID, необходимо подключить еще один |
материалам кнопку «Share», позволяющую пользователям делиться |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
модуль, содержащий настройки для различных поставщиков OpenID. |
понравившимся материалом. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Таких поставщиков много, но наиболее популярными (для россий- |
Совет№5:Выбираемпродвинутый |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
ских пользователей) являются Yandex, Rambler, Google, LiveJournal, |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
VKontakte, Facebook и некоторые другие. Для зарубежных сервисов |
шаблонизатор |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
(Google, LiveJournal, Facebook) в репозиториях Drupal есть соответс- |
Одним из самых удачных шаблонизаторов для PHP считается Smarty |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
твующие модули, а вот для российских — нет. Когда передо мной |
(www.smarty.net). Во многих современных CMS используется имен- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
встала задача прикрутить OpenID-авторизацию, то мне пришлось |
но он, и на это есть причины. Главные из них — гибкость, удобство |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
основательно прошерстить интернет с целью поиска решения. И оно |
и большие возможности. Увы, по умолчанию в Drupal применяется |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
нашлось! Чтобы все было тип-топ, нужно воспользоваться модулем |
собственный шаблонизатор, но при желании легко можно подклю- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
OpenID Extension (http://drupal.org/files/issues/openid_ext_1.zip) |
чить и smarty. Для этого необходимо загрузить smarty theme engine |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
от нашего соотечественника. Обрати внимание, данный модуль — |
äëÿ Drupal (http://drupal.org/project/smarty) и, собственно, сам |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
не очередной вариант взаимодействия с OpenID. Это просто удобный |
Smarty (ссылку ищи выше). После этих нехитрых операций ты полу- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
блок для выполнения авторизации, а также возможность выбора |
чишь возможность создавать темы на базе Smarty. Кстати, почему- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
поставщика ID-параметров в нашей стране. |
то готовых тем не так много, поэтому у тебя есть все шансы стать |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Совет№4:Drupal+«ВКонтакте» |
автором самой красивой и удобной Smarty-темы, на которой будут |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
учиться тысячи пользователей. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Включить на сайте авторизацию по OpenID, несомненно, полезно, но |
Совет№6:Счегоначинатьсозда- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
что если нам потребуется всего лишь обеспечить более простой вход |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
на сайт (без регистрации) пользователям, имеющим аккаунт в соци- |
ниепервойсобственнойтемыдля |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
альной сети «ВКонтакте»? Да, можно просто отключить лишних пос- |
Drupal? |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
тавщиков в External Form Login, но это не решит проблему. Выполняя |
Рано или поздно перед Drupal'ером встает задача по разработке собс- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
вход по VKontakteID, пользователю фактически придется создать |
твенной темы оформления. Я бы сказал, что именно на этом этапе |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
новую учетную запись на сайте. При входе он увидит стандартную |
90% новичков принимают фатальное решение: «Drupal не для меня». |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
регистрационную форму, ожидающую заполнения. Да, даже пароль |
Отчасти их можно понять, поскольку темизация — одна из самых |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
придется придумывать. И лишь после создания аккаунта к нему бу- |
сложных и непонятных вещей. Нужно приложить усилия, чтобы |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
дет привязан OpenID-идентификатор (в данном случае VKontakteID), |
хорошо освоить данный процесс и применять его в дальнейшем без |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
и пользователь сможет выполнять вход по нему. Сам понимаешь, |
сучка и задоринки. Чтобы освоение проходило более гладко и понят- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
такой подход не очень удобен, и воспользоваться им можно не всегда. |
но, я бы рекомендовал тебе выполнить несколько простых шагов. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Иногда требуется реализовать что-то более простое. Представь, как |
1.Чтение мануалов. Если уровень английского позволяет, то знако- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
было бы здорово, если бы пользователь, имеющий аккаунт «ВКонтак- |
миться с темизацией стоит после чтения официальной документа- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
те», мог сразу войти на твой сайт. Другими словами, Drupal должен |
öèè (http://drupal.org/documentation/theme). В ней содержится |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
создавать новую учетную запись автоматически на основании полу- |
куча как полезного, так и бесполезного материала. В любом случае, |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
ченных данных от «В Контакте». К счастью, добиться такого эффекта |
изучив его, ты однозначно поймешь, как работают темы в Drupal и |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
не так-то сложно. Примерно полгода назад разработчики популяр- |
познакомишься с другими нюансами этой области. Вторым обяза- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
XÀÊÅÐ 02 (145) 2011 |
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
SYN/ACK |
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
m |
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
w Click |
|
|
|
|
|
|
o |
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
Сайт проекта Drush |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
сможешь сам определять настройки всех серверных компонентов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(включая ОС). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Совет№8:Начальнаяоптимизация |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сразу после установки Drupal нужно приступить к базовой оптими- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
зации. Drupal быстр, но если есть возможность что-то ускорить, ей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
надо пользоваться. Процесс оптимизации Drupal условно можно |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
разделить на три группы: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.Базовая. Реализуется средствами движка. Самостоятельно рулить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
этими параметрами из панели администрирования ты можешь сразу |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
после завершения инсталляции системы. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Официальный сайт проекта OpenAtrium |
2.Расширенная. Для Drupal разработаны специальные модули, поз- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
воляющие повысить общую производительность системы (напри- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
тельным для чтения пунктом будет цикл статей от Романа Архарова, |
мер, посредством продвинутого кэширования). |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
профессионального Drupal-разработчика. Роман написал несколько |
3.Серверная. Под серверной оптимизацией подразумевается |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
замечательных статей по Drupal (http://pcmag.ru/solutions/detail. |
настройка серверных компонентов, взаимодействующих с |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
php?ID=37518). Среди них есть и статья про темизацию. |
Drupal. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
2.Изучение темы Zen. Начать разрабатывать новую тему для Drupal с |
Итак, вначале посмотрим на базовую оптимизацию. В настрой- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
чистого листа — довольно сложный процесс. Новичку вряд ли хватит |
ках производительности системы (admin/settings/performance) |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
сил и терпения завершить его до конца. Для облегчения жизни лучше |
доступно несколько опций, влияющих на быстродействие. Первое, |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
взять заосновутемуZen(http://drupal.org/project/zen). Весь кодтемы |
с чего стоит начать оптимизацию, — включение кэша. По умол- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
хорошо прокомментирован и работать с ним — одно удовольствие. |
чанию он отключен и администратору доступно два варианта |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Совет№7:Shared хостингилиVPS? |
кэширования: «нормальный» и «агрессивный». Самую большую |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
производительность дает «агрессивный» режим, но не стоит оболь- |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Сам по себе Drupal достаточно шустрый, но стоит обвешать его |
щаться. Лучше выбрать «нормальный». Это оптимальный режим |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
дополнительными модулями и вывести в свободное плавание, |
для сайта с большим числом зарегистрированных пользователей. |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
как начинаются проблемы с производительностью. Чтобы Drupal |
Если же сайт малопосещаем, то в таком случае хорошим выбором |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
«летал», нужно позаботиться о правильной настройке окружающей |
станет «агрессивный» режим. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
его среды. Речь идет, конечно, о web-сервере, СУБД, PHP и так далее. |
Советую обратить внимание на группу настроек «Оптимизация |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Максимальная производительность возможна лишь при тщательной |
пропускной способности». Она позволяет активировать объедине- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
настройке всех компонентов. К несчастью, получить доступ ко мно- |
ние CSS и JavaScript в единые файлы. Зачем? Дело в том, что многие |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
гим настройкам перечисленного ПО на обычном хостинге нельзя. |
дополнительные модули тянут с собой css/js файлы. При загрузке |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Приходится довольствоваться тем, что предлагает хостер. Чтобы |
очередной страницы происходит обращение к нескольким файлам |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
посетители твоего проекта не наблюдали белый экран смерти вместо |
на сервере. А это, в свою очередь, лишние соединения. Чтобы мини- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
искомого сайта, я советую тебе не использовать shared-хостинг для |
мизировать затраты, можно выполнить объединение. В этом случае |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
размещения более-менее посещаемого ресурса. Лучше потратить |
Drupal создаст единый файл с css/js, который и будет загружаться |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
немного денег и приобрести VPS, на котором ты будешь хозяином и |
браузером пользователя. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
108 |
XÀÊÅÐ 02 (145) 2011 |
|
|
|
|
|
|
|
|
|