• Новый способ блокировки любого 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, контексты, и т.д.), а лучше чтобы это выглядело естественно (например виртуальные машины), так будет меньше вероятность оказаться забаненым. Кто-то над ним посмеялся, а кто-то плюсанул. Но мне и виртуалка не помогла.

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

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

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

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

    @evilelf Автор вопроса
    Тупой, руки из жопы, кодю за зп и т.п. и т.д.
    Нашёл, это ctrl+.
    Ответ написан
    Комментировать
  • Как получить нужную релевантность результатов в поиске по multivalue полю?

    morr
    @morr Автор вопроса
    Отвечу сам на свой вопрос.

    Если хочется хранить массив названий в одном поле, то к "name" полю можно добавить "index_options": "docs", и количество вхождений слова перестанет влиять на релевантность.
    Так же можно добавить "norms": { "enabled": false } и общая длина строки перестанет влиять на релевантность.
    Но всё это костыли, которые не помогут для более сложных случаев, когда затем вам захочется сделать разные хитрые комбинации повышения/понижения релевантности для разных ситуаций.
    Например, с массивом названий не выйдет сделать буст релевантности при полном совпадении одного из названий с искомой фразой.

    Поэтому единственным подходящим вариантом вижу построение индекса таким образом, чтобы одно название товара "мапилось" на одну строку в индексе эластика.

    Для понимания того, как считается релевантность очень помогла статья Theory Behind Relevance Scoring.

    Так же для себя обнаружил, что на релевантность влияет, насколько часто встречается слово во всём индексе https://www.elastic.co/guide/en/elasticsearch/guid... И влияет оно порой очень сильно. Поэтому при реализации поиска по названиям idf фактор ранжирования стоит в обязательном порядке отключать https://stackoverflow.com/questions/33208587/elast... (работает в версии эластика начиная с 6.2)
    Ответ написан
    Комментировать
  • Почему так происходит?

    Compolomus
    @Compolomus
    Комполом-быдлокодер
    у вас в файле вывод отладки, потом ругается что заголовки поставить не может, так как поезд ушёл
    Ответ написан
    Комментировать
  • Как в PhpStorm добавить строку в коде в закладки (что бы быстро переходить)?

    Mesuti
    @Mesuti
    Быстро установить закладку f11
    Перейти к закладке Shift+F11
    Дать имя закладке Ctrl+F11

    \\
    кому пригодилось - лайк)
    Ответ написан
    Комментировать
  • Смена URL без перезагрузки страницы?

    siegerstein
    @siegerstein
    history.pushState(null, null, '/anypath');
    Ответ написан
    Комментировать
  • Как отображать подкатегории в breadcrumbs на yii2?

    @LiguidCool
    Реализация древовидной структуры одна из самых геморройных и часто встречающихся в вебе задач.
    https://gist.github.com/codedokode/10539720

    перебирать все элементы alias и дергать из БД данные

    Естественно запрос к БД в цикле это дно ... Один из самых элегантных методов конечно Nested Tree, позволяет почти все реализовать одним SQL. А тут неплохой пример, можно запросы копировать (только свои данные подставляй).

    Ну и для yii2 гугл выдал https://habrahabr.ru/post/266155/
    Ответ написан
    1 комментарий
  • Не могу определится с выбором: PHP или Python для веб?

    @trofimovdev
    Python
    Отдам свой голос в пользу Python:
    • простой синтаксис
    • применяется не только в веб
    • сложнее найти работу, но и платят, насколько я знаю, неплохо :)
    • лучше коммьюнити (чисто субъективное мнение)
    • быстрая разработка


    ИМХО, PHP умирает. Все, что могу про него сказать:
    • популярные CMSки (Wordpress, Drupal, Joomla!, etc.) написаны на нем и было бы неплохо его знать
    • проще найти работу (больше заказов)
    • большая конкуренция среди разработчиков
    • куча говнокода
    Ответ написан
    7 комментариев
  • Обновить свойство существующего заказа в битрикс?

    То, что вы показываете не свойства заказа, а свойства товара в корзине.

    На D7 делается так

    /** int $orderId номер заказа
    Получаем корзину заказа
     */
    $basket = Sale\Order::load($orderId)->getBasket();
    
    /*Товары в корзине*/
    $basketItems = $basket->getBasketItems();
    /*перебор товаров*/
    foreach($basketItems as $item)
    {
    /*Свойства товара в корзине*/
    $basketPropertyCollection = $item->getPropertyCollection(); 
    
    /*Обновляем значение нужного свойства*/
    foreach ($basketPropertyCollection as $propertyItem) {
        if ($propertyItem->getField('CODE') == 'COLOR') {
    
            $propertyItem->setProperty(array(
             array(
                'NAME' => 'Цвет',
                'CODE' => 'COLOR',
                'VALUE' => 'Кофе с молоком',
                 'SORT' => 100,
           ),
           ));
            $basketPropertyCollection->save();
    
            break;
        }
    }
    
    
    }
    Ответ написан
    Комментировать
  • Что такое static в ООП php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для этого вам надо понимать в чем разница между классами и объектами. Вот есть методы и свойства объектов а есть методы и свойства классов. Последние как раз статические свойства и методы. Отсюда и все особенности их работы и возможные варианты использования. Класс у нас в системе может быть только один, а экземпляров этого класса (объектов) много.

    Как правило статические методы используются в качестве порождающих. То есть вы вызываете статический метод класса а он тебе экземпляр этого класса.

    $foo = Singleton::instance();
    $bar = AbstractFactory::create('bar');
    $buz = Buz::fromArray([
        'many' => 'arguments', 'Buz' => 'has', 'private' => 'constructor'
    ]);


    В PHP статику еще любят применять как замену обычным функциям в силу того, что для классов автозагрузка у нас есть, а для функций нету. Не сказать что это сильно хорошо, я бы даже сказал что это плохо. Учитывая что сейчас есть composer а благодаря opcache оверхэда от подключения для каждого запроса файла особо и нет. В целом лучше стараться избегать использования статики или во всяком случае делать в статических методах хоть сколько нибудь сложные вещи. И лучше всегда ограничиваться только случаями для порождения объектов, тут статика выглядит логично.

    Если рассматривать с точки зрения пораждающиз статических методов, нам так же надо знать кого создавать. И тут появляются два ключевых слова - self и static. Причем self равносильно написанию имени класса в котором наш статический метод находится и просто позволяет уменьшить дублирование. static же намного интереснее, так как оно указывает непосдерственно на тот класс, из под которого был совершен вызов. Скажем если у вас есть наследование вы можете запихнуть порождающий метод в базовый класс, и тогда узнать кого создавать в принципе не проблема.

    class Foo {
        public static function createWithSelf() {
             // равносильно new Foo();
             return new self();
        }
        public static function createWithStatic() {
             // а тут мы пока не знаем кто такой этот static
             $foo = new static();
        }
    }
    
    class Bar extends Foo {}
    
    $foo = Bar::createWithSelf(); // тут будет экземпляр Foo
    $bar = Bar::createWithStatic(); // тут будет экземпляр Bar
    Ответ написан
    1 комментарий
  • Semantic UI или Bootstrap 3 + Font Awesome?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Библиотека Semantic UI - реально хорошая и очень удобная, и лучше учить её, чем bootstrap!
    А то, что она там тормозит - можно выкинуть лишнее и/или ПОМОЧЬ! поправить им: код же - OpenSource.
    В общем, я "ЗА" изучение Semantic UI двумя руками!
    Ответ написан
    2 комментария
  • Как интегрировать Rocket.chat в свой проект?

    zorca
    @zorca
    Установить. -> Настроить. -> Пользоваться.
    Ответ написан
    2 комментария
  • Как правильно использовать Docker для веб разработки?

    zvd
    @zvd
    Software developer interesting in DevOps
    Добрый день.
    Все, как вы их назвали, «задачи» должны быть по разным контейнерам.

    1. Что брать за базовый образ?
    Что используете то и берите. Используете в работе Debian? Берите Debian ( https://registry.hub.docker.com/_/debian/ )
    2. Чтобы создать свой базовый образ который будете в дальнейшем использовать для приложения, вот вам пример Dockerfile:
    #
    # MyBaseimage Dockerfile
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    RUN apt-get update
    RUN apt-get upgrade -y
    
    RUN apt-get install -y language-pack-en
    ENV LANGUAGE en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    RUN locale-gen en_US.UTF-8
    RUN dpkg-reconfigure locales
    
    RUN echo "Etc/UTC" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
    
    RUN apt-get install -y build-essential
    RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
    RUN apt-get install -y libxml2-dev wget
    RUN apt-get install -y libpcre3
    RUN apt-get install -y libpcre3-dev
    RUN apt-get install -y libssl-dev
    RUN apt-get install -y libncurses5-dev
    RUN apt-get install -y git git-core
    RUN apt-get install -y libpq-dev
    
    # install nginx
    RUN apt-get install -y software-properties-common python-software-properties
    RUN apt-get update

    Собрать image в директории где у вас лежит Dockerfile
    docker build -t your_docker_account/your_baseimage .

    3. Dockerfile для сборки вашего образа уже с приложением
    #
    # MyApp Dockerfile
    #
    
    # Pull base image.
    FROM your_docker_account/your_baseimage
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    # Set instructions on build.
    RUN virtualenv /env
    ADD ./ /code
    
    RUN cd /code; /env/bin/python setup.py install
    RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
    
    # Expose ports.
    EXPOSE 8484
    WORKDIR /code
    CMD ["/env/bin/python", "app.py"]

    4. Собрать образ с приложением
    docker build -t your_docker_account/your_app_container .

    5. Запустить контейнер с БД, в качестве примера PostgreSQL
    docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql

    для mariadb аналонично, контейнеры ищем здесь: https://registry.hub.docker.com/
    6. Запустить контейнер с вашим приложением, пример:
    docker run -d -p :5000:5000 \
      --name my_app_container \
      --link my_postgresdb_container:postgresdb \
      -e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
      -e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
      -e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
      your_docker_account/your_app_container

    7. Подключиться к запущенному контейнеру с приложением
    docker exec -it your_app_container /bin/bash
    8. Читать stdout запущенного приложения в контейнере
    docker logs -f your_app_container

    + Чтобы автоматизировать запуск всех необходимых контейнеров берите Docker Compose ( https://docs.docker.com/compose/ )
    Пример файла конфигурации:
    your_app:
      build: .
      links:
        - postgresdb
      ports:
        - "5000:5000"
      environment:
        DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
        DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
        DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
    postgresdb:
      image: kamui/postgresql
      ports:
        - "5432:5432"
      environment:
        POSTGRESQL_DB: mydb_name
        POSTGRESQL_USER: mydb_user
        POSTGRESQL_PASS: super_secret_password

    И теперь вместо пунктов 5 + 6 где мы запускали контейнеры мы можем всё стартануть одной командой
    docker-compose up

    + можно смонтировать код в контейнер и разрабатывать непосредственно в docker'контейнере.
    Надеюсь чем-то вам помог.
    Ответ написан
    3 комментария
  • Bitrix: Не могу сохранить детальную картинку?

    @maxyc_webber Автор вопроса
    Web-программист
    вобщем косяк был найден методом перебора ядра. оказалось что неверный символ был не в имени файла, а в section_code - вместо знаков подчеркивания были дефисы. но почему ошибка указывала на картинку не знаю. переименовал товар и все ок стало

    спасибо битриксу за столько секса.
    Ответ написан
    Комментировать
  • Как в битриксе используя ORM получить значение из нескольких сущностей?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Тут можно почитать про связи между ORM сущностями.

    Если сущности, о которых вы спрашиваете, связаны, то делается это довольно просто.

    Допустим вот так описано поле по которому идет связь между сущностью Book и Author внутри класса BookTable:
    new Entity\ReferenceField(
        'AUTHOR',
        'SomePartner\MyBooksCatalog\Author',
        array('=this.AUTHOR_ID' => 'ref.ID'),
        array('join_type' => 'LEFT')
    )

    тогда чтобы выбрать какое либо поле из сущности author надо в getList добавить Author.<Код поля>. например так:
    BookTable::getList(array(
        'select' => array(
            'TITLE',
            'AUTHOR_NAME' => 'AUTHOR.NAME',
            'AUTHOR_LAST_NAME' => 'AUTHOR.LAST_NAME'
        )
    ));

    Пример взят из статьи по ссылке приведенной выше.
    Ответ написан
    3 комментария
  • NGINX + PHP-FPM. Как запускать разные версии PHP для разных юзеров?

    DevMan
    @DevMan
    phpbrew или virtphp
    тут я приводил пример настройки NGINX+PHP-FPM для 2-х версий PHP при помощи phpbrew.
    Ответ написан
    9 комментариев