• Как правильно настроить media-root?

    neatsoft
    @neatsoft
    Life is too short for bad software
    MYSITE_URL = '<abs_path>/domains/mysite.ru'
    STATIC_ROOT = os.path.join(MYSITE_URL, 'static')
    MEDIA_ROOT = os.path.join(MYSITE_URL, 'media')

    Но для production это не подходит. Каталог static нужно раздавать с помощью nginx (предварительно скомпоновав его с помощью python manage.py collectstatic), a media выносить на отдельный домен (для предотвращения XSS уязвимостей).
    Ответ написан
  • Почему падает производительность request per second?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Нужно использовать асинхронные хэндлеры и асинхронную библиотеку для запросов к внешним сервисам. Вы просто останавливаете цикл событий блокирующим вызовом, вот и получаете просадку.
    Ответ написан
  • Почему падает производительность request per second?

    dimonchik2013
    @dimonchik2013
    ...а ну-ка пыль сдуй отсюда...
    замените Japronto на Flask / django
    или клиент на aiohttp
    Ответ написан
  • Почему падает производительность request per second?

    tumbler
    @tumbler Куратор тега Python
    бекенд-разработчик на python
    Вам поступило 100 запросов: Вы с помощью japronto дновременно взяли их все в обработку, а теперь фокус: первый же вызов requests.get заблокировал обработку оставшихся 99 запросов, так что весь ваш сервис тупо простаивает. По мере получения результатов вы выплёвываете по 1 ответу, как будто никакой асинхронности у вас в коде нет. Замените requests на клиент aiohttp и избавитесь от блокировки.
    Ответ написан
  • Программа в фоне на Python?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Для таких задач есть специальный инструмент - Celery.

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

    upd. Почему Celery лучше чем планировщик? Фоновое выполнение - это не такая тривиальная задача, как может показаться на первый взгляд, т.к. существуют граничные условия:
    - Что необходимо делать, если процесс по каким-то причинам не был запущен по расписанию, или завершился аварийно? Нужно ли запускать его повторно? (at least once)
    - Важна ли очередность выполнения?
    - Можно ли параллельно запускать ещё одну задачу, если предыдущая не завершилась?
    - Как мониторить выполнение фоновых задач?
    - Как собирать и хранить логи?
    Celery - хорошо протестированный, используемый во множестве проектов, production ready инструмент. Единожды изучив, его можно использовать для задач любой сложности.
    Ответ написан
  • Как сконфигурировать виртуальные хосты для NGINX для ajax?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Существует три варианта решения этой проблемы:
    1. После сборки фронтенда можно помещать его в static files / assets бэкенда, и сервить так же, как и все остальные файлы. Этот метод плох тем, что утрачивается возможность применения cache forever / cache busting (добавления хэш суммы в имена файлов).
    2. Распределять запросы между сервисами используя договоренность о путях, например, /api/* и /admin/* отправлять в бэк, /static/* отдавать из каталога с VueJS статикой, а для всех остальных запросов возвращать dist/index.html (для избавления от # в путях и обеспечения поддержки history mode). Минус - об этой договоренности нужно помнить, и следить за её соблюдением. Появляется неявная зависимость между сервисами.
    3. Использовать разные поддомены, например, api.example.com для бэка, www.example.com - для фронта. Роутинг запросов в этом случае происходит наиболее естественным образом - на основании имени домена. Становятся доступны дополнительные способы масштабирования (размещение на разных серверах, dns round robin, использование разных reverse proxy), и появляется возможность тестирования / отладки фронта с апи из разных окружений (dev, staging, qa, prod).


    ps. Cоветую упаковать ваши сервисы в Docker контейнеры, а в качестве reverse proxy / tls proxy / load balancer использовать Traefik вместо Nginx. Его киллер-фичи - auto discovery и auto load balancing. Кроме того, его гораздо проще правильно настроить. Сам Traefik тоже в контейнере работает, поэтому на сервере не требуется ничего кроме docker и docker-compose

    traefik-architecture.svg
    Ответ написан
  • Как установить let's encrypt сертификат в docker совместно с nginx и certbot?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Проблема в неправильном выборе инструмента. Для решения этой задачи гораздо лучше подходит Traefik: он умеет динамически подхватывать контейнеры, которым необходим доступ извне, автоматически получать let's encrypt сертификаты, роутить запросы на основании имени домена / пути, и выступать в качестве load balancer-а. Настраивается гораздо проще, чем Nginx: вся конфигурация - несколько строк.
    Ответ написан
  • Как сделать 3D анимацию такого плана как на сайте?

    @kit91ka
    angular, angularJS программист
    вообще анимации такого стиля, когда двигаются разные слои по-разному, называются parallax.
    можно воспользоваться готовой либой https://matthew.wagerfield.com/parallax/ или почитать, как его реализовать своими силами
    Ответ написан
  • Как стать Senior backend developer не устраиваясь в крупные компании?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Если ты задаёшь этот вопрос - то никак.
    Синьор - это в первую очередь самостоятельность.

    В принципе нет проблем вырасти и самостоятельно, если проект растёт.
    Но для этого нужны три вещи:
    1. Чтобы разработчик изначально обладал нужными качествами. Все люди разные, кому-то дано дорасти до синьора, а кому-то нет. Важно это понимать.
    2. Умение работать с информацией НЕ уровня "пойти на тостер" и "знать паттерны проектирования". Паттерны важны не сами по себе, не в виде карго-культа "все так делают, и мы так будем", а как ответ на определенные вызовы, которые начинает бросать кодовая база по мере роста.
    3. Самое главное - чтобы проект действительно рос, ставя перед разработчиками всё новые задачи, из самых разных областей, от администрирования серверов до управления персоналом. Если проект не растёт, то не растёт и разработчик, как справедливо заметил CityCat4 в своём ответе. Именно поэтому основная рекомендация - это уходить в контору рангом выше, с более сложным кругом задач.

    Всё. Все частности, которые ты тут написал - это именно частности, которые вне контекста не имеют смысла. Вконтакте написан без паттернов проектирования, на чистой процедурщине и энтузиазме. Знание гита важно не само по себе а как возможность управлять кодом проекта без того чтобы всё поломать. И так далее. Пока у тебя один разработчик, он будет говнякать гит коммит - гит пулл, и ни разу не сделает ребейз. А если даже и выучит несколько команд, то через неделю забудет. А вот когда будет 10 человек и график релизов - вот тогда придется взяться за гит основательно.
    Ответ написан
  • Payoneer больше не будет работать за пределами США на UpWork?

    Alex_Payoneer
    @Alex_Payoneer
    Только хочу уточнить, что вопрос решился, у всех пользователей есть доступ к их средствам.
    Ответ написан
  • Payoneer больше не будет работать за пределами США на UpWork?

    opium
    @opium
    Просто люблю качественно работать
    по сути если у вас были бабки на пионере и привязана карта то они заморожены и наиболее вероятно потеряны навсегда.
    Ответ написан
  • Какая страна оффшора лучше всего подходит для публикации приложений в AppStore?

    @Legal2019
    Всё в имени моём... и радость и печаль...
    Точно не подскажу про AppStore, но думаю что выбор есть:
    ПЕРЕЧЕНЬ ГОСУДАРСТВ И ТЕРРИТОРИЙ, ПРЕДОСТАВЛЯЮЩИХ ЛЬГОТНЫЙ НАЛОГОВЫЙ РЕЖИМ НАЛОГООБЛОЖЕНИЯ И (ИЛИ) НЕ ПРЕДУСМАТРИВАЮЩИХ РАСКРЫТИЯ И ПРЕДОСТАВЛЕНИЯ ИНФОРМАЦИИ ПРИ ПРОВЕДЕНИИ ФИНАНСОВЫХ ОПЕРАЦИЙ (ОФШОРНЫЕ ЗОНЫ)
    Список изменяющих документов
    (в ред. Приказов Минфина России от 02.02.2009 N 10н,
    от 21.08.2012 N 115н, от 02.10.2014 N 111н, от 02.11.2017 N 175н)
     
    1. Ангилья;
    2. Княжество Андорра;
    3. Антигуа и Барбуда;
    4. Аруба;
    5. Содружество Багамы;
    6. Королевство Бахрейн;
    7. Белиз;
    8. Бермуды;
    9. Бруней-Даруссалам;
    10. Республика Вануату;
    11. Британские Виргинские острова;
    12. Гибралтар;
    13. Гренада;
    14. Содружество Доминики;
    15. Утратил силу с 1 января 2013 года. - Приказ Минфина России от 21.08.2012 N 115н;
    16. Китайская Народная Республика:
    абзац исключен. - Приказ Минфина России от 02.11.2017 N 175н;
    Специальный административный район Макао (Аомынь);
    17. Союз Коморы:
    остров Анжуан;
    18. Республика Либерия;
    19. Княжество Лихтенштейн;
    20. Республика Маврикий;
    21. Малайзия:
    остров Лабуан;
    22. Мальдивская Республика;
    23. Утратил силу с 1 января 2015 года. - Приказ Минфина России от 02.10.2014 N 111н;
    24. Республика Маршалловы Острова;
    25. Княжество Монако;
    26. Монтсеррат;
    27. Республика Науру;
    28. Кюрасао и Сен-Мартен (нидерландская часть);
    (п. 28 в ред. Приказа Минфина России от 02.10.2014 N 111н)
    29. Республика Ниуэ;
    30. Объединенные Арабские Эмираты;
    31. Острова Кайман;
    32. Острова Кука;
    33. Острова Теркс и Кайкос;
    34. Республика Палау;
    35. Республика Панама;
    36. Республика Самоа;
    37. Республика Сан-Марино;
    38. Сент-Винсент и Гренадины;
    39. Сент-Китс и Невис;
    40. Сент-Люсия;
    41. Отдельные административные единицы Соединенного Королевства Великобритании и Северной Ирландии:
    Остров Мэн;
    Нормандские острова (острова Гернси, Джерси, Сарк, Олдерни);
    42. Республика Сейшельские Острова.
    Ответ написан
  • Как сделать анимацию разворота картинки?

    Четыре варианта сделать анимацию поворота айфона:

    вариант 1
    берёшь первую картинку и поворачиваешь её в css с помощью transform: rotate3d
    Будет плоско, потому что у картинки айфона нет толщины. Зато дёшево и сердито по времени, ресурсам, трудозатратам, нервам и т.д.

    вариант 2
    берёшь где-то 3D-модель айфона с чистым экраном. Открываешь в 3D-редакторе (blender, 3dmax и пр.), фигачишь на него скриншот сайта и делаешь покадровую анимацию поворота. Склеиваешь кадры анимации в gif, mp4 или webp.

    вариант 3
    берёшь 3D-модель и с помощью WebGL отрисовываешь её прям на странице. А так как это 3D, то вращать можешь так, как твоей душеньке угодно - под любыми углами и с любой скоростью.

    вариант 4
    берёшь айфон, камеру, ватман для фона и крутящуюся подставку.
    крепишь айфон на крутящуюся подставку, выставляешь камеру, свет, фон. И начинаешь поворачивать айфон, делая кадры на камеру. Потом, как во втором варианте, склеиваешь фотографии в анимацию в формате mp4, webp или gif
    Ответ написан
  • Стоит ли покупать коленный стул?

    @PKmaster
    Всегда за компьютером
    Коленный стул, вред и польза.
    К сожалению, очень много рассуждающих теоретиков, и очень мало реально сидевших.
    Я сижу на этом стуле с 2018 года, и могу на собственном опыте все рассказать как есть, а не сказки из интернета. Есть реальные плюсы, и есть реальные минусы, у этой штуки.
    Но сначала пройдусь по писавшим ранее :-)))))

    - "Смартсул" хорошие вещи делает, но дорого. Я сижу на Богатыре, он принципиально ничем не хуже, а дешевле в 2 раза

    - "Повышенная нагрузка на колени" - нет такого, при правильной позе. Но у нас же блин все умные, никто инструкций, прилагаемых к стулу, не читает, все ставят максимально высоко сиденье, сползают на колени и привет. А всего то надо настроить стул под свой рост, чтобы 80% веса приходилось на попу.

    - "Не на стандартную высоту стола рассчитаны" - неправда. Стандартная высота стола или школьной парты 75 см. У меня дома стол 78. И мне удобно. И всем, кто сидит, а таких знакомых у меня уже штук пять. И все сидят за обычными столами. Конечно, в идеале нужен еще и стол с наклоном, но это блин 30 000р+, я пока не готов.

    - "Нагрузка со спины распределяется, но за счет колен" - ага, 20 раз. В реальности нагрузка на этом стуле на спину по ощущениям БОЛЬШЕ, чем при сидении на обычном стуле!! Потому что вес падает на мышцы, а не на позвоночник. Причем и на мышцы поясницы, и в целом спины, и на бедра и т.п. Посидите сами, не 5 минут "на примерке", а реальных 2-3 часа. Сразу все мышцы спины прочувствуете, особенно, когда их нет :-)))) как у меня было, когда сел. На позвоночник нагрузка на этом стуле меньше (в чем и прикол и польза), а на мышцы - больше!! И устают они будь здоров. Для этого ксати я стул со спинкой и купил, откидываюсь, отдыхаю, иначе по 8 часов не просидишь....

    - "От него болит спина" - спина болит, когда чем-то заболели, грыжу когда насидели, и т.п. Мышцы - да, испытывают повышенные нагрузки, держат Вашу спину. Да, сразу Вы 8 часов не просидите, я привыкал месяц, пока мышцы более-менее в тонус пришли и стали спину держать. И что в этом плохого? По-моему, наоборот хорошо, когда мышцы спины тренируются.

    - "Нет подлокотников" - так они нафиг не нужны, иначе смысл пропадает!! На подлокотник опираешься, спину изгибаешь, вес переносишь на локоть, позвоночник искривляешь и сидишь так часами. Типа. И смысл тогда коленный стул ставить?? Такой буквой зю можно и на обычном стуле сидеть...
    Если уж хочется опереться на что-то, я локти на стол кладу (очень удобно, кстати, и все дети, наблюдал, также делают), или на спинку откидываюсь. В последнем случае это чисто поза отдыха, работать невозможно, кстати...

    Итог:
    Реальные плюсы коленного стула:
    - спина стала ровнее;
    - не так устаю за компом;
    - чаще встаю (что тоже плюс, считаю);
    - мышцы спины натренировались, без проблем держу осанку;
    - стул не дает "развалиться" телу, как на обычном кресле, тело всегда в тонусе;
    - по истечении полугода так привык, что уже на обычных стульях долго сидеть неудобно, хочется правильной позы.
    - у родни, подростка 19 лет, сколиоз приостановился. Не исчез, конечно, но сам факт. Т.к. больше пацан ничего не делает, в плане здоровья. Т.е. название "ортопедический коленный стул" имеет за собой основание.

    Минусы коленного стула:
    - топорная конструкция. Кто бы что не говорил, это блин больше агрегат, чем дизайнерская мебель. Рядом с моим бывшим компьютерным креслом смотрится как полный отстой. :-)))) Но оно не для красоты придумано, я так понимаю. Если придумают "красивый" и не хуже, и недорогой - сразу заменю. :-)))
    - залезать-вылезать в джинсах удобно, в юбке, жена сказала, не очень :-)))
    - если неправильно настроить стул (слишком высоко поднять сиденье и т.п.) - будете сползать на колени. А это нехорошо. Поэтому тут надо четко подобрать свое, удобное положение. Чтобы сидеть на заднице, а не на коленях. Так что не надо отсебятины, просто читаем настройки и регулируем коленный стул под свой рост (благо все регулируется).
    - привыкать надо, 100%, и к этому надо быть готовым. У меня ушел месяц, пока более-менее привык. В первую неделю сидения обнаружил у себя мышцы, о которых не подозревал. :-))) Некоторым из моих знакомых так и "не зашло", хотя пробовали. Дети привыкают за 2-3 дня, у них организм гибкий, подстраивается легче.
    - по-первости просидеть 8 часов кряду не получится. Отдых телу давать придется, вставать, ноги вытягивать, на спинку откидываться... У меня так и было. Хотя, еще раз повторю, что некоторые садятся и сидят часами, сразу, но это исключение, как мне кажется.

    Короче плюсов больше, чем минусов
    Ответ написан
  • Где лучше хранить JWT?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Где угодно, но в зашифрованном виде и с флагами secure и http-only.

    Доп.защита: Можно разместить в localStorage контрольную сумму полученного токена и тупо проверять его наличие в js и на соответствие конкретному значению, привязанному к клиенту. Любое обращение без подписи запроса этой КС - фиксировать как нарушение и блокировать учётку.

    Главное - привяжите токен к клиенту через fingerprint2.js при двухфакторной аутентификации клиента.

    Чтобы при хищении даже всех кук (например, через сторонние расширения), они были бы попросту бесполезны, "отпечаток" клиента передавайте при:
    1. Авторизации (только двухфакторная аутентификация: почта, смс, GA и т.п.),
    2. При смене ip-адреса
    3. При смене user-agent
    4. По истечению срока давности
    И обязательно это всё через шифрование своим публичным "ключом" сервера (помимо https!).
    Ответ написан
  • Эмулятор Android?

    mindtester
    @mindtester Куратор тега Windows
    https://youtu.be/UtO6HIp1908?list=RDUtO6HIp1908
    специально искал всяческие x86(_x64) эмуляторы - ни чего подобного не видел. подпишусь за компанию, но сомневаюсь что будут ответы по существу. думаю в лучшем случае вам напомнят об эмуляторах класса MEmu, NoxPlayer, Genimotion, может есть еще что то подобное. у них могут быть довольно приличные списки эмулируемых устройств, но это только смена разрешения экрана, и в лучшем случае какие то вещи типа переменных среды исполнения, которые заверяют софт что "я такой то планшет или смарт". возможно изменение доступных фич, типа эмуляции тех или иных сенсоров. но ни о каких прошивках речи нет и близко. на них более менее прилично работает весь софт на основе java, но не на NDK (бинарный код палтформы, написанный к примеру на C++). ну и лично мне, все они показались очень не стабильными.

    при необходимости предпочитаю поднимать андроид на виртуалке. что то из проекта Andriod x86, а еше лучше Bliss. из недостатков - нет проброса клипбоарда. зато не соизмеримо стабильнее чем все выше перечисленные "эмуляторы". и в систему не гадят. живут строго в виртуалке

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

    для сравнения - Майкрософт создал версию Windos 10 для ARM. и не то что бы в первые винда на ARM. 8ку точно тоже пробовали. но в этой 10ке уже не один год обкатывается реалтайм jit-компиляция x86/x64 обычных десктопных приложений Widows. анонсов и презентаци море. в самой корпорации ряд сотрудников ползовался прототипами уже не менее года. но реально продукт все еще не выпущен на рынок. по тому что все это не так просто как хотелось бы

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

    Jump
    @Jump
    Системный администратор со стажем.
    Я бы для начала удалил критично важные данные - все что не относится к системе.
    После чего забил бы все диски под завязку левыми данными - фильмы, музыка, белый шум - это гарантированно сотрет их с диска, без возможности восстановления.
    После чего уже удаляете левые данные -тогда можно и систему сносить.
    Ответ написан