Задать вопрос
  • Как разработчики пользуются Git в компаниях?

    @alexalexes
    В серьезных компаниях невозможно состояние гонки релизов, которую вы описали.
    Во-первых, информационная система используется не в одном экземпляре. Всегда есть как минимум продакшен экземпляр, предпродакшен и девелоп экземпляры системы. В предпродакшен и девелоп версии могут загружаться не только разные релизы кода, но и гонятся разный набор данных для отладки и тестирования.
    К этим экземплярам и набору данных имеют доступ разные работники, с разным уровнем допуска и ответственностью. Рядовой разработчик не будет иметь доступ в продакшен и предпродакшен, для него вышестоящий работник сформирует девелоп версию и подготовит нужный набор данных, который нужен именно для решения его рабочей задачи. Также рядовой разработчик не будет иметь полный доступ к действиям в репозитории, он может действовать только в рамках своей дев ветки, никто ему не даст прав сливать в мастер.
    Для каждой новой разработанной функции пишутся автоматические тесты, как минимум с одним тестом, что она включается, эти тесты пишет отдельный контингент работников.
    Прежде чем код попадет в продакшен, он будет просмотрен вышестоящим работником, его функционал будет протестирован сначала на тестовых данных, потом на боевых, с каждого теста будут сняты метрики не только по возникающим ошибкам, но и по производительности.
    Уже на основе всех этих данных и будет принято решение компетентным работником вливать ваш функционал в прод или нет. Вместе с этим будет принято решение на слияние в мастер в репозитории.
    Ответ написан
    Комментировать
  • Почему ethernet не заменят на type-c?

    @alexalexes
    type-c это не только разъем, но и отдельный стек протоколов от нижнего уровня. Причем он сильно платформозависимый. Ничего не мешает создать роутер с чисто разъемами USB, только вам придется бегать с флешкой к каждому компу и устанавливать драйвер, чтобы обеспечить ethernet over usb. А для передачи по чистому ethernet не нужно даже, чтобы устройство обладало универсальным процессором с ОС на борту, достаточно любого примитивного микроконтроллера, способного воспроизводить последовательность импульсов и выдерживать кадр.
    Ответ написан
    Комментировать
  • Как выставить приоритет подключения(трафика) для отдельного девайса?

    @alexalexes
    Никак, надежность и скорость соединения будет всегда зависеть от уровня сигнала в первую очередь, во вторую очередь от занятости канала связи.
    Необходимо кинуть кабель от роутера до ноута, чтобы не зависеть от состояния эфира.
    Либо все равно кинуть кабель от существующего роутера до комнаты с ноутом и поставить туда еще один роутер - к нему подключаться как к отдельной точке доступа.
    Либо заменить существующий роутер на два новых, которые могут в mesh-сети - чтобы можно было расширить зону покрытия одной сети, а также иметь каналы на 5 ГГц, чтобы потребители трафика не задыхалить от нехватки полосы пропускания (потребители также должны уметь в 5 ГГц, и нужно иметь ввиду, что 5ГГц не такая пробивная, как 2.4ГГц).
    Ответ написан
    Комментировать
  • В чём может быть проблема с интернетом?

    @alexalexes
    Нужно настроить PPPoE подключение на компьютере для прямого кабельного соединения с провайдером.
    Когда нет проблем - подключаться к провайдеру через роутер.
    Когда проблема появится - перейти на прямое кабельное соединение (убрать из подозреваемых роутер).
    Прогнать различные тесты:
    1. Speedtest на разные серверы, а не только на тот, который выбран автоматически.
    2. Покачать торрентом популярную раздачу.
    3. Скачать большой файл. Можно, например, скачать iso образ Ubuntu на пару гигов.
    После этого сделать вывод, какой вид трафика ограничивается (и не виноват ли роутер), и обращаться с этой проблемой к провайдеру.
    Ответ написан
    Комментировать
  • Как вывести по 5 максимальных значений в строках из каждой категории?

    @alexalexes
    select A.*
           from
           (
           select B.*,
                  row_number() over (partition by B.nomin_id order by B.countUser desc) rwnm -- партишином задаем область счета строк, а сортировкой - порядок счета
                  from
                  (
                  SELECT count(user_id) countUser, nomin_id,  film_id
                  FROM votes
                  GROUP BY  film_id , nomin_id
                  ) B
           ) A
    where rwnm <= 5 -- берем по этому количеству от каждого локального счета

    См. оконную функцию row_number для MySQL 8+ версия, либо MariaDB. Но учтите, что MySQL 5 не поддерживает оконки, в ней свои костыли есть в виде использования переменных с @.

    Но всего в таблице 25 000 строк запрос выполняется 30 секунд, а потом крах.

    Индексы на каждый из атрибутов user_id, nomin_id, film_id нужно создать, тогда будет пару сотен миллисекунд выполняться.
    Ответ написан
  • Есть ли разница в высшем образовании?

    @alexalexes
    Если в названии организации, куда планируете поступить на работу, вы не видите слов государственное/бюджетное/казенное, то наличие профильного образования не будут рассматривать как обязательный пункт. Трясти вас будут за наличие опыта в определенной области IT и базового понимания, а чем вы, собственно, занимаетесь. От этого будет напряжно даже человеку с профильным дипломом. Даже если вы закончите вуз (пишется маленькими буквами), то вы все равно будете штудировать технологии, указанные в пунктах вакансий, самостоятельно, чтобы чувствовать себя уверенно на собеседовании.
    Ответ написан
    3 комментария
  • Как в Windows подать звук на несколько устройств вывода?

    @alexalexes
    Есть две пары 3,5мм колонок и 1 блютузовская.

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

    @alexalexes
    1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";1;"Дата рождения";1;"13.09.1986"
    1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";2;"Пропуск";2;"123-456789"

    Вот это перерабатывайте в подходящее представление в том процедурном языке, откуда выполняли запрос.
    То, что вы пытаетесь сделать - это не задача для SQL.
    Ответ написан
    2 комментария
  • Можно ли составить mysql запрос с выборкой не определенного множества полей?

    @alexalexes
    Можете, но свойства будут не в пределах строки (горизонтально), а в пределах колонки (вертикально).
    С помощью SQL вы можете, не забивая микроскопом гвозди, извлечь вот такой результат:
    Ручка; Цвет; Синий;
    Ручка; Цена; 10
    Нож; Материал; Дерево;
    Нож; Цена; 200;
    Нож; Рукоятка; Дерево; 
    Нож; Фото; Есть;

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

    @alexalexes
    если в Mysql какие-то строки смогут загрузиться, а какие-то - нет,

    Не бывает тут вариативности, даже случайной.
    Можете внести одну или несколько строк запросом insert (или несколькими insert-ами по одной строке, а может еще где-то update-ом или delete-ом пробежитесь). Но фиксация этих действий будет происходить, если после запросов на вставку/изменение/удаление явно будет отправлена команда commit или rollback (а может и не явно, см. что такое autocommit).
    До поступления этих транзакционных команд ваши изменения будут копиться во временном буфере СУБД и будет блокировать объекты СУБД до того момента, пока не поступит транзакционная команда (или не наступит ситуация для autocommit). Для других пользователей СУБД изменения заблокированных объектов будет недоступно, только чтение той версии объекта, которая была до наложения блокировки (не всегда таков принцип, см. что такое уровни изоляции транзакций).
    Ответ написан
    Комментировать
  • Как упростить код суммы строк?

    @alexalexes
    4*1-2
    Точно 1 а не i ?
    Имейте привычку трассировать тело цикла, раскладывая непонятное выражение на составные части (а лучше сразу писать так, чтобы анализировать проще было человекам) и писать эти части куда-нибудь в консоль/лог-файл и т.д. (не знаю, чем пользуются в VB для "быстро выгрузить что-то и посмотреть отладочные данные").
    _A = WorksheetFunction.sum(range(Cells((4*1-2),3), Cells((4*i+1),3)))
    _B = Cells((4*1-2),3)
    _C = Cells((4*i+1),3)
    _D = 4*1-2
    _E = 4*i+1
    Ответ написан
  • Как получить более глубокие знания?

    @alexalexes
    "Найди компанию с крутой командой"

    Именно так. Ищите вакансию с требованиями по навыкам, классом чуть выше, чем вы предполагаете у себя. Готовитесь к собеседованию - подтягиваете знания по булитам в списке требований, где конь не валялся (как там с английским языком? а что там используется на стыке технологий в этом участке стека сейчас? какими средствами версируется проект? как распределяются зоны ответственности разработчиков и какие роли существуют?). Проваливаете 5-10 собеседований, наконец, худо-бедно устаиваетесь на желаемую позицию.
    На этой позиции уже изучаете кухню подробнее, естественно, в свободное от работы время тоже.
    Ответ написан
    1 комментарий
  • Как парсить большое количество сайтов?

    @alexalexes
    Помещаете свой массив с 4000 элементами в таблицу базы данных.
    Добавляете еще несколько атрибутов для записи таблицы:
    1. статус обработки парсинга, значения: 1 - добавлен в очередь на обработку, 2 - в обработке, 3 - обработка завершена.
    2. Дата и время изменения статуса обработки.
    Теперь ваш скрипт должен взять запросом из таблицы базы одну запись (один сайт) со статусом 1 (или со статусами 2 или 3, с разницей времени больше периода повторной обработки парсинга) и перевести в статус 2 и начать обработку. По окончании обработки выставить статус 3. При смене статуса обновлять его время изменения.
    Анализировать статус и переводить его в статус 2 нужно одной транзакцией, а в статус 3 - другой транзакцией.
    Если время выполнения персинга с момента старта скрипта небольшое (определяете предельное время работы одного потока и с ним сравниваете), то можно взять следующую запись в работу.

    Все, теперь вы написали простетский планировщик задач и можете параллельно запустить несколько скриптов через браузер или через cron на сервере. Каждый поток выполнения скрипта запросом в базу будет брать задачи, поставленные в обработку, либо перезапускать давно не запускавшиеся задачи, либо перезапускать зависшие в обработке.
    Ответ написан
    Комментировать
  • Зачем нужен блок инструкций без управляющей инструкции?

    @alexalexes
    var currentExtraStackFrame = null; // это нужно, чтобы не словить предупреждение в консоль undefined variable/property при обращении к свойству currentExtraStackFrame
    // этим методом вы задаете какое-то значение для свойства currentExtraStackFrame, если его нужно привести в какое-то не null значение (или вернуть в null - значение по умолчанию).
    function setExtraStackFrame(stack)
    {
      // if() тут может была лексема if, можно просто ее закомментить и не убирать скобки, чтобы git не анализировать их исправление, и так будет работать
      {
        currentExtraStackFrame = stack;
      }
    }
    Ответ написан
    2 комментария
  • Можно ли протирать монитор средством для чистки оптических поверхностей, если при этом нельзя использовать органические растворители?

    @alexalexes
    В протирке любой поверхности без разводов главной хитростью является то, что у вас должно быть две тряпочки: одна для нанесения жидкости (влажная тряпочка), другая - для удаления жидкости с поверхности (сухая тряпочка).
    При этом, не обязательно использовать состав с очищающими свойствами. Подойдет обычная вода (но для надежности можно взять фильтрованную).
    Ответ написан
    Комментировать
  • Какую установить память на ASRock D1800m?

    @alexalexes
    Посмотрите, какая у вас стоит планка памяти. Если 8Gb / 1333, то купите с таким же объемом и такой же пропускной способности. И это будет предел. Улучшать на вашей материнке больше ничего нецелесообразно, только менять ее вместе со всеми комплектующими.
    PS: Если у вас потребление памяти не упиралось в 100%, то покупка доп. планки не решит проблему. Скорее всего у вас проц. нагружается под 100% при любом вздохе.
    Ответ написан
  • Почему ноутбук виснет на определении ide устройств?

    @alexalexes
    Если ноутбук поддерживает загрузку с USB, то можете попробовать записать на флешку Alkid live CD (присутствует в комплекте к ZverCD / ZverDVD) и загрузить на ноутбуке эту ОС. Далее, зайти в "Диспетчер устройств" и посмотреть, какие есть устройства "Контроллеры IDE ATA". Eсли не очевидно их присутствие, то можно воспользоваться программой AIDA64 (в старой версии она называется Everest, присутствовала в комплекте утилит live CD) - там просмотреть наличие дисковых контроллеров.
    Если они ни в каком виде не обнаруживаются в системе, то скорее всего проблема в чипсете ноута.
    Ответ написан
    2 комментария
  • Как использовать часть URL как переменную?

    @alexalexes
    Типичный кейс, как использовать GET-параметры, если известен их список допустимых значений.
    <?php
    // список допустимых значений переменной $channel
    $allow_channel_list =  ["svm.sport" , "svm.music" ,  "svm.loop"];
    // значение по умолчанию
    $default_channel = "svm.best";
    // если в GET-параметрах присутствует ключ channel и значение по ключу входит в список допустимых значений...
    if(isset($_GET['channel']) && in_array($_GET['channel'], $allow_channel_list))
    {
    // ..., то переменная равняется этому значению  
      $channel = $_GET['channel'];
    }
    else // иначе, берем значение по умолчанию
      $channel = $default_channel;
    ?>
    
    <!DOCTYPE html>
    <html>
       <head>
          <title><?php echo $channel; ?></title>
    <!-- ... БЛА-БЛА-БЛА -->
    
    <?php
    // <!-- ... БЛА-БЛА-БЛА -->
    
    ?>

    Использовать так:
    test.php?channel=svm.best
    Ответ написан
    2 комментария
  • Как сделать DISTINCT для двух полей?

    @alexalexes
    Нужно воспользоваться какой-нибудь агрегирующей функцией (min, max, avg, sum, count и т.д.) и по ней группировать.
    Зависит от того, какой результат хотите получить.
    SELECT brand_name, any_function(indeks_shvidkosti) as func_indeks_shvidkosti
      FROM tires
    group by brand_name
    ORDER BY brand_name ASC

    ПС: Если вы используете Distinct, значит где-то что-то не учли в требованиях к структуре данных, что вам приходится избавляться от дублей.
    Ответ написан