Как я построил свой ЯП

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
Страницы: (3) [1] 2 3   К последнему непрочитанному [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
imant
30.01.2015 - 23:22
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
55
Я являюсь давним читателем ЯПа, большое количество пользователей и адекватная политика администрации гарантируют отличное качество контента. Но есть и ложка дёгтя: на мой профессиональный взгляд, дизайн и техническая часть сайта вызывают вопросы.

На днях я решил взять ситуацию в свои руки и реализовать ЯП своей мечты. Вот что получилось: php-скрипт на моём сервере забирает с главной ЯП темы, если их ещё нет в базе, то парсит только полезный контент(текст, рейтинг, дата публикации и т.д.) и сохраняет всё это в БД.
id - это номер записи в моей базе
yid - это id топика на ЯПе
rat - это рейтинг топика
title - заголовок
pre - превью топика(то, что мы видим на главной)
date - дата публикации темы
time - дата добавления данной записи в мою базу
s - статус записи. 0 - запись не прочитана, 1 - прочитана, 2 - отложена в список "прочитать позже".

Как я построил свой ЯП
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
imant
30.01.2015 - 23:22
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
Дизайн? Он нам нужен как шахтёру стилист, просто добавляем пару-тройку css-стилей чтобы слезящиеся от вида страницы глаза не так сильно мешали чтению. Ширину страницы подгоняем под удобный просмотр на телефоне, также делаем ширину 100% для картинок, кубов и другого медиа-контента, переходы по внешним ссылкам у нас будут без редиректа, а "скрытый" текст не нужно выделять - он сразу виден. Кто вообще придумал такое "сокрытие" и, самое главное, нахрена? Получается примерно так:
Каждая запись обведена красной рамкой в 5 пикселей толщиной, Сверху выведено время публикации, потом жирным рейтинг, затем ссылка на тему на ЯП, её текст - это заголовок+описание темы.

Как я построил свой ЯП
 
[^]
imant
30.01.2015 - 23:23
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
За раз достаточно выводить 2 темы и 3 кнопки к каждой(все действия на странице происходят без её перезагрузки, т.е. с помощью AJAX):
"Читать" - при клике по этой кнопке скрипт на сервере заходит в соответствующую тему, просматривает несколько(сейчас выставлено 5) страниц комментариев, но передаёт мне только те, которые опубликовал автор и которые имеют "зелёный" рейтинг более 10 - нам же нет необходимости читать всякий шлак. Если в теме ещё остались комментарии, то внизу добавится кнопочка для их подгрузки также по 5 страниц за раз. Экономия времени, сил и трафика просто колоссальная!
Кнопка "Потом" откладывает чтение темы до следующей перезагрузки страницы, а "Прочитано" прячет тему навсегда(впрочем, в случае необходимости, можно в базе исправить соответствующее поле чтобы увидеть топик снова).
2 последних кнопки при клике удаляют со страницы соответствующую тему, её место наверху занимает вторая, а ниже неё подгружается следующая непрочитанная.
И так далее мы быстренько смотрим темы(для удобства, в хронологическом порядке - сначала идут те, которые были раньше опубликованы на главной), читаем подборку наиболее интересных каментов и в один клик также быстро переходим к следующему топику. Разумеется, всё это работает быстро ещё и потому что вёрстка на странице минимальна, нет рисунков-элементов дизайна и рекламы, не подгружаются тяжеленные скрипты и стили, реально на просмотр одной темы с каментами и без медиа уходят считанные килобайты в то время как аналогичные действия на yaplakal.com были бы связаны с загрузкой нескольких мегабайт, по сути, информационного мусора. Т.е. экономия по трафику выходит до нескольких порядков(!!!) или в 1000 и более раз: полезный контент достаточно часто составляет в районе 0.1% от веса страницы, а остальные 99.9% это дизайн, скрипты, реклама и другие абсолютно ненужные мне, как читателю, вещи.
Но помимо трафика эти мегабайты информации не могу не сказываться отрицательно на скорости работы с сайтом даже после их загрузки, моя же версия летает хоть на калькуляторе, так как за раз на экране выводится минимум элементов и по мере прогресса читателя ненужные элементы удаляются, а новые подгружаются.
Ну и плюс, конечно, элементарное удобство: не нужно искать до какой темы ты дочитал прошлый раз, сверху всегда самая старая непрочитанная, а новые подгружаются по мере прочтения, так что ни один байт ценной информации не будет пропущен!

Форматирование каментов в целом аналогично форматированию темы, только добавляется имя автора(с ссылкой на профиль), дата публикации прячет под собой ссылку на сообщение и от неё выводится порядковый номер сообщения в теме.

Как я построил свой ЯП
 
[^]
imant
30.01.2015 - 23:23
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
Однако, это ещё далеко не всё. Устройства на iOS не поддерживают flash и потому их пользователи не могут просматривать видео с ЯПфайлз. В качестве частичного решения данной проблемы, скрипт находит такие видео на странице, определяет их адрес на япфайлз, забирает оттуда название видео, урл для скачки и данные о продолжительности и размере файла. Но прокатывает это далеко не всегда из-за того что многие видео встраиваются не как видео, а как flash-элемент, для таких случаев определить адрес страницы ролика на ЯПфайлз по коду элемента не представляется возможным.
Долго думал как решить эту проблему, изначально скрипт искал нужное видео в последних добавленных на япфайлз, но это неэффективно и ненадёжно. Потом ещё оказалось что некоторые видео там вообще не выводятся, потому пришлось перейти на План Б: скрипт заходит под моим профилем на ЯП, добавляет нужное видео в Избранное на япфайлз(для этого не нужно знать URL видео, достаточно его id, который я достаю из адреса скриншота в видеоплеере), остаётся получить содержимое Избранного, выдернуть оттуда ссылку на нужное видео и удалить её из списка. Теперь при заходе с устройства без поддержки Flash я вижу скриншот по клику на который начинается скачивание ролика(или сразу его просмотр если файл .mp4, а не .flv). Да, ещё, скрипт добавляет информацию о файле(продолжительность и размер), а также ссылку для поиска по названию ролика на YouTube, ну так, на всякий случай=)

