Как стать автором
Обновить

Комментарии 205

//… и добавляем в memcache, с временем жизни в 2 часа.
отличный пример неверного комментария и магических констант :)
Это опечатка :)
Спасибо, исправил.
магическая константа никуда не делась =)
НЛО прилетело и опубликовало эту надпись здесь
А вот это мы сейчас и проверяем :)
НЛО прилетело и опубликовало эту надпись здесь
На java всё так же, только вместо apache — tomcat или jetty. А иногда не вместо, а вместе.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
хм, а если генерировать index.html по событию(триггеру?) обновления базы данных.
Или nginx не перепроверяет обновление статики?
Проверяет, почему нет.
Мого діда дядя нагрузку держит лучше, а томкат — только в ваших мечтах.
И Вебсфера.
На хабре не слышали про WAS, JEE Container от IBM?
На главной странице вы получили классическую гонку. Раз в полчаса кэш будет чиститься и все пришедшие клиенты полезут в базу. При большом числе клиентов может случиться упс.
Вообще в случае очень посещаемых главных разумно их генерировать по крону на стороне сервера в обычную статику .html
И крон не нужен — генерировать статические страницы при добавлении цитат.
В базу полезет только первый. Остальные — в мемкеш.

Теоретически, при очень большой посещаемости может произойти ситуация, при которой в базу пойдут все, кто успеет сделать запрос МЕЖДУ тем как произойдет выборка из базы и тем, что она будет вставлена в memcache. Даже при тысяче запросов в секунду, врядли это будет больше десятка человек.
Я как раз и говорю про ту ситуацию, которую вы считаете теоретической. Конечно, если на сайт будет один запрос в минуту, то всё будет в порядке. Но статья ведь про хабраэффект?

Возьмите какую-нибудь утилитку для нагрузочного тестирования, заставьте её делать 1000 запросов в секунду на главную, сбросьте кэш и посмотрите, что получится.

Можете ещё вот это почитать, там есть варианты решения проблемы.
Справа куча иконок «поделиться» — от них рябит в глазах. Неужели нельзя сделать просто надпись «поделиться» и при наведении появляется див со всеми иконками? Можно через position absolute или просто рядом.

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

Ничего личного, удачи в развитии.
Вы правы, сделали получше шеринг.

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

Шортики — это ни в коем случае не клон башорга или какого-нибудь рейтинга статусов. Шортики — это место сбора хороших коротких шуток, не цитат, не статусов и не историй. Мне кажется, это интересный формат.

Спасибо за пожелание! :)
Еще по трафу и шарингу. Надо сделать авторизацию через популярные сети (фб, вк, г+) и при клике мне нравится чел автоматом шарит понравившийся шортик туда откуда вошел. В итоге к вам придет траф с его друзей.
Собственно «поделиться» равносильно «нравится», вот я к чему.
А как же сети Twitter и Мой Мир Mail.ru? Первая должна быть в силу схожести формата, вторая из-за любви ее пользователей к комментированию статусов
Поставите «Нравится» от Mail.ru и трафик, аналогичный Хабраэффекту вам обеспечен!
Это само собой подразумевалось. Или вы на самом деле думаете, что я буду указывать все популярные социальные сети? :)
Просто был указан г+, который все еще не так популярен, как Твиттер, которого не было, и я подумал, что это не случайно.
Мб надпись «Нравится!» над шуткой сделать в виде сердечка? А то сразу не заметишь…
Ну а так, Шортики понравились :) Первая запись на странице расположила меня к Вашему сервису сразу: «Израильский SQL-сервер отвечает запросом на запрос.» :D
Шортики — это ни в коем случае не клон башорга или какого-нибудь рейтинга статусов. Шортики — это место сбора хороших коротких шуток, не цитат, не статусов и не историй. Мне кажется, это интересный формат.

Хорошая штука.

