• Сборка простейшей программы на языке Python?

    @red-barbarian
    string to int Solution
    Ответ написан
    Комментировать
  • Как лучше всего использовать Fragments?

    @red-barbarian
    исходя из принципа "Преждевременная оптимизация — корень всех зол."
    делайте просто по документации Пример
    это не такая сложная вещь, что бы ее переделать в случае надобности. или выделить BaseNewsFragment
    Ответ написан
    Комментировать
  • Как оформить алгоритм (последовательность) выполняемых вычислений на Activity?

    @red-barbarian
    варианты:
    1)скрывать список до тех пор пока не сделана инициализация действия
    2) список не активен до тех пор пока не сделана инициализация
    3) при нажатии кнопки делать проверку на правильность алгоритма работы.
    4) делать визард с несколькими фрагментами с последовательностью выбора сначала действий затем списка.
    и т.д.
    Ответ написан
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    @red-barbarian
    принцип инверсии - самый крутой принцип.
    разработка начинается с головы. Т.е. если у вас задача проектировать программу, то вы начинаете строить ее с самого главного - ее бизнес логики. Вы не будете знать какие сущности логика будет использовать. Это возникнет из процесса. Поэтому, все что бизнес-логике нужно вы определяете интерфейсами.
    В таком случае получится, разбиение логики и сущностей которые ее обслуживают.
    из-за того, что первая меняется быстро и часто (по разным причинам, даже не зависящих от девелопера) это разбиение очень полезно. Главное, можно отдать разработку обслуживания другим людям, мы не в курсе библиотек которые будут применяться (и можем менять из), мы легко можем тестировать свою логику.
    Примерно так.
    Интерфейсы хорошо применять на границах слоев программы. Это дает возможность тестирования и разбиения.
    Ответ написан
    Комментировать
  • Как правильно проектировать Interactor-классы в разработке под Android?

    @red-barbarian
    полазь по сайту
    поспрашивай в телеграмме
    Ответ написан
    Комментировать
  • Как сохранить Observable при смене ориентации экрана?

    @red-barbarian
    Выносить Observable за активити.
    Т.е. создавать ее в Application, в RetainInstance Fragment, использовать Moxy, Android Architecture Components
    Как пережить Lifecycle?
    Ответ написан
    1 комментарий
  • Прикладное применение интерфейсов?

    @red-barbarian
    Первое: интерфейсы принадлежат не уровню реализации, а уровню использования.
    Что значит?
    У вас есть проект самолета.
    Есть транспортная компания перевозящая грузы.
    Есть пассажирская - соответственно перевозящая пассажиров.
    у транспортной есть некий шаблон под названием транспортное средство. Все что подпадает под этот шаблон может компанией использоваться.
    У пассажирской - все что подпадает под шаблон "средство перевозки пассажиров"
    Т.е. по большему счету им не важно что будет самолет или автобус.
    Вы хотите, что бы ваши самолеты использовались. Вам нужно реализовать интерфейс (шаблон использования) грузоперевозчик. Для одной компании. Для пассажирской вы можете реализовать шаблон пассажироперевозчик.
    Т.е. интерфейс это некая договоренность, способ использования. И он лежит не на уровне библиотеки (т.е. на уровне реализации класса), а на уровне более высокой логики. (транспортное средство)
    Интерфейс становиться неким шаблоном между двумя частями системы. Он достаточно стабилен. Из этого мы получаем разделение большой системы на две части. и соответственно мы можем разрабатывать раздельно эти части, не боясь что-то нарушить в другой части.
    По части использования. Интерфейсы очень широко применяются. Даже в небольших проектах. Они разбивают на части систему, что очень полезно для построения прозрачных моделей. Также это дает возможность работать нескольким людям над одним проектом (или одному. Над частями проекта)
    Это дает возможность Сосредотачиваться на логике проекта, оставляя реализация на "позже" - делая простые затычки для тестирования.
    В примере с животными. Есть зоопарк где животные. По большей части они работают с интерфейсом животные (кормят, ограждают и т.е.) И все что подпадает под интерфейс животное легко там содержится. Если им привезти новое животное, они его посадят в клетку, будут кормить и показывать детям. Т.е. Животное - это скорее договоренность, а не сущность. (для зоопарка)
    Ответ написан
    Комментировать
  • Разбить God class?

    @red-barbarian
    навскидку (не разбираясь с логикой класса)
    у тебя много методов зависят просто от $this->route
    их уже можно выделить в один класс.
    если есть аналогичные моменты от других переменных поступать также.
    Вообщем разбиение делается так: анализ структуры класса и выделение подсттруктур переменных + методов. Эти подструктуры будут внутренне сильно связаны. И слабо связаны между собой. Это будет намек, что можно выделять классы из текста.
    Пониманию структуры может помочь анализ ответственности год-класса.
    Как бы первое, что нужно сделать. Остальное станет ясным по мере разбиения.
    Ответ написан
    2 комментария
  • Как убрать разделители между элементами RecyclerView?

    @red-barbarian
    Убрать ItemDecoration.
    Пересмотреть все границы ( itemlayout...) у элементов recyclerview
    Ответ написан
  • Как наработать опыт в стилистике написания кода?

    @red-barbarian
    В питоне есть красивые решения для типовых небольших задач.)
    что бы их знать, нужно изучать различные кукбуки.
    также библиотеки которые входят в стандартный набор.
    т.е. изучение лямбд, [], {}, map ... На примерах и из документации.

    библиотеки в первую очередь сollections, Functional Programming Module.
    Через это придет опыт написания красивого и выразительного кода.

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

    @red-barbarian
    это нормально. Начинать там где легко. Где 20 процентов трудозатрат дают те самые 80 % эффективности. Цель как можно скорее начать программировать.
    Это время расширения знаний.
    Затем следует проходить остальные 80% получая на выходе 20. Это время углубления знаний. Работа с документацией, кодом и проч. Но они также очень важны.
    Мотивировать себя узнавать глубже.
    Ответ написан
    Комментировать
  • Почему xiaomi жрет столько оперативки?

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

    @red-barbarian
    Интерфейс это некий протокол, договоренность между частями системы. Т. К. Мы выносим эту договоренность отдельно, мы можем менять одну часть не боясь нарушить что-то в другой.
    Т. Е. В итоге из сложной системы мы сделали две боле простые подсистемы. Которые также могут использоваться и в других местах.
    Это наиболее важное применение интерфейса. Хотя не единственная его польза.
    Ответ написан
    1 комментарий
  • Какие англоязычные ресурсы для изучения Android можете посоветовать?

    @red-barbarian
    developer.android.com
    medium.com
    Ответ написан
    Комментировать
  • Как оптимизировать код на Java?

    @red-barbarian
    1,2,3,4
    4 + 4 = 8
    for(int i = 0; i < A.length; i++) {
                for(int j = i+1; j < A.length; j++) {

    передача массива так
    получаем число элементов n
    делаем int[] A = new int[n];
    вводим каждый элемент A[i] = чтение из сканера
    Ответ написан
    Комментировать
  • Как заполнить ArrayList путями к файлам assets?

    @red-barbarian
    компилится нормально.
    проблемы на этапе inflate R.layout.fragment_main (возможно только у меня)
    и в loadNextFlag();
    в assets лежат файлы (каталоги) без "-". естественно nextImage.indexOf('-') дает -1
    и это плохо переваривается.
    все написано в logcat
    Ответ написан
  • Что некорректного в моей записи?

    @red-barbarian
    в строке 20. там null
    конечно иногда сообщения об exception выглядят замысловато, то чаще всего там достаточно данных, что бы понять в чем проблема. читайте их.
    обычно java.lang.NullPointerException вылетает если мы читаем (или вызываем метод) поле переменной которая равна null
    пример
    chipher = null (обычно по умолчанию. если не примитив)
    chipher.l1 = ... здесь чтение chipher.l1, но chipher null и естественно поле не вычисляется
    или chipher.l1.equals(" ") если chipher.l1 == null

    следите за этим. Это самая частое исключение (на мой взгляд)
    Ответ написан
    Комментировать
  • Почему в программировании столько математики?

    @red-barbarian
    IT сфера очень молода. Откровенно говоря выпускник института имеет уже сразу устаревшие знания. Что преподавать реально никто не знает. И не знают какие знания в этой сфере будут достаточно долговечны и нужны. Так некие догадки и не более.
    Это относится к математике тоже. Курсы перенасыщены. Есть вещи практически полезные, но есть которые напрямую не связаны с практикой. Проблема и в том, что отделить одно от другого, понять какие вещи в образовании бесполезны, а какие важны никто не может.
    Для примера, интуитивно понятно что алгоритмы и математика связаны между собой, но ведь не со всей математикой что преподают)
    Тоже самое с навыком разбивать сложные структуры на простые части.
    В целом, вопрос правомерен, образование прегружено, но как правильно никто не знает.
    Проблема современного мира)
    Ответ написан
    7 комментариев
  • Как организовать динамическое добавление CardView в ленту?

    @red-barbarian
    public void swapCardfeeds(List<CardFeed> cardfeedlist){
        this.cardfeedlist= cardfeedlist;
        notifyDataSetChanged();
    }

    или же в adapter
    public void addNewCardfeed(CardFeed card){
           cardfeeds.add(card)
           notifyItemInserted(cardfeeds.size()-1);
    }
    Ответ написан