Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Ninazu

Ninazu

  • 52
    вклад
  • 71
    вопрос
  • 97
    ответов
  • 35%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как отправить сообщение одному боту Telegram от другого?

    Ninazu
    Ninazu @Ninazu
    Никак. Боты не умеют инициализировать диалог, тем более с другим ботом. Можно запихнуть обеих ботов в группу, они смогут видеть сообщения друг друга
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как реализовать эффект двоения?

    Ninazu
    Ninazu @Ninazu
    Судя по тому что нужно вам необходимо проделать с копируемыми картинками три вещи
    1. Задать им уровень прозрачности разный (от меньшего к большему)
    2. Применить blur (по той же схеме что и с прозрачностью)
    3. Разрезать по диагонали и сместить треугольники
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Где найти примеры хорошего кода php?

    Ninazu
    Ninazu @Ninazu
    Начнем с того. С какими вы фреймворками работали?)

    Может нужен просто легкий фрейм?
    https://www.slimframework.com/

    Ну а если хочется БДСМ
    https://github.com/leocavalcante/siler

    Хотя я бы рекомендовал остановиться на Symfony
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как управлять вероятностями появления поста (рейтинг, сортировка, "рекомендованное")?

    Ninazu
    Ninazu @Ninazu
    Зависит от того где храните эти данные и в каком виде.

    Например для MySQL можно указывать последовательность сортировки в ORDER BY
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Как залить телеграм бота на хостинг?

    Ninazu
    Ninazu @Ninazu
    Который поддерживает питон. По FTP например)
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Где найти телеграм api для личного аккаунта?

    Ninazu
    Ninazu @Ninazu
    Это нужно делать не через BotApi, а через MTProto или TDLib
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как заменить белый фон на прозрачный с помощью PHP (GD)?

    Ninazu
    Ninazu @Ninazu
    imagecolorat - получить цвет пикселя
    imagesetpixel - выставить цвет пикселя
    imagecolorallocatealpha - чтоб создать пустой цвет
    imagealphablending - выставить режим смешивания
    imagesavealpha - сохранить с прозрачностью
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему перестал открываться index.php на open server?

    Ninazu
    Ninazu @Ninazu
    1. По какому пути вы пытаетесь попасть на страницу?
    2. Существует ли файл all/home.php?
    3. Что в .htaccess?
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Можно ли исправить эту очень полезную функцию PHP?

    Ninazu
    Ninazu @Ninazu
    Если уже переписываете, то переписывайте нормально. Избавляйтесь от глобального массива $CONF, рекурсии и функций без неймспейсов. Также у вас функция как записывает так и читает значения, что немного выносит мозг. Также считаю что исключению там не место, лучше заменить на значение по умолчанию

    class Config {
    
    	protected static array $register = [];
    
    	public static function get(string $name, $default = null) {
    		$keys = explode('.', $name);
    
    		$pointer = self::$register;
    
    		foreach ($keys as $key) {
    			if (!array_key_exists($key, $pointer)) {
    				/*Если ключа нет, выставить его*/
    				//self::set($name, $default);
    
    				/*Бросить исключение*/
    				//throw new Exception("No such key: {$name}");
    
    				/*Вернуть значение по умолчанию*/
    				return $default;
    			}
    
    			$pointer = &$pointer[$key];
    		}
    
    		return $pointer;
    	}
    
    	public static function set(string $name, $value = null) {
    		$arr = &self::$register;
    		$keys = explode('.', $name);
    
    		foreach ($keys as $key) {
    			$arr = &$arr[$key];
    		}
    
    		if (is_array($arr) && is_array($value)) {
    			$arr = array_replace_recursive($arr, $value);
    		} else {
    			$arr = $value;
    		}
    	}
    
    	public static function getTree() {
    		return self::$register;
    	}
    }
    
    Config::set("config", [
    	"name" => "test",
    ]);
    print_r(Config::get("config"));
    echo "(config)\n\n";
    
    Config::set("config.class.name", "A");
    print_r(Config::get("config.class.name"));
    echo "\n(config.class.name)\n\n";
    
    Config::set("config", [
    	"class" => [
    		"test" => "B",
    	],
    ]);
    print_r(Config::get("config.class"));
    echo "\n(config.class)\n\n";
    
    Config::set("config.class", null);
    print_r(Config::get("config.class"));
    echo "\n(config.class)\n\n";
    
    print_r(Config::get("config.fake.key.without.value", "UNDEFINED"));
    echo "\n(config.fake.key.without.value)\n\n";
    
    Config::set("config.nullable", null);
    print_r(Config::get("config.nullable", "NULL"));
    echo "\n(config.nullable)\n\n";
    
    print_r(Config::getTree());
    echo "\n(all)\n";


    Работает в PHP7.4
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Почему моя kali linux выглядит не так как у всех?

    Ninazu
    Ninazu @Ninazu
    Правой кнокой по панели, и редактировать панель)

    Добавляйте панелей сколько хотите. Двигайте их куда хотите. Еще есть апплеты)))

    Да прибудет с вами гугл
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как зашифровать АПИ токен на стороне клиента?

    Ninazu
    Ninazu @Ninazu
    Ничего шифровать не нужно. Алгоритм такой
    1. Берете https://github.com/Valve/fingerprintjs2
    2. Отправляете результат его работы c каждым запросом
    3. Авторизируетесь и получаете токен который на сервере привязан к fingerprint и IP
    4. При получении запроса с токеном и fingerprint, проверяете наличие токена в своем хранилище, и соответсвие токена IP и fingerprint которые пришли с клиента
    5. Если не прошла проверка, заставляйте авторизироваться снова.

    P.S. IP часто динамический. Так что учитывайте это. Например много людей используют мобильный интернет. Плюс нужно понимать что может быть несколько устройств. Пользователь может зайти с планшета, телефона и ПК
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Зависит ли класс А от Б в данном случае?

    Ninazu
    Ninazu @Ninazu
    Зависит! Чтоб не зависел, используйте интерфейсы

    interface D {
    
    	public function execute();
    }
    
    class B implements D {
    
    	public function execute() {
    		return "This is B";
    	}
    }
    
    class C implements D {
    
    	public function execute() {
    		return "This is C";
    	}
    }
    
    class A {
    
    	public function __construct(D $class = null) {
    		if (!is_null($class)) {
    			echo $class->execute();
    		}
    	}
    }
    
    new A();
    new A(new B());
    new A(new C());
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Какой алгоритм предпочитаете для проверки целостности данных/файлов?

    Ninazu
    Ninazu @Ninazu
    То что вы понимаете под
    можно "сломать" файл и хэш при этом не изменится

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

    Ninazu
    Ninazu @Ninazu
    Начните с абстракции, интерфейсов и балансеров)) Ваша система не должна вообще ничего знать про то, где что хранится. Для начала это должен быть балансер, который в самом простом примере ведёт на локальный компьютер. В будущем будет вести на удалённый сервер, а еще позже на группу серверов распределяя контент по ним.

    5696459148099584.png
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как настроить поддержку PUT- и DELETE-запросов на локальном сервере Xampp?

    Ninazu
    Ninazu @Ninazu
    REST - дно) Не слушайте хипстеров. И забудьте про него.

    Ну а вообще очень похоже на то что ноги с CORS идут.
    Стандарт Cross-Origin Resource Sharing работает с помощью добавления новых HTTP-заголовков, которые позволяют серверам описывать набор источников, которым разрешено читать информацию, запрашиваемую web-браузером. В частности, для методов HTTP-запросов, которые могут привести к побочным эффектам над данными сервера (в частности, для HTTP методов, отличных от GET или для POST запросов, использующих определнные MIME-типы), спецификация требует, чтобы браузеры "предпроверяли" запрос, запрашивая поддерживающие методы с сервера с помощью метода HTTP-запроса OPTIONS и затем, поверх "подтверждения" с сервера, отсылали фактический запрос с фактическим методом HTTP-запроса
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как найти оптимальное расположение объектов в контейнере?

    Ninazu
    Ninazu @Ninazu Автор вопроса
    SVG генерирую программно сам, а потом просто скармливаю на просчет этой прелести
    https://deepnest.io/
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как разобрать код: str_rev(md5("base64(qwerty)"))?

    Ninazu
    Ninazu @Ninazu
    5deb6341d24a0674259660.png

    Всё равно следующий этап вы не пройдёте)

    5deb8e14156f0162125355.png
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как определить message_id, зная id канала и текст сообщения?

    Ninazu
    Ninazu @Ninazu
    Определить message_id можно но не с 100% вероятностью. Так как сообщение может дублироваться в канале. Для этого нужно подключиться к каналу и подгрузить его историю. Например с помощью MTProto

    При публикации в канал, метод возвращает message_id в ответе))

    Но самый простой и правильный способ, это переслать сообщение из канала боту. Тогда точно в запросе прилетит его айдишник
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как сделать ссылку на пользователя у которого нет username?

    Ninazu
    Ninazu @Ninazu
    <a href="tg://user?id=123456789">parseMode=HTML</a>
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Join таблиц из 2 бд yii2?

    Ninazu
    Ninazu @Ninazu
    $query = "SELECT 
    						t1.AdId, 
    						t1.City 
    					FROM butuzLOCAL.product AS t1 
    						JOIN statistic.user_2 AS t2 ON t1.AdId = t2.AdId
    					WHERE t2.date = :dttm";
    
    $results = Yii::$app->db
        ->createCommand($query)
        ->bindValues([
            'dttm'=>'2019-11-12'
        ])
        ->queryAll();
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • Следующие →
Самые активные сегодня
  • sasmoney
    sasmoney
    • 9 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 7 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • GNUBack
    • 5 ответов
    • 0 вопросов
  • Sanes
    Sanes
    • 4 ответа
    • 0 вопросов
  • Vindicar
    Vindicar
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации