• Как выровнять элемент RecyclerView по правому его краю?

    @red-barbarian
    Все работает. Все правое.)
    Вообще, все делается так:
    делаем макет элемента RecyclerView.
    например
    <LinearLayout ...>
     <CardView>
    <TextView />
    </CardView>
    </LinearLayout>

    т.е. лайаут , внутри карточка, внутри текст (или элементы и др layout)
    Затем на основе элементов (R.id.text_view) делаем свой ViewHolder - элемент которые будет показывать наши данные.
    Затем на основе макета элемента и данных делаем свой Адаптер. в котором описано создание ViewHolder - ов, и их связывание с данными.
    Затем при создании (инициализации в onCreate) мы устанавливаем LayoutManager для Recycler
    Т.е.
    Если мы хотим Recycler - строки на всю ширину экрана одна за одной сверху вниз, то
    наш элемент
    будет иметь
    высоту warp, ширину match
    В редакторе мы его так и увидим.
    Recycler это изображение клонирует и подставляет данные.
    Замечание. старайтесь Уменьшать количество Layout в макете. Часто можно несколько заменить одним, например RelativeLayout. Это сильно увеличит быстродействие.
    Ответ написан
    Комментировать
  • Уместно ли пользоваться готовыми решениями не разобравшись в решениях "из коробки"?

    @red-barbarian
    можно применять библиотеки, но как ни крути, со временем вы упретесь в требование знать сам фреймворк так и библиотеки к нему.
    применение облегчает жизнь, и применять их часто полезно. но что делать когда ваш проект упрется в производительность или в ограничение памяти. часто эффективное применение библиотек требует знания самой платформы. иногда может потребоваться сделать что-то нетривиальное.
    Ответ написан
    Комментировать
  • Как передать в контроллер ObservableList из другого класса?

    @red-barbarian
    Filter пустой.
    Все работает.
    В другом окне создать фильтр, и из этого окна вызвать tableView.setItems
    Окно с табл должно быть создано. Конечно.

    Небольшое замечание по проекту.
    Пишите тесты. Они проясняют. Не будет таких моментов.
    Ответ написан
  • Компьютер для Android?

    @red-barbarian
    Узкое место это озу. Если кроме студии запускать хром например, то память не хватает. Думая минимум нужно 8гб. (и все же иногда мало).

    второе. Монитор важен. Лучше внешний. С текстом еще куда ни шло , но для размещения кнопочек и вьюшек на лейаутах приходиться сворачивать все кроме этого макета. Это напрягает.

    остальное терпимо.
    ну естественно подключение в инет, вайфай
    Ответ написан
    Комментировать
  • Как можно оптимизировать данный код сортировки в Java?

    @red-barbarian
    У Вас есть в Компараторах две части
    1. сравнение с нул
    2. сравнение неких полей.
    сравнение с нул дублируется. это уже плохо. нужно выносить за пределы этих двух классов.
    сравнение двух полей однотипно. т.е. взяли некое поле и сравнили его компареТу. тоже похоже дублируются.

    Можно сделать свой компаратор, но с параметром -
    будет примерно так
    sort(new MyDeviceComparatorOn(Device::getIn))
    Ответ написан
    5 комментариев
  • Как прокачать навык разработки архитектуры информационной системы?

    @red-barbarian
    Получить знания можно из книг. Получить навыки только из опыта.
    В частности, сделать архитектуру, получить рабочую модель. Затем внести изменение. Понять сколько времени и сил стоит это изменение. Понять как малейшее изменение может вызвать каскад по всей программе. Понять как изменение в чём-то ломает все на другом конце программы. Почитать что написал через три месяца. Понять почему важно разбивать на модули и правильно наименовать.
    Показать другим, понять что писать нужно максимально просто как для человека с топором.
    Ну потом можно почитать про SOLID и гибкую разработку. Про TDD. Прочитать шаблоны и зачем они. Если начинать с книг, то риск что шаблоны только усложнят систему.

    Архитектура не бывает правильной. Первая цель что бы работала. Вторая легко сопровождалась.
    Ответ написан
    Комментировать
  • Что написать на Python новичку, чтобы удостовериться в своих знаниях?

    @red-barbarian
    ну кроме стандартных чатов сервер-клиент, можно предложить что рекомендуют в java:
    -текстовый квест
    -простую sql базу. (реализация простых запросов sql, хранение данных в таблицах)
    кроме того
    изучить Qt, джанго
    попробовать машинное обучение, нейронные сети. сделать например свой определитель иностранного языка. скачать дамп википедии и создать бота который можэет говоить по теме.)
    кроме того
    рефакторинг своего текста. тупо сидеть и по пять минут выбирать наилучшее наименование для переменной, функции. структуры.
    кроме того
    посмотреть, посетить митапы питона. узнать что в тренде и к чему лежит душа.
    Ну после митапов идей будет много. и желание попробовать.
    кроме того
    github.
    ...
    можно много придумывать если язык становится не целью а средством.
    Ответ написан
    1 комментарий
  • Как перемножить 2 потока (Stream API)?

    @red-barbarian
    Посмотрите flatMap.
    Внутри его сделайте перемножение строки на второй стрим
    Ответ написан
    Комментировать
  • Эмоциональное выгорание, перегрузка. Как победить, восстановиться?

    @red-barbarian
    1.) Высыпаться (не только выспаться, но высыпаться)
    2) Менять сферы деятельности. Конечно сериалы хорошо, но зачем?
    Для интенсивности можно выбрать:
    Изучение программирования (можно разбить на направления)
    Тренажерка
    добавить то что вам будет полезно и важно, например английский язык, время для друзей и близких, полезное хобби.
    Деятельности должна быть полезные и важные. Если вы поймете ее важность, то и отторжения не будет. Возможно усталость, но желание заниматься не пропадет. Просто нужно вовремя менять такие сферы.

    Не тратте время (вернее свое внимание) на сериалы и проч. вещи. (например котиков в соц сетях)
    Посмотрите Максима Дорофеева. Возможно Вам понравится.
    Ответ написан
    1 комментарий
  • Почему (пси1|V|пси1)=0 и почему (пси1|V|пси2) не равно нулю?

    @red-barbarian
    <1|2> = 0
    так как собственные функции H0
    Физический смысл - В системе с H0, состояния 1 и 2 стабильные и никогда не перейдут в другое (например 1 в 2 или 2 в 1)
    Если мы добавляем в такую систему возмущение V, то общий H = H0+V
    и собственные функции уже не совпадают с 1 и 2. Т.е. в такой системе эти состояния не стабильны. И возможен их взаимный переход. итого получается
    <1|H|2> = <1|H0|2> +<1|V|2>
    <1|H|2> = <1|V|2>

    это и дает результат 2.8

    Забегая далее. Так как V это небольшая величина, то можно найти решение H0+V приближенно опираясь на собственные функции H0.
    Физический смысл: есть достаточно стабильная система. (Притом хорошо рещаемая.). Если в нее добавить небольшое возмущение, то это будет выглядеть как стабильные состояния с маловероятными переходами между этими состояниями.
    Ответ написан
    Комментировать
  • Подключение библиотек в java?

    @red-barbarian
    У каждой библиотеки должн быть одинаковый интерфейс. Наследоваться от единого интерфейса.
    Загружать библиотеку по имени
    getClass().forName(name)
    Имя можно брать из настроек.
    Смотрите в сторону
    Рефлексии и проч.
    Ответ написан
  • Лучше хранить результаты запроса в оперативной памяти, или каждый раз заново делать запрос к БД?

    @red-barbarian
    для начала, есть части системы
    Вьюхи
    Контроллеры
    Бизнеслогика (какая-никакая)
    База данных.
    По теме: жесткая связь бизнес логики и базы данных всегда чревато. Желательно разделить их прослойкой. Например неким репозиторием. Объект(ы) который будет давать те данные которые нужны.

    Далее. Для вьюх в FX нужны ObservableList. Это листы и Observable. Т.е. с наименьшими затратами по работе. Мы будем работать с листами в памяти. Такую модель и строим.
    В прикидку приложение fx занимает 40мб. Ну база для примера столько же. Вполне нормально.

    Далее. Если база меняется. Мы меняем только репозиторий и то что относиться к базе. Логика и вьюхи не меняется.
    Если база настолько огромная что не помещается. То мы делаем свой класс с интерфейсом interface ObservableList extends java.util.List, Observable. Который будет динамически лазить в базу.
    Или меняем представление так, что бы работать с кусками данных, а не с целыми таблицами.

    Т.е. прослойка позволяет отложить вопрос об эффективности использовании памяти на потом. С минимальными затратами.

    Касаемо вопроса как читать, как писать. Если арм не многопользовательский, то чтение часто и не нужно. если работают много человек, то критические места нужно перечитывать. (например данные перед редактированием обязательно) ну и блокировку какую-то ставить про редактировании.
    запись желательно сразу. большой нагрузки это не даст. но данные будут в сохранности. Если процессы, и нагрузка большая, нужно думать конкретно. Опять же если система будет на деле тормозить, а не в теории.
    Примерно так.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю суть программирования?

    @red-barbarian
    основная задача в программировании (и не только) сделать из сложного простое.
    Ответ написан
    Комментировать
  • Как разобраться с темой кодировок?

    @red-barbarian
    У Головача есть хорошие лекции. Одна по такой теме.
    https://youtu.be/j0Ad02f95eE?list=PLwcDaxeEINadGe-...
    Ответ написан
  • Дистанционное образование. Где качественнее?

    @red-barbarian
    Проблема обучение не в том что бы найти крутую лекцию. Их как раз предостаточно. Как открытых , так и платных. Проблема найти тех кто будет вычитывать твой код. Не просто автоматическая проверка, а вычитка реальным человеком с опытом. С указанием ошибок и направлением развития.
    Думаю , на это и нужно обращать внимание.
    Вопрос: сколько времени уделяется индивидуальной работе с конкретным студентом.
    Ответ написан
  • Как правильно сделать выборку из листа?

    @red-barbarian
    map = list. stream().collect(groupingBy(Db::getForm)) ;
    Если на 8 уже.
    Ответ написан
    4 комментария
  • Как вывести текст с кириллицей из файла?

    @red-barbarian
    new InputStreamReader( new FileInputStream(filename), "cp1251"))
    Явное указание кодировки.
    Ответ написан
    Комментировать
  • Что такое JUnit тесты и с чем они проводятся?

    @red-barbarian
    Просто поучительный пример.
    Вам нужно протестировать класс. Что это значит? Протестировать его поведение, хотя бы основное. Т.е. желательно все методы которые могут использовать. Как у черного ящика. (скрытые не тестируем и можно не тестировать getter&setter).
    Как это сделать?
    Вы добавили один метод getFurst(). Вероятно, для тестирования. Но первым элементов не должна ограничиваться проверка. Поэтому нужен скорее метод getItem(int); Это приводит к изменению интерфейса вашего класса (замена не нужного метода нужным)
    Сделали изменения, протестировали. Ок.
    Далее пишете тест на insert. Несколько. И в конце у вас выскакивает исключение. Индекс превышает размер массива. Опа. Вы должны либо явно описать этот случай в документации (генерацию исключения), либо что-то еще сделать. Указать пользователю на этот скользкий случай.

    Далее. Есть метод display
    Как его протестировать автоматически? Никак. Это наводит на мысль "что-то не так". Не так, скорее потому, что этот метод не должен быть в этом классе. класс занимается сортировкой. Выводом на экран должен заниматься другой класс. Если вдруг понадобиться поменять вывод, то вам придется ковырять класс который уже работает и протестирован. И вы будете лапать снова весь код, с риском дернуть что-то что скрыто поменяет корректную работу.
    Дисплей в другой класс.
    итак. убрали getFirst. display. добавили getItem.
    класс хорошо тестируется. и более удобный интерфейс.
    Т.е. вывод из всего: Тестируемость класса зависит от хорошего интерфейса. Требует этого.
    Пригодный к тестированию класс практически всегда (чаще всего) это класс который будет легко использовать. Класс который трудно протестировать, чаще всего трудно будет использовать.
    Примерно так.
    Конкретно по теме.
    Просто по коду тестов, вопросов нет. Вопрос про тестирование класса.
    Ответ написан
    6 комментариев