• Как понять CBV и GV?

    Разница появляется тогда, когда количество view становится сколь-нибудь значительным. В своих проектах мы используем почти исключительно CBV и стараемся уйти от функций-view как можно дальше. Посмотрите на библиотеку: https://github.com/brack3t/django-braces

    Предположим, что у вас 30 разных view, и из них 10 должны быть доступны только суперпользователю, 15 - только зарегистрированным пользователям с разными permissions, а 5 - анонимусам и ботам. Чтобы это сделать на FBV, надо будет в каждой функции писать проверку заново или делать какие-то специальные функции типа check_superuser(), которые в случае неуспеха выбрасывают 403. Но согласитесь, что это некрасиво. То ли дело с CBV:

    class ReactorCreateView(PermissionRequiredMixin, CreateView):
        permission = 'myapp.create_reactor'
        model = AtomicReactor


    и собственно всё. Вы можете легко поменять одно на другое.

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

    Так что CBV - это дико полезная вещь; советую вам сразу только ими и пользоваться, чтоб потом не было мучительно больно переписывать разросшуюся груду процедурной лапши.
    Ответ написан
    5 комментариев
  • Законно ли делать свой frontend к чужому/гос api?

    @vjjvr
    API для того и существует, чтобы его использовать.
    Ответ написан
    2 комментария
  • Зачем нужны приложения?

    sim3x
    @sim3x
    А что с главной страницей?
    создай апп с названием core || common || main || etc и сделай там вью со своей главной

    Т.е. сама основа на которой хедер, футер и в нее уже контент этих приложений вставляется.
    основа верстки ложится в темплейт, основа контекста, может ложится в core

    Ее что отдельным приложением сделать?
    если какая-то часть задачи сильно отличается от дргуих - ее можно вынести в апп

    В общем случае, нужно стараться делать такие аппы, которые можно поместить в пакет и переиспользовать в другом проекте, но не проблема, если так не получается
    Ответ написан
    4 комментария
  • Dajngo - как использовать одну таблицу на две модели?

    @artinnok
    бекенд-программист
    Скорее всего, у вас неправильная архитектура.

    1 таблица на две разные модели - плохое решение.

    1 модель - 1 таблица.

    Почему это плохо?
    1. Код пишется для того, чтобы просто читаться - тем более на питоне.
    2. Представьте, что через 3 года вы или другой прогер откроет ваш проект - как быстро он поймет эту неявную фишку с 1 таблицей на 2 модели?
    3. Не идите с ходу в гору - переопределение менеджеров достаточно хитрая штука, постарайтесь вначале получить хорошую базу в Django.
    Ответ написан
    Комментировать
  • Какую CMS лучше использовать для каталога продукции?

    Sanes
    @Sanes
    Modx+pdoTools+MiniShop2 и никакого PHP. Правда с синтаксисом Modx придется все же познакомиться.
    Ответ написан
    2 комментария
  • Меньше стек технологий, больше шанс устроиться на удаленную работу?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Сколько видел вакансий - везде стопицот непохожих требований, а когда доходит до собеседований и тестовых заданий, то всплывает еще стопицот сюрпризов.

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

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

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

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

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

    С 2015 года я положил глаз на full-stack JavaScript и потихоньку развиваюсь в данном направлении. Тренды таковы, что все больше вакансий и прочих предложений будут так или иначе именно в эту сторону. Одно меня печалит, пока что рынок фронтенда держит angular 1.x, но, думаю, это временно.
    Ответ написан
    3 комментария
  • Почему не могу обновить данные при получения события?

    @SuperOleg39ru
    Front-end разработчик
    Добрый день!

    Broadcast вызывается до успешного добавления данных, поэтому его надо перенести в then. Попробуйте так:
    $scope.addDb = function (name) {
            NetFactory.addDb(name).then(
                function (data) {
                    $scope.message = data;
                    $rootScope.$broadcast('db:change');
                }
            );
    };
    Ответ написан
    3 комментария
  • Меньше стек технологий, больше шанс устроиться на удаленную работу?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Меньше стек технологий, больше шанс устроиться на удаленную работу?

    Вовсе. Шанс устроиться на работу определяется качеством знаний И умением себя преподнести, а не маленьким стеком технологий.

    Понимаю, что со временем разработчик "обрастает" знаниями и навыками, описанными выше, но на начальном уровне зачем такое?

    Рынок юниоров перегрет. Найти самую первую работу "за еду" - это уже хорошо. Вначале ваша цель должна быть опыт. А дальше цена ваших услуг с точки зрения работодателя будет на прямую зависеть от качества ваших знаний и опыта.
    Приведу пример. N лет назад общаясь с коллегами возник вопрос: кто в скольких проектах участвовал? На тот момент у меня накопилось около 15 (тогда я был твердым мидлом), у моего коллеги более 300 (слабенький юниор). Возник резонный вопрос: "что так?". Оказалось его проекты в основном сайты-визитки и роста на них (как специалиста) не было.

    Подскажите, от какого программиста(ЯП) требуется минимум технологий на начальном уровне, чтобы устроиться на работу?

    От печатающей обезьянки. Поймите правильно, чем уже стек - тем выше требования к качеству.

    Учишь "ЯП" -> "технология1", "технология2", "технология3" -> проходишь собеседование -> Profit!!!

    Вы ищите то, чего нет. Собеседование - это не экзамен со списком вопросов. Вас могут спросить что угодно, ориентируясь на свой бизнес, а не на то что вы там знаете.

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

    @mletov
    >>>что он будет и верстать, и пару cms знать, и не один framework, и PS, и сервер настроит, и js, и webpack, "и на >>>дуде игрец". Понимаю, что со временем разработчик "обрастает" знаниями и навыками, описанными выше, но на >>>начальном уровне зачем такое?

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

    Вот есть суперкрутой спец по PHP, знает только PHP ну и фреймворки. Он вполне может сказать работодателю, что ему делать со своими требованиями Photoshop, js, верстки и т д.

    Или вот есть dba программист, он сидит по уши в своих хранимых процедурах, индексах, триггерах и трехэтажных sql запросах, и не сильно парится, что там у коллег, например, какие там трудности у html-верстальщика.

    Но чтобы так было, вы должны быть действительно СУПЕРспецом.
    А пока вы на начальном этапе, старайтесь разобраться со всем, хотя бы на базовом уровне.

    PS Все выше написанное не общее правило, а скорее тенденция. И вовсе не означает, что крутые узкие спецы - это задорновские врачи, специализирующиеся "по левой ноздре".
    Любой сильный PHP программист наверняка и верстку может подправить, и sql запрос написать, просто на уровне его проектов это редко бывает нужно, т к в комманде узкая специализация.
    Ответ написан
    Комментировать
  • Меньше стек технологий, больше шанс устроиться на удаленную работу?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    IT это область с высоким порогом входа, поэтому минимум знаний в ней гораздо выше чем в большинстве других профессий. Как ни старайтесь, но вы не сможете ужаться до комфортного для вас минимума. Стоит задуматься, действительно ли вам так нужно IT - я видел очень много людей, которые напрасно потратили кучу денег на всякие курсы, пересидели в обучающих видео, накупили самых крутых книжек, но работают менеджерами по продажам, потому что не осилили.

    Или вы перестаете выискивать самую простенькую вакансию (на которую вдобавок конкурс по 50-100 человек на место, среди которых всегда будет кто-то лучше), и нормально изучаете технологии для выполнения простых задач на фрилансе, или которых достаточно для популярных вакансий в вашем городе, или пробуете свои силы в другой области.
    Ответ написан
    1 комментарий
  • Меньше стек технологий, больше шанс устроиться на удаленную работу?

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

    Меньше всего технологий, пожалуй, это будет Ассемблер + C/C++, там одна основная технология - очень чёткое понимание всех принципов работы машины от А до Я. Но, на начальном этапе, без грамотного преподавателя, Ваше обучение может затянуться на годы. К тому же, с очень большой вероятностью у Вас не получиться отвертеться от других технологий, например, от баз данных. Хотя, есть конечно вариант устроится писать на чистом Си (или си-подобном языке), например, системный софт, допустим это будут программные виртуализаторы, но в этом случае Вам придётся знать не только сам язык, но и принципы работы целой кучи различной аппаратуры на самом низком уровне, например очень чётко понимать что такое сетевая карта, что такое пакет, что такое буфер памяти, что такое фрейм и так далее, вплоть до устройства ядра Linux/BSD/etc.

    Другой вариант Java - но... тут тоже не всё так сладко. Хотя нет, наверное, меньший стек из мне известных - это пожалуй, C#-разработчики, не редко 1 разработчик пишет в каком-то одном вполне конкретном ключе, без вёрстки и настроек серверов и прочих "прелестей" и даже без баз данных, иногда. Но у C# - довольно большой "внутренний стек" и вот так вот с наскока, взять и писать на C# - не получиться, т.к. C# - это не только язык, но и огромная библиотека классов и готовых решений, поверх которой он построен (на которую он "натянут").

    Так же, есть случаи, когда профессиональные PHP разработчики работают только с бэк-эндом, т.е. PHP + База данных. Но обычно в таких проектах объёмы БД исчисляются чуть ли не петабайтами, а обёъмы когда иногда достигают сотни мегабайт... за то, довольно "узкий стек".

    В целом, мне встречались вакансии, и довольно не редко, где требуется человек "без лишнего ума", который знал бы как на 1.5 CMS'ках "побыстрому запилить сайт" и натянуть и возможно подправить немного готовый шаблон. Зарплата и уровень развития в таких компаниях и на таких вакансия - соответствующие.

    И, пожалуй да, наверное самый просто вариант, это будет PHP + CMS "1с Битрикс". Это довольно популярная CMS, на довольно популярном языке, состоящая чуть менее чем полностью из "странно написанного кода" (мягко говоря), страшно тормозная, требующая специфических настроек сервера, и в идеале как минимум VPS, что бы сайт подавал признаки жизни. Но, не смотря на всё это - это довольно популярная в бизнес-сфере CMS (о причинах её популярности можно написать целую книжонку). То есть, учите PHP, учите 1с-Битрикс -> Профит, Вы битрикс-разработчик, знания всего остального в 95% случаев не обязательны.

    Ну и ещё пожалуй, можно рассмотреть вариант изучения самого 1с (1с Бухгалтерия например). Я как человек сам плотно столкнувшийся с этой сферой - могу сказать, что глобальных знаний от таких разработчиков не требуется, ну кроме основ экономики и бух. учёта. И работы, в т.ч. удалённой - у них хватает. Более того, даже язык программирования, с которым Вам придётся работать - русифицирован, во всех смыслах этого слова.
    Ответ написан
    12 комментариев
  • На какой платформе лучше реализовать интерактивные игры для развития себя на сайте с личным кабинетом?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    На какой платформе лучше реализовать интерактивные игры для развития себя на сайте с личным кабинетом?
    лучше сразу делать платформонезависимо на HTML5.

    подойдёт ли html5 для реализации игр
    даже более чем.

    На каком языке программирования лучше делать подобное или искать скрипты какого языка?
    javascript и различные игровые библиотеки/фреймворки: здесь
    (лично я юзаю: crafty.js + box2d.js в тандеме)

    Пользовательский клиент: Web-browser, webkit, Cordova/PhoneGap и оформить, как Single Page Application (SPA) с RESTfull API.
    Тогда, сможете, написав код приложения (клиента) всего один раз, иметь возможность использования такого приложения на всех устройствах с поддержкой HTML5.

    Back-end: вообще не важно на чём там будет создана логика обработки.
    Но, с учётом развития сервиса, я бы сразу сделал RESTfull API + WebSocket на Node.js+Feathers.js.
    Ответ написан
    Комментировать
  • Знания Junior php разработчика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что должен знать идеальный джуниор (мое личное мнение):

    - Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается - нужно. В целом это пара часов чтения википедии.
    - GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
    - Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
    - PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов - не заучивать а знать как избегать проблем с чтением кода)
    - Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
    - Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей - секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
    - Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
    - Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности...
    - Разделение ответственности. Это один из важнейших принципов, и упрощать все это до "mvc фреймворк" слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
    - Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
    - Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
    - Уметь дебажить. xdebug, blackfire и тд.

    В целом где-то за годик весь этот список можно влегкую покрыть с нуля.

    p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде "инкапсуляция/полиморфизм/наследование" требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что - рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

    Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.
    Ответ написан
    12 комментариев
  • Python3 для опытного непитонщика, какую литературу выбрать?

    @iSergios
    Python-разработчик
    1. Python. К вершинам мастерства / Пер. с англ. Слинкин А. А. - М.: ДМК Пресс, 2016. - 768 с. (ISBN 978-5-97060-384-0)
    Интересно и хорошо написано, причем даже с переводом особых косяков нет. На примерах показано создание качественного Python-way кода. Мне понравилась, советую)

    2. Learning Python Design Patterns (Edition 2)
    Если Вы гуру в ООП, возможно, будет не так интересно. Для свежеприготовленного питониста очень полезно. В любом случае стоит полистать.
    Ответ написан
    1 комментарий
  • Python3 для опытного непитонщика, какую литературу выбрать?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    Да, с литературой (хорошей литературой) у Python все в полном порядке.

    Но, исходя из обозначенных критериев, я бы порекомендовал связку Fluent Python + Python Pocket Reference. Вторая - на случай, если почувствуете, что "плывете" при чтении первой. Т.е., она может понадобиться, а может и нет.

    Обе есть на русском. Перевод Fluent Python очень на любителя (по мне - плохой, а-ля Google Translate), второй - не знаю, держу в оригинале.

    Лично я бы рекомендовал обе читать в оригинале. Но вы уж сами для себя решайте.

    P.S. Pyramid - отличный фреймворк.
    Ответ написан
    Комментировать
  • Как пользователь может скрывать свои посты?

    sharikov_d
    @sharikov_d
    Мне стыдно за ваши вопросы и ответы
    это можно сделать простым булевым полев в табличке. к чему такое рвение тянуть гемы?

    post if post.visible?
    Ответ написан
    Комментировать
  • Сайт на Django. Как можно отслеживать изменения записей на прием в реальном времени и выводить напоминания?

    sim3x
    @sim3x
    Тут хватит jquery-ajax-CBV

    Риалтайма у тебя нет, просто делай раз в 10 сек аякс запрос и возвращай json

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

    Можно без сокетов, просто раз в несколько секунд через ajax делать запрос в нужный контроллер, это не нагрузит систему, т.к. администраторов не много, зато это просто и сэкономит кучу времени и ресурсов
    Ответ написан
    Комментировать