Задать вопрос
  • Как числа из строки поместить в массив?

    kawabanga
    @kawabanga
    $arr = explode(',', $str);
    foreach ($arr as $value) {
        $new_arr[] = trim($value);
    }


    Зачем использовать регулярки, если они не нужны в задаче.
    А если нужны по заданию, то
    Ответ написан
    3 комментария
  • Какие примеры кода показывать работадателю, если ты под NDA?

    xez
    @xez
    TL Junior Roo
    всем нужны примера кода, понятно почему

    Мне не понятно.
    Ни разу не собеседованиях у меня примеры кода не спрашивали.
    Я сам на собеседованиях ни разу примеры кода не спрашивал; я прошу рассказать о предыдущем проекте чисто с технической точки зрения, бизнес логика мне не интересна и на собеседовании не нужна.
    Ответ написан
    2 комментария
  • Как повысить уровень создания проектов на чистом php?

    mayton2019
    @mayton2019
    Bigdata Engineer

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

    Еще спрашивюат какие патерные проектирования используешь, придерживаешься ли принципов Solid?

    Мне кажется что за 9 лет ты уже достаточно получил опыта чтобы проходить собеседования. Просто ты - неуверенный. Тебе надо овладеть риторикой и просто базовыми умениями убеждать собеседника.

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

    Шаблоны проектирования... Темя душная и нудная. Способна убить любой энтузиазм. Тебе не надо их знать
    все. Все - никто не знает. Прочитай про 3-4 штуки и попробуй узнать знакомые. Например singleton - достаточно
    известный шаблон и почти все разработчики всегда его использовали только не знали об этом. Или пул объектов.
    Например везде где есть базы данных - он используется. Или фабрика. Да я и сам их не знаю. Надо будет
    почитать - почитаю. Но для собеса - выучи хотя-бы классификацию. Они там разбиты по категориям
    как порождающие, поведенческие и так далее. Как в химии например. Я химию не знаю но примерно
    догадываюсь что есть кислоты и щелочи. Что действие их взаимо-нейтрализующее.

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

    Нет нет это - чепуха. И это тебе не надо. Никто этот код все равно смотреть не будет (вообще никогда
    сцуко не смотрят).

    Главный совет. На собеседовании ты должен непрерывно говорить. Как оратор с трибуны. Тебя
    должны остановить когда - достаточно. Но если ты сказал 2 предложения и замолчал - это выглядит
    как будто ты не знаешь или не уверен в себе.

    Для проверки - закажи тестовое собеседование у друзей. Пускай они тебя поспрашивают. И запроси
    фидбек. Пускай они честно ответят что не понравилось. Записывай все пункты. Повторяй учебное
    собеседование до тех пор пока все будут довольны.

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

    syamskoy
    @syamskoy
    У вас код написан с синтаксисом PHP 8, а запускаете вы код на более старой версии PHP, которая не понимает этот синтаксис. Конкретно речь идёт об именованных аргументах. Обновите PHP или пишите без имен аргументов.
    Ответ написан
    Комментировать
  • Kubernetes, десятки configmap и как это готовить?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    У вас просто организационная проблема, нужно переделать архитектурный подход.

    В глаза кидаются мелочи типа

    В каждом сервисе подключен бутстрап конфиг, в котором подключены 4-5 конфигмапов дополнительно

    А почему у вас несколько конфигмапов на одно приложение, а не один конфигмап?

    При выдаче изменений версионных, в основном, требуется к примеру в 10-и конфигах сделать изменения

    Почему из-за изменения версии, нужно делать изменения в конфигмапах, тоже неясно. Что-то себе придумали, и при масштабировании оно оказалось неудобным.

    По итогу можно провтыкать изменить на каком-то окружении параметр, и всё..окружения уже не одинаково настроены.

    Делать статические параметры, и в конфигмапы выносить исключительно environment-related опции.

    По вашему вопросу никто не скажет решения. Это нужно сесть и переделать.
    У меня свыше 100 компонентов, десяток енвайрнментов. Конфигмап один на неймспейс, секрета два на неймспейс, в принципе достаточно.
    Ответ написан
    2 комментария
  • Kubernetes, десятки configmap и как это готовить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут читается не техническая а организационная проблема.

    Не очень понятно но попробую дать совет.

    Вот ты говоришь что требуется в 10 конфигах сделать изменения.
    Какие? Они - взаимосвязаны? - Это должен быть 1 коммит в git.
    Эти все изменения должны быть просмотрены глазами хотя-бы несколькими людьми.
    Если цена изменения дорого стоит (инфраструктура) то по любому должна
    быть бригада девопсов. Они - страхуют друг друга от случайной ошибки.
    Если ты будешь брать на себя падения датацентров - то очень скоро
    станешь пациентом кардиолога. Бери коллег для подстраховки.

    Константы и зависимости - надо объявлять отдельно. Чтоб если меняется hostname
    или имя свойства - то это должно быть ровно одно изменение. Как поддержать
    константы в конфигах - я щас не помню но была куча всяких штук... толи Puppet
    толи Ansible вобщем поищи сам. Я думаю таких много конфигураторов.

    Когда несколько environments то на проекте создается просто несколько фолдеров типа
    /dev
    /qa
    /uat

    и в каждом фолдере лежит полностью сконфигурированная и оттестированная
    копия всех конфигов. Переключение между env тоже должны происходит
    изменением ровно 1 свойства.

    Если внутри конфигов есть некая базовая конфигурация которая очень похожа
    (прототип) то сделайте аналог COC (Convention Over Configuration). Пускай
    прототип будет всегда. А наследники dev, qa, uat будут просто изменять
    дельту. Пароль поменялся - в конфиге-наследнике - лежит ровно 1 строчка с паролем.
    Других строк - не надо. Потому что они наследуются от прототипа.

    Как технически реализовать COC - я не скажу. Это надо обсуждать. Я это делал
    на Java проектах но это как-бы идея "на подумать". На проектах у меня были
    *.properis файлы и эту конвенцию было реализовать несложно. С ЯМЛ ами я не делал.
    Ну думаю что это возможно. Почему нет?
    Ответ написан
    2 комментария
  • Как реализовать зависимость аргумента одного класса от другого класса?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Соглашусь с предыдущими комментаторами, пример СЛИШКОМ высосан из пальца, чтобы по нему давать какие-то рекомендации.
    Но в целом, бак должен быть отдельным объектом в составе машины, а никаким не "аругментом".
    И у него может быть метод consumeFuel(miles)
    Который может принимать длину дороги в качестве аргумента, и уменьшать количество топлива в соответствии с заложенной формулой.

    Car.Tank.fillMax()
    print Car.Tank.getLevel()
    Car.Тank. consumeFuel(Road.length)
    print Car.Tank.getLevel()

    По поводу последнего варианта - всегда исходите из здравого смысла. Может ли быть дорога частью автомобиля? Нет, это очевидная бессмыслица. Дорога может быть частью поездки. Как и автомобиль. Вот в рамках объекта Trip они вполне могут взаимодействовать друг с другом.

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

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

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

    В одном соглашусь с ними: никогда не нужно делать два дела одновременно: и решать конкретную задачу, и учить новые концепции.
    Поэтому лучшим вариантом написания кода будет такой: сначала наговнякать процедурный, но рабочий вариант.
    А потом заняться его рефакторингом: посмотреть, какие можно использовать классы, как они могут взаимодействовать.
    Ответ написан
    4 комментария
  • Что такое событие в ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В первоначальном варианте ООП Аллана Кея было событие. Грубо говоря Кей считал объекты акторами.
    И от этого рисовал своё видение разработок. Но его кунг-фу не полетело в свое время. Слишком рано
    было.

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

    Событие может появляться например как абстракция прикладного уровня в библиотеках типа MFC
    которы должны были работать с UI и регистрировать мышко-клики и прочее. Но там была ОС которая
    обеспечивала буфер событий. Отдельный life cycle для каждого из них. Вот. А языс Microsoft Visual C++ / MFC
    предоставляли как-бы фреймворк который регистрировал хендлеры и там соотв. эти события ловил и обрабатывал. Но это было сами понимаете никакое ни ООП. А это была очередная абстракция от Microsoft
    которая по их задумке должна была упрощать процесс разработки графического софта.

    В Borland C++ тоже есть свои абстракции для событий. Но они тоже лежат как-бы отдельно от языка. Скорее
    во фреймворке или в библиотеках.

    Откуда в PHP-OOP вдруг появляется событие? В ключевых словах PHP есть class, trait, function, abstract, extends.

    Но никаких event нету. Осталось задать вопрос. Кто вообще дает такую информацию? Что за курсы? Что
    за книга? Что за преподаватель?
    Ответ написан
    3 комментария
  • Какой дистрибутив Linux пойдёт на мой ноутбук для веб разработки?

    Adamos
    @Adamos
    Вопрос некорректен. В использовании этого ноутбука для веб-разработки дистрибутив Линукс будет играть довольно незначительную роль.
    Веб-разработка в современном IDE просто невозможна на таком процессоре и памяти, ОС тут не поможет.
    Вам придется выгадывать, какой бы браузер и редактор поэкономнее запустить - и если вы еще и виртуальный сервер у себя хотите поднять, то без добавления памяти вы просто сотрете SSD свопом, при этом будете работать в режиме ожидания, когда же оно наконец зашевелится.
    Ответ написан
    4 комментария
  • Почему $PATH постоянно сбрасывается?

    у вашего юзера небось логин шел по умолчанию был не баш
    как узанть
    grep $(whoami) /etc/passwd | cut -d : -f 7
    
    /bin/bash

    как поемнять
    usermod --help

    там написано как шел заменить

    -s, --shell SHELL             new login shell for the user account
    Ответ написан
    Комментировать
  • Каким образом стоит соединить оптоволкно с витой парой?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну, если уж бюджет не ограничен, то коммутаторы CRS510-16XS-2XQ. 100Gb между коммутаторами, 25Gb до клиентов. В клиентские компьютеры сетевые карты с SFP28.
    Ответ написан
    4 комментария
  • Как из функции вытащить переменную?

    Эта функция и так возвращает его при вызове.
    Это колбек, и если у вас возникает подобный вопрос - вы скорее всего так и не поняли как он работает.

    Так что лучше описать задачу, которую вы пытаетесь с его помощью решить.
    Ответ написан
    2 комментария
  • Почему столбцы после создания триггера mysql нельзя изменять?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Из триггера нельзя изменять таблицу, которой он принадлежит. Иначе получится бесконечный каскад вызовов триггера.
    Вам просто надо изменить значение поля globalnum
    --UPDATE stats SET NEW.globalnum = NEW.num1 + NEW.num2;
    ++SET NEW.globalnum = NEW.num1 + NEW.num2;

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

    Fragster
    @Fragster
    помогло? отметь решением!
    Нужно класть задание в БД, получать в фоне, класть в БД ответ, затем на клиент прокидывать через пушер/аналог или если лень его настраивать - то с клиента раз в 5 секунд дергать "уже готово? а сейчас?"
    Ответ написан
    1 комментарий
  • Как увеличить скорость загрузки данных в Mysql?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    самое быстрое - чтенгие из файла, csv в MyISAM потом замена на innodb или другой движ
    медленнее - убивание индексов из SQL сценария и ручное создание после
    ну и самое медленное AS IS

    а тае настройки до Ж все, в пределах 50% идеале процентов прирост
    Ответ написан
    7 комментариев
  • Как можно использовать Foreign Key?

    Очевидный пример:
    Допустим у тебя есть таблица с домашними животными и таблица с хозяевами домашних животных.

    Чтобы указать у животного, кто его владелец - ты заводишь колонку "идентификатор владельца".

    И вот чтобы гарантировать, что эта колонка всегда содержит реально существующий идентификатор, и что, например, никто не удалит владельца, к которому привязаны какие-то животные - ты можешь завести foreign key.

    В случае попытки удалить запись о владельце, на которого кто-то ещё ссылается, или при попытке указать несуществующий ИД - СУБД выдаст ошибку, что было нарушено ограничение.
    Ответ написан
    4 комментария
  • Если удалить ветку, то что происходит с дочерними ветками?

    egor_nullptr
    @egor_nullptr
    Ветка - это указатель на коммит. Удаляя ветку, вы удаляете указатель, если на этот коммит больше нет указателей, то он "потеряется" (найти его можно будет только через git reflog).
    Ответ написан
    Комментировать
  • Какой язык программирования выбрать для изучения основ работы с алгоритмами и структурами данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Алгоритмы и структуры данных тесно связаны с зубо-дробительными бенчмарками. Как-то отсортировать терабайтный текстовый файл или найти два одинаковых числа в файле из чисел тоже большого размера.
    Иногда такие задачи задают на собеседованиях Google и Microsoft.

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

    В структурах данных важно также оценивать память "на глазок".

    В этом смысла кодер С++ имеет много преимуществ т.к. он видит и понимает как распределяется память
    в узле бинарного дерева например (два указателя по 64 бита + какой-то размер для ключа который тоже
    можно посчитать). Какой аллокатор брать? Встроенный в язык new или нужно делать собственный.
    Такой расчет важен для оценки например - применима ли структура данных вообще?
    Какой толк от дерева если оно не влезет в оперативную память? А падение памяти в swap - тут-же замедляет
    алгоритм в разы.

    JS и Python не предоставляют тонкого контроля над памятью. У них своя модель построенная для комфорта
    самого процесса разработки а вовсе не для струткуры данных.
    Ответ написан
    Комментировать
  • Что лучше, по одной или несколько записей при INSERT?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Имеется система логов, которая довольно часто вызывается, при пиковых значениях достигает до 30-40 записей в секунду. Использую engine ARCHIVE, сервер MariaDB, подключение по unix сокету.

    Имеет ли смысл собирать кучу данных допустим 50 записей и потом одним запросом добавлять 50 записей.

    Смотри. Писание логов в Марию - это как по мне лишнее. Оверинжинеринг. В наше время логи собирают logstash-ем и пишут в Кибану. Там для каждого формата есть свой парсер. Для Ninx, Apache e.t.c.

    Если тебе прям сильно-сильно надо писать логи в реляционную систему (очевидно что-то джойнить с логами) - то пиши максимально большой пачкой. Хоть 1000 штук. Сколько позволяет размер фрейма в этом unix socket. (Кстати какой он там?) А чорт его знает. Но.... если ты записал 999 записей а последняя еще не пришла, а тебе срочно нужно глядеть в базу - тогда делай периодически сброс по времени. Например через 3 секунды от начала пачки ты будешь делать insert независимо от того сколько строк накопил.

    Вот так.
    Ответ написан
    Комментировать