LINUX.ORG.RU
ФорумTalks

Внешний вид Java-приложений

 


1

1

Вот почему приложения которые написаны на Java, как например Netbeans имеют такой уродский интерфейс и не менее корявые шрифты? И почему они жрут так много ОЗУ?

★★★★★
Ответ на: комментарий от fjfalcon

Черт, шрифты в редакторе выглядят отлично, у меня они какие-то слишком «острые», не ужели все дело в патчах?

Jefail ★★★★
()
Ответ на: комментарий от f1xmAn

А приложения, написанные на Java, как например Intellij Idea, выглядят красиво и имеют отличные шрифты :p

Да, у явофанов специфический вкус.

andreyu ★★★★★
()
Ответ на: комментарий от Legioner

Потому что то не коммерческое ПО не для хомчков и на вылизанность интерфейса всем пофиг.

Вижуал студия вполне себе коммерческое ПО, но багов в ней выше крыши, а интерфейс кривой до безобразия.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Вижуал студия вполне себе коммерческое ПО, но багов в ней выше крыши, а интерфейс кривой до безобразия.

Последний раз её пользовал лет 8 назад и никаких багов не заметил. К интерфейсу тоже претензий не было, всё было понятно и работало как ожидается. Могу только предположить, что положение монополиста развращает, если это действительно так, а не субъективное впечатление.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Последний раз её пользовал лет 8 назад и никаких багов не заметил.

Не помню, что было тогда. Но интерфейс студии испоганился сразу после «шестерки».
И да, багов было валом и тогда.

К интерфейсу тоже претензий не было, всё было понятно и работало как ожидается.

Ну да, особенно работа диалога настройки проекта в последних студиях. Вот где месиво говнокода.

Могу только предположить, что положение монополиста развращает, если это действительно так, а не субъективное впечатление.

Ну да, поэтому только в 2015 версии они обещают, что наконец-то осилят c++11. Видимо плагином к clang ;)

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Вообще не преследовал такую цель, просто показал шрифты по запросу человека.

А что, в 2015 году еще можно кого-то удивить наличием второго монитора?

fjfalcon ★★★
()
Ответ на: комментарий от fjfalcon

А что, в 2015 году еще можно кого-то удивить наличием второго монитора?

Видимо вы думали, что можно.

andreyu ★★★★★
()
Ответ на: комментарий от stevejobs

Звучит как предложение о помощи. Спасибо. Скрипт я уже закончила, просто убила на него слишком много времени.

Принт ошибок проблема всех жаб. Таже фигня с JIRA и Сonfluence, хотя у них они более понятные.

Murg ★★★
()
Ответ на: комментарий от Murg

Ну хз, в случае ошибки положено кроме кода ошибки (как как он может быть кроме 5хх - офигенно информативно) писать стектрейс. В стектрейсе есть названия классов которые сдохли, это как бы намякивает что за ошибка. Гораздо информативнее чем core dumped для б-мерзких Си и Крестов :) Ну и строчка на которой ошибка в исходнике. Можно открыть исходник софтины в IDE, включить remote debug, поставить брейкпоинт на эту строчку и спокойно понять что там творится. В случае concurrent-fuck можно на этой строчке дампить состояние в лог-файл.

Какие твои предложения по улучшению? Я не совсем понимаю, в чем проблема. Может быть, твой ответ заставит меня писать более понятные ошибки, если я конечно пойму, что такое «более понятные».

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Да это вообще фетиш всех жаваненавистников — ругать её ошибки. При том, что в 80% случаев по полному стектрейсу баг находится за одну минуту, ибо огромная куча контекста. И это просто счастье после многих других языков.

Другой вопрос, что многие жавапрограммеры не рассматривают дамп стектрейса в лог как ошибку, а для них это нормальное поведение. Тут они не правы, стектрейс в логе должен появляться либо при включенном DEBUG-е, либо при неожидаемом кодом поведении и последнее должно фикситься. Но это применимо к любому ЯП. Только в жаве баг зачастую заканчивается стектрейсом в логах, а на каких-нибудь плюсах упавшим сервером и потерянными данными пользователя.

Legioner ★★★★★
()
Ответ на: комментарий от stevejobs

5хх - офигенно информативно)

Админу, для работы с амазоном, хватает. При такой ошибке, сразу понятно, что отвалилось.

В стектрейсе есть названия классов которые сдохли, это как бы намякивает что за ошибка

Я админа, мне это не надо. Мне пофигу, как прога сдохла, мне нужен ответ амазона, 403 или 404 ;)

В случае concurrent-fuck можно на этой строчке дампить состояние в лог-файл.

Вся та инфа мне тоже не нужна, мне нужны названия файлов, которые не скопировались, что бы потом их скопировать. Дамп может писаться в лог, если у проги это просят ( --verbose )

Если запускать синхронизацию buckets, то пока оно посчитает, что нужно копировать, пройдет уйма времени, а если есть список файлов, то я могу заскриптить копирования минут за 3-5.

Я не совсем понимаю

Если честно, то просто «многа букафф» Парсить логи не удобно.

Какие твои предложения по улучшению?

У тебя программерский подход. У нас сисадминов, немножко другие нужды :)

В моем случае, прога просто должна выдавать ответ от Амазона, а не как упала прога с прочими стек трейсами. Вот лог тулзы который я выковыряла из сервака.

Нормальный лог: http://pastebin.com/Bu7JmPvu

То, что выдает Jenkins, когда оно не работает: http://pastebin.com/hmDxB4d0 Для меня это китайский.

На серве тулза пишет в /var/log/s3s3mirror.log В том файле, можно найти ошибку, но для этого нужно писать парсилку логов и делать еще одну задачу в jenkins, которая тоже может изза чегонибудь отвалиться. В этой ситуации, я остаюсь без бакапа и оповещения... analpain.jpeg

Проблема в том, что, если тулзу запустить в ручную, то она вывалиться с 3й ошибкой, которая всегда одна и таже. На пример: http://pastebin.com/U2Zrhzfp

#target/conf/log4j.xml сушествует :)

Админу весь этот спам не нужет. Мне лично нужны следующие строчки лога:

--------------------------------------------------------------------

pool-1-thread-92 INFO http.AmazonHttpClient - Unable to execute HTTP request: Connection to http://trololo-bucket.s3.amazonaws.com refused

--------------------------------------------------------------------

