• CMS на базе Yii2?

    еще есть easyiicms.com но автор что-то давно ничего не обновлял
    Ответ написан
    1 комментарий
  • Как правильно разработать CRM-систему с нуля с архитектурной точки зрения?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1) На сколько верным было решением использовать node.js и mongo?

    Вопрос во многом холиварный. CRM это по определению много-много реляционных данных. Хранить это в любом nosql - я лично считаю очень плохой идеей. Особенно когда через полгодика пойдут change request`ы и выяснится что вещи которые в реляционке делаются за пару минут в nosql могут потребовать изменения архитектуры хранения и занять человеко-недели.

    3) Сайтов у компании - масса, большая часть которых - лэндинги на чистых html с php-скриптом на почту. Все заказы ссылаются на единый gmail-ящик. Можно ли грабить эти данные из ящика, чтобы отправлять их в облако?

    Можно. Но с учетом того что доставка email вообще говоря не гарантирована - завязывать один из ключевых бизнес процессов на это выглядит мягко говоря странно. По хорошему - сделать в вашей CRM, API наружу для формирования заказов и переписать все сайты для работы с ним.
    * Странно что Ваш программист не может ответить на этот вопрос с закрытыми глазами

    4) Какие существуют удобные облачные сервисы, которые предоставляют API для node.js?

    Я рискну предположить что ЛПР где то услышал про облака и ему понравилось. На полном серьезе отдавать весь бизнес контент во внешний сервис - это надо или полным идеалистом быть, или просто не понимать о чем речь идет. Только свои железные сервера, только физическое резервирование.

    5) Какова примерная стоимость подобного проекта в $ ?

    Смотря где вы находитесь, насколько легально все это оформляете
    В Мск приличного разработчика сейчас можно найти за 100-120 т.р. net, в регионах на 40-60 net (от региона зависит).
    Сколько их нужно - без ТЗ сказать нереально, но думаю что оценка снизу это 3-4 разработчика
    +тимлид 100% +project manager 100% +аналитик на старте +дизайнер по желанию +devops на аутсорсе итд

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

    @GeraldIstar
    Frontend
    Не могу ответить на все вопросы, но на мой взгляд если используете python - берите django. Он более предназначен для крупных проектов.
    Node.js - более ориентирован на микросервисную архитектуру. Если умеете ее готовить - то ради бога, но целиком на ноде делать думаю не стоит. Монгу стоит использовать только в случае если вы действительно понимаете отличия РСУБД от mongo.
    3) Думаю это не проблема.
    4) API для облачных серверов - а там какая разница, что за язык будет? Разве что наличие уже подготовленной либы.
    5) Больше 1 миллиона точно.
    Ответ написан
    1 комментарий
  • Как разобраться с конструкторами?

    1) Box catBox;   // объявили переменную с типом Box и именем catBox (просто объявили, в ней ничего нет)
    2) new Box();     // создали новый объект типа Box (и бросили)
    3) catBox = new Box();    // создали новый объект типа Box и сказали, что с ним можно пообщаться используя 3) переменную catBox
    4) Box catBox = new Box(); // объявили переменную и сразу с ней связали объект
    Ответ написан
    Комментировать
  • Как поменять имя приложения и модель на русский в админке Django?

    zigen
    @zigen
    1. In apps.py:

    from django.apps import AppConfig
    
    class FacesetConfig(AppConfig):
        name = 'faceset'
        verbose_name = "Что-то твое на русском на родном"


    2. models.py

    class Timetables(models.Model):
        name = models.CharField(u'time', max_length=30)
    
        class Meta:
            verbose_name = 'Что-то твое на русском на родном'
            verbose_name_plural = 'Что-то твое на русском на родном'
    
        def __str__(self):
            return self.name
    Ответ написан
    2 комментария
  • Как обуздать Django messages?

    winordie
    @winordie
    Лучшая документация -- исходники
    Давайте посмотрим как работает framework messages.

    https://github.com/django/django/blob/master/djang...
    def messages(request):
        return {
            'messages': get_messages(request),
            'DEFAULT_MESSAGE_LEVELS': DEFAULT_LEVELS,
        }
    ...
    def get_messages(request):
        if hasattr(request, '_messages'):
            return request._messages
        else:
            return []

    Так messages попадают на страницу. Т.е. они берутся из request._messages. Как же они туда попадают?

    https://github.com/django/django/blob/master/djang...
    class MessageMiddleware(MiddlewareMixin):
        def process_request(self, request):
            request._messages = default_storage(request)
    ...
    def default_storage(request):
        return import_string(settings.MESSAGE_STORAGE)(request)
    ...
    MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'

    Значит в request._messages у нас лежит FallbackStorage(request)

    Перейдем к нашему коду
    messages.error(request, 'Ваш диапазон дат занят для данного объекта.')

    Что тут происходит? Посмотрим:
    https://github.com/django/django/blob/master/djang...
    def error(request, message, extra_tags='', fail_silently=False):
        add_message(request, constants.ERROR, message, extra_tags=extra_tags,
                    fail_silently=fail_silently)
    ...
    def add_message(request, level, message, extra_tags='', fail_silently=False):
        if not isinstance(request, HttpRequest):
            raise TypeError("add_message() argument must be an HttpRequest object, "
                            "not '%s'." % request.__class__.__name__)
        if hasattr(request, '_messages'):
            return request._messages.add(level, message, extra_tags)  # *** THIS ***
        if not fail_silently:
            raise MessageFailure('You cannot add messages without installing '
                        'django.contrib.messages.middleware.MessageMiddleware')

    Ага, вызывается метод add знакомого нам объекта FallbackStorage.
    Ему передается в качестве параметров:
    - level = constants.ERROR = 40
    - message = 'Ваш диапазон дат занят для данного объекта.'
    - extra_tags = ''

    Посмотрим на этот метод
    https://github.com/django/django/blob/master/djang...
    def add(self, level, message, extra_tags=''):
            if not message:
                return
            level = int(level)
            if level < self.level:
                return
            # Add the message.
            self.added_new = True
            message = Message(level, message, extra_tags=extra_tags)
            self._queued_messages.append(message)
    ...
    def _get_level(self):
            if not hasattr(self, '_level'):
                self._level = getattr(settings, 'MESSAGE_LEVEL', constants.INFO)
            return self._level

    Из этого кода можно сделать вывод что сообщение попадает в очередь сообщений если его уровень более или равен тому который задан в settings.MESSAGE_LEVEL (по умолчанию = contants.INFO = 20)

    Таким образом чтобы добавлялись только наши сообщения необходимо:
    1) в settings.py установить
    # settings.py
    ...
    MY_SUPER_ERROR = 80
    MESSAGE_LEVEL = MY_SUPER_ERROR
    ...

    2) Во вью писать
    if not available_cars:
            carstoshow = None
            messages.add_message(request, settings.MY_SUPER_ERROR, 'Ваш диапазон дат занят для данного объекта.')
            return redirect('car_detail', pk=car_used_id)
    Ответ написан
    1 комментарий
  • Как реализовать загрузку файлов на сервер в Django?

    zigen
    @zigen
    From docs:

    # In forms.py...
    from django import forms
    
    class UploadFileForm(forms.Form):
        title = forms.CharField(max_length=50)
        file = forms.FileField()


    Обрабатываем форму:

    from django.http import HttpResponseRedirect
    from django.shortcuts import render
    from .forms import UploadFileForm
    
    def upload_file(request):
        if request.method == 'POST':
            form = UploadFileForm(request.POST, request.FILES)
            if form.is_valid():
                form.save()
                return HttpResponseRedirect('/success/url/')
           return render(request, 'upload.html', {'form': form})
        else:
            form = UploadFileForm()
        return render(request, 'upload.html', {'form': form})
    Ответ написан
    2 комментария
  • Какую админку выбрать для Django?

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

    Конкретно какую - на этот вопрос ответа у меня нет по причине, созвучной вашей.

    Но, посмотрите, может эта информация поможет каким-либо образом:
    1. Здесь можно посмотреть описание и сравнение Админок.
    2. Гринфилды (авторы небезызвестной Two Scoops...) среди более популярных отмечают django-grappelli, django-suit и django-admin-bootstrapped.

    Чем смог, как говорится...
    Ответ написан
    4 комментария
  • Django, регистрация пользователя. Как реализовать?

    gordon_shamway
    @gordon_shamway
    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', 'first_name', 'email')
    
        def clean_password2(self):
            cd = self.cleaned_data
            if cd['password'] != cd['password2']:
                raise forms.ValidationError('Passwords don\'t match.')
            return cd['password2']

    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()
                profile = Profile.objects.create(user=new_user)
               
                return redirect('/account/login/')
        else:
            user_form = UserRegistrationForm()
        return render(request, 'account/register.html', {'user_form': user_form})

    class Profile(models.Model):
        user = models.OneToOneField(settings.AUTH_USER_MODEL)
        position_lat = models.DecimalField(decimal_places=8, max_digits=10, verbose_name="Широта")
        position_long = models.DecimalField(decimal_places=8, max_digits=10, verbose_name="Довгота")
        def __str__(self):
            return 'Profile for user {}'.format(self.user.username)
    Ответ написан
    Комментировать
  • Чем производить контроль траффика на Linux-шлюзе?

    insiki
    @insiki
    broken pipe
    Squid.
    Ответ написан
    Комментировать
  • Зачем использовать pandas и numpy для анализа данных?

    @asd111
    Python используется потому что его можно потом встроить в рабочее приложение. Так делает гугл, яндекс и др.
    Numpy и т.п. библиотеки написаны на С поэтому они не такие медленные как кажется.
    Там где не хватает скорости python библиотек написанных на С, используется С++ а не SQL.
    SQL подходит для некоторых задач, но нарисовать график с помощью SQL нельзя, а с помощью тех же python библиотек возможно. В анализе данных часто строят графики, считают векторные и т.п. произведения, на SQL такое писать неудобно.
    Если не используется SQL или python, то используют обычно wolfram mathematica или mathcad и т.п. математические программы где удобно считать матрицы, векторы, производные и удобно строить графики.
    С помощью python пишут софт, в котором используется результат анализа данных, поэтому и саму обработку данных пишут на python(или на С++).
    Для python есть большие machine learning библиотеки наподобие google tensor flow https://www.tensorflow.org/ что опять же говорит о том, что данный язык является стандартом для написания прикладных приложений, связанных с machine learning, так же как SQL является стандартом для работы с БД.
    Ответ написан
    2 комментария
  • Windows forms, только учусь?

    EreminD
    @EreminD
    Кое-что умею
    В данном случае, самое простое - это вот так:
    private void button1_Click(object sender, EventArgs e)
            {
                conpoezdb.Open();
                SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
                SDA.SelectCommand.ExecuteNonQuery();
                conpoezdb.Close();
                MessageBox.Show("saved");
                updateView();
            }
    
    private void button4_Click(object sender, EventArgs e)
            {
                updateView();
            }
    
    private void updateView()
            {
                conpoezdb.Open();
                SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
                DataTable data = new DataTable();
                SDA.Fill(data);
                dataGridView1.DataSource = data;
                conpoezdb.Close();
            }


    В общем, логику обновления datagridview выносим в отдельный метод и дергаем его по нажатию на view и/или по нажатию на save

    UPD: ну это при условии, что вам нужна кнопка view
    UPD1: вот так вот, если без кнопуи view
    private void button1_Click(object sender, EventArgs e)
            {
                conpoezdb.Open();
    
                //пишем в бд
                SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
                SDA.SelectCommand.ExecuteNonQuery();
    
                 //запрашиваем по новой
                SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
                conpoezdb.Close();
    
                DataTable data = new DataTable();
                SDA.Fill(data);
                dataGridView1.DataSource = data;
    
                MessageBox.Show("saved");
            }
    Ответ написан
    Комментировать
  • С помощью чего реализовать календарную ленту в Qt?

    @tugo
    1. Найти уже готовое, например https://www.kdab.com/kd-chart/
    2. Встроить QWebView, в нем выполнять JQuery код, реализующий вашу диаграмму. Гуглите "gantt chart jquery"
    3. Сделать самому. Разрабатываемый класс будет наследником QWidget и состоять из других виджетов (QLabel, QCombobox и т.д.). Настраиваете размещение этих виджетов, их внешний вид (у стандартных виджетов можно сильно менять внеший вид - мама не узнает) и поведение.
    Ответ написан
    Комментировать
  • Как получить количество продуктов из foreign key django?

    @deliro
    vendor.product_set.count()

    Когда ты создаёшь FK(Vendor) для модели Product, Django создаёт обратную связь (менеджер) для модели Vendor, имя по-умолчанию - имямодели_set. Изменяется переопределением related_name. Например:
    class Product(models.Model):
        vendor = models.ForeignKey(Vendor, related_name='products')

    При таком коде ты сможешь обращаться к продуктам так:
    some_vendor.products.all()
    Раз это менеджер, для него доступны все те же действия, что и для стандартного (objects):
    some_vendor.products.filter(key=value)
    some_vendor.products.create(your=params)  # Создаст продукт с уже заполненым полем vendor=some_vendor


    Следует отметить, что если у модели два FK на одну модель, то related_name переопределить придётся, иначе появляется двусмысленность:
    class Message(Model):
        sender = ForeignKey(User)
        recipient = ForeignKey(User)
        text = TextField()

    При таком коде, если ты хочешь получить, например, сообщения, которые отправил/получил user, совершенно неясно, что нужно писать, поэтому нужно либо отключить обратную связь (related_name='+'), либо предоставить её:
    class Message(Model):
        sender = ForeignKey(User, related_name='sent_messages')
        recipient = ForeignKey(User, related_name='received_messages')
        text = TextField()
    Ответ написан
    4 комментария
  • Как зарабатывают разработчики на бесплатных framework`ах?

    Denormalization
    @Denormalization
    Взять тот же Laravel:
    - Как минимум 3 сопутсвующих ПЛАТНЫХ проекта (forge, spark, envoyer).
    - Конференции с нехилым ценником.
    - Консультации
    - Не уверен, но возможно laracasts что-то отстегивает.

    И так же у многих крупных OpenSource проектов. Заработок идет на enterprise решениях на основе их проекта. (Та же платная поддержка).

    Некоторые (на вскидку не вспомню) OpenSource проекты получают финансированние от крупных организаций (Google, Yahoo, Microsoft, IBM).
    Ответ написан
    Комментировать
  • На чем писать кроссплатформенное GUI приложение?

    aparusov
    @aparusov
    Разработчик ПО, предприниматель
    Да, C++ на порядок сложнее по сравнению Java и С#, хотя Qt многое упрощает.

    Для кроссплатформенных офисных приложений хороша Java, - GUI на JavaFX или Swing, но не SWT (в нем много косяков, которые отнимают много времени). Если лучше знаешь C#, то на нем (язык посовременнее, фреймворк попроще будет) и сразу в MonoDevelop (так-как нужна кроссплатформенность).

    С серверной частью (если трехзвенка) важно определиться на чем она должна работать (в какой ОС). Если тоже кроссплатформенная, то лучше все на java делать и разобраться с серверными технологиями Java: Spring или Servlet-контейнер или даже сервер Java EE. Использовать ORM (Hibernate, например). Но с этим стеком Java придется повозиться, - порог вхождения высокий, зато потом открываются богатые возможности (независимые от ОС! ).
    Ответ написан
    Комментировать
  • Как вывести новости на страницу используя Django Template?

    По итогам обсуждения в комментариях к вопросу дать содержательный ответ не представляется возможным. Варианты:
    1) Займитесь Python и Django, разберитесь, как это всё работает.
    2) Найдите специалиста, который вам это сделает.
    Ответ написан
    Комментировать
  • На чем писать кроссплатформенное GUI приложение?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Для C# есть mono - свободный вариант .NET Framework (не то, чтобы во всем соответствовал ему, но работать можно). Работает, соответственно, и на Linux и на MacOS и на Windows. В местной IDE (MonoDevelop) можно создавать GUI в стиле drag&drop, как в старые времена на уроках информатики....

    От себя хочу добавить мысль о такой штуке как Vala. Если вы не слышали, это такой язык (я бы сказал смесь C-C#-Javascript), есть сравнение c C# для быстрого перехода на нее, удобная работа с GTK+ - окошки, кнопочки - все, что нужно делается просто и быстро, и, чтобы совсем не горевать, все это транслируется в чистый си. Соответственно собирается под любую платформу, где будет работать GTK+.
    Ответ написан
    2 комментария
  • Как правильно хранить настройки в django проекте?

    sim3x
    @sim3x
    разнести настройки "по категориям"
    Никогда такой надобности не было

    settings1.py
    foo='bar'

    settings.py
    from settings1.py import *

    зависимости от environment, например, db.py разный для prod\dev\test


    myprog
    ├── manage.py
    └── myprog
        ├── __init__.py
        ├── settings
        │   ├── __init__.py
        │   ├── global.py
        │   └── settings_test.py
        ├── urls.py
        └── wsgi.py


    __init__.py
    import os
    
    if os.environ['test']:
        from settings_test.py import *


    global.py/main.py/...
    # common settings for all env types

    settings_test.py
    from global.py import *
    
    foo='buzz'
    Ответ написан
    Комментировать
  • Как уйти с распутья технологий?

    @0x131315
    Стратегию уже подсказали: найти любую работу, чтобы кушать, и тем самым выиграть время на изучение чего-то, что поможет зарабатывать больше, и тем самым выиграть еще больше времени, и в конце концов изучить то, благодаря чему будешь работать не на зарплату, а на удовлетворение.

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

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

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

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

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

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

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

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

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

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

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

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

    С третьим - придешь, когда поймешь, что тебе это нужно. Из-под палки не учатся.

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

    С первым все просто: не можешь что-то решить - отложи, и спустись на ступеньку ниже по шкале сложности.
    Есть такой психологический феномен: от решенных задач ты получаешь удовлетворение, силы и мотивацию двигаться вперед, от нерешенных - негатив, апатию, потерю воли и мотивации.
    Причем мозг устроен так, что запоминается лишь негатив. Поэтому крайне важно решать задачи, и не допускать незавершенных задач. Отложи, но не забрасывай.
    Нерешенная задача - это как психологический запой, нечто вроде депрессии: одна нерешенная задача тянет за собой другую нерешенную задачу, и так быстро уходишь на дно, теряя мотивацию и веру в себя. Замкнутый круг. Ты находишься именно в нем.

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

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

    Сложность задачи не особо влияет на мотивацию, а вот факт решения/нерешения - влияет сильно. Не решил - значит не осилил, не осилил - значит не достоин, не достоин - значит иди ко дну и не рыпайся. Это как импотенция: импотент - значит не мужик, не мужик - значит никто, ничего не достоин и об тебя можно ноги вытирать. Подсознание портит всю малину, так что не следует давать ему шанса - лучше решить задачу попроще, чем не решить по сложнее.
    Ответ написан
    7 комментариев