Задать вопрос
  • Где можно бесплатно зарегистровать домен навсегда?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    Нигде.
    Ответ написан
  • Как сделать border-radius для тэга figure?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    можно имитировать внутренние скругления двумя псевдоэлементами.

    67a088d1bea13534664940.png
    Ответ написан
    3 комментария
  • Можно ли запретить пользователю mysql просмотр определенных колонок таблицы?

    Может, попробовать через View?
    Создать view на таблицу, содержащий только доступные поля. На таблицу доступ не давать. На View дать полностью.
    Ответ написан
    5 комментариев
  • Нюансы оформления удаленки на зарубежную компанию, как правильно?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Финансы:
    • ИП, ОКВЭД - разработка ПО и БД
    • Налогообложение - УСН плюс патент в какой-нибудь области где-нибудь в регионах (есть небольшой шанс, что могут проверить - случаи есть, хоть и мало, поэтому лучше где-нибудь рядом с местом жительства)
    • Квалифицированная электронная подпись - токен и криптопро либо виртуалка с триалом криптопро (втб раздаёт токен бесплатно - тыц, оформить, a на следующий день или через несколько закрыть счёт - с самим банком не связываться)
    • Адекватный интернет-банк с онлайн-бухгалтерией - точка или модуль, в сторону попсы типа т-, а-, сб- и прочих лучше даже не смотреть - сэкономите километры нервов и литры сока и других бодрящих веществ
    • Компания-прокси - Solar Staff, Easy Staff для получения оплаты, договор-оферта с прокси в России (как с фриланс-биржами раньше), работодателю выставляется стандартный инвойс/инвойс-договор из прокси, он его оплачивает, а на ваш счет в банке приходит перевод за вычетом комиссии прокси со счета в Российском банке - никакого валютного контроля

    Для налоговой всё прозрачно и никаких проблем. Любые вопросы и непонятки решаются с онлайн-бухгалтерией.

    Оформление со стороны работодателя - как договоритесь и зависит от местных законов. В большинстве случаев достаточно простого счёта-договора: "оплата счёта подтверждает, что работа сделана и принята".

    Если открывать ООО - это 50-100к в месяц расходов только за одного сотрудника (генерального директора), примерно 50% от ЗП в налоги и другие взносы уйдёт, прибыль с ООО выводится через родственников-ИП или дивиденты. Там вообще очень много всяких нюансов и прочего - гугл в помощь. Бухгалтерия - в интернет банке или что-то типа "Моё дело". Если не хочется самостоятельно заниматься бухгалтерией - в деле есть тариф "Премиум" с личным помощником. Либо нанять знакомого бухгалтера, который будет тыкать кнопочки в этом самом моём деле и у которого есть с ним опыт (нанимать бухгалтера со стороны - всегда риск). В сторону варианта "сэкономить на интернет бухгалтерии" не то что смотреть, даже думать не стоит.

    А вот легально получать оплату в крипте простым и прозрачным способом на текущий момент невозможно (разве что через мутные схемы с соответствующими рисками). На текущий момент только через криптоэквайринг. Росбанк уже умеет, но пока только для крупных клиентов (точно не помню, но вроде от 100 лямов оборота - узнавал у них в 23 году). Работает он через b-crypto (новость). Есть еще несколько посредников, кто тоже занимается криптоэквайрингом: например битбанкер.

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

    2. Да, свой сервер для VPN обязателен - часть международного интернета только через VPN, рунет - без него (наши тоже полмира забанили)

    3. Созвоны работают отлично - там трафик вообще ни о чём.

    4. Только избранные ООО:
    Ответ написан
    4 комментария
  • Как обновлять дочерние элементы которые принимают значение функции?

    0xD34F
    @0xD34F Куратор тега React
    при изменении language у меня не меняются переводы

    Меняются. С запаздыванием на один шаг. Потому что texts обновляется в эффекте, т.е., после того, как новая версия t будет создана. Так что t получает ссылку на старую версию texts.

    Никакого texts не надо, доставайте в t нужный объект из translations напрямую:

    const t = useCallback(
      key => key
        .split('.')
        .reduce((p, c) => p?.[c], translations[language]),
      [ language ]
    );
    Ответ написан
    Комментировать
  • Как теперь запустить Linux на внешнем SSD?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Винда при переустановке сбросила данные в EFI - она так постоянно делает. Можно шаманить с виндовыми EFI-менеджерами, но проще загрузиться с любого дистриба линуха и прогнать grub-install, указывая нужные устройства, даже если граб стоит уже. Главное, что сделает grub-install - восстановит запись в EFI, указывающую на него. Можно, конечно и вручную через efibootmgr пошаманить, но grub-install проще.
    Ответ написан
    3 комментария
  • Почему postgresql выбирает неоптимальный план выполнения для простого JOIN?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Я выполняю 2 одинаковых запроса

    "WHERE friends_info.user_id = 1" vs "WHERE friends_info.friend_id= 1"

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

    Bitmap Index Scan on ix_friends_user_id (cost=0.00..61.56 rows=5465 width=0) (actual time=0.742..0.743 rows=88 loops=1)

    Суть ошибки выбора плана. Какое распределение данных в таблице? Каков размер самой таблицы? Вероятно несколько пользователей занимают значительную часть таблицы и это сбивает оценку селективности.
    Простое чуть приподнять SET STATISTICS по полю, собрать новый analyze и посмотреть на оценку числа строк.

    PS: индекс ix_friends_user_id должен быть удалён как бесполезный при наличии friends_info_user_id_friend_id_key
    Ответ написан
    3 комментария
  • Async с методами класса не работает?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Сделайте метод static async create(), который выполняет все await'ы и возвращает новый экземпляр класса. Соответственно, вместо bar = new foo() в таком случае будет bar = await foo.create().
    Ответ написан
  • Как в selenium открыть селектор на JS?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как в selenium открыть селектор на JS?

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

    Aetae
    @Aetae
    Тлен
    React - это тебе не Vue, он не умеет из коробки угадывать, что картинки надо импортировать.

    Для каждой картинки надо сделать руками:
    import img from './assets/img.jpeg'
    или использовать glob import.

    Ну либо положить картинки в public и брать их как есть по прямым путям относительно корня без всяких хэшей.

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

    0xD34F
    @0xD34F Куратор тега JavaScript
    Где чекбоксы находятся, что за чекбоксы, каковы ограничения на количество отмеченных, как посчитать количество отмеченных:

    const container = document.querySelector('селектор общего предка чекбоксов');
    const checkboxSelector = 'селектор чекбоксов';
    const minChecked = 1;
    const maxChecked = Infinity;
    const countChecked = checkboxes =>
      Array.prototype.reduce.call(checkboxes, (acc, n) => acc + n.checked, 0);

    Если количество отмеченных чекбоксов меньше или равно минимально допустимому - блокируйте их, если количество отмеченных чекбоксов больше или равно максимально допустимому - блокируйте те, что не отмечены:

    const checkboxes = container.querySelectorAll(checkboxSelector);
    const onChange = () => {
      const count = countChecked(checkboxes);
      const minReached = count <= minChecked;
      const maxReached = count >= maxChecked;
      checkboxes.forEach(n => n.disabled = minReached && n.checked || maxReached && !n.checked);
    };
    
    checkboxes.forEach(n => n.addEventListener('change', onChange));

    Или, выставляйте снятый чекбокс обратно, если количество отмеченных упало ниже минимума и снимайте выставленный, если количество отмеченных превысило максимум:

    container.addEventListener('change', function({ target: t }) {
      if (t.matches(checkboxSelector)) {
        const count = countChecked(this.querySelectorAll(checkboxSelector));
        t.checked ||= count < minChecked;
        t.checked &&= count <= maxChecked;
      }
    });
    Ответ написан
    3 комментария
  • Как ввести большое число?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    input возвращает str и, если указать int(input()) и ввести 100, то будет результат нормальным, а вы указываете 10000000 1 - это уже строка, ведь в python число может быть только: "100..." или как float "1000.1". Можно использовать следующий код:

    num = input("Enter a number > ")
    # проверка на число
    if not num.isdigit():
       return False
    
    # Дальше можно сделать
    num = int(num) # и ошибок не будет.
    Ответ написан
    Комментировать
  • После обновления прошивки пропали все данные, что делать?

    @alexalexes
    Восстанавливать данные из ssd - дохлый номер.
    Если каким-то образом запущена логика очистки внутри накопителя, то снаружи ее уже ничего не остановит.
    И даже если остановить процесс очистки, вы все равно не считаете неповрежденные данные. Они записываются в накопитель нелинейно, по соображениям степени износа ячеек. Только сам контроллер собирает такую статистику, и пишет в физическом порядке, ориентируясь на собственную статистику.
    Вы из вне никуда доступа не получите, если только физически распиливать микросхемы и считывать состояние электронным микроскопом.
    Ответ написан
    Комментировать
  • Как доказать Google, что мой аккаунт разработчика не связан с другим?

    Steel_Balls
    @Steel_Balls
    Я однажды пытался начать переписку с гуглом, чтобы выяснить причину блокировки приложения. В ответ мне без слов заблокировали аккаунт разработчика с десятком других приложений, а платёжную карту добавили в чёрный список.
    Вот так просто.
    Какие ещё разговоры с гуглом?
    Ответ написан
    Комментировать
  • Нужен функциональный браузер со специфичной защитой от отслеживания, есть ли?

    Stalker_RED
    @Stalker_RED
    Если вам надо замаскироваться, то классический набор - tor, whonix, tails, kodachi, вот это все.

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

    Или вот, что-то новенькое, сам в работе не видел https://ls.tenebris.cc/about

    Впрочем, вам быстро надоест делать это вручную, и следующим этапом будут автоматизированные комплексы. Они есть и в виде ПО и как сервис.
    Ответ написан
    Комментировать
  • Как сделать такой магазин в телеграме?

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    На самом деле все просто - это Telegram Web Apps
    Ответ написан
    Комментировать
  • Как сделать несколько скомпилированных стилей ViteJS в Laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Так же как и с миксом.
    Отдельные таски в package json с указанием отдельных конфигов Vite
    "scripts": {
      "build:site": "vite build --config site.vite.config.js",
      "build:admin": "vite build --config admin.vite.config.js",
    }

    https://vitejs.dev/guide/cli.html
    Ответ написан
    Комментировать
  • Как сделать анимацию курсора под текстом?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Можно конечно отключать poiner-events, но если включать его для текста, то это всё равно приведёт к той же проблеме. Что под текстом не будет работать.

    Поковырял немного:


    Основное что изменил - отслеживание событий mousemove не на канвасе, а на всей секции и e.offsetX на e.clientX
    Ответ написан
    1 комментарий
  • Как в игровых движках реализованы отскоки?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Если вместо синусов и косинусов использовать вектора, то формулы будут сильно проще. Все изменения происходят вдоль нормали соприкосновения. А там одномерная формула вообще: проецируете скорости на нормаль, потом считаете коэффициенты изменений одной и другой скорости, чтобы сохранился импульс и энергия. Потом прибавляете вектора изменений к векторам скоростей. Вместо синусов/косинусов считаете векторное/скалярное произведение векторов.

    В движках чаще всего проверяются коллизии - если 2 коллайдера (фигуры, описывающие тело, часто упрощенные) пересекаются, то находится нормаль соприкосновения, и применяются веторные формулы для изменения скорости.
    Ответ написан
    5 комментариев
  • Как в игровых движках реализованы отскоки?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А что вам не понравилось в приведенных формулах? Они совсем не сложные.
    Правда в векторной форме записать закон сохранения импульса можно гораздо компактнее, а некоторые языки вроде питона позволили бы в комплексных числах записать формулу прямо в векторной форме для плоского случая. Но можно записать и так, как здесь приведено у вас.

    У вас тут довольно простой случай столкновения точечных масс, но в физических движках обычно коллизии предусматривают более натуральные взаимодействия с вклчением вращения, как отдельной степени свободы. В этом случае играют важную роль размеры, формы и координаты центов масс сталкивающихся объектов. В этом случае формулы будут посложнее, но дифуры также по-прежнему считать не обязательно. Просто закон сохранения импульса и аккуратный учет всех составляющих.
    Оишите подробнее вашу задачу, потому что сейчас это можно сделать совсем просто, как в пинболле, или сложно с гравитацией и через дифуры.
    Ответ написан
    2 комментария