Задать вопрос
  • Что творится на рынке труда сегодня?

    paran0id
    @paran0id
    Умный, но ленивый
    Эйчары в линкедине заметно активизировались в последние две недели.
    Ответ написан
    Комментировать
  • Насколько плохо все для начинающих программистов на рынке?

    @Araya
    Правдива
    Ответ написан
    Комментировать
  • Rust - ещё один убийца c/c++?

    @deliro
    Rust лучше С/С++ во многих (наверное, почти всех) аспектах. Но в сравнении с С++ и тем более Си он слишком молод. Непопулярность языка ещё обуславливается тем, что рынок полностью забит Си и плюсами — миллионы строк кода и библиотек уже написаны на С/С++. Кто их будет переписывать?

    Так же, не было никакой значимой маркетинговой кампании по популяризации Rust. Я случайно услышал об этом языке на Moscow Python Conf++, до этого я думал, что когда говорят про Rust, имеют ввиду игру.

    Плюс, Rust — язык очень нишевый, как и С/С++. И эта ниша — системное или околосистемное программирование. Операционные системы, драйвера, высокопроизводительные системы, игровые (и любые другие) движки, embed — вот удел раста. И в этих сферах не принято, как, например, в JS'е менять фреймворки и версии языка раз в неделю. Сообщество там крайне консервативное.

    К тому же, у Rust очень высокий порог входа. Вот прям очень. Если в контексте C++ постоянно шутят про книги "выучить С++ за 24 часа", то в контексте Rust можно шутить над книгами "выучить Rust за неделю". У их прекрасной парадигмы zero-cost abstractions на самом деле есть cost — сложность понимания. За отсутствие сборщика мусора и необходимости чистить за собой память придётся заплатить многими часами войны с компилятором, а именно — с borrow checker'ом. И это только одна сложность

    Когда начинаешь понимать Rust, всё идёт прям отлично. Но до этого момента придётся пройти ад и Израиль, который С/С++'еры не хотят проходить. Потому что они уже его прошли, когда учили С/С++ и там было намного хуже.

    Я бы очень хотел, чтобы Rust заменил С/С++, он объективно лучше. Но вряд ли это произойдёт в ближайшие лет 10
    Ответ написан
    6 комментариев
  • Что влияет на устройство разработчиком в США больше: само наличие диплома бакалавра или престиж ВУЗа?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Одинаково не влияет.
    Диплом поможет облегчить получение визы (тут главное чтобы он просто признавался за рубежом, погуглите), а на устройство разработчиком в сша влияют мозги, навыки и опыт.
    Ответ написан
    3 комментария
  • Безболезненная смена ЯП. Возможно ли?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    При смене стека все-равно будет просадка. Из моей практики это 1 позиция - мидл падает до джуна, сениор до мидла или даже ниже. Если навыки и теоретическая база на высоком уровне то вернетесь на нужный уровень достаточно быстро, если нет - мои соболезнования.

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

    По гарантиям вам никто не скажет - мы не знаем что будет завтра и насколько вы готовы к изучению новых языков. Можем с тем же успехом подбросить монетку или погадать
    Ответ написан
    Комментировать
  • Как сделать так, чтоб с регистрацией нового пользователя создавался профиль(модель Profile)?

    @Realmixer
    Full stack Python (Django) web-developer
    Используй сигналы, Люк!
    from django.db.models.signals import post_save
    from django.dispatch import receiver
    
    @receiver(post_save, sender=User, created)
    def save_profile(sender, instance, **kwargs):
        # instance — это сохранённый экземпляр модели User
        # created — это флаг, указывающий был ли пользователь создан, или сохранён уже существующий
    Ответ написан
    Комментировать
  • Как сделать кликабельный текст в BAT файле?

    Jump
    @Jump
    Системный администратор со стажем.
    bat файл это консольный скрипт.
    В консоль выводит результаты работы - все заимодействие пользователя с консолью только через ввод текстовой информации.
    Кликабельный - это уже мышь, работа с графическим интерфейсом, которого у bat файла нет по определению.
    Ответ написан
    Комментировать
  • С чего начать погружение в IT?

    Stalker_RED
    @Stalker_RED
    Если хотите основы основ - читайте Таненбаума, у него довольно доступно расписана и архитектура компьютера, и основы сети, и т.д.
    Ответ написан
    Комментировать
  • С чего начать изучение программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    1) Какие основные сложности у меня могут возникнуть на пути изучения программирования как у "гуманитория"?

    Непонимание что такое программирование и что такое квалифицированный программист.
    Спутать HTML/CSS и программирование могут как раз те, кто еще ничего не знает.

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

    Это неправда. Подавляющее большинство программистов делают банальные штуки, результаты которых в основном не видны. И программисты часто результаты маркетологов и СЕО, как раз считают гораздо более видимыми.

    2) Очень востребованная и высокооплачиваемая профессия во всем мире и мне кажется, что так и будет еще много лет.

    Вы путаете востребованность профессии и квалификацию. Много платят тем, кто очень много умеет и продолжает постоянно учиться, а не просто рядовому программисту.
    Ответ написан
    3 комментария
  • Где и как хранить много ГБ изображений для сайта?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Ну, бесплатный сыр только в мышеловке, как говорится. Если у вас хороший проект с наметками на большое будущее то рекомендую сразу нацелиться на такие хранилища как Object Storage:
    • AWS S3
    • Azure Blob Storage
    • GCP Cloud Storage
    • Yandex Object Storage

    Со временем можно будет настроить различные Lifecycle Policy и перемещать изображения между Hot, Warm и Cold Storage с разной ценовой политикой;

    Кроме того стоит задуматься о CDN (если еще не используется). В них также можно сегодня использовать EDGE технологии с автоматическим ресайзом, наложением водных знаков и других фильтров
    Ответ написан
    3 комментария
  • Как изменить данные в уже существующей записи в БД?

    @msnyastar Автор вопроса
    Разобраться помог Сергей Горностаев, решение выглядит так:

    class UserSettingsViews(LoginRequiredMixin, View):
    
        """Отображение и наверное изменение пользовательских настроек оповещения """
    
        def post(self, request, pk):
    
            settings_exist = get_object_or_404(ObjectsOfSurveillance, user_id=pk)
    
            if request.method == 'POST':
                
                settings_form = ChangeSettingsForm(request.POST, instance=settings_exist)
    
                if settings_form.is_valid():
    
                    settings_form.save()
                    messages.success(request, 'Настройки успешно обновлены!')
    
            return render(request, 'main/user_settings_pg.html', {'settings_form': settings_form})
    
        def get(self, request):
    
            settings_exist = get_object_or_404(ObjectsOfSurveillance, user_id=request.user.id)
            settings_form = ChangeSettingsForm(instance=settings_exist)
    
            return render(request, 'main/user_settings_pg.html', {'settings_form': settings_form})
    Ответ написан
    1 комментарий
  • Куда идти, что делать, какой язык выбрать?

    php666
    @php666
    PHP-макака
    Мечтаю создать свой собственный проект
    Забудь, ты опоздал лет на 20, время одиночных проектов ушло в историю. Сейчас любые проекты делаются командами, у которых есть инвесторы и четкий бизнес-план.

    Когда я был студентом, в начале 2000-х, в интернете были веб-сайты, которые делали люди-одиночки и эти сайты были весьма популярны, это был восход одиночных проектов на хтмл4 и пхп4. Сейчас добиться с такими же трудозатратами хотя бы доли той аудитории нереально.

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

    Есть идея по создании социальной сети

    1. ты ее не сделаешь в одиночку
    2. если сделаешь, то не скоро и очень криво
    3. она не нужна никому, людей уже тошнит от соцсетей

    можете посоветовать, что делать
    перестать рассматривать эту сферу с инфантильной позиции, что ты какой-то уникальный человек, который сейчас выучится, придёт в профессию и перевернет мир, а работа твоя будет пестрить яркими красками.
    Нет.
    Реалии работы разработчика другие.
    Совсем.
    Тебя ожидает трекер с задачами, какой-нибудь проект с кучей кода (дай бог, что бы не древний как авно мамонта), в котором ты будешь копаться, пока не сломаешь мозги.
    И так несколько лет.
    Ответ написан
    Комментировать
  • Как работает websocket на низком уровне?

    Ответ на этот и многие другие вопросы в RFC 6455
    https://tools.ietf.org/html/rfc6455
    Ответ написан
    Комментировать
  • Что такое SOLID и как его можно использовать в веб-разработке?

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

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

    Один момент - не все принципы одинаково полезны и применимы в веб-разработке, но знать и понимать их все в любом случае на пользу.
    Ответ написан
    4 комментария
  • Вакансии C Junior developer?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    вообще такое бывает в 2020 году?

    Бывает летняя практика/internship, рекомендую начать с этого.
    Ответ написан
    Комментировать
  • Ошибка inconsistent use of tabs and spaces in indentation?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    - преобразовать имеющиеся табы в пробелы
    - не использовать табы при написании кода в дальнейшем
    - почитать про pep8
    Ответ написан
    3 комментария
  • Для чего нужен полиморфизм?

    bingo347
    @bingo347
    Crazy on performance...
    Полиморфизм бывает разный:
    Полиморфизм подтипов - этот тип как раз таки и подразумевают в контексте ООП. Суть в том, что сущность некоторого класса так же может представляться базовым классом или интерфейсом. Это позволяет переиспользовать код, отдавая в один и тот же метод/функцию сущности с разными классами, но с общим интерфейсом.
    Параметрический полиморфизм - используется уже не только в ООП, но и в других парадигмах. Опять таки полиморфная функция принимает аргумент разных типов, при этом сам тип так же передается как параметр функции, а следовательно функция может оперировать составными типами на основе переданного. Или например возвращать результат того же или производного типа, сохраняя тем самым тип для вызывающего кода. Чаще всего представлено дженериками, но могут быть и другие формы (например template в C++). Как правило не имеет смысла в языках с динамической типизацией. А еще часто сопровождается контрактами на получаемый тип (например типами высшего порядка или типажами), что позволяет с одной стороны ограничить возможные типы, а с другой - воспользоваться характеристиками типа обусловленными контрактом.
    ad-hoc полиморфизм - способность функции предоставить разную реализацию в зависимости от запрашиваемой сигнатуры. Чаще всего выражено перегрузкой функций/методов. Как правило не реализуем средствами языка с динамической типизацией, хотя может быть реализован в рантайме (например в js функция всегда принимает произвольное количество аргументов и может проанализировать их в рантайме с помощью arguments).

    В общем случае полиморфизм нужен для переиспользования кода. Соблюдения практик SOLID и DRY не возможно без полиморфизма. Например в языке Go отсутствие полиморфизма в любом виде приводит к загрязнению кодовой базы и большому количеству копипасты.

    И еще, из моего ответа, может сложится мнение, что полиморфизм не применим к языкам с динамической типизацией, например к Python. На самом деле это не так, в ЯП с динамической типизацией полиморфизм наоборот возведен в абсолют.

    UPD: Примеры:
    правда я не шибко хорошо знаю конкретно Python, поэтому абстрактно напишу псевдокод:

    Полиморфизм подтипов, как уже говорил, это про ООП. Допустим у меня задача реализовать класс, который читает бинарные данные, проверяет, что они валидный utf-8 и выдает прочитанное как строку. Откуда он читает их? Да мне все равно, это не относятся к моей задаче. Конкретную реализацию я приму в аргументах, а уж откуда она будет читать, из файла или из сети - мне все равно. Главное чтоб эта реализация умела читать байты.
    // ok мне нужно что-то, что умеет читать байты, опишу это интерфейсом
    interface IByteReader {
      readBytes(): BytesIterator;
    }
    
    // и мой метод:
    readAsString(reader: IByteReader): string {
      var iterator: BytesIterator = reader.readBytes();
      // ну и тут как то с ним работаю, трансформируя байты в строку
    }
    теперь вызывающий код может передать в мой метод инстанс любого класса, реализующего мой интерфейс, и мне теперь не нужно дублировать логику чтения строки для файла и для сети.
    Еще один яркий пример тут - функция len() в Python, которая принимает любой тип реализующий одноименный магический метод.

    Параметрический полиморфизм, это про дженерики. Напишем 2 функции, обе будут принимать на вход массив, одна из них будет возвращать начальный элемент, а другая конечный. Но массивы бывают для элементов разных типов. Без параметрического полиморфизма, нам бы пришлось писать реализацию для каждого нужного типа, но благодаря ему мы можем это сделать в обобщенном виде:
    // T - это параметр типа
    fitst<T>(arr: [T]): Option<T> {
      if(arr.has(0)) return Some(arr[0]);
      else return None;
    }
    
    // давайте предположим, что некоторые виды массивов у нас могут быть бесконечными
    // тогда нам понадобится контракт, что можно передавать массивы только с известным размером
    last<T>(arr: [T]): Option<T>
      where [T]: WithKnownSize
    {
      var length: size = get_length(arr);
      if(length == 0) return None;
      else return arr[length - 1];
    }


    ad-hoc полиморфизм, это про перегрузку функций, пусть мы хотим функцию print которая умеет печатать числа и строки:
    print(value: string) {
      stdout.write(value);
    }
    print(value: int) {
      stdout.write(value.to_string());
    }
    Ответ написан
  • Перспектива рынка веб разработки с появлением Webflow?

    DevMan
    @DevMan
    перспективы цветут и пахнут: сейчас практически всё мигрирует в веб.

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

    @Realmixer
    Full stack Python (Django) web-developer
    URLs:
    path('<path:categories>/', viewsCategoryDetailView.as_view(), name='category')

    Views:
    def get(self, request, *args, **kwargs):
        categories = kwargs.get('categories').strip('/')  # 'cat/subcat/sub-subcat'
        categories = categories.split('/') # ['cat', 'subcat', 'sub-subcat']
        ...
    Ответ написан
    Комментировать