Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения
пятница, 22 сентября 2023 г.
Java без java-desktop
Сегодня коллега по JetBrains пришёл хвастаться своей реализацией diff viewer для браузера. Он в каком-то исследовательском отделе питерской лабы работает, который разрабатывает шустрый редактор для Web. Пишут на Java 21 и немного на Kotlin, но Java2D (даже java-desktop) не используют.
суббота, 17 июня 2023 г.
CodeForces
Мишка продолжает решать задачи не только с предыдущих ЕГЭ по информатике, но и на CodeForces. Вчера у него не сошлась мемная задача и он позвал меня. Ему все числа печатали как нули...
Он предпочитает решать на C, ибо писать чтение входных данных проще. Сначала я посоветовал ему переписать тот же алгоритм на Java и он сработал как надо. То есть дело не в этом.
Потом мы вставили отладочную печать в сишный код и обнаружили, что
Он предпочитает решать на C, ибо писать чтение входных данных проще. Сначала я посоветовал ему переписать тот же алгоритм на Java и он сработал как надо. То есть дело не в этом.
Потом мы вставили отладочную печать в сишный код и обнаружили, что
sqrt из math.h для любых чисел возвращает 0. Это только на серверах CodeForces, локально программа работает правильно. Куда можно пожаловаться - мы так и не нашли...
среда, 14 июня 2023 г.
CodeForces
В процессе подготовки к ЕГЭ по Информатике Мишка решает разные задачи не только с предыдущих ЕГЭ по информатике, но и на сайте CodeForces. Пару дней столкнулся с такой задачей на динамическое программирование.
Мы с ним совместными усилиями придумали алгоритм, но он не работал. Сначала он писал Превышено ограничение времени на тесте 6, потом Неправильный ответ на тесте 6.
Я подключился на Java, но тоже отвалился по времени на тесте 6. Потом подумал и объединил два вызова print - это позволило мне отвалиться по времени на тесте 8. Это показало мне, что алгоритм правильный и, в результате, я добился полного решения. Использование
После этого я долго пытался понять, что не так с его кодом на C. И всё-таки нашёл ошибку - он выводит результат в формате
Мы с ним совместными усилиями придумали алгоритм, но он не работал. Сначала он писал Превышено ограничение времени на тесте 6, потом Неправильный ответ на тесте 6.
Я подключился на Java, но тоже отвалился по времени на тесте 6. Потом подумал и объединил два вызова print - это позволило мне отвалиться по времени на тесте 8. Это показало мне, что алгоритм правильный и, в результате, я добился полного решения. Использование
StringBuilder и одного вызова print сильно ускорило приложение за счёт использования памяти.После этого я долго пытался понять, что не так с его кодом на C. И всё-таки нашёл ошибку - он выводит результат в формате
"%d ". И заменой его на "%lld " я получил полное решение.
четверг, 2 июня 2022 г.
И каков результат?
Прикольную задачку обнаружил на просторах Интернет - даже меня заставила задуматься:
int i = (byte) + (char) - (int) + (long) - 1;System.out.println(i)
воскресенье, 22 мая 2022 г.
Второй тур
Сегодня в МФТИ турнир по информатике в формате CodeForces. Мишка решил четыре задачи на Python, но две из них превысили ожидаемое время. Я захотел ему помочь, попытавшись переписать его алгоритмы на Котлин, но меня подвела последняя IDEA.
Я минут 15 убил на попытки создать простой Котлин-проект, чтобы можно было вызывать
Задачи заковыристые, с подвохом. Имея набор тестов можно было бы додебажиться до правильного решения, но их не дают - приходится черепанить. Первая задача - самая прикольная, ибо куча слов в описании математически сводится до варианта:
Я минут 15 убил на попытки создать простой Котлин-проект, чтобы можно было вызывать
main, но двумя разными способами у меня сделать это не получилось. А ведь полгода назад это работало как часы. Пришлось плюнуть и переписать на Java. Хорошо, что простые Java-проекты там ещё не сломаны.
Задачи заковыристые, с подвохом. Имея набор тестов можно было бы додебажиться до правильного решения, но их не дают - приходится черепанить. Первая задача - самая прикольная, ибо куча слов в описании математически сводится до варианта:print(n == 1 ? 1 : 0)
четверг, 2 сентября 2021 г.
Алгоритм НОД
Мишка тут пишет свой Minecraft с блэкджеком и Graphics2D. Понадобилось ему посчитать наибольший общий делитель. И вот что он нашёл на просторах StackOverflow. Красиво:
int a = Math.abs(first);
int b = Math.abs(second);
while (a != 0 && b != 0) {
if (a > b) a %= b;
else b %= a;
}
int r = a + b;
понедельник, 12 июля 2021 г.
ГовноКод
Интересно иногда посмотреть на то, как лучше не писать, пока внезапно не обнаруживаешь свой код. С другой стороны, комментарии показывают, что это не совсем ужас-ужас.
Лично я могу привести тут свои аргументы, почему это у меня так получается. Только затем, чтобы не писать скобки тут:
А комментарии про оптимизацию на кофеварках - какая-то дичь...
Лично я могу привести тут свои аргументы, почему это у меня так получается. Только затем, чтобы не писать скобки тут:
"time: " + (ms2 - ms1) + " ms"А комментарии про оптимизацию на кофеварках - какая-то дичь...
пятница, 9 июля 2021 г.
Настырный HR
Некоторое время назад получил такое письмо:
Сергей, добрый день!Интересно, где нашла? Никакой конкретики по зарплатам и задачам, посему просто выбросил. Но они продолжают писать:
Я искала лучших Java разработчиков и нашла ваше резюме. Хочу предложить вам рассмотреть позицию в компанииреклама. Вот некоторые детали:
Это развивающийся стартап...
Хотела узнать, прочитали ли моё предыдущее письмо, а то, переживаю, вдруг не дошло. Я буду рада рассказать подробнее, когда вам было бы удобно созвониться?Созвониться? Зачем? Но они продолжают настаивать:
Ну что ж, так и не дождалась ответа от вас, видимо совсем вас не убедили мои аргументы :) В любом случае, была бы рада узнать, какие проекты вам могли бы быть интересны в будущем, чтобы предлагать более релевантные. Останемся на связи?Какие аргументы? В чём убедили? Похоже кто-то слил резюме в рекрутинговое агенство, а те и рады стараться...
воскресенье, 23 мая 2021 г.
О программировании
Недавно прочитал, что пять часов отладки помогут сэкономить пять минут на чтение документации.
Однако, за последние годы я убедился, что эти пять минут на чтение устаревшей документации не избавят вас от пяти часов отладки. Но это не отменяет важности чтения документации.
Однако, за последние годы я убедился, что эти пять минут на чтение устаревшей документации не избавят вас от пяти часов отладки. Но это не отменяет важности чтения документации.
четверг, 17 декабря 2020 г.
среда, 2 декабря 2020 г.
понедельник, 16 ноября 2020 г.
Java var
В очередной раз делал рефакторинг и обратил внимание, что IDEA предлагает сделать
var для неё. Весьма удивился, ибо это был не Kotlin, а Java. Оказывается этот JEP появился ещё в Java 10. И даже на habr его обсуждали. Надо будет поизучать, что я ещё мог пропустить. А ведь когда в Oracle работал - был на острие, а сейчас наш master работает только на Java 8 и на Java 11.
вторник, 28 июля 2020 г.
IntelliJ IDEA 2020.2
Встречайте новую версию! Там и про моё написали:
В новом окне Problems вы увидите список ошибок и предупреждений для текущего файла с описаниями проблем. Кликните правой кнопкой мыши по ошибке, чтобы перейти к проблемной строке, и исправьте ее с помощью Alt+Enter.
вторник, 2 июня 2020 г.
Ссылка на метод
Я уже писал про ссылку на метод, но у неё оказался ещё забавный side effect. Рассмотрим два способа передать метод для отложенного создания некоего класса:
1.
2.
Отличия этих способов проявляются при первом обращении к классу FooBar. В первом случае сначала будет сделан запрос, а потом уже загружен класс с диска и создан, а во втором - сначала загружен с диска. Это заметно влияет на startup performance...
1.
EventQueue.invokeLater(() -> new FooBar())2.
EventQueue.invokeLater(FooBar::new)Отличия этих способов проявляются при первом обращении к классу FooBar. В первом случае сначала будет сделан запрос, а потом уже загружен класс с диска и создан, а во втором - сначала загружен с диска. Это заметно влияет на startup performance...
воскресенье, 17 ноября 2019 г.
суббота, 16 ноября 2019 г.
JFuture 2019


Провели конференцию. На сами выступления я не попал, но обратил внимание, что многие делали презентации с использованием Kotlin. На стенде основной наплыв был в перерывах, но и между ними приходили люди, так что скучать нам не приходилось. Я отвечал за организацию игры Code Golf, поэтому сталкивался только с Java-разработчиками.Конференция была русскоязычная и с общением проблем не было. Однако, удалось пообщаться с нашим докладчиком Mala Gupta и я понял, что из-за долгого отсутствия опыта у меня есть проблемы с восприятием английской речи “на слух”. Надо чаще ездить по конференциям и практиковаться.
вторник, 12 марта 2019 г.
Java.net blog post
Написал очередную статью про разное поведение обработчика клавиатуры на разных платформах. Пишите комментарии...
среда, 6 марта 2019 г.
Java.net blog post
Не прошло и трёх лет и написал очередную статью в продолжение этой темы. Пишите комментарии...
четверг, 28 февраля 2019 г.
Исключительный СберБанк
Куда катится оракул?
Мы сейчас переводим IDEA с JDK 8 на JDK 11 и обнаружили забавный баг: после нажатия правой кнопки Alt перестаёт работать левый Alt, а значит лесом идёт вся навигация и большинство пользовательских шорткатов - помогает только перезапуск IDE.
За дело взялся я и обнаружил, что ещё три года назад в Oracle поменяли файл AWTEvent.m, пытаясь сделать из правой кнопки Alt что-то вроде AltGr для macOS. Проанализировав изменения я осознал, что они завели статическое поле
Пытаюсь разобраться во всей этой машинерии, ибо простой фикс мне не нравится. Наверняка там будут ещё сюрпризы...
За дело взялся я и обнаружил, что ещё три года назад в Oracle поменяли файл AWTEvent.m, пытаясь сделать из правой кнопки Alt что-то вроде AltGr для macOS. Проанализировав изменения я осознал, что они завели статическое поле
altGRPressed = NO, которое меняют на YES при первом нажатии правого Alt. И больше никто и никогда не ставит это поле в состояние NO.Пытаюсь разобраться во всей этой машинерии, ибо простой фикс мне не нравится. Наверняка там будут ещё сюрпризы...
Подписаться на:
Сообщения (Atom)


