Задать вопрос
  • Как исправить ошибку "Gemeni не доступен в вашем регионе"?

    TrueBers
    @TrueBers
    Гуглю за еду
    Гуглу до фени ваши IP, ВПНы и прочие не сильно разумные способы скрыться, если у вас в целом аккаунт российский.
    Либо второй вариант, это определение региона по платёжному профилю, в котором карта должна быть не российского банка привязана, тогда платёжный профиль станет той страны, которой привязана карта.

    Проверить или запросить изменение региона можно тут.
    Платёжный профиль — тут.

    Какие страны указаны?

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

    @pieoutfrog
    Ничего ты не сделаешь. Я работаю в тп провайдера, таких борцов слышно было много и из-за ютуба, и вотсапа, и дискорда и многого другого. Но эти блокировки не решения провайдера, нам снизу спускают, обязаны. Сейчас вот тех, кто не соблюдает ограничения тспу штрафуют жёстко, новости читайте. Всё ваши блокировки - это ркн. А ркн естесна подчиняется высшему гос.аппарату.
    Ну надо было думать раньше, когда вне политики были я хз. Ща можете этими исками подтереться.
    Ответ написан
    Комментировать
  • Как засудить провайдера за ограничения к иностранному VPS?

    @AlexVWill
    Вы так пишете: "подать в суд", "юридические перспективы", "Подача иска" как будто живете в правовом государстве. У вас до сих пор иллюзия что политические вопросы (а вопрос, безусловно политический, хотя и затрагивает сферу гражданско-правовых отношений) вы можете решать в судебном порядке?
    Ответ написан
    3 комментария
  • Как исправить ошибку "Gemeni не доступен в вашем регионе"?

    NeiroNx
    @NeiroNx
    Программист
    Не бойтесь гугл всегда знает откуда вы.
    Ответ написан
    Комментировать
  • Почему публичные dns сервера google перестали резолвить домен youtube.com?

    @PjaniyAdmin
    Если вы обращаетесть к гугловым gns, это не значит что вы к им обращаетесь. Наши любимые операторы часто подменяют адрес на свои dns сервера, такая практика уже давно была еще до великого бардака от РКН. Изначально появлялась чтоб инжектить рекламу, особенно в случае запроса не существующего доменного имени. Вы уверены что стучитесь на 8.8.8.8 фактически ваш запрос приходит на сервер подключенный к "национальному днс" он же ркн днс,(операторов напрягли это сделать еще несколько лет назад) по дороге к вам в ответе естественно адрес обратно подменянтся на 8.8.8.8, и вы без понятия что подмена состоялась и настоящий 8.8.8.8 ничего не получал.
    Посленее что стоит делать - проводить параллель с демонтажом гугловых серверов, которые уже давно и так не работали.
    Ответ написан
    3 комментария
  • Как понять почему размер БД вырос на 30%?

    Alex_Geer
    @Alex_Geer Автор вопроса
    System Engineer
    Процитирую сам ответ, раз автор реального ответа не захотел это сделать.
    Есть основная гипотеза, vacuum full писал что-то большое, но не смог удалить либо старые либо новые датафайлы.
    База при этом не уходила ли вообще в crash recovery по какой-то причине? Там есть варианты при которых остаются осиротевшие датафайлы https://www.cybertec-postgresql.com/en/orphaned-fi...


    Действительно был краш Postgres из за того что отвалилась фс. Прочитав статью по ссылке понял что остались осиротевшие файлы которые сама СУБД не способна отчистить. Проблема решается через копирование и восстановление базы.
    Ответ написан
    Комментировать
  • Какой ноутбук выбрать для максимальной совместимости с linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Thinkbook 14 g6-abp - идеально! Месяц назад приобрели для работы. Все AMD, и процессор, и графика. Ubuntu, как родная встала.
    И да с nvidia не берите - wayland херово на них работает, да и xwindow тоже.
    Ответ написан
    9 комментариев
  • Какой ноутбук выбрать для максимальной совместимости с linux?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В РФ сейчас maibenben продает ноутбуки сразу на linux, кто-то может поделиться опытом использования?

    Здесь ругаться запрещено.
    Бюджет 120 тр

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

    Чтобы настроить ноут (именно ноут, а не десктоп из ноута) на линуксе так, чтобы он работал хотя бы примерно так же, как работает на Винде10/11 из коробки - нужно быть хорошим спецом, а чтобы так, как макось - нужно быть учителем этого спеца.

    Берите популярный бренд (asus, например) и популярную модель от этого бренда, тогда будет больше шансов, что все железо будет работать так, как заявлено.
    Ответ написан
    9 комментариев
  • Можно ли тянуть от оператора два кабеля интернета?

    @Trmail
    Самый простой варинт "из коробки" - TP-Link TL-R605.
    Объединит до трех входящих каналов в один. Просто и быстро. Лично проверял на суммировании 2х каналов РТК по 300мбит в 1 на 600мбит.

    А если есть желание прокачать навыки - то Микротик поставить. Но там всё ручками настраивать. И это может быть долго и мудрёно в первый раз.
    Ответ написан
    1 комментарий
  • Зачем скрипт виджета юмани сканирует порты компьютера (22,3389 и другие)?

    @MarvinD Автор вопроса
    Пообсуждали тут с товарищем Adamos (за что ему спасибо еще раз!), похоже, что поводов для испуга нет. Сканирование портов используется для определения, не завирусована ли машина пользователя, не открыты ли здесь "лишние порты", такие как удаленное управление компьютером и др. Вопрос закрыт.
    Ответ написан
    2 комментария
  • Необходимо ли исключать UTM-ссылки в robots.txt?

    vettaxa
    @vettaxa
    Увлекаюсь SEO-шмэо
    Ответ написан
    Комментировать
  • Обьясните в чём суть инкапсуляции?

    TrueBers
    @TrueBers
    Гуглю за еду
    Оу, май, 4 человека ответили, и ни один не понимает, что такое инкапсуляция... деградация какая-то, алё!

    Причём тут защита данных? Причём тут контроль доступа? Сокрытие данных? Геттеры, сеттеры? private, public?
    Это всё не имеет никакого отношения к инкапсуляции, это всё побочные эффекты, либо способы реализации в конкретном языке.

    Основная задача инкапсуляции -- отделить интерфейс от реализации. Чтобы пользователя интерфейса вообще не волновало как там устроена его реализация. Чтобы там всё под капотом само подтягивалось, разрешалось, загружалось, а пользователь только передавал входные данные в интерфейс и получал выходные. Чтобы для добавления новой реализации в случае чего, разработчику достаточно было drop-in'ом закинуть эту реализацию, и она сама подтянулась, а не перелопачивать всю кодовую базу, которая сломалась от банального добавления кода.

    ООП и его фишки тут не причём. Ни геттеры, ни сеттеры, ни private\public никакого отношения к этому не имеют. Инкапсуляция может быть даже статической, когда, например разрешаются модули во время компиляции, и язык вообще не должен быть объктно-ориентированным при этом. Инкапсуляция может реализовываться вообще распределённо по разным нодам, которые реализуют интерфейс. Да и ещё чёрт знает как. Скрывать данные не нужно от пользователя. Часто даже удобно обратное -- не писать кучу бойлерплейта, а просто дать возможность пользователю сконфигурировать интерфейс через изменение стейтов в его реализации напрямую, если позволяет платформа, соблюдая инварианты. Это будет более верным архитектурным дизайном, нежели городить какие-то костыли "вдруг пользователь идиот и всё поломает".

    На этом всё, это и есть инкапсуляция.
    Ответ написан
    Комментировать
  • Обьясните в чём суть инкапсуляции?

    Steel_Balls
    @Steel_Balls
    Суть инкапсуляции - защита внутренних данных класса от изменения извне.
    Допустим, ты нарушил этот принцип и сделал поля класса доступными для изменения из любой точки кода напрямую.
    Отсюда возникают очевидные проблемы с невозможностью контролировать все эти процессы - кто откуда когда и зачем пытается изменить данные внутри класса.
    При реализованной инкапсуляции у нас такой проблемы нет - все данные внутри класса под полным контролем.
    При чём здесь вообще хакеры?
    ООП, ШП, методологии разработки - это всё создано для разработчиков ПО, а не для хакеров.
    Ответ написан
    Комментировать
  • Как создать xls/xlsx средствами php?

    shuchkin
    @shuchkin
    веб-программист, сисадмин, предприниматель
    SimpleXLSXGen
    $books = [
      ['ISBN', 'title', 'author', 'publisher', 'ctry' ],
      [618260307, 'The Hobbit', 'J. R. R. Tolkien', 'Houghton Mifflin', 'USA'],
      [908606664, 'Slinky Malinki', 'Lynley Dodd', 'Mallinson Rendel', 'NZ']
    ];
    $xlsx = SimpleXLSXGen::fromArray( $books );
    $xlsx->saveAs('books.xlsx');
    // $xlsx->downloadAs('books.xlsx');
    Ответ написан
    Комментировать
  • Как Установить приоритет выборки?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    SELECT TOP 1 * FROM table
    WHERE (price = $var OR price = 100)
    ORDER BY CASE WHEN price = 100 THEN 1 ELSE 0 END
    Ответ написан
    Комментировать
  • Как из одного файла js передать значение переменой в другой файл js?

    @xaosland
    Глобальные переменные: вы можете объявить переменную в глобальной области видимости в одном файле и использовать ее в другом файле. Однако это не рекомендуется, потому что глобальные переменные могут вызывать конфликты имен и затруднять отладку кода.
    // file1.js
    var myVar = 'Hello, World!';
    
    // file2.js
    console.log(myVar); // 'Hello, World!'

    Модули: вы можете экспортировать переменную из одного файла и импортировать ее в другой файл, используя модули. Это рекомендуемый способ передачи переменных между файлами в современном JavaScript.
    / file1.js
    export const myVar = 'Hello, World!';
    
    // file2.js
    import { myVar } from './file1.js';
    console.log(myVar); // 'Hello, World!'


    Локальное хранилище: вы можете сохранить значение переменной в локальном хранилище (localStorage) в одном файле и извлечь его в другом файле. Это полезно, когда вам нужно сохранить состояние между сеансами.
    // file1.js
    localStorage.setItem('myVar', 'Hello, World!');
    
    // file2.js
    const myVar = localStorage.getItem('myVar');
    console.log(myVar); // 'Hello, World!'


    Передача аргументов: вы можете передать значение переменной из одного файла в другой файл, передав ее в качестве аргумента функции.
    // file1.js
    function setMyVar(value) {
      myVar = value;
    }
    
    // file2.js
    import { setMyVar } from './file1.js';
    setMyVar('Hello, World!');
    console.log(myVar); // 'Hello, World!'


    Почему вы не пользуетесь chatGPT?
    Ответ написан
    2 комментария
  • Как и где взять список сайтов работающих на HTTP?

    Взять – у поисковиков! В Google есть поисковый оператор inurl:

    поисковый запрос авто -inurl:https
    найдёт сайты по ключевому слову «авто», в адресе которых отсутствует "https", т.е. которые работают без HTTPS.

    Попробовать

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

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

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

    Для настройки DNS для поддоменов вы можете использовать записи типа "Wildcard" (запись типа *). Эта запись позволяет направлять все поддомены вашего основного домена на определенный IP-адрес или сервер.
    Добавьте новую запись типа "Wildcard" (обычно используется символ *), указав в качестве значения IP-адрес вашего сервера. Пример:
    *.project.com. IN A 192.168.1.1

    Максимальная длина поддомена зависит от ограничений доменных имен и DNS. Согласно стандартам, максимальная длина доменного имени (включая поддомены и точки между ними) составляет 253 символа. Однако, для удобства использования и совместимости с различными системами рекомендуется ограничиться более короткими именами, обычно не более 63 символов.
    Ответ написан
    Комментировать
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

    Скорее всего эта проблема связана с БД. Вероятно есть SQL запросы, которые плохо оптимизированы под эту задачу. В этом случае тогда нужно оптимизировать запросы, возможно еще нужно создать индексы, возможно еще произвести тюнинг MySQL, увеличить некоторые буферы и другие настройки.

    Для оптимизации нужно:

    1. Нужно включить логирование медленных запросов. Много раз использовал эту методику для выявления узких запросов.
    После уже можно понять какие php файлы являются проблемными, и их исправить.
    Логирование медленных запросов включается так в разделе [mysqld] в файле my.cnf:
    slow_query_log      = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time     = 1

    Анализ лог файла делается так:
    mysqldumpslow -s c -t 20 slow.log.1 > results.log

    2. Также может помочь утилита mysqltuner.pl. Многократно ее использовал для определения проблемных запросов, индексов, которые нужно добавить в таблицы, и других проблем с MySQL/MariaDB.

    3. Можно вручную провести анализ запросов при помощи EXPLAIN.

    4. Можно сделать замеры выполнения кода, как вручную, через логирование блоков кода, так и через XDebug. И выявить долго выполняющиеся блоки, после этого оптимизировать их.

    5. Кроме того нужно посмотреть процессы на сервере, которые занимают много процессорного времени и памяти, это можно сделать через atop или другие подобные утилиты. Можно на основании этого оптимизировать программный код и службы.

    6. То что MySQL и сам сервер находятся на виртуальной машине это тормозит работу сервера, виртуальные ноды в любом случае работают медленнее, чем физический сервер. Рекомендую перенести это все на физический сервер с NVMe дисками, с современным процессором и ОЗУ не менее 128 Гб.

    Могу помочь настроить логирование, анализ этого и выявить узкие места.
    Ответ написан
    Комментировать
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Как уже заметили коллеги - первое что нужно выяснить - что тормозит.

    Спойлер: 90% что проблема в запросах к бд, так как сам по себе код в большинстве случаев банально отсылает запросы и принимает их результат, выводя его пользователю в несложных действиях. В редких случаях - запросы идут к внешним тормозящим сервисам, например к фейсбуку или другим СС. И крайне редко тормозит сам код, но тут уже опять же - 90% что это некомпетентность разраба, например, не способного построить нормальный запрос и сортирующий данные от бд в коде...

    Что конкретно надо делать:
    1) Взять за шкирку самого разбирающегося в коде (если таковой существует в проекте), и дать задание описать базовый стек вызовов, если это какой-то самопис, или сразу расставить код замера времени с метками в случае понятной архитектуры. Что то типа такого(класс - древний костыль, но работает, так что матом не ругаться):
    Class Timer.php:
    class Timer {
    
        static $start;
        static $end;
        static $marks = [];
        static $formats = [1=>''];
    
        static function init(){
            if(empty(self::$start)) self::$start = microtime(true);
        }
    
        static function setMark($markName = ''){
            $time = microtime(true);
            if($markName == '')$markName = $time;
            $data['name'] = $markName;
            $data['time'] = $time;
            $res['time'] = $time;
            if(count(self::$marks) > 1)$res['diff'] = $time - self::$marks[count(self::$marks)-2]['time'];
            else $res['diff'] = 0;
            $data['diff'] = $res['diff'];
            self::$marks[] = $data;
            return $res;
        }
    
        static function timeFormat($number,$format = ''){
            if(empty($format)) $format = 3;
            return number_format ($number,$format,'.','');
        }
    
        static function report(){
            self::$end = microtime(true);
            self::$marks['start'] = self::$start;
            self::$marks['end'] = self::$end;
            self::$marks['all_time'] =  self::$end - self::$start;
            if(!empty(self::$marks)) return self::$marks;
        }
    }


    In code:
    \Timer::init()
    //some code block 1
    \Timer::setMark('after block 1');
    //some code block 2
    \Timer::setMark('after block 2');
    ...
    //some code block n
    \Timer::setMark('after block n');
    //near end of code 
    \Timer::setMark('end');
    var_dump(\Timer::report());
    exit;

    2) Смотрите на блоки жрущие время, делите их до атомарных операций путем деления блоков пополам таймерами.
    3) Смотрите что там происходит - оптимизируете*. И так по кругу.
    4) Профит.

    * Оптимизация
    Запросы:
    1) Смотреть план запроса (use explain, Luke!).
    2) Расставить индексы которых явно не хватает
    3) Смотреть не вызывается ли 50 запросов в цикле? Если да - выписать пенделя писавшему, затем переписать в 1 запрос с нормальным джоином.

    Код:
    Иногда запрос сложно оптимизировать, он вытаскивает много данных, хотя эти данные не часто обновляются. Такие запросы нужно кешировать, для чего используют быстрые ин-мемори хранилища типа редис или мемкеш. В крайнем случае в файлах...
    Чаще всего код тормозит на регулярках, хотя "хороший" программист может придумать и более креативные способы погреть процессор.

    Что нужно сделать обязательно кроме тестов и как тогда лучше спрашивать с разработчиков, если они предлагают размытые предложения? Хочется понять в какую сторону копать
    Бить палкой не вариант? Тогда берите других, эти испортились. Если разработчик не знает как выявить узкие места кода - нахрена он нужен? Код написать сегодня любой чат может... Ну, на крайняк дайте им вышеприведенный вариант решения проблемы...

    PS: Кстати, сервер может банально не выдерживать наплыв сетевых соединений, пните адимна, пусть глянет логи.

    PPS:
    достаточно 2000-4000 человек, заходящих в течение 20 минут на сайт
    это равномерные 3-4 рпс, ну или пусть в пике 50 рпс, должно держать даже на несложной конфигурации... Копайте код.
    Ответ написан
    Комментировать