- 1
Сейчас подниму на сервер автоплюсатор новых постов, чтобы всякие дохуя умные их не топили
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−40
Сейчас подниму на сервер автоплюсатор новых постов, чтобы всякие дохуя умные их не топили
Если он, конечно, работает
Пока +47, завтра нарегаю еще стопицот учеток
cykablyad 10.04.2017 20:03 # 0
AntiSpam 10.04.2017 20:04 # −50
cykablyad 10.04.2017 20:04 # 0
AntiSpam 10.04.2017 20:05 # −50
cykablyad 10.04.2017 20:06 # +2
AntiSpam 10.04.2017 20:07 # −50
cykablyad 10.04.2017 20:08 # 0
AntiSpam 10.04.2017 20:08 # −50
cykablyad 10.04.2017 20:08 # 0
AntiSpam 10.04.2017 20:09 # −50
cykablyad 10.04.2017 20:10 # 0
AntiSpam 10.04.2017 20:10 # −50
cykablyad 10.04.2017 20:12 # +3
P.S. доказывать что-то фейк-учетке даже без граватара... фи
AntiSpam 10.04.2017 20:14 # −49
cykablyad 10.04.2017 20:15 # −1
AntiSpam 10.04.2017 20:18 # −50
Теперь у тебя есть пруфы. Поздравляю.
cykablyad 10.04.2017 20:24 # 0
AntiSpam 10.04.2017 20:25 # −50
Кстати, пароль - от учётки carme.
cykablyad 10.04.2017 20:28 # +1
Теперь этот говнокод подберут более тупые 3_15дары и начнут флудить и троллить поболе тебя
AntiSpam 10.04.2017 20:31 # −50
dm_fomenok 10.04.2017 20:34 # −14
www.fayloobmennik.net/6942941
bormand 10.04.2017 20:31 # −1
doctor_stertor 12.04.2017 21:43 # −11
1024-- 12.04.2017 21:44 # +15
doctor_stertor 12.04.2017 21:47 # −11
1024-- 12.04.2017 21:49 # 0
doctor_stertor 12.04.2017 21:49 # −11
dxd 10.04.2017 20:32 # +2
bormand 10.04.2017 20:33 # 0
cykablyad 10.04.2017 20:33 # −1
roman-kashitsyn 13.04.2017 12:53 # +13
Ты всё время кичишься длиной своего приватного ключа. Я так и не понял, как он тебе помогает/мог бы помогать на ГК.
cykablyad 13.04.2017 13:21 # 0
Никак, я просто выебываюсь
barop 13.04.2017 14:01 # −30
dxd 13.04.2017 14:59 # −1
AntiUeban 13.04.2017 17:42 # −11
guestinh0 13.04.2017 18:07 # −29
AntiUeban 13.04.2017 18:11 # −12
guestinh0 13.04.2017 18:06 # −30
cykablyad 10.04.2017 20:34 # −1
Я даже на гитхабе issue создал, а туда никто не пишет
roman-kashitsyn 13.04.2017 12:55 # +13
Собственно, предсказуемо. Плавали, знаем. Если ты не готов смириться, что всём насрать, пока всё не готово (и даже после того, как всё готово), то лучше и не начинать.
cykablyad 13.04.2017 13:21 # −1
1024-- 13.04.2017 19:22 # +2
Доведём Вас до слёз. Потому, что для нас это просто сайт, а не любимое творение.
dxd 13.04.2017 19:32 # 0
AntiUeban 13.04.2017 19:38 # −11
На другом ресурсе будет точно то же самое - вспомните ещё мои слова.
1024-- 13.04.2017 19:52 # +1
AntiSpam 13.04.2017 20:00 # −11
bormand 13.04.2017 19:43 # 0
Оффтопик по СУБД.
Есть табличка, в которую писатели накидывают новые записи. Есть читатели, которые хотят видеть новые записи и делают запрос в духе id > last_known_id.
Есть ли какой-то более адекватный способ, чем тотальная сериализация всех писателей об одну лочку?
AntiUeban 13.04.2017 19:43 # −11
barop 13.04.2017 23:35 # −11
их можно сто штук набрать же
defecate-plusplus 14.04.2017 00:41 # 0
barop 14.04.2017 01:45 # −11
откуда он знает что 4 уже записали, если транзакиця 4 еще не закоммичена?
bormand 14.04.2017 07:25 # 0
Поэтому одна транзакция возьмёт себе 4, а вторая - 5. И обе из них пойдут долелывать какие-то ещё вставки/обновления. И в каком порядке они закоммитятся - никто не знает.
bormand 14.04.2017 07:31 # 0
barop 14.04.2017 14:01 # −10
guest 14.04.2017 18:13 # −11
barop 16.04.2017 00:42 # −2
ну так ты субд на хуйю провернул, и конечно всё не работает.
делай нормальную транзацию
1) взял
2) увеличил
3) записал
defecate-plusplus 16.04.2017 01:00 # 0
ничем не отличается от
> тотальная сериализация всех писателей об одну лочку
на уровне бека
barop 16.04.2017 02:08 # 0
Ты или юзаешь транзакции или нет
Но вообще это задача для queue а не субд
defecate-plusplus 16.04.2017 02:42 # 0
По моему только в говносраном mysql пыхоинвалиды привыкли делать select max(id)+1 перед тем, как сделать insert, ну или делать говнотаблицу shit.sequences (tablename, nextvalue). Это всё от скудоумия.
В оракле, например, cache у последовательности по умолчанию 20. Это значит, что сервер в принципе держит наготове следующие 20 значений в оперативной области (а сиквенс уже их как бы выдал). Кеш протухает, неиспользованные значения никогда не заинсертятся. Вот и бывают таблицы, где айди вообще выглядят как 21, 41, 61 ... И ничей брат не помер от этого.
Как и не должен помереть от того, что строка с id = 5 появится на долю времени перед строкой с id = 4, а строки с id = 3 вообще не будет, т.к. та транзакция откатилась.
Че с этим делать, не забиваясь в один поток, я предложил ниже.
> Но вообще это задача для queue а не субд
именно
Вообще подобные лочки на беке, если они с малой кровью возможны на беке (к примеру, мутекс в HA-кластере это тоже не хуй собачий) надо делать на беке, т.к. даже самый быстрый субд движок - это ~ 1/1000 скорости бека в подобных операциях
bormand 16.04.2017 09:19 # 0
Слон в посудной лавке.
roman-kashitsyn 16.04.2017 13:10 # 0
defecate-plusplus 16.04.2017 13:18 # 0
bormand 16.04.2017 21:03 # 0
Голосованием, как в raft'е.
roman-kashitsyn 16.04.2017 21:14 # +1
Ну так в итоге голосования ты что получишь? Один процесс будет мастером, т.е. держать ЛОК, пока у него большинство голосов.
bormand 14.04.2017 07:19 # 0
defecate-plusplus 14.04.2017 08:02 # 0
defecate-plusplus 14.04.2017 10:57 # 0
Как я понял задачу, у тебя есть "читатели", которые должны как бы из очереди забрать сведения из таблицы для обработки.
Если эту задачу уж прямо так хочется решать при помощи средств СУБД, то я бы посоветовал следующий способ (с вариациями):
1) параллельно с инсертом в основную таблицу (например, foo) инсертить в соседнюю foo$unprocessed (id int8 primary key references foo.id on delete cascade on update cascade). Дополнительно foo$unprocessed может содержать доп колонки, а-ля сведения о читателе, который "забрал" себе запись на обслуживание, или таймстамп записи foo, если он более надежный, чем айди из сиквенса, но её задача быть максимально шустрой.
Читатели работают прежде всего с таблицей foo$unprocessed, делая в ней select ... for update, сортировку, критерии селекта выберешь сам - например, не более 100 записей. Получив массив айдишников, которые теперь принадлежат конкретному читателю, он может обработать полноценные записи, прочитав их из foo. По окончанию обработки читатель удаляет из foo$unprocessed к хуям залоченные в селекте строки, коммитит.
Т.о. таблица foo$unprocessed будет очень небольшая по размеру, предоставлять очень быстрый DML и, главное, select for update будет делать row lock, а не лок на всю таблицу/систему, при этом не позволять проебываться записям.
В постгресе, например, есть вообще охуенная конструкция select for update skip locked, которая тебе даст практически то, что нужно для нескольких читателей.
2) если не хочется создавать таблицу рядом, можно сделать то же колонками прямо в foo. Этот вариант мне нравится меньше, у него только минусы по сравнению с первым вариантом. Могу рассказать подробнее.
3) к хуям эти dbms-based трюки, делаешь шину между пейсателями и читателями, которая, конечно, и в базу что-то персистит, но это не влияет на её основную задачу.
bormand 14.04.2017 18:11 # −3
На работе не до ГК, сорри :(
Не, мне не очередь нужна. Всё прозаичнее - тупо лента с комментами. Поэтому сохранять unprocessed на каждого читателя (я не знаю, сколько их вообще) будет немного невыгодно.
Так что, наверное, проще сериализовать писателей об лочку или вообще заменить sequence на таблицу с полем-счётчиком и select for update + update (та же лочка, просто неявная). И монотонность будет, и читателям не повредит...
defecate-plusplus 14.04.2017 18:42 # +2
и каменты не банковские транзакции - не так и критично не проебать камент, созданный за миллисекунду до твоего запроса контента, не надо героически решать проблему, которую можно решить негероически (показывать не только все непрочитанные каменты, но и каменты за последние N секунд/минут, относительно last_read_time)
bormand 14.04.2017 19:04 # 0
Но, если пирфоманс вставок не так уж критичен, то проще монотонность айдишников поддержать, чем поставить всё на атомные часы ntpd и монотонность времени.
guest 14.04.2017 19:09 # −11
dxd 16.04.2017 11:02 # 0
bormand 16.04.2017 11:51 # 0
guest 14.04.2017 18:22 # −11
guestinh0 14.04.2017 18:25 # −11
bormand 14.04.2017 18:27 # −4
А вот это, походу, само то, если у меня до вебсокетов руки дойдут...
roman-kashitsyn 15.04.2017 22:16 # 0
Жаль только, что у семи нянек дитя без глазу
bormand 15.04.2017 22:30 # 0
В принципе, самый нужный функционал уже готов - бесконечная лента да фильтр от гостя-спамера.
CHayT 14.04.2017 15:21 # 0
dxd 14.04.2017 16:07 # 0
CHayT 14.04.2017 16:27 # +1
guest 14.04.2017 18:42 # −12
bayan 14.04.2017 18:50 # +1
guest 14.04.2017 18:56 # −11
bayan 14.04.2017 18:57 # 0
guest 14.04.2017 18:58 # −11
guest 14.04.2017 19:00 # −11
bormand 14.04.2017 18:17 # −4
CHayT 16.04.2017 13:09 # 0
guestinh0 13.04.2017 13:21 # −31
Страйкер - хуесос, сам ничего не делает и другим не дает. Не удивлюсь, если он и есть шизик-минусатор.
AntiUeban 13.04.2017 17:26 # −12
Он дал Вам возможность перевоспитывать уебанцев, а не просто банить их.
В данный момент я дрочу свой кривой хуй. Подставь щёчку, скоро потечёт.
cykablyad 13.04.2017 17:26 # 0
AntiUeban 13.04.2017 17:27 # −12
Нам не стоит общаться слишком много, а то я привыкну к Вам и потом мне будет тяжело с Вами расставаться.
cykablyad 13.04.2017 17:29 # 0
AntiUeban 13.04.2017 17:30 # −11
Вы появились довольно неожиданно; где гарантии, что Вы снова не пропадёте?
cykablyad 13.04.2017 17:31 # 0
AntiUeban 13.04.2017 17:32 # −12
bormand 15.04.2017 20:47 # 0
Дочь Царя?