Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 [9] 10 11   вперед  Ctrl      все
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
dakeiras
mayton
пропущено...

Упорство - это хорошая черта. Я уважаю упорных.

Но иногда упорство переходит в твердолобость.

Как мы объясним пользователю или кастомеру clash имен классов?

Ок, без проблем. Пусть будет Logger Name ( in most cases Class Name). Ок?

Да это ОК.

Был такой персонаж. Капитан Врунглель.
Он говорил - Как вы яхту назовёте - так она и поплывет.

Логгер - должен называться логгер. А никак не className. И вообще в современной JDK
не стоит завязываться на имя класса. И семантика должна быть как у логгера.
А не как у класса. Логгер - важен. Логгер может накрывать группу классов.
Имя логгера может браться откуда угодно. Он может быть динамичен. Но он не может
быть равен 1:1 с классом. Классы - сущность которой управляет класслоадер.
Логгеры - сущность которой управляем мы и бизнес.
7 авг 19, 19:52    [21944138]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
mayton
dakeiras
пропущено...

Ок, без проблем. Пусть будет Logger Name ( in most cases Class Name). Ок?

Да это ОК.

Был такой персонаж. Капитан Врунглель.
Он говорил - Как вы яхту назовёте - так она и поплывет.

Логгер - должен называться логгер. А никак не className. И вообще в современной JDK
не стоит завязываться на имя класса. И семантика должна быть как у логгера.
А не как у класса. Логгер - важен. Логгер может накрывать группу классов.
Имя логгера может браться откуда угодно. Он может быть динамичен. Но он не может
быть равен 1:1 с классом. Классы - сущность которой управляет класслоадер.
Логгеры - сущность которой управляем мы и бизнес.

Ок, согласен. Спасибо.

Чуть позже переименую переменную.
7 авг 19, 20:02    [21944142]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1733
dakeiras
Где я кого-то высокомерно оценивал? Можно пример или цитату мою?


А пожалуйста:
dakeiras
легкой и простой настройкой (в отличии от невменяемых настроек других логгеров)


dakeiras
По какому уровню Log4j? Совершенно не индустриальная библиотека, которая по стечению обстоятельств и отсутствия альтернатив стала популярной.
У неё совершенно упоротая концепция иерархических логгеров - абсолютно не удобная привязка к уровню логирования.
Непонятно почему нельзя было изначально сделать её нормально.


Достаточно?

dakeiras
В данном случае (как и в нескольких других в этой теме от других комментаторов) вы переходите на личности, зачем-то подразумеваете мою тупость и пр.


Вы сами первый начали.
Вообще начать тему с заявления "20 лет все фигнёй занимались а я тут пришёл и сделал намного лучше" - это подставится под сильную критику.

dakeiras
автор
То ли что не понимает, что документацию пишуют чтобы читать, а не чтобы высокомерно отвергать.

Не совсем понял, вы про какую документацию? Есть Вики, там довольно детально всё описано.
Никто ничего не отвергает.


Вам сразу указали на то, что нельзя использовать SimpleDateFormat в многопоточном коде. Что в его документации это явно написано.
Но зачем-то Вы упёрлись, что можно, что "я тестировал" (тут Шипёлёв привычно икнул).

Ну и вооще- предлагать всем библиотеку логирования, которая тащит с собой несколько мегабайт зависимостей (groovy-runtime) - это странной действо, заставляющее перейти на личность автора.
SDK это такая вещь, в которой размер имеет значение.
8 авг 19, 07:45    [21944291]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
Alexey Tomin,
+1
8 авг 19, 08:56    [21944323]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
Alexey Tomin,

Вы скачали Бобину? Попробуйте.
Удивитесь, насколько всё сделано лучше чем logback.

А так Ваша предвзятость обоснована уверенностью, что «всё уже изобретено» и всё новое (особенно от неизвестных авторов) - не нужно.

Советую менять настрой. Вот только краткий список проектов в Pipeline:
- Портирование BlackBox на GCLIB - автоматическое добавление логирования на этапе компиляции. Реализовано сейчас на Groovy AST и работает только с Груви кодом
- Step Up авторизационный сервер и валидация JWT без обращения к БД - при помощи regex, и настройкой доступа на авторизационном сервере (а не на сервере ресурсов) - в универсальной форме
- Универсальный CRUD GUI к HATEOAS сервисам на ReactJs

