• Bitrix SelectedRowsCount?

    yous
    @yous Автор вопроса
    отвечу сам себе))

    $rsData->getSelectedRowsCount()
    Ответ написан
  • Принцип DIP из SOLID и Autowiring из DI-контейнеров?

    syamskoy
    @syamskoy
    Dependency injection - это когда в класс A мы передаем класс B через конструктор или сеттер, что бы он с ним работал, а не создавал его в своих нутрях.
    Dependency Inversion - это когда мы в классе A работаем не с конкретной реализацией, а с интерфейсами: указываем интерфейсы в конструкторе, в методах, в возвращаемых типах и т.д.
    Это два разных понятия, которые иногда объединяют в одно, и иногда их путают.
    Так вот, autowiring - это про Dependency injection, а D в solid - это про Dependency Inversion. Одно другому не мешает и не нарушает.
    Ответ написан
  • После записи объекта в конец файла(append), чтение дописанных данных выдает StreamCorruptedException, какие есть способы справиться?

    ehabarov
    @ehabarov
    IT Specialist
    StackOverflow предлагает такой метод: Appending to an ObjectOutputStream
    Суть метода:
    - Если конечный файл не существует - то пользуемся обычным ObjectOutputStream для его создания (в этом случае в начало файла пишется нужная сигнатура).
    - Если файл уже существует - пользуемся предложенным там классом AppendingObjectOutputStream, который предотвращает повторное формирование сигнатуры.

    UPD: Пример кода, перенес из комментария.

    AppendingObjectOutputStream.java - это копия кода со StackOverflow.
    ObjectStreamTest.java - пример использования в программе.

    Метод writeObject() - выполняет запись очередного объекта в файл.
    В этот методе используется:
    - ObjectOutputStream - если файл не существует (будет создан).
    - AppendingObjectOutputStream - если файл уже существует (будет дозаписан).

    Метод readObjects() - последовательно читает файл с объектами и отображает имя класса каждого считанного объекта. Используется, чтобы удостовериться, что файл читается нормально после дописывания.

    --- AppendingObjectOutputStream.java ---
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.io.OutputStream;
    
    public class AppendingObjectOutputStream extends ObjectOutputStream 
    {
      public AppendingObjectOutputStream(OutputStream out) throws IOException 
      {
        super(out);
      }
      @Override
      protected void writeStreamHeader() throws IOException 
      {
        // do not write a header, but reset:
        // this line added after another question
        // showed a problem with the original
        reset();
      }
    }

    --- ObjectStreamTest.java ---
    import java.io.EOFException;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    public class ObjectStreamTest 
    {
      public static void main(String[] args) throws IOException, ClassNotFoundException 
      {
        String filename = "objFile.bin";
        writeObject(filename, new String("Test1"));
        writeObject(filename, new Integer(10));
        writeObject(filename, new Long(200));
        writeObject(filename, new String("Test2"));
        readObjects(filename);
      }
      public static void writeObject(String filename, Object obj) throws IOException
      {
        File file = new File(filename);
        FileOutputStream  fos = null;
        ObjectOutputStream oos = null;
        if ( file.exists() ) 
        {
          fos = new FileOutputStream(file, true);
          oos = new AppendingObjectOutputStream( fos );
        }
        else
        {
          fos = new FileOutputStream(file);
          oos = new ObjectOutputStream(fos);
        }
        oos.writeObject(obj);
        oos.close();
        fos.close();
      }
      public static void readObjects(String filename) throws IOException, ClassNotFoundException
      {
        FileInputStream  fis = new FileInputStream(filename);
        ObjectInputStream ois = new ObjectInputStream(fis);
        Object obj = null;
        try 
        {
          while ( (obj = ois.readObject() ) != null )
          {
            System.out.println("Object class is : "+obj.getClass().getName());
          }
        } 
        catch (EOFException e) 
        {
          System.out.println("End of file reached.");
        }
        ois.close();
        fis.close();
      }
    }
    Ответ написан
  • Насколько актуальны эти технологии?

    firedragon
    @firedragon
    Senior .NET developer
    В Xamarin актуально, в Андроиде Axml.
    Html5 это кстати тоже xml ну типа вы поняли да.

    codeigniter это типа PHP ?
    Не в курсе
    Ответ написан
  • Как "победить" ошибку: ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded?

    @finc8888 Автор вопроса
    Python Junior
    Нашел ответ в интернете: https://www.versatilewebsolutions.com/blog/2015/05...
    Вкратце:
    1.Находим файл конфигураций my.cnf в каталоге /etc/mysql/ , и редактируем его - добавляем в самом низу файла
    [mysqld]
    plugin-load-add = auth_socket.so

    и сохраняем файл(С этим возникнут проблемы если делать это через Nautilus тем же geditом. В терминале можно ввести
    gksu gedit /путь/к/папке/с_файлом/файл
    предварительно выполнив sudo apt install gksu, если пакет gksu неустановлен, подробнее тут: https://losst.ru/kak-redaktirovat-fajly-v-ubuntu
    2.Перезагружаем mysql командой
    sudo systemctl restart mysql.service
    3.Пробуем зайти в mysql без ввода пароля к mysql, вводим пароль только на требование системы(sudo)
    sudo mysql -u root
    После этих действий у меня все заработало!!!
    Ответ написан
  • Зачем и где именно писать @Override?

    EugeneP2
    @EugeneP2
    Java Dev
    Это аннотация пишется над методами, которые переопределяются из супер класса.

    Это что-то вроде страховки, гарантирующая что 100% переопределен метод.

    class A {
    public void superMethod() {}
    }
    
    class B extends A {
    @Override
    public void superMethod() {}
    }


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

    Если вдруг вы ошиблись в сигнатуре метода (например пропустили букву в название), то компилятор выдаст ошибку
    Ответ написан
  • Возможна ли работа с tray (системный трей) средствами JavaFX 8?

    @fattan Автор вопроса
    программист
    Сам спросил, сам ответил:
    Перелопатив кучу англоязычной мукулатуры:

    1. есть ль альтернатива AWT-шным средствам работы с треем в Java 8?
    Да. Через пень-колоду-нативные методы (обращающиеся к вызовам ОС). Как, я понял, копать нужно в сторону SWT и иже с ними. Да так что проще заюзать AWT (для моей задачи)

    2. можно ли средствами JavaFX 8 работать с треем не прибегая к awt/swing?
    Нет. JavaFX 8 не поддерживает работу с треем. Возможно, поддержка работы с треем будет добавлена в 9й версии. А пока - сосите палец, мишки.

    Итог:
    Приложение оставил на JavaFX 8, а работу с треем вынес в отдельный класс, который написан с использованием AWT SystemTray.
    Ответ написан
  • Как заставить работать WebSockets на HTTPS?

    aprenoir
    @aprenoir Автор вопроса
    программный архитектор
    Как оказалось, в этой проблеме было целых 2 нюанса:

    - первый заключался в адресе обращения к wss (спасибо Дмитрий Беляев)
    - второй в том, что необходимо было убрать из настроек подключения "requestCert: true" (спасибо @andreyma со stackoverflow).
    Ответ написан
  • Как при помощи phpDoc описать сразу два варианта метода, перегруженных через __call и __callStatic?

    Minifets
    @Minifets
    Hello world!!!
    Нет, такое поведение в IDE не заложенно, и подсказать ей никак нельзя.

    Если вы попытаетесь внутри класса объявить 2 метода - с одинковым именем, то получите точно такую же ошибку. Method with same name already defined in this class. Собственно это и есть ожидаемое поведение, когда вы описываете методы в phpDoc.

    class Test {
    
        public function test() {
        }
    
        public static function test() {
        }
    }
    Ответ написан
  • Как убрать PAGEN из пагинации в каталоге товаров Битрикс?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Не устану повторять
    Сеошники выдвигают в качестве требований такую дичь по одной причине, что бы потом оправдать свои плохие результаты. Они прекрасно знают что это повлияет на результат чуть больше чем на ноль процентов. Но когда придут подписывать акт о закрытии работ и на вопрос почему нет результата, первое что они скажут: "Ваши айтишники не выполнили наши требования".
    Ответ написан
  • Что лучше табы или пробелы?

    Один таб, определенно. Лаконичнее, красивее и четче, чем засорять пространство пробельными символами (да и поставить 3 пробела вместо 4х гораздо легче, чем один таб вместо ни одного таба).
    Табы - для отступов, пробелы - для пробелов между словами. Семантика-с.

    А если табы воспринимаются не так, как кому-то хочется - вэлкам в настройки.

    P.S. А для соблюдения чьих-то стандартов достаточно установить правило замены таба на 4 пробела в сборщике проектов, и будет счастье.

    P.P.S. Сейчас, в 2к20, радикально изменил свое мнение - пробелы выигрывают по всем показателям. Скажу так, джуны любят табы, а сеньоры отдают должное пробелам.
    Ответ написан
  • Как подключить PDO в Php-fpm?

    Amadeusck
    @Amadeusck
    Файл

    pdo_mysql.ini

    с содержимым

    extension=pdo_mysql.so

    закинь в

    /etc/php.d

    php-fpm автоматом подключает конфиги с этой дирректории. php.ini не трогай.

    Проверь, чтобы был файл

    /usr/lib64/php/modules/pdo_mysql.so

    Отпиши результат. Если не поможет, будем думать.

    P.S> Проверь следующие файлы, может в них что-то не то вписал.

    /etc/php-fpm.conf
    /etc/php.ini
    /etc/php-fpm.d/www.conf
    Ответ написан
  • Coroutine, для чего они нужны?

    vechnoe
    @vechnoe
    Tornado, Django, Postgres, Asyncio, Clojure
    Представим это так (на примере Python). Большинство операций в бэкенд-разработке -- это операции ввода-вывода (i/o). следовательно, наибольшее количество времении занимают: обращения к диску, чтения из сокетов, обращения к БД, сетевой обмен. После того, как клиент запросил сервер в синхронном режиме, проходит много времени, поток выполнения простаивает ожидая ответа, следовательно другие клиенты тоже ждут, пока сервер не обработал данные и не вернул ответ. Когда клиентов очень много, возникает проблема 10K соединений и сервер просто перестает отвечать. Поэтому здесь нужен ассинхронный ввод-вывод.

    Корутины (сопрограммы) работают как переключение контекста выполнения. Пока один запрос обрабатывается и ожитает что-либо по сети, контекст переключается на следующий запрос, не блокируя ввод-вывод. Тем самым достигается значительно большая пропускная способность, чем в синхронном режиме (соответсвенно асиинхронный ввод-вывод ускорятет только операции связанные с io и ускорить умножение матриц с помощью него не получится).

    Необходимо только учитывать, что корутины выполняются внутри одного процесса (в котором запущен текущий инерпретатор).
    Ответ написан
  • Какое посоветуете легкое IDE для PHP под Linux?

    copist
    @copist
    Мидл, хочешь стать синьором? http://copi.st/ExhE
    phpStorm - слишком монструозный и навязчивый, как будто для проектирования самолета;

    Не стесняйся признаться, что ты всегда мечтал сконструировать ракету. Слезть с phpStorm будет сложно, особенно после взлёта твоей ракеты.
    Ответ написан
  • Новый способ блокировки любого Skype аккаунта

    @dimedrol2
    Многие люди заблуждаются о причинах блокировки аккаунтов майкрософт/скайп.
    Для примера опишу свой случай.

    Я не пользовался скайпом лет наверное 5.
    2 недели назад я специально создал новую учетку в почте yahoo.
    Используя эту учетку создал новый скайп аккаунт. Не хотел пользоваться старым скайп аккаутом, он был для друзей, а новый я сделал для использования на работе.
    Зашел я в новый аккаунт, посмотрел настройки и вышел.
    У меня там нет ни одного контакта, я не отправил ни одного сообщения, не сделал ни одного голосового вызова. Просто вошел и вышел. Естественно когда нужно было подтвердить почту, я это сделал.
    Это имя/id/email скайпа я нигде не публиковал и никому не сообщал. Кроме меня никто не знает об этой учетке.

    А сейчас (спустя 2 недели) я впервые решил воспользоваться этой учеткой, попытался войти в скайп, а оно меня не пускает, по причине:
    Something went wrong.
    There is a problem with your Microsoft account. To fix this, sign in to account.live.com from a browser.

    Тогда я попытался войти в свою учетку на account.live.com , то оно мне написало:
    Your account has been locked.
    We've detected some activity that violates our Microsoft Services Agreement and have locked your account.

    Добавлю, что я никогда не ошибаюсь в логинах и паролях, всегда ввожу правильно с первого раза, т.к. никогда не запоминаю их на память, всегда записываю в комп. Комп мой никто не ломал. Линуксовые компы пока что мало интересуют хакеров. К тому же мой комп трудно взломать. Я имею опыт защиты линукс систем, в т.ч. предоставляющих сервисы в интернет. А мой домашний комп даже не имеет внешнего айпи. И к тому же при настройке компа я сразу проверяю активные сетевые службы, вырубаю лишнее, при необходимости настраиваю файрвол. Пользуюсь только софтом из стандартных репозиториев дебиана. А если приходится использовать сторонние программы из недоверенных источников, то запускаю их во временных виртуалках (клонирую их за несколько минут), которые потом удаляю вместе с их образом на диске.
    В общем я уверен на 99.9%, что моей новой учёткой никто не пользовался всё это время (две недели).
    Поскольку я недоверяю скайпу, считаю его шпионской программой, то я устанавливал его внутри виртуальной машины. Виртуальную машину сделал специально для скайпа, и не включал виртуалку две недели.

    Как-то на ресурсе LOR, я читал о методах изоляции скайпа. Там один человек высказал мысль, что не стоит изолировать проприетарщину типа скайп, создавая ему явно искусственное окружение (типа chroot, контексты, и т.д.), а лучше чтобы это выглядело естественно (например виртуальные машины), так будет меньше вероятность оказаться забаненым. Кто-то над ним посмеялся, а кто-то плюсанул. Но мне и виртуалка не помогла.

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

    Но, оказалось, что забанить могут практически без повода. Неблагоприятные факторы в том числе следующие: проживание в России (санкции), использование линукс, изоляция скайпа от основной операционной системы, чтобы скайп не сливал ваши данные майкрософту (а значит и спецслужбам).
    Ответ написан
  • Как исправить кодировку в Sublime Text 3?

    @maxxx_kovalenko
    admin
    В Ubuntu Sublime Text 3 b3065 отлично открывает этот хак.
    Может у тебя не те кавычки или банальная опечатка в символе.
    У меня "Preferences -> User-Settings"
    {
    	"color_scheme": "Packages/Color Scheme - Default/Mac Classic.tmTheme",
    	"fallback_encoding": "Cyrillic (Windows 1251)",
    	"font_size": 10,
    	"update_check": false
    }
    Ответ написан
  • Php DebugBar + Slim?

    @Kirill-Gorelov Автор вопроса
    С ума с IT
    Вдруг кому пригодиться
    $container->debugbar->addMessage($mes,$flag);
    Ответ написан
  • Не могу настроить CodeIgniter?

    @luka1sv Автор вопроса
    Web, Swift, Servers
    Все решилось обычным AllowOverride All в конфиге apache2
    Ответ написан