Чтобы добавлять сообщения и комментарии, .

@tzirechnoy:
tzirechnoy

Прекрасный пример разбора полётов по оптимизацыи кода под процэссоры: cr.openjdk.java.net

Это разбор скорости перебора по массиву указателей и по спискам.

Там в комментариях написаны результаты автора ( это Aleksey Shipilev ) и выводы, к которым он пришёл. Кстати, несмотря на то, что это java, видно что с её JIT отличия от сишэчки минимальны (буквально в паре вычислений адреса по индэксным регистрам добавлено по регистру), а от плюсов вообще почитай никаких. И как джависты с таким прекрасным JITом умудряются такой тормозной отстой делать, что перл с питоном плачут в сторонке?

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

@AlexVK:
AlexVK

На Jpont есть , хм, своебразный человек yegor256.com , говорящий за то как вы вот все неправильно мыслите и неправильно програмируете.
По сути 2 доклада , это Объектно-ориентированное вранье youtube.com и ORM — это обидно youtube.com об одном и том же. Где то в начале он предлагает купить свою книжку на Амазоне, где он описал советы. А дальше он говорит о том какой у нас неправильный ООП который и не ООП а что ни на есть процедурное программирование. Много говорит за single responsibility который сформулировал не он.
Что тут не так. Довольно мало примеров "как правильно". По сути их нет, есть одни только теоретические рассуждения. Нет указаний на других авторов, занимающихся подобной практикой. Взять того же Мартина Фаулера. Он много говорит о том же что и Мартин писал лет этак 10 назад. Причём у Мартина в книгах куда богаче и понятнее.
Принцип тут — я тут вам немного расскажу, а всё остальное прочитаете в моей книге.
Примеры, не рассуждения, примеры. Этим берёт Файлер, вот вам код, вот это конкретно в нём неправильно и вот почему. Берём неправильно и делаем правильно. А так в общем то зёрна есть, в архитектуре java действительно хватает недостатков.
Геттеры и сеттеры, например, действительно зло, пришедшее со старого стандарта javaBeans, и т.к. заявлена поддержка всего ранее написанного то имеем то что имеем.

@AlexVK:
AlexVK

Понравился доклад по JMS youtube.com
Хотя и прошлогодний. Интересно коснулся раз тем — и о архитектуре LinkedIn, про NoSQL и про катастрофу 11 сентября.
Действительно, oc4j и ряд Oracle-вых приблуд — говно и ни нужно. С oc4j в своё время хорошо натрахались.

@schors:
schors

Зачем-то я теперь умею и Java. В зачаточном виде, но таки умею

@mismatch:
mismatch

youtube.com — !адекватное Java — интервью!

@AlexVK:
AlexVK

На стоп обожает выдавать такое
pastebin.ru

@Ilya-S-Zharskiy:
Ilya-S-Zharskiy

Про Spark расскажите кто-нибудь, PLZ!

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

Там на нём Kerio WinRoute зачем-то и openfire.

Спарки — клиенты, авторизация доменная.

Цепляются почему-то к частному (серому, внутреннему) IP-адресу, без проверки сертификатов.

Хочу сделать домен типа chat.example.com, прикрутить Mattermost и выпустить наружу (для мобилок, с привязкой к номеру).

jabber похерю наверн

@OCTAGRAM:
OCTAGRAM

Причина, по которой некоторые языки программирования вообще и Оберон в частности находятся в таком бедственном положении
В переводе про совместимость примечательна сноска
e Текущие реализации Java не поддерживают такое, но новые спецификации ясно требуют, чтобы все наши трансформации поддерживались.В оригинале доклада были ещё номера страниц в спецификации. То есть, как я вижу ситуацию, у индустрии была серьёзная проблема с обеспечением совместимости, и в спецификации Java английским по белому писали, что можно, а что нельзя допускать, и одновременно была целая эпопея со способами вызова из других языков:

* JDK 1.0 native method interface
* Netscape’s Java Runtime Interface
* Microsoft’s Raw Native Interface and Java/COM interface
* Java Native Interface
* Java Native Access

Одновременно несмотря на претензии типо-Java-вости и украденных идей со стороны некоторых адвокатов Оберона я что-то не припоминаю, чтоб было какое-то аналогичное соревнование, как лучше совместить код на Обероне с другими языками программирования. По ключевым словам «Oberon Runtime Interface» и «Oberon Native Interface» ничего не находится. А было ли что красть?

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

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

@OCTAGRAM:
OCTAGRAM

