• Как открыть PSD в Figma?

    @massimodesign
    Шлепнете PSD в Sketch
    https://avocode.com/convert-psd-to-sketch

    Затем уже скетч перетащите в Фигму
    Ответ написан
    4 комментария
  • Чем отличаются написание стилей через точку, запятую или слитно?

    @dev-rob
    Селектор .selector обозначает класс, который вы указываете в HTML через атрибут class. Слитное написание селекторов класса .selector1.selector2 обозначает, что у элемента применены оба этих класса. А через запятую вы можете указывать множество селекторов для которых можете применить стили
    Подробнее о селекторах
    Ответ написан
    Комментировать
  • Какая библиотека для создания telegram бота на Python лучше и удобнее?

    • Если ожидается большой проект с высокой посещаемостью и долгой поддержкой то у aiogram нет альтернативы. У них беда с документацией, но есть чат в TG где всегда подскажут. Там можно пообщаться и с разработчиком данной библиотеки.
    • Если это что-то простое на десяток хэндлеров и лень долго разбираться то у python-telegram-bot очень подробные wiki, документация, снипеты. Можно без опыта очень быстро разобраться... в асинхронность тоже умеет простым декоратором @run_async, можно даже запустить serverless на какой нить azure/google/aws/yandex functions с бесплатным лимитом в 1000000(azure) обращений за месяц
    • Если ограничения bot api слишком тесные и вы хотите делать то что может только клиент (например выгружать файлы больше 40Мб), то посмотрите в сторону telethon (тоже async) плюс он общается с серверам телеграма не через request-respons, а по протоколу MTProto. В частности можете посмотреть на Garnet — bot-friendly telethon
    Ответ написан
    1 комментарий
  • Платные ссылки и переходы с домена через rel="noopener noreferrer"?

    @granty
    Везде идет стандартное описание в вида копипост, закрывает реферала, закрывает http!
    Вот зачем нужен атрибут rel="nofollow noopener".

    В Интернетах часто пишут всякие глупости, но на то вы и технарь, чтобы отделить зёрна от плевел.

    Если вы прочитали по ссылке выше, вы уже знаете, что:
    - rel="nofollow noopener" ставиться только на внешние ссылки на чужие ресурсы. При внутренних переходах по собственному сайту rel="nofollow noopener" указывать не надо (нет смысла), поэтому ваш счётчик переходов не остановится.

    - нормальные партнёрки (Адсенс, РСЯ и тп) делают ссылки яваскриптом, уже после загрузки страницы в браузере. Плагин WP крутится на сервере и прописать rel="nofollow noopener" у этих ссылок не сможет - он не дотянется до браузера пользователя.
    Ответ написан
    Комментировать
  • Платные ссылки и переходы с домена через rel="noopener noreferrer"?

    Kozack
    @Kozack Куратор тега HTML
    Thinking about a11y
    Первая ссылка при поиске

    rel = ”noopener” — это атрибут HTML, который добавляется ко всем ссылкам WordPress, выбранным для открытия на новой вкладке браузера. Он также сопровождается атрибутом rel = ”noreferrer”. Эта функция введена в WordPress для устранения уязвимости безопасности, которая может быть использована вредоносными веб-сайтами.

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


    rel = ”noreferrer” не влияет на партнерские ссылки в WordPress. Некоторые пользователи все же считают, что влияет, потому что rel = ”noreferrer” не позволяет передавать информацию о реферере на новую вкладку.

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

    Во-вторых, большинство аффилированных маркетологов используют плагин маскировки ссылок для своих партнерских ссылок. Например, Pretty Link Lite.

    При закрытии ссылки партнерская ссылка, по которой переходят ваши пользователи, фактически является собственным URL вашего сайта, который затем перенаправляет пользователей на целевой URL.
    Ответ написан
    Комментировать
  • Проблема с CLS: значение показателя выше порогового (0,25). Устройство: мобильные устройства. Как решить?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вы хоть почитали что такое CLS?

    CLS - Cumulative Layout Shift, это на сколько сдвигаются элементы вашей страницы в процессе ее загрузки. В идеале, CLS 0 означает что изначально страница размечается со всеми элементами нужных размеров, и по мере подгрузки этих элементов (картинок, например) соседние элементы не скачут.

    В вашем же случае страница скачет как бешеная. Вот начало загрузки:

    5fa3d64ceab73443827463.jpeg

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

    5fa3d684e5c46484632593.jpeg

    Чтобы этого не происходило, контейнерам, которые содержат подобные элементы, нужно задавать реальные размеры. Подробнее гуглите и изучайте теорию, все разжевано. Например, вот.
    Ответ написан
    1 комментарий
  • Чем отличаются написание стилей через точку, запятую или слитно?

    @skuvaWeb
    Почитайте о наследовании, каскаде и группировке стилей в css
    В вашем случае .test1.test2 означает что стили применятся только к блоку у которых есть оба этих класса
    <div class="test1 test2"></div>
    Ответ написан
    Комментировать
  • Как перейти с utf8 на utf8mb4 в MySQL?

    При такой конфигурации
    [mysqld]
    init_connect='SET collation_connection = utf8mb4_unicode_ci'
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    
    [client]
    default-character-set = utf8mb4

    имеем

    +--------------------------+--------------------+
    | Variable_name                  | Value                       |
    +------------------------------+------------------------+
    | character_set_client          | utf8mb4                  |
    | character_set_connection | utf8mb4                  |
    | character_set_database    | utf8mb4                  |
    | character_set_filesystem  | binary                      |
    | character_set_results       | utf8mb4                   |
    | character_set_server        | utf8mb4                   |
    | character_set_system       | utf8                          |
    | collation_connection        | utf8mb4_general_ci |
    | collation_database          | utf8mb4_unicode_ci |
    | collation_server               | utf8mb4_unicode_ci |
    +-----------------------------+------------------------+
    10 rows in set (0.01 sec)
    Ответ написан
    2 комментария
  • Размещать ли блог интернет магазина на поддомене или на отдельно?

    RotgarSett
    @RotgarSett
    SEO Эксперт
    Если у вас большой магазин и/или нет технической возможности реализовать на том же домене, eсли есть возможность вложить в продвижение блога много ресурсов или вы вообще не планируете продвигать его через поисковики, то лучше делать поддомен.

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

    Все крупные магазины имеют блог на отдельном поддомене.
    например: https://blog.wildberries.ru

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

    Кстати, при оформлении статей в блог рекомендую почитать эту статью на Хабре: SEO оптимизация статьи: актуальный план
    Ответ написан
    Комментировать
  • Размещать ли блог интернет магазина на поддомене или на отдельно?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Тут все зависит от стратегии продвижения, если Вы хотите как-то увеличить вес магазина в глазах поисковиков, добавив уникального контента - то конечно подраздел.
    Если блог - это маркетинговый инструмент и его задача получить хорошие позиции в поисковиках и через ссылки вести пользователя на магазин - то на поддомене или на отдельном домене. Так как отдельный блог получит лучшие позиции, чем магазин с кучей однотипных страниц.
    Сложно однозначно определить что лучше не понимая что за магазин. Если там не много товаров, то блог внутри магазина мог бы добавить контента страницам с товарами. Если там 100k товаров, то понятно что все товары не получат отдельную статью и тогда имеет смысл подумать об отдельном сайте под них. В любом случае однозначного ответа без предмета обсуждения тут быть не может.
    Ответ написан
    Комментировать
  • Где купить XML-лимиты Яндекс?

    @utyfua
    Биржа купли/продажи XML лимитов «XML Stock» xmlstock.com
    Ответ написан
    Комментировать
  • Как грамотно организовать бойлерплейт для веб-разработки?

    idegree
    @idegree
    Senior Workaround Developer
    Как насчет git submodule?
    Ответ написан
    Комментировать
  • Python requests как правильно работать с proxy?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Во-первых:
    proxies = {
        'http': 'xxx.xx.xxx.xx:xxxx',
        'https': 'xxx.xx.xxx.xx:xxxx'
    }

    Во-вторых: вы заменяете User-Agent? По стандарту он 'python-requests' - многие сайты блокируют.
    В-третьих: если берете прокси из общего доступа, то он уже может быть заблокированным (на самом деле это довольно часто). Берите сразу большое кол-во прокси и пробуйте перебирать их примерно так:
    proxies = []
    for proxy in proxies:
        response = requests.get(proxies=proxy)
        if response.status_code == requests.codes['ok']:
            break
    
    response.text
    Ответ написан
  • Как в Python сделать вывод таблицей?

    @javedimka
    Хочу сока
    Самый простой способ с помощью Python вывести таблицу с данными в терминале или cmd это установить какой-нибудь модуль для ascii таблиц, например: PrettyTable

    $ pip install PrettyTable

    Теперь в коде:

    from prettytable import PrettyTable  # Импортируем установленный модуль.
    
    # Определяем твою шапку и данные.
    th = [...]
    td = [...]
    
    columns = len(th)  # Подсчитаем кол-во столбцов на будущее.
    
    table = PrettyTable(th)  # Определяем таблицу.
    
    # Cкопируем список td, на случай если он будет использоваться в коде дальше.
    td_data = td[:]
    # Входим в цикл который заполняет нашу таблицу.
    # Цикл будет выполняться до тех пор пока у нас не кончатся данные
    # для заполнения строк таблицы (список td_data).
    while td_data:
        # Используя срез добавляем первые пять элементов в строку.
        # (columns = 5).
        table.add_row(td_data[:columns])
        # Используя срез переопределяем td_data так, чтобы он
        # больше не содержал первых 5 элементов.
        td_data = td_data[columns:]
    
    print(table)  # Печатаем таблицу


    Вывод:
    +-------------------+---------------+------+-------------+------------+
    |    MAC Address    |   IP Address  | Mode | Rate (Mbps) | Signal (%) |
    +-------------------+---------------+------+-------------+------------+
    | 11:11:11:11:11:11 | 192.168.0.103 | 11n  |      65     |    100     |
    | 11:11:11:11:11:11 | 192.168.0.103 | 11n  |      65     |    100     |
    | 11:11:11:11:11:11 | 192.168.0.103 | 11n  |      65     |    100     |
    | 11:11:11:11:11:11 | 192.168.0.103 | 11n  |      65     |    100     |
    | 11:11:11:11:11:11 | 192.168.0.103 | 11n  |      65     |    100     |
    +-------------------+---------------+------+-------------+------------+


    А теперь представь сколько бесполезных разговоров могло быть опущено и времени сэкономлено, если бы у тебя с первого раза получилось нормально вопрос сформулировать? Вот то-то и оно.
    Ответ написан
    2 комментария
  • Очень доступным языком о Long-Polling?

    planc
    @planc
    поковыряй пример https://socket.io/

    long polling используется, если клиент не может использовать websocket

    фишка в том, что вместо постоянного флуда новыми соединениями

    - есть что новое ?
    - нету !
    - есть что новое ?
    - нету !
    - есть что новое ?
    - { 'user': 'вася', 'message': 'привет'}
    - есть что новое ?
    - нету !

    происходит:
    - есть что новое
    ...
    ...
    ...
    ...
    - { 'user': 'вася', 'message': 'привет'}
    - есть что новое ?
    ...
    Ответ написан
    5 комментариев
  • Какой плагин для Lazyload вы используете?

    vadimkot
    @vadimkot Куратор тега CSS
    https://github.com/aFarkas/lazysizes

    В плане seo гугл бот точно видит картинки - можно убедиться в search console в сканирование->Просмотреть как Googlebot. Яндекс нужно протестировать аналогично гуглу в вебмастере.

    В статье гугла по ссылке Александр Талалаев есть раздел Lazy loading libraries
    Ответ написан
    Комментировать
  • Какой плагин для Lazyload вы используете?

    neuotq
    @neuotq
    Прокрастинация
    На мой взгляд здесь описано лучшее решение. Советую прочитать все статью, там же можно найти готовые сниппеты кода, а так же ссылки на полифилы для поддержки старых браузеров и ссылки на некоторые библиотеки.
    Ответ написан
    Комментировать
  • Saleor (Django) Импорт?

    tema_sun
    @tema_sun
    Это не фреймворк, это платформа построенная на Джанго. И, да, конечно, джаговские пакеты там будут работать.
    Ответ написан
    Комментировать
  • Чем отличается 5 издание книги Марка Лутца "Изучаем python" от 4?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Предыдущее, 4-е издание была опубликовано в 2009-м и освещало использование Python 2.6 и 3.0. Пятое издание завершено в 2013-м и освещает Python 3.3 и 2.7. Оно включает все изменения в языке, появившиеся с момента предыдущего издания.

    В частности:
    • Материал о Python 2.x дополнен описанием словарных и множественных (майн готт, как это правильно перевести?) включений, которые появились в Python 3.x, но были бэкпортированы в 2.7.
    • Материал о Python 3.x дополнен описанием нового синтаксиса yield и raise, механизма кэширования байткода __pycache__, пространств имён для пакетов и т.п.
    • Ассорти из новых или расширенных описаний JSON, timeit, PyPy, os.popen, генераторов, рекурсии, слабых ссылок, __mro__, __iter__, __super__, __slots__, метаклассов, дескрипторов, random, Sphinx и прочего.

    Так же добавлена глава про эволюцию Python, глава про бэнчмаркинг и два дополнительных приложения (про последние изменения в Python и новый launcher (?) для Windows).

    И контрольный выстрел: 5-е издание стало немного больше, так как более подробно рассматривает продвинутые возможности языка, которые раньше игнорировались.
    Ответ написан
    1 комментарий