Новостей, фичреквестов и багрепортов тред #8

Перекатить тему
Седьмой: >>14622
Ответы: >>18701
Надо бы бампнуть версию и запилить changelog, давно уже не делал.
Добавил API для уведомлений. Инфа в доке: https://bitbucket.org/neko259/neboard/src/e93bc5ac9e88ba8800509db3eb36590409e3f201/docs/api.markdown?at=default
Также чуть изменил внутренний формат хранения уведомлений, поэтому у вас счётчик единоразово сломается. Зайдите один раз на страницу уведомлений, и всё будет окей.
В будущем планирую перевести посты на bbcode-формат вместо отрендеренного во всех методах API, так что готовьтесь к этому. Хотя возможно оставлю оба варианта и по умолчанию будет текущий для совместимости.
// As always with love, neko
Ответы: >>16238
>>16237
Возможно также сделаю на борде отдельную страницу с красивым мануалом по API. Но это только если будут живые клиенты, иначе усилия теряют смысл.
Ответы: >>16253
Анон который пишет ридер, как тебя кастовать?
Ответы: >>16268
>>16238
Я в таньке, что уже умеет API?
Ответы: >>16255
>>16239
Отписывался же - renxi я
Ответы: >>16269
>>16268
Оке.
Заходим в настройки, пишем ник с точкой вроде @neboard.me, сохраняем. Получаем Server Error (500) до тех пор пока кеш не очистим.
Ответы: >>16292
@猫, сделай же что-нибудь с этим.
@cast странный очень
>>16271
Хе. Сегодня проверю.
Ответы: >>16293
>>16292
Надо валидацию символов добавить как в тегах. Юзернеймы участвуют в ссылках, поэтому туда не всё можно писать.
Ответы: >>16294
>>16293
Done.
Б-же мой, у нас нет подчёркнутого текста?
Ответы: >>16362
>>16360
А зачем он нужен?
Ответы: >>16380
>>16362
Чтобы подчёркивать своё мнение.
У меня есть идея для социального эксперимента. Я могу публиковать еженедельный/ежемесячный статус борды. Туда будут входить изменения движка, наиболее популярные темы, количество постов и прочее. Нужно?
Идея возникла потому, что некоторые проекты (tox) любят развиваться тихо, замолкая на месяцы.
Ответы: >>16450
>>16449
Там ещё в комментах встречается книга "Дизайн привычных вещей". Буду благодарен тому, кто даст ссылку на pdf или fb2 приемлимого качества (djvu версия у меня уже есть).
Ускорил немного работу за счёт рефакторинга работы с избранными тегами. Теперь загрузка страниц не будет медленной, если у вас много тегов.
Сейчас пожалуйста не трогайте теги, я что-то в них сломал, и не могу понять что именно. На тестовом сервере работает, а здесь нет.
Ответы: >>16496
>>16495
Починил.
Приятная новость для игнорастов: я поправил внешний вид скрытых тегов в списке на странице настроек. Впрочем, туда вряд ли кто-то заходит…
Добавил обрезание превью постов (включая те что в списке тредов) по количеству строк. Так как иногда бывают полотнища, где слов мало, а строк много.
На деле пропущено 113 же
Ответы: >>16559
>>16557
Ты как считал? Всего 116. ОП и 3 последних видны. 116 - 4 = 112.
Ответы: >>16560
>>16559
А, вот оно что, я еще и оп считал
>>16577
Fixed. Я правда не понял, почему регулярка получилась именно такая…
Алсо, нашёл неплохой сайт для тестирования: http://www.regexr.com/
Изменил формат времени, теперь видно день недели и таймзону.
Просто не могу не запостить такую прелесть.
Кто-нибудь пользуется поиском и уведомлениями? У меня есть идея добавлять к ним где-нибудь справа от даты ссылку на ОП, чтобы можно было легко просмотреть, из какого треда пост.
Ответы: >>16742
>>16739
Только читаю, если приходят. Пока их достаточно мало, чтобы мне было всё равно. Кстати, касты регистрозависимые или как?
Ответы: >>16744
>>16742
касты регистрозависимые или как?
Да.
Если это проблема, могу сделать независимыми.
Ответы: >>16748
>>16744
Мне кажется, что лучше независимые. А так, смотри сам.
Ответы: >>16750
>>16748
Чем лучше?
Алсо, щас проверим. @Mordred
Ответы: >>16751, >>16755
>>16750
Ага, зависимые.
>>16750
Потому что писать я в 99% случаев буду никнейм с заглавной первой буквой, а накастуешь ты в нижнем регистре вполне вероятно, как уже было :)
Ответы: >>16833
Так, а кто знает, как забиндить ctrl-enter на сабмит формы?
Ответы: >>16766
Ответы: >>16767, >>16793
>>16766
Оке, надо будет приделать.
>>16766
Done.
Ответы: >>16812
Также уменьшил размер textarea.
Ещё есть убер-идея запилить автодополнение (например, номеров постов), но это уже совсем сурово для меня. Но если будут добровольцы, я с радостью приму патчи :2
>>16793
Сорри, была проблема с тем что даже без контрола срабатывало как самбит. Fixed.
Кстати, у нас уже больше 1000 коммитов.
Ответы: >>16829
>>16813
Если бы ещё было больше 1000 анонимусов…
Ответы: >>16830, >>16831
>>16829
Анонимус всегда один :3
>>16829
А вообще я планирую в апреле на день рождения борды попиариться ещё раз на лоре.
>>16755
Done. Но в сеттингах тебе придётся самому пересетить, оно автоматом поменяет на lowercase. Хотя работать должно и без него.
Также отрефакторил код для построения списка ответов. Теперь он будет значительно быстрее и проще, так как там используются питоновские генераторы.
Ответы: >>16835, >>16853
Надо теперь парсеры и всё что с ними связано вынести в отдельное приложение. И сделать так, чтобы их можно было расширять.
>>16833
Также отрефакторил код для построения списка ответов.
Это на самом деле хоть и увеличивает производительность, но делалось исключительно для красоты. Добавление постов я особо не стараюсь расширять, эта операция чаще всего работает через ajax и задержка не имеет такого значения как при открытии страниц.
>>16833
Отлично.
Добавил новую фичу для ретроградов. Если у вас по какой-то причине не работают вебсокеты, внизу слева страницы будет кнопка "обновить", которая позволяет обновлять тред вручную.
Ответы: >>16892
>>16890
А если они работают, но отваливаются? И что мешает заместо этого костыля запилить православный AJAX?
Ответы: >>16895
>>16892
Работа и появление кнопки проверяется только первый раз при загрузке страницы. Если они отвалилиаь позже, ничего не будет.
И там и так ajax. Кнопка просто вызывает вручную метод, который иначе вызывался бы по сообщению из сокета.
Не проебите гет!
Ответы: >>17000
Ответы: >>17001
>>17000
За полмесяца набрали, как ни странно. Видимо, покращення.
Ответы: >>17017
>>17001
Это просто я расфлудился тут.
Смержил ветку децентрализации с дефолтной. Теперь можно продолжить писать синхронизацию. Там осталось сделать парсинг ответа получения постов, и можно будет хотя бы вручную подтягивать изменения между двумя серверами.
>>17067
datetime="2015-03-03T23:49:24.309220+02:00"
Вот такое прокатит же?
Ответы: >>17070
>>17070
Какой-то странный формат создаёт твоя функция. Было Пнд, 9 Мар 2015 10:49:21 +0200, стало Mon, 9 Mar 2015, 10:49:21.
Ответы: >>17076
>>17076
У тебя браузер в английской локали?
Нет, в том-то и дело. Джанга возвращает локальное время, поэтому раньше оно было на русском.
>>17076
Там надо в первый массив передавать список локалей походу. Пока получил из window.navigator.language, теперь вроде работает (хоть и не тот формат что был).
Стало: пн, 9 марта 2015 г., 10:49:21
Ответы: >>17080, >>17081
>>17080
Firefox, например, берёт язык браузера.
У меня и есть firefox вообще-то.
Ты лучше скажи, как мне получить дату в формате RFC2822, т.е. как сейчас.
Ответы: >>17083, >>17084
>>17084
человекочитабельный формат в виде RFC никакого смысла не имеет
Мне нравится вот именно этот формат, а с помощью Intl.DateTimeFormat я его сделать почему-то не могу. ВТФ?
Ответы: >>17086
>>17086
Т.е. человеку не надо видеть день недели и месяц в трёх буквах? Это почему ты за них решаешь?
Ответы: >>17089
@mordred, проверь как оно у меня работает: http://neko259.ttyh.ru:8000/thread/1/
У поста №7 в таймзоне сервера время 10:49:21, значит у тебя должно быть другое.
Ответы: >>17094
>>17089
Почитал. Там нет трёхбуквенных форматов.
Ответы: >>17092
>>17091
Там есть «длинный» и «короткий». В русском 3 буквы для идентификации дня недели не нужны.
Ответы: >>17093
>>17092
Там есть «длинный» и «короткий».
Ну вот, а 3-буквенного нет. Почему в RFC2822 есть, а у них нет?
Ответы: >>17095
>>17090
(7) пн, 9 марта 2015, 11:49:21
Ответы: >>17096
>>17093
Потому что RFC писали норкоманы? Ещё раз, ты человекочитабельный текст генерируешь сейчас, RFC для машин и это у нас уже покрыто атрибутом.
Ответы: >>17097
>>17094
Проверяй, должно работать тут.
Ответы: >>17099
>>17095
Это трёхбуквенный день недели в дате-то для машин? Сам-то понял что сказал? Машинам нужен только номер.
Ответы: >>17100
>>17096
Работает. Но при динамическом появлении новых постов — нет, кстати (что логично, там только то, что на странице в том коде обрабатывается 1 раз).
Ответы: >>17102
>>17097
RFC для машин, человекам RFC не нужен :3
>>17099
Уже заметил, сейчас исправляю.
Ответы: >>17104
>>17102
Done. Не очень элегантно конечно сделано, тупо запускаю этот метод для всех постов, даже если обновился один. Но у клиентов ресурсы резиновые, мне-то что :3
Ответы: >>17105, >>17106
>>17104
Нафига? Передавай в функцию ноду, с какой искать надо, и используй вместо document.
function translate_time(root_el)
{
var els = root_el.getElementsByTagName('time');
if (!els.length) return;
var formatter = new Intl.DateTimeFormat(
[],
{
weekday: 'short', year: 'numeric', month: 'short', day: 'numeric',
hour: 'numeric', minute: '2-digit', second: '2-digit'
}
);
for (var i = 0, len = els.length; i < len; ++i) {
var el = els[i];
if (el.hasAttribute('datetime')) {
var date = new Date(el.getAttribute('datetime'));
el.textContent = formatter.format(date);
}
}
}
if (window.Intl) {
document.addEventListener('DOMContentLoaded', function(){ translate_time(document); }, false);
}
[comment] on new ajax post
[/comment]
[comment] translate_time(mah_new_post_element_root_here);
[/comment]
Ответы: >>17107, >>17108
>>17104
Осталось ещё поле last update в футере треда, там чуть сложнее. Оно обновляется прямо на JS, а теперь внутри ещё тег time запихнули.
Ответы: >>17116
>>17105
BBCode, говоришь, да? :3
Ответы: >>17109
>>17105
Очевидно, чтобы не писать лишний код поиска ноды :3
Ответы: >>17110
>>17107
Тут как раз нечто маркдауноподобное гадит. Регулярки, которые преобразуют человекопонятные штуки в bbcode, чтобы такие как ты не мучились с тегами.
Ответы: >>17112
>>17108
Искать? Ты ж его вставляешь, значит он у тебя уже есть в то время :}
Ответы: >>17111
>>17110
Кого вставляю? Мне приходят посты, в них надо достать этот time ещё.
Ответы: >>17113
>>17109
Так причём тут маркдаун? Это твои кривые регулярки :}
Ответы: >>17114
>>17111
Приведённый код выше сам найдёт все <time> элементы, внутри заданной ветви.
>>17112
При том что мои регулярки это костыль для неокрепших маркдаунов.
Ответы: >>17115
>>17114
ССЗБ :}
>>17106
А с этим кстати проблема. Сервер-то нам отдаёт только человекочитаемую дату в RFC 2822, а ту что в атрибуте datetime не отдаёт. Это надо апишку ломать тогда…
Ответы: >>17117
>>17116
Можешь добавить новое поле временно и отдавать обе.
Ответы: >>17118, >>17119
>>17117
Да мне проще отдавать уже с <time>. Это поле в ответе апи предназначено только для отображения.
>>17117
А нет, я соврал. Сервер ничего такого не отдаёт. Мы уже на js берём время последнего поста и считаем его last update.
Ответы: >>17121
>>17119
Done. Оно просто не умело работать с тегами внутри блока pub_time, потому что использовало text() вместо html()
А почему в <link rel="next" href="… в head многострочный? :)
Ответы: >>17124
<div class="post-form">
<div class="form-title">Создать новую тему</div>
<div class="swappable-form-full">
<form enctype="multipart/form-data" method="post"id="form">
Нет пробела после method="post".
Ответы: >>17125
>>17122
Потому что там в шаблоне внутри длинное условие, которое было записано в много строк. А при рендеринге они не вырезаются.
>>17123
Ага, ща поправлю.
Как в жиквери находить ноды только под определённой? Не её непосредственных детей, а вообще под ней. Чтобы я мог например сказать искать все теги time внутри поста.
Ответы: >>17127
>>17126
    if (node == null) {
elements = $('time');
} else {
elements = node.find('time');
}
Вот так сойдёт?
Ответы: >>17128, >>17129
>>17127
Зачем тебе код с жквери, когда написан уже без него готовый? :) А так, да, должно работать. Но вообще, в JS лучше через === сравнивать, если нет какой-то другой причины для ==.
Ответы: >>17130
>>17127
Ну или вообще if (node), т.к. вряд ли тебе принципиально именно null.
>>17128
Но вообще, в JS лучше через === сравнивать, если нет какой-то другой причины для ==.
Учту. Но пока и так работает.
Форму тоже поправил.
Теперь будет заменять таймстампы только для тех блоков которые обновляются, а не по всей странице.
Ответы: >>17133
>>17131
Поглядим :)
Ответы: >>17134
>>17133
Я увидел, как у нас адъ в коде построения попапов ссылок. Я его брал у Рицу целиком. Надо отрефакторить, и заодно придумать более интересный способ их отображать.
Ответы: >>17179
$ date
Пн мар 9 13:22:58 MSK 2015
Ответы: >>17139
А для чего jQuery UI тут используются?
Ответы: >>17140
>>17136
(17136) пн, 9 марта 2015, 14:23:05
$ date
Пн мар 9 13:22:58 MSK 2015
Ответы: >>17142, >>17162
>>17138
Хз, возможно ни для чего.
Ответы: >>17141
>>17140
Лол.
>>17139
Мордред, глянь плиз. Из-за чего так может быть? Чего-то недонастроено?
Ответы: >>17144
Кстати, @mordred, а ты у какого персонажа брал имя? Я например только пикрелейтед знаю :3
Ответы: >>17148, >>17151, >>20142, >>20143
>>17142
У тебя преобразованные посты и реальная дата различаются? Часовой пояс в порядке?
Ответы: >>17145
>>17144
на час различие
Ответы: >>17146, >>17147
>>17145
внзу тоже что-то не так со временем … на 1 час бегут
>>17145
А что там летне-зимним временем? Хотя, вроде бы, влиять не должно… У тебя tzdata обновлённые?
Ответы: >>17150, >>17152
>>17147
да, обновленные
правда я брозер (хромой) уже не выгружал более
uptime
13:30:30 up 58 days, 17:08
Ответы: >>17153
>>17147
А какая разница, обновлённое или нет, если js должен брать из системы?
Ответы: >>17154
>>17150
правда я брозер (хромой) уже не выгружал более
Попробуй перезагрузить или открыть другой браузер, наркоман :3
>>17152
Так должен же браузер где-то брать инфу, а ОС из tzdata.
Просто недавно у MSK было постоянное +4, а потом стало постоянное +3.
Ответы: >>17156
>>17155
А это кстати вариант. Если он браузер не выгружал после этого момента, там могло закэшироваться время. Гугл же не знал, что существуют наркоманы, которые держат их текучий браузер включенным больше пары часов.
Сейчас будет рестарт сервера, минут 5 не пугайтесь.
Ответы: >>17159
>>17158
Done.
Ответы: >>17160
>>17159
Ух ты, пост всё равно появился.
Ответы: >>17161
>>17160
Колдовство!
>>17139
Ничего не изменилось?
Ответы: >>17163
>>17162
часы на 1 час вперед показываются
Ответы: >>17164
>>17163
Ты браузер перезапустил?
Ответы: >>17165
>>17164
733 вкладки… нет не перезапустил
Ответы: >>17167, >>17169
А с помощью вот этой штуки https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver можно следить за появлением новых элементов (и прочее) в документе, например <time>, и обрабатывать их там, в одном месте. Но мне лень переписывать на это.
Ответы: >>17168
>>17165
733 вкладки
Хром что, не умеет восстанавливать вкладки при перезапуске?
>>17166
Нафига, если у нас и так известно, что и где мы добавили?
Ответы: >>17170
>>17165
У меня пока нет идей…
Попробуй в JS консоли для начала сделать:
var x = (new Date());
console.log(x);
console.log(x.getTimezoneOffset());
и запости результат.
Ответы: >>17171, >>17172
>>17168
Чтобы не делать руками каждый раз. Впрочем, у нас этого так мало, что «обозревателями» геморроя больше будет :)
>>17169
Да пусть просто новый инстанс хрома запустит, так же вроде можно.
var x = (new Date());
console.log(x);
console.log(x.getTimezoneOffset());
2015-03-09 13:53:46.321VM2317:3 Mon Mar 09 2015 13:53:46 GMT+0300 (MSK)
2015-03-09 13:53:46.326VM2317:4 -180
undefined>>17169
Ответы: >>17173
>>17172
Да, вроде, всё нормально, хм… %) А если так?
var FORMATTER = new Intl.DateTimeFormat(window.navigator.language,{weekday: 'short', year: 'numeric', month: 'short', day: 'numeric',hour: 'numeric', minute: '2-digit', second: '2-digit'});
var x = new Date('2015-03-09T12:54:47.474846+02:00');
console.log(x);
console.log(x.toLocaleString());
console.log(FORMATTER.format(x));
@neka
if (node === null) {
elements = $('time');
} else {
elements = node.find('time');
}
if (!elements.length) {
return;
}
AFAIR, тут длину проверять не нужно, если у теюя jQuery. Так как на пустой сет жквери просто скипнет код в each. Можешь потыкать документацию. Я редко с jQuery работаю.
Ответы: >>17174
>>17173
Я не neka, а neko.
Ответы: >>17175
>>17174
Ok :)
var FORMATTER = new Intl.DateTimeFormat(window.navigator.language,{weekday: 'short', year: 'numeric', month: 'short', day: 'numeric',hour: 'numeric', minute: '2-digit', second: '2-digit'});
var x = new Date('2015-03-09T12:54:47.474846+02:00');
console.log(x);
console.log(x.toLocaleString());
console.log(FORMATTER.format(x));
2015-03-09 14:07:07.836VM2430:4 Mon Mar 09 2015 13:54:47 GMT+0300 (MSK)
2015-03-09 14:07:07.846VM2430:5 09.03.2015, 14:54:47
2015-03-09 14:07:07.846VM2430:6 пн, 9 марта 2015, 14:54:47
undefined
Ответы: >>17177
>>17176
У тебя даже .toLocaleString() возвращает 14 часов. Т.е. сам браузер считает +4000. Проблема, похоже, не в жабаскрипте. Либо браузер, либо в системе. Возможно проблема неправильного выставленного летнего/зимнего времени, правда в линуксе с этим проблем быть не должно, если у тебя линукс. У кого есть ещё гениальные идеи?
Ответы: >>17178
>>17177
У кого есть ещё гениальные идеи?
Пусть запустить новый инстанс браузера или перезапусит этот. Нефиг создавать проблему на пустом месте.
Алсо, я просрал гет.
>>17134
У кого есть идеи, как можно удобнее/красивее отображать цитируемые посты?
Ответы: >>17180
>>17179
Мне в белой и так нормально… :}
Ответы: >>17181
>>17180
Я имел в виду "вместо попапов". Ты влоре застал?
Ответы: >>17182
>>17181
Я его не помню уже…
Ответы: >>17183
>>17182
Я там тестил одну из своих гениальных идей: вместо попапов по клику на ссылку заменять её тем постом, на который она ссылается. Пост-в-посте. А в нём аналогично можно открыть другую ссылку, и так до бесконечности. Нет проблем с "дёрнул курсор и попап пропал", с сокращением текста в попапах.
Ответы: >>17185
>>17183
Меня и как есть то устраивает, поэтому не знаю даже. Да и DOM растёт-с.
Ответы: >>17187
>>17185
Да и DOM растёт-с.
С попапами он тоже растёт. Просто потом обратно сокращается.
А вообще браузеры на то и нужны, чтобы DOM парсить быстро и экономно :3
Ответы: >>17188
>>17187
быстро и экономно
Либо одно, либо другое :3
Ответы: >>17189
>>17188
Смотря что понимать под экономией. Кэши с адаптивным размером можно считать экономными, хоть они и занимают много памяти, если это никому не мешает.
При добавлении сообщения у сообщения-родителя (сообщения, ответом на которое является наше сообщение) не обновляется список ответов, это норма?
Ответы: >>17200
>>17196
УМВР. Покажи.
Странно, на мобильнофоксе время не заменяет. Показывает то, которое отдаёт сервер.
Ответы: >>17204, >>17205
>>17203
На мобильном фоксе не зпилили Intl.* значит ещё.
>>17203
Т.е. сейчас время должно быть пользовательским? И почему в таком случае у меня +0200? Опять всё поломали.
Ответы: >>17206, >>17208, >>17213
>>17205
А список ответов и вправду не обновляется. И сообщение без перехода по ссылке на сообщение попапом не посмотреть, бида-пичаль.
Ответы: >>17208, >>17209, >>17210
>>17205
И почему в таком случае у меня +0200?
Наверное твой браузер чего-то не поддерживает. Я проверял на десктопном фоксе и мобильном хроме, всё норм.
>>17206
Скажи версию браузера и покажи, есть ли в логаъ js какие-то ошибки.
Ответы: >>17212
>>17206
На десктопном хромиуме-41.0.2272.74 тоже проверил, работает.
>>17206
Я подозреваю, браузер ловит ошибку где-то в коде обновления метки времени и дальше не идёт. Покажи ошибку.
>>17208
Скажи версию браузера
Chromium 22.0.1229.94
покажи, есть ли в логаъ js какие-то ошибки.
Uncaught TypeError: Object #<Object> has no method 'sendMessage'
Uncaught ReferenceError: Intl is not defined main.82a5667269c5.js:27
Uncaught TypeError: Cannot call method 'addListener' of undefined
Uncaught TypeError: Cannot call method 'format' of undefined
Ответы: >>17214, >>17218
>>17205
+0200 это время сервера.
>>17212
Uncaught ReferenceError: Intl is not defined main.82a5667269c5.js:27
Ну видимо вот это. Надо проверять, есть ли объект Intl. Сможешь сейчас на мой тестовый сервер зайти и проверить?
Ответы: >>17215
>>17214
Там же в коде выше есть пример if (window.Intl), сделай аналогично.
Ответы: >>17216
>>17215
Так и сделаю. Мне надо чтобы кто-нибудь с отсталым браузером протестил.
http://neko259.ttyh.ru:8000/
Проверяйте.
На будущее, по этому адресу мой тестовый сервер всегда запускается, когда я что-то делаю.
17 43
(17219) пн, 9 марта 2015 г., 17:43:58
17 43
>>(!) Подождите 22 секунд после последнего постинга
>> (!) Подождите 6 секунд после последнего постинга
Ответы: >>17221
Ответы: >>17222
>>17221
время теперь ок, но вот предупреждение тайм аута перед постингом…
Ответы: >>17223
>>17222
А что не так с предупреждением?
Ответы: >>17224
>>17223
22 секунд
и
после последнего постинга
может стоит подождать на "подождите еще 88 секунд" ?
Ответы: >>17225, >>17226
>>17224
* стоит заменить на
>>17224
Может и стоит.
22 секудны
21 секунду
20 секунд
или локализация вообще не планируется?
Ответы: >>17228
>>17227
или локализация вообще не планируется?
Пока нет.
тест времени
date
Пн мар 9 18:11:07 MSK 2015
Ответы: >>17231
Пн мар 9 18:12:46 MSK 2015
>>17229
Для этого есть тестовый тред!
Меж тем, интегрированного торрент-трекера ещё нет, я негодую уже несколько месяцев.
Ответы: >>17242
>>17241
Мы же вроде решили, что ссылками и так можно обмениваться. Что тебе ещё нужно интегрировать?
Ответы: >>17243
>>17242
Мы решили, что DHT — это неудобно из-за долгого поиска пиров.
Ответы: >>17244
>>17243
Нет, такого мы не решали.
Ответы: >>17245
Ответы: >>17246
>>17245
Пруф или не было.
Чуток ускорил отрисовку списка тегов и отрефакторил некоторые методы работе с изображениями и прочем.
В будущем планирую обрато поле user agent для поста, которое так никогда и не использовалось. И как показала практика, для АИБ оно бесполезно.
Надо md5 для дедупликации картинок заменить на sha2. Педивикия говорит, что md5 уязвим и устарел.
Реквестирую отображение прогресса загрузки изображения.
Ответы: >>17692, >>17693
>>17689
Напишешь — будет. Я не умею в js.
>>17689
И кстати при загрузке по ссылке такое вообще дофига сложно будет сделать, сервер ведь сам грузит. Ну его нафиг.
Ответы: >>17694
>>17693
Для загрузки по ссылке это и не нужно.
Ответы: >>17695
>>17694
Тогда как-то странно будет. В одном случае прогресс видно, в другом не видно…
Поправил пару неточностей в отображении многотредовых постов (ОП одного треда в середине другого). Также доделал старое TODO, которое касалось смены класса постов, когда тред ушёл в бамплимит. Ранее всем постам на js просто добавлялся класс dead_post, но так как в треде могут быть посты из другого треда (который в бамплимите), это неверно. Так что теперь когда тред уходит в бамплимит, обновляются все его (именно этого треда) посты, и подтягиваются в рамках thread diff. Аналогично с попаданием треда в архив.
Добавил в галерею ссылки на посты.
@mordred, ты в курсе, что у тебя в галерее рамок нет? Как там вообще можно разобраться, какая подпись к какой картинке относится?
Ответы: >>17873, >>17916
>>17872
И ещё у тебя посты в бамплимите и без никак не отличаются. Так не должно быть, задумано чтобы они были разными.
Ответы: >>17919
@mordred, я делаю новомодную подсветку поста вместо попапа, если наводим на рефлинк поста который видимый на странице. Скажи плиз, какой стиль делать в твоей теме для такого подсвеченного поста.
Ответы: >>17882
>>17881
Сделал пока цветом фона. Если не нравится, говори.
Ответы: >>17917
>>17872
Ты когда старую галерею ломал стили только себе нарисовал, небось :}
Добавь пока так, без рамок. А то они странно смотрятся, когда неровные.
.gallery_image {
padding: 4px;
margin: .5em 0 0 1ex;
text-align: center;
vertical-align: top;
}
Ответы: >>17918, >>17924
>>17882
Норм.
>>17916
Ты когда старую галерею ломал стили только себе нарисовал, небось :}
Какую старую? Ту которая на js была? Проснулся, лол.
Ок, попробую твой стиль.
Алсо, я сделал кнопки добавления тега в избранное и скрытия кнопками с POST-запросами, чтобы не смущать поисковики. Норм?
Ответы: >>17920, >>17932
>>17873
Раньше они отличались цветом фона .metadata, значит ты что-то сломал :3 Поставь светло-серый какой-нибудь. #EDEDED там.
Ответы: >>17921
>>17918
Т.к. это действие изменяет состояние, то это POST. Всё правильно.
Ответы: >>17925
>>17919
Они и сейчас им отличаются. Но сейчас есть многотредовые посты. Пост посередине треда может быть без метадаты и отличаться состоянием от других постов.
Ответы: >>17922
>>17921
Дай линк какой-нибудь.
Ответы: >>17923
>>17922
>>17428
Пост с "лол" в содержании находится в треде из бамплимита, но ты в своей теме этого не увидишь.
Ответы: >>17937
>>17916
Поставил, проверяй.
>>17920
Просто мне кажется ущербным городить целую форму на одну кнопку. Но если в этом вашем вебе так принято, то ладно.
Ответы: >>17926
>>17925
Кнопка это 1 элемент, как и ссылка. В чём там «целое» не очень понятно.
Ответы: >>17927
>>17926
На каждую кнопку у меня скрытый инпут с передаваемыми данными (какое действие – скрыть тег или отменить скрытие, например), собственно форма и ссылкокнопка.
Ответы: >>17928
>>17927
Осиль атрибут value у кнопки.
Ответы: >>17929
>>17928
Там нет кнопки. Там есть ссылка с текстом (то же самое что submit с value, только проще форматировать). А ещё мне надо передать параметр и его значение как-то.
Ответы: >>17930, >>17931
>>17929
Ты только что сказал, что у тебя кнопка. Что за кнопка без кнопки? Ты на ссылку навесил событие клика? Говнокодерство.
Ответы: >>17932
>>17929
<button name="ololo" value="lololo"></button>
Ответы: >>17933
>>17918
сделал кнопки добавления тега в избранное и скрытия кнопками с POST-запросами, чтобы не смущать поисковики
Ах да, эта штука работает только с JS. Вот такой вот кривокод.
>>17930
Что за кнопка без кнопки? Ты на ссылку навесил событие клика?
Да. Я не смог отформатировать submit так, чтобы он выглядел как ссылка. Он никак не хотел подхватывать цвет, прописанный в стиле, и делал шрифт меньше.
Ответы: >>17934
>>17931
И что мне с ней дальше делать? Куда прописать что method=subscribe, а в тексте ★? И чтобы оно выглядело в точности как сейчас.
Ответы: >>17935
>>17932
border: none;color: inherit;background: transparent;font: inherit;
Ответы: >>17936
>>17933
<button name="subscribe" value="anime">★</button>
Ответы: >>17938, >>17954
>>17934
color: inherit
Мне нужно задать цвет такой как в классе, а не inherit. Я ему прописывал class="fav", в котором color задан, но оно не подхватилось.
Ответы: >>17939
>>17923
Попробуем.
.post:not(.dead_post):first-child ~ .dead_post {
border-right: 1ex solid #666;
}
Ответы: >>17941
>>17935
А эта кнопка будет работать как submit?
Ответы: >>17940
>>17936
Значит у тебя что-то переопределяет цвет. Смотри в девтулзах.
>>17938
Будет, конечно. Это дефолтное действие кнопки. Просто кнопка без сабмита это type="button".
Ответы: >>17942
Ответы: >>17943
>>17940
Ладно, чуть позже попробую так.
>>17941
Это правило в мёртвых тредах не работает, by design.
Ответы: >>17944
>>17943
Сделай так чтобы работало на любых комбинациях тредов и постов в них: мёртвые, живые, архивные.
Ответы: >>17945
>>17944
Ты норкоман что ле? Нафига мне эта мешанина на каждом посте мёртвого треда?
Ответы: >>17946, >>17947
>>17945
Если так хочешь, поставь просто на .dead_post
Ответы: >>17948
>>17945
Что значит "нафига"? Движок позволяет делать любые комбинации постов из разных тредов. И их нужно различать.
Алсо, мы этой перепиской гадим теперь в тред майнтеста, который в бампмлимите.
Ответы: >>17949
>>17946
Уже лучше. Теперь осталось сделать такое же для архивных постов. На том сервере показать не могу, потому что там свежая база и в архив ничего не попало.
>>17947
То правило срабатывают в ЛЮБОМ немёртвом треде. Поучи CSS селекторы, няша, пригодятся.
Ответы: >>17950
>>17949
То правило срабатывают в ЛЮБОМ немёртвом треде.
А в мёртвом не срабатывает.
Ответы: >>17951
>>17950
Потому что там ВСЁ мёртвое. Зачем на каждом посте повторять? Чтобы в глазах рябило?
Ответы: >>17953
>>17951
Вот сейчас мы видим, что не обязательно всё мёртвое. Если на какой-то пост в мёртвом треде ответить из другого треда, в мёртвом треде появятся живые посты.
>>17935
Сделал так, благодарю за помощь.
В http есть какой-то заголовок, который хранит время изменения страницы и по которому браузер её кэширует? Если да, как он называется?
Если джанго позволяет, имеет смысл ставить эту штуку для тредов, чтобы поисковики не пытались их индексировать заново каждый раз, даже если тред не изменился.
Ответы: >>17959
>>17958
Нашёл. If-Modified-Since
Что у нас может служить идентификатором кэша страницы треда? Т.е. каких данных достаточно, чтобы однозначно сказать, что она не менялась? Мне пока пришло в голову только локаль, номер треда, список избранных тегов для панели наверху и теги. Больше ничего?
Ответы: >>17961, >>17962, >>17963
>>17960
Это я пытаюсь составить ETag, чтобы браузер мог кэшировать тред, если ничего не менялось. Так мы разгружаем и сервер, и браузер. К сожалению это неприменимо для страниц вроде списка тредов (слишком много данных, отследить однозначно last-modified очень сложно. Но для треда можно.
>>17960
@mordred, у тебя могут быть свежие идеи. А то не хочется поломать тред и потом вылавливать всякие ошибки.
Ответы: >>17987
>>17960
Да, PPD ещё (скорость борды).
>>17962
Предлагаю поискать инфу на тему того, как кэшировать не страницы целиком, а блоками. В рельсах есть такая фигня, может и в этом фреймворке есть.
Ответы: >>17988, >>17990
>>17987
Хотя если про клиент… А нельзя просто обойтись датой последней модификации как-нибудь?
Ответы: >>17990
>>17987
На сервере так и кэшируется. Но клиент кэширует либо весь ответ http, либо нет. И он запрашивает, изменилась ли дата или тег.
>>17988
У страницы нет такого параметра. На ней отображено много разных штук, включая уведомления, теги и прочее, часть из которого хранится в базе, часть в сессии, часть в кэшах сервера.
Хе, валидатор ругается. Говорит:
Bad value 2015-03-19T12:46:13.661198+02:00 for attribute datetime on element time: A fraction of a second must be one, two, or three digits.
И чем им не угодила точность даты…
На внешних ссылках всё ещё нет rel="nofollow".
Ответы: >>18064
>>18062
А почему должны быть?
Ответы: >>18067
Уже кстати в нашей базе 3034 забаненных айпишника :3
Ответы: >>18068
>>18067
Я знаю что это. Ты мне скажи, зачем это для внешних ссылок.
Ответы: >>18069
>>18068
Чтобы спамерам было неинтересно.
Ответы: >>18070
>>18069
Не понял. Почему им станет неинтересно от того, что их ссылки становятся nofollow? Они же автоматами наверное постят и не проверяют результат.
Ответы: >>18072
>>18070
Рулят ими тоже люди.
Ответы: >>18074
>>18072
Так что изменится от добавления атрибута? Ответь плиз развёрнуто.
Ответы: >>18075
>>18074
Исчезнут причины бросаться ссылками.
Ответы: >>18076
>>18075
Да блин, ты можешь нормально подробно ответить или нет? Что произойдёт, почему так, откуда эти причины и прочее. Я пока что понял чуть более, чем ничего.
Ответы: >>18077
>>18076
Сходи уже по ссылке. Ты же сказал, что знаешь что это.
Ответы: >>18079
>>18077
По ссылке сказано, что по этим ссылкам не будут ходить поисковики. И что теперь? Спам запостили? Запостили. Его прочитают пользователи борды? Прочитают. Так почему он потеряет интерес для спамботов?
Ответы: >>18080
>>18079
Потому что не запостят, слоупок-кун.
Ответы: >>18081
>>18080
Почему не запостят, наркоман-кун?
Ответы: >>18082
>>18081
Потому что никому в пустоту не интересно.
Ответы: >>18083
>>18082
Борда это пустота?
Ответы: >>18130
>>18083
на этой борде 3.5 анонимуса. Да, борда пуста.
При смене темы обновляется уведомление о количестве непрочитанных (хотя это не так) уведомлений, это нормально?
Ответы: >>18167, >>18168
>>18166
Я знаю об этом баге. Надо сделать в обработчике формы, чтобы если имя не изменилось, не сбрасывались уведомления.
>>18166
Fixed.
Есть ли смысл разрешить добавлять треды в избранное, чтобы потом видеть этот список? При том что у нас треды из архива не удаляются, и теоретически можно какой-нибудь интересный тред пометить и позже к нему вернуться.
Ответы: >>18172
>>18171
Закладки в браузере пусть осиливают.
Ответы: >>18173
>>18172
Окай.
У меня новый гениальный план. Надо бамплимит хранить не для борды целиком, а для отдельных тредов. Чтобы была возможность конкретным тредам его увеличить или уменьшить. Пока не знаю зачем (кроме того что если я захочу глобально его поменять, в старых тредах останется как было, но идея мне нравится.
Ответы: >>18180, >>18182
>>18177
Done.
>>18177
Нужно ещё сделать возможность для отключения бамплимита у тредов.
Ответы: >>18184
>>18182
Тоже done.
Планирую новый интерфейс постинга. По умолчанию форма скрыта, по нажатию на кнопку "ответ" она вставляется под постом, на который отвечаем. Так лучше видно, что цитируется, и для режима "только чтение" форма не занимает лишнего места.
Ответы: >>18195, >>18215
>>18190
Готово.
Буду избавляться от лишних элементов вроде квадратных скобочек. Интерфейс должен быть чистым и ясным.
Сорри, я случайно ломал комментирование. Сейчас должно работать.
>>18190
Ущербно.
Ответы: >>18216, >>18217
>>18215
Кот бы сомневался.
>>18215
На самом деле одна штука мне тоже кажется ущербной: нельзя сразу перейти в конец треда как раньше, и не очень удобно отвечать в тред (не на какой-то пост, а просто в тред) из конца. Я ещё подумаю, как это сделать красиво. Если есть идеи, предлагайте.
Ответы: >>18221
На Github будете переезжать?
Ответы: >>18221
>>18217
Так лучше? Форма двигается к постам, но не скрывается при "закрытии", а опускается в конец треда как и раньше.
>>18219
Нет, потому что я привык к меркуриалу. А зачем?
Ответы: >>18348
Я решил разделить паттерны для ссылки на пост и пост в нескольких тредах. Теперь чтобы добавить пост в другие треды, используется тег "thread" или три символа ">", а чтобы просто ссылку на пост – "post" и два ">", как и раньше.
Ответы: >>18265, >>18317
Если зайти в тред и нажимать на номер поста, то в форме внизу появляется нифига. Это так и задумано?
Ответы: >>18241
>>18240
Да. Для этого есть кнопка "ответ". Я решил так сделать после того, как уже не раз новички пытались вводить рефлинки вручную, поскольку действие на номере поста неочевидно.
Ответы: >>18247
>>18241
Возможно стоит убрать его подчёркивание из белой темы.
Ответы: >>18248
>>18247
Почему? Это всё ещё ссылка.
>>18230
Теперь ответ на многотредовый пост не будет многотредовым по умолчанию. Не знаю, плюс это или минус. Посмотрим по ходу дела, всё равно многотредовые посты мало кто использует.
Наркоман, зачем плейсхолдеры в value забабахал? HTML5 на дворе, я их руками удалять должен, что ли?
Ответы: >>18284
>>18283
Чего куда?
Ответы: >>18285
>>18284
Текст в полях видишь?
Ответы: >>18286
>>18285
В тех что в форме? Вижу, через атрибут placeholder.
Странно. Когда браузер пытается обновить весь тред (300 постов), он зависает секунд на 10. Это только у меня так?
/staticpage/help/ то обнови.
Ответы: >>18316, >>18323
>>18315
А что с ним?
Ответы: >>18317
Ответы: >>18318
>>18317
Ок, обновлю.
Ты мне скажи, почему у меня браузер лагает при обновлении большого количества постов. Из-за переотрисовки картинок?
Ответы: >>18319
>>18318
Не знаю. Профайлер включить в девтулзах попробуй. Firefox, например, всё ещё однопоточный JS использует, в том числе для своего GUI, поэтому если код выполняется долго без перерывов, то всё остальное ТОРМОЗИТ.
Ответы: >>18320
>>18319
Профайлер включить в девтулзах попробуй.
В фоксе он пишет "загрузка…" и больше ничего. В хромиуме на тестовом сервере попробовал, пишет какие-то невнятные данные.
>>18315
Так лучше?
Я ещё хочу сделать кнопку для превью сообщения перед отправкой. Но для этого нужно сначала вынести препарсер и парсер в отдельный модуль, чтобы с ним было удобно работать из разных мест.
Ответы: >>18324
>>18323
Лучше, но лучше упомнять, что сообщение будет в обоих тредах, иначе может быть непонятно.
Поправил, чтобы если мы открываем страницы скрытого тега, его треды показывались. Если пользователь явно решил просмотреть треды с этим тегом, то факт его скрытия должен игнорироваться.
>>18221
Этот ваш меркуриал хипстерский какой-то.
Ответы: >>18350, >>18358
>>18348
Да нет, это ваш гит хипстерский. В энтерпрайзе чаще как раз меркуриал используется, а гит для СПО.
Мне на самом деле пофиг. Просто меркуриал я уже знаю, а гит надо изучать. А так как никто пуллреквестов не делает, обойдётесь с жидхабом.
>>18348
У гита наркоманский интерфейс, без путинки не разберёшься.
Использование JS заметно моргает при замене таймзоны. К тому же это не 100% эффективный способ. Я собираюсь добавить в настройки переключалку таймзоны и использовать стандартные джанговские механизмы для вывода времени в том формате, который хочется пользователю.
Ответы: >>18378
>>18377
Поставил. Сейчас вы должны пойти в настройки и выбрать любимую таймзону.
Ответы: >>18380
Ответы: >>18382
>>18380
Янипонел, почему у всех постов сменилась таймзона на выбранную мной?
Ответы: >>18385
>>18382
Потому что таймзона в настройках это та, с которой будет отображаться время везде. Таймзона, в которой посты написаны, нигде не сохраняется.
Внезапно и без объявления войны я вернул старые цитаты. Теперь цитаты без указания источника будут рендериться как раньше:
>цитатка
, а с указанием оного как позже:
источник
цитатка
Ответы: >>18416
>>18403
Ну наконец-то.
Ответы: >>18418
>>18416
Я в час ночи открыл борду с ведроида, листал старый тред и увидел прекрасный зелёный курсив цитаты :3
>Server Error (500)
Поиск не работает.
Ответы: >>18526
>>18514
Ща проверю.
Ответы: >>18527
>>18526
Таки не всё ещё совместимо с джангой 1.8. Откачу.
Если открыть изображение из сообщения, открывающегося в попапе (т.е. сообщение, на которое даётся ответ) и открыть изображение, то при исчезании попапа изображение тоже исчезает, это норма? По-моему, раньше было по-другому.
Ответы: >>18611
>>18610
>это норма
Да.
>раньше было по-другому
Нет.
Можно в принципе сделать чтобы картинка была не в том блоке, где попап, а отдельно где-нибудь в конце. Тогда не будет исчезать. Это критично?
Ответы: >>18612
>>18611
>Это критично?
Нет, но было бы неплохо.
Ответы: >>18613
>>18612
Ок, в свободное время займусь этим.
Вместо парсинга с тройным знаком ">" сделал поле в форме для указания списка дополнительных тредов (для многотредового поста).
Сверишлось величайшее достижение со времени первого коммита! Удалено поле user_agent в постах, которое было зарезервировано изначально с какой-то задумкой, но так никогда и не использовалось.
Ответы: >>18656
>>18655
А задумка была по видимому ещё с влорчана. Предполагалось, что тематика будет окололоровской и интересно будет видеть UA пользователей.
На радость котяткам бордовцам рефакторю JS-код картинок, панели форматирования и другие.
Ответы: >>18687
>>18686
Теперь они должны работать чуть быстрее и жрать на пару байт меньше (повыносил в переменные некоторые селекторы jquery).
Кстати, что почитать про то как работают селекторы?
Ответы: >>18689, >>18690
>>18688
Я про jquery селекторы. Насколько они ленивы, кэшируются ли и так далее.
Ответы: >>18691
>>18690
Чёрт знает. Кэширование это вряд ли, т.к. DOM может меняться когда угодно и вне jQuery. Там используется Sizzle, кажется.
Ответы: >>18692
>>18691
>Кэширование это вряд ли, т.к. DOM может меняться когда угодно и вне jQuery.
Т.е. один и тот же селектор можно сохранить в переменную и использовать каждый раз после изменения? Например, если я сделал $('.thread').length до и после добавления в тред нового поста, будет ли мне выдано разное?
Ответы: >>18693
>>18692
Если ты пишешь $('.thread') каждый раз, то новое значение будет каждый раз. Если сохраняешь в переменную, то, наверное, нет? Проверь. Я на жквери то и не пишу почти никода :3
Ответы: >>18700
>>18693
Да, так и есть. Сохранённое в переменную не обновляется.