Задать вопрос
  • Как уйти с распутья технологий?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Ну так передавайте во вьюхах данные в контекст, и в темплейтах эти данные собственно выводите.

    В views.py передаете в контекст какие-то данные:
    from django.http import Http404
    from django.shortcuts import render
    from models import КакаяТоМодель
    
    def my_view(request, какой_то_id):
        try:
            my_obj = КакаяТоМодель.objects.get(pk=какой_то_id)
        except КакаяТоМодель.DoesNotExist:
            raise Http404(u"Объект КакаяТоМодель с id={id} отсутствует в базе".format(id=какой_то_id))
    
        какая_то_переменная = ФункцияДляПолучениЧегоТоИзБазы()
        return render(request, 'какой_то_темплейт.html', {'my_obj': my_obj, 'my_var': какая_то_переменная})


    а в темплейте получаете то что передали в контекст
    ...
    {{ my_obj.какое_то_поле }}
    {{ my_obj.какое_то_поле }}
    ....
    {{ my_var }}
    ....


    А вообще вот это:
    class BannerView(View):
    model = Banner
    template_name = 'home.html'

    def get_queryset(self):
    return Banner.objects.all()


    нужно заменить на это:
    class BannerView(ListView):
        model = Banner
        template_name = 'home.html'

    тогда в темплейте список всех ваших объектов передастся в виде object_list, по которым вы можете пробежаться как-то так:
    ....
    {% for obj in object_list %}
         {{ obj.какое_то поле }}
    {% endfor %}
    ....


    тут
    class HomePage(TemplateView):
    template_name = 'home.html'

    контекст можно передать так:

    class HomePage(TemplateView):
        template_name = 'home.html'
    
    def get_context_data(self, *args, **kwargs):
        context = super(HomePage, self).get_context_data(*args, **kwargs)
        context['имя_какой_то_переменной_для_темплейта'] = ФункцияДляПолученияКакихТоДанных()
        return context


    тогда в темплейте она будет доступна как:

    ....
    {{ имя_какой_то_переменной_для_темплейта }}
    ....


    А вообще - пройдите хотя бы какой-нибудь туториал по Django где это подробно объясняется...
    Ответ написан
  • Удаленная база Mysql и Android приложение как поступить?

    petermzg
    @petermzg
    Самый лучший программист
    1. Удаленный сервер должен быть доступен из интернета. Так что база должна быть или на хостинге или у вас за NAT с белым IP.
    2. Пишете web сервер и поднимаете на сервере (на хостинге за вас уже подняли) уж на чем нравится (asp.net mvc или php, или python)
    2.1. Сервер взаимодействует с вашей Mysql базой
    2.2. Можно из андройд приложения делать http запросы к серверу и получать ответ на выбор (xml, json, text, набор байт)

    Мне вот нравиться протокол (json-rpc)
    Ответ написан
    Комментировать
  • Перехожу с RoR на Python (Django) нужна помощь?

    un1t
    @un1t
    1) обычно мне двух версий питона хватает которые есть в убунте, но можно еще юзать deadsnakes
    Для разных версий пакетов virtualenv.
    2) лучше 3
    3) у джанги даже pre-alpha версии довольно стабильные, а релиз уже сразу смело можно юзать.
    4) хрен его знает
    5) шаблоизатор встроенный либо jinja2. Так обычно pillow, djangorestframework, django-mptt, pytest, pytest-django, django-debug-toolbar, pytils, django-cleanup, sorl-thumbnail
    Ответ написан
    Комментировать
  • Что такое файл models в проекте django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Я верно понимаю, что файл models.py - это файл, где мы создаём бд для нашего проекта?

    Модель - сущность из конкретной задачи над которой вы работаете. Будь то пользователь, статья, продукт или еще что со всеми их взаимоотношениями, относящимися к данному приложению.
    В Django модели принято размещать в models.py
    Сами таблицы в БД создает Django автоматически. Примерное представление вы сможете получить если почитаете о миграциях https://docs.djangoproject.com/en/1.9/topics/migra...

    Если да, то наверняка можно создавать модель в SQLite studio и затем использовать её в проекте?

    Можете. Только сильно осложните себе жизнь.
    Работа с моделями абстрагирует вас в какой-то степени от конкретной их реализации в конкретной ДБ, и перекладывает львиную долю работы на саму систему Django. Также не забудьте что Django создает также служебные таблицы необходимые для работы - для хранения сессий, типов моделей, пользователей и групп, и пр.

    Тогда код в этом файле должен сгенерироваться по созданному файлу из SQLite studio?

    Можно сделать и так. Командой manage.py inspectdb сгенерить модели из существующей базы, и попробовать их завести в проекте на Django. Но опять таки - вы сильно осложните себе жизнь. Обычно это требуется, когда необходимо связать Django с уже существующими таблицами в сторонней БД для работы с ними как с моделями. Обычно эти модели прописывают как модели с флагом managed=False, дабы Django не влияла на структуру уже существующей БД.
    Ответ написан
    3 комментария
  • Как запустить django test на sqlite?

    @marazmiki
    Укротитель питонов
    Сделайте отдельный конфиг для тестов:
    # project.settings_test
    from .settings import *
    
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:'
    }
    И запускайте тесты с явным указанием тестового конфига:
    ./manage.py test --settings=project.settings_test --failfast
    Как Вы потом поймёте, БД — это не единственное, что желательно переопределить для тестов
    Ответ написан
    Комментировать
  • В чем моя причина провала тестового задания Яндекса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну давайте я покритикую:

    возьмем файлик

    1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:

    class Travelsort {
        constructor() {}
        sortTickets(tickets) {}
    }


    2) вы не умеете пользоваться исключениями.
    if (!Array.isArray(cards)) {
        throw new ValueError('Wrong input');
    }


    3) использование let там где должен использоваться const

    4) в принципе использование переменных там где их быть не должно

    5) вы зачем-то реализовали свою функцию сортировки, я не увидел в требованиях отсутствия возможности использовать старый добрый Array.prototype.sort

    6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.

    7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.

    8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.

    Далее... берем следующий файлик

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

    2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.

    Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.

    3) очень много дублирования.

    4) очень плохо с protected variations.

    Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.
    Ответ написан
    17 комментариев
  • Как откатить makemigrations в django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Просто удалите файл данной миграции если она еще не применена. Исправьте и выполните makemigrations еще раз.
    По manage.py show migrations можно глянуть примененные и непримененные миграции.
    Указав номер, можно откатиться на предыдущую миграцию
    manage.py migrate <модель> <номер миграции>
    Ответ написан
    Комментировать
  • Где нужно писать миксины, общие для нескольких приложений?

    @deliro
    Я храню в core/mixins.py
    Ответ написан
    Комментировать
  • Где нужно писать миксины, общие для нескольких приложений?

    sim3x
    @sim3x
    строгого определения нет
    core/views.py
    common/views.py
    progectname/common_views.py
    Ответ написан
    Комментировать
  • Где находить open source проект Java для новичка?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Нигде.
    Open Source не для новичков.
    Все эти хипстерские отзывы в стиле - пилите проекты на гитхаб и работодатели сами за вас хвататься будут - полный бред.
    Не тратьте время. Ищите стразу стажировку у работодателей.
    Ответ написан
    1 комментарий
  • Как заполнить поле slug автоматически через форму?

    @FireGM
    У модели Advert переписать метод save.
    Я обычно пользуюсь библиотекой slugify
    Получается что-то вроде этого
    from slugify import slugify
    
    class Advert(models.Model):
        region = models.CharField(max_length=32)
        city = models.CharField(max_length=30)
        category = models.TextField()
        title = models.CharField(max_length=32)
        description = models.CharField(max_length=900)
        photo = models.ImageField(upload_to='')
        phone_number = models.CharField(max_length=11)
        date = models.DateTimeField(auto_now_add=True, null=True)
        slug = models.SlugField(unique=True, null=True, blank=True)
    
        def __str__(self):
            return self.title
        
        def save(self,  *args, **kwargs):
            self.slug = slugify(self.title)
            return super(Advert, self).save(*args, **kwargs)
    Ответ написан
    Комментировать
  • Как заполнить поле slug автоматически через форму?

    un1t
    @un1t
    Ответ написан
    Комментировать
  • Для решения каких задач нужен Django Rest Framework?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Опишу одно из применений REST-фреймворка. Вот написали вы корпоративное приложение. А потом захотели чтобы и из мобильных приложений функциональность БД вашего приложения была доступна в софте на java например. Вот для "скрещивания ужа с ежом" - то есть для организации работы мобильного приложения на java с вашей базой на Django, наиболее удобным будет использование REST-интерфейса.
    Через REST-интерфейс будут доступны все операции с вашими моделями - авторизация, выборки, редактирование данных, и прочее, с использованием наименьшего количества телодвижений.
    Ответ написан
    Комментировать
  • Как в django CVB ListView вывести данные из другой модели?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Контекст в шаблон передаете?
    Так нужный контекст уже и так в шаблон улетает:

    {% for obj in objects_list %}
       {% for img in obj.modela_set.all %}
          {{ img }}
       {% endfor %}
    {% endfor %}


    Если это нужно делать именно во вьюхе - получайте список объектов в get_queryset(), и там добавляйте какие угодно поля.
    Ответ написан
    Комментировать
  • Как вывести на экран данные из базы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Если вам это необходимо для отладки, то лучше запустить django-shell командой python manage.py shell из каталога проекта и выполнять любые запросы в ней. Никакой лишний вывод вас беспокоить не будет и "die()" не понадобится.

    Чтобы получить список всех атрибутов класса можно использовать встроенную функцию dir(). Чтобы получить значения атрибутов объекта, используйте встроенную функцию vars().

    from django.contrib.auth.models import User
    user = User.objects.first()
    vars(user)


    {'_password': None,
     '_state': <django.db.models.base.ModelState at 0x7871fd0>,
     'date_joined': datetime.datetime(2013, 12, 12, 6, 6, 58, tzinfo=<UTC>),
     'email': 'user@domain.com',
     'first_name': 'Сергей',
     'id': 1,
     'is_active': True,
     'is_staff': True,
     'is_superuser': True,
     'last_login': datetime.datetime(2016, 3, 31, 8, 1, 59, 780493, tzinfo=<UTC>),
     'last_name': 'Горностаев',
     'password': '<secret>',
     'username': 'gornostaev'}
    Ответ написан
    1 комментарий
  • Стоит ли сейчас учить C# и .NET?

    @766dt
    Мой совет такой - не разбрасываться по языкам, а выучить один до такой степени, когда сам язык становиться не так уж и важен, а новым языком можно начать пользоваться, прочитав пару тонких книжек. Python для этой цели отлично подходит, на мой взгляд.
    Ответ написан
    2 комментария
  • Что будет перспективней в данном случае?

    ncix
    @ncix
    Предприниматель
    Есть ли смысл менять Python на php работать с ним?
    Вопрос не совсем корректный - вы не меняете, а дополняете свой "стек" новым языком.
    Двигайте туда где интересно. И поищите работу в интернете, если локально во Владе с этим напряг. Английский прокачайте немного.
    Мой вам совет - не бойтесь новых и абсолютно вам неизвестных языков, фреймворков и технологий. После 2-3 языков остальные пойдут уже очень легко, и будут выглядеть вариациями одних и тех же общих принципов. То же самое и с фреймворками.
    Я за 12 лет в программировании овладел профессионально VB, Delphi и SQL, потом за пару лет С++ и Qt, затем за 3 месяца Java/ADT (Android), сейчас вот без проблем развиваю в себе PHP и JS, посматриваю с любопытством на AngularJS. Кроме того параллельно занимаюсь контроллерами - начиная от Arduino с его любительским фремворком и до голого С и даже ассемблера.
    И чем больше охватываю технологий тем проще дальше развиваться.
    Ответ написан
    5 комментариев
  • Как устанавливать модули Django на VPS?

    @deliro
    Этот твой хостинг просит 425 рублей в месяц за 400 мгц ЦП, 256 оперативы и 5гб HDD (не SSD) ещё и нет доступа к системе? Вали с него :)
    Ответ написан
    6 комментариев
  • Как эффективно изучать angular js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) продолжаем учить "ванильный JS", паралельно почитывая про babel, es2015 и т.д.
    2) когда мы ищем информацию в интернетах - учитываем что сейчас актуальная версия ангуляра - 1.5, второй ангуляр в бете, так что 90% информации устарело. Я даже больше скажу - даже официальная документация устарела, обновленный вариант сможете найти на github проекта в пул реквестах.
    3) https://github.com/gdi2290/ngExam - рекомендую этот список тем того, что вам надо знать про ангуляр (ну и не только).
    4) https://github.com/AngularClass/NG6-todomvc-starter - тут я попытался собрать полезные статьи на тему что надо учить и как + пример маленького современного приложения. Так же в ишусах к NG6-starter обсуждается как лучше его готовить.
    5) https://habrahabr.ru/post/277087/ - про angular 1.5 и то как я готовлю ангуляр.

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

    Ну и да - обязательно прочитать документацию к ангуляру. Возможно не всю сразу но базовые понятия что бы раскрыть. И разобраться с тем что значит "декларативное представление".
    Ответ написан
    4 комментария