Заколебался, но разгрузил X-Wiki от большинства запросов. Теперь, только если историю ковырять, запрашивать ревизию или делать ещё что-нибудь достаточно необычное, запрос пойдёт в J2EE, что можно заметить по времени ответа в 3-7 секунд.

Новый наскоро сделанный движок на Аде не всё ещё делает красиво. Хлебные крошки сделал лишь бы соблюсти приличия. Ссылки для поделиться кривые. Страницы 404 не сделаны. Ну и прочее по мелочи.

@OCTAGRAM:
OCTAGRAM

Заглянул в список «Кто в онлайне» и не увидел никого с сайта, хотя я интегрировал их. Решил посмотреть, а что там с сайтом. Ну конечно, он опять не открывается! Правильно, а зачем обслуживать посетителей, когда есть другие, более интересные дела, такие, как сборка мусора? javaw.exe ест весь CPU, а страница так и не открылась. Придётся всё же заняться переносом вики на Аду. Достало!

@segfault:
segfault

Судя по цвету, он написан на смеси говна и мочи!

@ermine:
ermine

Мавен — говно! В нём ничего найти нельзя! Как в нём искать вообще нужный депендс?

@ermine:
ermine

Целый день гуглила-гуглила и переругивалась с @vt (дядечка втирал, что надо абстрагироваться!) и вроде бы определилась в выборе ембедед базы данных — LMDBJava. Что скажете?

@ermine:
ermine

Посоветуйте мне хорошую базу данных с API на яве (или котлине), но только embeded базу, не отдельный мега-пупер сервер типа Mongo.

@PoZitron:
PoZitron

Понадобилось работать в Eclipse. Запускаю, создаю проект, пытаюсь запустить отладку... чувствую, всё как-то долго. Всё время подвисают окна, процессы, отладка... работать невозможно! Постоянно виснет отладка, не реагирует на кнопки.
Короче, выяснилось что это известный баг, связанный с GTK3: bugs.launchpad.net
Есои добавить
export SWT_GTK3=0
перед запуском бинарника, то программа оживает!

@qzin:
qzin

думаю написать приложение на Java, которое будет записывать приличного (около 10к) переменных в SQL базу данных раз секунду примерно. Может, кто подскажет какую СУБД для этого лучше использовать? Конечно, желательно бесплатную, но коммерческие продукты также интересно.

@eof404:
eof404

@Autowired над полем или над set методом?

@qubit:
qubit

Сбер онлайн выдает
Error 500: java.lang.RuntimeException: com.rssl.phizic.business.BusinessException: org.hibernate.exception.GenericJDBCException: Cannot open connection

@SannySanoff:
SannySanoff

Пишут, что Эклипс (www.eclipse.org) загнулся, в том смысле, что его пользуют уже меньше людей чем IDEA.

Для меня вообще удивительно, что оно так долго тянулось. Уже 10 лет назад как должно было рухнуть. Не было ни единого момента со времени выхода IDEA 1.0 до сегодняшнего дня, чтобы Эклипс был хоть в чем-то лучше ИДЕИ для программирования на жабке.

via proggit — reddit.com

@lurker:
lurker

пыха или жаба gist.github.com ну-ка угадай-ка

@SannySanoff:
SannySanoff

All people rejoice! intel multi-os engine заопенсорсили! Транслятор (и отладка через JDWP) с жабы на нативный ios, с отличным перфомансом (почти как у libgdx). Большое дело! Apache license!

github.com

@eof404:
eof404

Валится NoSuchMethodExceptions.
Валится через раз. Как такое может быть?
Иногда метод появляется, иногда исчезает.

@luarviq:
luarviq

Когда появится Java-библиотека, которая будет обращаться с JavaScript объектами как со своими родными, можно будет грабить корованы. Я джва года ждал этого.

@SannySanoff:
SannySanoff

О, Интеловская замена почившего RoboVM обещает быть опенсорсной! Это прекрасно!

MOE open source announcement

software.intel.com

@lex2d:
lex2d

СЯУ про openjdk.java.net оно как бы прикольно, конечно, но что-то мне кажется я на пенсию раньше пойду, чем оно дойдет до продакшена, если вообще в джаву попадет.

@SannySanoff:
SannySanoff

Сегодня узнал, что нелюбители SQL дошли в Spring Boot / JPA до такого, что теперь вот есть метод

interface <SomeTableEntity> {
long countByTimeBetweenAndSomeLengthGreaterThan(Date date, Date date1, int i);
}

И оно во время стартапа автоматически парсит имя метода (!!!) и догадывается, какое where надо написать, и генерит код, который генерит SQL

select count(*) from SomeTable where time between :date and :date1 and some_length > :i

