• Как исправить “NOT NULL constraint failed”?

    deepblack
    @deepblack Куратор тега Django
    Для реализации лайков (Голосов) отлично подходит GenericForeignKey - позволяет ссылаться на различные объекты и вообще данное решение более универсальное.
    class Like(models.Model):
        user = models.ForeignKey(settings.AUTH_USER_MODEL,
                                 related_name='likes',
                                 on_delete=models.CASCADE)
        content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
        object_id = models.PositiveIntegerField()
        content_object = GenericForeignKey('content_type', 'object_id')


    Я рекомендую посмотреть как устроена система лайков тут (* может быть заблокирован на территории России)

    UPD:
    Если ссылка выше не работает (и нет VPN), вариант заглянуть на GitHub
    Тут исходники приложения из ссылки выше.
    Возможно без обьяснения будет не очень понятно что здесь реализовано и почему именно так,
    но проект хорош как образец.
    Ответ написан
    4 комментария
  • Что будет за нарушение GDPR на сайте?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Если Вы живете в России, сайт на хостинге в России, бизнес зарегистрирован и ведется в России (или не зарегистрирован нигде, потому что его нет :D ) - ничего.
    Если каким-то раком-боком-попереком что-либо из перечисленного относится к ЕС - читайте GDPR и выполняйте требования, иначе можно встрять.
    Ответ написан
    2 комментария
  • Аналоги js в web?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Фишка в том что исполнять код должен браузер, который на лету должен создать и выполнить код, то есть иметь вполне себе компилятор в собственном ядре. Пихать их "сколько хочешь" во все браузеры никто не будет, жс пилили общими усилиями больше 20 лет, а довести до ума и кроссбраузерной совместимости до сих пор не до конца удалось. По этой причине ожидать какой-либо поддержки других языков в браузере в ближайшее время не стоит.
    Ответ написан
    Комментировать
  • Какие книги посоветуете для будущего Team Lead'a?

    @Kirill-Gorelov
    С ума с IT
    Прикреплю скриншотами, лень печатать(((
    И еще посоветую книгу Дж. Рейнвотер: Как пасти котов
    Может что-то немного устарело, но в целом отличный материал.
    spoiler

    5cff50592e347804067839.png
    5cff506086eb5906138483.png
    5cff506887411407637707.png
    5cff506cec673723489011.png
    5cff5071c2002654406289.png
    Ответ написан
    Комментировать
  • Группировка методов модели через наследование?

    @dimuska139
    Backend developer
    Я в таком случае юзаю вот эту библиотеку. Не знаю, почему тут все советуют навигацию по коду и т.п. "Толстые" модели - это реально неудобно, от этого надо уходить.
    Ответ написан
    Комментировать
  • Почему создатели EcmaScript (Javascript) выбрали "use strict" для строгого режима?

    OlegTar
    @OlegTar Автор вопроса
    программист .NET, Javascript, Perl
    Я поразговаривал с Алленом Вирфс-Броком (Allen Wirfs-Brock), одним из создателеей EcmaScript 5.
    Спасибо за наводку @Rrooom

    Он ответил:
    The 'use' directive idea was in the air. Maybe came from Perl. The innovation was using s string literal to avoid syntax errors.


    Идея директивы 'use' витала в воздухе. Может быть она пришла из Перла. Инновацией было использование строкового литерала, чтобы избежать синтаксических ошибок.


    С другим создателем EcmaScript 5, Пратапом Лакшаманом (Pratap Lakshman) мне связаться не удалось.

    таким образом даже создатель EcmaScript 5 точно не знает, почему use)
    Ответ написан
    Комментировать
  • Создать Roadmap для школьника это сложно?

    Zoominger
    @Zoominger
    System Integrator
    Я решил заняться работой во фрилансе

    Неправильный старт.

    За 4 месяца заработал ≈ 10000.

    Хм, для фриланса неплохо, беру свои слова обратно.

    я решил вторгнуться в сферу IT Web-программирования - Front-end разработчика

    А нет, опять неправильное решение.

    помогите пожалуйста составить Roadmap что-бы за 3 месяца полностью погрузиться в эту нишу и уже выйти на фриланс

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

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

    1) Мне нравится писать на Python, но я пишу на Java - почему? За Java мне платят в 2 раза больше, чем за Python.
    2) Мой друг из банковской сферы шутит, что программист на Java должен быть среднего качества, чтобы его код работал, но при этом он был отварительного качества, чтобы никто не мог в нем разобраться кроме него. Это прямой рычаг на повышение зп и улучшения условий работы.
    3) Гораздо важнее не писать хороший код, а общаться в команде. Тогда, когда появится место тим-лида, технического директора - назначат тебя, а не того парня, кто хорошо пишет код.
    Ответ написан
    1 комментарий
  • Форма регистрации на java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Приветствую!
    1) идете сюда https://start.spring.io/
    и выбираете dev tools, web, mysql (или postgres), jpa, thymeleaf, security
    2) регистрация и авторизация реализуется при помощи spring security
    3) создаете файт конфигурации (@Configuration) и прописываете ваш конфиг для security
    4) создаете шаблон при помощи thymelеaf (по факту вам сперва нужны 2 формы - форма авторизации и форма регистрации). При необходимости можете добавить форму восстановления пароля и механизм подтверждения аккаунта
    5) реализуете метод, кототрый возвращает список всех пользователей со всеми зависимостями и при помощи шаблонизатора выводите на фротн-энд. Смотрите в сторону Model, model.addAttribute() th:each
    6) создаете форму редактирования профиля и метод в контроллере, который это все приниает и обрабатывает.

    А вот, видео - https://www.youtube.com/watch?v=WDlifgLS8iQ
    Кстати, там используется freemarker, можете выбрать любой понравившийся (mustache, thymeleaf, freemarker и др.)


    С бд проблема тк у меня MAC OS ,

    Я не знаток Маков, но насколько я знаю не должно быть проблем с БД. Так что берите mysql || postgres
    https://dev.mysql.com/doc/mysql-osx-excerpt/5.7/en...
    Ответ написан
    Комментировать
  • Что можно тянуть в одного на Java?

    @frozen_coder
    Java-developer
    Напишите файловый сервер с возможностью загрузки файлов через ftp-клиент, через web-морду, через SOAP ( или REST), через мобильную приложуху с аутентификацией, базой юзеров, также можно в базе хранить какую-нибудь метоинформацию о файле. Например, может быть такой маленький личный фотоальбом с подписями(блог-постами, комментами etc.), фотки из которого доступно скачать и залить повсякому. Попробуете всё.
    web и Java = Enterprise. Это приложения масштаба предприятия, т.е. они как-то автоматизируют его бизнес-процессы и документооборот, переносят его работу в web и электронный формат. Они также могут общаться с другими приложениями, системами. Отсюда пляшем. Вам нужно какое-то предприятие, у которого вся работа в оффлайн, всё плохо, бюрократия и ад. Придумайте сложный бизнес-процесс со сложными сущностями. Разный и изменяющийся во времени и пространстве уровень доступа. Интеграция с другими приложениями или гос.сервисами. Электронный банк, электронные платежи, электронная валюта. Наворотить можно много чего.
    Начните с малого - какой-нибудь справочник-реестр с функциями CRUD - создать, прочитать, редактировать, удалить запись. Далее прикрутите систему прав и ролей пользователей(не все могут создавать, редактировать и тем более удалять). Добавьте работу с файлами - скачать, загрузить, экспорт в pdf и exel. Продолжайте накручивать своё приложение функционалом - личка и чат, доска объявлений, имитация отношений начальник - подчиненный (тайм-менеджмент, таск-менеджмент, сбор отчетов каких-нибудь по работе), уведомления (в почту, в системе, м.б. попробовать с смс), напишите другую маленькую систему и заобщайте их между собой по SOAP или REST(например, другая система может читать из справочника и что-нибудь туда писать). Берите какое-нибудь гипотетическое предприятие (склад, магазин, автосервис, школа, больница, завод и т.д.) и представьте, что ему надо свой документооборот перевести в электронный вид и максимально автоматизировать бизнес-процессы.
    Из фреймворков - семейство Spring.
    Ответ написан
    6 комментариев
  • Стоит ли начинать с JavaScript?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Самая большая беда JS в том, что это слишком странный язык. Он во многом ведёт себя неочевидно, неинтуитивно и не так, как ведут себя другие языки. Соответственно, потом может быть сложнее с изучением других языков.
    Ответ написан
    3 комментария
  • Docker или Vagrant или сервер?

    iproger
    @iproger Автор вопроса
    Безответственный гений
    Купил в итоге интел нак с i3 BOXNUC8i3BEK1. В нем все хорошо кроме пожалуй многопоточной производительности, но я осознано его выбрал, в однопотоке он очень хорош. Есть неплохая модель постарше с i5 для тех кому интересно. В нем так же можно настроить выключение кулера что положительно сказывается на работе.
    Что до решения задачи, не устраивает низкая производительность связки сеть+самба, но это уже такое. Решением доволен.
    Ответ написан
    Комментировать
  • Действительно ли стоит избегать использования innerHTML?

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

    Все ли это остается так же актуальным и в 2016?

    Зачем задавать такой вопрос, не проще ли самому попробовать, вас что, забанили там, где новые версии браузеров скачивают? И на caniuse, htmlbook и т.п. тоже забанили? Похоже, вы просто не понимаете, о чем говорите, вас интересует не как следует делать, а как одобряется сообществом. К сожалению, будучи частью социума приходится практиковать и второе, как говорится "для галочки", чтобы проходить собеседования и т.п., но, с другой стороны, если начальник будет разумным человеком, то его не устроят ваши мнения без понимания, а глупые начальники живут не очень долго, ровно столько сколько они заработали когда они или их предшественники были умными.
    Ответ написан
    Комментировать
  • Что PayPal делает с отрицательным балансом?

    @iSergios
    Python-разработчик
    Я не верю, что PayPal будет кому-то продавать такие долги. Они официально зарегистрированы на территории РФ, Ваши данные у них есть. Мы не в Великобритании и не в США. Судебные издержки у нас мизер. Ничто не помешает им при желании просто обратиться с иском. При этом лично никуда ходить не надо, а Ваша вероятность отбиться стремится к нулю. Но сумма маловата. Скорее всего будете в черных списках, пока не погасите, вот и все. Ну плюс процент, но вряд ли конский.

    Ситуация отвратительная, согласен. Но я согласен и с тем, что Вы сами во многом виноваты. То, что я скажу, Вам уже не поможет, но, возможно, поможет кому-то, кто с аналогичной проблемой найдет этот топик.
    PayPal как инструмент невероятно удобен. Для покупателя. Для продавца есть преимущества, да. Однако все эти преимущества заканчиваются ровно там, где начинаются проблемы с покупателем. Диспут на PayPal - это очень мерзкая штука, выиграть которую продавцу очень и очень сложно. Покупатель всегда будет прав. Поэтому диспута на PayPal надо избегать всеми мыслимыми, немыслимыми, разумными, неразумными и даже сказочными способами. Вы рефунд по диспуту штатной процедурой сделали, в этом Ваша фатальная ошибка. Надо всегда помнить, что это аварийный вариант, использующийся только в самом крайнем случае. Я работаю с PayPal c 2007 года, как продавец - с 2011. Как продавец я не выиграл ни одного диспута (было штуки 3, наверное). Немного не Ваш случай, но для оценки степени недоверия к продавцу сойдет: PayPal выносил решение в пользу покупателя даже когда я помимо валидного трек-номера представлял "группе разбора" фотографии посылки упакованной с написанными адресами, ее же на почте после оформления приемки - с трек-номерами и отметками почтовых работников, ее же на фоне чека об оплате отправки (+ подробный скан этого чека). И все равно я ловил решение не свою пользу с обоснованием "продавец не представил достаточных доказательств отправления товара".
    Если Ваш клиент готов решать проблемы только через диспут - нафиг такого клиента. Лучше как можно быстрее свернуть с ним все дела и больше не открывать. Если он всенепременно хочет получить свои деньги взад, ни в коем случае не доводить до диспута и (упаси Боже) решения группы разбора. Иногда есть смысл вернуть ему деньги простым переводом, возможно даже больше, чем должны ему (но это опасно, диспут он все еще может отрыть, но и Вы тоже можете). Но все-таки сомнительных клиентов лучше переводить на всякого рода Scrill или даже Bitcoin (если структура проекта позволяет, разумеется). А лучше с ними и вовсе дела не иметь.
    Ответ написан
    2 комментария
  • Как перенять объектно-ориентированное мышление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Т.е. сложно понимаю, что "засунуть" в один объект, что в другой, что должно быть статическим методом, что приватным и тд.


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

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

    Теперь задумаемся о декомпозиции всего этого хаоса. Мы находим какую-то задачу, которую выполняет наш код (например какую функцию вызвать для обработки каждого конкретного запроса) и выносим это в отдельный объект. Отправка email-ов - отдельный объект. Весь SQL зашиваем в отдельный объект. Соединение с базой - объект. Пользователи - объекты. Все - объекты.

    И главное, у каждого объекта есть своя область ответственности. UNIX way. Каждый объект делает что-то одно и делает это хорошо. Бывает так что ну... нужно сделать так что бы один объект делал две вещи. НЕ вопрос, мы можем его попросить сделать что-то сложное, а он будет как хороший менеджер тупо делегировать работу другим объектом. То есть он и сложную штуку сделает, и сам не будет знать как она делается.

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


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

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

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


    Фреймворки универсальны, а значит чистого ООП там быть не может. Во всяком случае нет ни одного фреймворка на котором стоит учиться ООП.

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

    Сразу хочу отметить что это крайности. Упражнения же. Они должны ограничивать вас что бы заставлять думать и задавать правильные вопросы.

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария
  • Как дальше учить язык?

    Therapyx
    @Therapyx
    Data Science
    начинал стандартно с html, css. Пилил просто сайтики, потом задумался уже о функционале, пошел в сторону asp.net, c#, MSSQL - было много велосипедов, кое как справлялся, но понял что подход был не совсем верный. Уж слишком много пробелов, которые очень сильно мешали и замедляли в десятки раз всю работу. Благо в школе еще учил жаву, относительно учил конечно)) Но без этого вообще был бы ад.
    После чего решил все таки пойти в универ на информатику - там уже изучал плюсы, и большенство пробелов сняло как рукой.
    Дак вот, если бы я вернулся назад и заного начинал учиться, вопреки всему - начал бы с с++. Да труднее, но зато освоив его - с легкостью можно будет перейти почти на что угодно. Ибо в первую очередь ты учишься программировать, понимать логику программирования, собираешь арифметические знания.
    Т.к. у тебя может нету возможности тратить время на универ или же просто вокруги нету нормальных, советую взять хорошую книжку (какую? тут есть на форуме целые подборки) с практическими заданиями, читай и обязательно закрепляй знания на примерах, выдумывай их сам, проблемные места пости тут - люди будут помогать. И когда пройдешь хотябы 1 книгу полностью начинай делать реальные задачи. Выдумывай себе программы и пиши их. Еще можно брать небольшие программки и пытаться их скопировать.
    Еще советую ознакомиться с такой темой как memory management, как работает компайлер? какое поведение у каждой твоей строки программы? Куда они сохраняются, как они сохраняются итд итп. Понимая это, тебе будет легче находить ошибки. А также конечно же учишь пользоваться дебагером хД
    Просто знать синтаксис это посредственность. Его можно загуглить, спросить и все готово. А вот вникнуть в саму суть программирования - это уже сложнее.
    Ответ написан
    Комментировать
  • Как создавать методы для функции в PHP?

    @entermix
    Никак, используйте классы и объекты
    Ответ написан
    Комментировать
  • Как спарсить сообщение с форума?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Сразу брать plaintext неправильно. Вместо plaintext надо воспользоваться children(), чтобы получить набор потомков. Потом пройтись по ним циклом. Если встретился div, то предполагаем, что это сообщение. Если следующий элемент - текст, то это уже комментарий к сообщению.
    Ответ написан
    4 комментария
  • Как подтянуть английский за год?

    rasswet
    @rasswet
    подкасты слушай. есть подкасты по уровням от простого к сложному.
    сложнее - ролики TED
    еще можно взять пару уроков у репетитора (есть варианты за 500р в час. ищешь на авито преподов по скайпу из регионов) ответят на твои вопросы
    www.efl.ru тут твой вопрос уже 100500 раз обсуждали, полно советов, но можешь задать его и там.
    Ответ написан
    Комментировать