Задать вопрос
  • В чём основная концепция использования RxJava?

    @red-barbarian
    RxJava - это библиотека для реализации реактивного стиля в java
    реактивный стиль вещь похожая на более известный функциональный стиль программирования.
    выражается он в следующем
    есть поток данных, мы применяем к нему некие преобразования и получаем новый поток.
    например
    (поток запросов в сеть в виде адресов страниц)-> операторЗапросаВСеть -> ОператорПарсинга-> ОператорФормированияДатаОбъектов ->(отображение на экране)
    Популярность в андроиде, думаю, приобрел за счет простоты работы с многопоточностью. По крайней мере первые примеры применения в андроиде rx обычно про это.)
    вообще, это немного другой способ мышления. отличный от процедурного и ооп.
    есть источник, есть получатель и много преобразований.
    источник это observable, получатель это subscriber/observer . преобразования это разного рода операторы или их цепочки.
    В этом случае мы понимаем приложение как нити потоков данных. такая схема бывает проще чем схема из объектов. иногда.
    конечно, мы можем применять и гибриды из этих парадигм.
    вообще, это стоит попробовать. возможно она очень вам близка по стилю вашего мышления.
    Ответ написан
  • В чём основная концепция использования RxJava?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Концепция Rx заключается в основном в том, что существуют потоки данных внутри приложения. Эти потоки где-то начинаются (create) и где-то заканчиваются(subscribe).

    Про наборы данных - не знаю, скорее нет. Например, может быть бесконечный Observable, следящий за БД. Когда вы к нему подписываетесь, он эмитит текущее состояние БД, когда оно изменяется - эмитит ещё. Переподписка для этого не нужна.

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

    Далее, насчёт ввода с клавиатуры. Смотрите RxAndroid, и, в частности, RxTextView. В этом случае абсолютно то же самое - пока никто не слушает, следить за клавиатурой не нужно. Когда появился подписчик - начинаем слушать. И в случае именно андроида нет возможности установить несколько листенеров на одну вьюху, потому не удивляйтесь, когда дважды вызвав RxView.clicks(button).subscribe(Log::d) на одной кнопке, обнаружите, что эмиттит только второй Observable, а первый замолчал навсегда.
    Ответ написан
    Комментировать
  • С чего подступиться к бекенду?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    знаю только, о существовании node.js - фреймворка
    Не могу быть уверенным до конца, но по моему, NodeJS - это не фреймворк.

    Хочу развить в себе это понимание, но просто не знаю как к этому подступиться. Про что читать?
    Смотря на сколько хорошо это понимание Вы хотите у себя развить. Если "очень хорошо" - то начинать нужно, я думаю, с основ сетей (из чего состоит TCP-пакет, какие бывают протоколы, OSI и так далее).

    Если говорить про уровень "чуть попроще", я бы посоветовал начать с "начала", т.е. с того, с чего начинается работа веб-приложения, а именно с HTTP-протокола, от него можно плавно переходить к веб-серверам, от веб-серверов к тому, к чему эти самые веб-сервера передают "динамические" HTTP-запросы на обработку, т.е. к "бекенд-программам" и... дальше уже сориентируетесь, чего ещё не хватает.

    Хотя, всё зависит от целей конечно, если Ваша первичная и основная цель научиться "клепать сайты" - для скорости подобного обучения - лучше максимально абстрагироваться от всех технический особенностей, например - не забивать себе голову "ерундой" о техническом устройстве, предположим, cookies'ов, а просто выяснить в общих чертах как они работают (зачем нужны) и как их можно использовать. Такой подход позволяет максимально быстро приступить к процессу "сайтоклепания", сэкономить массу времени и памяти (нейронных связей в голове) для других важных дел, например, просмотра зомбоящика :)))

    P.S. Максимальную скорость возведения бекенда обычно обеспечивают готовые решения, например, CMS. В большинстве случаев они существуют для самых разных языков, в т.ч. должны быть и для JS'а. Прелесть подобного подхода в том, что имея минимальный набор знаний о бекенде, можно делать довольно красивые/функциональные решения (сайты), при умении, хотя бы неплохо верстать :)
    Ответ написан
    Комментировать
  • Стоит ли новичку начинать с фреймворка или лучше учиться на чистом php?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Начинайте с фреймворком.
    При чем на старте, лучше написать какое-нибудь простенькое hello world на нескольких фреймворках, и на чем будет вам проще и удобнее, на том и пишите.
    Писать в самом начале с нуля не имеет смысла, т.к. вы еще не знаете как нужно писать правильно, а фреймворки в этом плане следуют паттернам и вам придется писать правильно.
    Конечно можно наговнокодить везде, но фреймворки будут держать вас более менее в рамках)))
    Ответ написан
    21 комментарий
  • Как учить java ee?

    @poslannikD
    Java/C/C++ Programmer
    Примерный роадмап такой
    1) Знание java core. Особое внимание уделить java multithreading, это важно и незнание этой штуки может сыграть с вами злую шутку.
    На счет кровавого веба, вам будет достаточно знаний 7 версии(java se 1.7) а восьмую доучите в процессе. Единственное исключение что бы не плеваться от ненависти, нужно из 8 версии поучить Date and Time api. Оно там шикарное, в отличии от 7.
    2) После освоения java core, обратите внимание на sql(в ообщем и целом),html, css, js, sass, less.
    3) Как только разобрались с пунктом 2 вы готовы к вебу. И вам нужно выбрать, либо голый ее, либо spring. И там и там есть свои плюсы и минусы, и там и там свои особенности. Но хуже всего, это то что все технологии можно смешать вместе((((
    4)Если решили выбрать spring читаете по нему книги, тутотриалы и прочее.
    Вот к примеру примерчик простого круда(https://www.youtube.com/watch?v=e7swABdqOS4) Но его смотреть можно только если есть база. Мой совет для простых приложений берите спринг.
    5)Если ее тогда читаете книги по ее и пиште свои приложения.

    Список ресурсов.
    1)Java :
    Брюс Эккель Философия java
    Брайн Гоец java concurrency in practice
    Блох эффективная java
    javarush.ru для практики
    2)ее + spring
    книг по этим технологиям мало и они быстро гугляться
    курсы типо григория кислина(есть на трекере но лучше задушить жабу и купить) на этом курсе можно получить целостное представление обо всем стеке
    Смотреть курсы в интернете нужно осторожно, потратьте время на понимание того что такое java ee, сэкономите себе время и нервы. А инструменты будете доучивать по мере возможностей
    Ответ написан
    1 комментарий
  • Какие есть сайты по изучению Kotlin?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    0) Ты ещё не андроид-разработчик
    1) Нет, не стоит именно переходить. Нужно знать джаву и стоит параллельно изучить колтин
    2) Для начала Kotlin Koans
    3) Start android не про джаву, а про андроид.
    Ответ написан
    Комментировать
  • Почему Android со временем начинает очень тормозить?

    @ZZahar
    Если решил проблему - нажми "отметить решением"
    Всем в мире известен простой факт - со временем смартфон на Android начинает жутко тормозить.
    Шо?
    Мне помогает переустановка ОС полностью.

    Я поставил себе Lineage OS (android 7) после этого телефон стал мнгновенно работать молниеносно, без лагов вообще, причём я поставил все приложения какие только можно и не ограничивал себя.

    Ну тут проблема скорей всего такая: у вас элементарно что то хавает ОЗУ, если вы удалили прям-прям вообще все приложения, то значит у вас в телефоне что-то сидит раз переустановка помогает.

    Во первых, я рекомендую чистить ОЗУ вручную, если вы это делали с помощью приложения, не делайте этого ибо оно в фоне жрет ещё больше, а если не делали раньше, то делайте. Посмотрите в Гугле как снимать процессы(останавливать) приложения в телефоне. По отключайте все возможную анимацию в телефоне, если это возможно(разблокировка экрана как открывания ворот, ощущения как буд-то приложение разворачивается, когда его открываешь и т.д).
    Постарайтесь так же не устанавливать и не захломлять свой телефон не знакомыми приложениями. Я не знаю как вы это делаете, как вы умудряетесь сделать что бы телефон тормозил и переустановка помогала, я Windows за 3 года не переустанавливал, а кто-то умудряется это делать 2-3 в месяц(!). Будет хорошо, если вы предоставите список всех приложений который у вас был и откуда вы это все скачали.
    Поиски в интернете не дали результатов, некоторые умники пишут что мол железо устаревает, приложения едят больше ресурсов... но это не так, так как эксперимент показывает что с одним и тем же набором приложений и с одной и той же версией ОС телефон работает коллосально по-другому! (я говорю про то что если поставить ту же ОС с теми же приложениями то всё работает молниеносно)
    Не бейте себя так в грудь, это вполне может быть ибо третий раз вы OC не переустанавливали. Когда надумаете переустановить Android, то смотритите что бы версия подходила к вашему телефону.
    Самый лучший вариант купить новый телефон, если конечно хотите и можете себе это позволить.
    Ответ написан
    5 комментариев
  • Какая идеальная страна для айтишника?

    xtala
    @xtala
    Постигает Дзен
    Очевидно, что та в которой вы находитесь в данный момент.
    И не стоит забывать что:

    Человек нигде не находящий себе места ожидает всё от места и ничего от себя.

    - Сьерен Кьеркегор
    Ответ написан
    1 комментарий
  • В каком классе писать код для взаимодействия с кнопкой?

    @Axe98
    Junior Programmer
    Создай глобальный объект типа View и вначале onCreateView присвой к нему то, что сейчас возвращает эта функция, чтобы дальше в теле класса юзать его.

    View tabView;
    .......
    /// onCreateView begin
    tabView = inflater.inflate(R.layout.tab_three, container, false);
    .......
    return tabView;
    /// onCreateView end


    И дальше юзай так:
    Button btnOk = (Button) tabView.findViewById(R.id.any);
    btnOk.setText("ok");
    Ответ написан
    Комментировать
  • Как создать библиотеку на go и использовать через php?

    @RidgeA
    Я бы предложил ту часть, которую надо написать на go, сделать отдельным сервисом, куда обращаться по http api.
    варианты с компиляцией в dll, транспиляцией в js и расширением для php мне кажутся не очень удачными.
    Ответ написан
    9 комментариев
  • Как зафиксировать положение объекта?

    @slavenski
    Android developer
    Все просто, почитайте документацию про виды layot, у вас видимо самая новая - constraintlayout, в ней все завязано на привязке объектов, обратите внимание на точки у ваших объектов (когда выделяете в режиме Design, появляются 4 белые точки, вот их нужно привязывать к чему-то, можно к другому объекту, можно к границам активности), привязывайте их к конкретным местам, и будет вам счастье)

    Вот вам ссылочка, где более правильно все описано, и для начинающих)
    startandroid.ru/ru/uroki/vse-uroki-spiskom/489-uro...
    Ответ написан
    Комментировать
  • Куда можно пойти на стажировку?Где взять опыт?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Зачем вам стажировка, у вас же там был "свой проект", под руководством наставников и тд, разве не?
    Вот теперь пора идти устраиваться - к томуже гигБрейнс в рекламе свой заявляют, что устраивают на работу (гарантированно), так что вы считай уже успешно вкатились.
    Ответ написан
    1 комментарий
  • Как писать на андроид в notepad?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    На Хабре есть статья об этом - "Пишем, собираем и запускаем HelloWorld для Android в блокноте".
    Ответ написан
    1 комментарий
  • Какой фреймворк выбрать в качестве альтернативы django?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    В django и так многое упрощено. Вы работаете не с базой напрямую, а через ORM оперируя моделями как сущностями.
    Естественно если меняете структуру моделей - то делаете миграции - это всего-то пара команд.
    Если хотите еще проще - тогда наверное вам стоит готовые движки брать - вроде того же Wordpress-а.
    Flask будет сложнее для вас, так как многие вещи придется прикручивать отдельно.
    Ответ написан
    Комментировать
  • Какой фреймворк выбрать в качестве альтернативы django?

    @Bjornie
    Изучаю Python
    В фреймворке уже многое сделано за тебя, а тебе хочется чтобы фрейм за тебя еще и работу заказчика выполнял? :)

    Django это лучший фреймворке на Python, который уже в разы ускоряет разработку, а капризы вроде "не хочется постоянно писать в url.py" это разовые вещи, на которую можно потратить 30 секунд из всего времени разработки.
    Т.е. указать url для view и прописать какая въюха будет обрабатывать запросы на этот url. Так что заканчивайте капризничать))

    Миграции тоже не нужно сделать так часто. Подумали какая у вас модель - создали поля - сделали миграцию. Если типы для полей выбрали правильно, если все подходят, то до миграций больше дотрагиваться будет не нужно. Разве что в следующие изменения, о которых вы не подумали изначально. Но это прям такая операция, которая делается каждые 10 минут (сарказм) :)
    Ответ написан
    1 комментарий
  • Стандарты разработки веб-приложений в Django-проектах?

    @Bjornie
    Изучаю Python
    Toha96Toha сам не столь давно разрабатываю приложения на Django. Сразу начал писать боевые проекты заказчику и естественно возникло вопросов (потому-что в общем то пришлось писать совсем не бложик). За последний проект возникло куча вопросов и пришлось очень много гуглить и задавать вопросов (можешь сам увидеть в меня в профиле).

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

    Потом есть отличная книга Two scoops of Django. В ней собраны как раз Best Practices по разработке на этом фреймворке. Книга очень полезная. Но документация стоит выше. Вначале начинай с нее.

    По-поводу FBV и CBV (Class-based views) - найди на Youtube очень полезную серию видео Django CBV Uncorked, где парень (на английском) разбирает все виды Views, когда ты их пишешь на классах, параллельно программирует свой блог, и разбирает "кишки" Джанги. Очень полезно.

    Шишек набил очень много. Но чем больше будешь писать, тем лучше начнешь всё понимать. Советую открыть документацию и сразу начать делать какой-то свой проект. Чем сложней он будет, чем больше вопросов появится - тем лучше.
    Ответ написан
    4 комментария
  • Любые фотографии ВК доступны просто по ссылке?

    Перебрать ссылку нереально. Раз у вас есть ссылка, значит у вас был доступ к фотке. А раз был доступ, то вы итак могли сохранить фото на комп без всяких ссылок.

    Итог: никакой уязвимости нет.

    PS. Для перебора всей базы нужно перебрать примерно 64^11 * 16^5 * 10^9 * ~10^5 = 7.73 * 10^39 вариантов. Если перебирать по 100 млн в секунду, то на это понадобится 2453426 320882048 046080519 лет (2 септиллиона лет, т. е. 2453 секстиллиона или 2453426 квинтиллионов).
    Ответ написан
    3 комментария
  • Где найти удаленную стажировку для новичка PHP?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Мне 27, влился за полгода
    только дома, стажировок нет, еще меньше чем джуниорской работы, а ее очень не много, все нужен мидл, просто готовы подучить...

    Дома занимайтесь, изучите язык, обязательно ООП, обязательно окружение (Линукс, Композер, ГИТ) + изучайте потихоньку фреймворк (любой из Yii2, Laravel, Symfony)
    Ответ написан
    Комментировать
  • Продажа открытого кода php, как защитить от перепродажи?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    заказчик собрался массово продавать его в открытом виде, вопрос можно ли как то адекватно защититься от перепродажи?
    От перепродажи кем? Заказчиком или тем, кто купит "это" у заказчика?

    В целом можно, до некоторой степени. Зарегистрировать свой продукт в реестре ПО, получить на него юридические права, если лицензия CodeIgniter'а это каким-то образом сделать не позволит (на что уже обратил внимание предыдущий оратор) - выпилить из проекта CI, к какой-то матери, так как при условии, что
    достаточно крупный проект на CI
    и при том, что сам CI - довольно не крупный проект - написать вместо него свою обёртку с аналогичным функционалом - меньшее из зол (при условии, что поверх него написан действительно крупный проект)

    Далее начинается самое интересное, некий "коллапс и хаос" под названием "попытка защитить исходный код". Вариантов тут много, и каждый из них убог по своему:
    1. Обфусцировать код (т.е. превратить его в "нечеловеко-читаемый") - что в свою очередь добавит некоторого геморроя разработчикам, при поддержке такого кода и пару лишних часов работы с отладчиком тем, кто будет это "взламывать"
    2. Воспользоваться каким-нибудь "страшным" обфускатором, аки IonCube и ему подобными, что в свою очередь даст куда большую степень защиты и отобьёт желание у многих "кулхацкеров" копошиться с Вашим кодом, а заодно и желание у многих других делать с Вашим кодом вообще что-то, в т.ч. попытаться установить/запустить его у себя на сервере/хостинге, т.к. для его работы понадобиться ещё довольно приличный "хвост" всякого дерьма софта, который позволит Вашему коду запускаться.

    как это реализовано например в Битрикс?
    В битриксе это реализовано с помощью:
    0. Регистрации юридических прав на свой продукт
    1. Обычной обфускации
    2. Агрессивного маркетинга
    3. Откатов тем, кто продаёт битрикс (аки "партнерское вознаграждение", кажется это так сейчас называется)
    4. Ну и далее там идут всякие ключи и т.д., т.е. общая база, в которой регистрируются все установки системы, из которых не выпилен механизм который отправляет на сервера "битрикса" сведения об установке (и прочая лабуда в таком духе)

    P.S. Ну и, разумеется, стоит помнить, что ломают и куда более сложные/совершенные экземпляры ПО, такие как "Photoshop" или "Windows", а так же то, что в современно мире важен не столько сам софт как таковой, сколько его поддержка (исключения разумеется есть, но это частные случаи). Лишите операционную систему или например, антивирус - возможности обновляться и скоро из "лидера рынка" они превратятся в "почти никому не нужный хлам". Если дальше философствовать на эту тему (почему "палёный Windows обновляется" или "почему Linux полностью бесплатный, включая обновления/поддержку") - можно целую книгу или докторскую диссертацию на эту тему написать... но, думаю смысл в общей сложности и так понятен :)
    Ответ написан
    Комментировать
  • Где можно практиковаться в программирование на С++ и Java?

    @red-barbarian
    -возьмите свои старые тексты и разберитесь в них. как бы сейчас переписали. все ли понятно. как написать что бы все было понятно с первого взгляда. перепишите их.
    -возьмите текст библиотеки которую применяете. изучите часть. перепишите аналог.
    - читайте тексты плохие и хорошие. что хотелось бы изменить? что понравилось.
    - напишите простую sql базу
    - напишите консольную игру квест.
    - изучите tdd, solid
    - проанализируйте свои тексты, попробуйте выделить части которые можно переиспользовать. перепишите их.

    !тренируйте чтение больше чем писание)
    Ответ написан
    Комментировать