- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
select distinct bk.ID, bk.URL, bk.Date, bk.Name, bk.Description, bk.UserCreatorID from bookmarking_bookmark as bk
where bk.Tenant=@Tenant and bk.ID in
(select * from (select b.ID from bookmarking_bookmark as b left join bookmarking_bookmarktag as bt on b.ID=bt.BookmarkID left join bookmarking_tag as t on bt.TagID=t.TagID
left join (select ub.BookmarkID as BookmarkID, ub.Name as UserBookmarkName,ub.Description as UserBookmarkDescription, t.Name as TagName
from (select * from bookmarking_userbookmark as ub where ub.UserID=@userID) as ub
left join bookmarking_userbookmarktag as ubt on ub.UserBookmarkID=ubt.UserBookmarkID
left join bookmarking_tag as t on ubt.TagID=t.TagID) as ub on b.ID=ub.BookmarkID
where ( ( lower(b.URL) like lower(@tagNameForUrlWithoutLastSlash0) )
or (lower(b.Name) like lower(@tagName0) or lower(b.Name) like lower(@tagNameWithSpace0))
or (lower(b.Description) like lower(@tagName0) or lower(b.Description) like lower(@tagNameWithSpace0))
or (lower(t.Name) like lower(@tagName0)) or (lower(t.Name) like lower(@tagNameWithSpace0))
or (lower(TagName) like lower(@tagName0)) or (lower(TagName) like lower(@tagNameWithSpace0))
or (lower(UserBookmarkName) like lower(@tagName0) or lower(UserBookmarkName) like lower(@tagNameWithSpace0))
or (lower(UserBookmarkDescription) like lower(@tagName0) or lower(UserBookmarkDescription) like lower(@tagNameWithSpace0)))
and b.ID in (
select b.ID from bookmarking_bookmark as b left join bookmarking_bookmarktag as bt on b.ID=bt.BookmarkID
left join bookmarking_tag as t on bt.TagID=t.TagID
left join (
select ub.BookmarkID as BookmarkID, ub.Name as UserBookmarkName, ub.Description as UserBookmarkDescription, t.Name as TagName from
(select * from bookmarking_userbookmark as ub where ub.UserID=@userID) as ub
left join bookmarking_userbookmarktag as ubt on ub.UserBookmarkID=ubt.UserBookmarkID
left join bookmarking_tag as t on ubt.TagID=t.TagID) as ub on b.ID=ub.BookmarkID
where (( lower(b.URL) like lower(@tagNameForUrlWithoutLastSlash1) ) or (lower(b.Name) like lower(@tagName1) or lower(b.Name) like lower(@tagNameWithSpace1))
or (lower(b.Description) like lower(@tagName1) or lower(b.Description) like lower(@tagNameWithSpace1)) or (lower(t.Name) like lower(@tagName1))
or (lower(t.Name) like lower(@tagNameWithSpace1)) or (lower(TagName) like lower(@tagName1)) or (lower(TagName) like lower(@tagNameWithSpace1))
or (lower(UserBookmarkName) like lower(@tagName1) or lower(UserBookmarkName) like lower(@tagNameWithSpace1)) or (lower(UserBookmarkDescription)
like lower(@tagName1) or lower(UserBookmarkDescription) like lower(@tagNameWithSpace1))) and b.ID in (
select b.ID from bookmarking_bookmark as b left join bookmarking_bookmarktag as bt on b.ID=bt.BookmarkID left join bookmarking_tag as t on bt.TagID=t.TagID left join
(select ub.BookmarkID as BookmarkID, ub.Name as UserBookmarkName, ub.Description as UserBookmarkDescription, t.Name as TagName
from (select * from bookmarking_userbookmark as ub where ub.UserID=@userID) as ub
left join bookmarking_userbookmarktag as ubt on ub.UserBookmarkID=ubt.UserBookmarkID left join bookmarking_tag as t on ubt.TagID=t.TagID) as ub on b.ID=ub.BookmarkID
where (( lower(b.URL) like lower(@tagNameForUrlWithoutLastSlash2) ) or (lower(b.Name) like lower(@tagName2) or lower(b.Name) like lower(@tagNameWithSpace2))
or (lower(b.Description) like lower(@tagName2) or lower(b.Description) like lower(@tagNameWithSpace2)) or (lower(t.Name) like lower(@tagName2)) or (lower(t.Name)
like lower(@tagNameWithSpace2)) or....
Пытался понять, в чем проблема, что не получается полегче запрос сделать, мозг был сломан... Интересно, как автор будет искать косяки в запроси, которых не миновать при такой сложности запроса...
Я думаю, что если там везде left join заменить на join работать будет быстрее (просто автор наверное разницу не понимает), а еще неплохо было бы условие в where как-то подсократить
Среднее время парсинга человеком - неизвестно, еще никто не дочитал.
А по существу: для каких-то запросов несколько миллисекунд уже вечность, а для других и полчаса вполне терпимо.
full text search есть не в каждом ms sql server?
Да вроде даже в экспрессе был...
Блин. Ну так говорите будто это самое плохое что есть на сайте. Говновайперы не раздражают, говнофорсеры не раздражают, школота не раздражает, а вот некропостер - раздражает...
Гк не ограничен стоком, можно и по страничкам листать.
Если немного автоматизировать сиё действо, например показывать посты с новыми комментами за последнюю неделю/месяц, то даже самые изысканные гурманы останутся довольны.
И даже копропостил, а сейчас стало лень говно выкладывать, потому что здесь неплохо кормят.
Раздражение здесь только из-за того, что сток очень короткий. Была бы лента стока бесконечной, это бы (вероятно) не вызывало раздражения.
Аналогично, бро.
пони - это раса.
по этой графе борманд ОЯШ
http://lurkmore.to/Обыкновенный_японский_школьник
> четыре пи квадратных километров не превращаются в выжженную пустыню
Соглашусь. Слишком маленький ущерб. Среднестатистический ОЯШ с его няшками-друзяшками наносят на порядки больше...
В порядке борьбы с ленью.
DNS is propagating...
Дискасс.
P.S. На топик подписался.
ЦА - те, кто приходит раз в три дня (раз в неделю), не хочет пропустить интересные обсуждения и не хочет нагружать ГК постоянным обновлением стока, зная, что где-то есть одна такая скачивалка, которая работает всегда и для всех. Или кто просто не будет постоянно обновлять сток.
> Себе же проще вырезать сток юзерскриптом и не смотреть.
Если компьютер скорее включён, чем не включён.
> Во-вторых, я пока с трудом представляю себе механику процесса.
Мне представляется либо сервер под Node.JS, который скачивает сток по таймауту, сохраняет, строит БОЛЬШОЙ html со стоком. Только где запускать - вопрос.
Можно ещё на питоне написать то же самое, только постящее в jabber-конференции. И запускать на насе (какая радость, для этого даже не нужен белый IP). Я бы реализовал, но про это и питон мало знаю, мне бы подробный мануал по XMPP на русском...
С этим всё норм.
> Node.JS
На nginx + flask + lxml курочу. Ничего из этого пока не знаю ;)
Еще из фич будет полнотекстовый поиск по комментам, если лень не возьмет верх.
Может быть. Может нет.
Тут ещё один момент. Ориентироваться только на читателей - утопия. Без возможности оперативного ответа такой ресурс мало кому нужен. А для ответов есть только говнокод сам собой.
> Если компьютер скорее включён, чем не включён.
Не, я тут немного про другое, про его бесполезность в общем и целом. Просто читать первые пять страниц и успокоиться.
> Мне представляется либо сервер
Это всё поверхностное, надо начать со взаимодействие человека и сервиса, только так. Где хостить, как раз, вообще не вопрос, равно как и язык, технология.
А я рассуждаю изнутри как ТП (тупой программист)
Но если так, в случае сайта человек видит будто бы большой сток, но без возможности раскрыть пост и ответить с помощью JS. Взаимодействие похожее. По умолчанию есть номера постов (со ссылкой на пост), содержание комментариев. Может быть, ссылки на комментарии и ссылки "ответить". Пользователь открывает сток, а он большой. Скорее всего, отображать постов по 50. Хотелось бы запилить кнопку "открыть все обновлённые посты" или "открыть все посты новее этого" для тех, кто не верит алгоритму определения обновлённых постов.
В случае чат-бота я уже писал о взаимодействии:
либо в джаббер-конференции (писать при обновлении стока и по запросу вновь пришедшего пользователя).
По запросу - пользователь пишет боту в личке конференции или в обычной беседе что-то вида "сток?", "сток за 5 часов?" и "сток 50 постов?"
Простое ограбление коровановговнокода с некоторой человеческой логикой и интерфейсами может быть и полезно, но у меня возникает стойкое ощущение, что что-то не то. Единственное особое применение, которое я вижу: если где-то далеко и глубоко развернётся интересная дискуссия, её можно банально пропустить.
Я потому и спрашиваю. Может быть я не вижу какого-то кардинально важного профита для сообщества? С утверждением про тех, кто ходит читать раз в три дня соглашусь, мысль дельная, я и сам пропадаю неделями иногда. Второй спорный вопрос: всегда будет накапливаться рассинхронизация при чтении через сторонний сервис и нативно. Например, список посещённых тем будет сильно разниться. Приходишь на гк откомментировать, а там сотни зелёных тем. Либо игнорировать такую ерунду, либо придумывать какие-то обходные манёвры.
Вопрос на деле не так прост, как кажется.
А я и не хочу убивать ГК этим проектом... Цель намного приземленней.
> будет накапливаться рассинхронизация
Не будет, потому что этот сервис by design не будет показывать сами треды. Только ссылки на ГК, только хардкор. А если ты пролистал сток, но не заинтересовался и в тему не зашел - у тебя и на старом добром ГК рассинхрон копится.
Просто отдайте мне api key куку, и я помечу треды как прочтённые и запощу в каждый из них goatse.
Никто не хочет. В данном случае назовём это "маркетинговой особенностью". Говнокод сейчас уже позволяет себя читать и писать. Что кому-то там не хватает длины стока - дело житейское.
> Не будет, потому что этот сервис by design не будет показывать сами треды.
Тогда ценность вообще какая-то сомнительная. Просто список тредов, отсортированный по дате? Даже на бордах до такого не додумались, там хоть последние комментарии есть.
> куку
Есть и менее жестокие варианты. Но да, как штатная читалка с поэтессами и развлечениями.
Ладно, если тебе будет не лень - запили, посмотрим. Потому что у меня дело не столько даже в лени (прокрастинирую я отлично, а сейчас у меня как раз полно важной работы), сколько в том, что я не выработал в себе "вкуса перемены". Моё представление туманно и явно отличается от всего вышеописанного.
Да никто не собирается менять привычки других людей... Борманд пилит сервис удобным прежде всего для себя... А если он понравится другим - ну ок, пусть юзают, я не против.
Не ну можно iframe с основным ГК засунуть. Если очень надо.
Но тогда я не смогу запостить goatse, CSRF защита не даст ;(
Это для тех, кто жмёт "показать код"?
На случай, если пользователей будет крайне мало и моё мнение будет учитываться: я не жму "показать код", мне достаточно ссылок на посты - и чтоб открывались в новой вкладке.
>> Не будет, потому что этот сервис by design не будет показывать сами треды.
> Тогда ценность вообще какая-то сомнительная. Просто список тредов, отсортированный по дате?
Для тех, кому не хватает стока, ценность большая.
Я, например, смогу заходить на ГК реже и больше делом заниматься.
Анонимб запостил ночью 15 постов с гоатсе, народ обсудил 10 тем? Я просыпаюсь и открываю Большой Сток им. Борманда - у меня ничего не пропало.
Я уехал/занялся делом? Просыпаюсь и открываю Большой Сток им. Борманда - у меня ничего не пропало.
И посты открываю на самом ГК - прочитанные комментарии отображаются как прочитанные, всё как надо.
> мне достаточно ссылок на посты
Так и будет. Я себе это именно так и представлял.
Зеркало ГК я делать не планирую - смысла в этом особого нет, работы много, да и страйко может обидеться.
> может обидеться
В соглашении явного запрета нет. Думаю, ему пофиг. Даже если робот-ридер останется единственным читателем.
@1024--
Вариант имеет право на существование, у всех свои способы использования. Если кому-то в самом деле будет удобнее, я только за, желаю всяких успехов.
Добавил график длины стока в зависимости от времени на всякий случай.
Т.е. в среднем сток на ГК засирается дня за полтора.
00:00 - это получается пользователь в рандомное время суток пишет?
Топ 250 русских слов длиной более 2 символов по частоте использования в комментариях по сравнению с частотой обычного использования:(всего 177309 штук)
Тарас - это вин.
А как ВЫ повышаете рейтинг выделенных слов?
Топ 250 русских слов длиной более 2 символов по частоте использования в комментариях по сравнению с частотой обычного использования:(всего 24296 штук)
Были списки: постов, комментариев, комментариев пользователя X. Для каждого промежутка времени считалось количество элементов списка в этом промежутке времени (напр. комментариев в понедельник, вторник, ...; комментариев с 16 до 17 и т.п.). Получились графики активности.
Помню, выкладывал в csv результаты.
Часовые пояса были посчитаны относительно комментариев на ГК, использовалось что-то вида АКФ. Т.е. часовой пояс - сдвиг активности пользователя по комментариям относительно активности всех пользователей (см. shift). GC+0 - пользователь пишет в то же время, что и остальные.
Но в итоге оказалось, что всё это - питушня. Активность комментариев ровная, милая и пушистая, а активность пользователей имеет нехорошую форму - либо рваный бред у труъ программистов с творческим режимом дня, либо слишком мало данных, сдвиг определяется хреново.
Любопытные исследования. Но всё равно остаётся вопрос, с каким интервалом нужно достоверно опрашивать сток, дабы не утерять новые нити, прежде чем он переполнится. Раз в минуту? Чаще?
Интересует исключительно в плане мысленного эксперимента.
Ну можно замутить адаптивный интервал - сканить сток через столько секунд, сколько прошло между последними обнаруженными комментами, наращивая интервал, если все молчат. А при потере синхронизации (если сток все-таки вытек через край) - показать грустный смайлик и надпись SYNC LOST.
P.S. Я чет заигрался с uWSGI Императором и его Вассалами, и совсем забыл о проекте ;)
Треды будут сканироваться ради полнотекстового поиска. Но полный рескан в щадящем режиме - это несколько дней...
> Но полный рескан
Если исходить из предположения, что нам интересны некие свежие комментарии, то они либо будут подняты вне зависимости от гоатсе-шторма и могут попасть в выборку по стоку, либо никому неинтересны, и тогда будут обнаружены при плановой обработке. Соотношение вероятностей зависит от силы интереса отвечающих и силы гоатсе-шторма.
Единственный недостаток - такие комментарии будут вклиниваться в историю, с точки зрения стороннего наблюдателя возникать задним числом. Либо наплевать на достоверность и публиковать по мере обнаружения.
@1024--
> Жить с ней можно.
Теоретически, гоатсе может утопить годный тред, который будет невозможно найти обычным способом. Даже не гоатсе, а просто повышенная активность пользователей.
> такие комментарии будут вклиниваться в историю, с точки зрения
стороннего наблюдателя возникать задним числом
> Либо наплевать на достоверность и публиковать по мере обнаружения.
Борманду: полезно сделать галочку "вставлять вне очереди" или отдельный список таких комментариев и надпись "гоатсе прилетело и порвало сток здесь", чтобы при обнаружении таких постов через неделю либо рассматривать изменения как новые, либо открывать отдельный их список, либо видеть сток по времени и вручную скроллить.
> Теоретически, гоатсе может утопить годный тред, который будет невозможно найти обычным способом. Даже не гоатсе, а просто повышенная активность пользователей.
Всё может быть, но сток Борманда будет с большей вероятностью цельным. Надёжность повышается.
А поучаствовать в таком годном треде можно будет через неделю, а не как сейчас - после случайного открытия страницы.
> 2014-09-04
Больше трёх лет прошло и полнотекстовый поиск таки запилен. Какая же я лентяйка всё-таки.
Пидор слился
Тян не может быть пидором по определению.
Но обновление главной страницы запилить надо.
На чтение новых комментариев и написание своих тоже нужно время. Погрешность и так обычно копится. Жить с ней можно.
Сток охватывает (время между крайними комментариями в стоке):
AVR 87140.12 MED 59099 MIN 297 MAX 1889011
Время между двумя соседними комментариями:
AVR 762.54 MED 250 MIN 0 MAX 1318719
Пост уходит из стока через:
AVR 6726.06 MED 9086 MIN 0 MAX 1318719
20 постов уходят из стока через:
AVR 132830.82 MED 80098 MIN 1067 MAX 1946000
Вайпиру надо 5 минут чтобы руками засрать N тредов.
Можно графики выложить на картинкохостинг, а то незареганым не показывает.
звучит как начало школьной задачи.
Да. Браузер крашнулся, и я не успел доредактировать.
> MIN 297
Вайпиру надо 5 минут чтобы руками засрать 20 тредов. Вычислите производительность вбивания вайпером капчи.
>AVR 87140.12 MED 59099
Сток засоряется в среднем за сутки. Сколько надо работать вантузом чтобы его прочистить?
>Время между двумя соседними комментариями:
>AVR 762.54 MED 250 MIN 0 MAX 1318719
Время между двумя комментариями 5-10 минут. Вычислить сколько насрали пользователи говнокода за 6 лет.
я требую продолжение задачи
Вайпер пишет скрипт за Ts'=10 дней, спит Ts''=10 часов в день. Скрипт разгадывает капчу за Tcs=20 секунд, грузит страницу ГК за Tp''=0.4 секунды, регистрирует почту за Tsm=13 секунд, проверяет - за Tsr=12 секунд. У вайпера есть Tp'=90 дней каникул на подготовку и осуществление вайпа.
Цели вайпера - (а) создание максимального количества комментариев, (б) которые будут висеть на ГК как можно дольше.
Задача - рассчитать формулу или смоделировать действия вайпера.
Следует ли писать скрипт? (формула?) Сколько учёток регистрировать, когда начинать, когда регистрировать и с каким темпом? (формула?) Сколько комментариев писать, когда начинать, когда писать и с каким темпом? (формула?) Назовите параметры/формулы для достижения цели а, цели б или подпространства их суперпозиции.
старкрафтоеб видимо
Но если выводить формулу, не важно.
Замечательное условие.
>Задача - рассчитать формулу или смоделировать действия вайпера.
На самом деле тянет на диссертацию или как минимум курсовую работу по говнокодоведению.
Если так, можно целый университет открывать.
- говнокодоведение: спецкурс для вновь поступивших. Основы, введение.
- история: курс на чтение постов/комментариев и знание материала. Кто, где, когда. ГК и его герои.
- военное дело: изучение холиваров и вайпов.
- программирование: юзерскрипты, сервисы для продвинутого использования ГК, минусаторы, автоматизация ботов.
- психология: тренировка и оттачивание навыков в постах и комментариях, троллинг, социальная инженерия.
- математика: изучение рейтинга комментариев и математических парадоксов (1 плюс и 1 минус дают рейтинг +100500; со мной говорит число пи - что делать?).
- физика: изучение силы тяжести, действующей на посты, опускающая их в глубокий минус, сила Архимеда и плюсы, квантовая телепортация юзеров из поста в пост.
Капитан Питух и доктор Багор?
У кого какие. Тарас так долго боролся с кресточудовищами, что сам незаметно стал одним из них.
Поддавшись искушению, отступил от стези добра - чем не вечный драматический сюжет.
У твоих же героев нет ни трагедии, поколебавшей дух, ни античных подвигов достойных воспевания, типа софтварного рендера и жизни на селерон-600.
мои герои это доктор и Твайлайт Спаркл
Так багры были уже в 2014?
как видишь -- они были и в 2012
http://rghost.ru/57862559.view
А ведь можно было и зарегистрироваться. Всё же, родной форум.
И, что важно, это по 14614 постам, остальные (читай: вайпы) были выпилены.
И, кстати, это была не медиана, это питушня какая-то была... Пересчитал медиану.
Сток охватывает (время между крайними комментариями в стоке):
AVR 87140.12 MED 71305 MIN 297 MAX 1889011
Время между двумя соседними комментариями:
AVR 762.54 MED 178 MIN 0 MAX 1318719
Пост уходит из стока через:
AVR 6726.06 MED 2622 MIN 0 MAX 1318719
20 постов уходят из стока через:
AVR 132830.82 MED 107585 MIN 1067 MAX 1946000
Но с моими знаниями офиса разница не важна. Только сверху кнопочки квадратные, а не уть-уть, надписи, а потом спряталось. Я ничего не нажимал, оно само.
На говнокоде появились два вайпера. Один может забить пустой сток за 5 минут; у другого это займет 10 минут.
За сколько минут забьется сток, если заставить обоих вайпать сразу?
Какова вероятность забитого стока, если известно что вайперы активны только во время школьных каникул? Задача повышенной сложности: Сколько лет анонимб?
Если не сложно отпишитесь в ВК: [url=https://vk.com/yurik9527]Yurik9527[/url]
А то с компьютера смогу зайти на форум только через 2 дня.
Если не сложно отпишитесь в ВК: [url=https://vk.com/yurik9527]Yurik9527[/url]
А то с компьютера смогу зайти на форум только через 2 дня.