«Нуждики» напомнило, если кто помнит )
Опера 11.50, win7. При клике на ссылку «Что такое шортик?», ничего не происходит.
По клику вроде и не должно, там текст появляется при наведении мышой. В Опере не появляется?
Всплывающей подсказкой? Ну вы блин даете, если что-то выглядит как ссылка и с первого взгляда ведет себя как ссылка, то оно и должно быть ссылкой. А раз так, сделайте хотя бы курсор другой, например стрелку со знаком вопроса.
Кстати, ИМХО, слишком много линий у вас на странице, тяжело читать. А так спасибо, сижу смеюсь;)
В таком случае нет резона делать ссылку на # — достаточно просто атрибута title внутри, например, того же span.
Тогда по традиции эта ссылка должна быть подчеркнута пунктирной линией.
Так и сделаем чуть позже.
Сами-знаете-кто рекомендует так.
Мне кажется dotted здесь будет более уместен.
Dashed — это как правило, действие по нажатию без перезагрузки, а dotted — действие по наведению (например, всплывающая подсказка).
Автор уже ответил на этот вопрос в комментариях.
Даже bash.org смешнее. На сайте автора поста практически все «шутки» достойны максимум «Аншлага» или страниц календаря с Петросяном.
НЛО прилетело и опубликовало эту надпись здесь
А просто добавить proxy_cache в nginx чем не вариант?
С этим не все так просто, особенно на странице с рейтингом или случайными шортиками.

Я решил что это тема для отдельной подробной статьи и оставил все по-простому. На самом деле у нас кеширование чуть посложнее организовано.
Ну так для индекса самое то
А мне нравится и идея и реализация! Обновлять часто будете?
А как же. Ежедневно :)

Спасибо за отзыв!
Картинка к посту просто требует этого:
image
Сорри, картинку делали второпях. Справедливость восстановлена!
Да ну, за что вы извиняетесь. Хороший повод улыбнуться дали :)
Вы зря кешируете на уровне запросов. Если можно закешировать всю страницу целиком, то так и надо делать (А если нельзя — надо постараться, чтобы было можно).
Вы правы, но учитывая что я совсем новичок в программировании и работал над сайтом только пару вечеров — это было бы чересчур :)
За такие советы вас надо нещадно минусовать.
То есть вы считаете, что full page cache на прокси — это не самый простой и эффективный способ кеширования? Почему?
Потому, что надо не только кэшировать, но и инвалидировать кэш.

Для такого проекта как «Шортики» делать это эффективнее когда страница собирается из разных источников на сборщике, пусть даже этот сборщик — PHP.

А для проектов, где страница разная для каждого пользователя, постоянная динамическая сборка — единственный возможный метод, если вы не хотите получить эн факториал файлов на диске.

Кроме того, в ряде случаев это и работает быстрее, так как тратится только CPU, а не происходит seek по диску в поисках файла и его отдаче.

О сборщике на основе nginx читать тут: habrahabr.ru/blogs/nginx/119582/
Вы шутите? У проекта шортики полностью статическая главная страница (для всех). На ней один запрос, который кешируется по времени. Пейдж кэш не всегда можно использовать. Но в конкретном случае и в конкретных условиях это очень хороший вариант…

P.S.
Кстати, о конкретной технологии кеша, и как его хранить (почему сразу файлы?) я ничего не говорил…

Свободен. Qui potest capere, capiat.
Подскажите, а зачем в этой связке вообще Apache? Не будет ли оптимальнее nginx+php_fpm?
простите если глупость спрашиваю, но
Добавляем сжатие некоторых типов данных (экономит много трафика):
для чего эти строки сжатия статики если статику отдает nginx?
Сжатие идет по типу mime, а тип может устанавливаться и динамически. Выводимые из apache данные ведь вполне-таки text/html =)
Именно :)
Только вот у меня есть подозрение, что этот фильтр работает только на статику, и не работает на вывод всяких mod_php.
чем то смахивает на зарубежный проект reddit.
Можно узнать — чем? :)
мне так показалось, без каких либо причит. это не утверждение.
Автор, ну ведь вся статья же свелась к использованию memcache_set() / memcache_get() для защиты от Хабраэффекта. Все остальные вещи разжеваны в куче статей. Ну не стыдно?

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

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

Позже мы сделаем баннеры менее заметными.
> но мы не успели доделать новый вид сайта и решили запускаться как есть.