Из того что уже сделано:
- Pigeon - рассылки и push notifications (SOAP, REST)
- BlackBox - уникальный проект по автоматическому добавлению логирования с помощью аннотации (на уровнях от Ошибки с аргументами вызова, Вызова метода, Стейтментов - и до самого НИЖНЕГО уровня - expression). Работает на Груви AST API.
- Supplies - разные утилиты мелкие
Ну и сама Бобина.
8 авг 19, 11:18    [21944478]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
Ну и вооще- предлагать всем библиотеку логирования, которая тащит с собой несколько мегабайт зависимостей (groovy-runtime) - это странной действо, заставляющее перейти на личность автора.
SDK это такая вещь, в которой размер имеет значение.


Место на диске чтоли кончится?))
Вы похоже из любителей битовых масок в прикладных приложениях)
8 авг 19, 11:25    [21944491]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
dakeiras, по поводу скачать и попробовать. Я обещаю что когда-нибудь попробую.
Но до того как попробовать я обычно пытаюсь понять каково "прендазначение" вещи.
Например. Предназначение жопы - чтобы испражняться. Хотя есть некоторые
любители странного секса которые хотят погрузить в чью-то жопу свой крайний
отросток. И когда например мен на code-review приносят константы завёрнутые
в java interface - я просто спрашиваю. Ты что - любишь совокупляться в жопу?

Понятно да?

Предназначение. Ты должен сообществу объяснить предназначение твоей библиотеки.
Про BlackBox можешь даже не рассказывать. Форум не знает что это такое и никому
не интересны твои тестерские практики. Плевать на блек бокс. У нас - другие задачи.

Далее. По поводу Толстого Бобина.

И какую идею закладывал туда автор. Или какую философию. Обычно зрелость
продукта определяется этим. Например Log4j2 в режиме Async использует (косвенно)
зависимость от библиотеки неблокирующих очередей disruptor. Эта библиотечка
буферизирует не дисковый трафик а именно события. Events. Вот такая вот идея.
Хотя возможность асинхронной записи в файл тоже поддерживается но это другая
настройка.

За кадром остался вопрос перформанса. Ты так и не предоставил сообществу никаких
бенчмарков. Я по прежнему убёжден что Groovy генерирует самый медленный код
(для интенсивных вычислений) и никто меня не убедил в обратном. Грубо говоря
в линейке Java/Kotlin/Scala/Groovy, последний занимает последнее место. Груви - медленный
покемон в этом списке. И ты выкатил на общий суд тайм-критичную библиотеку взяв
за основу самый медленный компиллятор.
8 авг 19, 11:45    [21944516]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3186
Может вам будет полезен метод U.format(string, .. args) в библиотеке из соседней ветки.

20531307

Хорошего Вам дня!
8 авг 19, 12:01    [21944538]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1733
dakeiras
Вы скачали Бобину? Попробуйте.


Я вроде уже объяснил причину, почему не буду это делать.

dakeiras
Удивитесь, насколько всё сделано лучше чем logback.


У меня код очень многопоточный, с высоким требованием к производительности. После SimpleDateFormat дальше читать не интересно- если есть столь очевидная бага- зачем искать другие? Конкаренси баги могут стрелять очень редко и ОЧЕНЬ больно. Мне наших баг хватает. logback работает быстро и надёжно.

dakeiras
А так Ваша предвзятость обоснована уверенностью, что «всё уже изобретено» и всё новое (особенно от неизвестных авторов) - не нужно.


Нет.
Чтобы изобрести что-то хорошее, надо сначала понять то, что сделали предшественники.
Для тестов использовать JMH например. И показывать преимущество в виде конкретных тестов, которые каждый может запустить и получить результат.

Показать преимущество настройки в виде примеров, а не просто слов.

Ну и груви я только удаляю из кода- мне не нравится базовая идея (заметьте- я не говорю, что она плохая).

dakeiras
- BlackBox - уникальный проект по автоматическому добавлению логирования с помощью аннотации (на уровнях от Ошибки с аргументами вызова, Вызова метода, Стейтментов - и до самого НИЖНЕГО уровня - expression).


