Закреплённый топик для ссылок на фичреквесты. Сюда можно писать свою идею, я заведу отдельный топик для обсуждений и добавлю в шапку.
✅ https://linuxtalks.co/forum/linuxtalks-co/36
https://linuxtalks.co/forum/linuxtalks-co/38
✅ https://linuxtalks.co/forum/linuxtalks-co/40
✅https://linuxtalks.co/forum/linuxtalks-co/42
https://linuxtalks.co/forum/linuxtalks-co/43
✅ https://linuxtalks.co/forum/linuxtalks-co/49
✅ https://linuxtalks.co/forum/linuxtalks-co/79
https://linuxtalks.co/forum/linuxtalks-co/60
https://linuxtalks.co/forum/linuxtalks-co/90
https://linuxtalks.co/forum/linuxtalks-co/112
✅ картинки в маркдауне
https://linuxtalks.co/forum/feedback/411
✅ https://linuxtalks.co/forum/feedback/416?lastmod=1654255613198

Высота у неё такая же, что и у квадратной. Просто ширина меньше.
Мои 10 звёзд спокойно и в один ряд помещаются.
«Мои 10 звёзд спокойно и в один ряд помещаются.» это при текущем размере шрифта. если шритф станет больше (настройки браузера) они вылезут.
Не могу открыть тему, в которую меня скастовало: 403.
P.S. Как картинки загружать-то?
В любом случае звёзды отдельной строкой как-то не очень выглядят. Можно просто вернуть на первоначальное место и сделать, чтобы количество звёзд росло медленнее, чем линейно. Например вот так:
static int starCount (int score) { int stars = 0; int n; Deque<Integer> d = new ArrayDeque<Integer>(); d.add(1); d.add(1); d.add(1); for(;;) { if (stars < 3) { n = 1; score = score - n*100; if (score < 0) { break; } stars = stars + 1; } else { n = d.pollLast() + d.peekLast(); d.addFirst(n); score = score - n*100; if (score < 0) { break; } stars = stars + 1; } } return stars; }Тогда количество звёзд будет расти следующим образом:
хз. бери гитхаб, присылай патч.
Регистрировать новый аккаунт на GitHub не охота, поэтому отправлю патч тут.
https://github.com/cocucka-dev/lorsource/blob/master/src/main/java/ru/org/linux/user/User.java:
@@ -30,6 +30,9 @@ import java.sql.SQLException; import java.sql.Timestamp; +import java.util.ArrayDeque; +import java.util.Deque; + public class User implements Serializable { private static final int ANONYMOUS_LEVEL_SCORE = 50; public static final int ANONYMOUS_ID = 2; @@ -278,37 +281,41 @@ return getStars(score, maxScore, true); } - private static int getGreenStars(int score) { - if (score < 0) { - score = 0; + private static int getStarCount(int score) { + int stars = 0; + int n; + + Deque<Integer> d = new ArrayDeque<Integer>(); + d.add(1); + d.add(1); + d.add(1); + + for(;;) { + if (stars < d.size()) { + n = (int) d.toArray()[stars]; + } else { + n = d.pollLast() + d.peekLast(); + d.addFirst(n); + } + score = score - n*100; + if (score < 0) { + break; + } + stars = stars + 1; } -/* if (score >= 600) { - score = 599; - }*/ - - return (int) Math.floor(score / 100.0); - } - - private static int getGreyStars(int score, int maxScore) { - if (maxScore < 0) { - maxScore = 0; - } - if (maxScore < score) { - maxScore = score; - } -/* if (maxScore >= 600) { - maxScore = 599; - }*/ - - int stars = getGreenStars(score); - return (int) Math.floor(maxScore / 100.0) - stars; + return stars; } public static String getStars(int score, int maxScore, boolean html) { StringBuilder out = new StringBuilder(); - int stars = getGreenStars(score); - int greyStars = getGreyStars(score, maxScore); + int stars = getStarCount(score); + int greyStars; + if (maxScore == score) { + greyStars = 0; + } else { + greyStars = getStarCount(maxScore) - stars; + } if (html) { out.append("<span class=\"stars\">");@cocucka, что скажешь? Предлагаю вернуть звёзды на изначальное место и изменить систему расчёта их количества на вышеописанную.
Вот у @cetjs2 должно быть 22 звезды, а вы ему только 11 насыпали. Видимо, потому, что даже если звёзды передвинуть под ник, то всё равно 22 штуки многовато. А по моему алгоритму у него будет 8 звёзд. Заодно четырёхзвёздочники перестанут быть краснокнижными существами.
По мне так чем проще – тем лучше. Линейный рост, имхо, меньше вопросов вызовет, но и более 5 звёзд у ника даёт ощущение разговора с Брежневым. Может лучше сделать звёзды разноцветными? Типа до 500 простые зелёные, за 5 зелёных давать одну серебрянную, за 5 серебрянных – золотую. Не каждая птица долетит до пяти золотых.
А за 5 золотых - библию в простом переплёте.
По-моему, начисление score уже достаточно нетривиально, чтобы вызывать вопросы у тех, кто пытается понять, как оно работает. Собственно, я вообще считаю, что пользователям достаточно просто знать, что чем больше звёзд, тем дольше будешь добираться до следующей — понимать механизм работы необязательно. В профиле рядом со score отображать количество, при котором появится следующая звезда. Т. е., например, 350 / 500. (При наведении на 500 показывать поясняющую надпись.) Любителям “игоря” такой принцип должен быть вполне знаком. Для любознательных где-нибудь на FAQ-странице привести вышеуказанную таблицу и описание алгоритма. Если что, я лично готов объяснять, как оно работает, всем, у кого возникнут вопросы.
Мне такая идея не очень нравится, обилие цветов слишком перегружает информационный фон. Всё-таки цвета лучше использовать для выделения информации, а не как отдельную смысловую единицу. (Тут ещё стоит учитывать существование разных тем и пользовательских стилей.)
Ещё неплохо бы время написания сообщения перенести в ту же строчку, что и user-agent (с тем же размером шрифта):
sudopacman ★★★★★★ <тут может быть комментарий о пользователе> Последнее исправление: sudopacman 14.06.22 20:01:06 (всего исправлений: 2) Windows / Firefox / 14.06.22 19:51:48 [Ответить на это сообщение] [Показать ответ] [Ссылка]А почему не по степеням двойки или тройки?
Потому что эта функция лучше подходит и не нужно городить никаких кусочных функций.
2^x на положительной полуоси кусочная?
2^n не подходит для маленьких значений score, поэтому нужна кусочная функция.
50*2^n идеально подходит:
Слишком медленно.
Тогда уж 2^(6+2n)
Эта ещё медленнее.
Как я понимаю @sudopacman имел ввиду скорость роста порога, а не количества звёзд.
Нет, неправильно понимаешь.
Ты хоть на график посмотри, прежде чем такое предлагать.
Ну вообще эту формулу я писал как альтернативу формуле sorrow.
Ты какие хочешь для неё коэфициэнты?
Молодец, только она ещё меньше подходит, чем его.
Я хочу другую функцию.
Ну положим первая звезда 128 скора, вторя 256 скора, третья 512 скора, четвёртая 1024 скора.
Помоему вполне хорошо.
Это формула 2^(5+n)
А по-моему — нет.
А ты предлагал вообще 2^(6+2n).
Это sorrow предлагал, я только чуть чуть поправил.
Так когда по твоему мнению должна быть первая и вторая звезда?
https://linuxtalks.co/forum/feedback/33?cid=2243
Первая при 100, вторая при 200?
Это позор, мы как программисты должны считать по степеням двойки, это символ професии.
То есть 64 128 256 512 1024
«Мы»?
Любое натуральное число можно представить в виде суммы степеней двойки.
Ты не знаком с концепцией круглого числа?
Это нуль что ли?
Круглое число это число в котором значение имеет либо только один порядок, либо все порядки имеют одинаковое значение.
В посте https://linuxtalks.co/forum/feedback/33?cid=2243 @sudopacman предложил считать по круглым числам десятичной системы, а я думаю что мы должны как программисты брать круглые числа из двоичной или троичной системы.
Тут не только программисты
Знаком. АПВС? :P
Потому что нахожу странным что ты свободно говоря на русском языке не знаешь такой особенности русской культуры, а может и не только русской культуры.
Концепция круглого числа как явления культуры происходит отсюда:
https://mathworld.wolfram.com/Rounding.html
А искусственное число можно?
Что такое «искусственное число»?
Которое состоит из сплошной химии и немножко ГМО
42
Можно просто стакать 5 звёзд в одну “большую” звезду (другого цвета)
Я уже предлагал это @crypt, кстати, но его ответа не помню, если он вообще был
На dxdy так сделано. У меня синдром утёнка, возможно
Но ЛОР мне нравится больше! Про LT вообще молчу 😶
это код писать надо. я же не программист. я даже с цветом этих звезд не могу определиться, т.к. кому-то зеленые яркие, а кому-то серые погашенные.
Как серые и можно стакать в зелёные 🙂 Типа, заслуженный тролль. 10 звёзд = 2 зелёных = …
Тролль-лейтенант?
пожалуй. но код писать надо. если бы вы предложили патч, другое дело. а тут и так в движке непочатый край работы.
Патч я уже предложил, а код пусть джависты пишут 😉
вот в том-то и дело. код кому-то надо писать. я не джавист, но пытаюсь и помогаю сосиске, как могу. ты ссылку на lt в профиле на лоре поставил?
Солидарен. Я тоже помогаю сосиске, как могу
ссылку на лт прописал в профиле на лоре?
Я пока не могу логиниться на ЛОРе. Чуть позже ситуация может измениться
https://linuxtalks.co/forum/feedback/33?cid=2612
и еще тут используется шаблон, который я плохо понимаю. под картинку просто убрать сложнее. если ты патч предложишь, я потестю.