• Как получить аргумент функции при заданном значении функции?

    artemgapchenko
    @artemgapchenko
    Если у вас есть математическая функция, задающая переход значения из множества X в множество Y, например y = x ** 2, то нужно написать реализацию этой функции на python, а затем применить её к каждому значению из первого массива. Можно с помощью циклических конструкций, можно воспользоваться функцией map().
    Если функции нет, а есть график, то сначала получаем приближение этой функции (см. аппроксимация), а потом проводим те же манипуляции, что и в первом параграфе.
    Ответ написан
    Комментировать
  • Насколько это "кошерно" сохранять объекты в базу с помощью ORM вместо реализации интерфейса Parcelable?

    artemgapchenko
    @artemgapchenko
    Собственно цель лишь в том, чтобы оградить код от лишней грязи

    Конкретизируйте, где возникает "лишняя грязь".

    от неприятных ошибок, которые могут возникнуть при использовании Parcelable

    Вроде того, что новое поле добавили, а в writeToParcel() и createFromParcel() указать его забыли? Ну так это, AutoValue + AutoParcel, и нет больше такой проблемы.

    Пользуетесь ли вы ORM для того, чтобы сохранять объекты?

    Чтобы сохранять - да. Чтобы передавать объект из одной Activity в другую - нет. Но могу себе представить варианты, когда какая-нибудь отличная от Parcelable сериализация будет необходима. Например, объект вашего класса содержит Bitmap, или же просто byte array. При попытке положить этот объект в Bundle как Parcelableу вас упадёт исключение (могу соврать, но у меня вроде на Bitmap-ах весом около 1.5-2 мегабайта падало). Возможный выход - сохранить этот Bitmap на карточку как файл, и пробросить путь к файлу в следующую Activity.
    Ответ написан
    7 комментариев
  • Где лучше взаимодействовать с view?

    artemgapchenko
    @artemgapchenko
    В методе onPostExecute(). Метод get() блокирует работу потока, вызвавшего этот метод (в вашем случае это будет ui-поток, если вы хотите взаимодействовать со View) пока doInBackground() не закончит свою работу.
    Ответ написан
    Комментировать
  • Как сравнивать дженерики в java?

    artemgapchenko
    @artemgapchenko
    Java это не C++, не Kotlin и не Scala. Перегрузки операторов нет, поэтому сделайте так:
    if (a.compareTo(b) > 0) {
        doSomething();
    }

    В вашем случае MyClass должен имплементировать Comparable<MyClass<T>>, а не Comparable<T>. В compare() можно будет сравнивать между собой x.data и y.data, которые, в вашем случае, являются инстансами обобщенного типа, имплементирующего Comparable. Как-то так:

    class MyClass<T extends Comparable<T>> implements Comparable<MyClass<T>> {
        T data;
    
        MyClass(T data) {
            this.data = data;
        }
    
        @Override
        public int compareTo(MyClass<T> another) {
            return data.compareTo(another.data);
        }
    }
    Ответ написан
    2 комментария
  • Best practices открытия окна в WPF?

    artemgapchenko
    @artemgapchenko
    Ну вообще некрасиво, да. Код с большим количеством уровней вложенности (читай: больше двух) плохо читается и редактируется. Чтобы сделать код более "плоским", разверните по-другому структуру своих if-ов. То есть не так:

    if (someValue) {
    	if (someSecondValue) {
    		if (someThirdValue) {
    		    doSomething();
    		}
    	}
    }

    А так:

    if (!someValue) {
    	return;
    }
    
    if (!someSecondValue) {
    	return;
    }
    
    if (someThirdValue) {
        doSomething();
    }

    Ну и те "откровения" про Java, что вам написали выше, имеют очень посредственную связь с реальностью. Написать запутанный код можно на чём угодно, это и отличает говнокодера от программиста. У говнокодера всегда язык виноват, программист же изучает свой инструмент, и знает как обойти слабые моменты.
    Кстати, можете почитать "Совершенный Код" Макконелла, там несколько глав уделено тому, как лучше структурировать свой код.
    Ответ написан
    Комментировать
  • Превышен лимит выдачи по карте?

    artemgapchenko
    @artemgapchenko
    Понизили лимиты, попробуйте сходить в Росбанк, там лимит 200$.
    Ответ написан
    Комментировать
  • Как работать на UpWork'е без знания английского языка?

    artemgapchenko
    @artemgapchenko
    но с разговорными навыками(а так же с восприятием на слух) совсем все плохо

    У меня с английским нормально, но хочу сказать, что за полгода работы там только одному заказчику понадобилось от меня ежедневное личное общение на тему проекта, всем остальным достаточно переписки. Когда приглашают на интервью, можете написать, что на слух воспринимаете язык плохо, и предпочли бы общение в чате, все воспринимают это нормально. Кстати, очень часто те, кому нужно устное общение, указывают это в описании задачи.
    Ответ написан
    Комментировать
  • Можно ли "перенести" проект Android (.java) на IOS и не переделывать все заново?

    artemgapchenko
    @artemgapchenko
    Никак. Вы или пишите два проекта под разные платформы на нативных для этих платформ языках/фреймворках, или используете кроссплатформенные решения (PhoneGap/IONIC/Titanium и иже с ними).
    P.S. Посмотрите ещё на ответ Дениса Загаевского, тоже хорошее предложение.
    Ответ написан
    Комментировать
  • Мультиязычность в android приложении?

    artemgapchenko
    @artemgapchenko
    Не совсем понятно, зачем вам вообще что-то определять, а затем менять. По умолчанию Android будет подгружать строковые значения из файла values/strings.xml. Если у пользователя на устройстве установлена русская локаль, то будут подгружаться значения из values-ru/strings.xml (при условии, конечно, что такой файл есть, в противном случае всё так же будут подгружаться значения из values/strings.xml). Если немецкая - values-de/strings.xml. Ну и так далее. Правила разрешения конкретного файла посмотреть можно тут.
    Ответ написан
    4 комментария
  • Сколько всего обьектов создано в коде?

    artemgapchenko
    @artemgapchenko
    Один. v2 - ссылка на тот же самый объект, на который ссылается v1.
    Ответ написан
  • Oracle сертификат(по java) для Android разработчика на Kotlin?

    artemgapchenko
    @artemgapchenko
    Тут есть два ответа.

    1. В каком-то подкасте (возможно это было "Радио Бермудский Треугольник") обсуждали найм программистов, влияние сертификатов на шанс приёма на работу и на последующую зарплату. И ведущие согласились на том, что сертификаты хороши, когда интервьюируемый только вышел из вуза, никакого реального опыта у него, но так как есть сертификаты, то это может быть хорошим поводом к тому, чтобы пригласить на собеседование. Только и всего, больше никаких выгод нет.
    2. На хабре как-то отписывался парень, переехавший в Европу (в Нидерланды, если мне не изменяет память), который получал сертификат (по-моему как раз-таки связанный с Java-технологиями), и говорил, что его работодатель даёт прибавку к за наличие определённых сертификатов. Могу соврать, но вроде бы он так же говорил, что в его городе (стране?) прибавка за сертификаты - распространённое явление.

    Так что определитесь с тем, какую вы выгоду от него хотите поиметь. Если, как написано в комментариях: "Как минимум будет понятно что вы не только на котлине могете" - то не стоит тратить своё время и деньги; вы либо работаете с Java, знаете её, работали над серьёзными проектами сделанными на ней и готовы показать это на собеседовании, или нет, и никакая бумага с печатью вам тут не поможет. Если же вы уже имеете на прицеле работодателя, который даст вам более "вкусные" условия за наличие сертификата, или же у него условия работы одинаково замечательны для всех, но он при этом официально заявляет, что наличие сертификата даёт серьёзное повышение шансов на трудоустройство у него - идите и получайте.
    Ответ написан
    1 комментарий
  • Как скрыть кнопки в Navigation Bar?

    artemgapchenko
    @artemgapchenko
    Если я вас правильно понял, вам нужен флаг View.SYSTEM_UI_FLAG_LOW_PROFILE.
    Ответ написан
    Комментировать
  • Здравствуйте! У меня появилась такая ошибка рендеринга. Что мне делать, чтобы исправить ее?

    artemgapchenko
    @artemgapchenko
    Написано английским по белому:

    Tip: Try to build the project

    Соберите проект.
    Ответ написан
    Комментировать
  • Android: как ловить Broadcast'ы в AsyncTask'е?

    artemgapchenko
    @artemgapchenko
    Вопрос: как правильно использовать Broadcast в классе AsyncTask?

    Ответ: никак. После завершения работы AsyncTask тут же прибивается системой, с выполнением метода onPostExecute, в котором ваши broadcast receivers отвязываются от broadcast manager'a. А так как широковещательное сообщение может прийти в BroadcastReceiver с задержкой, то у вас и получается, что AsyncTask отработал, broadcast receivers отвязались, сообщение пришло, но обработать его некому.

    Вынесите свои broadcast receivers на уровень Activity, и отключайте их в onPause().
    Ответ написан
    Комментировать
  • Кто где делает заметки по программированию?

    artemgapchenko
    @artemgapchenko
    Было уже. Раз, два.
    Ответ написан
    Комментировать
  • Как сделать такую анимацию?

    artemgapchenko
    @artemgapchenko
    Копайте в сторону Activity Transitions с shared elements.
    Ответ написан
    Комментировать
  • Как хранить ключ на Android устройстве?

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

    artemgapchenko
    @artemgapchenko
    Мартин Фаулер - "Рефакторинг - улучшение существующего кода".
    Роберт Мартин - "Быстрая разработка программ. Принципы, примеры, практика".
    Эрик Фримен, Элизабет Фримен - "Паттерны проектирования".

    Но

    Прочтение всех этих книг не будет иметь ни малейшего смысла, если вы не будете перемежать их практикой. Я бы даже сказал так: 80-85% практики, 15-20% чтения книг. Если много читать и мало практиковаться - ничего не усвоите. В зачёт практики идёт также и изучение чужого кода с долгой медитацией над ним: "Почему так сделали? Как это работает? Могу ли я это применить у себя? Решит ли это мою задачу? Какие минусы у такого подхода?"
    Ответ написан
    Комментировать
  • Карает ли google play за использование шрифтов?

    artemgapchenko
    @artemgapchenko
    В течение примерно года на стартовом экране нашего приложения название приложения было написано платным шрифтом (за который мы не платили). Ни разу за это время нам не писали с вопросом: а лицензировали ли вы используемые шрифты? Скорее всего, потому что мы летали ниже радара, читай - не набрали такую пользовательскую базу и прибыль, после которой появляется смысл более пристально смотреть на плоды нашего труда.
    P.S. Сейчас, правда, мы этот шрифт уже убрали и заменили на какой-то из семейства Roboto.
    Ответ написан
    2 комментария
  • Передача callback'a методу в качестве параметра, нормальная практика или костыль?

    artemgapchenko
    @artemgapchenko
    В вашем коде нет абсолютно ничего костыльного. Запросы в OkHttp выполняются в фоновом потоке (не в главном, в котором работают все компоненты Android-приложения, а в фоновом), соответственно вам нужно как-то прокинуть в OkHttp вашу реакцию на успешное/ошибочное выполнение запроса. Callback'и b были добавлены в OkHttp как способ добавить такую реакцию на данные, получаемые в фоновом потоке.
    Ответ написан
    Комментировать