• Вопрос для фрилансеров, сколько нагорает киловатт в месяц?

    opium
    @opium
    Просто люблю качественно работать
    фрилансер не сижу дома, да и вообще смешно морочиться фрилансеру за киловаты, так как он повлиять на них толком не может, что вы перестаните есть дома чтобы сэкономить триста киловатт часов ? и тратить по три тыщи на еду в ресторане в день?
    Вообще фрилансеры хорошо зарабатывают для того чтобы не думать о бытовой мелочи.
    Ответ написан
    5 комментариев
  • Легкое приложение на Android - на чем?

    petermzg
    @petermzg
    Самый лучший программист
    "В Android Studio как показывает небольшая практика - несколько мегабайт."
    И где вы такие практики находите?
    У меня приложение в 300Кб выходит.

    Если не тащить в проект сторонние пакеты, с уймой ресурсов которые не понятно в какой ситуации используются, то приложение получается компактным.
    Ответ написан
    4 комментария
  • Отличия абстрактного класса от интерфейса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В чем отличие абстрактного класса от интерфейса в Java?


    Все упирается в понятие "тип". В былые времена, то есть во времена языка Simula, из которого черпали вдохновение создатели C++, были только классы. И на классах базировалась система типов. Причем механизм наследования был реализован так, как реализован, исключительно для экономии памяти, которая в те времена была очень дорогой.

    Для того чтобы достичь полиморфизма, мы должны иметь возможность объявлять абстрактные типы. Мол "любая хрень которая имеет такой тип будет работать как надо". Потому в языках типа C++ появились абстрактные классы. Поскольку иногда нам хочется делать композицию абстрактных типов, в C++ реализовали множественное наследование.

    В Java, которая во многом черпала вдохновения из C++ и smalltalk, решили ввести еще одну сущность - интерфейсы. Это был своего рода упрощенный способ задать абстрактный базовый тип. По итогу чтобы не решать проблему бриллианта (или ромба) от множественного наследования было решено отказаться и дать возможность классам имплементить несколько интерфейсов.

    За счет этого мы получаем возможность делать композицию типов как мы захотим. То есть вся разница сводится к тому, что при наследовании от абстрактного класса, мы именно наследуем классы, в то время как интерфейсы позволяют нашим классам имплементить абстрактные типы.

    В целом абстрактные классы нужны тогда, когда вам нужно наследование. Обычно это в ситуациях, когда у вас есть несколько классов, которые должны иметь общий абстрактный тип (то есть нельзя выделить наиболее слабого по ограничениям предка). Например если мы делаем цепочку классов String <- Email, то тут нет смысла в абстрактных классах так как тип String уже включает в себе подмножество типов Email.

    В целом в java8 уже ввели возможность интерфейсам иметь базовую реализацию, так что не удивлюсь если со временем от ключевого слова extends в принципе откажутся, избавившись от лишней сущности.

    Так же рекомендую к прочтению: www.javaworld.com/article/2073649/core-java/why-ex...
    Ответ написан
    9 комментариев
  • Каким методом решается данная задача?

    Stalker_RED
    @Stalker_RED
    Это частный случай задачи о ранце, которая чуть ли не в каждом втором учебнике встречается.
    Ответ написан
    Комментировать
  • Как создать красивый UI под Android?

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

    NeiroNx
    @NeiroNx
    Программист
    да запросто - простым блокнотом можно увидеть все стороковые присвоения.
    Ответ написан
    5 комментариев
  • Чем отличается JDBC от ORM?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    JDBC- интерфейс для sql-запросов. Работаете с голыми sql-запросами и оперируете таблицами, строками, колонками и значениями. Если результаты запроса нужно положить с объекты, то сами их туда распихиваете.
    ORM - интерфейс для мапинга классов на таблицы, строки, колонки и значения базы данных. Работаете с java-объектами, sql-запросы за вас формирует ORM. Другими словами, не задумываетесь (почти), каксоставить sql-запрос, вытащить из него данные и раскидать значения по своим классам.
    Предпочтительнее конечно работать с ORM, так как все за вас будет оптимизировано и закешировано. Конечно, нужно будет знать, не только как работает ваша база данных, но и как работает ваш ORM.
    Ответ написан
    Комментировать
  • Как научится делать современные интерфейсы Android приложений?

    mitaichik
    @mitaichik
    Тут нет магии, просто куча кропотливой работы, все стандартно. Анмация - читай документы андройда. Красивости - рисуй рисунки\svg.
    Ответ написан
    Комментировать
  • Почему клиент из кожи вон лезет, чтобы убедить меня сказать ему свой Пионер кошелек?

    @polifill
    Жулик.
    Скорее всего хочет вынудить вас нарушить правила Upwork, чтобы потом шантажировать и получать работу бесплатно.
    За это нарушение, видите ли, автоматический вечный бан в Upwork.

    Возможно не все так страшно, и он просто не хочет платить комиссию Upwork...
    Но там не такая уж и страшная комиссия.
    Подумай, насколько это "выгодный" клиент, если он желает такие копейки сэкономить.
    Ответ написан
    4 комментария
  • Почему клиент из кожи вон лезет, чтобы убедить меня сказать ему свой Пионер кошелек?

    dimasmagadan
    @dimasmagadan
    Даже если вы не согласитесь принять от него деньги напрямую, вы обязаны сообщить о нарушении
    https://www.upwork.com/legal/
    "You agree to notify Upwork immediately if another person improperly contacts you or suggests making or receiving payments outside of the Site."

    Как вариант, там же по ссылке написано, как можно выкупить себя у апворка. В двух словах, от $2500
    Ответ написан
    8 комментариев
  • Есть ли смысл читать паттерны банды четырех, если ты js-разработчик?

    dimka-dooz
    @dimka-dooz
    front-end разработчик)
    Банда четырех пишет достаточно академично, и въехать будет тяжеловато.
    Я думаю знакомство с патернами стоит начать с книги
    "Эрик Фримен, Элизабет Фримен - Паттерны проектирования (Head First O'Reilly)" + тут примеры на java.
    Что касается js- там есть свои особенности поэтому в помощь Стоян Стефанов - JavaScript. Шаблоны и Эдди Османи Паттерны для масштабируемых JavaScript-приложений.
    Ответ написан
    Комментировать
  • На чем написать систему автоматизации для медовой фермы?

    @murlogen
    1. Писать всегда на том что лучше знаешь. Тем более задачу в которой еще не в зуб ногой.
    2. Нафига писать - есть же готовые. Например, для конкретно задачи учета - 1С. 1С умеет работать в онлайне, 1С умеет интегрироваться с веб-сайтами (интернет-магазинами некоторыми).
    3. Написание ПО - вовсе это не то на чем следует сосредоточиться при открытии и превоначально раскрутки фирмы
    4. Не потяните по бюджету??????? Ты или не то смотрел или считать не умеешь. САМОМУ ПИСАТЬ ВЫЙДЕТ НАМНОГО ДОРОЖЕ, ЧЕМ ИСПОЛЬЗОВАТЬ УЖЕ ГОТОВОЕ.
    Ответ написан
  • Как передать в фунцкию пустой аргумент?

    @fireSparrow
    Можно сделать вот так, чтобы функция работала для произвольного числа аргументов:

    def build_graph(x, *arg):
        for a in arg:
            # Цикл отработает столько раз, сколько передано аргументов после x
            # перебирая их по одному
            # и подставляя каждый из них в качестве 'a'
            plt.plot(x, a)
        #Всякие украшательства, подписи осей, легенда для графика и проч.
    Ответ написан
    1 комментарий
  • Eсть хорошая замена эмулятору android от android studio?

    @z0rgoyok
    Genymotion
    Ответ написан
    Комментировать
  • Как разобраться с инверсией зависимостей?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что такое адаптер?


    Смотрите. Есть у вас например micro USB кабель. И есть дырка в новом макбуке - Usb type c. Друг в друга они, как вы понимаете, не втыкаются. И можно взять адаптер microUSB -> USB type-c.

    В этом суть адаптера. Конвертация интерфейсов. Мы сделал интерфейс штуки которая нам нужна, потом взяли готовую штуку которая вроде бы то что нам надо делает, и сделали адаптер, который закрывает нестыковки в интерфейсах.

    Таким образом если вдруг через месяц обнаружатся проблемы, вы сможете заменить "готовую штуку" на другую готовую, сделать другой адаптер, и все. Изменения с точки зрения кода, который использует нужный нам интерфейс, будут только в используемом адаптере.

    За счет этого достигается независимость.

    Что значит "принимает зависимость"?


    Предположим у нас есть метод для смены пароля юзера. Что бы это безопасно провернуть, нам надо пароль захэшировать и хранить в захэшированном виде. То есть нам нужна какая-то штука, которая будет эти пароли хэшировать. Мы о ней знать ничего не хотим, хотим что б нам ее давали:

    public function changePassword(string $password, PasswordEncoder $encoder)
    {
        $this->password = $encoder->encode($password);      
    }


    Это зависимость нашего метода. Он зависит от него. Диалог между объектами можно представить себе такой:

    - Слыш, поменяй пароль на этот
    - Оке, только хэшер паролей мне дай, мне очень надо
    - А какой тебе?
    - Да любой с этим типом
    - Ну ок. На вот пароль и хэшер. Делай дела.

    Что такое вообще эта зависимость?


    Зависимости - это все что мы используем чтобы сделать дела. Это не только библиотечки, но и просто классы, функци и т.д. Весь "сторонний" код с точки зрения нашего кода. И самое важное в том, что "нашим" кодом является тот, над которым мы работаем в данный момент времени, а не все что мы написали. Даже функции, которые есть в языке программирования из коробки являются зависимостями. Вот только от них вам не деться никуда особо, а потому с ними замарачиваться не стоит. Или если есть долговременная поддержка у библиотеки и она устаялась - тоже можно просто использовать. А вот если это поделка на гитхабе с 10-ю звездочками и там до сих пор нет ни одного релиза - но она вам вот очень нужна, возможные поломки в ней (а они рано или поздно будут) стоит "закрыть" адаптером что бы потом поменять на что-то получше или обновить без боли.
    Ответ написан
    Комментировать
  • Как реализовать кнопки стоп и воспроизвести?

    @Zemlya
    Конечно, ты можешь менять кнопки методом view.setVisibility(View.GONE)
    Но мне кажется более корректным способом было бы именно изменять картинку на своей кнопке Play, и в onClick() делать проверку "Если музыка играет" - не играть, если не играет - играть.
    Ответ написан
    Комментировать
  • Куда выкладывать свои работы?

    gordon_shamway
    @gordon_shamway
    Github
    Ответ написан
    Комментировать
  • Какую структуру данных выбрать для хранения данных в памяти?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А зачем непосредственно в приложении это делать? Возьмите, к примеру, redis.io, в нем и храните. Там не только sortedset, но и hash и и сounters и еще кучу всего реализовано. Работает быстро, лежит в памяти, кластеризуется и шардируется.

    В вашем случае удобней было бы держать ваши атрибуты в sortedset, где имя коллекции = атрибут, а значениями - id пользователей.
    Ответ написан
    Комментировать