• Можно ли управлять моп транзистором NCE3050K с помощью esp8266?

    @mordo445
    у этого транзистора напряжение удержания 1V min 3V max, да и для 5V дают On-state, скорее всего он будет на 3.3 V в открытом, но не полностью состоянии, и если верить графику 1, вы можете его использовать на небольших токах. С другой стороны, если вы управляете мощной нагрузкой, особенно моторами, имеет смысл поднять напряжение на нагрузке, а MOSFET открывать через маломощный транзистор тем же напряжением, а не напрямую с GPIO ESP.
    Ответ написан
    Комментировать
  • Как в линукс проверить, запущено ли net приложение?

    @rPman
    Нет нужды создавать mutex или semaphore, исторически, хоть в windows хоть в linux для этого открывают файл (пустой, их называют .lock) в режиме SharedAccess NONE
    https://learn.microsoft.com/ru-ru/dotnet/api/syste...
    https://learn.microsoft.com/ru-ru/dotnet/api/syste...
    FileMode = Create тогда файл будет автоматически создан если отсутствует и не выдаст ошибки если уже есть
    FileAccess = Write чтобы файл можно было создать (если создать его заранее то хватит Read)
    SharedAccess = None запрет на повторное открытие хоть на чтение хоть на запись


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

    Adler_lug
    @Adler_lug
    А как вы его компилировали?
    У меня на домашнем "роутере" (мини комп с Убунту) телеграм бот на .net работает и никакого dotnet в процессах нет.
    xFFGA4u.jpg
    Ответ написан
    1 комментарий
  • Как в линукс проверить, запущено ли net приложение?

    vabka
    @vabka Куратор тега .NET
    Токсичный шарпист
    Можно к примеру попробовать создать Mutex указав его имя.
    Если удалось открыть - значит ещё не запущен второй экземпляр.
    Если не удалось открыть - значит уже запущен.

    Это по идее должно быть надёжнее, чем создавать файл.
    Вот рабочий код:
    using var globalMutex = new Mutex(false, "Global\\test_mx");
    var result = globalMutex.WaitOne(1000);
    Console.WriteLine(result ? "Owned" : "Not owned in 1s");
    Console.ReadLine();

    При попытке запустить сразу два экземпляра, в одном будет выведено: Owned, а в другом Not owned in 1s

    Префикс Global\ обязателен. Без него мутекс будет локальный для текущего процесса.
    Ответ написан
    3 комментария
  • Как в линукс проверить, запущено ли net приложение?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Process.StartInfo в этом свойстве есть ArgumentList. Там и смотрите параметры запуска.
    А еще дотнет делает исполняемый (ELF) файл для запуска, можно через него запускать, а не через dotnet.
    Ответ написан
    2 комментария
  • Raid1 на двух hdd разных производителей?

    @aleks-th
    Можно.
    Даже в некоторых источниках рекомендуют в рейд1 ставить разные диски - так как у дисков из одной партии больше вероятность помереть одновременно.

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

    @Drno
    можно
    но на материнке делать ненадо. лучше програмный

    не будет по самому маленькому диску, т.к. у Вас raid0 - объем суммируется. при выходе из строя 1 диска - все данные будут утеряны
    Ответ написан
    9 комментариев
  • CSRF token missing or incorrect instagram, что это и как избавится?

    @rlda
    можно чуть проще (меньше телодвижений делать)

    в консоли разработчика браузера выполнить код
    n=new Date;t=n.getTime();et=t+36E9;n.setTime(et);document.cookie='csrftoken='+document.body.innerHTML.split('csrf_token')[1].split('\\"')[2]+';path=\;domain=.instagram.com;expires='+n.toUTCString();
    Ответ написан
    5 комментариев
  • Как получить последнее значение поля при группировке по другому полю?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    -- using window functions
    select distinct 
    	uid, first_value(utm) over (partition by uid order by id desc) last_utm
    from t;
    
    -- using join 
    select t.uid, t.utm last_utm
    from t
    join (
    	select max(id) max_id from t group by uid
    ) max_ids on max_id = id;
    
    
    -- using sub-query
    select t.uid, t.utm last_utm
    from t
    where id = (select max(id) max_id from t group by uid having max(id) = t.id);


    SQL online
    Ответ написан
    Комментировать
  • Как произвести группировку по последовательным повторам mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    WITH `cte` AS (
      SELECT `date`, `state`,
             IFNULL(NTH_VALUE(`state`, 2) OVER `win`, -1)  AS `prev_state`
        FROM `test`
        WINDOW `win` AS (
          ORDER BY `date` DESC
          RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
        )
    )
    SELECT *
      FROM `cte`
      WHERE `state` != `prev_state`
    Ответ написан
    Комментировать
  • Как произвести группировку по последовательным повторам mysql?

    @rPman
    Реляционные базы очень плохо работают с порядком в данных, будет заметный оверхед по запросам.

    У тебя должно быть поле, которое позволит определить однозначный порядок записей (дата у тебя не уникальна значит не подходит), например id с полем autoincrement (осторожно, некоторые базы не гарантируют что значения будут гарантированно расти).

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

    Если будет такое поле (id таблицы или сразу значение твоей второй колонки), то запрос, выдающий что тебе надо будет очень простым и отрабатывать очень быстро
    select date,val from table where val<>prev_val order by id


    p.s. иначе тебе придется на каждое значение искать его предыдущее вложенным запросом через order by limit или max/min limit что не очень быстро
    select date,val from table x where val<>(select val from table y where y.date<x.date order by id desc limit 1)

    спецы могут посоветовать красивее запрос через left join, я считаю нужно избегать таких случаев когда нужно искать соседнюю запись
    вот посмотри как я решал похожую задачу
    Ответ написан
    1 комментарий
  • Можно ли через ipv6 отправить запрос к ipv4?

    Mystray
    @Mystray
    NOC
    В общем случае -- нет.
    Только если провайдер/поставщик поддерживает в своей сети комплекс из NAT64+DNS64, и, в принципе, это не особо отличается по фукнциональности для конечного пользователя от серого IPv4 + NAT. Даже хуже, поскольку сервисы, напрямую ломящиеся на IPv4 адреса без DNS, скорее всего, отвалятся.
    Ответ написан
    Комментировать
  • Как сгенерировать строку на javascript?

    @bogomazov_vadim
    stackoverflow.com/questions/1349404/generate-a-str...
    function makeid()
    {
        var text = "";
        var possible = "abcdefghijklmnopqrstuvwxyz";
    
        for( var i=0; i < 5; i++ )
            text += possible.charAt(Math.floor(Math.random() * possible.length));
    
        return text;
    }
    Ответ написан
    3 комментария
  • Создание вероятности на php. Можете помочь?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Алгоритм:
    1. сложить вероятности найденных призов
    2. выбрать случайное число от 1 до суммы
    3. определить, в «зону» какого из призов оно попадает

    Примерно:
    $stock = [
    	["id"=>1, "ver"=>13, "name"=>"gta v"],
    	["id"=>2, "ver"=>48, "name"=>"gta sa"],
    	["id"=>3, "ver"=>119, "name"=>"chess"],
    ];
    
    $total = 0;
    foreach($stock as $v) $total += $v["ver"];
    
    $rnd = rand(1, $total);
    
    $run = 0;
    foreach($stock as $v) {
    	$run += $v["ver"];
    	if( $rnd <= $run) break;
    }
    
    $prizeName = $v["name"];
    Ответ написан
    3 комментария
  • Создание вероятности на php. Можете помочь?

    GeneMoss
    @GeneMoss
    void
    /**
     * Случайная выборка с учетом веса каждого элемента.
     * @param array $data Массив, в котором ищется случайный элемент
     * @param string $column Параметр массива, содержащий «вес» вероятности
     * @return int Индекс найденного элемента в массиве $data 
     */
    function getRandomIndex($data, $column = 'ver') {
      $rand = mt_rand(1, array_sum(array_column($data, $column)));
      $cur = $prev = 0;
      for ($i = 0, $count = count($data); $i < $count; ++$i) {
        $prev += $i != 0 ? $data[$i-1][$column] : 0;
        $cur += $data[$i][$column];
        if ($rand > $prev && $rand <= $cur) {
          return $i;
        }
      }
      return -1;
    }
    
    // Использование
    $games = [
    	['name' => 'Игра 1', 'ver' => 2], // вероятность 2/15
    	['name' => 'Игра 2', 'ver' => 0], // вероятность 0/15
    	['name' => 'Игра 3', 'ver' => 1], // вероятность 1/15
    	['name' => 'Игра 4', 'ver' => 4], // вероятность 4/15
    	['name' => 'Игра 5', 'ver' => 8], // вероятность 8/15
    ];
    $i = getRandomIndex($games);
    echo $games[$i]['name'];

    В параметре массива «ver» задается вероятность выпадения данного элемента таким образом, что вероятность выпадения каждого элемента равна ver/sum, где sum — сумма вероятностей в данном массиве (в примере это: 2 + 0 + 1 + 4 + 8 = 15).

    После миллиона испытаний получено следующее количество выпадений:
    • Игра 1 = 13.3958%
    • Игра 2 = 0%
    • Игра 3 = 6.671%
    • Игра 4 = 26.6124%
    • Игра 5 = 53.3208%

    Что до сотой доли процента совпадает с заданной вероятностью в параметре «ver».

    P. S. Суть алгоритма — имитация случайной выборки из массива, который заполнен элементами, которые дублируются с заданной частотой.
    Ответ написан
    Комментировать