Pull to refresh
0
0
t0os @t0os

User

Send message
UFO landed and left these words here
IMHO большинство браузеров сейчас поддерживает WebP и с картинками теперь намного меньше возьни. Грузим как есть, исходник прогоняем через jpegoptim без потери качества (будем отдавать тем, кто не поддерживает webp), а для всех остальных делаем webp копию через cwep/gm или convert (у себя на серваке написал скрипт, который прогоняет всеми тремя с одинаковыми настройками качества и выбирает минимальный).

Конфиг для nginx:

map $http_accept $webp_extension {
    default "";
    "~*webp" ".webp";
}

location /images {
  #pagespeed off;
  #pagespeed unplugged;
  location ~* ^/images/.+\.(png|jpe?g)$ {
    expires max;
    add_header Vary "Accept-Encoding";
    add_header Cache-Control "public, no-transform";
    try_files $uri$webp_extension $uri =404;
  }
}
>Пожалуй, самая необычная головоломка на Google Play
Играл в MechBox, и хотя игра довольно качественная и интересная, но нельзя её назвать самой необычной. «There is no game» (да, именно так называется игра) гораздо более необычная. Ещё «That Level Again» очень необычная. IMHO.
Сейчас A+ тайтлов на пингвине более чем достаточно. Взять хотя бы Civilization V и Beyond Earth, две последних части Borderlands, GRID Autosport, Talos Principle, Dreamfall Chapters и так далее. И это уже не говоря о тайтлах самой Valve (все части HL, TF, L4D, DotA2, etc) куче различной индюшатины, вроде Kerbal Space Program, This War of Mine, Papers Please, Don't Starve, Shadowrun, и портах старой классики, вроде Star Wars Knights of the Old Republic.

В общем, играть есть во что, поверьте.
По поводу автоваккуума, посмотрите презентации Ильи Космодемьянского, он на последнем PgDay как раз про это рассказывал
http://pgday.ru/ru/papers/31 Так же много интересного есть в видео записях того же летного PgDay 2015. p.s надеюсь организаторы мне не сломают руку за ссылку.
Подскажите, верно ли я понимаю, что у постгреса или какого-то его расширения есть функциональность, которая позволяет выбрать по некоторому условию данных из таблицы, которая «размазана» по разным узлам?
Вот пример моего конфига с которым ssllabs.com дает A+
listen                      443 ssl spdy;
ssl                         on;
ssl_protocols               TLSv1.2 TLSv1.1 TLSv1;
ssl_session_cache           shared:SSL:20m;
ssl_session_timeout         10m;
ssl_ciphers                 'EECDH+ECDSA+AESGCM:AES128+EECDH:AES128+EDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA:!ADH';
ssl_prefer_server_ciphers   on;

resolver                    8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout            10s;
add_header                  X-Frame-Options             "DENY";
add_header                  X-Content-Type-Options      "nosniff";
add_header                  Strict-Transport-Security   "max-age=31536000";
add_header                  Public-Key-Pins 'pin-sha256="[SOME_BASE64]"; max-age=5184000;';  #[SOME_BASE64] надо выставлять свое, гуглить как считать Public-Key-Pins
ssl_stapling            on;
ssl_trusted_certificate /etc/nginx/ssl/[SITE]/trustchain.pem;
ssl_certificate         /etc/nginx/ssl/[SITE]/server.crt;
ssl_certificate_key     /etc/nginx/ssl/[SITE]/server.key;
ssl_dhparam             /etc/nginx/ssl/[SITE]/dh.pem;        #openssl dhparam 2048 -out dh.pem
Мне помогла разобраться с основами книга Электроника для начинающих Чарльза Платта. В начале описываются самые основы, в конце уже разбирается программирование микроконтроллеров. Очень доступно, упор на практику, но теория тоже кратко излагается. В качества приятного дополнения, к книге можно купить готовые наборы, чтобы не бегать по магазинам.
То есть вы каждый раз в каждом запросе переводите дату и время из временной зоны сервера во временную зону пользователя?

Это лучше чем вариант с хранением даты в TIMESTAMP и одном дополнительном запросе (set @@session.time_zone = '+03:00';) на сессию?
Создайте 2 индекса.
Один для поиска точных соответсвий типа "гитара fender" (в конфиге enable_star = 1),
второй для поиска всех совпадений типа "гитары", "гитарой" ... ;-)
Затем проставте веса для каждого индекса.
Пример для пхп
$cl->SetMatchMode(SPH_MATCH_EXTENDED);
$indexes = array('индекс_с_точным_сооответсвием'=> 10, 'индекс_для_всех_совпадений'=> 1);
$cl->SetIndexWeights($indexes);
$index = implode(', ', array_keys($indexes));

