• Как понять запись в коде JAVA?

    dima_meln
    @dima_meln
    Студент, Java Junior
    Почитай о foreach и Iterator
    Ответ написан
    Комментировать
  • Не могу сообразить, как выполнить задание. Может, сталкивался кто с подобным?

    longclaps
    @longclaps
    На MASMe примерно так:
    mov  ax, word ptr[0502h]
    cmp  ax, word ptr[0506h]
    jg   @reorder
    jl   @ordered
    mov  ax, word ptr[0500h]
    cmp  ax, word ptr[0504h]
    ja   @reorder
    @ordered:
    mov  word ptr[0600h], ax
    mov  ax, word ptr[0502h]
    mov  word ptr[0602h], ax
    mov  ax, word ptr[0504h]
    mov  word ptr[0604h], ax
    mov  ax, word ptr[0506h]
    mov  word ptr[0606h], ax
    jmp  @end:
    @reorder:
    mov  word ptr[0604h], ax
    mov  ax, word ptr[0502h]
    mov  word ptr[0606h], ax
    mov  ax, word ptr[0504h]
    mov  word ptr[0600h], ax
    mov  ax, word ptr[0506h]
    mov  word ptr[0602h], ax
    @end:
    Ответ написан
  • Как в Django избавиться от ошибки?

    tema_sun
    @tema_sun
    Давайте я за вас прочитаю сообщение - вам нужно перенести TEMPLATE_LOADERS в TEMPLATES .
    Ответ написан
    Комментировать
  • Почему этот код выдает NullPointerException?

    Потому что вы создаете массив TextureAtlas[] atlas, но объектов в нем нет, только null'ы
    Ответ написан
    2 комментария
  • Hosting as a Service (BaaS)?

    @bnytiki
    То, что вы описали - Postgres и т.п. - это КОНКРЕТНЫЕ ТРЕБОВАНИЯ к СУБД.
    И это максимум - PaaS, а вовсе не BaaS

    В BaaS (backend as service) доступно только API, нет доступа к СУБД.

    Если вам нравится Heroku, то поглядите на Google AppEngine.
    У них довольно большие бесплатные лимиты.
    Ответ написан
    3 комментария
  • Hosting as a Service (BaaS)?

    Sanes
    @Sanes
    А в чем заключается муторность? Придумали же кучу инструментов для этого. Docker/Cheff/Ansible и т.п. Настройте 1 раз, это не сложно.
    Ответ написан
    4 комментария
  • Что нужно сделать, чтобы развиваться?

    @YuryBorodkin
    Android dev
    Прикладное программирование не рокет саенс, нужно просто больше практики.
    Хороший выбор - поработать в конторе, набьешь руку.
    Можешь себя заставить- найди опенсорс приложение на гитхабе(например https://github.com/RocketChat/Rocket.Chat.Android.Lily) и допили его. Или для себя напиши что-то...Прогнозчик погоды, клиент к апи, парсер-клиент к сайту.
    Вообще отлично развивает чтение + допиливание чужого(но хорошего) кода.
    Накрайняк можно просто просить у контор тестовык задания и писать их, родимых. Мотивация будет, да и мало-мальски типовые задачи поймешь.
    Ответ написан
    Комментировать
  • Что нужно сделать, чтобы развиваться?

    @bot8
    Android noob
    Если нет идеи, то напиши аналог какого-нибудь существующего и с какими-то новыми фишками.
    > Плюс очень сложно писать, ради того чтобы писать
    Я правильно понял, что ты не получаешь удовольствие от процесса? Если да, то тогда стоит задуматься - а надо ли это вообще тебе?
    Ответ написан
    1 комментарий
  • Что нужно сделать, чтобы развиваться?

    Rou1997
    @Rou1997
    Работа за деньги - это необходимость! У вас кармы недостаточно, а если объединить с кем-то еще, то станет больше, любая работа это команда, бизнес мало отличается от фриланса и постоянной работы по найму, разница между ними только в объеме кармы тех с кем работаете и соответственно в сложности их требований к вам, главное чтобы были деньги, без них невозможно настроить кармический обмен.
    Ответ написан
    3 комментария
  • Что нужно сделать, чтобы развиваться?

    @Noortvel
    Работа в команде, желательно за деньги, можно и за идею, но быстро перегорит.
    Ответ написан
    Комментировать
  • Стоит ли продолжать изучать Android develop?

    vaux
    @vaux
    Курящий лыжник
    Освойте сначала что-то одно на приличном уровне, а уже потом будете гнаться за трендами, следить за выходом новых технологий и т.п. В первую очередь вам нужна база: алгоритмы, структуры данных, понимание ООП, знание паттернов, TDD и т.д. Потом вам нужен опыт программирования. Чем больше вы пишите, тем больше понимания того, что вы делаете. Устройтесь джуном в контору, где над вами будет стоять опытный сеньер или тимлид. В конторе обязательно должен практиковаться code review, где ваш код будут разбирать и указывать на ошибки и спорные моменты. C++ и андроид не исчезнут в одночасье, можете спокойно развиваться в том, что вам интересно. А технологии рождаются и умирают. Это нормально и вам с этим жить, если решили стать программистом. Вам постоянно придется изучать что-то новое, но для начала освойте что-то одно на хорошем уровне.

    Более того. Если вы программист, то вы в первую очередь software engineer. Вам не должно быть дела до языка или технологии. Это всё вторично, потому что вы должны знать всё. Вам дали задачу, вы выбрали наиболее подходящий инструмент и решили эту задачу. К этому нужно стремиться.
    Ответ написан
    1 комментарий
  • Какие ресурсы штудировать, чтобы разобраться в Android UI?

    @grabblesaur
    guides.codepath.com/android#designing-and-styling-views
    Список мини гайдов по UI.
    Ответ написан
    Комментировать
  • Какие ресурсы штудировать, чтобы разобраться в Android UI?

    Rou1997
    @Rou1997
    С техническими возможностями Appcompat и прочих библиотек помогут разобраться официальная документация, сайты типа StartAndroid или сайт А. Климова, и разные примеры кода, а пользоваться ими для решения ваших задач, это приходит исключительно с опытом, нигде нет готовых советов индивидуально для вас, ну если только курсы платные какие-нибудь.
    Ответ написан
    Комментировать
  • Как использовать двоичные/шестнадцатиричные числа для определения permissions?

    alsopub
    @alsopub
    Степени двойки.
    0x01 = 0b00000001
    0x02 = 0b00000010
    0x04 = 0b00000100
    ....
    Чтобы можно было комбинировать права через операцию ИЛИ (OR) или "+".
    Права 0x01 + 0x02 + 0x04 = 0b00000111, сразу видно что это комбинация из трех разрешений.
    Ответ написан
    3 комментария
  • Где закралась ошибка?

    alsopub
    @alsopub
    Подправил программу, теперь она работает в swish.swi-prolog.org

    binary_operator(0'-, minus).
    binary_operator(0'+, plus).
    binary_operator(0'*, multiplication).
    binary_operator(0'/, division).
    
    unary_operator(0'-, unary_minus).
    
    priority(open_bracket, -1).
    priority(close_bracket, 0).
    priority(plus, 1).
    priority(minus, 1).
    priority(multiplication, 2).
    priority(division, 2).
    priority(unary_minus, 3).
    
    pop_stack_before_open_bracket([open_bracket|TailStack], PoppedBuffer, TailStack, PoppedBuffer):-!.
    pop_stack_before_open_bracket([Head|TailStack], ExpressionBuffer, PoppedStack, PoppedBuffer):-
        pop_stack_before_open_bracket(TailStack, [Head|ExpressionBuffer], PoppedStack, PoppedBuffer).
        
    pop_stack_before_less_priority(_Priority, [], PoppedBuffer, [], PoppedBuffer):-!.
    pop_stack_before_less_priority(Priority, [HeadStack|TailStack], PoppedBuffer, [HeadStack|TailStack], PoppedBuffer):-
        priority(HeadStack, HeadStackPriority), HeadStackPriority < Priority, !. % stop popping
    pop_stack_before_less_priority(Priority, [HeadStack|TailStack], ExpressionBuffer, PoppedStack, PoppedBuffer):-
        pop_stack_before_less_priority(Priority, TailStack, [HeadStack|ExpressionBuffer], PoppedStack, PoppedBuffer).
    
    
    symbol_to_digit(DigitSymbol, Digit):-
        DigitSymbol >= 0'0, DigitSymbol =< 0'9,
        Digit is DigitSymbol - 0'0.    
    get_positive([S|T], Number, TailString):-
        symbol_to_digit(S, _Digit), !,
        get_positive(integral, 0, [S|T], Number, TailString).
    get_positive(integral, IntegralPart, [0'.|Tail], Number, TailString):-
        !, get_positive(fraction, 0, 10, Tail, FractionPart, TailString),
        Number is IntegralPart + FractionPart.
    get_positive(integral, IntegralPart, [HeadDigit|Tail], Number, TailString):-
        symbol_to_digit(HeadDigit, Digit), !,
        TailIntegralPart is IntegralPart*10 + Digit,
        get_positive(integral, TailIntegralPart, Tail, Number, TailString).
    get_positive(integral, Number, String, Number, String):-!.
    get_positive(fraction, FractionPart, Factor, [HeadDigit|Tail], Number, TailString):-
        symbol_to_digit(HeadDigit, Digit), !,
        TailFractionPart is FractionPart + Digit/Factor,
        TailFactor is Factor*10,
        get_positive(fraction, TailFractionPart, TailFactor, Tail, Number, TailString).
    get_positive(fraction, Number, _TailFactor, String, Number, String).
    
    
    string_to_expression(_BinaryOrUnary, [], Stack, Buffer, Expression):-
        /* if string is empty - pop the stack */
        !, reverse(Stack, ReversedStack),
        append(ReversedStack, Buffer, ReversedExpression),
        reverse(ReversedExpression, Expression).
    
    string_to_expression(_BinaryOrUnary, String, Stack, Buffer, Expression):-
        /* if read the number - push it into buffer */
        get_positive(String, Number, TailString), !,
        string_to_expression(binary, TailString, Stack, [(number, Number)|Buffer], Expression).
    
    string_to_expression(_BinaryOrUnary, [0'(|TailString], Stack, Buffer, Expression):-
        /* if read the open bracket - push it into stack */
        !, string_to_expression(unary, TailString, [open_bracket|Stack], Buffer, Expression).
    
    string_to_expression(_BinaryOrUnary, [0')|TailString], Stack, Buffer, Expression):-
        /* if read the close bracket - pop stack before open bracket */
        !, pop_stack_before_open_bracket(Stack, Buffer, PoppedStack, PoppedBuffer),
        string_to_expression(binary, TailString, PoppedStack, PoppedBuffer, Expression).
    
    string_to_expression(binary, [OperatorSymbol|TailString], Stack, Buffer, Expression):-
        /* if read binary_operator - pop stack before head stack has bigger or equal priority than that binary_operator */
        binary_operator(OperatorSymbol, Operator), !,
        priority(Operator, OperatorPriority),
        pop_stack_before_less_priority(OperatorPriority, Stack, Buffer, PoppedStack, PoppedBuffer),
        string_to_expression(unary, TailString, [Operator|PoppedStack], PoppedBuffer, Expression).
    
    string_to_expression(unary, [OperatorSymbol|TailString], Stack, Buffer, Expression):-
        unary_operator(OperatorSymbol, UnaryOperator),
        priority(UnaryOperator, OperatorPriority),
        pop_stack_before_less_priority(OperatorPriority, Stack, Buffer, PoppedStack, PoppedBuffer),
        string_to_expression(unary, TailString, [UnaryOperator|PoppedStack], PoppedBuffer, Expression).
    
    calculate_binary_operator(plus, LeftOperand, RightOperand, Result):-
        !, Result is LeftOperand + RightOperand.
    calculate_binary_operator(minus, LeftOperand, RightOperand, Result):-
        !, Result is LeftOperand - RightOperand.
    calculate_binary_operator(multiplication, LeftOperand, RightOperand, Result):-
        !, Result is LeftOperand * RightOperand.
    calculate_binary_operator(division, LeftOperand, RightOperand, Result):-
        !, Result is LeftOperand / RightOperand.
        
    calculate_unary_operator(unary_minus, Operand, OperatorResult):-
        OperatorResult is -Operand.
    
    calculate_reverse_polish_notation([], [Result], Result):-!.
    calculate_reverse_polish_notation([(number, Value)|Tail], Operands, Result):-
        calculate_reverse_polish_notation(Tail, [Value|Operands], Result), !.
    calculate_reverse_polish_notation([UnaryOperator|Tail], [Operand|TailOperands], Result):-
        calculate_unary_operator(UnaryOperator, Operand, OperatorResult),
        calculate_reverse_polish_notation(Tail, [OperatorResult|TailOperands], Result).
    calculate_reverse_polish_notation([Operator|Tail], [RightOperand, LeftOperand|TailOperands], Result):-
        calculate_binary_operator(Operator, LeftOperand, RightOperand, OperatorResult),
        calculate_reverse_polish_notation(Tail, [OperatorResult|TailOperands], Result).
    
    calculate_string(String, Result):-
        string_to_list(String, L),
        string_to_expression(unary, L, [], [], E),
        calculate_reverse_polish_notation(E, [], Result).
    Ответ написан
  • Какой язык больше всего подходит для rest api?

    @asd111
    Лучше всего взять vds/vps и настроить как хочется.
    Выбрать можно тут https://poiskvps.ru/
    Бесплатно в целях обучения можно попробовать Heroku https://devcenter.heroku.com/categories/java - будет полностью рабочее приложение, но с небольшими ограничениями https://www.heroku.com/pricing
    Ответ написан
    Комментировать
  • Какой язык больше всего подходит для rest api?

    @mitekgrishkin
    Можете также посмотреть в сторону Play! Framework. Тоже на джаве. Хорошо подходит для API.
    Примеры:
    https://www.playframework.com/documentation/2.5.x/...
    stackoverflow.com/questions/11167895/play-framewor...
    Ответ написан
    Комментировать
  • Какой язык больше всего подходит для rest api?

    @KIN1991
    Python, PHP developer
    Под всякие API использую Python в частности фреймворк Tornado, советую попробывать
    Ответ написан
    Комментировать
  • Считается ли хорошим подходом создавать исключения в Java?

    @aol-nnov
    иди дальше!
    throw new BoxNotFoundException
    throw BoxAlreadyScannedException

    :)
    Ответ написан
    4 комментария
  • Как работает приложение (типа вк, инстаграм и т.д.)?

    riky
    @riky
    Laravel
    опишу про вк.
    приложения работают через апи, а там только методы для запросов на сервер.

    но для сообщений например у них есть long pulling vk.com/dev/using_longpoll
    Принцип работы Long Poll соединения заключается в том, что сервер, получив запрос, удерживает его до тех пор, пока не произойдёт событие или не истечёт время, указанное в параметре wait

    то есть делаете запрос и ждете - когда запрос выполнится/завершится - либо произошло событие либо ничего.

    Для мобильных приложений есть пуши vk.com/dev/android_push но там только сообщения и друзья.

    Если нужно мониторить например лайки или комменты - то нужно время от времени дергать ленту событий.

    то есть как видим соц сети используют разные механизмы для разных ситуаций.

    upd:
    для событий связанных с группами (новый коммент, сообщение в группу, новая тема и тд) администратор может добавить callback url, и все эти события будут моментально сыпаться на него. https://vk.com/dev/callback_api
    это также позволяет постоянно не дергать апи в цикле.
    Ответ написан
    2 комментария