Наверное спека какая-то есть, хез. С ума сойти, еще ж можно сгенерировать имя метода прямо голосом через распознавание голоса, совсем офигели.

Cпонсор этого пста — производительность application серверов на стартапе (когда это все генерится) и в рантайме, когда вместо одного большого оттюненного селекта вызываются тысячи этих мелких методов, и когда "здравствуй рефакторинг" говорят рефакторщики и сразу по результатам "до свиданья, показатели производительности" говорят чуваки с БД.

@fillest:
fillest

java.net.UnknownHostException: dev-ololo: dev-ololo: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1496)
at kafka.server.KafkaHealthcheck$$anonfun$1.apply(KafkaHealthcheck.scala:61)
$ sudo cat /etc/hosts
...
127.0.0.1 dev-ololo localhost

серьёзно, блядь?

@fillest:
fillest

есть убунта, нужен kafka, для кафки нужна жаба. Жаба нужна кошерная, для продакшена. Есть проверенный готовый способ установки? Как я понимаю, есть три стула:
1) проприетарное бинарное говно с сайта оракла, которое нужно свитерить руками, сетапить сто путей, продираться потом через дюжину экранов стектрейсов и так далее
2) ppa-репа webupd8 какого-то мутного блоггера www.webupd8.org/p/about.html <webupd8.org> (популярная, но ну_ты_понел.жпг)
3) openjdk из убунтовых реп — это какое-то швабодное говно, которое наверняка будет тормозить ещё больше, возможно ещё и глючить? А то я наелся уже с говнологсташем стартов по 5 минут на ровном месте из-за какой-то неведомой хуеты с ssl-чего-то-там. Плюс оно естественно тухлое, нужна бы 1.8, а не 1.7. Или оракловая zver-сборочка почти не отличается от openjdk? Инторнеты невнятны, вон чувак пишет что openjdk у него глючило, а починилось переходом на оракл stackoverflow.com

Хотелось бы, наверно, на 1й стул, но с минимальными повреждениями цнс и мозга

@SannySanoff:
SannySanoff

UBER (таксисты), ихний CTO плачет и кается, плачет и кается.

Начали "как положено" хипстерам, на Node.js + Json, но говорят, что внезано "unexpected cost of untyped json interfaces" когда дофига сервисов, короче, очень тяжело им. Ни в село, ни в красную армию.

Карочи, таперича у них движняк в сторону go/java, typed interfaces (свой RPC протокол), короче sanity постепенно comes back.

(По материалам infoq.com )

Я чего постоянно парюсь так с хипстеров и ихнего жабоскрипта? Потому что если их послушать, то они вроде ходят вертикально, и говорят, и программируют. И они считают их жабоскрипт и ноду серьезным продуктом на сервере. А я привык внимательно слушать людей, которые что-то серьезно заявляют, и предполагать что они не гонят пургу. Так вот, открытие: они просто не понимают, когда говорят о серьезных-то продуктах. Ну, типа, не шарят. Очень много дебилов в отрасли, одним словом. А парюсь я оттого, что привык внимательно и уважительно слушать, а они херню порют, и оттого у меня диссонанс. А если не слушаешь внимательно и уважительно, а сразу посылаешь учить паскаль, то возникает конфликт поколений. Короче, стороны не понимают друг друга.

Дао изреченное — не есть дао. Иллюстрация номер один.

@vt:
vt

Не показывайте ему эту ссылку, он такое не переживет — javapoly.com

@SannySanoff:
SannySanoff

v8project.blogspot.com

А вот когда в жабоскрипт введут опциональную типизацию и напишут (только благодаря этому! потому что смогут!) на нем наконец-то серверный Spring (springframework.org), он будет медленнее запускаться (startup) чем жабовый или быстрее? Вангую что к тому времени процессоры подтянутся и будут все те же 30-40 секунд.

@justonemore:
justonemore