Я тут думаю, как очень нужную либу перевести с кодогенерации при компиляции на лямбды- потому что "добавление кода в компиляции"- это добавление проблем в отладке.
8 авг 19, 12:28    [21944565]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
Давайте здесь не обсуждать производительность Груви.
Это оффтопик.
Можно отдельную тему сделать. Если в кратце - Вы заблуждаетесь, это опять же МИФ, основанный на ОООЧЕНЬ ранних версиях (более 8 лет назад). Ещё раз повторю что используется @CompileStatic во всех классах Бобины, так что он даёт просто обычный Java код.
8 авг 19, 13:00    [21944613]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
Я уже даже приводил пример декомпилированного класса в этой теме, если охота - можно посмотреть и убедиться.
8 авг 19, 13:01    [21944614]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
автор
После SimpleDateFormat дальше читать не интересно- если есть столь очевидная бага- зачем искать другие

Мой богатый опыт подсказывает что что-то очевидно только при поверхностном ознакомлении.

Изначально ВСЕ экземпляры класса Bobbin были в ThreadLocal.
Так что не было это микроскопической баги с SimpleDateFormat.

Потом дизайн поменяли, и это стало актуально. Уже исправлено.
8 авг 19, 13:06    [21944623]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
автор
Ты должен сообществу объяснить предназначение твоей библиотеки.
Про BlackBox можешь даже не рассказывать. Форум не знает что это такое и никому
не интересны твои тестерские практики. Плевать на блек бокс. У нас - другие задачи.

Далее. По поводу Толстого Бобина.

И какую идею закладывал туда автор. Или какую философию. Обычно зрелость
продукта определяется этим. Например Log4j2 в режиме Async использует (косвенно)
зависимость от библиотеки неблокирующих очередей disruptor. Эта библиотечка
буферизирует не дисковый трафик а именно события. Events. Вот такая вот идея.
Хотя возможность асинхронной записи в файл тоже поддерживается но это другая
настройка.

За кадром остался вопрос перформанса. Ты так и не предоставил сообществу никаких
бенчмарков. Я по прежнему убёжден что Groovy генерирует самый медленный код
(для интенсивных вычислений) и никто меня не убедил в обратном. Грубо говоря
в линейке Java/Kotlin/Scala/Groovy, последний занимает последнее место. Груви - медленный
покемон в этом списке. И ты выкатил на общий суд тайм-критичную библиотеку взяв
за основу самый медленный компиллятор.


Из readme.md:

автор
Bobbin is a high-performance Groovy Slf4j-compatible logger designed for multi-threaded applications (especially those with persistent threads like batch and messaging applications).

Bobbin leverages the concept of Logback/Log4j2 sifting appenders while providing much more easier configuration using native Groovy/Java scripting expressions.


https://github.com/INFINITE-TECHNOLOGY/BOBBIN

Из Вики:

автор
Bobbin creates multiple isolated log files using a simple JSON configuration supporting Groovy Scripts to compute file names and other dynamic parameters during run-time.

Some of the File name segregation criteria include:

- Thread Name
- - Thread Group Name
- Class Name
- Log level
- MDC values
- Date
- Any other run-time parameters and their combinations
Bobbin leverages the concept of Logback/Log4j2 sifting appenders while providing much more easier configuration using native Groovy/Java scripting expressions.

Bobbin is high-performance logger optimized to be used in heavy load multi-threaded environments (with hundreds of persistent threads - especially those with persistent threads like batch and messaging applications).

It's CPU, GC and RAM footprint has been tuned to work as a primary logger within Spring stack, including Web context and JPA.


https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki

Не хотел этого говорить, но "не читал, но осуждаю"...

Насчёт Бенчмарка: будет в течении 3-4 дней:
- Однопоточная работа в 1 файл
- Однопоточная работа в много файлов
- Многопоточная в 1 файл
- Многопоточная в много файлов со смешиванием потоков
- Многопоточная в много файлов без смешивания потоков (1 поток на файл)

автор
Ну и груви я только удаляю из кода- мне не нравится базовая идея (заметьте- я не говорю, что она плохая).