А куда торопились? Или нужно было по любому запустить 9 августа.
Просто у меня сегодня выходной :)
В утиль адсенс, «Московские индивидуалки» — вот реальный заработок сайтам развлекательной тематики, куда не зайду — везде они. Видать очень выгодно размещать такие баннеры.
Проект не ставит своей целью побольше заработать. Так что перебьемся, наверное, без индивидуалок :)
Только блэкджек?=)
Только преферанс. И никаких куртизанок :)
Не надо оправдываться) Думаю тут все понятливые. Просто не надо писать «не коммерческий», если сайт является коммерческим. «Копейки» это возможно пока, но сайт направлен именно на извлечение прибыли (будет посещаемость — будет прибыль). Но меня это ни чуть не задевает. Чтобы его поддерживать нужно тратить время, и деньги — нормальный стимул. Удачи.
Я думаю, что некоммерческий проект — это проект у которого основная цель не извлечение прибыли. При этом получение прибыли не делает проект коммерческим.
Более того, именно это ЕМНИП записано в ГК РФ. Некоммерческая организация имеет право получать прибыль, но обязана пускать ее на цели, указанные в ее уставе
Принял P.S. за заминусованный комментарий и пытался нанести на него мышкой (:
Разумеется, свежие шортики будут появляться на сайте с задержкой в полчаса, но это не страшно.

Решается очень просто — перезаписью кэша (или его сбросом, что проще, но хуже) при добавлении шортиков.
Именно так и сделали в итоге :)
НЛО прилетело и опубликовало эту надпись здесь
Тоже позависал с полчаса на чтении, добавил в избранное! ;-)
Добавил Шортик, снова открылась та же форма, после сабмита, но с очищенными полями. Не понятно, добавился ли мой шортик или нет. Думаю было бы не плохо уведомлять пользователя, что все ок, шортик добавился!
Спасибо, починили :)
Экспорт цитат в популярные форматы (txt,pdf, etc.) — и будет вполне неплохая книжечка для заграничных поездок, к примеру. Мне лично всегда этого не хватало.
Взяли фичерреквест, думаем.
Угу, а лучше сразу в fortune на сервер.
Интересные шутки, но вам бы дизайн поменять, а то сильно уныло, сайт вроде юмористический, но в то же время серый какой-то. Удачи в развитии!
Уже работаем над новым видом сайта. Спасибо!
nginx + uWSGI наше всё
Особенно для php
А это уже другой вопрос :)
Какая конфигурация сервера, если не секрет?
Обычный EQ6 от хецнера. Но Шортики — не единственный сайт на сервере.
очень интересно стоил ли 1 запрос подобной оптимизации.
пробовали отключать мемкеш?
сколько запросов в пике?
Мемкеш отключать пробовали — нагрузка ощутимо вырастает.

В пике было около 100 запросов/сек.
А я не понял, зачем на апаче keep-alive. Nginx ведь всё равно запросы к бэкенду делает без keep-alive.
Изначально тестинг шел самого апача напрямую, дабы выжать из него максимум. А уже после этого поставили нгинкс перед ним. Все верно, кипалайв надо убрать.
Судя по статистике liveinternet.ru ресурс получил порядка 15000 просмотров за 2 часа (это около 2-х просмотров в секунду) с такой нагрузкой легко справится Apache и MySQL и без Ваших ухишрений.

P.S. шутки попадаются действительно смешные.
Но с ухищрениями серверу будет дышать легче. Так ведь? :-)
Вы можете утверждать, что в какую-то секунду не было, например, 100 запросов?
Нет. Но я вижу, что сегодня нагрузка упала в 10 раз.
Как я угадал насчёт сотни :)
А сегодня (через день) нагрузка упала уже в 25 раз.
Так что мало оптимизировать проект нужно еще обеспечить стабильную посещаемость.
Это уже не технический вопрос. Но если бы сайт не выдержал хабраэффекта, то через день нагрузка может упала бы меньше относительно, но и абсолютные числа были бы меньшие.
Был пик на 100 запросов/сек. Кроме того, мы рассчитывали не «чтобы только на хабраэффект хватило», а с большим запасом прочности. По нашим тестам выдержал 2,000 запросов/сек.
НЛО прилетело и опубликовало эту надпись здесь
Изначально тестинг шел самого апача напрямую, дабы выжать из него максимум. А уже после этого поставили нгинкс перед ним.