Ничто в образовании, построенном полностью на Java, не отсеивает студентов из-за недостаточной гибкости их мозгов для понимания этих концепций. Как работодатель, я вижу, что 100%-Java школы начали штамповать выпускников курсов CS, некоторые из которых просто недостаточно умны для того, чтобы работать программистами с чем-то более замысловатым, чем Ещё Одно Бухгалтерское Приложение На Java, хотя они и управились со скрипом с «современной-упрощённой-для-тупиц» курсовой работой. Эти студенты никогда не справились бы с курсом 6.001 в Массачусетском Технологическом, или с CS 323 в Йеле, и, честно говоря, это и есть причина, почему, с точки зрения работодателя, диплом Массачусетского Технологического или Йеля имеет больший вес, чем диплом Дюка, который недавно стал Полностью-На-Java, или Penn University, который заменил Scheme и ML на Java, пытаясь преподавать на ней курс, который когда-то почти убил меня и моих друзей, CSE121. Дело не в том, что я не хочу нанимать умных ребят из Duke или Penn — я нанимаю их — просто мне гораздо сложнее понять, кто они. Раньше я мог сказать, что парень действительно умён, если он за несколько секунд может разобраться в рекурсивном алгоритме, или реализует функции, манипулирующие связными списками на основе указателей, с такой скоростью, с которой он может писать на листе бумаги. Но в случае выпускников школ Java я не могу сказать, имеет ли претендент проблемы с этими задачами, потому что у него просто не хватает соответствующего образования, или потому, что у него нет соответствующей части мозгов, необходимой для отличной работы в качестве программиста. Пол Грэхэм называет их Горе-Программистами.
Вам может быть интересно, может ли обучение объектно-ориентированному программированию (ООП) быть хорошим заменителем указателей и рекурсии как вычищающих курсов. Короткий ответ — нет. Не обсуждая достоинства ООП, можно просто сказать, что оно недостаточно сложно для отсеивания посредственных программистов. Преподавание ООП состоит в основном в запоминании нескольких словарных терминов, таких как «инкапсуляция» и «наследование» и заучивании ответов на множество вопросов о разнице между полиморфизмом и перегрузкой операций. Не сложнее заучивания знаменательных дат и имён на уроках истории, ООП ставит неадекватно простую задачу для того, чтобы отпугнуть первокурсников. Когда у вас проблемы с ООП, ваша программа все-таки работает, она просто становится сложной для поддержки. Якобы. Но когда у вас проблемы с указателями, ваша программа выдаёт Segmentation Fault, и вы понятия не имеете, что происходит, до тех пор пока вы не остановитесь, не сделаете глубокий вдох и не попытаетесь на самом деле заставить свой ум работать на двух уровнях абстракции одновременно.
Рекрутёры-использующие-grep, кстати, высмеиваются здесь, и для этого есть веские доводы. Я никогда не был знаком с человеком, который бы понимал Scheme, Haskell и указатели С, и не мог бы освоить Java за пару дней, и после этого писать код на Java лучше, чем люди, имеющие пятилетний опыт работы с Java, но попробуйте объяснить это среднему HR-биороботу.
habrahabr.ru

@Vugluskr:
Vugluskr

Завтра еду на JPoint. Не докладчиком, просто слушателем. Ни разу в жизни не был на конференциях по софту :) Тащемта, сам не очень понимаю почему эту захотелось посетить o_O

@Vugluskr:
Vugluskr

16-ая идея почему-то взбрыкнула и не захотела по умолчанию запускаться под системным jre, вместо него работала под встроенным. Херь в том, что встроенный — говняшка openjdk. При автокомплите на Map<K, V> это говно не предлагало нормальные HashMap, TreeMap и прочие ConcurrentHashMap, оно их ваще не ставило в список, но зато активно пихало какую-то несуразицу типа HashedMap. Я тупил, не мог понять в чём дело. И тут оно пизданулось громко по sigsegv, полез смотреть лог. А там, мать честная, jre running — openjdk, все дела. Как блять так, откуда?! Посмотрел в запускалку шелловскую, а они оказывается сделали что — раньше она искала последовательно в окружении IDEA_JDK, JDK_HOME, JAVA_HOME, "java" in PATH., а вот начиная с какого-то 14* билда она теперь ищет блять вот так: IDEA_JDK, ../jre, JDK_HOME, JAVA_HOME, "java" in PATH. То есть, если IDEA_JDK не выставить, то похую че там у тебя системное — оно будет крутиться на сраном опене.
А я уж думал багрепорты слать и ваще бесноваться всяко. Но хватило только принудительно указать правильный угол. Мир пока может спать спокойно

@SannySanoff:
SannySanoff

Продолжение драмы про то как MS закопал RoboVM и в продолжение к моему посту #2828904

Да, как я и предсказывал, вся команда осталась работать на MS/.NET, источник — twitter.com

Да, как я и предсказывал, афтар строит из себя дерево и отмазывается тем, что их прикрыли "because they didn't sell enough licenses to make it profitable for Xamarin" — reddit.com

Да, пользователи на форуме жалуются: "чувак, мы писали 2 года нашу игру, завтра релиз, ты и твои приятели получили бабла от продажи лавки Xamarin-у, и нас кинули, как же так чувак? <8-o ". Чувак рекомендует переводить все на дотнет, не медля и дня.