Thread-2 WARN s3s3mirror.KeyLister - s3getFirstBatch: error listing (try #0): com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 43CAE28A01BABAD1), S3 Extended Request ID: 5Fpy+mbQ5WCRJT0PKJeNzcJ0A3uLFiGwC6qZrciX+yjZ9PRX/1Y/XU9drPOCuCFN

--------------------------------------------------------------------

+ при ошибке refused или 403, оно должно писать, что оно в тот момент копировало.

В данный момент тулза этого не делает. --------------------------------------------------------------------

которые выглядят так:

--------------------------------------------------------------------

ERROR: s3://trololo-bucket/some_file refused

--------------------------------------------------------------------

ERROR: s3://trololo-bucket/some_file Access Denied

--------------------------------------------------------------------

ERROR: s3://trololo-bucket/some_file $INSERT_SOME_REASON

--------------------------------------------------------------------

+ нужна «включалка дебага» в стиле -vv, если нужен полный JABBA лог.

И так далее. Если s3cmd не сможет что-то сделать изза неправильных ключей, оно «человеческим языком скажет» «authentication failure», без лишнего JABBA спама.

Это облегчает парсинг логов, не жрет место на хардах и IO нормальный. Так же, одна понятная строчка ошибки облегчает автоматизацию.

Это конкретный пример, но тем же болеют другой JABBA cофтины, типа Confluence, JIRA и так далее.

Murg ★★★
()
Ответ на: комментарий от Legioner

фетиш всех жаваненавистников

У меня фетиш читаемых логов, а не простыня на китайском, изза 1й ошибки. Читай ниже.

Murg ★★★
()
Ответ на: комментарий от Murg

Если программа обнаружила внутри себя баг, она должна выплюнуть как можно большую простыню. Тебе читать её не обязательно, тебе надо её выслать разработчикам, которые должны пофиксить баг.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Программа выплевывает простыни на китайском, потому что, я ввела неправильный пароль. Это не баг.

С разработчиком я общаюсь в гитхабе. У людей много хотелок, а у него мало времени.

ЗЫ: так я щас прям и отправлю лог, с моей инфой продакшена, а на зачистку, у меня время не особо есть.

Murg ★★★
()
Последнее исправление: Murg (всего исправлений: 2)
Ответ на: комментарий от Murg

Программа выплевывает простыни на китайском, потому что, я ввела неправильный пароль. Это не баг.

Это баг. Если ты ввела неправильный пароль, выплёвывать стектрейс программа не должна. Она должна написать сообщения вида Invalid Password.

С разработчиком я общаюсь в гитхабе. У людей много хотелок, а у него мало времени.

Ну это уже другой вопрос. Приоритет у такого бага, наверное, и вправду будет не очень высокий.

ЗЫ: так я щас прям и отправлю лог, с моей инфой продакшена, а на зачистку, у меня время не особо есть.

Обязанности репортить баги у юзера нет, конечно. В данном случае, наверное, достаточно простого описания, если баг легко повторяется.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

выплёвывать стектрейс программа не должна

Выплевывает это . Я не уверенна, как оно называется.

достаточно простого описания

Угу, Я создала для этого «хотелку»

То что мне не нравится, это то, что многие жабо-проги ведут себя вот так нехорошо с логами. Даже проприетарные, за которые платишь денежку.

UDP: саппорт JIRA, очень долго искал, почему у меня аватарки не показывало, когда нашел, не смог профиксить, потому-что не знал как менять системную локаль в лине. facepalm.jpeg. Логи JIRA в том же стиле. Это отнимает много времени, которое я могла бы пустить в другое русло.

Murg ★★★
()
Ответ на: комментарий от Murg

Выплевывает это . Я не уверенна, как оно называется.

Стектрейс это называется.

То что мне не нравится, это то, что многие жабо-проги ведут себя вот так нехорошо с логами. Даже проприетарные, за которые платишь денежку.

В Java слишком легко писать такой код без нормальной обработки ошибок. С одной стороны он в целом работает нормально. Проблема только в некрасивом выхлопе. Тем более, что у Java-программиста взгляд замыливается. Мол написано же: "... File Not Found ... target/conf/log4j.xml (No such file or directory)". Если в C не написать обработку ошибок, там всё что угодно может случиться. С другой стороны да, проблема такая есть и с точки зрения сисадмина наверное лучше таки научиться читать эти выхлопы, весь мир под себя не исправишь.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

та выхлопы я читать умею, парсить неудобно. У меня не один кластер с жабами. Если бы был 1-10 серверов, я бы не ворчала.

Murg ★★★
()
Последнее исправление: Murg (всего исправлений: 1)
Ответ на: комментарий от Murg

красивую ошибку «Unable to execute HTTP request» можно написать, если ты заранее предусмотрела возможность ошибки

выдуманный пример:

Connection conn = getConnection();
if (null == conn) {
   println("Unable to execute HTTP request: Connection Refused");
} else {
   conn.doSomething();
}

Стектрейс - это как правило непредусмотренная ошибка.

Connection conn = getConnection();
conn.doSomething();

Программист не описал, что будет, если вызвать doSomething из несуществующего объекта.

Программа сама не может написать, «connection refused», потому что не обладает искусственным интеллектом.

В другом языке программирования (по крайней мере C, C++) в аналогичном случе (обращение к неразмеченной области памяти) было бы тупое Access Violation.

Т.е. в данном случае выдается не просто ошибка, а крутая ошибка, позволяющая техподдержке понять в чём дело.

А ты (пользователь) можешь рассматривать их просто как нетипизированное 500 Server Error без объяснения причин.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Хм. Там специфичная прога, ошибок не так много, а если програмист что-то забыл, то можно включить --verbose, что бы оно выдавать stack trace. Так вроде в большинстве прог.

Хм... на сколько сложно выучить C++?

Murg ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.