Врезультате все записи с точным соответсвием(Weight будет больше) всплывут наверх.

В мане еще написано _begin, тоже можно попробовать.
UFO landed and left these words here
Советую varnish заменить на squid (последний рвёт предпоследнего как тузик грелку), а apache/mod_php на php-fpm, кстати в случае последнего можно на nginx включать fastcgi-кэширование.

А вот сюда:
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/pathto/drupal613;
access_log /home/httpd-logs/mysite.com.access.log;
error_page 404 = @fallback;
}

надо добавить что-нибудь вроде expires max; чтобы не раздавать закешированные у клиента картинки, а отдавать HTTP 301, да и access_log не особо нужен статике + полезно html/xml/js/css etc гзиппить nginx'ом, а не php (как происходит при выставлении соотв. галочек в друпале).

gzip on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types text/plain text/html text/xml application/xml application/x-javascript text/javascript text/css text/json;
gzip_disable «msie6»;
gzip_proxied any;

сдал вчера. вопросы показались гораздо более простыми, чем мок-тест от php|architects.

суть подготовки

1. надо несколько раз поставить и настроить php (в различных вариантах — apache + mod_php, apache + cgi, nginx + php-fpm), это заставит хотя бы пару раз заглянуть в php.ini, поняв, что и за что там отвечает;

2. в качестве обертки для БД — использовать каждый день PDO с различными драйверами под него (никаких PEAR DB или сторонних);

3. написать пару веб-сервисов (REST, XML-RPC, SOAP), применив различные шаблоны проектирования (Singleton/Registry, Builder/Factory, Adapter/Strategy, Proxy/ActiveRecord, Command/ChainOfResponsibility) — сервис погоды, случайных фраз или цитат известных людей, вариантов множество, выбирать вам. Заодно разберетесь, что есть такое валидный XML, и почему важен UTF-8 encode entities (привет w3c.org);

4. поковырять любой современный CMF (ZF, Symphony, CodeIgniter), чтобы просмотреть что такое MVC, __autoload, SPL, PPP (public, protected, private), abstract, final, понять как грамотно использовать различные предустановленные константы вроде __FILE__, __CLASS__ и функции вроде call_user_func(), func_num_args(), func_get_args();

5. найти на milw0rm'e любой бажный движок и внимательно просмотреть все патчи, разобравшись, чем грозит SQL Injection, XSS, CSRF и RFI, на php.net прочесть про magic_quotes, ===, basename(), htmlentities (с пониманием разницы между ним и htmspecialchars), strip_tags, mysql_real_escape (с разницей от mysql_escape) и hash. погуглить немного prepared statements, написать свою функцию экранирования, понять, где нужно включать allow_url_fopen, чем полезна open_basedir и как ее можно обойти, не пропустить filter_var

6. сесть и переписать свой тысячный твиттер с приобретенными знаниями о безопасности, поигравшись в запросах c EXPLAIN и EXPLAIN ANALYZE, созданием правильных индексов и применения нормализации (и почему на нагруженных проектах про нее надо забывать)

7. развернуть для своих игрищ линух (пойдет ubuntu 8.04) — для виндузятников в VMWARE. разобраться с rwx, chmod и umask. узнать про tempnam.
там же доставить xdebug через pecl, memcached и php-apc через aptitude. понять весь масштаб трагедии еще недописанного твиттера, добавить туда $mc->set('user_31337_friends', $friends, 0, 900); $friends = $mc->get('user_31337_friends'), узнать о race conditions, обойти его с помощью ключа с ttl, включить APC и увидеть прирост скорости

8. найти книжку про оптимизацию css и js, выставление грамотных header с cache-control'ом. понять про че она)

9. написать мне, я допишу квест… а пока иду спать.
-site:ciao.* -site:pixmania -cheap -buy -compare -deals -shopping -site:nextag -site:pricerunner -voucher -shop -grab
и еще хрен знает сколько таких минусов, особенно если продукт не особо раскрученый.

Information

Rating
Does not participate
Location
Россия
Registered
Activity