Задать вопрос
  • Как вывести не полное предложение с многоточием на конце?

    abyrkov
    @abyrkov
    JavaScripter
    CSS
    .box {
        width: 250px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    Вот тут другие варианты
    Ответ написан
    Комментировать
  • Кто знает замену MongoDB?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    В чем проблема-то? Вы что-то не то делаете, и проблема не в монго, а как говорится в прокладке между стулом и монитором.

    коллекция юзеры -> id, email, password
    коллекция посты -> id, user_id, post_content

    var user = users.find(1);
    var posts_by_user = posts.find({ user_id: user._id });
    Ответ написан
    8 комментариев
  • Почему не срабатывает transition на градиенте?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Градиент транзишеном менять нельзя. Но можно сделать 2 блока конкретно для бэкграундов (или например через :before/:after) и менять у них прозрачность.
    Ответ написан
    Комментировать
  • Прибавить секунду к дате?

    27cm
    @27cm
    TODO: Написать статус
    <?php
    
    $interval = new DateInterval('PT1S'); 
    $start = new Datetime('2016-05-24 00:00:01');
     
    $period = new DatePeriod($start, $interval, 3 * 24 * 60 * 60);
    foreach ($period as $date) { 
        echo $date->format('d-m-y | H:i:s') . PHP_EOL; 
    }


    Если хотите пошустрее, забив на то, что в сутках не всегда 24 часа, то можно вот так:
    <?php
    
    $interval = new DateInterval('P1D'); 
    $start = new Datetime('2016-05-24');
     
    $period = new DatePeriod($start, $interval, 3);
    foreach ($period as $date) {
        $day = $date->format('d-m-y');
        for ($H = 0; $H < 24; $H++) {
            for ($i = 0; $i < 60; $i++) {
                for ($s = 0; $s < 60; $s++) {
                    echo sprintf('%s | %02d:%02d:%02d', $day, $H, $i, $s) . PHP_EOL; 
                }
            }
        }
    }


    php.net/manual/ru/dateperiod.construct.php
    Заблуждения программистов относительно времени
    Ответ написан
    2 комментария
  • Где взять инпут такой как у тостера?

    AloneCoder
    @AloneCoder
    [object Object]
    Это называется wysiwyg-редактор
    alex-d.github.io/Trumbowyg
    Ответ написан
    Комментировать
  • Полезные сайты для web dev?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Здесь есть много ресурсов:
    https://github.com/littleguga/studying
    https://github.com/zualex/devmap
    Ответ написан
    Комментировать
  • Как вывести контент со страницы другого сайта при этом без его шапки и футера?

    Если я правильно вас понял . То вам нужно с начало через

    file_get_contents();
    Получить страницу целиком . Далее вам нужно спарсить нужные данные в массив через preg_match_all ();
    Ответ написан
    Комментировать
  • Как реализованы окна просмотра новости в вк?

    werty1001
    @werty1001
    undefined
    body {overflow: hidden;}
    #mymodal {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        overflow-y: auto;
    }
    Ответ написан
    2 комментария
  • Как правильно отправлять с помощью ajax post запрос на другой сервер/домен?

    AMar4enko
    @AMar4enko
    OPTIONS это так называемый preflight-запрос, который предваряет любые запросы на сторонние домены, согласно требованиям CORS.
    Сервер должен уметь на него отвечать (а не просто метод должен быть прописан в заголовках).
    Минимально сервер на OPTIONS должен ответить 200 OK и прислать заголовки CORS-политики.
    Исходя из ответа на OPTIONS браузер делает вывод - слать данные или нет. У вас сервер отвечает ошибкой.
    Ответ написан
    Комментировать
  • Как настроить правильное кэширование в Apache?

    MaXComp
    @MaXComp
    интересуюсь frontend html+css+JS+php. Linux, C
    Может так, как универсальное решение.

    .htaccess

    <ifModule mod_headers.c>
        #кэшировать html и htm файлы на один день
        <FilesMatch "\.(html|htm)$">
            Header set Cache-Control "max-age=43200"
        </FilesMatch>
        #кэшировать css, javascript и текстовые файлы на одну неделю
        <FilesMatch "\.(js|css|txt)$">
            Header set Cache-Control "max-age=604800"
        </FilesMatch>
        #кэшировать флэш и изображения на месяц
        <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
            Header set Cache-Control "max-age=2592000"
        </FilesMatch>
        #отключить кэширование
        <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
            Header unset Cache-Control
        </FilesMatch>
    </IfModule>
    <ifModule mod_expires.c>
        ExpiresActive On
        #по умолчанию кеш в 5 секунд
        ExpiresDefault "access plus 5 seconds"
        #кэшировать флэш и изображения на месяц
        ExpiresByType image/x-icon "access plus 2592000 seconds"
        ExpiresByType image/jpeg "access plus 2592000 seconds"
        ExpiresByType image/png "access plus 2592000 seconds"
        ExpiresByType image/gif "access plus 2592000 seconds"
        ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
        #кэшировать css, javascript и текстовые файлы на одну неделю
        ExpiresByType text/css "access plus 604800 seconds"
        ExpiresByType text/javascript "access plus 604800 seconds"
        ExpiresByType application/javascript "access plus 604800 seconds"
        ExpiresByType application/x-javascript "access plus 604800 seconds"
        #кэшировать html и htm файлы на один день
        ExpiresByType text/html "access plus 43200 seconds"
        #кэшировать xml файлы на десять минут
        ExpiresByType application/xhtml+xml "access plus 600 seconds"
    </ifModule>
    Ответ написан
    Комментировать
  • Как быть с сессиями?

    DevMan
    @DevMan
    зачем?
    сессия мутабельна по определению. ну и кагбе писать в нее можете только вы, а себя красавца от выстрела в коленку мало что спасет))

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

    ну а на практике вы пытаетесь решить "Как быть, если в любом месте в коде можно вызвать DROP TABLE users"
    да никак не быть, просто думать головой. это несложно.
    Ответ написан
    Комментировать
  • Какие есть альтернативы модальным окнам bootstrap?

    @frontender
    Ответ написан
    Комментировать
  • Какие есть альтернативы модальным окнам bootstrap?

    Fancybox - довольно популярная штука: fancyapps.com/fancybox
    Довольно много возможностей
    Ответ написан
    Комментировать
  • Вопрос по подключению системы кэширования?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Почитайте, optimization.guide и вот вам немного теории:

    Кешировать можно:
    • целиком всю страницу (для каждой страницы своя запись в кеше)
    • отдельные части сайта


    Кешировать можно в файлах:
    • генераруя готового html
    • генерируя html+php, так работают smarty и прочие шаблонизаторы собирая множество шаблонов в один
    • в виде бинарного содержимого, сюда и готовый html и готовые значения вычислений и прочее
    • в виде сериализованного массива с чем угодно, от предыдущего пункта отличается только форматом хранения


    Кешировать можно в базе:
    • в mysql/postgresql и прочих SQL - будет храниться на диске и горячие данные в памяти
    • в mysql/postgresql и прочих SQL в in-memory таблицах - будет храниться в оперативке, но без дополнительных усилий кеш пропадёт при рестарте сервера
    • в in-memory базах данных, часто это memcache, redis и прочее - опять таки выключили сервер - данные пропали
    • в in-memory базах данных с сохранением на диск, это Tarantool, memcachedb и прочие если там заявлена такая функциональность


    Так же можно:
    • кешировать всё кроме вставок динамики
    • кешировать куски вставляя их в динамику

    Это два противоположных подхода которые при особом желании можно смешивать в рамках одного проекта.

    Обновлять кеш можно:
    • при каждом запросе проверяя что старый кеш устарел
    • предкеширование - отдельным кроном/демоном/сервисом генерировать кеш раз в N минут
    • по мере изменения данных сбрасывать кеш и следующий запрос сгенерирует новый
    • по мере изменения данных сбрасывать кеш путём генерации сразу нового и замены старого на новый


    Кеш можно хранить:
    • на том же сервере что и сайт - нет задержек в сети, но зато ресурсы теже, CPU, диск, оперативная память
    • на внешнем сервере - задержки в сети, зато ресурсы отдельно


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

    Если используете CMS/CMF - посмотрите готовые плагины для кеширования. Если у вас не sharing-хостинг с мини-сайтом - озаботтесь профилированием (xhproof) и мониторингом, это поможет понять где и что кешировать.

    Так же стоит рассмотреть кэширование байт-кода:
    • OpCache
    • APC
    • XCache

    Стоит прочитать вот эту статью:
    Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache https://habrahabr.ru/post/264775/

    Так же стоит:
    • увеличить буферы в MySQL (если памяти много)
    • потюнить другие системы, например поставить nginx вместо apache, раздавать статику с другого хоста
    • и конечно же - посмотреть как долго работают SQL запросы и по возможности их облегчить


    Кеширование в MySQL с использованием HandlerSocket:
    • данные хранятся в MySQL innodb базе, а значит чтение и запись можно делать как по старинке через SQL так и через HandlerSocket
    • можно сделать любое количество колонок, лишь бы это позволял MySQL
    • быстрая вставка
    • быстрая выборка
    • бинарный протокол передачи данных
    • есть несколько библиотек для PHP, как относительно новых так и старых
    • в Percona Server (форк MySQL) HandlerSocket.so есть в поставке по умолчанию, разве что нужно включить
    • в MySQL необходимо собрать HandlerSocket самостоятельно и включить в MySQL


    Можно почитать вот тут:
    Ответ написан
    3 комментария
  • Какой стороне принадлежит доменное имя?

    Доменное имя не принадлежит ни той, ни другой стороне.
    Одной из сторон принадлежит право использования доменного имени в течение ограниченного срока, которое периодически нужно подтверждать очередным взносом.
    Говоря просто - кто оплачивает и имеет реквизиты от личного кабинета, того и тапки.
    Ни один здравомыслящий фрилансер или веб-студия не будет оформлять домен на себя, если у них нет цели потом шантажировать компанию.
    Ответ написан
    Комментировать
  • Не работает header php почему?

    Возможно вы указываете php header после контента?
    Важно! указывать header до вывода любого контента.
    Вот вам немного информации по этой теме :3
    Ответ написан
    5 комментариев
  • Аякс в аяксе в аяксе, какое решение выбрать?

    Никакой портянки не будет. Будет одна функция и один колбэк, отличаться будет только параметры current_step и token, или как там вы их назовете, по которым на бэкенде будет определяться, какую часть формы отдать.

    И это хорошая практика. Поддерживается также легко.

    P.S. Грузить форму сразу или нет, зависит от ее размера и сложности. Если форма большая и сложная, и состояние промежуточных этапов зависит от предыдущих, надо разбивать.
    Ответ написан
    4 комментария
  • Правильно ли я определил классы в ООП?

    @Sketcher2010
    PHP, python, java developer
    1) Конечно удобно. Еще удобнее использовать фрейм-ворки, которые (все) используют ооп
    2) Можно использовать синглтон (шаблон singleton) и в нём уже контролировать кол-во запросов. Однако тут я немного могу ошибаться (ибо сложно узнать откуда пришёл запрос: из сообщений или из загрузки страницы)
    3) в самописных cms лучше использовать MVC. Тут уже идёт разделение на модели (товар, хлебные крошки), вьюхи (страница, ветрина, меню) и контроллеры, которые связывают это.

    Ответил на все два вопроса ;-)
    Ответ написан
    2 комментария
  • Как правильно реализовать &:hover:not(.cancel-class-hover)?

    .class-name:not(.not-class-name):hover{
    //your rules
    
    }
    Ответ написан
    Комментировать
  • А есть ли более эффективный способ обучения новым штукам?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    Начать с пункта 3 и в обратном порядке вверх в тех местах где чтото непонятно.
    Ответ написан
    Комментировать