Задать вопрос
  • Как посчитать сумму детей необходимого узла за каждый день месяца (Nested Set)?

    @remzalp
    Программер чего попало на чем попало
    Изучите GROUP BY, который в случае с MySQL всё аккуратно отсортирует, сгруппирует, а за компанию и посчитает сумму.

    Не понимаю, откуда взялся и как работает getTreeSum(), мне кажется какой-то лишний оверкилл может происходить внутри.

    Дальше - допишите EXPLAIN перед своим запросом и покажите результат - это скажет, в каких местах всё плохо.

    Подозреваю, запрос должен делиться на 2 части - вывод идшников дочерних узлов вложенным подзапросом и SUMмма по полученному:
    WHERE id IN (select .... left_key >= левый_ключ_необходимого_узла AND right_key <= правый_ключ_необходимого_узла)
    Ответ написан
    Комментировать
  • Что нужно для создания базы данных MongoDB (коллекция из браузера) на домашнем компьютере?

    @remzalp
    Программер чего попало на чем попало
    0. Поставить монго :)
    1. Нужен достаточно удобный метод вставлять/получать информацию. Можно пойти через REST прослойку:
    https://docs.mongodb.com/ecosystem/tools/http-inte... или один из драйверов, которые есть под кучу языков программирования.
    Или использовать какой-нить Robomongo для работы вручную
    2. Какая-то программа (самописная?), которая собственно работает с монго, берёт откуда-то данные, как-то перерабатывает и складывает.
    3. Желание.
    Ответ написан
    7 комментариев
  • Возможно ли иметь одинаковые сессии на двух сайтах?

    @remzalp
    Программер чего попало на чем попало
    Оба сайта должны хранить сессии совместно и передавать Вас друг другу (дополнительная кука, промежуточный сервис). Аналогично реализовано здесь - прозрачная авторизация через TM

    Если будут просто хранить файлы сессий в общем хранилище - при заходе на сайты - сгенерятся 2 разные сессии
    Ответ написан
  • Что нужно докупить в радиомагазине для экспериментов с Ардуино?

    @remzalp
    Программер чего попало на чем попало
    Я брал в качестве основы набор Амперки - Матрёшка Z, а потом просто искал каждую позицию в местном магазине. Набор достаточно сбалансированный, плюс у них просто потрясающая методичка на сайте, заточенная как раз под их набор.

    Дальше просто вносите коррективы в закупаемое - побольше двигателей? выключателей? транзисторов?
    Ответ написан
    1 комментарий
  • Как залить товары в OpenCart «пачками»?

    @remzalp
    Программер чего попало на чем попало
    1. получаем товары:
    https://vk.com/dev/market.get
    Если есть проблемы с доступом к апи (не хватает прав) - создаёте приложение в ВК, получаете его ид и следуете по https://vk.com/dev/implicit_flow_user
    2. смотрим по импорту товаров в опенкарт
    начиная с https://www.opencart.com/index.php?route=marketpla...
    или любой на выбор
    3. пережевываем товары из вк в формат товаров опенкарта
    4. выгружаем.

    В особо сложном случае (как делал сам) пишется скрипт для импорта. Пример говнокода для версии 1.5, этого хватает, если остальные действия с товаром делать уже в админке - свойства, категории, проч.:
    ВНИМАНИЕ: БД в проекте, который показан в этом примере была сильно перекроена, в итоге поля description, image были вынесены из связанных таблиц и вставлены в эту (в связанных моделях пришлось аналогично поступать). Потеряна возможность хранить много фоток, многоязычность. Получен импорт 100к товаров секунд за 10.
    Спасибо alex-1917 за внимательность.

    <?php
    set_time_limit(0);
    error_reporting(E_ALL);
    
    include_once('config.php'); //конфиг админки
    $my = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
    $my->set_charset("utf8");
    
    function addProduct($data,$my){
        foreach($data as $key=>$val)
        {
            $keys[] = '`'.$key.'`';
            $values[] = '"'.$my->real_escape_string($val).'"';
        }
        $keys[] = '`date_added`';   $values[] = 'NOW()';
        $keys[] = '`date_modified`';$values[] = 'NOW()';
    
        $keys2 = join(',',$keys);
        $vals2 = join(',',$values);
    
        $q = "INSERT INTO product ($keys2) VALUES ($vals2);";
        $my->query($q);
    }
    
    
    /*
    $items - массив с товарами из вк, в каталоге data лежат файлы с картинками
    */
    
    foreach($items as $item)
    {
        $data = array();
        $data['category_id'] = 1; //всё в один раздел
        $data['name'] = $item['name'];
        $data['description'] = $item['description'];
        $data['articul'] = $item['articul'];
        $data['quantity'] = 1;
        $data['stock_status_id'] = 1;
        $data['manufacturer_id'] = 0;
        $data['shipping'] = 1;
        $data['price'] = 0;
        $data['tax_class_id'] = 0;
        $data['subtract'] = 1;
        $data['minimum'] = 1;
        $data['image'] = 'data/'.$item['image'];
        $cnt++;
        addProduct($data,$my);
    }
    Ответ написан
    5 комментариев
  • Почему код грузит mysql?

    @remzalp
    Программер чего попало на чем попало
    1. $querystring - мне страшно даже думать про итоговый запрос. Изучите конструкцию "WHERE field_name IN (val1,val2,....)"
    2. WHERE `login`, ORDER BY `insearch` - индекс по этим полям создан?
    запрос вида
    EXPLAIN SELECT `account_id` FROM `accounts` WHERE `login` = 'any'
    даст немного инфы к размышлению
    3. $accounts[$i] что содержит? Может там многовато информации
    4. Весь цикл на самом деле можно свести к одному запросу
    SELECT `account_id` FROM `accounts` WHERE `login`IN(....)
    Ответ написан
    1 комментарий
  • Если отвлечься от вопроса: "ЗАчем?", потянет ли Windows XP c 1Гб оперативки современный интернет?

    @remzalp
    Программер чего попало на чем попало
    Работать будет, но с приличным трудом. Просто откройте любой из сайтов в своём любимом браузере и посмотрите, сколько процессов в диспетчере задач запущено на деле (камень в огород хрома) и суммарный объем занимаемой памяти.

    Виртуальная память не выручает. Для самой убогой ддр2 пропускная способность - 3 гигабайта в секунду. Сравните с крутым SSD на 500 мегабайт в секунду (время доступа до произвольного фрагмента информации - 0.5 мс). Замедление в самом идеальном случае без учета остальных факторов - не менее чем в 6 раз.

    Linux + текстовый браузер типа lynx / links - будет летать ВСЁ на 128 мегабайтах оперативной памяти благодаря тому, что JavaScript, CSS, Flash и картинки для этих браузеров пустой звук. Совсем...
    Вот только конечному пользователю это не слишком сильно понравится. Та же авторизация в ВК будет довольно непривычным квестом. Есть версия под Windows, на посмотреть.
    links.twibright.com/download.php - тут уже даже с поддержкой картинок и немного JS.
    invisible-island.net/lynx
    Ответ написан
    5 комментариев
  • Почему при скачке больших файлов через curl иногда они не докачиваются?

    @remzalp
    Программер чего попало на чем попало
    логируете всё на стороне php (лог ошибок посмотреть)
    берётё tcpdump, сохраняете дамп, анализируете в Wireshark

    одна из очевидных ошибок - пытаетесь всё забрать в оперативную память (отдаёте в переменную), а надо отдавать указатель на файл. CURLOPT_RETURNTRANSFER в случае больших файлов - вреден.

    Пример:
    $out = fopen($local_path.$newfilename,"wb");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FILE, $out);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $file);

    curl_exec($ch);
    curl_close($ch);
    Ответ написан
    Комментировать
  • Почему становятся невидимыми файлы с расширениеями tar.gz, exe, bin?

    @remzalp
    Программер чего попало на чем попало
    В зависимости от режима, в котором андроида подключаете - он может отдавать как целиком флэшку как обычное съемное устройство, так и эмулировать программно доступ.
    Во втором случае - программа-сервер сама решает - какие файлы показывать.
    MTP, PTP, USB

    Усложнённый вариант, если совсем всё будет плохо - ставьте на телефон какой-нибудь Total Commander с плагином локальной сети и лейте по сети на комп.
    Ответ написан
    2 комментария
  • Как изменить всю кодировку в mysqul phpmyadmin?

    @remzalp
    Программер чего попало на чем попало
    1. Запрос вам нагенерировал замечательных команд для изменения кодировки.
    ЗАПУСТИТЕ ИХ.

    2. Может быть имеет смысл на этапе подключения к БД явно указывать кодировку соединения? В коде подключения к БД сразу после connect.
    set names utf8;
    Ответ написан
    1 комментарий
  • Как конвертировать картинки в видео без потери качества?

    @remzalp
    Программер чего попало на чем попало
    Если на входе JPG, почему бы не задействовать MJPEG, который по сути просто склеенные в один файл картинки?
    ffmpeg -i %d.jpg all.mjpg

    Или просто накидать кадров
    ffmpeg -framerate 30 -i %d.jpg -codec copy output.mkv
    ffmpeg -framerate 30 -i %d.png -codec copy output.mkv
    ffmpeg -framerate 30 -i %d.png -codec copy output.mp4

    Уточните, зачем такая странная задача. Можно использовать и Lossless видео-кодеки
    Ответ написан
    2 комментария
  • С чем связан "Сбой" сервиса в менеджере systemd?

    @remzalp
    Программер чего попало на чем попало
    если процесс /usr/local/php/bin/php продолжает оставаться в памяти, но занят чем-то не тем - с точки зрения менеджера он вполне работает.

    Ищите в коде демона проблемы, добавляйте логирование, чтобы разобраться в причинах или какой-нить watchdog с внешним контролем, чтобы подпереть костылём
    Ответ написан
    8 комментариев
  • Как организовать перенос данных с телефона на телефон?

    @remzalp
    Программер чего попало на чем попало
    Программа читалка является владельцем своего каталога с данными, поэтому у неё нет проблем с доступом к своим данным, но могут быть ограничения с доступом к чужим.

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

    ROOT плевал на почти все права и смотрит что хочет.
    Ответ написан
    1 комментарий
  • Как отследить сетевой трафик на предприятии?

    @remzalp
    Программер чего попало на чем попало
    Вариантов проседания сети -
    1. Локалка - петли, дохлые коммутаторы, криво обжато/кабель потоптан, кто-то активно флудит, кривая сетевушка
    2. Внешка - кто-то что-то качает или косячит провайдер

    С openwrt не сильно знаком. Подозреваю, проблемы п.2 он позволяет хоть как-то отмониторить.

    Но по хорошему варианты решения:
    1. Маршрутизатор заменить сервером. Взять какой-нить для винды траффик инспектор (платный) и там из коробки будут красивые графики или фришных решений на FreeBSD или линуксе. Та же PfSense к примеру. Все проблемы с внехой будут хотя бы диагностируемы.

    2. Маршрутизатор заменить маршрутизатором :) Микротик или Циска дадут огроменное количество функционалу мониторинга и фильтрации. Поглядите к примеру микротиковскую виртуалку (месяц бесплатно) и Winbox для работы с ней. Простор разгуляться есть где. Микротиковский роутер от полутора тысяч. Что интересно, вот такое убожество в потрохах несёт ту же самую ОС с теми ж наворотами, единственно, что ресурсов по сравнению с более продвинутой моделью будет несколько поменьше.
    Микротик советую, при некотором наличии навыков можно мышкой натыкать конфиг, с циской вопрос - там всё же посложнее и подороже.

    3. Армянское Радио правильно говорит - нормальные управляемые коммутаторы.
    Позволят заглянуть в потроха сети во всех деталях. Плюс "нормальный" - это действительно нормальный, который не виснет от малейшей перегрузки.
    Какой-нить SNR-S2965-24T (старательно имитируют циски) или б/ушная циска Cisco Catalyst WS-C2950G-48-EI уложатся в десятку. При этом обеспечивается мониторинг загрузки портов по вполне стандартному SNMP, контроль петель, можно одну толстую локалку разбить на VLAN`s, так что широковещательные домены внезапно резко сузятся.
    Тот же Port Security помешает воткнуть в сеть незнакомое устройство (блокировка с оповещением админу при новом МАС)

    Вот так у меня Zabbix таскает с управляемых коммутаторов Cisco загрузку по портам, причем можно выставлять триггеры с оповещением, к примеру "загрузка на порту за последние 5 минут превышает 90%". Тут можно видеть общий график и по отдельным портам смотреть.
    e35d7994424648d88e1409d4e32e02d0.png
    При наличии таблички "кто на каком порту" позволяет прицельно пойти и постучать по голове конкретному сотруднику. Учитывая, что управляемый коммутатор позволяет программно посмотреть список маков на порту не вставая из-за компа, живот у Вас от стабильного сидения на одном месте будет только увеличиваться :)))

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

    @remzalp
    Программер чего попало на чем попало
    4 комментария
  • Php curl multi user requests?

    @remzalp
    Программер чего попало на чем попало
    1. Убедитесь, что удаленный сервер на ваш комп умеет отдавать одновременно несколько страниц. Например апачевский ab:
    ab -c 10 -n 100 http://localhost:8080/
    Аккуратно! Сопоставимо с ДоС атакой по нагрузке, убедитесь, что с той стороны будут рады Вас принять. Будет запрашивать в несколько потоков один и тот же урл.

    2. Убедитесь, что локальному серверу хватает мощности, чтобы просто отдавать страницы в несколько потоков тем же ab

    3. Попробуйте не модулем PHP работать, а вызывать через php.net/manual/ru/function.passthru.php
    НЕБЕЗОПАСНО, только теста ради.

    4. Попробуйте в тестовом скрипте не стартовать сессии (не уверен, что в этом причина, но бывает блокировка).

    И когда исключите всё за пределами cUrl, уже можно будет ковыряться с ним.
    Ответ написан
    3 комментария
  • Как в Linux в режиме ядра работать с текстовыми файлами?

    @remzalp
    Программер чего попало на чем попало
    Гугл "linux open file in kernel mode" оказался достаточно быстр...
    https://www.howtoforge.com/reading-files-from-the-...
    #include <linux/fs.h> // Needed by filp
    Ответ написан
    2 комментария
  • Что делать, если воруют контент?

    @remzalp
    Программер чего попало на чем попало
    А может попробовать заставить работать закон о защите авторских прав на пользу населения, а не для всяких там?

    Создали документ, распечатали его, отправили сами себе заказным письмом, НЕ ВСКРЫВАЕМ.
    После того, как есть документально зафиксированная дата создания письма (в момент отправки) и письмо лежит у Вас, размещаем на сайт. Мониторим, как только конкуренты разместили, идём к нотариусу, фиксируем нотариально тот факт, что в День НН на сайте ХХХУУУЗЗЗ была размещена статья.

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

    Да, я наивный оптимист, но как минимум есть закон о СМИ (тырить можно, но с указанием источника), ГК (защищает литературное произведение)...
    Ответ написан
    11 комментариев
  • Какие еще действия предпринять для увеличения скорости выборки в MySQL?

    @remzalp
    Программер чего попало на чем попало
    Фрагмент запроса "a.ID IN (ннн,нн)" уже выбирает максимально быстрым методом по первичному ключу всю необходимую информацию, которая дальше дофильтровывается.

    Дальше уже вопрос - а насколько много столбцов Вы получаете запросом, есть ли там лишние?
    Есть ли столбцы типа TEXT, Varchar, у которых переменная длина, что может немного понизить производительность в нкоторых операциях.

    Следующий вопрос - а не пора ли оптимизировать настройки сервера - кэш, память. Начиная с mysqltuner.com , заканчивая вдумчивым анализом манов и статистики использования.

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

    И еще для тестов без кэширования ребутить сервер не надо. Используйте:
    SELECT SQL_NO_CACHE a.ID FROM articles a WHERE ...
    Ответ написан
    Комментировать
  • Powershell, стоит ли изучать на старте?

    @remzalp
    Программер чего попало на чем попало
    Ну не бывает так, что используется в работе ровно один навык. Не упирайтесь в один инструмент.
    Начинайте работать и держите в уме, что можно делать разными методами что угодно. Плюс по ходу работы разберетесь, с чем вообще работать. Виндовый админ хорошо, линуксовый админ хорошо, а два в одном дороже.

    MS Server Core редакции немного страшноваты в настройке, там повершелл будет полезен.
    Автоматизация некоторых операций в Active Directory тоже делается заметно легче с повершелл.

    Обработать логи - bash, grep, sed, awk в сумме рулят заметно больше простотой команд (или мне больше нравится).

    Автоматизировать инсталлятор или какие-то оконные манипуляции - проще получается задействовать AutoIT, чем лезть в потроха и находить другие методы взаимодействия.

    Единого и удобного инструмента нет, так что хватайте всё и работайте.
    Ответ написан
    Комментировать