Задать вопрос
  • Что не так с функцией?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Настал момент познакомиться с такими понятиями, как отладка и безопасное выполнение SQL запросов.

    Программисты не задают посторонним вопрос, "почему мой код не работает".
    Они задают его своему коду.

    Вы уже начали отлаживать свой код, выводя промежуточные результаты. Это очень хорошо. Но почему-то тут же остановились

    Ну если запрос не находит записей - разве не логично вывести его на экран и посмотреть, что с ним не так.

    А после того, разберётесь с запросом, надо будет его переписать на подготовленные выражения. Потому что вот это вот - это какой-то позор
    Ответ написан
    Комментировать
  • 2 DNS в одной сети AD домена?

    @mezhuev
    Системный администратор
    1. В параметрах сервера DNS в AD укажите сервером пересылки ваш AdGuard.
    2. У пользователей оставьте только DNS в AD.
    Ответ написан
    4 комментария
  • Что лучше выучить, Java или C#?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Язык является инструментом. Важны ваши навыки, как разработчика (алгоритмы, структуры данных, понимание tcp/ip и т.д.)
    Что касается выбора языка, то ориентируйтесь на:
    - что вы собираетесь на нем делать и кем планируете работать. Если например, речь о геймдеве, то конечно же C# (Unity) или C++. И тут Java ну никак... хоть и позволяет писать игры. Если enterprise, то да, тут уже можно выбирать между Java & C#.
    - ориентируйтесь на то, где вы планируете работать. Возможно, что вы в результате вашего исследования поймете, что Java популярнее C# (или наоборот), но на деле окажется, что в вашей стране/городе она вовсе не популярна. Соответственно, посмотрите какие компании есть у вас в городе (если планируете работать офлайн) и изучите их стек.
    Ну и конечно же пробуйте. Я например, пока дошел до Java, успел попробовать PHP & JavaScript. В любом случае, когда вы станете востребованным и опытным специалистом, то уже будете владеть несоклькими языками.
    Ответ написан
    Комментировать
  • Как отключить кулер на C#?

    Сначала узнаём, через что в принципе можно программно управлять вентиляторами:
    https://stackoverflow.com/questions/485448/program...
    Узнаём, что вентиляторы управляются через SuperIO, а к SuperIO можно обратиться через MMIO/PMIO.
    К MMIO/PMIO можно обратиться только на уровне ядра - значит нужен свой драйвер, либо какой-то уже существующий софт, у которого есть API, к которому мы можем обратиться.

    За своими драйверами идём сюда: https://docs.microsoft.com/en-us/windows-hardware/...
    За существующими: https://github.com/starofrainnight/winio

    Потом вызываешь его через P/Invoke

    Кажется, на хабре ещё не так давно статья была про такое, но не могу её найти.
    Ответ написан
    Комментировать
  • Откуда в MySQL Workbench постоянно берется схема mydb и как от нее избавиться?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Очень мешает откуда-то самопроизвольно возникающая схема mydb, которую я не могу удалить.

    Проверьте свойства (подключения, профиля) - возможно, именно это имя БД указано как база по умолчанию. И добрый Workbench, чтобы не плеваться ошибками на несуществующую БД, просто создаёт её. Или БД по умолчанию вообще не указана, и Workbench вытаскивает это имя откуда-то из своего загашника с дефолтными значениями.

    таблицы стали создаваться именно в ней, а не в той схеме с которой я работаю

    Если при создании таблицы указано её имя с указанием имени БД (CREATE TABLE dbname.tablename ( .. );) - таблица будет создана именно в указанной БД. Если же имя БД не указать - таблица создаётся в текущей БД. Почему у Вас именно эта БД текущая, и почему Вы не меняете её перед созданием таблиц запросом USE - это именно к Вам вопросы, и именно Ваша вина в том, что таблицы создаются "не там".
    Ответ написан
    2 комментария
  • C# - плавающий глюк - насколько правильно исправил?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    Подпишись на событие FormClosing (если ещё не подписан) и в его обработчике отпишись от обработчиков событий TitleChanged, AddressChanged, LoadingStateChanged:
    public partial class BrowserMain : Form
    {
        public BrowserMain()
        {
            InitializeComponent();
            
            WebBrowser = new ChromiumWebBrowser(
                string.IsNullOrWhiteSpace(address) ? "about:blank" : address)
            {
                // ...
            };
    
            Controls.Add(WebBrowser);
    
            WebBrowser.TitleChanged += WebBrowser_TitleChanged;
            WebBrowser.AddressChanged += WebBrowser_AddressChanged;
            WebBrowser.LoadingStateChanged += webBrowser_DocumentCompleted;
        }
    
        private void BrowserMain_FormClosing(object sender, FormClosingEventArgs e)
        {
           // После вызова этих строк методы WebBrowser_TitleChanged, WebBrowser_AddressChanged
           // и webBrowser_DocumentCompleted не будут выполняться. 
           // Это и не нужно, так как окно закрывается.
            WebBrowser.TitleChanged -= WebBrowser_TitleChanged;
            WebBrowser.AddressChanged -= WebBrowser_AddressChanged;
            WebBrowser.LoadingStateChanged -= webBrowser_DocumentCompleted;
        }
    }
    Ответ написан
    3 комментария
  • Заниженные тайминги ОЗУ режут чтение и запись?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    тайминги - время ответа, чем меньше - тем лучше, тут ты прав.
    Твоя ошибка в том, что ты смотришь только на тайминги, а кроме них есть ещё частота.
    При разгоне таймингов, частота понижается(на сколько я помню, трогал биос в последний раз лет 5 назад). А на скорость работы влияет и частота, и тайминги. При этом высокая частота в дефолтном случае для дефолтного пользователя - лучше. Каждый случай конкретен, но предполагаю, что в твоём случае понизив тайминги ты пониизил и частоту, и скорость работы стала меньше чем было до этого.

    И железное правило - если не понимаешь что делаешь - верни всё как было, и больше не трогай, лучше почитай про устройство памяти. Когда прочтёшь и будешь понимать что к чему, тогда уже делай что хочешь.
    Я серьёзно, сейчас ты полезешь разгонять процессор, а там вольтаж добавлять скорее всего нужно будет, и гнать его скорее всего нужно будет по шине, а шина гонит всё остальное, в т.ч. оперативку. Спалишь что-нибудь, короче, а сейчас техника не то чтобы дешёвая.
    Ответ написан
    2 комментария
  • Как спарсить динамический сайт?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Берете Selenium - и вперед...
    Ответ написан
    4 комментария
  • Что можно попробовать сделать для восстановления жёсткого диска?

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Задачка, конечно, очень смешная.
    И как всегда - на арифметику

    Шкала у нас нелинейная, первый шаг 100 единиц, последний - 2000.
    Но при этом для вычислений мы берём не позицию шага, а его значение.
    Ну и разумеется получаем то, что получаем.
    250 от 3000 - это никакие не "примерно 50 единиц", а примерно 8 процентов. Вот эти 8 процентов вам и показывает.

    Длина отрезка при разбивке на 5 частей будет 20%
    И вот 8 от 20 как раз и составляет те самые "примерно 50" процентов длины первого отрезка :)

    Выше товарищ правильно пишет про отладку.
    Но отладка в обязательном порядке состоит из двух вещей:
    1. Надо понимать, что делает твой код. В частности, иметь представление, какое значение каждая переменная должна иметь на каждом этапе.
    2. Запускать код, выводя промежуточные результаты, и сравнивая их с ожидаемыми.

    Без п.1 заниматься отладкой бессмысленно.
    Именно поэтому для программиста очень важно понимать, как работает его код. Иначе он просто не сможет его отладить.
    Ответ написан
  • Перенос файлов между серверами без моего участия?

    команда screen запустит автономную сессию, от которой можно отключиться и потом подключиться снова.

    В сессии screen, уже не боясь оставить/отключиться, вместо scp, может, удобнее воспользоваться rsync — он зипует, что может ускорить передачу:
    rsync -avz /var/www/projectOldName  user@newserver.example.com://var/www/projectNewName

    И нажать Ctrl + A, D — чтобы покинуть работающий вирт. терминал и спокойно отключиться от SSH. Позже, когда снова зайдете, командой screen -r снова подключитесь к оставленной сессии.
    Ответ написан
    Комментировать
  • Как правильно установить Qt Creator для всех пользователей компьютера?

    pavelsha
    @pavelsha
    Кот Жрëдингера. Только добрый.
    Сисадмин имеет низкую квалификацию. Не учел при установке, что программой будут пользоваться пользователи с рядовыми правами.

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

    Часто, все, что нужно сделать, чтобы сделать программу доступной для всех пользователей на компьютере, - это скопировать эти ярлыки в место, к которому могут получить доступ все пользователи, такие как Public Desktop или меню «Пуск». Для этого:

    Найдите ярлык (ы) приложения в учетной записи пользователя, выполняющего установку. Общие места, где создаются иконки:
    Меню Пуск пользователя:
    C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 1
    Рабочий стол пользователя:
    C:\Users\\Desktop 2
    Скопируйте ярлык (ы) в одно или оба из следующих мест:
    Рабочий стол всех пользователей:
    C:\Users\Public\Public Desktop
    Меню Пуск всех пользователей:
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs 3

    1 Также доступно через %APPDATA%\Microsoft\Windows\Start Menu\Programs
    2 Также доступно через %USERPROFILE%\Desktop
    3 Также доступно через %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
    Ответ написан
    3 комментария
  • Как помочить ноги в алготрейдинге?

    @rPman
    изучать стоит, хотя бы потому что знания никогда лишними не бывают
    рабочий алгоритм в алготрейдинге это какой?

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

    алгоритм, умеющий приносить прибыль? извини, это святой грааль всех трейдеров, на коротком промежутке времени (даже год другой) у кого то получается, но рано или поздно этот алгоритм ломается (мир меняется), сливая депозит так что вовремя это нужно обнаружить, и нужно искать новый
    Ответ написан
    5 комментариев
  • Насколько мой код читабелен?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    С ходу же:
    try
    {
        if (from > to)
            throw "Incorrect couple 'from - to' for generating random numbers";
    }
    catch (const char *message)
    {
        std::cerr << message << '\n';
        exit(1);
    }
    Зачем нужен такой изврат, если вы ловите исключение сразу же? Чем хуже
    if (from > to)
    {
        std::cerr << message << '\n';
        exit(1);
    }


    bool init(IntList1D &list, int number)
    {
        if (list == nullptr || *list == nullptr)
        {
            if (list == nullptr)
                list = new IntList1D_element *;
            *list = new IntList1D_element(number);
            return true;
        }
        return false;
    }
    Чем меньше глубина вложенности, тем лучше. Ранний выход из функции лучше, чем выход в самом конце. Сравните
    bool init(IntList1D &list, int number)
    {
        if (is_initialized(list))
        {
            return false;  
        }
        if (list == nullptr)
        {
            list = new IntList1D_element *;
        }
        *list = new IntList1D_element(number);
        return true;
    }


    bool is_inited(const IntList1D list)
    {
        if (list == nullptr || *list == nullptr)
            return false;
        else
            return true;
    }
    Здесь и название функции кривоватое и чересчур усложнена сама функция.
    bool is_initialized(const IntList1D list)
    {
        return (list != nullptr && *list != nullptr)
    }

    Не соблюдаете единый стайлгайд. В некоторых местах одиночные строки после if взяты в фигурные скобки, в некоторых нет. Выберите один какой-либо стиль и придерживайтесь его. (Hint: добавлять строки гораздо проще, если всегда используются фигурные скобки).
    Ответ написан
    7 комментариев
  • Самостоятельное согласование ядра и дистрибутива Linux?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    В 18.04 есть 5.x ветка ядра
    ставится командой
    sudo apt-get install --install-recommends linux-generic-hwe-18.04
    Ответ написан
    Комментировать
  • Как устранить ошибку с оплатой в Android приложении в Play Market?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Но ведь я использую 3 версию, почему вылетает ошибка?

    Вы используете стороннюю библиотеку, которая называется "android-inapp-billing-v3", а ошибка у вас о версии "Play платежей".
    В android-inapp-billing-v3/library/build.gradle :
    dependencies {
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test:rules:1.0.2'
        implementation 'com.android.support:support-annotations:28.0.0'
        implementation 'com.android.billingclient:billing:2.0.1'  // Видимо об этом идет речь
    }
    Ответ написан
    1 комментарий
  • Что делать с гарантийным HDD, если появились сомнения в его надёжности? Как правильно покупать HDD?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Что делать с гарантийным HDD, если появились сомнения в его надёжности?

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

    в SMART нашлись ещё и следы 13 ударов

    Ноутбучные диски весьма чувствительны к физическому воздействию. Ставили ноут на тумбочку или табуретку, задели её ногой - в СМАРТ это отразится. Ударили кулаком по столу, на котором стоял работающий ноутбук - то же самое, и т.п.
    При хорошо прокачанном параметре "Удача" добить можно и долбящим рядом на столе сабвуфером.
    Кроме того, неясно как это отразится на возможность обмена по гарантии - могут и придраться, что вы по диску стучали.

    Я полагал, что в идеале у нового, только что с фабрики, HDD в тесте должна заполняться только верхняя строка теста

    Такие времена ушли примерно в районе ухода с рынка Fujitsu, может на пару лет позже. Тогда начало активно применяться адаптивное форматирование, позволившее использовать, скажем так, "неидеальные" пластины благодаря индивидуальному подходу к ним.
    Сейчас вы легко можете купить новый 2 ТБ диск, который на самом деле отбраковка 3 ТБ, 3 ТБ, который по факту обрезок 4 ТБ, не прошедшего тесты, и т.п.

    диск теперь не новый, но могло ли за несколько месяцев пользования накопиться

    Выйти из строя может даже более новый диск - нам приносили на восстановление данных купленные и три и две недели назад.

    Возможно ли, что мне продали диск б/у? Вообще, возможна ли имитация фабричной упаковки

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

    Как правильно покупать HDD?

    Когда только принесли домой диск и он новый, т.е. не содержит никакой информации, возьмите ту же викторию, либо R.tester (в нём можно детализацию выкрутить до максимума): https://rlab.ru/tools/rtester.html
    И в такой программе запустите сначала тест записи по всей поляне (уничтожает данные), а после него - такой же тест чтения (именно read, не verify) - это будет лучшей проверкой жёсткого диска, которую можно сделать самостоятельно в домашних условиях.
    Ответ написан
    1 комментарий
  • Что делать с гарантийным HDD, если появились сомнения в его надёжности? Как правильно покупать HDD?

    @Drno
    Тоесть Вы удивляетесь тесту диска, на котором сейчас у Вас запущена винда + Вы фоном еще что то делаете?)
    Еще и используя наверняка файл подкачки на диске...

    Если нужен нормальный тест - запускайте с загрузочного диска)
    Ответ написан
    2 комментария
  • Под каким пользователем лучше устанавливать PostgreSQL?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    При установке PostgreSQL в Linux автоматически будет создан пользователь postgres, который станет владельцем файлов кластера БД.
    Ответ написан
    6 комментариев
  • Ценятся ли программисты-самоучки в странах Евросоюза?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ценятся профессионалы, всем плевать, как этот профессионализм был получен. Но надо понимать, во-первых, что желающих получить blue card много, а мест мало. Поэтому вам придётся конкурировать с целой кучей профессионалов и при прочих равных шансов больше будет у обладателей дополнительной бумажки. Во-вторых, интерес западных работодателей начинается на том уровне профессионализма, который у очень выдающихся программистов достигается лет через пять работы, а у остальных через десять. То есть ваш год самообразования - вообще ничто.

    P.S. Вопрос на ресурсе задавался уже очень много раз. Для программиста критически важно уметь искать информацию самостоятельно.
    Ответ написан
    8 комментариев