pbs.twimg.com а это сам афтар, "OOPS!" говорит нам его фотография.

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

@SannySanoff:
SannySanoff

Когда RoboVM (компилятор жабы для iOS) был куплен Xamarin-ом, все удивленно подняли брови и заподозрили неладное, потому что Xamarin это .NET, и жаба там ну вообще никуда. Ребята из RoboVM говорили, что это всё для общей пользы, для концентрации на дальнейшем развитии итп.

Когда MS некоторое время спустя купил Xamarin, все огорченно вздохнули и стали ждать неизбежного, а кто был с верой в доброту, тот спрашивал "как-то они там будут? надеемся на лучшее". Ребята из RoboVM говорили что-то там такое, но их никто не слушал.

Когда сегодня объявили о том, что MS убил RoboVM, как-то появилась определенность. Товарищи из LibGDX вон даже расписали план badlogicgames.com , а товарищам из Интела надо готовиться нести тяжкое бремя ответственности. Ребята из RoboVM не знаю, что там щас говорят.

Я с верой в доброту, и мне интересна судьба форка RoboVM, который полнофункциональный, но без некоторых важных фишек. Чо там коммьюнити? Что там главный афтор? Как-то он теперь людям в глаза смотреть будет? Может у них там какой рейдерский захват случился, афтор будет плакаться прилюдно что его кинули? А может МС ему бабла отсыпал для работы над iKVM или над Mono/iOS, и начальником поставил, и он теперь навостряет лыжи в новом направлении?

Интересны людские судьбы в жерновах капитализма. Ну и новые технологии, конечно.

@SannySanoff:
SannySanoff

Дооптимизился компилятором CN1 (микро-оптимизациями) до усрачки, но дальше уже нужно оптимизировать алгоритмы сверху, и поэтому перестал 8)

Заценил оптимизатор LLVM/CLANG (кстати уперся в его глюк и забил — он дожонглировался регистрами: пишет через один offset register, читает через другой через некоторое время, а смещение-то не сходится!).

На картинке сгенерированный код по симуляции стека и результат его компиляции для ARM. Так эта скотина все SP++ и SP-- вычисляет, и даже не изменяет сам регистр, а только индекс при регистре, когда выполняет последовательность операций. Получается тупа куча mov без inc/dec. Очень было приятно видеть такой уровень оптимизации, я доволен прогрессом в этой сфере. Микро-оптимизировать сишечку в таких условиях становится сложновато.



@SannySanoff:
SannySanoff

Шланг полтора часа уже компилит:

ID COMMAND %CPU TIME #TH #WQ #PORT MEM
10504 clang 97.4 95:07.42 1/1 0 12 137M

Я немного пригрузил егойный регистровый аллокатор. Там есть один метод....

BC_DUP(); / DUP /
PUSH_INT(73);
PUSH_INT(7);
CHECK_ARRAY_ACCESS(3, SP[-2].data.i); / IASTORE / ((JAVA_ARRAY_INT*) ((JAVA_ARRAY)SP[-3].data.o).data)[SP[-2].data.i] = SP[-1].data.i; SP -= 3; BC_DUP(); / DUP */
PUSH_INT(74);
PUSH_INT(17);
CHECK_ARRAY_ACCESS(3, SP[-2].data.i); / IASTORE / ((JAVA_ARRAY_INT*) (*(JAVA_ARRAY)SP[-3].data.o).data)[SP[-2].data.i] = SP[-1].data.i; SP -= 3;
BC_DUP(); / DUP /
PUSH_INT(75);
PUSH_INT(0); / ICONST_0 /
CHECK_ARRAY_ACCESS(3, SP[-2].data.i); / IASTORE /
((JAVA_ARRAY_INT*) (*(JAVA_ARRAY)SP[-3].data.o).data)[SP[-2].data.i] = SP[-1].data.i; SP -= 3;
BC_DUP(); / DUP /

Вот такого добра среднее количество, штук 800, и шланг собирается SP сделать регистровой переменной (я его убедил наконец-то).

Не, ну я, конечно, в таких методах не буду больше на этом настаивать, мне как-то долговато ждать билда.

@lex2d:
lex2d

Скачал тут идею 2016.1. Я то думал, когда они jre туда встроят, шрифты наконец-то поправят, ибо, типа, будут все контролировать и тд, а у меня чуть глаза не вытекли. И большинство советов сводятся к сносу встроенной и переключению на системную. Такой вот нежданчик.

@SolderStain:
SolderStain

itworld.com