• Как использовать одно активити с одним ListView для многих array?

    @red-barbarian
    По нормальному нужно разделить слой вьюшек и слой данных. Хотя бы примитивно.
    Т.е. сделать Activity1, Actyvity2 и некий класс который будет предоставлять данные. Например назовем provider.
    Итог.
    Activity1 заполняется списком provider.getList1()
    при выборе элемента 1 вызывает Actyvity2, бросая через invent item1
    При запуске Activity2, вытягиваем item1 из intent, и заполняем listview списком provider.getList2(item1)
    идея - активити отдельно, списки отдельно.
    Также можно рассмотреть не старты активити, а использовать фрагменты. Но конечно, если задача позволяет.
    Ответ написан
  • Какие концепты/бест практисы нужно учесть при разработке Android приложения?

    @red-barbarian
    часто используются dagger, butterknife, rxjava, retrofit, okhttpclient и проч. про перечень уже писали. (были вопросы)
    про использование библиотек. философский вопрос. но можно посмотреть с такого ракурса. сейчас пользователь не особо смотрит на пару мегабайт лишних в приложении. но из-за того что вы не знаете насколько популярно будет ваше приложение (выстрелит или нет) вам нужно экономить ваше время и стараться делать код изначально качественным (готовым для изменения). Использование сторонних библиотек сильно экономит время. важно не только написание некой функции, но и оттестировать ее. для конечного пользователя, думаю, приоритет стабильность работы. для вас эффективность труда. размер это не главное.
    после первого выпуска станет ясно над чем работать. и стоит ли.
    Ответ написан
  • Код ревью неофициального приложение для тостера?

    @red-barbarian
    1. ревью (инспекция кода) не бывает без ругательств. Есть закон от небожителей "качество кода измеряется количеством ругательств которые извергает читающий". Т.е. обратно пропорционально. А значит никогда не равно 0. )))
    Поэтому, не верить когда говорят что все хорошо и идеально. Значит не вникли.
    Не верить, когда говорят что все г..но. Или что-то г-но. Прислушиваться, но не верить. Это так философское отступление)
    2. Исследовать рынок нужно до написания. До начала. Или после. Нельзя делать это во время первого выпуска. Иначе, можно потерять интерес к написанию. К самому выпуску продукта. Исследование не факт, что покажут реальные результаты. А продукт будет не выпущен. После выпуска можно узнать как улучшить продукт или чем дополнить. Повторюсь, не делать это во время подготовки первого выпуска.
    3. Уже писали ГитХаб. Постараться сделать работу людей удобнее. В том числе тех кто проверяет Ваш код. Поверьте это того стоит.
    4. Философский вопрос открывать или не открывать код. Если хотите научиться писать открывайте.

    По коду. Поверхностно. пример QuestionFragment
    Есть библиотеки которые улучшают код. например ButterKnife. они простые, но код понятнее (короче).
    Ссылки на url лежат в методе getHttp очень не удобно. Думаю лучше разделить текстовые ссылки в одно место, построение и выполнение запроса в другое (общий случай) . получение данных в третье. Постараться придерживаться принципа единственной ответственности. Что бы сделать код проще.
    Фрагмент содержит как отрисовку, так и бизнес логику (логику работы приложения). Так загромождается код. Получается огромные запутанные классы. Посмотрите шаблон MVP. Им можно упростить код. Даже сильно.
    Насколько я понял, при переворачивании экрана идет считка заново данных. Это не хорошо. Даже если кешируется запрос. Используйте например MVP + Dagger2
    (еще одна модная, вернее, уже традиционная библиотека)

    Можно смотреть
    Loader (загрузка данных)
    RxJava (работа например с ретрофитом, потоками-нитями, и проч проч. очень полезная)
    SOLID (принципы. для того чтобы сделать код гибче и понятнее)

    Пытаться разбивать программу на независимые компоненты которые можно переиспользовать.

    Не воспринимать мои слова как абсолютную истину. Большого опыта написания андроид-апп нет. Но если есть желание выслушивать критику напишите мне в например в vk.
    Вообще, удачи Вам с проектом.)
    Ответ написан
    Комментировать
  • Как снизить потери концентрации внимания?

    @red-barbarian
    1. отдыхать. Т.е. высыпаться, гулять на свежем воздухе, делать простую работу полностью и с увлечением. (на словах очень просто, на деле сложно)
    2. планировать свою учебу и чтение. Т.е. определить сколько время читаем или учимся. когда будет отдых. и т.д.
    3. вероятно главный принцип эффективной учебы/чтения это пересмотр. почитали некую часть, отвернулись, вспомнили основные моменты. обдумали. Представили что кому-то объясняем эту тему. Ум должен увлекаться, прилипать к теме.
    4. Планировать свои дела. Ум не должен быть нагружен работой по определению, что делать через минуту, как делать, где. и тд. постоянные такие вопросы просто его выматывают. И на нормальную умственную работу уже нет ментальных сил. Лучше уделить пол часа и запланировать на весь день. Даже если что-то пойдет не по плану.
    5. Знать цель. Т.е. сознавать мотивацию. Для чего читаем, что хотим и т.д. Концентрацию в Индии примерно описывали так " представь что ты несешь чашу полную воды. Через площадь на которой толпа людей участвует в празднике. Крики шум и т.п. За тобой идет человек с топором. Если ты прольешь хотя бы каплю, то человек сразу отрубит тебе голову." Если приблизить к нашей жизни, то Зачем читать? Что будет если вникнуть в тему? Что будет если не изучить тему? Что будет если постоянно отвлекаться на соцсети и проч. Через неделю, год, десять лет.
    еще советы: посмотреть Максима Дорофеева. Проблема современного человека не в том, что ему не хватает внимания, концентрации, энергии и проч. Проблема в том что он тратит внимание впустую. поверхностно. не вникая. Можно сказать он переконцентрирован, измотан концентрацией на совсем не нужных вещах.
    Из медитации, посоветую випассану.
    Ответ написан
    Комментировать
  • Простой пример одного и того же кода в ООП, функциональном и процедурном стиле?

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

    @red-barbarian
    Скачать или смотреть на зомботюбе курсы Головача. Они покроют большую часть плана. Он хорошо объяснял. Мне понравилось.
    Практика. Не только большие проекты.
    Предлагаю такую аналогию.
    Большие проекты развивают кругозор.
    Маленькие задачи тренируют мастерство.
    Это как отработка удара. Нужно выполнить несколько раз одно и тоже, что бы делать это хорошо и на автомате.
    Решать одни и те же маленькие задачи очень полезно. Как поддержание себя в форме.
    Такие банальные советы.
    Ответ написан
    Комментировать
  • Можно ли сказать, что Java и Python имеют одни и те же возможности?

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

    @red-barbarian
    решение в лоб
    6*a+5*b+4*c+3*d+2*e +++ остальные единицы (h)
    пробегаем по циклам a, b, c, d, e пока сумма меньше или равно числу.
    во время циклов вычисляем число h и печатаем ответ.
    Ответ написан
    Комментировать
  • Поведение агрегатов в DDD должно/может быть как поведение субъектов или должно/может быть как действия над объектами?

    @red-barbarian
    имхо.
    если рассматривать плюсы первого решения. оно очень простое, тривиальное, имеет мало компонентов - и следовательно содержит потенциально меньше ошибок.
    минусы: оно жесткое. adverts жестко храниться в виде массива, не имеет никакой своей логики и приносит мало пользы.
    возьмем немного усовершенствованное решение: есть seller, интерфейс advert и есть хранилище-интерфейс adverts. и есть реализация advertsImpl, advertImpl. Т.е. разнесли seller, хранилище и advert. мы можем менять их как желаем при условии выполнения договора - соблюдения интерфейсов.
    Плюс: независимость. Логика хранилища будет в хранилище а не в seller. Гибкость в том что мы можем написать реализацию его используя массив в памяти, разного рода баз данных или хранения данных в сети.
    Минус больше классов, больше текста, больше ошибок.
    Далее.
    Делаем отдельно seller, отдельно слой управления advert, отдельно advert.
    плюс: очень гибкое решение, в слое можем реализовать любую логику работы с advert (например связанные advert, или связанные с другими сущностями ) и т.п.
    минус: самое тяжелое и мутное решение.
    Итого: нужно выбрать эффективное решение именно для задачи которая стоит. т.е нужно спрогнозировать как будет развиваться система.
    т.е. нет абстрактного правильного решения. и тем более единственного правильного.
    вероятно можно делать как можно проще, но оставляя возможность развивать систему.
    Ответ написан
    Комментировать
  • Что почитать в данном случае?

    @red-barbarian
    почитать про паттерны mvc, а лучше mvp.
    прочитать про solid принципы. особенно про последний dip.
    прочитать про tdd, особенно полезно посмотреть на примере как оно работает.
    писать тестируемый код. переписывать это нормально для начала. иначе как понять, что архитектура не приемлема или неудачна. стараться разбивать программу на независимые компоненты. в итоге переписывать станет меньше.
    из книг можно Мартин Р.С., Мартин М. - Принципы, паттерны и методики гибкой разработки на языке C# - 2011
    из видео например https://www.youtube.com/watch?v=lDdJYid8NpE&t=432s
    из статей https://habrahabr.ru/post/276593/
    Ответ написан
    Комментировать
  • Скажите, эта паста верна? Если нет, то почему?

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

    @red-barbarian
    Проблема в изучении не в том, что бы найти хорошее изложение в видео или в книге. Проблема найти хорошего преподавателя который будет заниматься вычиткой ваших текстов. делать ревью.
    Научиться писать не сложно, это можно легко сделать и самостоятельно. Выработать хороший стиль, ясный и выразительный как на уровне названия переменных, так и структуры всей программы, намного сложнее. Здесь нужны живые собеседники и критики.
    Прискорбно, что многие курсы которые афишировали себя как курсы с ревью теряли качество после наплыва клиентов. Отзывы тому подтверждение. (естественно на независимых сайтах.)
    Жаль, но не могу посоветовать именно такие курсы, но хотя бы обозначил направление в котором искать.
    Еще параллельно советую читать книги что-нибудь по теме чистого кода, рефакторинга. Привычку к чистому коду нужно вырабатывать сразу, иначе будет дискомфорт в переучивании.
    Когда программы станут более-менее сложнее, можно обратить внимание на TDD.
    Ответ получился не конкретно по теме, но надеюсь будет полезен.Удачи.
    Ответ написан
    Комментировать
  • Что лучше выбрать, C или C++?

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

    @red-barbarian
    Потому что бывает когда все равны
    Ответ написан
    Комментировать
  • Как назвать переменные?

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

    @red-barbarian
    Навскидку с телефона.
    Пользуйтесь интерфейсом когда нужно описать правила взаимодействия с объектом. Абстрактным классом когда можно выделить некие общие моменты из классов.
    Т. Е конденсатор это интерфейс. Как там храниться значение в цифрах это вопрос реализации. Хоть в текстовом поле. Но это может меняться и поэтому должно быть отделено.
    Т. Е. Наследование лучше от интерфейса.
    2. Дублирование кода
    Если случайное число =...
    init
    set
    add
    Иначе
    init
    set
    add
    ...
    INIT отличается, но set add одни и те же.
    На то и обьктное наследование чтобы это выделять.
    Ответ написан
    Комментировать
  • Знание которые не устареют через 10-20 лет?

    @red-barbarian
    Не самый опытный в разработке, но в ит не первый десяток, скажу поэтому.
    Технологии меняются и спрогнозировать что-то точно уверен невозможно.
    Из этого нужно развивать умения учиться, умение вникать в новые технологии, умение не выгорать. Заниматься желательно тем что нравится, и развивать способность понимания любой темы до тех пор пока она не начнет увлекать.
    Вообщем, вопрос не в технологиях , вопрос как развить нужные привычки и гибкость ума. Философский такой вопрос.
    Ответ написан
    Комментировать
  • Какую посоветуете литературу (русскоязычную), по которой можно изучать data science?

    @red-barbarian
    По машинному обучению:
    Теория - Петер Флах Машинное обучение.
    Практика - Л. П. Коэльо, В. Ричард - Построение систем машинного обучения на языке Python.
    Много статей есть в инете.
    Ответ написан
    Комментировать
  • Лучший способ представления образовательного материала или "почему научные статьи такие нудные"?

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

    @red-barbarian
    потому что в макете R.layout.activity_calc есть кнопки у которых в поле onClick описан метод которого нет в ActivityCalc.
    ищите ошибку в activity_calc.xml
    Ответ написан
    Комментировать