• Как определить цвет, близкий к цвету из существующего списка (php)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Переводим число из HEX.
    // писал по памяти, не уверен что заведется
    $rgb = array_map($component) {
    
        return base_convert($component, 16, 10);
    }, array_chunk(ltrim($color, '#'), 2));

    И теперь мы можем вычислить расстояние между цветами по формуле:
    d=sqrt((r2-r1)^2+(g2-g1)^2+(b2-b1)^2)

    По расстоянию находим наиболее близкий цвет.

    Еще как вариант - перевести цвет в HSV и сравнивать по среднему значению компоненты HUE. Если у вас большая палитра, то будет дешевле в плане вычислений один раз перевести RGB в HSV и потом считать только среднее значение.

    Итоговый вариант:
    // преобразует HEX в RGB
    function hexToRgb($hex) 
    {
        return array_map($component) {
    
            return base_convert($component, 16, 10);
        }, array_chunk(ltrim($hex, '#'), 2));
    }
    
    // возвращает расстояние между двумя цветами
    function getDistanceFromColor($a, $b) 
    {
        list($r1, $g1, $b1) = $a;
        list($r2, $g2, $b2) = $b;
        
        return sqrt(pow($r2-$r1, 2)+pow($g2-$g1, 2)+pow($b2-$b1, 2));
    }
    
    // Возвращает наиболее подходящий цвет из палитры
    function getClosestColor($color, array $pallet) {
        $distances = array_map(function ($colorFromPallet) use ($color) {
             return getDistanceFromColor($color, $colorFromPallet);
        }, $pallet);
        
        ksort($distances);
        $keys = array_keys($distances);
        
        return $pallet[$keys[0]];    
    }
    
    // пример:
    $color = "#ff0044";
    // для примера у нас есть палитра из HEX цветов
    $pallet = ["#ff0000", "#ffffff"];
    // сразу переводим в RGB всю палитру
    $pallet = array_map(function ($color) {
        return hexToRgb($color);
    }, $pallet);
    
    // берем самый подходящий в палитре цвет
    // он вернется в формате RGB, можете потом сконвертить в HEX
    $closestColor = getClosestColor($color, $pallet);


    для картинки можно сделать проще - пусть функция getClosestColor будет возвращать индекс цвета из палитры. Так проще организовать подсчет и мы все так же знаем на какой цвет заменять.
    Ответ написан
    5 комментариев
  • Как перенсти почту с сохранением всех писем?

    IlyaEvseev
    @IlyaEvseev
    Opensource geek
    boshdirect.com/Blogs/Tech/copy-imap-folders-betwee...

    Или так: синхронизируете все папки по IMAP со старого сервера на компьютер,
    меняете в свойствах учётной записи адрес imap-сервера и пароль со старых на новые,
    синхронизируете все папки по IMAP с компьютера на новый сервер.
    Ответ написан
    Комментировать
  • Как перенсти почту с сохранением всех писем?

    @Ars1s
    "Возможно, взять почтовый клиент (The Bat, Thunderbird) сохранить письма локально, а после смены почтового сервера вновь их подгрузить? "

    Возможно. Я так понимаю тут обычный IMAP, или POP. Сливаете почту в pst тем же outlook, и этот pst подключаете к новой почте.
    Ответ написан
    Комментировать
  • Как перенсти почту с сохранением всех писем?

    nekipelov
    @nekipelov
    Не совсем понятно, какой объем почты, количество пользователей и как организовано ее хранение (локально или на сервере), поэтому корректный ответ дать сложно. Возможно поможет использование imap сервера. Стороннего, если он не предоставляется текущими серверами. Т.е. просто текущую почту заливаете на imap сервер, подключаете новый почтовый ящик и перемещаете почту туда. Должно получится с любым почтовым клиентом и количество действий зависит от количество каталогов, а не писем.

    Если оба почтовых сервера предоставляют imap, то должно быть возможно подключение двух ящиков и простое копирование/перемещение всех писем из одного в другой.
    Ответ написан
    1 комментарий
  • Как изменить расположение элементов WooCommerce в WordPress?

    Punkie
    @Punkie
    В папке плагина woocommerce есть файл со всеми хуками - woocommerce_hooks.php . Находите в нем отрезок, который отвечает за нужный вам кусок шаблона (в вашем случае woocommerce_single_product_summary), смотрите вызовы add_action.
    У вас они будут как раз такие, как закоментировано в коде выше, то есть:
    @hooked woocommerce_template_single_title - 5
                 * @hooked woocommerce_template_single_price - 10
                 * @hooked woocommerce_template_single_excerpt - 20
                 * @hooked woocommerce_template_single_add_to_cart - 30
                 * @hooked woocommerce_template_single_meta - 40
                 * @hooked woocommerce_template_single_sharing - 50


    В данном случае числа - это последовательность (приоритет) активации action'ов.
    Теперь вам нужно в functions.php вашей темы деактивировать эти action'ы методом remove_action и выполнить их активацию в нужном вам порядке.
    Например, вам нужно, чтобы сначала выводилось название товара, затем краткое описание, затем цена и тд.
    Код будет примерно такой:
    *тут перечисляем все строки с методом remove_action:
    
    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
    ... и т.д.
    
    *Теперь вызываем те же действия по хуку woocommerce_single_product_summary, но в нужной нам последовательности:
    add_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
    add_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 10);
    add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 15);
    ... и т.д.

    Числовой приоритет вызова обычно делают кратным 5 для того, чтобы можно было потом еще что нибудь впихнуть между вызовами. Например, захотите потом добавить вывод ключевых слов или уникального поля товара между названием и кратким описанием. Тогда приоритет вызова можно будет сделать 6-9 без необходимости заново перебирать весь массив вызова хука.

    Подробнее про понятия hook, action и filter читайте в официальном руководстве: Introduction to hooks: actions and filters
    Ответ написан
    7 комментариев
  • Как привязать footer к низу экрана в Twitter Bootstrap?

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Блин… что за советы… там есть встроенный класс: navbar-fixed-bottom

    <div class="navbar-fixed-bottom row-fluid">
          <div class="navbar-inner">
              <div class="container">
    
    Ответ написан
    7 комментариев
  • Принудитальная очистка памяти PHP?

    @egorinsk
    Если у вас есть утечка памяти в PHP. то это, как правило не баг PHP. Наверняка где-то в библиотеке, которую вы используете, есть лог или кеш и он копится, не освобпждаясь (был случай, например, когда все SQL-запросы логгировались в массив, который никогда не очищался).

    Например, есть такая библиотека phpQuery, когда-то я пробовал ей пользоваться, она потребляла память в немерянных количествах.

    Также утекать могут расширения вроде DOM.

    В общем, изучите код внимательно и поищите сомнительные места.

    Хочется послать также лучей ненависти всем, кто, не разобравшись в проблеме, пишет глупости вроде «PHP течет». В PHP система управления памятью лучше чем в других языках, так как в нем есть и Copy-on-Write, и счетчик ссылок, и сборщик мусора. Не во всех языках это доступно.
    Ответ написан
    Комментировать
  • SoapClient в PHP: как получить HTTP заголовки?

    @cat_crash
    Возможно есть более порстой способ. Но если не найдете — Wireshark (tcpdump) вам однозначно поможет
    Ответ написан
    1 комментарий
  • Как привязать footer к низу экрана в Twitter Bootstrap?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что бы прикрепить подвал к низу страницы есть много вариантов. Самые простые — добавить для html и body min-height:100% и position:relative; Затем обернуть все во вреппер с паддингом снизу равным высоте вашего подвала, и последнему назначить Position:absolute;bottom:0.

    Если у вас не вышло — просто поищите статей. Их в сети море. А сам бутстрап поидее не должен хоть как-то этому мешать.
    Ответ написан
    3 комментария
  • Перенос домена в другую страну

    Antilogic
    @Antilogic
    Да, это возможно.
    Я бы посоветовал joker.com, уже 8 лет как являюсь клиентом этой компании, никаких претензий.
    Обычно у обоих сторон-регистраторов оформляется заявка на перенос домена, чаще всего в принимающей стороне есть стандартные формы для приема домена. С той стороны, откуда переносится домен, обычно приходится обращаться в тех. поддержку.
    Вот тут после регистрации становится доступна функция переноса домена к джокеру: joker.com/index.joker?mode=transfer_gain&do_next=step1
    Ответ написан
    1 комментарий
  • Перенос домена в другую страну

    svfoster
    @svfoster
    Можно переносить, выбирайте на свой вкус регистратора. При переносе потребуется указать domain secret — должен быть у вас в панеле управления у старого регистратора. Также снемите статус Locked — Transfer prohibited, если ставили.

    P.S. Вы случайно не старый клиент ESTDomains/ResellersClub?
    Ответ написан
    1 комментарий
  • Перенос домена в другую страну

    opium
    @opium
    Просто люблю качественно работать
    1)Может быть
    2)Меня устраивает godaddy.com/
    3)Зайдите к своему регистратору и посмотрите раздел в правилах или помощи, перенос домена, обычно требуется письменное заявление, если удаленно то заверенное нотариально.
    Ответ написан
    1 комментарий
  • Drupal. Таксономия

    Anonym
    @Anonym
    Программирую немного )
    Organic Groups — предоставляет тип материала «Коллективный блог». Имеет множество настроек доступа к блогам.
    Пользователь создает «Блог» и в этот блог можно добавлять «Записи».
    Ответ написан
    1 комментарий
  • Drupal. Таксономия

    @ChemAli
    Если вы имели в виду коллективные блоги или сообщества, то вам нужен модуль organic groups
    Ответ написан
    1 комментарий
  • Drupal. Таксономия

    @Dzen_Marketing
    Автора спасёт taxonomy + taxonomy menu
    Ответ написан
    1 комментарий
  • Drupal. Таксономия

    holyorb2
    @holyorb2
    это модуль Book в стандартной комплектации
    Ответ написан
    Комментировать
  • Drupal. Возможна ли такая организация структуры сайта

    @ChemAli
    Что должно быть в разделах «Изменения» и как часто планируется создавать разделы верхнего уровня?
    Ответ написан
    3 комментария
  • Drupal. Возможна ли такая организация структуры сайта

    holyorb2
    @holyorb2
    в друпале такая структура возможна и даже автоматическое создание разделов тоже возможно и даже без программирования!!! (хотя лучше программировать)
    Задача на все 100% не понятна, но из того что я понял вам нужно:
    Views — этот модуль будет выводить разделы и блоки с темами
    Taxonomy — стандартный модуль, его только включить. это ваши термины
    Rules — этим модулем будут автоматически создавать 2 подраздела

    ну и еще другие модули на свой выбор
    Ответ написан
    Комментировать
  • Drupal. Возможна ли такая организация структуры сайта

    @IvanKlut
    Если я правильно понял задачу, то всё просто.
    Медицина, Питание, Религия — это первый уровень таксономии, а Лекарственные препараты, Вера, ГМО, это второй уровень. Соответственно цепляя данный словарь к типам материала мы сразу можем размещать данные материалы в этих разделах.
    Хотя конечно странно, что обычные пользователи могут создавать подразделы. Может это форум планируется?
    Ответ написан
    1 комментарий
  • Чат и нагрузка на хостинг?

    @Jazzist
    Охотно поделюсь опытом — при 20 пользователей в реальном времени средний сервер глохнет, при 50 — дохнет. Речь идет именно о присутствии пользователей в реальном времени при частоте обновления 1 раз в секунду.

    В свое время решал проблему производительности чата приобретением дополнительного сервера. Хорошо помогает и оптимизация в выде выноса движка БД на отдельный сервер.

    То есть, к примеру, на основном сервере у вас работает веб-сервер с интерпретатором языка и хранением файлов, на дополнительном — MySQL. Для сильно бюджетных решений — многие продавцы виртуалок дают возможность использовать MySQL на выделенном сервере, вне ресурсов виртуалки.
    Ответ написан
    Комментировать