Задать вопрос
  • Какую БД выбрать для мобильной стратегии?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Проблем у вас несколько. Первая с latency, вторая с source of truth.
    Первая решается через CDN и репликацией инстансов с логикой. Гарантированно придёте к очередям и асинхронной обработке данных с событийной консистентностью.

    По базам - либо полностью менять логику приложения и коммуникации, либо использовать распределенные базы, такие как AWS Aurora и AWS DynamoDB. Сами по себе они региональные, но есть интересные фичи, позволяющие выводить на весь мир.

    Сразу скажу - коллизии будут в любом случаем
    Ответ написан
    6 комментариев
  • Рефакторить или рерайтить?

    gbg
    @gbg
    Любые ответы на любые вопросы
    У вас будет проблема с тем, что на имеющийся быдлокод у вас нет ТЗ и описания того, как это чудо должно работать - вам придется восстанавливать это из кода.

    В процессе, вы можете исправить некоторые глюки и баги, к которым пользователи уже привыкли, что приведет к скандалу.

    Со стороны трудно оценить объем вносимых изменений - если это разовая работа, проще добавить в эту свалку костылей еще один и забыть как страшный сон.

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

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

    deepblack
    @deepblack
    download_images_from_csv.sh (допилите под себя если нужно)
    spoiler
    #!/bin/bash
    COLUMN=1 # csv column to extract
    RENAME=false # if we should rename the file, note that is was really specific for my problem.
    THREADS=16 # threads to use by parallel
    
    #Set Script Name variable
    SCRIPT=`basename ${BASH_SOURCE[0]}`
    
    #Set fonts for Help.
    NORM=`tput sgr0`
    BOLD=`tput bold`
    REV=`tput smso`
    
    # Help function
    function HELP {
      echo -e \\n"Help documentation for ${SCRIPT}."\\n
      echo -e "Basic usage: ./$SCRIPT"\\n
      echo "Command line switches are optional. The following switches are recognized."
      echo "-f csv file = required should be last argument"
      echo "-c column, default $COLUMN"
      echo "-t threads, default $THREADS"
      echo "-r renamd, should be renamed - work in progress here because this is really specific renaming"
      echo -e "-h --Displays this help message. No further functions are performed."\\n
      echo -e "Example: ./${BOLD}$SCRIPT -rc 2 -f file.csv"\\n
      exit 1
    }
    
    
    #Check the number of arguments. If none are passed, print help and exit.
    NUMARGS=$#
    if [ $NUMARGS -eq 0 ]; then
      HELP
      exit 1
    fi
    
    while getopts ::c::r:h:f FLAG; do
      case $FLAG in
        t)
            THREADS=$OPTARG
          ;;
        c)
            COLUMN=$OPTARG
          ;;
        r)
            RENAME=true
          ;;
        h)  #show help
          HELP
          ;;
        \?)
          echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
          HELP
          ;;
      esac
    done
    
    shift $((OPTIND-1))
    
    FILE=$1
    # shift ops, all optional args are now removed $1 will have to be the filename
    
    if [ "$RENAME" = true ]; then
        mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
            (cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {}; mv {/} `echo "{/}" | tr "." "_" | cut -d "_" -f1,3 | tr "_" "."`')
    else
        mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
            (cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {};')
    fi
    Ответ написан
    Комментировать
  • Какие градации и ранги у IT-специалистов?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Единых градаций и рангов нет. В каждой компании они свои.
    Ответ написан
    Комментировать
  • Какой язык программирования можно выучить после java и kotlin?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Уверенно владею основами

    Это типа if-else с циклами городить умеете?
    Для начала просто уверенно освойте хотя бы один язык, до того момента как сможете решать реальные задачи, после этого вопрос "а че дальше" должен отпасть сам.

    P.S. Изначально постановка вопроса типа "Какой язык программирования можно выучить" в корне не верна. Нужно спрашивать "какой яп лучше решает задачу X", но у вас нет никакой задачи, соответственно и ответа нормального вы не получите. Так что учите нормально один язык и не занимайтесь ерундой.
    Ответ написан
    Комментировать
  • Что здесь лучше использовать? Простое наследование, интерфейсы, или вообще абстрактный класс?

    Maksclub
    @Maksclub
    maksfedorov.ru
    куча мест где выводится некий Список объявлений

    все они являются Списками, и эти списки по сути отображают одинаковые карточки

    Использовать DTO списка объявлений (или массив), который состоит из списка DTO объявления. Только 1 по сути класс для отображения
    Ответ написан
    6 комментариев
  • Можно ли научиться хорошо программировать если сначала теория потом практика?

    criticalsomethoughts
    @criticalsomethoughts
    UI\UX Developer, Project Manager
    Вуз вам не помощник - это априори, еще до поступления в ваш университет нужно было снять розовые очки по поводу высшего образования в России(если вы конечно учитесь не в СПБГУ,Бауманке,ИТМО,МГУ).
    если сначала теорию часа 3 изучать, потом практика часа 2 в день.
    - обучение напрямую строится на ошибках, поглощая 50% или более информации из литературы - вы рискуете просто прокрастинировать, и отлынивать от практических задач.

    В программировании очень круто применяется закон Паррето, он же 80\20 - 80% практики, 20% теории, 20% теории нужно будет в поиске косяков, доборе нужной информации, которой вам будет всегда не хватать. Причем в 20% должно быть минимальное количество "воды".

    высоком уровне(сеньйор)
    - в каждой компании свои понятия сеньёрности, видел я в нашей компании одного "миддла", который до наших джунов не дотягивал.
    Ответ написан
    2 комментария
  • Как попадают переменные в контроллер?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Гуглить Dependency Injection и Inversion of Control, читать документацию ларавел (не поверишь, там это есть!) и Diving Laravel, изучать код фреймворка.
    Ответ написан
    Комментировать
  • Хранение параметров сайта без PHP, такое возможно?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Все прекрасно можно, просто надо понимать что нам надо вынести состояние в другое место. Можно обойтись и без сервера, просто сложность выносим в отдельный сервис, например, firebase. Получаем оттуда порядок и через JS перерисовываем элемент или отрисовываем его с нуля
    Ответ написан
    Комментировать
  • Какую базу данных лучше использовать на Python?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Когда тут будут писать определенные базы - можно смеяться сразу и в голос. Базу надо подбирать либо под четкие требования, либо, если проект небольшой то что лучше знаете или вам проще освоить
    Ответ написан
    Комментировать
  • Правильно ли я понимаю, что Oauth - это стандарт, и каждый его реализовывает по своему?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Можешь реализовывать самостоятельно, да. А можешь использовать готовый Identity Server (установленный или SaaS).
    Примеры:

    Premises:
    - Keycloak
    - WSO2
    - IdentityServer4
    - ...

    SaaS:
    - Auth0
    - Okta
    - Onelogin
    - AWS Cognito
    - ...
    Ответ написан
    Комментировать
  • Можно ли Композицию и наследование назвать паттерном?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Паттерн — довольно утилитарная вещь, некая четкая последовательность или описание связей, чтобы можно было повторить, легко опознать и донести тот или иной инструмент.

    Композиция — абстрактное понятие, классифицирующая то, что нужно выстроить как-то иначе, нежели наследование. Делегировать и выстроить так, чтобы полиморфизм проявил себя через некоторое число объектов, не связанных в цепочку наследования.
    Наследование —про то, что объекты наследуют интерфейс/состояние, тут нет схемы взаимодействия, она довольно прямая: А от Б отнаследовался и все. Но внутри сокрыто много всего.
    Ответ написан
    Комментировать
  • Класс Пагинатор, что еще должен уметь?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Для начала, это не пагинатор, а курсор: https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D1%80%D...

    Задача пагинатора - это получить произвольный итератор и поделить его на чанки, а не лезть в базу данных.

    P.S. Пример относительно (потому что избыточная связанность) нормально реализованного пагинатора: https://github.com/illuminate/pagination
    Ответ написан
    Комментировать
  • Какие есть на данный момент хорошие курсы от компаний для дальнейшего трудоустройства?

    criticalsomethoughts
    @criticalsomethoughts
    UI\UX Developer, Project Manager
    Не проще ли, просто ходить на собесы и просить зп на уровне "сходить 2 раза в ашан и умереть с голоду", а там и глядишь, если проявите себя, возьмут в штат.

    Недавно знакомый (23 года), сделал пару пет проектов - один - сервис помощи в решении математики(пишешь задачу, тебе "оператор" пишет решение(3 вопроса бесплатно, потом за деньги), второй пет проект - поисковик книжек в формате epub. На 3х собесах его послали, сказали что слишком "мал", следующие 2 собеса он выбирал между большой компанией\маленькой зп, маленькой компанией\хорошей зп.

    Итог: не бойтесь ходить на собеседования, как по мне, на работе быстрее постигнуть дзен, чем на недокурсах.
    Ответ написан
    2 комментария
  • Как реализовать такую архитектуру на Eloquent laravel?

    @jazzus
    Я за 4. Связь hasOne и поле user_id в каждой таблице. При регистрации юзер выбирает, что он врач и ты создаешь запись в doctor_profile. Подтягивать через with. Удобно тем что просто и наглядно)
    Ответ написан
    Комментировать
  • Что такое модель в ООП в веб?

    @Vitsliputsli
    Контроллер, представление, модель - это элементы MVC, к ООП отношения не имеют.
    Контроллер получает от пользователя запрос в определенном виде (запрос браузера, обращение к API, команда, все это разные группы контроллеров). Распарсив запрос передает его в модель для обработки.
    Модель содержит бизнес-логику, т.е. по-сути то, что должно делать ваше приложение, без привязки к способам обращения пользователей и способам вывода. Возможно будут вызываться модели работающие с БД, а может и не будут, это неважно, не превозносите БД как сверхсущность, это обычный инструмент, один из множества.
    Далее модель передает подготовленные для вывода данные в контроллер (в классической MVC сразу в представление), и контроллер передает их в нужное представление.
    Вот и все, простая схема, которая позволит отделить мух от котлет, создавать API, видоизменять вывод, не трогая основную логику. А работа с БД, совсем другой вопрос.
    Ответ написан
    Комментировать
  • Что можете рассказать о LinkedIn?

    Sanes
    @Sanes
    Сборище хантеров. Ваш уровень должен быть не ниже уверенного мидла.
    Ответ написан
    2 комментария