Вот и причина Вашей предвзятости.
В своё время лень было изучить - значит "не понравилась идея".

Как тут написали, люди 10 лет делали Груви, а тут такой кадр нарисовался - и ему идея не нравится.
Зато появился котлин - сразу всем понравилось :) Потому что он продвинут при нечестной конкуренции.
И не поддерживает и половины функционала Груви.

автор
Для тестов использовать JMH например. И показывать преимущество в виде конкретных тестов, которые каждый может запустить и получить результат.

Спасибо за инфо, изучу и возможно использую.

автор
Я тут думаю, как очень нужную либу перевести с кодогенерации при компиляции на лямбды- потому что "добавление кода в компиляции"- это добавление проблем в отладке.

Зато лямбды это легко отлаживать.
8 авг 19, 13:17    [21944639]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Мы все ждем тестов с @Jmh.

Нужно убедительное доказательство перформанса. Иначе - это не интересно.
8 авг 19, 13:18    [21944641]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
Валентин Колесников,

автор
Может вам будет полезен метод U.format(string, .. args) в библиотеке из соседней ветки.

20531307

Хорошего Вам дня!


Мощь. Обязательно изучу.
Уже сейчас её можно использовать с Бобиной, добавив в билд - и настроив format в Bobbin.json:

"format": "U.format(\"DateTime = {} Message = {}\", dateTime, message)",
8 авг 19, 13:22    [21944647]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
mayton
Мы все ждем тестов с @Jmh.

Нужно убедительное доказательство перформанса. Иначе - это не интересно.


Оки. Скоро будет бенчмарк.
8 авг 19, 13:22    [21944648]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1733
dakeiras
- Многопоточная в 1 файл
- Многопоточная в много файлов со смешиванием потоков


Этого достатоно. Если интересует скорость, то потоков будет много, а читать десятки файлов логов- так себе занятие.

dakeiras
автор
Ну и груви я только удаляю из кода- мне не нравится базовая идея (заметьте- я не говорю, что она плохая).

Вот и причина Вашей предвзятости.
В своё время лень было изучить - значит "не понравилась идея".


Да я писал даже на нём. Работало. Для примитивных проектов типа UI пойдёт. Писать многопоточную математику- ад.

dakeiras
Как тут написали, люди 10 лет делали Груви, а тут такой кадр нарисовался - и ему идея не нравится.


Вы не понимаете разницы между "мне не нравится" и "Совершенно не индустриальная библиотека, которая по стечению обстоятельств и отсутствия альтернатив стала популярной.", "в отличии от невменяемых настроек других логгеров" и свежего перла "продвинут при нечестной конкуренции"?

dakeiras
Зато появился котлин - сразу всем понравилось :) Потому что он продвинут при нечестной конкуренции.
И не поддерживает и половины функционала Груви.


Понравился он далеко не всем и не сразу. Кто-то дальше любит scala, кто-то ceylon, кто-то groovy. Каждому своё.
А про "нечестную конкуренцию"- вот это интересно- расскажите, пожалуйста.

dakeiras
автор
Я тут думаю, как очень нужную либу перевести с кодогенерации при компиляции на лямбды- потому что "добавление кода в компиляции"- это добавление проблем в отладке.

Зато лямбды это легко отлаживать.


Я дебажил и грувивскую "магию", и самописную кодогенерацию и лямбды.
Можете верить, можете нет- но лямбды дебажить проще всего.
Особенно "прелестно" втыкать в ошибки самописного мавен-плагина. Вот у нас в 5% билдов почему-то падает с безумным стектрейсом- я даже браться за это не хочу...
8 авг 19, 13:39    [21944671]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
автор
А про "нечестную конкуренцию"- вот это интересно- расскажите, пожалуйста.


Элементарно. Забашляли Гуглу чтобы Идею протолкнуть в Android Studio и далее - забашляли чтобы сделать Котлин офиц. языком для Android.

Котлин вообще появился без надобности, нет у него use case.
8 авг 19, 13:46    [21944679]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
я уже молчу, что сама Intellij Idea застряла по функционалу в 2000х.