Все верно, кипалайв надо убрать.
Дело не в хаброэффекте :) Просто пока что у вас контент хороший, правда.
Спасибо :)
С оптимизацией справились неплохо, а вот за это подавление ошибок:

@mysql_select_db("ShoDB");

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

Ещё мог бы посоветовать обратить внимание на стиль кодирования (возмите тот же Zend за основу), наблюдаются явные проблемы с именованием, табуляцией, запятыми, будущие Ваши команды оценят умение писать хороший, стилизованный код. В общем, успехов Вам, спасибо за интересную историю, Хабр торт! 8)
Вы забываете, что я ниразу не программист и не планирую быть таковым. Так что мне можно :)

А насчет нейминга — код упрощен и все переменные и названия баз изменены реплейсом, на самом деле там нормальный нейминг :)

Спасибо за отзыв :)
а зачем там апач вообще?
php-fpm ресурсов жрет меньше и нету мутатнит с .htaccess
Жуть >_< просто невозможно читать на вашем сайте, оформление аля «рамки рамковые» да еще с пунктирными бордюрами… все серо сливается и рябит перед глазами, так нельзя делать, очень сложно привыкнуть, приходится напрягаться чтобы вычитать что-то=\\

Остается надеяться что завтра кто-нибудь придумает бугагашечки с комфортным оформлением оных)
Уже работаем над новым внешним видом. Спасибо за отзыв.
Автору Bogr под Android, если он видит это сообщение — пусть добавит в свое детище этот сайт.
✔ В новом обновлении добавились Shortiki
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Сделайте, что бы к записи вк добавлялась ссылка на шортик.
Хмм… Но ведь кнопка «share|Поделиться» так и работает. Под записью на стене появляется ссылка на шортик.
Я имею ввиду не кнопку «Поделится» для контакта, а трансляцию потока на ВКонтакте пользователя themengzor. Обращение к нему было ) Просто запись в контатке с шортиком не содержит ссылки на него.
НЛО прилетело и опубликовало эту надпись здесь
Знакомо, делал нечто подобное про анекдоты: anekdotme.ru (на правах рекламы)
У вас если быстро кликнуть по «Смешно» или «Не смешно» то голос засчитывается дважды.
Жаль, что вы не провели тестирование скорости работы сайта и создаваемой нагрузки на сервер до и после оптимизации. Сервисов, которые позволяют это сделать полно.
Мы проводили, картинок и прочего не приведу, но навскидку — голый апач на 1000 одновременных реквестах отдавал сайт в среднем более чем за 5 секунд, после чего вообще перестал отдавать. После оптимизиции — 1000 конкаррентов отдает до секунды на реквест, не падает.
Ясно, спасибо. Вот это уже понятнее.
апач настраиваете как будто он фронт-энд. За nginx должны быть несколько другие резоны. И keepAlive и сжатие и кэширование.
Сжатие по mime отдайте nginx и deflate не при делах — все кто его поддерживает поддерживает и gzip. B nginx корректнее отрабатывает проблемные агенты со сжатием.
Кэширование — тоже лучше отдать nginx, тем более что скрипты пишите сами. Динамику запрашивайте ajax-ом или SSI на крайний случай. Тот же memcache поставить в кэширование nginx и будет все намного лучше.

В общем технически работа на троечку. А шортики ваши читаны уже раз на десятый. Хотите быть — будьте оригинальными.
Снимите шортики. То есть скриншот бы непомешал ;)
Лучше так:

server {
    server_name www.shortiki.com;
    rewrite ...
}

server {
    server_name static.shortiki.com;
    root ПУТЬ_К_КАРТИНКАМ_И_CSS;
}

