• Как получить доступ к модели B которая наследуется от A?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    ModelA.objects.get(id=1).modelb.age
    Ответ написан
    Комментировать
  • Когда на практике нужны итераторы (iter/next) в Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Если у вас есть код, который должен в цикле обойти QuerySet, в котором могут быть миллионы записей, то обычный

    for item in some_qs.all():
        ...

    может быть опасным, так как все данные разом будут загружены в память. Итератор же будет загружать данные из базы небольшими блоками, а объекты и вовсе будет возвращать по одному, не кэшируя их

    for item in some_qs.iterator():
        ...
    Ответ написан
    Комментировать
  • Есть смысл делать сайт каталог на vue?

    1. Кривят мины при слове jquery только старые деды, потому что библиотека полезна и экономит много времени (особенно у новичков). Даже если эта библиотека будет объективно считаться полным дерьмом, какая вам разница если она решает ваши задачи?

    2. Раньше говорили, vue используют там, где jquery уже не хватает. Я не понимал что это значит, столкнувшись с некоторыми задачами я понял смысл этой фразы. В действительности, если вам нужно повесить пару обработчиков на кнопки, формы и тд, vue вам не нужен. Если вам, как и мне, нужно подгружать постоянно обновляемые данные, всю эту информацию выводить в разных блоках, на каждый из который вешаются свои обработчики, когда появляются какие-то динамичные элементы в приложении и вы видите что в своем js-коде вы уже ничерта не можете разобраться, потому что вы пытались каждый модуль писать в отдельном файле и совмещать их вы уже не можете, вы открываете для себя vue-компоненты, за которыми легко следить и связывать между собой.

    Сайт, что вы кинули - обычный лендос, прям обычный на все 167%. Для чего вам париться лепить компоненты в vue, если вам нужно написать 10 строк js кода? Конечно нет смысл использовать.

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

    Ezhyg
    @Ezhyg
    На завод, фабрику, небольшой цех, руками поработать - вариант? ;)

    сфера - куча
    порог вхождения - низкий/средний/высокий (любой)
    языки -программирования- - русский подтянуть, очень рекомендую!
    спрос - не сильно большой, но есть
    трудоустройство - разумеется
    Ответ написан
  • Что такое такое rest api?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    API социальных сетей - это вполне типичные примеры реализации REST API.

    REST (RESTful) - это общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP. Особенность REST в том, что сервер не запоминает состояние пользователя между запросами - в каждом запросе передаётся информация, идентифицирующая пользователя (например, token, полученный через OAuth-авторизацию) и все параметры, необходимые для выполнения операции.

    Всё взаимодействие с сервером сводится к 4 операциям (4 - это необходимый и достаточный минимум, в конкретной реализации типов операций может быть больше):
    1. получение данных с сервера (обычно в формате JSON, или XML)
    2. добавление новых данных на сервер
    3. модификация существующих данных на сервере
    4. удаление данных на сервере

    Операция получения данных не может приводить к изменению состояния сервера.

    Для каждого типа операции используется свой метод HTTP-запроса:
    1. получение - GET
    2. добавление - POST
    3. модификация - PUT
    4. удаление - DELETE

    Т.е. :

    GET-запрос /rest/users - получение информации о всех пользователях
    GET-запрос /rest/users/125 - получение информации о пользователе с id=125
    POST-запрос /rest/users - добавление нового пользователя
    PUT-запрос /rest/users/125 - изменение информации о пользователе с id=125
    DELETE-запрос /rest/users/125 - удаление пользователя с id=125
    Ответ написан
    20 комментариев
  • Что нужно знать начинающему тестировщику?

    livetyping
    @livetyping
    Кое-что знаю о разработке и маркетинге в digital
    «минимальный список того, что надо знать, чтобы начать работать тестировщиком, а не мартышкой, которая просто тыкает в кнопки»:
    https://livetyping.com/ru/blog/chto-nuzhno-znat-i-...
    Ответ написан
    Комментировать
  • Как устроена авторизация по паролю в web-приложениях?

    @Alexander1705
    Обычно разделяют сессии и авторизацию:

    Сессия. Чтобы реализовать сессии сервер при первом соединении с клиентом может генерировать некоторый случайный токен и устанавливать его в куки. Тут важно, что куки должны передаваться по защищённому каналу (HTTPS). Таким образом можно сохранять некоторую информацию о сессии в базе данных или же в самих куки, но тогда нужно подписывать куки, чтобы пользователь не мог их изменять.
    В любом случае, сервер будет хранить информацию о активных сессиях в БД.
    Подписать куки можно, например, добавив в них помимо нужной вам информации какой-нибудь HMAC.

    Авторизация. Сервер никогда не хранит пароли. В базе данных хранят логин и хеш пароля (на самом деле нет). Для авторизации пользовтель передаёт логин и пароль (HTTPS). Сервер вычисляет хеш от пароля и, если он совпадает, сессия помечается как авторизованная.

    Соль. Теперь представим, что вы действительно храните логин и хеш пароля в таблице:
    login | pass_hash
    ------+----------
    vasya | 4B32E1C...

    В идеальном мире это бы неплохо работало. Но в реальном мире 90% ваших пользователей будут иметь пароль вида 12345, password, password123, etc. Соответственно в базе данных будет много одинаковых хешей и злоумышленнику не составит труда быстро подобрать пароли большинства ваших пользователей.
    Для этого для каждого пользователя сервер сохраняет некоторые уникальные случайные данные (соль). А вместо хеша пароля хранится hash(pass + salt).
    login | salt   | hash
    ------+--------+-----
    vasya | 4B3... | 2A3B9...

    Таким образом усложняется перебор паролей по словарю.

    Хеш. Возможно вы где-то видели или слышали про MD5. Так вот, MD5 на сегодняшний день не является надёжной криптографической хеш функцией и даже если вы примените MD5 сто или тысячу раз, это не сильно изменит ситуацию. На сегодняшний день рекомендуется использовать SHA-2 или SHA-3.

    P. S. Соль и токены обязательно должны быть сгенерированы с помощью CSPRNG.
    Ответ написан
  • Какую посоветуете (актуальную) книгу для изучения JavaScript?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    НО-СО-РОГ
    Ответ написан
    Комментировать
  • Как сделать систему личных сообщений на Django?

    Astrohas
    @Astrohas
    Python/Django Developer
    класс Сообщение(модели.Модель):
        отправитель = модели.ИностранныйКлючь(относиться_к_имени="отправленные_сообщения")
        получатель = модели.ИностранныйКлючь(относиться_к_имени="полученные_сообщения")
        дата_отправка = модели.ДатаВремяПоле(автоматический_сейчас_добавить=Правда)
        текст_сообщения = модели.ТекстовыйПоле()
    Ответ написан
    1 комментарий
  • Как сделать систему личных сообщений на Django?

    OKyJIucT
    @OKyJIucT
    Sunshine reggae
    Подойдет и MySQL.

    Создаете две таблицы, одна для сообщений (поля id, user_id, message, dialog_id), вторая - для диалогов (поля id, user1_id, user2_id). user_id, user1_id и user2_id - айди юзеров из таблицы с юзерами.

    При создании сообщения добавляете в первую таблицу само сообщение, айди автора и айди диалога (создаете диалог в таблице с диалогами с айди обоих участников переписки, если его еще не существует).
    Ответ написан
    4 комментария
  • Отправлять почту через Яндекс в Django?

    @rumsey
    Имхо - яндекс и им подобное только если во время разработки. У меня письма в нем бесследно исчезали и никаких ошибок он не выдавал. В рамблере если не заходить в веб-интерфейс, то через какое-то время отключают отправку.

    Свой сервис типа exim настроить не долго и в обслуживании проблем нет. За два года я пару раз смотрел логи по просьбе клиентов, так как письма не приходили, но там в адресе была ошибка. Для тестов в django можно настроить чтобы письма сохранялись на диске, а не отправлялись.

    Или как написал Pavel Denisov использовать mailgun.com
    Ответ написан
    Комментировать
  • Что имеет смысл осваивать если есть желание уйти в "айтишники"?

    Ребят я сам не айтишник конечно, прост не моё , но скажу вам что у меня лучший друг айтишник другой знакомый тоже , кароч знаком я с этим направлением , так вот , здесь главное как сказал мне мой хороший друг знать не только язык програмирования , но больше знать английский на оч хорошем уровне чтоб нормально общаться с западными коллегами , у меня знакомый после работы ( тестировщик ) не программы изучал новый а работу искал в линкедине на фэйсбуке и в других ресурсах , перелапачивал тонну информации , что бы найти норм работу но не у нас а в иностранной айти компании , и нашёл , серьёзно , другой знакомый живёт в США , сам же айтишников ищет для американских компаний , так вот тут важен 1 язык иностранный и 2е стремление найти работу не в нашей рашке а за границей , а там и зарплаты поверьте гораздо повыше , да и удалённо можно найти если постараться , я вам тут это расказываю не от былды , а потому что с этим сталкиваливались мои друзья и знакомые. Так что всё в ваших руках , главное голова на плечах , не сосредотачивайтесь так все на России , поверьте норм специалиста и на западе примут и в америке и в эмиратах.
    Ответ написан
    1 комментарий
  • Не доходят письма с сайта на Django через Яндекс. Где копать?

    @rumsey
    У меня работало с такими настройками (сейчас шлю через свой почтарь):
    EMAIL_HOST_YA = 'smtp.yandex.ru'
    EMAIL_PORT_YA = 587
    EMAIL_HOST_USER_YA = 'new.mail@yandex.ru'
    EMAIL_HOST_PASSWORD_YA = '1234'


    И код отправки:
    from django.core.mail import get_connection, send_mail
    
    #connections to yandex
    connection = get_connection(
        host=settings.EMAIL_HOST_YA,
        port=settings.EMAIL_PORT_YA,
        username=settings.EMAIL_HOST_USER_YA,
        password=settings.EMAIL_HOST_PASSWORD_YA,
        use_tls=True
    )
    send_mail(
        subject,
        text_content,
        from_email,
        to,
        connection=connection,
        html_message=html_content
    )
    Ответ написан
    2 комментария
  • Django-registration-redux. Как привязать другие модели?

    syschel
    @syschel
    freelance/python/django/backend
    1. Если вы только учитесь. Старайтесь как можно меньше использовать батарейки. Регистрация очень просто делается голой джангой. Плюс даёт понимание многих внутренних механизмов. Советую снести батарейку и сделать ручками.

    2. Вы не верно понимаете принципы(логику). Личный кабинет, ничем не отличается от любой другой страницы сайта. Тот же функционал. Задайтесь вопросом: "что делает юзер в ЛК?". И получите ответ: "он добавляет статьи, картинки и взаимодействует с юзерами(комментарии, лайки)". То есть он в ЛК управляет объектами "стати", "картинки", "комментарии", "лайки". Для этого уже есть модели? Есть! Что делает в ЛК юзер? Добавляет, редактирует, удаляет эти объекты, но только те их единицы, которые он может по привилегиям (владелец, модератор). Зачем тут какие-то ещё модели? Не зачем! Почему такой вопрос задан? Потому что вы не знаете джангу, а пользуетесь готовыми батарейками. Почему так? Потому что вы не хотите учиться. :-)
    Ответ написан
    5 комментариев
  • Как работают спортивные сайты типа myscore?

    @purpleflower
    Периодически делаю ставки, часто пользуюсь Myscore, и тоже приходилось об этом задумываться. На самом деле всё просто: они подтягивают эти данные непосредственно из самих контор, как и коэффициенты, и в пре-матче и в лайве.

    В случае майскора - это 1xставка, бетсити, винлайн. "С пультом" никто не сидит, потому что трансляций на какой-нибудь условный третий дивизион Греции или чемпионат Ботсваны, попросту нет. Да и кроме прочего, майскор предоставляет данные не только по футболу, но и по гольфу, дартсу, скачкам, флорболу и ещё Ктулху знает, по чём. На такой гигантский объём спортивных событий никаких пультов не напасёшься, извините. Поэтому всё сводится к тому, что сервис тесно связан с разными БК в плане статистики.

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

    А вот сами конторы ведут лайв-аналитику двумя путями: ручным и автоматическим.
    Насчёт ручного, думаю, можно не объяснять. Скажу лишь только, что одному человеку поручают не более трёх матчей. В "ручном лайве" аналитик сам определяет коэффициенты.
    Автоматический лайв работает на основе программы Betradar, то есть Betradar дает фид с готовыми коэффициентами. Это очень дорогое программное обеспечение. Лайвщику остается только наблюдать и исправлять завышенные коэффициенты.
    Ответ написан
    6 комментариев
  • Предпринимательский подход к разработке и программированию - как развивать, что именно прокачивать?

    @asd111
    В провинции основной IT бизнес - интернет магазины, веб студии, 1С и всё что с этим связано.
    1. По интернет магазинам. Можешь поискать в своём регионе у кого нет интернет магазина или сделано плохо и предложить им купить у тебя интернет магазин. Либо можно сделать большой агрегатор интернет магазинов для своего региона наподобие яндекс маркета или амазона, но только в рамках своего региона. И потом предложить купить место в этом агрегаторе за 2-5000 в год.
    2. 1С . Предлагаешь все услуги связанные с 1С, в том числе бухгалтерский аутсорс. Находишь исполнителей, делаешь свое ООО с капиталом 10к руб.
    3. Делаешь свою веб студию с друзьями. Нанимаешь знающего друга менеджером по поиску клиентов, в том числе на иностранных биржах, и работаете с друзьями. Для провинциальных веб студий часто основными клиентами становятся московские веб студии, которые скидывают свои проекты на аутсорс.
    4. Переезжаешь в Москву и устраиваешься менеджером IT проектов. И скидываешь все заказы на выполнение в свою фирму в провинции.
    Ответ написан
    Комментировать
  • Широкий кругозор для профессионального программиста?

    AlexMaxTM
    @AlexMaxTM
    Поймите простую вещь, вы идете не экзамены сдавать, на собеседование. Бессмысленно читать ночь перед собеседованием и писать шпоры. В зачет пойдет только ваш реальный опыт, а не теоретические знания.
    Хотите список вопросов, на котором буксовали у меня люди на собеседовании?
    - Каким редактором вы пользуетесь? Какая версия, какие плагины стоят? Какая горячая клавиша для ... (Если человек буксует, значит он мало сидит за редактором).
    - Какую версию MySQL (или PostgreSQL) вы используете, в чем отличие от предыдущей версии?
    - В каких ситуациях необходимо использовать интерфейсы, но категорически нельзя использовать абстрактные классы. И наоборот, в каких ситуациях необходимо использовать абстрактные классы, но недопустимы интерфейсы, или трейды?
    - Даю листок бумаги и пишу длинное число 4923872788828228453. Даю задание, напишите регулярное выражение, чтобы разделить это число по три через пробел: 4 923 872 788 828 228 453. Число может быть произвольным. Если человек не в состоянии сделать это одним регулярным выражением, тогда предлагаю решить ему задачу любым другим способом, но на бумаге и без интернета. Просто интересно как он составит алгоритм. Задачки бывают разными, под рукой всегда было около пары десятков подобных примеров.

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

    Exploding
    @Exploding
    wtf?
    Ну так вы ж наверно по IP и гугл, вместе со всей толпой швыряете на англ?)) Как же ему пройтись по другим версиям))
    Варианты такие, как по мне:
    • Дописать, чтобы по UA смотрело кто пришел, и перекидывать выборочно. ПС не трогать вообще.
    • При входе на сайт, определять страну, но не перекидывать, а просто выводить сообщение оверлейное, та соотв. языке типа: "Ты Португалец? Может хочешь на португальскую версию? [Да, хочу][Нет]". Это позволит ПС нормально пройтись по всем версиям.
    • НУ еще как вариант, автом. перенаправление, но не сразу, а чтоб человек видел, что через ~15 сек его перекинет на Португальскую (имхо самый бред)))

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

    P.S. А тем более, что скорее всего, ошибки будут именно в правильном определении IP и язык. версии, щас же VPN-щиков, TOR-овцев и прочих - на каждом шагу...
    P.P.S. Ах да, еще же кроме неудачников, бывают и прямые заходы! Что-то совсем вылетело из головы... Вот для них тоже оверлейный запрос!
    Ответ написан
    Комментировать
  • Как лучше сделать авто-бекапы БД на Digitalocean (Ubuntu, Django)?

    Xuxicheta
    @Xuxicheta
    инженер
    Можно еще readonly replication сделать. Будет всегда актуальная копия. А с него уже делать снимки какой-нибудь бакулой или если попроще rdiff-backup
    Ответ написан
    Комментировать
  • Как лучше сделать авто-бекапы БД на Digitalocean (Ubuntu, Django)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Просто pg_dump по cron'у.
    Ответ написан
    4 комментария