• 128 символов когда их всего 95?

    vfreelancer
    @vfreelancer
    php
    В отличие от strlen(), iconv_strlen() учитывает кодировку строки. Длина string не обязательно будет соответствовать количеству байт в ней, так как в различных кодировках различные символы кодируются различным количеством байт, например, юникод может быть и двух-, и четырёхбайтным.

    попробуйте mb_substr с указанием кодировки
    Ответ написан
  • Должен ли программист выполнять роль девопса на сервере заказчика?

    @vitaly_il1
    DevOps Consulting
    По-моему, ответ простой - что было записано в договоре, то и обязан.
    Т.е. если речь шла о коде - то только код. Если договаривались о "запустить на сервере" - то надо ставить на сервер. Но вот о том, что для вебсервера используют Мак, я еще не слышал :-)
    Ответ написан
    11 комментариев
  • Какое оптимальное время въехать в проект?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    От проекта зависит. На моëм проекте например новичкам даже сеньорского уровня до первой простой таски требуется недели две, а выход на 100℅ эффективность занимает 3-6 месяцев.
    Ответ написан
    9 комментариев
  • Что должен знать Middle+ разработчик Go?

    opium
    @opium
    Просто люблю качественно работать
    так ты ж мидл мы у тебя должны спрашивать
    Ответ написан
    Комментировать
  • Почему так популярны телеграм боты?

    Griboks
    @Griboks
    каждый 5-ый вопрос связан с Телеграм-ботом, и каждый 10-ый автор не знает основ языка

    Потому что большинство разработчиков ботов тупые. Как правило они посмотрели 10 видео на ютубе, поверили в себя и пошли во фриланс. На фрилансе заказчики тоже тупые. Вот и получается, что неумеющие гуглить люди заказывают результаты поиска у неумеющих гуглить псевдоразработчиков.
    Ответ написан
    Комментировать
  • Как создать БД в Laravel и потом сделать миграцию?

    pLavrenov
    @pLavrenov
    Разработка сайтов
    Есть два пути: Путь джедая для тех кто хочет познать силу и Короткий путь для тех кто хочет получить ответ на задание.
    Ответ написан
    1 комментарий
  • В чем разница между способами тестирования (в контексте web и php)?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Опишу простыми словами для упрощения понимания.

    модульное тестирование

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

    интеграционное тестирование

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

    функциональное тестирование

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

    Инструментами автоматизации GUI - для сайтов это Selenium и браузеры. Для десктопных/мобильных приложений аналогичные решения.

    приемочное тестирование

    в че отличие от интеграционных.. еще видел фразу что тут и фронт и бек тестируются, но яснее не стало, какими инструментами оно делается?

    "Бизнес" заказал в "Конторе" разработку сайта, выдал ТЗ, контора сделала сайт, бизнес заплатить денег обещал. Как бизнес проверит что контора сделала именно то, что он хотел? Через приемочное тестировние - бизнес получает доступ к сайту и проверяет, что сайт именно такой, какой он заказывал в ТЗ, а не тот, который сделали индусы за доширак. Если в ТЗ указан конкретный список тестов/фич - используется этот список или так, как прописано в ТЗ само тестирование. Само тестирование проводит соответствующий специалист (инженер отдела качества) - тыкает все кнопочки, нажимает менюшечки и говорит начальству "все окей, подписывай и платим им деньги" или "вот тут и тут не окей, не подписывай, денег не давай". Реальный пример: была заказана и собрана станция спутниковой связи, на приемке были представители заказчика и исполнителя, была толстая пачка бумаги на несколько сотен страниц, по которой первые проверяли что все работает именно так, как там написано в течении нескольких недель (плюс-минус), а вторые исправляли косяки показывали что все окей, потом все поставили свои галочки и крестики и разъехались по домам.

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

    Сквозное тестирование. Это полная проверка от начала и до конца. Отличие от функционального в том, что это более комплексный тест. Если функциональное тестирование - это проверка конкретной функции, тот сквозное - работа всего приложения, т.е. более комплексное. Например, E2E тест приложения для загрузки файла на сервер: тест включает в себя запуск приложения, авторизация пользователя, выбор файла, указание мета информации, загрузку файла на сервер, выход из приложения. Вот тут неплохая статья на хабре: https://habr.com/ru/company/otus/blog/681066/

    Совсем запутался, с unit только понятно, а как уложить и разделить остальные?

    60da68c37e576762375008e5_thumb-image.png
    Картинка отсюда: https://www.rainforestqa.com/blog/the-layers-of-te...
    Ответ написан
    Комментировать
  • Где найти сенсея?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ни на каких. Незачем хорошо разбирающемуся в архитектуре бесплатно тратить своё время на того, кто даже не хочет становится программистом.
    Ответ написан
    9 комментариев
  • Как шифровать payload?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Собственно вопрос: а что требуется?

    Этот вопрос всегда надо задавать тому, кто формирует требования, а не идти с этим вопросом в интернет к случайным людям.
    Мы тут посидим, пообсуждаем, примем решение и ты что-то там реализуешь.
    А в итоге окажется, что заказчик немножко "куку" и имел совсем не то, что мы тут посидели и решили.
    Иди и общайся с заказчиком.
    Ответ написан
    Комментировать
  • Как в Google Sheets вывести курс валюты по конкретной дате?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    У вас массив 2×2. Нужно получить значение из определённой позиции — для этого есть функция INDEX. Вуаля!
    =INDEX(GoogleFinance("Currency:USDRUB";"price";"20.10.2022");2;2)
    Ответ написан
    5 комментариев
  • Может кто-нибудь дать реальную задачу на которой можно применить ООП?

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

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

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

    В-третьих, все реальные примеры настолько замороченные, что по ним разобраться совершенно нереально. А упрощенные ничего толком не показывают. Только синтаксис.

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

    Это пример самой базовой и очень распространенной задачи - как сделать работу с SQL менее занудной и гарантированно безопасной. И начинать надо именно с таких задач, не замахиваясь на приложения целиком.

    Если говорить о приложении целиком, то стоит попробовать написать что-то примере фреймворка Symfony - это как раз даст понимание того, как ООП применяется на уровне приложения.
    Ответ написан
  • Как автоматизировать сбор замеров (DevTools) статистики открытия веб-страниц сайта в БД?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    открой для себя APM - Newrelic и все такое подобное,
    + автотесты фронтэнда - на ошибки,
    + фичи от Cloudflare да и того же гугла по средней загрузке страниц

    а если в СЕО играетесь - то Селениум
    Ответ написан
    2 комментария
  • Может ли сломатся autoincrement при вручном добавление записи таблицу?

    @nozzy
    Symfony, Laravel, SQL
    Создай еще одно поле в таблице и пиши туда какие нужны id. А autoincrement не трогай, потом разберешься что это и для чего.
    Ответ написан
    Комментировать
  • Можно ли будет подключить ЖД к nextcloud?

    @rPman
    Конечно можно

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    На чистом ФП программировать достаточно тяжело. Нужно сильно изменить подход к задаче. Чистое ФП предполагает что когда вы вызываете функцию то "вся вселенная замерла". И второй вызов функции с такими-же параметрами будет видеть эту-же мертвую версию вселенной. Это если вобщем.

    Наш мир состоит из постоянно менающихся объектов. Файлы. Сетевые соединения. Объекты в БД. Это грязный мир. И натянуть на него ФП парадигму довольно сложно. В хаскель довольно жёстко порешали с этим. Сказали что есть монада IO. И если функция ее возвращает - то она работает с таким грязным миром. Всё остальное - чистое. Тоесть провели границу.

    Как тебе конфигурить твой роутер в ФП - я честно говоря не знаю. Мы должны сначала договориться об абстракциях. И понять где проходят границы чистого и грязного миров. Что делает get users from DB. Изменяет ли он мир? Или может вернуть внезамно другой результат при тех-же аргументах. Это все - сложные вопросы которые просто выходят за рамки твоего.

    Поэтому лучше не парь себе мозги именно таким вопросом. Кстати функциональщики тоже не могут сойтись на мнении например считать ли Sheme функциональным или мультипарадигменным языком. Вообще строгого деления на такие классы не существует. Можно просто сказать что когда мы программируем - то мы тяготеем к чему-то больше или меньше. Например форма Бекуса-Науэра (БНФ) - это чистое функциональное описание грамматики. А язык XPath - чистый функциональный. При этом и одно и второе могут быть инкапсулированы в проект на языке Java например который вобщем грязно-императивный. Тоесть в каких-то частях проекта мы сами исповедуем ФП.
    Ответ написан
    Комментировать
  • Насколько допустимо с точки зрения стилистики вызывать Exception в конструкции if/else?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос не очень понятен, особенно в части "обрабатывать" можно как через try/catch".

    Если я правильно понял, то задача - выбросить кастомное исключение, и выбор между проверкой через if и поимкой встроенного TypeError с последующим перевыбросом исключения со своим текстом ошибки.

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

    Я бы только инвертировал условие, чтобы во-первых, сделать логику более стройной (проверили - вывалились), а во-вторых, чтобы избавиться от else и убрать лишний отступ.
    if not (isinstance(data_set, list) or isinstance(data_set, tuple)): 
        raise TypeError('argument must be list or tuple')
    return sum(data_set) / len(data_set)


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

    То есть в реальном коде я бы убрал проверку из функции вообще, а проверял данные при их получении (и выводил ошибку).
    А на случай, если вдруг функция всё равно будет вызвана с неверным типом аргумента, есть системное исключение, 'type' object is not iterable
    Ответ написан
    Комментировать
  • Что лучше всего использовать при работе с данными?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Какие инструменты командной строки вы чаще всего используете при работе с большими данными?

    rar, tar+gzip, zip

    В чем их плюсы?

    Уменьшают размер больших данных
    Ответ написан
    Комментировать
  • Есть ли какие-то сервисы или форумы, куда можно выложить свой код, чтобы его могли оценить и оптимизировать другие люди?

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

    На английском есть специализированный сайт codereview@stackexchange, при наличии языка это идеальный вариант.

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

    Самый надёжный способ получить code-review, это завести два аккаунта. С одного задать вопрос, "как сделать то-то", а с другого - запостить код, который это делает. И тут же набегут советчики, рассказать, что в этом коде неправильно.
    Ответ написан
    2 комментария
  • Получить NaN в результате деления на ноль, а не исключение и прерывание скрипта?

    Adamos
    @Adamos
    Вам же говорит английским по белому, что выброшено не перехваченное исключение.
    Перехватывайте и присваивайте, что хотите.
    Ответ написан
    Комментировать