• Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    alexyarik
    @alexyarik
    Битрикс разработчик
    В 34 года прошел собеседование и начал работать в веб студии, с тех пор успешно работаю. Было бы желание. Могу для вас посоветовать следующее. Набираетесь минимального опыта верстки и интеграции верстки в шаблон Битрикс, проходите Битрикс курсы и получаете пакет сертификатов, после этого идете работать в студию, набираетесь опыта. Большинство российских студий делают сайты на Битриксе. Для фриланса изучаете все тоже самое для Wordpress. Далее начинаете развиваться по карте развития разработчика https://github.com/zualex/devmap, т.е в сторону бекэнда. Учите основательно PHP все это время, и только потом когда крепко встанете на ноги лезьте в фреймворки.
    Ответ написан
    3 комментария
  • Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    @Dementor
    программист, архитектор, аналитик
    Недавно попробовал доработать для себя небольшой проект на Wordpress и понял...

    Вы человек-парадокс, обычно как раз после Wordpress люди считают PHP фиговым языком, а PHP-программистов говнокодерами. А еще ваша мотивация не очень понятна. Просто взять и уходить с хлебного 1С в никуда немного странно. Я бы посоветовал немного покопаться в себе и попытаться понять, что именно вам в программировании на платформе 1С не устраивает. Может вы просто работаете не над интересными для вас проектами и вам достаточно было просто сменить место работы?

    Не могу определить для себя последовательность шагов.

    Еще один плохой звоночек. "Высоконагруженные системы" - это вообще ни о чем. ERP с тысячей пользователей в базе - это тоже высоконагруженная система.

    Последовательность шагов зависит от того, куда конкретно вы захотите пойти. При приеме на работу в ВК, вас будут гонять по одним вопросам, в Яндекс - по другим; если пойдете в студию на поддержку и кастомизацию различных CMS, то там вас общей теорией грузить не будут, так как им нужны работники по конкретному профилю, а не Fullstack-специалисты, которые обкатают пару месяцев за их счет "стажировку" и уйдут в другое место на бОльшие деньги.

    В первую очередь вам нужно изучить сам язык программирования, пока без фреймворков. Когда я только начинал свой путь в программировании, то попал на переход между PHP3 и PHP4, когда на слуху у всех были изменения глобальных переменных (в первую очередь $_get и $_post), из-за которых приходилось переписывать все проекты, единственным фреймворком был ZEND, а единственно CMSкой был PHP-Nuke. Не мне вам рассказывать, как с тех пор все изменилось, но язык и базовые библиотеки практически те же - их вам и стоит хорошо знать, не зависимо от дальнейшей судьбы. Конкретные новые библиотеки и фреймворки, которые вам нужно дополнительно выучить, что бы быть востребованными на рынке труда вам подскажут другие, так как я с PHP распрощался очень давно и ни разу не пожалел.

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

    Но не везде возьмут такого возрастного стажера...

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

    И опять таки, не порывайте так быстро с 1С - переходите на полставки и в свободное время займитесь обучением и проектами для гитхаба. С головы брать ничего не нужно - просто сёрфите по проектам и смотрите какая идея приглянется. Далее или клонируете репу или пилите проект по мотивам. Так и портфолио наберете для собеседования, и немного навыки отточите. В конце-концов, попробуйте пилить свои темы для Wordpress, раз он вас так сильно впечатлил - это не сложно и на этом тоже деньги зарабатывают.
    Ответ написан
    6 комментариев
  • Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Сдался вам этот веб ?
    Почему вы думаете что веб - это полноценное программирование, а программирование под 1С нет ?
    Имхо все просто решается набором используемых инструментов, думаю если изловчится, то и под 1С можно сделать continuous integration с юнит тестами :), но да оно того не стоит и 1С - это локальный рынок.

    Пройдет пару лет, и от веб вас также будет тошнить. Не найдете вы интересные, высоконагруженные проекты, а особенно сложные. Везде требуется примерно одно и тоже, склепать форму, вывести инфу, и т.п. всё тоже что и в 1С, только в веб.

    Самое неблагодарное занятие в веб - это верстка.

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

    Думаю в ближашее время развитие в области ИИ и вских нейронных сетей будет на пике. Поэтому лучше дерзать туда.
    Ответ написан
    4 комментария
  • Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    @GrimJack
    Скажем так, минимальная база это уверенное знание html5+css3+js (в том числе умение работать с jquery, ajax и распространенными библиотеками (слайдеры там всякие))+php (умение прогать под wp не ограничиваясь шаблонами)
    Но у меня любовь к вэбу отпала через 2года углубленной работы в вэбе (спасибо русскому фрилансу)
    Потом уже определитесь, хотите в большие проекты на фреймворках (laravel, yii2 и другие) или вам больше нравится творить чудеса на готовых cms

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

    Ах да, ИМХО
    Ответ написан
    3 комментария
  • Как в джанго обстоит с множественным наследованием моделей?

    У django есть абстрактные модели, в которых вы можете определить нужные поля и применить это к основной модели.

    Динамически создавать такие модели не получится. При каждом добавлении новой модели или полей к существующей модели нужно делать миграцию
    Ответ написан
    Комментировать
  • Как сильно востребовательны технологии microsoft наподобие Xamarin, ASP.NET на рынке труда?

    Вакансий в разы меньше. Но нужно понимать, что компании, кто пишет на java/.net cтабильней в силу объема, плюс задачи достаточно последовательные. Так что 5-10 вакансий на .net могут перекрывать, 40-50 вакансий на php/python/ruby.

    Так что если возьмешь место, можно там 3-5 лет стабильно работать.
    Ответ написан
    3 комментария
  • Что выбрать УТ 10 или 11?

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

    С точки зрения программиста: есть целый ряд принципиальных различий:
    1) УТ10 - это экранные формы, которые рисуются по аналогии с Visual Studio, т.е. на полотне экранной формы набрасываются в нужных местах укравляющие элементы и прописываются их обработчики событий; такие формы доступны только в режиме "толстого клиента". УТ11 - это управляемые формы, которые создаются по аналогии с DIV-версткой веб-страниц, т.е. основа любой формы это десятки групп, которые вложены друг в друга с указанием порядка группировок подчиненных элементов, размер и вид которых генерируется автоматически (можно влиять но не так абсолютно, как было в УТ10); такие формы доступны не только в версии для ПК, но и через браузер при наличии публикации базы на веб-сервере.
    2) Сильно изменилась система прав. В УТ10 - были роли-должности (продавец, кладовщик и так далее), а в УТ11 - море ролей-функций (право на чтение контактной информации, право на формирование отчетов и так далее) из которых тонко настраивается справочник профилей доступа и уже по назначению такого профиля элементу справочника пользователи у самого пользователя назначаются нужные роли.
    3) Изменилась стратегия проведения. В УТ10 обычно сначала делались проверки доступности остатков, а потом проводки (при чем некоторые проводки могли порождать в глубине общих модулей другие движения, о которых программист не задумывался - к примеру, так себя вели проводки по партиям), и при этом в каждом документе был свой "путь", а в УТ11 в каждом документе все причесали под единую гребенку и сначала делались проводки, а потом контроль "не ушли ли в минус".
    4) С точки зрения отчетов. В УТ10 множество отчетов на базе универсального отчета (который создан на основе объекта построитель отчета), а в УТ11 все отчеты на базе компоновки данных.
    5) Значения по умолчанию. В УТ10 были настройки пользователя, которые мог себе настроить пользователь или админ, и из которого значения по умолчанию можно было подставлять на формы новых документов, отчетов и обработок. В УТ11 от этой системы отказались и перешли к использованию статистики - т.е. если продавец чаще выписывает документы с основного склада, то именно этот склад через некоторое время начнет подставляться, но сначала нужно все указывать вручную; а часть параметров нужно вообще всегда вносить вручную (по этому поводу очень много возмущений на форумах).
    6) Интерфейс. В УТ10 - было несколько вариантов интерфейса, которые создавались в конфигураторе для определенных групп пользователей. В УТ11 есть единый для всех интерфейс, в котором недоступные по правам доступа элементы просто скрыты.

    Это из крупного что я вспомнил. О том, что в УТ11 есть встроенное БСП (такое себе "государство в государстве" со своими законами) я вообще уже молчу.

    Естественно, что еще есть других отличий вагон и маленькая тележка. Что бы неплохо разбираться в обоих системах УТ10 и УТ11 нужно достать вопросы на профессионала и прорешать их. А еще лучше сходить на курсы.
    Ответ написан
    5 комментариев
  • Простой и эффективный способ подсчета просмотров страницы на django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Я бы сделал так:

    models.py
    class PageHit(models.Model):
        url = models.CharField(unique=True)
        count = models.PositiveIntegerField(default=0)

    decorators.py
    from functools import wraps
    from django.db.models import F
    from django.db import transaction
    
    def counted(f):
        @wraps(f)
        def decorator(request, *args, **kwargs):
            with transaction.atomic():
                counter, created = PageHit.objects.get_or_create(url=request.path)
                counter.count = F('count') + 1
                counter.save()
            return f(request, *args, **kwargs)
        return decorator

    views.py
    from .decorators import counted
    
    @counted
    def some_view(request):
        ...

    Репозиторий демонстрационного проекта.

    Или можно написать middleware, который будет делать то же самое для всех запросов.
    Ответ написан
  • Yii2 В базу сохраняется сразу 2 записи. Почему?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброй ночи.
    Почему в действии create нет подобной проверки?
    if ($model->load(Yii::$app->request->post()))
    Подобное
    Yii::$app->getResponse()->redirect('/news');
    можно с успехом заменить на
    return $this->redirect('/news')
    Зачем такая конструкция?
    if ($news = $model->create()) {
    не проще ли писать так
    if ($model->save()) {
     // и получить id
      $model->id;

    Откуда Вы берёте $model->create() и что в там внутри?
    Вот, ещё подсказал Антон Натаров, зачем Вы пишите этот бред с временем?
    (new DateTime())->format('Y-m-d H:i:s');
    В yii2 есть TimestampBehavior, вот через этот класс и настраивайте время, в модели, а не в контроллере.
    Статус тоже проверяйте в модели, в методах beforeSave() или AfterSave()
    Ответ написан
    6 комментариев
  • Yii2 Как получить ID записи с которой я работаю?

    padlyuck
    @padlyuck
    public function create()
        {
            if (!$this->validate()) {
                return null;
            }
            $news = new News();
            $news->create_at = $this->create_at;
            $news->status = 'archive';
            var_dump($news);die;
            return $news->save() ? $news : null;
        }

    >>> в форме var_dump($news) - так же нет id.
    конечно нету, т.к. оно еще не сохранено. уберите вардамп из формы и поменяйте экшен на
    public function actionCreate(){
            $model = new NewsForm();
            $model->create_at = (new DateTime())->format('Y-m-d H:i:s');
            $model->update_at = (new DateTime())->format('Y-m-d H:i:s');
            if ($news = $model->create()) {
               echo 'УРА! Запись' .  $news->id . 'была успешно добавлена';
            }
        }

    если не выведет id - будем дальше ковырять
    Ответ написан
    Комментировать
  • Доступ к views только для не залогинненого пользователя?

    Можно написать декоратор, который будет редиректить залогиненых пользователей.

    Вроде такого:

    def redirect_if_authenticated(view_func):
        @wraps(view_func)
        def dispatch_wrapper(self, request, *args, **kwargs):
            if request.user.is_athenticated:
                return redirect('default')
            return view_func(self, request, *args, **kwargs)
        return dispatch_wrapper
    Ответ написан
    Комментировать
  • Django и React.js как соединить?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Вам больше не нужно использовать django, чтобы рендерить html-ки. Этим будет заниматься react. Вам нужен API сервер, и я так понимаю, подойдет что-нибудь такое (ну или гугл).

    Если можете написать API, то значит нет смысла искать видео-уроки/просто уроки по комбинации Ddjango + React, и вам нужно лишь подтянуть знания по react/redux/react-router или подобной связке.

    Если даже в теории ваша задача не разбивается на 2 части (написание API и написание одностраничного приложения), значит django и react.js в данный момент вам никак не соединить.

    p.s. если есть уже существующий сайт, где используется шаблонизатор от django и рендерятся страницы, то можно взять любую из них, где много динамики (например, удаление и добавление строк в таблице, какие-то xhr запросы и т.д.) и переписать для начала только ее на react.
    Ответ написан
    Комментировать
  • "Junior'ство" Так ли сложно устроиться в СИЛЬНУЮ команду на python по сравнению с php?

    Мне лично удавалось устроиться за пару недель. Но при этом недостаток вакансий для джуниров есть, да.

    Что я делал? Откликался на вакансии для миддлов и даже сеньёров, в некоторые писал, что на самом деле я джуниор, но готов развиваться. И это работает. Я сейчас уже почти 2 месяца на новой работе и мне до сих пор приходят письма от хедхантера о том, что вакансия на которую я откликался больше не актуальна. При том, что на некоторые отклики мне сразу отвечали отказом, большинство просто игнорировало. Ещё несколько компаний проводили со мной собеседования и готовы были дать ответ спустя неделю / две. Кто-то перезванивал, кто-то нет. Зато была пара компаний, которые хотели чтобы я вышел на работу как можно скорее, при том, что это было прямо перед новогодними праздниками. В итоге одна из компаний мне особенно понравилась и я вышел на работу уже на следующую неделю после собеседования. Так что ищите и обрящете.

    P.S. При желании работу можно найти даже за неделю наверное, но тут важно не устроиться лишь бы куда, а попасть в хорошую команду, где ты будешь развиваться как разработчик, а не стагнировать. Иногда стоит отказаться от более высокой зарплаты или более близкого офиса, но понимать, что это с лихвой окупится потом.
    Ответ написан
    1 комментарий
  • Возможно ли использование REST архитектуры для интернет магазина?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    REST можно применить, почти, где угодно. Главное понимать, а зачем? Сейчас вы пытаетесь получить навык не зная, а нужен ли он в том или ином месте? Изучите сначала сферы применения. Какие плюсы от его использования и какие минусы. Не зная ответов на "Зачем?" и "Почему?" про REST нет смысла думать над вопросами "Можно ли применить REST для объекта X?"

    GET /v1/books/ - показать все книги
    GET /v1/books/1 - показать книгу с ID равным 1
    DELETE /v1/books/ - удалить все книги - такое только с соотв.привелегиями
    DELETE /v1/books/1 - удалить книгу с ID равным 1
    POST /v1/books/ - Добавить новую книгу
    PUT /v1/books/1 - Обновить существующую книгу с ID равным ID

    При этом:
    1. То что выдается для одного элемента GET /v1/books/ должно быть точно таким же как и для GET /v1/books/1.
    2. Не давайте хакеру понять причину ошибки, лучше сразу HTTP 404. В клиентском коде, редко когда нужно знать реальную причину ошибки
    3. Указывайте версию API.
    4. С HTTP-методами PATCH, HEAD не заморачивайтесь. Они редко кому нужны

    Можете посмотреть на : https://apigee.com/console/instagram там будет видно что и как можно начудить
    Ответ написан
    Комментировать
  • Опишите процесс работы 1C программиста, как оно?

    Jump
    @Jump
    Системный администратор со стажем.
    Зависит исключительно от работодателя.
    У него и нужно узнавать, такие вещи в должностной инструкции прописываются и в приложении к трудовому договору.
    Кому-то нужен именно программист - просто писать код на языке 1с и ничего более.
    Кому-то нужно чтобы кроме написания кода человек разбирался в предмете - торговля, бухучет, бизнес-процессы, особенности работы птицефабрики, и.т.д.
    Кому-то нужно чтобы кроме написания кода этот человек еще и пользователей консультировал.
    Зачастую на 1с программиста возлагают полностью все что касается 1с - администрирование сервера 1c и SQL, настройка, установка, обновления.
    Некоторым возможно нужно будет компьютеры починять и принтеры заправлять заодно.
    Кое-где могут и двор подметать заставить, по совместительству.

    В общем кого найдете, и как договоритесь.
    Ответ написан
    Комментировать
  • Где искать заказчиков начинающему фрилансеру?

    Chipr
    @Chipr
    UX/UI designer
    Портфолио, резюме есть? Или по кофейной гуще гадать, что из себя представляет yaremi. Этот вопрос выдает в вас дилетанта и не специалиста, а значит вам нужно искать курсы по повышению квалификации.
    Ответ написан
    Комментировать
  • Как отобразить данные из бд, где присутствует html разметка, в html(Django)?

    alexhouse
    @alexhouse
    Full Stack Web Developer Python and Django
    Сперва вырезаешь все ненужное из сообщения, потом фильтром добавляешь нужные тебе теги.

    Вот пример как работать с текстом с помощью фильтров:

    from django import template
    from django.utils.html import conditional_escape
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.filter(needs_autoescape=True)
    def initial_letter_filter(text, autoescape=True):
        first, other = text[0], text[1:]
        if autoescape:
            esc = conditional_escape
        else:
            esc = lambda x: x
        result = '<strong>%s</strong>%s' % (esc(first), esc(other))
        return mark_safe(result)


    Подробнее про фильтры: djbook.ru/rel1.9/howto/custom-template-tags.html
    Ответ написан
    Комментировать
  • При сохранении в админке записывать id юзера?

    @javedimka
    Хочу сока
    В общем дошел до дома, подробнее напишу. Если у тебя определено поле для юзера в модели, то ты его можешь вообще вручную выбрать, а если лень это делать то можно так.
    Допустим у тебя есть приложение для публикации статей "articles", в articles/models.py есть модель статьи, в которой есть поле с пользователем который ее добавил, можно добавить еще одно поле для пользователя который ее последний раз редактировал, а можно и не добавлять если нужен только пользователь добавивший статью:
    # остальные импорты опущены 
    from django.conf import settings
    
    
    class Article(models.Model):
        ...
        added_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
                                     related_name="articles_added")
        last_edited_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
                                           related_name="articles_edited")
        ...

    Так как два поля ссылаются на одну модель, нужно определить для них related_name чтобы потом с помощью него можно было работать с ORM, типо чтобы получить все статьи добавленные пользователем:
    *объект_нужного_пользователя*.articles_added.all()

    Потом в файле articles/admin.py определяешь новую модель для "администратирования" этого объекта:

    from django.contrib import admin 
    from .models import Article
    
    
    class ArticleAdmin(admin.ModelAdmin):
        readonly_fields = ("last_edited_by",) # делаем полем рид онли, чтобы нельзя было его отредактировать
    
        def save_model(self, request, obj, form, change):
            if change: # True если изменяется уже существующий объект, False если добавляется новый
                # определяем и записываем пользователя если изменяется существующий объект
                obj.last_edited_by = request.user 
            else:
                # определяем и записываем пользователя если добавляется новый объект
                obj.added_by = request.user 
            super(ArticleAdmin, self).save_model(request, obj, form, change)
    
    
    admin.site.register(Article, ArticleAdmin)

    Все, пробуй. Если не нужен юзер редактировавший статью, то, надеюсь, разберешься что удалить надо?

    Подробнее о save_model():
    https://docs.djangoproject.com/en/1.10/ref/contrib...
    Подробнее о request:
    https://docs.djangoproject.com/en/1.10/ref/request...
    Ответ написан
    1 комментарий
  • Как на yii2 сделать добавление класса active элементу меню при нажатии на раздел?

    @victor-nerd
    если ориентироваться на конкретный uri то например так
    <?= Html::a('Название раздела', ['billing/view', 'client_id' => $clientId], ['class' => 'list-group-item' . (Yii::$app->request->pathInfo == 'billing/view' ? ' active' : '')]) ?>

    если целиком на контроллер то так
    $this->context instanceof \admin\controllers\DeviceController ? ' active' : ''
    Ответ написан
    Комментировать
  • Как реализовать такое меню?

    1) делаешь выпадающее меню дочерним элементом блока/ссылки, при наведении на которую меню должно выпадать.
    2) позиционируешь абсолютно в то место где оно должно отображаться
    3) прячешь его display:none
    4) далее такой финт ушами: .parent:hover .menu {display: block}
    При наведении на родителя будет отображаться меню.

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

    Второй вариант: сделать появление меню по клику. Но тут без js не обойтись.

    Еще нюанс: меню лучше верстать ul-списком, только обнулить все отступы и стили.
    Ответ написан
    Комментировать