Задать вопрос
  • Идти ли на аутстаф как на первую работу програмистом?

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Как уже было сказано - это называется IPC
    Если нужно обмениваться данными, то можно использовать техники:
    - Сокеты: TCP/IP можно практически везде, Unix-domain - только в unix системах, но будет быстрее
    - Сигналы: можно передавать данные вместе с сигналом, но только int/указатель, т.е. вариантов не много
    - stdout/stdin: при создании дочернего процесса получить его stdout/stdin потоки и работать с ними
    - Каналы: можно создать канал (анонимный или именованный) и общаться через него
    - Внешний сервис для общения: какой нибудь RabbitMQ, но это чересчур
    - Общая память (Shared Memory): но может не работать во некоторых ЯП
    - Общение через файлы: один процесс пишет в файл и по окончании шлет сигнал другому процессу, который этот файл читает
    - Memory Mapped File : тот же вариант, что и с файлами, но быстрее и при больших данных можешь словить OOM и большое потребление памяти
    - ZeroMQ - это очередь сообщений, которая работает в user-space

    Дополнительно надо помнить, что есть ограничения различных платформ, ОС, ЯП и некоторые варианты там работать не будут
    Ответ написан
    Комментировать
  • Как максимально быстро найти в диапазоне IP-адресов или подсетях нужный IP-адрес?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вообще, лучшая структура данных для этого - trie. Диапазоны, я уверен, идут так, что там фиксированно сколько-то начальных бит, а все оставшиеся - любые - все попадают в эту подсеть. Более того, все эти коды префиксные - ни один не будет началом другого.

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

    Если хотите использовать существующие БД, то можно сохранить в любой реляционной базе данных начала диапазонов. По запросу IP вам надо найти последнюю стороку не больше его. Буквально
    where range_start <= IP order by range_start desc limit 1
    .

    Смотрите только аккуратно, что сравнивать их надо как битовые строки/32-битные числа, а не просто как строки. Ибо должно выполнятся 127.0.01 > 8.8.8.8. Сравнение как строки же не сработает. Или храните как битовые строки, или преобразуйте в числа, или нулями отбивайте октеты, короче трех символов.

    Раскрывать все 4 миллиарда айпишников в отдельные записи - вообще не работающая идея.
    Ответ написан
    Комментировать
  • Как максимально быстро найти в диапазоне IP-адресов или подсетях нужный IP-адрес?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    В PostgreSQL есть специальный тип данных для хранения адресов и набор функций для работы с ними
    Ответ написан
    Комментировать
  • Как числа из строки поместить в массив?

    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 комментариев