• Front-end разработка, правильная сборка?

    Atanvar
    @Atanvar
    Frontend developer
    правка кода сразу на сервере - что может пойти не так, да?)

    Сначала все правки вносятся локально, затем деплоятся.
    Ответ написан
    3 комментария
  • Front-end разработка, правильная сборка?

    search
    @search
    мама говорит что я особенный
    Если компания дорожит качеством продукта и безопасностью данных своих клиентов, то сборка и выкат новой версии проводится автоматически Continuous Intrgration сервером. У программистов вобще нет доступа к проду. Доступ к проду есть только у CI-сервера. У программиста есть доступ только к GIT репозиторию проекта. Вся работа проводится в своём окружении и в отдельной ветке. Затем ветка тестируется на тестовом окружении (близком к продакшену), если надо правится, и затем вливается в главную ветку проекта. После этого CI подхватывает изменения, билдит фронт и бэк и выкатывает это дело на прод. Это очень общий вариант. Там есть куча нью-ансов.

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

    UPD
    Забыл сказать, что этот путь не даётся легко. Нужно потренироваться где-то полгодика. Но зато на всю жизнь получаешь спокойные ночи и здоровый цвет лица, так что оно того стоит.
    Ответ написан
    2 комментария
  • Почему не работает login() в Django?

    gordon_shamway
    @gordon_shamway
    #forms
    class LoginForm(forms.Form):
        username = forms.CharField()
        password = forms.CharField(widget=forms.PasswordInput)
    
    
    class UserRegistrationForm(forms.ModelForm):
        password = forms.CharField(label='Password', widget=forms.PasswordInput)
        password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)
    
        class Meta:
            model = User
            fields = ('username',  'email')
    
        def clean_password2(self):
            cd = self.cleaned_data
            if cd['password'] != cd['password2']:
                raise forms.ValidationError('Passwords don\'t match.')
            return cd['password2']
    
    #views
    def user_login(request):
        if request.method == 'POST':
            form = LoginForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                user = authenticate(username=cd['username'], password=cd['password'])
                if user is not None:
                    if user.is_active:
                        login(request, user)
                        return redirect('/blog/')
                    else:
                        return render(request,
                              'account/disabled_password.html')
                else:
                    return render(request,
                              'account/disabled_password.html')
        else:
            form = LoginForm()
        return render(request, 'account/login.html', {'form': form})
    
    
    def register(request):
        if request.method == 'POST':
            user_form = UserRegistrationForm(request.POST)
    
            if user_form.is_valid():
                # Create a new user object but avoid saving it yet
                new_user = user_form.save(commit=False)
                # Set the chosen password
                new_user.set_password(user_form.cleaned_data['password'])
                # Save the User object
                new_user.save()
            
               
                return redirect('/account/login/')
        else:
            user_form = UserRegistrationForm()
        return render(request, 'account/register.html', {'user_form': user_form})

    Простой пример регистрации и входа
    Ответ написан
    Комментировать
  • Как создавать архитектуру JavaScript приложений?

    @aterentyev
    Почитайте "Совершенный код" от Стива Макконнелла
    Лучше и полнее книги на эту тему я не видел.
    Ответ написан
    Комментировать
  • Как создавать архитектуру JavaScript приложений?

    @Elizavetta
    Matroid: gamedev/js-разработка
    Паттерны в JS уже прочитали?
    Возможно, вы не уделяете внимание рефакторингу по мере написания приложения. Про рефакторинг можно много читать, например вот
    Ответ написан
    Комментировать
  • Какую книжку выбрать для изучения JS?

    рекомендую https://learn.javascript.ru/
    1) интерактивный & современный
    2) под каждой темой читайте комменты (все разжевано до мелочей), останутся вопросы пишите комменты, фидбек очень быстрый
    3) задачки
    4) (понимание) => основ
    5) обязательно устроится куда нибудь junior, будет много практики, ошибки и т/п если еще будет team lead можно сказать уже пол дела сделано
    6) глубокое погружение, не только по js
    7) потом уже поймете что делать дальше
    Ответ написан
    Комментировать
  • Какую книжку выбрать для изучения JS?

    vetero4eg
    @vetero4eg
    Frontend
    Мне Кантор не пошел совсем.. Помимо Флэнагана, попробуйте "Выразительный JS". Лучшее, что мне попадалось для меня новичка. У ITDN, опять же субъективно, курсы неплохие. Главное практики побольше.
    Ответ написан
    1 комментарий
  • Куда стремиться PHP программисту?

    Sanes
    @Sanes
    Жениться.
    Ответ написан
    Комментировать
  • Куда стремиться PHP программисту?

    @developer007
    точно 5 лет отработали?

    будто прошли курс "программист за 21 день"

    норм прогер такие вопросы даже близко задавать не будет -_-
    Ответ написан
    Комментировать
  • Куда стремиться PHP программисту?

    riky
    @riky
    Laravel
    постараться понять смысл жизни и ответить на вопрос "есть ли жизнь после смерти?"

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

    так вот представь себя после и ответь: что было действительно важно?
    Ответ написан
    4 комментария
  • Куда стремиться PHP программисту?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Мир бекенда широк и необъятен, зачем распылять усилия на фронтенд? Углубляйтесь, учите другие языки, изучайте другие бд и т.п.
    Ответ написан
    Комментировать
  • Где найти исходный КАЧЕСТВЕННЫй код Python/Django каких либо сайтов чтобы разбираться в нем и учиться?

    sim3x
    @sim3x
    Смотри внутрь самой джанги - там достаточно реализации своего же апи в шорткатах и CBV

    Качественно реализованый сайт != хороший код
    Хорошо реализованный сайт == сайт отвечает ТЗ, запущен быстро и покрыт тестами
    А говнокода там может быть порядком
    Ответ написан
    Комментировать
  • Как учиться новому после рабочего дня?

    sim3x
    @sim3x
    0. Начать следить за своим состоянием - понять, когда у тебя пик трудоспособоности
    1. Сделать приоритет - обучение или работа
    2. Научиться спать мало
    3. Научиться спать по 30 мин для разделения между учебой и работой
    4. Привыкнуть к мысли, что ето надолго (навсегда), те мотивация не при чем.
    Твой новый график - ето твой новый стиль жизни
    5. Заняться спортом, для улучшения кровообращения
    6. Изучить техники улучшения запоминания
    Ответ написан
    11 комментариев
  • Как вы деплоите django приложение на сервер?

    @artinnok
    бекенд-программист
    Исходя из вашего вопроса - "деплой" это разворот сервера с нуля до рабочего состояния.

    Все зависит от количества деплоев:
    1. Если вам достаточно задеплоить 1 сервак и забыть про него - проще поднять руками.
    2. Если вы постоянно разворачиваете > 2 серваков - однозначно надо использовать автоматизированные инструменты.

    Рассмотрим несколько популярных инструментов:
    1. Ansible - на мой взгляд самый удобный инструмент для быстрой и удобноый работы с парком серверов, устанавливает весь софт и настройки на вашей VPS.
    2. Docker - позволяет создать на вашей VPS еще одну виртуальную машину с заранее прописанными настройками и софтом, также его иногда используют для параллельного запуска нескольких БД / веб - серверов и т.д.
    3. Также есть Puppet, Chef, Salt - ими не пользовался.

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

    Тут все зависит от размеров проекта:
    1. Если проект маленький / средний fabric вполне справляется с такими задачами, как подтянуть изменения из репозитория / собрать статику / перезагрузить nginx и т.д., но использовать его для разворота сервера - это тяжелая работа, которую проще делать с помощью других инструментов (описано выше). Сам я тоже использую fabric для обновления прода.
    2. Если проект большой и приближается к хайлоаду - то надо использовать Continuous Integration, это позволит вам сделать автоматизированную выкладку кода на боевой сервер - к примеру, пушите коммиты в репозиторий на github, срабатывает хук, начинает работать Jenkins, идет прогон тестов, при успехе тестов обновляется прод.

    Инструментов для CI много:
    1. Jenkins - простой и бесплатный, с кучей расширений и прочих плюшек.
    2. Travis-CI - бесплатный для опен сорс, платный для приватных проектов (69$ минимальный план).
    3. Buildbot, tox - не использовал.

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

    DeoZ
    @DeoZ Куратор тега Яндекс.Директ
    Веб-разработка и Реклама
    Честно говоря, с бюджетом в 1000 рублей не влезть ни в ВК, ни в Яндекс.Директ, ни в Google Adwords. Даже если у Вас будет клик в 10 рублей, то это всего 100 переходов. Вы это не почувствуете. И не забывайте ещё про показатель отказов.
    Начинать надо хотя бы с бюджетом 1000 рублей в день. Или пользоваться другими "условно-бесплатными" способами продвижения.
    Ответ написан
    Комментировать
  • Почему не появляется кнопка загрузки изображения в ckeditor Django?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    В модели поменять RichTextField на RichTextUploadingField.
    Ответ написан
    4 комментария
  • Где найти сайт по проектированию высоконагруженых проектов?

    XAKEPEHOK
    @XAKEPEHOK
    Не ищите даже, не пытайтесь заниматься преждевременной оптимизацией не смотря на соблазн). Высоконагруженный проект можно построить без спец.знаний, просто на практике, оптимизируя и дорабатывая приложение. Сколько бы вы не читали статей и литературы, все равно неизбежно будете переписывать код, менять структуру БД и писать миграции. Кроме того, важно иметь хороших админов

    В качестве веб-сервера используйте nginx в чистом виде (а не как прокси над apache итп). Используйте redis - с его помощью можно снять нагрузку с mysql во многих случаях. Изучайти инструменты, которыми пользуетесь. Особенности БД, индексы, типы данных. Расширяйте набор инструментов. Есть специфичные СУБД типа cassandra. Что касается хранения файлов - старайтесь избегать хранения более 2000-3000 тысяч файлов в одном каталоге. Разбивайте на подкаталоги. Это пожалуй все, что я могу сформулировать. Остальное сами поймете на практике
    Ответ написан
    1 комментарий