• Best practice для relationships в REST API?

    Пересмотрел огромное количество примеров, но не нашел единого подхода к передаче связей в REST API.
    Это потому, что его нет.

    К примеру, как лучше {"categoryId": 1} или {"category": {"id": 1}}?
    Как вам нравится, так и лучше.

    Я думаю это вообще неудобно, так как форма должен быть единым.
    Тогда не делайте так, вас никто не заставляет.

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

    @Artgor
    Допустим, есть 2 файла:
    df1 = pd.DataFrame({'name': ['a', 'b', 'c']})
    df2 = pd.DataFrame({'old_name': ['a', 'b'], 'new_name': ['a1', 'b1']})


    Вот что можно сделать:
    df3 = pd.merge(df1, df2, left_on='name', right_on='old_name',  how='left')
    df3.loc[df3['new_name'].isnull(), 'new_name'] = df3.loc[df3['new_name'].isnull(), 'name']


    Вначале мы делаем join по старому названию, потом в строках, где нового названия нет, пропущенные значения заменяем на старые. df3['new_name'] - столбец с получившимися значениями.
    Ответ написан
    1 комментарий
  • Как сделать import в python?

    netpastor
    @netpastor
    Python developer
    Да, немного напрячься с названиями модулей, чтобы не было пересечений
    Ответ написан
    1 комментарий
  • С чего начать создание приложения для майндмэппинга?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Разработка приложения начинается с разработки ТЗ, как впрочем и любая другая разработка. Вот с этого и начните. Разработка ТЗ включает в себя такие вещи как:
    • Требования
    • Ограничения
    • Базовые скелеты интерфейса
    • Сценарии использования
    • Описание внутреннего функционала
    • Описание взаимодействия с внешними системами

    Затем все вот это расширятся в частное ТЗ, где каждый пункт описывается подробно и в деталях, рисуется полноценный дизайн приложения и как оно должно выглядеть. Это называется этап декомпозиции — большая задача разбивается на множество более мелких, а те в свою очередь еще более мелких. Описывается поведение каждого элемента интерфейса и его функционал. Так же описывается взаимодействие со всеми внешними системами и интерфейсы взаимодействия. Например ОС — используемые АПИ, сервисы, файловая система; сетевые сервисы — описание взаимодействия с их API и описание используемых ими данных. Подробно описываются сценарии использования — как пользователь может решить какую-то задачу, используя данное приложение. Разрабатывается структура приложения, его модули и подсистемы, используемые фреймворки и библиотеки. Создаются тесты приложения — отдельных модулей, бизнес-логики, интерфейса, API и прочего. И так далее. Программирование — это лишь одна из составных частей в разработке ПО. И не всегда самая большая.
    Вот после того, как напишете полное ТЗ, можно приступать к планированию разработки. В любом случае, вам необходимо ознакомиться с основами программирования (да-да, те самые большие книжки, но в сети полно более коротких туториалов, в т.ч. онлайн), какие существуют языки программирования, почему/чем отличаются и почему/чем похожи и т.д. А далее уже можно потихоньку брать по одной задачке из вашего ТЗ и поэтапно решать.
    Ответ написан
    2 комментария
  • Как проще написать интерфейс для математических вычислений?

    @lz961
    Может целесообразнее описывать функции f и g на том же C++ в отдельном файле и пересобирать исполняемый файл каждый раз под конкретную задачу, например с помощью скрипта
    #/bin/bash
    gcc -o $1 -lm -lstdc++ solver.o $1.cpp
    ./$1

    где $1 -- аргумент скрипта -- имя файла с реализацией конкретных f и g без расширения
    solver.o -- предварительно скомпилированное вычислительное ядро
    Ответ написан
    2 комментария
  • Как проще написать интерфейс для математических вычислений?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Я такую же задачу решал так (и уравнение эллиптическое) - формула записывалась в программу на фортране, потом компилировалась и в виде разделяемой библиотеки присоединялась к программе. Никаких накладных расходов.

    Если вы работаете с GPU, целесообразние и формулу считать на GPU
    Ответ написан
    Комментировать
  • Как работает Redis при одновременном доступе нескольких клиентов?

    Softovick
    @Softovick
    программист, администратор
    Как уже сказали - Redis однопоточный, то есть запросы будут выполняться по очереди. Пока не сформирует данные для второго клиента, запрос первого не выполнится. Но следует понимать, что производительность Redis очень высокая. Настолько, что в случае 2 клиентов, один из которых 20 раз в сек пишет что-то в базу - вы просто не заметите задержки. Нормальная нагрузка для Redis это десятки и сотни тысяч запросов в сек, а то и млн.
    Ответ написан
    Комментировать
  • Как поднять сервер в облаке на Python?

    igorzakhar
    @igorzakhar
    5b8aff214494c839016206.png
    Создаем проект:

    5b8b07ea063a0909800095.png
    Создаем "Connection" (есть разные варианты, для демонстрации выбрал "Container"):

    5b8b0859863f2023745808.png
    После создания появится информация по контейнеру, где указаны ссылки по которым будет доступно ваше приложение:

    5b8b0a661c451431277275.png
    Создаем файл "File" -> "New File" (есть вариант "перетащить" файл со своего ПК). Вставляем ваш код:

    5b8b0ae6b9c74190622126.png
    Корректируем (вместо "localhost" прописываем "0.0.0.0" и выбираем порт из диапазона 1024-9999):

    from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
    
    class HttpProcessor(BaseHTTPRequestHandler):
        def do_GET(self):
            self.send_response(200)
            self.send_header('content-type','text/html')
            self.end_headers()
            self.wfile.write("hello!")
    serv = HTTPServer(("0.0.0.0",8080),HttpProcessor)
    serv.serve_forever()

    Запускаем скрипт:

    5b8b0cad545b2969483508.png
    Переходим по ссылке которая указана в "Info" (протокол "http"), не забываем указать порт (в нашем случае 8080):

    5b8b01977adb3008278544.png
    Ответ написан
    3 комментария
  • Вложенное меню django?

    @deliro
    Посмотри на mptt и django-mptt
    Ответ написан
    Комментировать
  • Что выбрать: Kafka или RabbitMQ?

    @Ambrosian
    https://habr.com/post/326880/

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

    Если они не могут привести никаких внятных доводов, кроме "мне так нравится" и "в крутой компании Х это используют" - то забейте на их мнение.

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

    См. NATS.
    Куда как меньше админовского/девопского геморра.
    Ответ написан
    Комментировать
  • Пример архитектуры хорошего Golang веб-приложения?

    @alexkdev
    Сам нахожусь в поисках идеального ответа на ваш вопрос, но кое что есть для размышления по этому поводу:
    1. https://github.com/gothinkster/realworld (тут не только Golang)
    2. https://github.com/golang-standards/project-layout
    Ответ написан
    Комментировать
  • Почему не видит templates?

    netpastor
    @netpastor
    Python developer
    Чтобы Django начала искать шаблоны в папке templates ей нужно сказать об этом

    TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, '..' , 'templates'),],
    'APP_DIRS': True,

    Чтото типа того
    https://docs.djangoproject.com/en/dev/ref/settings...
    Ответ написан
    Комментировать
  • Способы интеграции парсера на pythone и проекта на Django, как объединять?

    @alexey_korotynski
    в парсере нужно написать
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "путь_до_settings_файла")
    django.setup()


    после этого можно импортировать модели из проекта Django.
    Ответ написан
    Комментировать
  • Какой язык выбрать инженеру за 40?

    sergeygsd
    @sergeygsd
    врач-терапевт участковый
    Я молодой пенсионер ( 67 лет ) уч. врач все 40 лет. Без цели заработка изучаю информатику давно.
    php не люблю. Питон, Java, С++ Естественно знаком с СУБД, ассемблером, shell Пользуюсь любой ОС (Windows или Linux) Я просто любитель. Труд программиста тяжелый. Лучше учиться с преподавателями, но можно и самому.
    Моя знакомая, ЛОР-врач 35 лет хочет просто сменить профессию на Java-программиста. Человек очень упорный, надеюсь, что получится. Учите Java (по Лафоре, у него и по C++)
    Можно в NetBeans но я в терминале (если Windows это MinGW) - как раз поддерживает python + Java + C++ У Вас уйдет не меньше года, ни у кого быстрее не получилось. ВЭБ очень вряд ли. Хотя я изучал Друпал 7 и 8. Но Друпал 8 с его twig(ом) озадачил. И бросил. Смотрите по вэбу в сторону django. Мой путь с весны 2018 здесь : https://unics-70.livejournal.com/4324.html
    Ответ написан
    Комментировать
  • Не знаю в чем ошибка и как её решить?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    В Python2 для этой цели используется функция raw_input:
    name = raw_input('What is your name?')
    Ответ написан
    3 комментария
  • Android. Как реализовать загрузку видео на сервер со слабым интернетом?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    От слабого интернета не спасает ничего, кроме сильного интернета.

    А теперь без шуток. В народе под слабым интернетом понимают медленный и ненадежный. Т.е. низкие скорости, ошибки передачи и обрывы в порядке вещей. Обычно такое на медленных GPRS/2G/3G соединениях. Встречается также на старых телефонных линиях, когда ADSL частенько падает.

    В таких случаях загрузка видео организуется простым и надежным методом - разбивкой на части и подтверждением целостности частей.
    Грубо говоря, берете файл, отрезаете от него фрагментик в 64кБ и отправляете на сервер. Если сервер за разумное время не ответил (например за минуту), рвете соединение и пытаетесь снова. Вместе с кусочком отправляете md5 этого кусочка. Сервер при приеме кусочка точно также считает md5. Если суммы совпадают, то тогда фрагментик записывается в нужное место файла.

    Когда отправляются фрагменты, каждый пакет несет в себе информацию:
    • идентификатор файла
    • начало фрагмента
    • длина фрагмента
    • md5 сумма от фрагмента


    Первый фрагмент дополнительно несет в себе информацию
    • идентификатор файла
    • имя файла
    • размер файла
    • md5 файла


    Сервер обязан отслеживать какие части файла были загружены.

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

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

    @neol
    Если есть возможность, то лучший вариант - писать вывод в файл на диске и отдавать его силами nginx, используя заголовок X-Accel-Redirect, ИМХО. Так apache вообще не будет вовлечён в процесс передачи файла.
    Ответ написан
    Комментировать
  • Как создать список, который содержит последовательное количество повторений элемента Python?

    @rudolfxcp Автор вопроса
    Решил в итоге таким образом:
    a['Range'] = a.groupby((a.a != a.a.shift()).cumsum()).cumcount() + 1
    Ответ написан
    Комментировать
  • Как сделать автозаполнение ForeignKey поля username в форме?

    Astrohas
    @Astrohas
    Python/Django Developer
    <input name='user' value={{request.user.username}} >
    но более безопаснее делать это на стороне бекенда
    Ответ написан
    1 комментарий
  • Как ускорить выполнение запросов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Используйте асинхронный grequests.
    Ответ написан
    2 комментария