• Как сделать такую форму для бэкграунда блока?

    RAX7
    @RAX7
    Если сильно упороться, то можно что-то типа такого соорудить:
    Ответ написан
    3 комментария
  • Какой linux самый быстрый?

    @Balticman
    писатель самоучка
    огласите параметры компьютера
    Ответ написан
    Комментировать
  • Какой linux самый быстрый?

    Adamos
    @Adamos
    Бессмысленно подбирать легкое DE, если браузер все равно сожрет все ресурсы и начнет тормозить после первой же вкладки.
    Даже если вы поставите голый Дебиан с запуском Якобы.Браузера вместо DE, тормоза неизбежны.

    JustForFun, конечно, можно и Хромоось попробовать. Терять-то, собственно, нечего.
    Ответ написан
    Комментировать
  • Когда использовать jpg а когда png?

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

    JPEG для фоточек, и всего такого, где много мелких разноцветностей.
    Ответ написан
    Комментировать
  • Когда использовать jpg а когда png?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    Типичные примеры использования:

    JPG — фото, иллюстрации без прозрачности, где важны цвета, переходы, оттенки и т. п. В таком случае JPG выигрывает у других форматов в плане соотношения качество/цветность/размер. Так себе для контрастных схем и текстов.

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

    GIF — анимации. Ну тут вообще отдельная песня. Ему на смену пророчат APNG и MP4, но воз и ныне там.

    SVG — иконки, иллюстрации. Поддерживает прозрачность, бесконечно тянется. Обычно те же иконки в SVG весят меньше, чем в PNG при одинаковом фактическом размере использования. Можно анимировать (отдельная тема и куча особенностей) и управлять с помощью CSS и JS, если встраивать inline (можно и через #use, но с ограничениями). Наверное, самый чувствительный к ошибкам формат, потому что состоит из кода: сложный SVG-файл может убить производительность. Можно очень легко зашить вредоносный код, поэтому запрещён в вёрстке писем.

    P. S. Я не могу описать все случаи, бывают уникальные, так как процесс выбора формата зависит от контента вашего изображения. В каждом конкретном нетипичном случае — думайте сами. К примеру, если векторная иллюстрация весит много, то есть смысл перевести её в JPG или PNG. Иногда SVG-иконка может весить в разы больше её PNG-аналога (при одинаковом фактическом размере использования, например, 100 на 100 пикселей при 1:1 размере viewport к физическому разрешению экрана) — тут многое зависит от методов и качества создания таких иконок. Как правильно отметил @Adamosу, иногда затраты на рендеринг SVG (на стороне клиента) не окупают его преимуществ, и приходится использовать растровые изображения. Ну и т. д… Особенностей использования форматов — куча.

    P. P. S. Почитайте о Retina, ибо нет никакого «для ретины следует юзать JPG».
    Ответ написан
    22 комментария
  • Как создать массив из экземпляров класса и получить значения их свойств при переборе этого массива?

    Dnebl
    @Dnebl
    Нигде в интернете не смог найти ответ на этот вопрос.

    А зачем искать ответ в инете если вам его сам python написал)
    TypeError: list indices must be integers or slices, not Agent
    Ответ написан
    Комментировать
  • Как создать массив из экземпляров класса и получить значения их свойств при переборе этого массива?

    0xD34F
    @0xD34F
    Что за дурная привычка бросаться писать, даже не ознакомившись с основами? Тут вам не js, i - это не индекс, а элемент списка. Так и пишите: print(i), print(i.xPos).
    Ответ написан
    Комментировать
  • Легаси-монстр. Как побеждаете?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Нынче удобный способ с вебсервисами.
    Ищете функционал, который можно выделить в отдельный компонент, пишете компонент, в старом коде меняете API и перенаправляете на новый компонент.

    Повторить до тех пор, пока от старого кода ничего не останется.

    Но я соглашусь с RidgeA - бизнес не будет выделять на это деньги просто так.
    Сперва нужно поработать над этим, убедить бизнес, что технический долг это не пустые слова и вы все ближе к блокеру, когда из-за сложности проекта все больше и больше вещей завязывается не на знания технологий, а на ключевых людей, которые просто знают нюансы проекта. Увольнение любого такого человека приводят к огромным рискам для проекта в целом. Предложить варианты, как это потихоньку будет убираться и потихоньку к этому идти.
    Ответ написан
    Комментировать
  • Легаси-монстр. Как побеждаете?

    @RidgeA
    Немного банальностей:
    1. Бизнес не даст ресурсов на переписывание проекта с 0: время и большие риски
    2. Бизнесу как правило все-равно какое говно там крутится, лишь бы деньги приносило.
    3. Если более-менее адекватное руководство - нужно донести идею постепенного рефакторинга кода по мере необходимости в процессе фикса багов и разработки новых фич и тем самым аргументировать что на разработку новых фич/фикс багов нужно больше времени.

    Как я бы делал:
    1. Тесты на существующие функции (если возможно, видел методы в контроллерах с мешаниной вызовов методов моделей, созданием DTO и сохранением их через репозиторий, прямых http-запросов и запросов в бд на 1000+ строк, покрыть такое тестами - невозможно)
    2. Составить план рефакторинга, где отметить что и где надо сделать, коротко, в основном для команды разработчиков.
    3. Постепенно рефакторить старый код по мере взаимодействия с ним.
    4. Новый код - писать сразу правильно, для взаимодействия со старым кодом где нет возможности/времени его переделать - делать какие-то адаптеры, что бы не распространять токсичный код.
    5. Как оперативная мера защиты от SQL иньекций можно поставить что-то вроде этого https://github.com/nbs-system/naxsi
    6. Мониторинг кода, который не используется - pinba.org , по мере обнаружения такого кода - удалять безвозвратно (в крайнем случае есть VCS, я надеюсь). Начать с более высокоуровнего кода - контроллеры, напримерю. Плюс IDE в этом могут помочь и grep.
    7. Как вариант - новые фичи можно пилить в отдельном проекте (v2), крутить оба и постепенно переходить на новый, со временем старый (v1) выкинуть (и начать делать новый - v3 :-) )
    Ответ написан
    3 комментария
  • Что не так в .htaccess?

    @dodo512
    Invalid command 'AddHandler\xe2\x80\x8b'

    После AddHandler должен быть обычный пробел, а не юникод символ пробел нулевой ширины
    Ответ написан
    Комментировать
  • Как загрузить в models. ImageField сразу несколько фото через admin?

    netpastor
    @netpastor
    Python developer
    Стандартно никак
    Использовать или сторонние загрузчики - типа https://github.com/Chive/django-multiupload
    Ну или кастомизировать форму элемента - https://www.djangosnippets.org/snippets/1053/
    Ответ написан
    Комментировать
  • Как генерировать pdf отчеты в Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Прочитайте документацию по reportlab и станет понятно. Никаких проблем со вставкой изображений там нет.
    Ответ написан
    Комментировать
  • Обладает ли преимуществами RAML перед SWAGGER (Open Api) в 2018 году?

    neatsoft
    @neatsoft
    Life is too short for bad software
    RAML - top-down, Swagger - bottom-up, они совершенно разные.

    Использую Swagger для автоматического создания документации на основе кода и комментариев. Есть некоторые шероховатости, но в целом всё работает. Позволяет экономить уйму времени, и легко поддерживать документацию в актуальном состоянии.
    Ответ написан
    4 комментария
  • Как интегрировать Django Channels в Django используя докер?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Есть два варианта:
    1. Если нагрузка небольшая, можно использовать Daphne и для WSGI, и для ASGI запросов;
    2. Передавать контейнерам режим работы через environment variables (использовать entrypoint script, который будет запускать manage.py runserver, uwsgi, gunicorn, daphne, или manage.py runworker в зависимости от выбранного режима), запросы распределять между контейнерами в зависимости от пути или доменного имени.

    "По классике" статику отдаёт не Nginx, а S3 - AWS или его аналоги в проде, Minio в dev окружениях.

    Вместо Nginx советую использовать Traefik - он умеет находить контейнеры и роутить запросы к ним в зависимости от параметров, указанных в docker-compose.yml. Автоматический load balancing, letsencrypt без лишних телодвижений, очень просто конфигурируется, может обслуживать несколько разных проектов без дополнительных настроек (актуально для фрилансеров).

    #!/bin/sh
    
    set -o errexit
    set -o pipefail
    set -o nounset
    
    
    if [ $DJANGO_DEBUG == "on" ]; then
        ./manage.py runserver 0.0.0.0:8000
    elif [ $DJANGO_MODE == "worker" ]; then
        ./manage.py runworker
    else
        daphne -b 0.0.0.0 -p 8000 config.asgi:application
    fi
    Ответ написан
    1 комментарий
  • Какая идеальная структура каталога для картинок и почему?

    DevMan
    @DevMan
    Функция glob() в PHP? - тест 8-летней давности на выборку файлов по маске с директории в 200 000 файлов.

    файловой системе фиолетово один файл в директории или 100500, на скорости прямого доступа к файлам это не отразиться.
    а дальше все зависит от того, каким образом вы собрались организовывать поиск.
    Ответ написан
    1 комментарий
  • Как устроиться на нормальную работу в такой ситуации?

    @uroot
    Эх... где мои 17 лет...

    Я конечно не знаю у кого как, но не рано ли идти на работу в 17-то лет? Ведь это же беззаботный период студенчества! Ни о чём не думаешь, ни о чём не заботишься. Просто мне кажется, что если в 17 пойти на работу, да ещё и в айти сферу, то в 25-30 лет можно уже стать моральным стариком.

    Я бы на месте Николай Гаевой подрабатывал на фрилансе и пока не думал о карьере в ИТ, и просто наслаждался молодостью.
    Ответ написан
    2 комментария
  • Поиск заказов. Как вы находите что-то достойное?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Серьезные заказы никогда не приходят сразу. Никто не доверит что-то солидное новичку без вменяемого и большого портфолио и высокого рейтинга.

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

    Плюс всегда нужно стараться повышать свои шансы максимально. Учить английский, пилить свои проекты для портфолио, пытаться попасть на серьезные биржи вроде Toptal.com и т.д.
    Ответ написан
    7 комментариев
  • Машинное обучение - это работа для "ученых" или программистов?

    @hauptling
    Язык программирования - это инструмент.
    В машинном обучении, необходимо знать: статистику, аналитику и т.д. , без них Вы в данной области - никто.
    Ответ написан
    Комментировать
  • Как округлить количество строк в файле?

    Arseny_Info
    @Arseny_Info
    R&D engineer
    readlines возвращает одноразовый итератор, т.е. после первого вызова print(len(f.readlines())) результат следующего вызова уже пустой.
    Ответ написан
    Комментировать
  • Линукс для офиса?

    @electronik777
    Покупайте Windows и не мучайтесь, времени на доведение всё до более-менее рабочего состояния потратите больше чем стоимость лицензий. Если Вам нужна поддержка rdp значит Windows-сервер уже есть, CAL лицензии всё равно будут нужны не зависимо клиент windows или linux. За 15 лет моего опыта, только одна компания попробовала "перейти" на линукс, хватило меньше месяца, потому что у персонала было 100500 вопросов "а как теперь сделать ..." . А приходили новые люди и их нужно было обучать, заново. И самое ужасное, это libreoffice, пользователи привыкли уже к офису2007 и страше, а посути вернулись к интерфейсу офиса2003 многие даже его не видели в глаза, поэтому производительность упала в разы, а кол-во вопросов выросло. Трудо-затраты на обучение пользователей, поддержку и интеграцию этого всего превышает стоимость лицензий, а найти потом нормального специалиста черезвычайно трудно, если Вы вдруг решите уйти.
    Ответ написан
    2 комментария