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

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Мы писали для своей сети что-то такое: https://github.com/Gratio-tech/WireguardControl

    Немного костыльно - приходится WG дёргать через вот spawn:

    import { spawn } from 'child_process';
    
    export const executeSingleCommand = (command: string, args: string[] = []): Promise<string> => {
      return new Promise((resolve, reject) => {
        const childProcess = spawn(command, args);
        let stdoutData = '';
        let stderrData = '';
    
        childProcess.stdout.on('data', data => {
          stdoutData += data.toString();
        });
    
        childProcess.stderr.on('data', data => {
          stderrData += data.toString();
        });
    
        childProcess.on('close', code => {
          if (code !== 0) {
            reject(new Error(`executeSingleCommand failed with code ${code}: ${stderrData}`));
          } else {
            resolve(stdoutData.trim());


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

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    QA это вообще про другое. Можно быть QA-специалистом вплоть до мидла и вообще не иметь представления о программировании.

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

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

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

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    А зачем вообще у нейронки подтверждения каких-то убеждений или выводов своих спрашивать?

    Базовые систем-промпты:

    Общий
    Соблюдай следующие требования (это важно):
    Не выдумывай и не фантазируй. Если не знаешь - так и пиши "не знаю". Отвечай кратко и по существу, не повторяйся. Не пиши лишнего, не пиши того о чём я не просил, только если это явно может улучшить решение. Код никогда не сокращай если я не указал это явно. Проверяй свои ответы (писать "проверяю себя" не нужно, это команда). Писать лишних пояснений тоже не требуется. Не используй эмоджи если не просили. В комментариях и общении всегда используй русский, если иное не следует из контекста.


    Когда используется поиск
    Не нужно гуглить всё подряд, размышляй сам по максимуму, гугли только для уточнения деталей. Дополнительные требования если используешь поиск:
    - Перепроверяй факты. Несколько разных источников, это важно! Предпочтение отдавай официальным данным по стандартам либо библиотекам используемым в контексте, либо академическим источникам если вопрос общий.
    - Не используй (!) в качестве источников мусорные сайты без подробных инструкций (чаще всего это сео-помойки), отдавай предпочтения специализированным блогам (смотри на рейтинг статьи, если он есть) и официальным источникам. Старайся быть кратким.


    Сложные пошаговые задачи:
    Не скрывай ограничений. Если задача невозможна — так и скажи. Не пиши раньше времени «Готово» — только если действительно всё завершено в этом чате. Уточняй, если информация неточная, устаревшая или неполная. Проверяй себя. Если есть вариации и требуются дополнительные данные для следующего шага - прерывай рассуждения и сначала запроси недостающие, не строй предположений.


    В целом адекватные ответы выдавать будет.

    Ну добавьте ещё в общий
    Не соглашайся со всеми подряд предложенными вариантами решения проблемы или тезисами. Все тезисы проверяй на критерии "истинности", если они не выдерживают проверки логикой прямо говори об этом.


    А вообще, нейронка это не ИИ, сколько раз надо это людям повторять? Это довольно тупой алгоритм предсказания следующего слова. Пользуйтесь им с учётом этого знания, не нужно ждать от него что он за вас думать будет, так отупеете совсем.
    Ответ написан
    2 комментария
  • Почему не могу зайти на quasar.dev?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Мало контекста.

    Сделайте ping с компа до домена. Traceroute.

    Также сделайте
    dig quasar.dev A
    dig @8.8.8.8 quasar.dev A
    Ответ написан
  • Клей для экранов телефонов/планшетов, который легко снять без следов?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Попробуйте нагреть этот ваш B6000 (работает и для других, в т.ч. 7000, 8000) прежде чем оттирать. После небольшого прогрева феном до 90 градусов оттирается он легко.
    Ответ написан
    Комментировать
  • Как лучше всего реализовать данный фон?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Просто блок в начале body с position fixed прибитый справа вверху.
    Поиграться с background-size. Ну и не забыть указать background-position и z-index (у остальных элементов, очевидно z-index должен быть выше).

    Что-то в духе:
    .block {
      position: absolute;
      top: 0;
      right: 0;
      left: 0;
      background-size: 30%;
      background-position: top right;
      z-index: 0;
    }


    Тут в комментариях советуют псевдо-элементы для этого использовать: так делать не надо, не повторяйте плохую практику. Там же в каментах разжёвано почему. Вкратце — псевдоэлементы это полезная штука, но делать на них абсолютно все бэкграунды это шизофрения, а чревато это например тем, что половина юзеров будут видеть ваш сайт не так как вы. Нюансов там в разы больше чем у абсолютного позиционирования и z-index.
    Ответ написан
  • Почему при попытке подключиться к репозиторию по ssh, перестает вводиться текст в командную строку?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Текст вводится, но не отображается, как при вводе пароля. Убедитесь, что используется английский и введите yes.
    Ответ написан
    Комментировать
  • Что лучше использовать ID или class?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Я бы добавил к вышесказанному одну прикольную деталь, о которой мало кто задумывается.

    При присовении элементу ID в глобальной области видимости JS добавляется переменная с этим же именем. О, сколько чудных глюков я встречал с этим связанных.
    Ответ написан
    Комментировать
  • Не получается верифицировать компанию на FB. Где можно найти специалиста для решения вопроса?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Я бы предложил поискать на LinkеdIn кого-то из бывших работников и делать это через него.

    Однако насколько я знаю FB до крайности политизированная компания и все такие кейсы обычно заканчиваются ничем если у вас нет какого-то админресурса в ЕС или одной звёздно-полосатой стране.
    Ответ написан
    Комментировать
  • Как поменять через React-код background-image в зависимости от условия if-else?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Ну тебе верно выше сказали: тут не нужно вот так дико делать.

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

    Потом - я не очень понимаю зачем тебе тут вообще useEffect? Тут он срабатывать будет только при перерисовке компонента извне, насколько я могу судить. В таком простом случае вообще не нужен ни useEffect, ни useState. Просто присваивай переменной нужное имя класса в своей цепочке ифов и всё.

    Ну и да, учитывай, что сборщик ведь при сборке картинки все кидает в какую-то папку, куда у тебя там всё собирается, поэтому и нужно их импортировать через иморт, чтоб он знал как менять пути. А в твоём случае у тебя просто строки и эти пути к картинкам не верны в итоге относительно собранного приложения, так что работать в твоём варианте и не будет ничего.
    Ответ написан
    Комментировать
  • Фильтры с условием для Ublock?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Возможно кому-то будет полезен ещё вариант блокировки элемента по фрагменту класса. Это часто применимо, так как всё чаще встречаются CSS-модули с постоянными префиксами.

    site.com##[class^="newsTicker_container"]

    В этом примере будут заблокированны все элементы в классе которых есть подстрока newsTicker_container

    Также полезно знать, что модификатор hat-text работает не только непосредственно на сам блок, а на все дочерние, т.е. например

    ##.div-item:has-text("Текст")

    Скроет элемет с классом div-item если хотя бы один из дочерних элементов содержит текст из скобок (в некоторых примерах текст в скобках указан без кавычек, но вроде бы это не всегда работает).
    Ответ написан
    Комментировать
  • Как объединить несколько шрифтов в файл?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Один файл - один шрифт.

    Если надо чтоб они накладывались, создавай отдельные дивы с разным шрифтом заданным стилями, задавай им разную прозрачность и размещай один над другим.
    Ответ написан
    Комментировать
  • Эмодзи в title или Description стоит ли?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Ощущение, что отвечающие выше особо даже не думали прежде чем ответить.

    С помощью эмодзи, конечно, можно сделать выдачу симпатичнее, но надо понимать, что тег description также используется для поиска и сопоставления запроса. И теперь подумайте много ли людей используют эмоджи при поиске.

    Короче лучше этой деградацией не страдать. А сеошникам неплохо бы чем-то полезным займутся наконец, чем эти советы шизоидные раздавать.
    Ответ написан
    4 комментария
  • YouTube написан на python, получается код для приложения на android и ios тоже состоит из того же кода что и для веба?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Постоянно натыкаюсь на эту древнюю байку про "YouTube написан на python". Написан он на го (как раз с питона переписывали на го), сях и жаве, а питон там используется лишь в некоторых модулях.
    Ответ написан
    Комментировать
  • Как узнать history.length (stack) в react-router-dom 6?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    В некоторых случаях можно обойтись использованием объекта location.state

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

    import { useNavigate } from 'react-router-dom'
    ...
    const navigate = useNavigate()
    useEffect(() => {
     navigate('/new-page', {state: { from: 'old-page' }})
    }, [])


    А уже в нужном месте можно проверить откуда был совершён переход:

    import { useLocation } from 'react-router-dom'
    ...
    const { state: locationState } = useLocation() // Естессна, как и всех хуки это всё внутри компонента
    console.log(locationState ?.from)


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

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Если ничего не менять в вашей вёрстке, на ум приходит только вариант вот такой (добавить блок map-inner внутрь map):

    .content {
      height: 100vh;
    }
    .map {
      max-height: 100vh;
      background-color: #eee;
    }
    .map-inner {
      margin-top: 8px;
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 50%;
      background-color: #23fe12;
    }


    Но это будет работать только если у вас нет необходимости задавать в абсолютных единицах высоту .content, как это было сделано в вашем примере. А также если у вас отступ от верхней части не меняется (поскольку тут используется абсолютное позиционирование).

    А лично я бы вовсе по другому сделал. Кмк тут логичнее сделать вот так:

    <div class="container">
    	<div class="row">
        <div class="map"></div>
    		<div class="col">
    			<div class="content">content</div>
    		</div>
    	</div>
    </div>
    
    .container {
      max-width: 400px;
      margin: 0 auto;
    }
    .row {
      display: flex;
    }
    .col {
      flex: 1 1 60%;
      border: 1px solid #aaa;
    }
    .content {
      height: 1000px;
    }
    .map {
      height: 100%;
      max-height: 100vh;
      position: fixed;
      top: 0;
      bottom: 0;
      right: 0;
      left: 50%;
      background-color: #eee;
    }


    И от этого уже отталкивался бы...
    Ответ написан
    Комментировать
  • Имеет ли смысл использование SCSS при именовании классов по BEM?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Во всех больших проектах, в которых я работал, использовали первый вариант.

    Как тут верно заметили - искать нужный стиль, при таком подходе по всей кодовой базе может быть не удобно или даже вообще нереально в некоторых случаях. Все россказни про "один файл - один класс" это тоже бред... Бывает так что компонентов в проекте тысяча и невозможно знать какой конкретно компонент рисует нужный элемент. А как его искать непонятно, потому что там может не быть строк, например.

    Что касается моего мнения, так БЭМ это в принципе шизофрения, эти нижние слэши делают из стилей мусор.
    Ответ написан
    8 комментариев
  • Как управлять громкостью Windows через Node JS?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Я вот тоже озаботился данным вопросом... Оказалось не так всё просто как может показаться на первый взгляд.

    Практически во всех обсуждениях для того чтоб дёргать WinAPI советуют использовать решения на основе node-ffi, а она, в свою очередь, требует наличия на компе всего необходимого для ребилда node-gyp, а это - питон и visual studio (несколько гигов). Есть ещё варианты типа win-audio, но там те же грабли шизофреничные — для компиляции нужен node-gyp со всеми вытекающими...

    Короче, тут один энтузиаст переписал node-ffi на расте, и там все эти костыли не нужны, хотя поставить компилятор G++ всё же придётся, но он работает без танцев с бубном и весит всего сотню метров.

    Я для себя сделал вот такое, возможно кому-то пригодится: https://github.com/Psychosynthesis/AudioManager
    Ответ написан
    Комментировать
  • Как заставить хром показать градиент в svg спрайте?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Судя по всему это какой-то баг хрома, вроде как давно известный (предполагаю этот: https://bugs.chromium.org/p/chromium/issues/detail...), но с ним ничего не делают...

    Причём проблема именно в хроме, и конкретно с атрибутами filter | fill | stroke | clip-path | mask и т.п. Во всех таких примерах используется конструкция вида fill="url(#toncloutLogoGradient)", которая ссылается на айдишник linearGradient. Но что-то решать этот баг никто не торопится.

    Подписался на вопрос, буду рад, если кто-то поделится решением.
    Ответ написан
    6 комментариев
  • Как изменить текст цвета в зависимости от фона?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Погуглите в сторону css-свойства:
    mix-blend-mode

    Кажется это именно то що вам надо, но на старых браузерах может не работать.
    Ответ написан
    Комментировать