GluonHQ
Недавно, и вполне заслуженно меня назвали по сути динозавром. Потому что я предпочитаю assembler вместо Си.
Но речь сейчас о другом.
Просто представьте, что уже много лет(лет 10 минимум) есть решение, позволяющее писать единый код практически на все платформы(linux, winodows, macos, android, ios и даже web).
Это решение зародилось давным давно, зовут его JavaFX, вроде как официальный выход - 2008 год.
Это очередной шедевр от Sun Microsystems, который до сих пор(без какого-либо развития данной библиотеки) прекрасно себя чуствует и имеет существенные достоинства по сравнению с соврменными решениями.
Для вас flutter весом? А с JavaFX сравнивали?
А еще есть компания GluonHQ, которая стала его поддерживать и развивать.
Просто подумайте - то что я говорю - является единственным решением позволяющим действительно писать один код для всех платформ. При этом организация UI просто на высшем уровне.
Почему эти наработки не в топе? А в топе флаттеры и веб фреймворки?
Что вы думаете об онлайн-курсах? Поделитесь мнением!
Онлайн-курсов становится все больше, и нам интересно собрать статистику, чтобы лучше понимать запросы читателей Пикабу.
Пожалуйста, поделитесь своим мнением!
Учу Java
Всем привет! Спецы по Java, скажите, почему в ответе после точки столько нулей и единица? С математикой у меня конечно не айс, но не на столько же)
За отсутствие отступов извините 🫣 сегодня уже начал писать по человечески)
Upd: ответ получен, благодарю всех! Спасибо так же за наставления и подсказки. Теперь буду правильно фотографировать экран, писать не в блокноте, жать 200 и цитировать Шекспира (на будущее тем, кто не смог ответить на поставленный вопрос, но очень метко нашел мои непрофессиональные недостатки 😁).
System.out.println("Хорошего всем дня!")
"Сам себе экосистема ч.3" - быть? Хочу услышать ваше мнение!
Друзья! Думаю многие мои давние читатели помнят о цикле статей "сам себе экосистема", где я стараюсь вдохнуть новую жизнь в девайсы 10+ летней давности путем разработки собственных клиентов нужных мне сервисов! Уже вышло две статьи из этой рубрики ( Сам себе экосистема: Как я адаптировал старый смартфон под современные реалии и написал клиенты нужных мне сервисов Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2 ). Сейчас, вот, держу несколько своих девайсов на Android 2.2 и потихоньку пилю наработки ещё нескольких нужных мне приложений: клиент Сбера на СМСках (по сути, удобная обертка над 900 с виджетами), актуальная погода на неделю вперед, вьювер карт OpenStreetMap и трекинг посылок. ВКшечка и ютубчик, как мы помним, уже есть. Давайте устроим голосование, не одному ли мне это интересно и быть ли третьей статье из рубрики "сам себе экосистема"?
ЧТО НУЖНО ЗНАТЬ ПРОГРАММИСТУ, ЧТОБЫ ПРОЙТИ СОБЕСЕДОВАНИЕ
☕ Часть 1: что нужно знать джависту
Язык
Основное:
- Java Core (основные механизмы языка: типы данных, циклы и тд)
- коллекции
- исключения
- дженерики
- аннотации (про них я, кстати, писал статью на хабр)
- функциональные интерфейсы и Stream API
Достаточно общего понимания и умения отвечать на собесах:
- многопоточность
- сборщик мусора
- устройство памяти JVM
- общее устройство JDK
Курс по Java от Oracle
Фреймворк (Spring)
Основное:
- Spring MVC
- Spring Data JDBC
- основы работы Spring: IoC, DI, бины и тд
- разница между Spring и Spring Boot
Для общего развития:
- Spring Security
Курс по основам Spring
Система сборки
- Maven
- Gradle (дополнительно)
👨💻 Джуниор
Помогите найти игру с нокии
Игра была про мага, с кнопочного телефона, 2д
Искала по названию Wizard, находила что-то похожее
Помню что в стартовой локации были скелеты которые кидались костями
Не рекурсией единой. Решаем задачи с деревьями, используя очередь
В предыдущих частях мы познакомились с рекурсивным подходом решения деревьев. В этой части мы воспользуемся стэком.
Рекурсия далека от идеала.
Рекурсия чаще всего используется только во время собеседований (а этот цикл статей именно направлен на подгтовку к собеседования). В промышленной разработке её чаще избегают изза потенциальных следующих потенциальных проблем:
Криво написанная рекурсия может выполняться бесконечно (в "лучшем" случае это приведет к ошибке переполнения стэка). В худшем программа повиснет (особенно если программа однопоточная).
Изначально чаще всего под стэк выделяется не более 1мб памяти а это значит что рекурсивная функция сможет вызвать саму себя где то от 10 до 20 тысяч раз. (размер можно легко увеличить с помощью параметра -Xss но стоит помнить что у JDK есть ограничения по верхней границе - обычно до 1 ГБ)
Рекурсия сложна для понимания, особенно новичкам.
Высокое потребление памяти - каждый раз спуская на уровень ниже мы позволяем сборщику мусора удалить ссылки используемые на верхних уровнях - и это не ошибка тк все объекты используемы выше текущего уровня будут использованы когда мы вернемся "снизу"
Очеред (или Стэк) - популярный подход в решении задач на деревья.
Во многом, задача на деревья определяется тем, как мы можем проитерироваться по всем узлам. В рекурсии мы вызываем рекурсивную функцию и передаем ей наследники. В случае же с очередью или стэком мы используем следующий трюк:
Добавляем корневой элемент в очередь
Проходим по всем элементам очереди и ранее добавленные узлы
Если наследники узла не пусты добавляем в очередь опять
Обходим дерево в ширину.
Распечатаем все значения дерева сверху вниз, распечатывая значения на каждом уровне слева направо, как гирлянду.
Желаемый порядок распечатки - сверху вниз, слева направо.
Что такое очередь и как ей пользоваться?
Для начала познакомимся с интерфейсом очереди (Queue) в Java. Очередь представляет собой FIFO (first in, first out - первый зашёл, первый вышел) структуру. В нашем случае потребуется два метода:
add - добавить в очередь
poll - вытащить первого из очереди (элемент который бы добавлен раньше других)
Как именно мы будем выполнять обход дерева?
Обходить дерево мы будем следующим способом:
Добавим в очередь корневой элемент
"Вытащим" добавленный элемент и положим в очередь его наследников
Повторим 1-2 шаги пока в очереди ничего не останется
Изобразим эти действя по шагам:
Движемся слева направо. Красными стрелками указаны "вытаскиваемые" из очереди элементы.
На графике выше вы могли бы заметить, что после момента добавления 4-х элементов больше элементы не добавляются, так как у каждого из 4-х узлов нет наследников.
Теперь напишем код описанной выше логике
И так как запомнить данный подход если он попадется на собеседовании? Я бы рекомендовал держать в памяти две вещи:
условие while (!queue.isEmpty())
queue.poll() - вытаскивание элемента
В следующих статьях мы будем использовать очередь для решения задач, связанных с деревьями. Кому интересна промышленная разработку приглашаю в котовскую телеграм группу