• Как сделать методы класса доступными только для одного класса?

    libalex
    @libalex
    My1Name, не класс, а методы. Без модификатора в Java означает package-friendly, т. е. доступны только из классов, которые находятся в том же пакете. Если UserService лежит в другом пакете, то модификатор protected разрешает доступ также классам-наследникам данного класса вне зависимости от пакета. На Java 15+ можно заморочиться и сделать класс DAO sealed, дабы ограничить возможность создания классов-наследников от него...
    Написано
  • Как работает static final?

    libalex
    @libalex
    Если ещё точнее, то модификатор final для поля говорит о том, что это поле неизменяемое, соответственно значение ему должно быть присвоено "сразу", т. е. до того как классом или объектами из данного класса начнут пользоваться, и потом переприсвоить его уже нельзя.
    Что значит "сразу"? Ну самое простое — это, как уже было сказано, в инлайне:

    public static int x = 0;
    public staic final String y = "Hello, World!";


    А где ещё — зависит от того, статическое это поле или нет. Если поле статическое, т. е. принадлежит классу, а не конкретному объекту, то можно присвоить ему значение в статическом инициализаторе:

    public static final int x;
    
    static {
        x = 0;
    }


    А если не статическое, то в конструкторе. Причём, если конструкторов несколько, то во всех конструкторах, — либо явно, либо путём делегирования в другой конструктор, где это поле инициализируется (с помощью this()).
    Написано
  • Как работает robot.mouseMove в Ubuntu?

    libalex
    @libalex
    Ну вообще, в javadoc метода mouseMove указано, что на некоторых платформах курсор может визуально не перемещаться:
    The mouse pointer may not visually move on some platforms, while the subsequent mousePress and mouseRelease can be delivered to the correct location.

    Не уверен, что это можно победить на Java.
    Написано
  • Как компилировать jar в exe?

    libalex
    @libalex
    Если хотите распространять свой софт в виде платформозависимого бинарника, выбирайте соответствующий язык.

    Но это целесообразно только если целевая платформа одна.
    Написано
  • Есть ли разница в нагрузке на процессор?

    libalex
    @libalex
    Так-то да, тот же Thread.sleep() освобождает вычислительные мощности.
    Написано
  • Есть ли разница в нагрузке на процессор?

    libalex
    @libalex
    Если критично отловить момент, когда нужный элемент исчез, максимально быстро, то можно и без задержки. Так работают серверные приложения, например. А если не принципиально, то можно, как вариант, поставить задержку равной периодичности обновления данных, т. е. в данном случае 1 сек. В любом случае, рано или поздно условие выполнится, и поток должен выйти из цикла, т. ч. цикл не совсем бесконечный.
    Написано
  • Как добавить в массив в мапе?

    libalex
    @libalex
    Получаете, но метод add возвращает boolean (true если элемент успешно добавлен, иначе false), а мапа хочет ArrayList.
  • Ковариантность возвращаемых типов в Javа, я правильно понял суть?

    libalex
    @libalex
    Ковариантность - сохранение иерархии наследования исходных типов в производных типах.
    Контравариантность - обращение иерархии наследования исходных типов на противоположную в производных типах.
    Инвариантность - отсутствие наследования между производными типами.

    Массивы в Java ковариантны с самой первой версии: в переменную типа Object[] можно положить значение типа String[].

    Тип возвращаемого значения метода ковариантен начиная с Java 5.
    interface A {
        Number someMethod();
    }
    
    class B implements A {
        @Override
        Integer someMethod() { return 42; } // OK
    }


    В той же версии Java были реализованы обобщения (дженерики). Они инвариантны, но позволяют получить ковариантность и контравариантность с помощью шаблонов. Контравариантность нельзя получить (потому что не имеет смысла) для тип-параметра возвращаемого значения метода, как упоминал выше, а также для тип-параметра класса.
    ArrayList<Number> list = new ArrayList<Integer>(); // Ошибка компиляции. Инвариантность.
    ArrayList<? extends Number> list = new ArrayList<Integer>(); // OK. Ковариантность.
    ArrayList<? super Integer> list = new ArrayList<Number>(); // OK. Контравариантность.


    P.S.:

    Насколько мне известно, в Java на уровне языка её нет, но какие-то части ухитряются делать через шаблоны.

    Если посредством шаблонов (generics) не считается — тогда, насколько мне известно, ни в одном популярном языке её нет. :)
  • Что означает индекс в выводе var_dump для объекта?

    libalex
    @libalex Автор вопроса
    Нашёл. Как я и заподозрил, это фишки Xdebug: https://github.com/xdebug/xdebug/blob/d0ccf3649f0d...

    Это ни что иное, как Z_OBJ_HANDLE_P

    Z_OBJ_HANDLE_P(var) is the sequencial number that begins with 1 and increased by 1 for each object.
  • Что означает индекс в выводе var_dump для объекта?

    libalex
    @libalex Автор вопроса
    Немного поэкспереминтировав и покопавшись в коде PHP, пришёл к выводу, что так оно и есть - это идентификатор, показывающий, каким по счёту этот объект был инициализирован в ходе исполнения скрипта. Другого практического смысла у него нет.
  • Взлом или развод?

    libalex
    @libalex
    Думаю. всё проще. Большинство софта для выполнения SQL-инъекций, заливки и эксплуатации shell-ов и тому подобного представлено в виде скриптов в основном на Python, Perl или PHP, запускаемых из консоли (командной строки) - это объясняет скриншоты.
    Ни у одного нормального хостера MySQL сервак напрямую извне недоступен. Наружу разве что только PHPMyAdmin выставляют. Бывает ещё можно в панели управления прописать IP-адрес(а), с которого(ых) будет разрешено подключение к MySQL серверу от имени вашего пользователя. У Hostinger, например, так.
  • Как теперь зарегистрировать приложение в Instagram?

    libalex
    @libalex
    argenit: подскажу еще. проснифать инстаграм, по крайней мере андроидовый, так просто не получится по 2 причинам - во-первых, он игнорирует настройки прокси в девайсе, а во-вторых, он содержит проверку сертификатов (так называемый Certificate Pinning)
  • Как теперь зарегистрировать приложение в Instagram?

    libalex
    @libalex
    Официальный клиент использует почти тот же API. Просто публично для сторонних разработчиков естественно доступна и документирована лишь его часть. Все остальные функции (прямая авторизация по логину-паролю или facebook, загрузка медиафайлов, личные сообщения) публично не разглашаются, т.е. представляют собой приватный API.
    Конечно, их всё равно удаётся вычислить, но, как правило, те, кому это удаётся, также держат эту информацию в секрете (ведь на этом можно зарабатывать), хотя некоторую информацию можно нагуглить, например тут https://abendstille.at/blog/?p=107 есть небольшое описание, правда частично устаревшее. На github можно забить в поиск instagram и найти примеры кодов, в основном на php и python.
    Основная проблема в том, что с каждой новой версией клиента они меняют ключ для генерации подписи запросов и если использовать ключ от сильно старой версии (например из старого кода на github), то API возвращает ошибку типа "вы используете старую версию, обновите клиент".
    Не знаю, как дела обстоят с iOS клиентом, но на Android мне пришлось проделать некоторые нетривиальные манипуляции как с девайсом, так и с самим клиентом, чтобы он раскрыл мне все карты)
  • Как закачивать видео с компа в инстаграм?

    libalex
    @libalex
    Зачем Dropbox? Можно же с ПК сразу в девайс (MicroSD flash drive, USB, BlueTooth, etc.)
    А если ПК на Windows, то еще можно установить BlueStacks - и вперёд.
  • Как перехватить ssl на Android?

    libalex
    @libalex
    Ответил ниже. Дело в том, что мало пустить всю систему через прокси. Instagram, как и WhatsApp, и еще некоторые приложения, содержит встроенную проверку сертификатов (Certificate Pinning) и с левым сертификатом (сертификатом сниффера) работать отказывается. Чтобы это обойти, нужно отключить (вырезать) проверку сертификатов.
  • Как перехватить ssl на Android?

    libalex
    @libalex
    Обфусцировано всё потому что.. Помнится декомпильнул старую версию инстаграма - пара пакетов всего обфусцировано и имеют имена типа a b c d e, остальное открыто, на днях декомпильнул новую версию - всего несколько малоинтересных классов читабельны, остальное всё обфусцировано.
    Собственно смотрю сейчас в Burp Suite - вижу трафик от чего угодно: фейсбук, вк, твиттер, вайбер, ещё кое-чего, сбербанк даже.. но только не то, что хочу увидеть. Instagram и WhatsApp серьёзно заморочены - инстаграм упорно не хочет работать через мой прокси, а вотсап вроде как работает, но сниффер никакого трафика по его части не видит.. и х.. его знает, как он это делает))
  • Как перехватить ssl на Android?

    libalex
    @libalex
    Я на своём девайсе пробую