Не могут до сих пор нормальную поддержку Gradle сделать.
8 авг 19, 13:50    [21944682]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1733
dakeiras
автор
А про "нечестную конкуренцию"- вот это интересно- расскажите, пожалуйста.


Элементарно. Забашляли Гуглу чтобы Идею протолкнуть в Android Studio и далее - забашляли чтобы сделать Котлин офиц. языком для Android.


Бред какой.
IDEA сдала Android Studio потому что работники гугла пользовуются перешли на IDEA. Вот и всё.
У них вообще в разработки порядка особо нет и деньги не сделали бы ничего.
Поддержали котлин в андроид потому что решили, что это хорошо для андроид и всё.

dakeiras
Котлин вообще появился без надобности, нет у него use case.


Бреслав прямым текстом говорил, что цели создания котлина (в порядке его приоритетов):
- потому что это интересно
- у фирмы достаточно денег, чтобы выделить работников для разработки неведомой фигни с нулевой одходностью
- они хотели поднять свой статус как фирмы
- на java писать надоело и непродуктивно, а scala/groovy не вызывали энтузиазма.
8 авг 19, 13:51    [21944684]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Сборщиков много. И среда вовсе не обязана поддержать их всех на 100%.

Понимаете да? Это не ее ответственность поддерживать всех и вся. Иначе стоимость
техподдержки превысит вообще прибыль от существования проекта.
8 авг 19, 13:54    [21944686]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
mayton
Сборщиков много. И среда вовсе не обязана поддержать их всех на 100%.

Понимаете да? Это не ее ответственность поддерживать всех и вся. Иначе стоимость
техподдержки превысит вообще прибыль от существования проекта.


Это смешно.

Есть 2 сборщика: Maven и Gradle.

И среда:
1) Обязана их поддерживать
2) В 2019 НЕ должна изобретать свою сборку ("проект\модули")

Иначе такая среда не нужна. Есть индустриальный стандарт в Java.
8 авг 19, 13:57    [21944689]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 294
Alexey Tomin
dakeiras
пропущено...


Элементарно. Забашляли Гуглу чтобы Идею протолкнуть в Android Studio и далее - забашляли чтобы сделать Котлин офиц. языком для Android.


Бред какой.
IDEA сдала Android Studio потому что работники гугла пользовуются перешли на IDEA. Вот и всё.
У них вообще в разработки порядка особо нет и деньги не сделали бы ничего.
Поддержали котлин в андроид потому что решили, что это хорошо для андроид и всё.

dakeiras
Котлин вообще появился без надобности, нет у него use case.


Бреслав прямым текстом говорил, что цели создания котлина (в порядке его приоритетов):
- потому что это интересно
- у фирмы достаточно денег, чтобы выделить работников для разработки неведомой фигни с нулевой одходностью
- они хотели поднять свой статус как фирмы
- на java писать надоело и непродуктивно, а scala/groovy не вызывали энтузиазма.


Вы просто подтвердили мои слова.

Тут есть ещё момент - суды между Oracle и Google касательно Java в Android.
Но Гугл должен был выбрать Груви, а не котлин.
8 авг 19, 13:59    [21944694]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
dakeiras
mayton
Сборщиков много. И среда вовсе не обязана поддержать их всех на 100%.

Понимаете да? Это не ее ответственность поддерживать всех и вся. Иначе стоимость
техподдержки превысит вообще прибыль от существования проекта.


Это смешно.

Есть 2 сборщика: Maven и Gradle.

И среда:
1) Обязана их поддерживать
2) В 2019 НЕ должна изобретать свою сборку ("проект\модули")

Иначе такая среда не нужна. Есть индустриальный стандарт в Java.

Я sbt пользуюсь. И он хреново поддерживается. Что мне делать?
8 авг 19, 14:02    [21944697]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
dakeiras
Тут есть ещё момент - суды между Oracle и Google касательно Java в Android.
Но Гугл должен был выбрать Груви, а не котлин.

Зачем ты в технический топик затаскиваешь суды крупных контор?
Это вообще никаким боком не имеет отношения к теме топика.

Обсуждаем Толстого Робина-Бобина.
8 авг 19, 14:04    [21944699]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 [9] 10 11   вперед  Ctrl      все
Все форумы / Java Ответить