Задать вопрос
  • Оптимально ли написана программа по слиянию строк и созданию новой строки?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Алгоритм, в общем-то оптимален. Но реализация допускает некоторые микро-оптимизации.

    Во-первых, StringBuilder можно указать итоговый размер в конструкторе. Тогда там не будет лишних выделений памяти. Вы же знаете, что там будет сумма двух длин в итоге.
    Во-вторых, основной цикл лучше гнать не до максимальной длины из двух, а до минимальной. Тогда в цикле не надо никаких проверок, что индекс не вышел за границы строки. После цикла надо будет добавить к собираемой строке кусок одной из двух входных строк. Проверьте, какая строка длиннее и добавьте ровно len1-len2 символов с конца. Используйте метод substring(), чтобы получить этот суффикс и сразу передавайте его в append().

    Вторую часть про символы на четных местах тоже можно соптимизировать. Вы знаете длину ответа заранее, инициализируйте StringBuilder с нужной вместимостью.
    На четных местах будет вторая строка. Ну и в конце только какие-то символы через один из второй строки или из первой, в зависимости, какая длинее. Если передавать в функцию не результат работы первой, а 2 строки, то можно сначала append в stringbuilder substring от второй строки, а потом циклом взять нужное количество символов через один из первой или второй строки. Нарисуйте на бумаге несколько случаев, первая строка длиннее второй или наоборот. Длина второй строки четная/нечетная, длина первой четная/нечетная. В каждом из этих случаев будет +-1 где-то в формулах для индексации. Можно это все удачно записать с помощью деления на 2 нацело и остатка от деления на 2.
    Ответ написан
    1 комментарий
  • Как правильно настроить сервер(а) для dev/test/prod?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Все настройки ваших серверов сводятся к установке приложения gitlab-runner (либо настройке SSH для CI/CD сервера: т.е. CI/CD сервер подключается к целевому серверу по SSH/SFTP, копирует файлы и выполняет скрипты на целевой машине), а так же настройке требуемых зависимостей вашего проекта. Stage сервер настраивается идентично Prod серверу. Dev сервер настраивается для прямого доступа к нему со стороны разработчиков для отладки и дебага багов, не воспроизводящихся локально. В гитлабе настраивается CI/CD для деплоя через gitlab-runner или SSH, развертывается отдельный CI/CD сервер с приложением gitlab-runner и докером для запуска CI/CD задач и деплоя на серверы. Для каждой ветки настраиваются свои правила и ограничения деплоя под отдельные сервера. Итого у вас должно быть минимум пять серверов: гитлаб, cicd, dev, stage, prod. Плюс еще есть роль VPN сервера - эту роль вполне можно совместить с гитлабом. CI/CD - только отдельный сервер, ибо задачи штука ресурсоёмкая (компиляция, сборка, установка зависимостей и прочее). Еще очень полезная штука - кэширующий сервер для образов докера и пакеты (harbor - топ). Ускоряет работу задач и экономит трафик. Prod сервер может быть как сервером, так и группой серверов - prod-app, prod-db, prod-files и т.п. В идеале stage должен быть идентичной конфигурации, но обычно обходятся простыми виртуалками для экономии ресурсов, в отличии от prod сервера.
    Ответ написан
    Комментировать
  • В чем различие между phpMyAdmin, MySQL workbench и Microsoft SQL Server?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это поговорка "В огороде бузина, а в Киеве дядька" по-айтишному.

    • Microsoft SQL Server - это сервер. То есть программа, которая постоянно висит в памяти и принимает запросы от клиентов. Условно говоря - то, что и называется базой данных. Ну или точнее - СУБД, системой управления базами данных
    • MySQL workbench и phpMyAdmin - это клиенты, то есть программы, которые могут посылать запросы на сервер. Но на Microsoft SQL Server они посылать запросы не могут, потому что работают с другим сервером - MySQL.
    • при этом отличия между MySQL workbench и phpMyAdmin минимальные - обе являются графическими клиентами для СУБД MySQL, позволяя администрировать базу данных, редактировать таблицы в визуальном редакторе и выполнять SQL запросы. Только первое это десктопная программа, а второе - убогий веб-интерфейс, которому для работы нужен веб-сервер. И вместо которого всегда надо использовать нормальный клиент, например DataGrip, ну или хотя бы тот же Workbench.
    Ответ написан
    5 комментариев
  • Как правильно организовать передачу проекта другому сотруднику?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Универсального решения и списка конкретных пунктов не существует. По сути всё сводится к документации самого проекта. Если она достаточно хорошая - то разработчик получив все необходимые доступы (к репозиторию, CRM, тикетам и прочему) сможет локально развернуть проект и начать выполнять задачи. Но такие идеальные ситуации достаточно большая редкость и всегда находится какой-то нюанс или несколько. Поэтому, я бы предложил вот такой базовый список пунктов:
    1. Доступы: к сервису документации - вики и т.п., репозиторию, менеджеру задач, тестовым/отладочным серверам, коммуникационные ресурсы - чаты, созвоны, веб-доски и т.п., а так же дополнительным внутренним ресурсам - файловый сервер, офисные и другие веб-приложения.
    2. Документация: установка и настройка средств разработки, получение, запуск и локальное развёртывание проекта и его зависимостей, процесс доставки проекта на тестовый, стейж и продакшен серверы, процесс отката изменений на предыдущую версию, получение и размещение ключей доступа/АПИ и других секретов.
    3. Общая документация проекта: описание проекта и его задач, описание всех задействованных бизнес-процессов проекта - внешние процессы, внутренние процессы, зависимые процессы, описание рабочих процессов пользователей и их взаимодействия с проектом, описание рабочих процессов службы сопровождения проекта - модераторы, администраторы, веб-мастера и прочие внутренние пользователи проекта.
    4. Рабочий процесс в команде/проекте: где и куда копать надо, где и какие ресурсы размещены, организация к ним доступов, структура команды - должности и контакты коллег, кто за что отвечает, процессы работы над задачами.

    Ну и далее - специфика каждого конкретного проекта.
    Ответ написан
    3 комментария
  • Правильно ли рисовать для сайта каждый раз новый UI?

    font
    @font
    В поисках самого лучшего
    Для каждого сайта, новый UI.
    Иначе десигн как-то не десигн будет.
    Если рисовать новый UI для каждой страницы (для регистрации один, для контактной формы -- другой), то надо обоссать дизайнера, потому что он явно считает что он -- творец, а его "творчество" неоспоримо.
    Ответ написан
    5 комментариев
  • Правильно ли рисовать для сайта каждый раз новый UI?

    @alexgilev
    Дизайнер конечно же не прав, это дураку понятно. Это всё-равно что рисовать для каждого экрана разные типы кнопок (квадратные, закруглённые, градиент и прочие извращения) или использовать каждый раз новый шрифт для нового экрана.

    Вы не пробовали попросить дизайнера аргументировать его решение рисовать каждый раз новый дизайн и привести пример :) Если получите ответ: "Я дизайнер, мне лучше знать!", то всё понятно - перед Вами очередной говно-дизайнер, коих в России великое множество. Все себя называют UX/UI, хотя работы говорят об обратном.

    Соболезную вашей ситуации на работе.

    P.s. Я Product designer, с отличным знанием вёрстки. Полностью понимаю, о чём Вы.

    Удачи :)
    Ответ написан
    1 комментарий
  • Правильно ли рисовать для сайта каждый раз новый UI?

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

    Этот подход справедлив как со стороны UI/UX/Product дизайна - пользователь пользуется одинаковым элементом интерфейса, правила поведения и внешний вид которого ему нужно понять один раз.

    Так и со стороны разработки и проектирования интерфейса вприципе. Так как дизайнер использует уже готовый набор для проектирования нового элемента, а разработчик держит один тип элемента. Что увеличивает скорость разработки.
    Ответ написан
    6 комментариев
  • Тестовое задание (Junior Frontend), приемлемое ли?

    Слишком большое задание для теста. Хватило бы и одной страницы. А тут - довольно плотно поработать, чтобы сделать хорошо. Если без оплаты, то вероятно, они так экономят на верстке лендосов каких-нибудь.
    Ответ написан
    2 комментария
  • Тестовое задание (Junior Frontend), приемлемое ли?

    @stratosmi
    Имхо, вы путаете:

    Junior
    и
    Trainee

    Для джуна задание нормальное. Более чем несложное.

    А то, как вы к нему относитесь боязливо - скорее выдает трейни.

    Радует что нет адаптива


    И это вы пишите в конце второго десятилетия 21 века?
    Когда трафик со смартфонов давно превысил 60% ?
    Ответ написан
    Комментировать
  • Тестовое задание (Junior Frontend), приемлемое ли?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    При чём тут какая-то связка с php? Как php вообще относится к вёрстке? Если вы там адаптивности боитесь, то, лично моё мнение, вам ещё нужно подтянуть знания и вы себя в оценке переоценили))

    Что насчёт самого макета, то я бы сказал, слишком лёгкий. Чё тут делать то? Карту вставить? Подвигать стрелочки при наведении через css? Сделать кнопку с раскрытием меню?

    P.S. Я никак не хочу обидеть или оскорбить вас, но я не понимаю, сути вашего вопроса. У вас навыки 70% х 30%, а вы вместо того, что бы начать верстать, пришли сюда с глупым вопросом, а не слишком ли сложно!
    Ответ написан
    2 комментария
  • Тестовое задание (Junior Frontend), приемлемое ли?

    @kirill-93
    Вертел я такие задания при устройстве на работу.
    Однажды тоже устраиваясь в "крутую" контору прислали большое задание. Все выходные убил на него. Потом еще две недели мурыжили собеседованиями и в итоге не взяли.
    Я с тех пор никогда не соглашаюсь на тестовые задания, которые займут больше получаса моего времени.
    Объемные задания должны оплачиваться. Если они очень требовательно отбирают сотрудников, то сначала надо дать простое задание/прособеседовать и уже если человек их устраивает, давать объемное задание и платить.

    UPD
    Не слушайте, пожалуйста, бред об опыте и пользе для вас. Из таких "будущих хороших специалистов" потом веревки вьют, типа "поработай по вечерам, это ж опыт для тебя!" или "давай ты теперь и по субботам выходить будешь, а мы тебя за это серьёром называть будем!". Очень работает с наивными молодыми людьми.
    Вы поймите, что все эти разговоры про опыт и пользу для вас - это уловки с целью сэкономить и вас обмануть. Всем плевать на ваш опыт, им нужно денег меньше вам заплатить и все.
    Огромное тестовое задание - это неуважение к кандидаду.
    Давай представим обратную ситуацию: я прихожу к потенциальному работодателю и говорю: "Давайте я у вас тут недельку посижу без каких-либо обязательств, а вы мне зарплату платите. А потом посмотрим, может быть останусь, а может уйду". Нормально? Ситуация выглядит именно так, потому что работодатель не делает одолжения принимая на работу, он "покупает" ваше время и ваш опыт и все.
    Ответ написан
    13 комментариев
  • Как sizeof вычисляет размер массива?

    @res2001
    Developer, ex-admin
    sizeof - это не функция (хоть и выглядит похоже) - это операция взятия размера.
    sizeof всегда вычисляется на этапе компиляции, т.е. в исполняемом файле вместо вызова sizeof уже будет вычисленная константа.
    Когда компилятор знает размер массива, как в вашем примере, он вернет полный размер массива.
    Но если передать в sizeof произвольный указатель (именно указатель, а не статический массив), он вернет размер указателя.

    Статический массив - это не указатель. Указатель - на этапе выполнения занимает в памяти место для хранения адреса. Статический массив занимает в памяти место для хранения данных массива.
    Поэтому статический массив - это не указатель. Хотя часто компилятор работает с именем статического массива как с указателем.
    Ответ написан
    8 комментариев
  • Как создать фоновую задачу в боте?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    aiogram==2.25.1

    Сколько раз твердили миру... Да не используйте вы 2.x! В 21 веке все уже перешли на 3.x

    Как мне такое реализовать, с учетом того, что я <...> в асинхроне ничего не понимаю?

    Так может надо что-то понять? Почитать, поразбираться, для начала?

    Вывод: готовый код никто за вас писать не будет. Изучайте сначала программирование и базовые основы, а потом рвитесь в бой. Тем более, если это ваша "хотелка" и она не к спеху
    Ответ написан
    8 комментариев
  • Как ограничить скорость интернета для компьютеров в компьютерном клубе?

    b1ora
    @b1ora Куратор тега MikroTik
    Контакты в профиле
    Путь Simple:
    1. Делаем QoS на весь канал
    2. Делаем дочерние правила на каждый ПК
    3. Ставшуюся скорость отдаем остальным

    Путь Tree:
    1. Маркируем через Mangle нужный трафик
    2. Создаем дерево очередей
    Ответ написан
    2 комментария
  • Как теперь запустить Linux на внешнем SSD?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Винда при переустановке сбросила данные в EFI - она так постоянно делает. Можно шаманить с виндовыми EFI-менеджерами, но проще загрузиться с любого дистриба линуха и прогнать grub-install, указывая нужные устройства, даже если граб стоит уже. Главное, что сделает grub-install - восстановит запись в EFI, указывающую на него. Можно, конечно и вручную через efibootmgr пошаманить, но grub-install проще.
    Ответ написан
    3 комментария
  • Почему возникает ошибка 422 при получении ответа от сервера?

    @Everything_is_bad
    Ну так сервер тебе json присылает, а ты ожидаешь x-www-form-urlencoded
    Ответ написан
  • Могут ли наказать разработчика open source проекта, если его код использовался во вредоносном ПО?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Смотря о какой стране мы говорим. В России например суды состязательны, то есть если тебе выдвинут эти обвинения, то надо будет доказать свою невиновность.
    Вообще, шанс влипнуть есть, но это если будет какой-нибудь состав преступления. Ведь ты можешь действительно в нем участвовать, но просто прикрываться добрым/пушистым владельцем библиотеки.
    Ответ написан
  • Где в функции ошибка?

    Daemon23RUS
    @Daemon23RUS
    Встречный логический вопрос, а число 0 положительное или отрицательное ?
    Ответ написан
    Комментировать
  • Где в функции ошибка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ноль не относится к положительным числам.
    Ответ написан
    Комментировать
  • Как правильно "раскидать" локальную сеть видеонаблюдения?

    @Drno
    зачем? оно работает, диапазона хватает... сами себе работу создаёте)
    когда упрётся - тогда и будете что то думать)
    Ответ написан
    Комментировать