server {
    server_name shortiki.com;
    proxy_pass   http://127.0.0.1:8081;
}
на кой чёрт немногочисленной статике отдельный субдомен? модно? %)
Сравнение строк на равенство намного быстрее регулярок (что как бы не удивляет :) ). Если память не изменяет, то сам Игорь Сысоев рекомендовал о возможности обходиться без регулярок.
Это лишний днс запрос для клиента. Сайт будет открываться чуть дольше.
Если много статики на страницу — открываться будет даже быстрее.
Во-первых, есть ограничение браузеров на параллельную загрузку. Во-вторых, отдельным субдоменом/доменом мы избавимся от cookies, которых может быть много.
Ну и вообще хорошая практика держать статику отдельно — так ею легче управлять и можно легко и быстро вынести на какой-нибудь CDN, в случае необходимости.
Статика и так отделена в /static.
Это не «отдельно». Прочитайте мой комментарий ещё раз. Погуглите про параллельную загрузку и cookie-less домены.
Подтяните, пожалуйста, стиль страницы к логотипу. И забейте на башорговые штампы — вы делаете нечто отличающееся от классического башорга. Ну и визуальный шум в виде пунктирных бордеров лучше убрать. Достаточно выделения серым. И черный сплошной бордер можно сделать светло-серым или вообще убрать — блок будет просматриваться и так.

Типа того: clip2net.com/s/16pqr
НЛО прилетело и опубликовало эту надпись здесь
Про способ запуска PHP скриптов как-то ни слова. Хотя можно предположить, что всё ограничилось традиционным mod_php.

Prefork отличается стабильностью, однако потребляет больше памяти и работает медленнее чем worker.

А что за мифическая стабильность? Стоит упомянуть про связь апачевских MPM с mod_php.
Стабильность относительно воркера.
В целом неплохо, дело за рихтовкой мелочей (например, приведенных выше). Время покажет, оторвётся ли публика от баша и заглянет к Вам. Успехов )
Мы не хотим отрывать публику от баша, у нас другая публика, хотя местами, конечно пересекается.
Обнаружил глюк — при двойном щелчке на «Нравится!» рейтинг увеличивается на 2, хотя как я понял, от каждого человека только по 1 голосу.
Принято, исправляем.
Шортики при добавлении на сайт проходят премодерацию? Я просто тут заметил 2 идентичные записи 278 и 276 с разницей по времени минута. Мб в спешке добавили. О таких казусах сообщать на мыло внизу сайта надо?
И еще вот, 74 запись fgfgfgfgfgfgfg2 18 человек признали смешной )
Видимо в спешке :). Нет, не надо — я сейчас прикручиваю проверку уникальности.
Чем меня всегда отпугивает башорг, так наличием большого количества бордеров. Так же как и forumBB. Прямо не знаю, что за таблицо-мания.

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

Тоже самое в формате шортика:

− Дизайн легко угробить, поместив контент в таблицу в таблицу в таблицу в таблицу.
— Надо поместить в див в див в див в див в спан в спан в спан в спан и дизайн заживёт новой жизнью? :)
Я пишу не про метод верстки (Шортики, кстати, сверстаны дивами), а про оформление. На мой взгляд дизайн действительно заживет новой жизнью, если резких бордеров станет меньше.
Пофиксили внешний вид :)
Я бы добавил, что еще бы правильнее было вообще убрать Apache, поставить php-fpm как FastCGI для NGINX, так же поставить eAccelerator.
Дело вкуса, но я предпочитаю APC, к тому же он вроде как будет стандартом в то ли в 5.4, то ли в 6.0.
+1 и, вроде, обещали в 6.0.

а если еще apc.stat = 0 мммммм
и заюзать apc_store вместо memcached
Не на всех задачах он равноценная замена, но в данном случае почему бы нет. Зачем множить сущности. Не в обиду автору, но если он говорит, что не разработсик, то, похоже, использовал memcache услышав (или нагуглив) о нём где-то.
Было бы неплохо выделать кнопку «Нравится» после нажатия, тыкал на нее несколько раз, не мог понять, учтен мой голос или нет.
*выделять, конечно же.
На сколько подскочила посещаемость сайта после публикации сего топика?
Использование @ перед функциями, die() на бою, работа через библиотеку mysql, неэкранированные переменные в запросе, да и просто мусор в коде:

$quotesonpage = '';

....

$quotesonpage = array();


И все это в очень маленьком кусочке кода. А еще удивляемся, почему так предвзято относятся к php-кодерам.

я совсем новичок в программировании и работал над сайтом только пару вечеров

Во всём виноват низкий порог вхождения.
Еще вот заметил:
$quotesonpage = array_reverse($quotesonpage);
что по поводу базы? как устроено голосование и его хранение? при каждом плюсе/минусе базу апдейте? что с оптимизацией базы и запросов?
какая версия php стоит? обновляйтесь до последней, там постоянно улучшают работу с памятью. переходите на более современные расширения работы с базой (mysqli)
про хардверно-софтверную состовляющую подготовились неплохо.
а смешных шуток для хабраэффектатм подготовить не могли?
Подготовили аж 400 штук :)
Только ограничение нужно было делать 140 символов, чтобы в твиттер удобнее было кидать )
Не получится. Ведь добавляется еще и хештег и ссылка, без которых нет особого смысла делать трансляцию в твиттер. И тогда получается что сам шортик надо уже до 120 сокращать. А это мало :)
Если быстро много раз подряд нажать на кнопку НРАВИТСЯ, то прибавится не 1, а сразу несколько голосов (ну правильно: пока в базу данных попадет строчка {мой IP, id шортика за который я уже проголосовал}), пройдет не одна возможность опять послать запрос на сервер. Может быть временно программно на стороне клиента скрывать кнопку «Нравится», скажем, на N секунд?
>> свежие шортики будут появляться на сайте с задержкой в полчаса, но это не страшно

Просто очищайте мемкэш для главной при вставке и обновлении.

Посмотрите решение в LiveStreet: за кэширование и взаимодействие с маппером БД отвечает модуль. При вставке и обновлении он чистит зависимые кэши или удаляет по тэгам. При чтении сначала смотрит кэш. Например, 232 строка.

Надеюсь код в Вашем проекте не настолько низкоуровневый как в примерах? :)
Поздравляю, сайт работает стабильно, чего не скажешь о гугловском рекламном сервере: «Соединение с сервером googleads.g.doubleclick.net сбой (Сервер не отвечает.) — это вместо нижнего баннера
НЛО прилетело и опубликовало эту надпись здесь
Сайт — просто готовый монолог «А знаете ли вы, что?..» для Задорнова.
Вы нас раскусили :(
Зашел на главную, первый шортик (аж мутит от этого названия, произнося его, кажется, что ты попал в какую-то секту)
Иван Иванович Иванов никогда не заполняет никакие бланки. Он просто тупо крадёт образец...

Очень смешно!

Но дальше лучше:
Пафосные лоси не лижут соль без текилы.

Пафосные лоси ^__^ — о-о-о-ок!

Продам хамелеона синего. Нет, красного. Нет, зеленого. Блин. Круто. Нет, не продам.

Автор, скажи честно, ты сам придумываешь эти шортики шутки?
Интересно, а как происходит отбор шуток? Вручную, что ли?

Пример с шортиков:
www: Вся история женской моды — это история борьбы климата, морали и гигиены с желанием женщины ходить голой.

Оригинал с башорга:
www: Вся история женской моды — это история борьбы климата, морали и гигиены с желанием женщины ходить голой.
xxx: да и пусть бы голыми ходили, жалко что ли
yyy: а если твоя девушка будет ходить по улицам голой, как тебе это понравится?
zzz: Ну так пусть свободные ходят голыми, а занятые — одетыми. Сразу избавит мир от многих проблем

Вручную, конечно. В основном, шутки присылают пользователи.
Было бы здорово, если бы вы сделали динамический отбор шуток с настраиваимым порогом оценок — скажем, все шутки с оценкой больше 5000.
отлично, теперь (в отличие от башорга) в гуглридере не надо кликать на развернуть, один клик в сутки — «отметить как прочитанное» (это я про длину сообщений).
Название «шортики» действительно не самое удачное. «Шорты» и то звучит лучше, но все равно непривычно.
Но смешные цитаты есть. Удачи в дальнейшем развитии!
Хороший сайт получился, залип на нём, спасибо)
Каменты не читал, приделайте кнопочку для контактика, чтоб цитаты воровать.
Там справа у каждого шортика есть иконки и вконтакты присутствует.
Одним кликом воруешь шортик и распространяешь бренд ;-)
А, правда, они такие ненавязчивые что даже не заметил, пока не начал искать, за это отдельное уважение)
Первая кнопочка в ряду соцсетей :)
А вообще, прочитав заголовок, ожидал увидеть что-то подобное в дизайне главной страницы:
жестко ограниченная 255 символами

Почему не 140? :)
Дайте угадаю, VARCHAR в 4-ом mysql имеет длину 0..255? :)
В 5-м для хранения длины VARCHAR нужно 2 байта :)
Я знаю. Я же написал про 4-ый, так как если автор руководствовался старой статьей для начинающих, там наверняка был разобран пример для php4.* и mysql4.*
«Разумеется, свежие шортики будут появляться на сайте с задержкой в полчаса, но это не страшн»

Проблема решается теггированием. Хоть memcached и не поддерживает теггирование средствами своего api, реализовать собственный класс, наследующий memcached с методами t_set, t_get не займет много времени.

Хорошая статья по теме: www.smira.ru/2008/10/29/web-caching-memcached-5/
ну вообще, для одной главной страницы можно тупо сделаь кеш «бесконеным» по времени, и обновлять его при добавлении чего-то нового средствами «движка». И только при его кончине обновлять при запросе клиента
>Выключаем ExtendedStatus (добавляет 1 или 2 системных вызова на каждый реквест):

Экономия на спичках. Не нужно.

>Timeout 10

Нет смысла для Apache за nginx. Вообще, все таймауты стоит держать в одном месте. Держите их в nginx.

>KeepAlive On KeepAliveTimeout 5

Нет смысла. А в будущих версиях nginx это вам без проблем положит бэкэнд.

>Добавляем мемкеш

Тут вообще листовая жесть. Во-первых, будет гонка базы при протухании кэша. Во-вторых, кэш надо уметь инвалидировать. Вы это делать не умеете, потому у вас задержки.
У меня гугловская кнопка +1 очень затормаживает загрузку страницы. Не могли бы вы эти кнопки убрать в js, уже после загрузки страницы?
Спасибо. Починили:)
Спасибо, шутки попадаются классные. А чем отличаются списки «лучшие» и «по рейтингу»?
«Лучшие» — топ20, а «по рейтингу» — сортировка всех шортиков по рейтингу, не?
Починили, спасибо :)
Да, еще было бы классно сделать функцию «показать, начиная с даты» — отсортированные по рейтингу шутки, начиная с определенной даты (чтобы одно и то же два раза не читать). RSS-ридер не предлагать — все подряд читать не хочется, а вот раз в недельку заходить и читать лучшее было бы удобно.
а нельзя ли сделать трансляцию в twitter? настроить twitterfeed.com/ 5 минут займет
Сделали. Еще и во вконтакик и в фейсбук.
Защита от накрутки голосований через куки — это совсем несерьезно.
1) Их легко удалить
2) Суммарный объем кук ограничен — значит через какое-то кол-во голосований они сами начнут исчезать. Особенно актуально потому что вы используете длинные имена кук
Понятное дело. Однако на сайте написанном за пару вечеров другого быть и не может :)

Мы пишем сейчас защиту от накрутки.
НЛО прилетело и опубликовало эту надпись здесь
За сайтом вообще кто-нибудь следит? Откуда там поток несвежих, неактуальных шуток?
Например, вот эта шутка shortiki.com/shortik.php?shortik=4893, датированная 25 октября была актуальна 12 марта, когда вск и пнд были рабочими днями. После 12 марта уже никто и не знает в чем смысл этого шортика.
Чем думал модератор, когда апрувил?
Я продал сайт около полугода назад, так что насчет модерация уже давно не моя.
Спасибо, что сообщили. Пойду отпишусь.
Вам желаю придумать ещё что-нибудь интересненькое.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории