• Как правильно отсортировать по количеству вхождений на php?

    @SharuPoNemnogu
    не язык плохой, программисты такие...
    Сначала по коду.
    Почитайте все таки PSR.. после методов скобка { переносится на новую строку. Ставить ; после закрывающей } не нужно.
    Блоки кода if оборачивайте в {} даже если там 1 строка.
    Половина названий методов в camelCase половина в snake_case, определитесь (лучше к первому).
    комментарии **** PUBLIC *** мусор. Пишите перед методами public function, как и в случае с private.
    Именуйте файлы согласно имени класса, используйте namespase'ы.
    Не понятно зачем в контексте данной задачи интерфейс, и уж тем более, зачем в интерфейсе конструктор.

    Теперь по задаче.
    Не обязательно в рамках маленькой задачки писать громадные конструкции, чтобы показать все, что вы знаете. Работодатель хочет посмотреть на то, как вы мыслите и как решаете задачу, а примеры кода можно показать отдельно.
    function countAndSort($string)
    {
        preg_match_all("/[a-zа-я]+/ium", $string, $words);
    
        $counts = array_count_values(array_map('mb_strtolower', $words[0]));
        $words = array_keys($counts);
    
        array_multisort($counts, SORT_NUMERIC, SORT_DESC,
            $words, SORT_STRING);
    
        return array_map(function($a, $b) {
                                return "$a $b";
                            }, $words, $counts);
    }
    
    $str = "лось  бык кот кот кот кот лось лось лось бык бык бык быки  быки  быки  быки олень олень олень олень олень олень олень  олень олень
    кот лось лось ,быки лось кот кот кот лось бык";
    
    echo "<pre>";
    print_r(countAndSort($str));
    echo "</pre>";
    die();
    Ответ написан
    9 комментариев
  • Как запретить заходить через браузер TOR на сайт?

    angry_cellophane
    @angry_cellophane
    Хороший ход, роскомнадзор, но нет
    Ответ написан
    Комментировать
  • Parse.com объявил о закрытии. Какие альтернативы?

    tikhonov666
    @tikhonov666
    iOS, Swift, Objective-C
    Думаю это один из самых больших списков Parse alternatives

    • Data Storage
    • Push Notifications
    • Usage Analytics
    • Dashboard
    • Social Integration
    • User Administration
    • Cloud Code Integration
    • Multiple Mobile Platform SDKs
    • Background Jobs
    • Crash Report

    Ответ написан
    Комментировать
  • Кто-нибудь знает открытый софт для безопасного общения для android?

    oldbro
    @oldbro
    Если нужно сквозное шифрование + пересылка файлов + открытость, думаю "Телеграм секьюр чат" подойдет. Если все-таки крайне необходим PGP то, что-то мне подсказывает, что настроить Conversations в связке с OpenKeychain не составит труда, так как в гугл-плэй заявлена интеграция, надо лишь сходить на гитхаб разрабов: (https://github.com/siacs/Conversations):
    How do I use OpenPGP

    Before you continue reading you should note that the OpenPGP support in Conversations is experimental. This is not because it will make the app unstable but because the fundamental concepts of PGP aren't ready for widespread use. The way PGP works is that you trust Key IDs instead of JID's or email addresses. So in theory your contact list should consist of Public-Key-IDs instead of JID's. But of course no email or XMPP client out there implements these concepts. Plus PGP in the context of instant messaging has a couple of downsides: It is vulnerable to replay attacks, it is rather verbose, and decrypting and encrypting takes longer than OTR. It is however asynchronous and works well with message carbons.
    To use OpenPGP you have to install the open source app OpenKeychain and then long press on the account in manage accounts and choose renew PGP announcement from the contextual menu.

    А теперь главное: К безопасности нужно подходить комплексно. Если Вы пользуетесь сервисами Faceboogle, сидите на винде (то есть, ей вы доверяете, а телеграм - нет?), работаете в ломанном фотошопе, получаете файлы, которые планируете отправлять с помощью секурного мессенджера, через публичные почтовые сервисы, а не через собственный почтовик с PGP, а также, храните эти файлы в облаках, то смысла в том, чтобы иметь один выделенный фрагмент Вашего АРМ защищенным - не есть концепция. Я не говорю уже о том, что Ваш корреспондент по чату обязан выполнить аналогичный комплекс мер и не пересылать кому-либо полученные файлы по открытой почте/в облако/и т.п. И это всё - лишь вершина айсберга.
    Ответ написан
    2 комментария
  • Как выявлять медленные элементы в работе PHP?

    @driver_by
    Есть профайлеры xdebug и xhproof - дают всяческую информацию о выполнении скрипта (время, память и т.п.). Если нет желания с ними разбираться, то можно просто найти медленное место выполнения при помощи microtime().
    $timeStart = mictotime(true);
    ....
    var_dump(mictotime(true) - $timeStart);   // получаем время выполнения куска кода в мс
    Ответ написан
    Комментировать
  • Как хранить данные в классах-структурах в Java?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Правильный подход в объектном дизайне - не плодить сущности без нужды! "Красота", сама по себе - это не причина. Причина может быть в том, что, например, дома и пары координат где-то агрегируются в отдельных списках, в которые не хочется тащить ненужный хлам.

    А кроме того, если данные будут персистироваться, например, с помощью ORM, или сериализоваться, например в JSON, то всякое разделение - это дополнительный join с вытекающей отсюда потерей производительности/памяти и т.д.

    Если все же есть реальные оправданные причины разделять сущности, то правильно делать так:
    class House{
      private String number; // номер дома
      private String kladrCode; // код КЛАДР дома
      private String entrance; // подъезд
    
      public String getNumber(){ return this.number;}
      public String getKladrCode(){ return this.kladrCode;}
      public String getEntrance(){ return this.entrance;}
    
      public void setNumber(String number){ this.number = number;}
      public void setKladrCode(String kladrCode){ this.kladrCode = kladrCode;}
      //  и т.д.
    }
    class AddressParcel {
      private String streetType; // название типа улицы (улица, проспект, бульвар и т.д.)
      //...
      private House house = null; // это не обязательно, но "хорошая практика" - явно инициализировать объектные поля статически!
      // ...
      public House getHouse() { return this.house;}
      public void setHouse(House house) { this.house = house;}
    }


    А доступаться - вот так:

    String someType = someAddress.getStreetType();
    String someNumber = someAddress.getHouse().getNumber();


    И еще: типы данных (одни стринги!) наводят на некоторые нехорошие размышления...
    Ответ написан
    3 комментария
  • Как хранить данные в классах-структурах в Java?

    @Flasher
    Не забывайте, что такое инкапсуляция. Для большей надежности, выставьте модификатор private и все поля экземпляра класса передавайте, через методы в которых будут определены get/set.
    Ответ написан
    Комментировать
  • Как хранить данные в классах-структурах в Java?

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