Ниже функции авторизации и махинаций с Избранным. ЯПфайлз проверяет чтобы заголовок при работе с Избранным соответствовал AJAX-запросу, потому пришлось добавить к нему "X-Requested-With: XMLHttpRequest" и из-за этого делать отдельную функцию для авторизации - подавляющее большинство сайтов таких проверок не делает и для них авторизация реализуется в одну строчку через специально разработанную мной функцию. В коде встречаются другие пользовательские функции, потому без подключения моей библиотеки работать они не будут, можете не пытаться=)

Как я построил свой ЯП
 
[^]
imant
30.01.2015 - 23:24
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
Если ты - настоящий кулхацкер, то должен был заметить на предыдущем скрине мой пароль и попытаться зайти с ним. И хотя после набора длиннющей строки вручную с картинки и кучи проверок/попыток тебя всё равно ждал бы розовый обломинго, ты, тем не менее, выигрываешь приз за внимательность=)

А мы едем дальше. Coub - это отдельный гемор. Кто придумал выкладывать их десятками на одной странице? Такую страницу без тормозов и глюков даже суперкомпьютер Tianhe-2 с 260 000 мощнейших 12-ядерных серверных процессоров Intel Xeon E5-2692v2 не сможет просматривать! Правда, он не сможет потому что сам Куб - это тот ещё тормоз и глюк, но рядовые пользователи не могут тупо из-за перегруженности страницы. Моё решение получилось простым и изящным: вместо каждого кубика мы выводим кнопочку по клике на которую он создаётся, а при повторном клике или открытии другого кубика уничтожается. Заодно фон блока с просмотренным кубом становится чёрным чтобы избежать путаницы. С таким подходом даже 1000 кубов на одной странице будут вполне под силу и для Tianhe-2 и для твоего китайфона на Андроиде. Наиболее нагляден в данном случае будет Coub с сиськами:

Как я построил свой ЯП
 
[^]
imant
30.01.2015 - 23:24
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
С gif мы поступаем аналогичным образом: точно также не вижу смысла ждать пока загрузятся десятки gif'ок на странице и будут потом ещё тупить, когда можно быстро грузить и просматривать их по одной. Заодно растягиваем gif на 100% ширины как и остальные картинки. Для примера, разумеется, возьмём скрин с говнецом:

Как я построил свой ЯП
 
[^]
imant
30.01.2015 - 23:24
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
На этом, пожалуй, всё. Осталось составить небольшой FAQ:
Q: Хочу также! Как получить доступ к твоей системе?
A: Никак, это только для моего личного пользования.
Q: Почему? Тебе жалко что ли?
A: Не жалко. Более того, я был бы счастлив запустить под это дело сайт, получать тонны халявного трафика и развесив рекламы рубить бабосы. Но делать этого не буду по той простой причине что я так же как и владельцы ЯПа зарабатываю со своих сайтов, а потому солидарен с ними и не собираюсь уводить их посетителей.
Q: Покажи свои сайты.
A: Не покажу, есть несколько причин тому. Например, чтобы мой пост не сочли спамом.
Q: Говно!
A: В каментах количество показной недалёкости начинает нарастать, так что мне придётся воздержаться от ответов в теме. Если у кого-то есть содержательные вопросы/комментарии - буду рад ответить в личке.

Спасибо всем, кто дочитал до конца.

Это сообщение отредактировал imant - 30.01.2015 - 23:54
 
[^]
zemeo
30.01.2015 - 23:25
6
Статус: Offline


Мастер спорта,подполковник Чингачгук

Регистрация: 25.07.12
Сообщений: 4011
Ща тебя тут построють. gigi.gif
 
[^]
СинийНос
30.01.2015 - 23:25
1
Статус: Offline


Ингибитор нагибатора

