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

    pr0ject
    @pr0ject
    Интернет-маркетинг
    Задачка решается с помощью сегментов.
    В нужном отчете, например в отчете "Посещаемость", создаем сегмент по нужному URL.
    После этого можно анализировать любые метрики в настроеном сегменте, в том числе и кол-во посетителей.

    e952202a2ca4434095ad588dbe7a3ee5.png
    Ответ написан
    1 комментарий
  • Как добиться эффекта изменения цвета одежды на фото (fabric.js)?

    riky
    @riky
    Laravel
    посмотрите в консоль - при смене цвета - грузятся все новые картинки в разных позах.
    то есть либо на сервере генерят разные картинки со всеми цветами,
    либо, что вероятнее, их просто в фотошопе перекрасили и все.

    в данном случае это точно НЕ делается на фронтенде
    Ответ написан
    3 комментария
  • Когда ооп быстрее процедурного?

    @Mercury13
    Программист на «си с крестами» и не только
    ООП рассчитано не на скорость исполнения, а на скорость разработки. Как, впрочем, и многие другие современные технологии разработки. Всё, что ООП делает, можно реализовать и без ООП, и даже эффективнее. Стоит ли — другой вопрос.

    Какую задачу конкретно решает ООП? Обуздать сложность разработки программ, собранных из взаимодействующих компонентов. Вот от этого и пляшем: если программа не модульная (например, какой-нибудь сложный научный расчёт), ООП мало поможет. Также ООП не поможет, если стандартная реализация ООП недостаточно эффективна по процессору или по памяти — например, в мою бытность JavaMe’шником ООП не жаловали, поскольку памяти много ел, типичный мобильник имел от 215 до 800 килобайт доступной памяти. Также плохо будет работать там, где нет взаимодействия (на типичном PHP, который выдал страничку и исчез).

    Что на PHP можно реализовать объектно?
    • Поддержку каких-то протоколов (БД, почта, какая-нибудь внешняя веб-служба наподобие VK API или Mandrill).
    • Что-нибудь из предметной отрасли, что меняет своё состояние — например, генерация картинок, звуков, архивов, PDF…
    • Может, сделаешь какой-нибудь генератор страниц, который сначала собирает каркас страницы, а затем, в зависимости от настроек и целевого устройства, обращивает его HTML-кодом.
    Ответ написан
    Комментировать
  • Триггеры на sql или psql?

    @dmitryKovalskiy
    программист средней руки
    Я может чего-то не понимаю. SQL как сферический конь в вакууме - стандарт языка структурированных запросов.
    PSQL - реализация стандарта для СУБД PostgreSQL. T-SQL - аналогичная реализация для MSSQL и Sybase. На мой взгляд тут речь не идет о преимуществах и недостатках. Просто реализуется стандарт по разному на разных СУБД и некоторые фичи одной СУБД неприменимы на другой.
    Ответ написан
    2 комментария
  • Как правильно сделать нарастающий блок не зная высоты?

    Сперва получаете высоту контента внутри в пикселах (при каждом клике), а далее, с известной высотой, раздвигаете блок. Самое простое, что в голову пришло
    Ответ написан
    Комментировать
  • Можно ли отследить колбэк подключения внешнего скрипта и изменить DOM, который он генерирует?

    atlantech
    @atlantech
    Full Stack Software Developer
    Используйте $.getScript https://api.jquery.com/jquery.getscript/
    $.getScript('http://another-site.com/widjet.js', function() {
        $("#some-widjet").html("Новый текст");
    });


    Еще можете сделать вот так:
    var el = document.createElement('script');
    
    el.src = 'http://another-site.com/widjet.js';
    el.onload = function() {
        // Ваша логика, например
        $("#some-widjet").html("Новый текст");
    }
    
    document.body.appendChild(el);
    Ответ написан
    2 комментария
  • Элементы, находящиеся рядом с друг другом, при наличии opacity просвечивают друг друга. Как справится с этим?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Фотошоп не нужен. Прозрачность не нужна.

    Берете такую разметку

    div>img
    div>img
    div>img

    и примерно такие стили

    div::after { rgba(цвет фона, прозрачность); pos:a; }

    и управляете при наведении прозрачностью наложенного поверх картинки псевдоэлемента
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

    Это далеко не полный список требований, очень много зависит от проекта в целом и от принципов, заложенных в нем. Для больших мредж реквестов 200 комментариев к коду - это ок. Дерзайте.

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • С чего начать учить ASP.NET 5?

    Комментировать
  • Верстать без фреймвороков это значит быть не професионалом?

    @vildulv
    Профессионально было бы на вопрос заказчика: "...буду ли я использовать фреймворки?" - ответить : "А как вы хотите?" А потом, после того как он ответил, что хочет фреймворк (если видна нелогичность этого выбора для проекта) , согласится с его выбором, но при этом грамотно объяснить и указать какие будут минусы.
    Если это его не убедило -то решать уже самому делать как он хочет или же просто отказаться.
    Ответ написан
    Комментировать
  • Верстать без фреймвороков это значит быть не професионалом?

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

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

    В случае переговоров разрабу стоит не пытаться доказать, что ему виднее как делать, но в случае спорных ситуаций аргументировать предлагаемые методы работы - чем они будут полезны для заказчика: быстрее, дешевле, качественней, избавлено от проблем других методов и т.п.

    В любом случае, заказчику не стоило бы переходить на личность потенциального исполнителя, говоря про максималистичных новичков - это не относится к делу.
    По представленному случаю складывается ощущение, что заказчик просто выучил клёвое слово "фреймворк" и знает, что на нём много пишут и это хорошо/быстро/дешевле - этакая серебряная пуля от дорогих фрилансеров. =j Следовательно - нафиг такого заказчика. Профессионализм не заключается в умении угодить всем и вся, не говоря уже про непродуктивность такого сотрудничества. Ещё бы и правки наверное десятками отправлял. Каждую неделю.
    Ответ написан
    Комментировать
  • Стоит ли создавать интернет-магазин для портфолио на чистом PHP?

    @Afatar
    Конечно делай. Если есть время и тебе лет 13-15, то это отличный способ набить шишки и прокачать свой скилл. Обычно так и становятся программистами. С начало пишешь говно, потом читаешь про MVC, переписываешь, получается MVC говно, потом узнаешь про фреймворки и пишешь говно на фрейворке. Потом идешь в крутую контору и из тебя год выбивают все говно и после этого становишься специалистом.
    Ответ написан
    1 комментарий
  • Стоит ли создавать интернет-магазин для портфолио на чистом PHP?

    opium
    @opium
    Просто люблю качественно работать
    Всегда есть смысл что то делать для портфолио.
    Ответ написан
    Комментировать
  • Как методу IndexOf (из фреймворка .NET), объяснить, что внутри скобок метода, между некоторыми HTML-тегами может располагаться любой текст?

    NYMEZIDE
    @NYMEZIDE
    резюме - ivanfilatov.ru
    1. не пользуйтесь IndexOf для парсинга страниц
    2. или через регулярки тащите данные (не самый простой и надежный способ)
    3. или возьмите либу HtmlAgilityPack (https://htmlagilitypack.codeplex.com/) и через Xpath можно вытащить все что угодно.
    Ответ написан
    Комментировать
  • Как методу IndexOf (из фреймворка .NET), объяснить, что внутри скобок метода, между некоторыми HTML-тегами может располагаться любой текст?

    @dmitryKovalskiy
    программист средней руки
    IndexOf никаким боком не подходит для решения вашей задачи. Для этого есть регулярные выражения и инструменты парсинга HTML. Например HtmlAgilityPack
    Ответ написан
    Комментировать
  • Реально ли "урезать" JQuery?

    drugoi
    @drugoi
    Front-end Developer
    Вот тут можете собрать jQuery как вам надо → projects.jga.me/jquery-builder
    Ответ написан
    Комментировать
  • Не избыточны ли коментарии?

    @di23
    Напрягают такие комменты в одну строчку:
    /*
         удаляет данные с таким ключём
    */

    Почему нельзя сделать так?
    // удаляет данные с таким ключём
    Ответ написан
    3 комментария
  • Как сверстать двухколоночный макет с вложенным полупрозрачным дивом?

    @westdp
    Если я Вас правильно понял, то задаете левой колонке position: reletive;

    И этому блоку задаете, через псевдоэлемент
    div:before{
    content: '';
    position: absolute;
    height: 100%;
    widht: 100%;
    background-color: rgba(0,0,0,0.5);
    }

    Если есть рамка то сделай по высоте и ширине по 110% и для блока(левая колонка): overflow: hidden;
    Ответ написан
    3 комментария
  • Как узнать какая из двух кнопок была нажата?

    finnish
    @finnish
    $('#one,#two').click(function () {
        if (this.id == 'one') {
            ....
        } else {
            ....
        }
    }
    Ответ написан
    Комментировать
  • Как узнать какая из двух кнопок была нажата?

    $('button').click(function () {
        alert($(this).attr('id'));
    }
    Ответ написан
    Комментировать