Регистрация: 7.02.13
Сообщений: 84
Я один захотел "pre" на картинке промотать вниз?
 
[^]
mosmartin
30.01.2015 - 23:26
2
Статус: Offline


Весельчак

Регистрация: 28.03.14
Сообщений: 100
Бля, ТС, а я так не могу.. А ты дерзай, а вдруг!.
 
[^]
ZhenaMuzha
30.01.2015 - 23:26
2
Статус: Offline


(◕‿◕)

Регистрация: 20.10.11
Сообщений: 631
Ишь чо удумал )))
 
[^]
wr250x
30.01.2015 - 23:26
0
Статус: Offline


Гость

Регистрация: 1.12.13
Сообщений: 0
Упс deg.gif

Это сообщение отредактировал wr250x - 30.01.2015 - 23:28
 
[^]
uralzp
30.01.2015 - 23:27
11
Статус: Offline


Ярила

Регистрация: 19.08.12
Сообщений: 2426
как то непонятно рядовому пользователю.Зачем улучшать то,что нормально работает?
 
[^]
ajaxru
30.01.2015 - 23:28
5
Статус: Offline


90159

Регистрация: 16.02.09
Сообщений: 25603
Цитата
т.е. с помощью AJAX):

бро,на здоровье! было не сложно biggrin.gif
 
[^]
ZhenaMuzha
30.01.2015 - 23:28
1
Статус: Offline


(◕‿◕)

Регистрация: 20.10.11
Сообщений: 631
Цитата (wr250x @ 30.01.2015 - 23:26)
Цитата (imant @ 30.01.2015 - 23:22)

Не ломать, об окончании сообщу.

Вы читать не умеете? dont.gif moderator.gif

Это ты походу не умеешь. закончил ведь.Все дождались
 
[^]
alpnikitos
30.01.2015 - 23:29
2
Статус: Offline


Балагур

Регистрация: 17.08.11
Сообщений: 820
Ещё один смертник....)))))))
Щаз модеры подождут, пока пост в "антизолото" улетит и потом закроют..........
 
[^]
zzzet
30.01.2015 - 23:30
1
Статус: Offline


пивной Фей

Регистрация: 15.12.06
Сообщений: 3637
Ржу хрипло,горло болит
Молодца ТС
 
[^]
imant
30.01.2015 - 23:30
5
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
Цитата
Ещё один смертник....)))))))
Щаз модеры подождут, пока пост в "антизолото" улетит и потом закроют..........

За что? Правила я читал, ничего не нарушено, а вы читали их хоть раз?
 
[^]
Bonemaster
30.01.2015 - 23:30
4
Статус: Offline


остеохондроз

Регистрация: 17.03.14
Сообщений: 1565
Цитата (uralzp @ 30.01.2015 - 23:27)
как то непонятно рядовому пользователю.Зачем улучшать то,что нормально работает?

agree.gif

Как я построил свой ЯП
 
[^]
Fantom125
30.01.2015 - 23:32
2
Статус: Offline


Приколист

Регистрация: 21.02.12
Сообщений: 288
ТС, так что там случилось с бабкой с первого скрина? Та, которая стучала и ребёнка разбудила...
 
[^]
hamurappi
30.01.2015 - 23:32
0
Статус: Offline


Ярила

Регистрация: 15.06.14
Сообщений: 1004
Я увидел свой ник на картинке с носками в Твоём ЯПе , ТС ! Поэтому ( Мне не хватает внимания со стороны окружающих. Обнимите меня, кому не лень) отсыпал юкки , не читая cool.gif

Это сообщение отредактировал hamurappi - 30.01.2015 - 23:41
 
[^]
onkyo
30.01.2015 - 23:33
-6
Статус: Offline


Весельчак

Регистрация: 21.02.08
Сообщений: 110
Это тебе не хабр, говно постить
 
[^]
Proskurov
30.01.2015 - 23:34
7
Статус: Offline


Шутник

Регистрация: 11.07.14
Сообщений: 0
Накрутил себе непонятное кино, написал много непонятных слов.
Один лишь я не понял в этом посте нихрена?
 
[^]
imant
30.01.2015 - 23:34
4
Статус: Offline


Хохмач

Регистрация: 24.01.15
Сообщений: 720
Цитата
как то непонятно рядовому пользователю.Зачем улучшать то,что нормально работает?

Во-первых, я не считаю что десяток-другой гифок на одной странице нормально работают.
Во-вторых, я вижу огромную разницу в удобстве использования.
В-третьих, сделать что-то лучше, чем было раньше это есть прогресс. Именно он позволил некоторым превратиться из лысой обезьяны в человека.
 
[^]
amatiel
30.01.2015 - 23:34
1
Статус: Offline


Ярила

Регистрация: 13.02.12
Сообщений: 5475
Добавь автодетект укропов по стилистике и сообщениями с добавлением в список.

ТутейшиЯ - этого долбоеба первым в список.
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 5859
0 Пользователей:
Страницы: (3) [1] 2 3  [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх