Бложек теперь на old.mrThe.name. Следите за обновлениями.

Понадобилось сделать скриншот содержимого браузера. Делать это через принтскрин не самый оптимальный выбор, учитывая сколько у Chrome(Chromium) расширений.
Было найдено отличное расширение Explain and Send Screenshots.

.

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

.

Само приложение просит доната хотя бы в 1$. Не много, но проблема в том, что после удаления и повторной установки приложение снова просит донат, а это уже как-то обидно.

.

Рассмотрим способ взлома и получения всех функций на примере этого расширения:
Читать далее »

Теги: , , , ,
Jan, 29 Уязвимости | 3 комментария
 

Что-то забросил я бложек. Надо исправлять.
.

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

Выбор на источник музыки тут же пал на ВКонтакте. Где ещё можно найти столько музыки да ещё и бесплатно?
.

Тут же был написан небольшой скрипт на php, который вытягивает ссылки на треки и аккуратно кладёт их в файл, из которого их можно скачать любым удобным даунлоад менеджером.
Читать далее »

Теги: , , ,
Sep, 30 php | 4 комментария
 

Давно я не писал про php.

.

Так вот. Понадобилось мне ограничить количество замен производимых функцией str_replace.

.

Тут же была найдена функция preg_replace поддерживающая нужную функциональность, но она дико тормозила, выедала кучу памяти, короче – не подходила.

.

Немного погуглив я вернулся к документации и в комментариях обнуружил нужный мне велосипед:

< ?php
function getSingleReplaceCombinations($replace, $with, $inHaystack)
{
    $splits = explode($replace, $inHaystack);
    $result = array();
    for ($i = 1, $ix = count($splits); $i < $ix; ++$i) {
        $previous = array_slice($splits, 0, $i);
        $next     = array_slice($splits, $i);
 
        $combine  = array_pop($previous) . $with . array_shift($next);
        $result[] = implode($replace, array_merge($previous, array($combine), $next));
    }
    return $result;
}
var_dump(getSingleReplaceCombinations("a", "x", "aba")); // result as mentioned above
?>

На выходе функция отдаёт массив со всеми возможными заменами.
Но, мне ведь нужна только одна замена, это решилось добавлением break в конце цикла:
Читать далее »

Теги: ,
Jan, 8 php | 2 комментария
 

Неожиданная проблема возникла при переезде на другой хостинг.
WordPress после включения ЧПУ(permalinks) показывал только 404-ю ошибку, причём, даже на главной.

За неделю были выкурены все конфиги апача и php, но решение найдено не было и пришлось шаг за шагом разбирать что же там делает вордпресс, и почему отдаёт ошибку.

.

В итоге, зацепился за то, что параметры home и siteurl после установки нового вордпресса выглядят так: “http://site.ruhttp://site.ru”, когда должны быть “http://site.ru”.

.

Ещё немого поисков, и оказывается, что за формирование этого параметра отвечает функция “wp_guess_url()“, которая находится в файле “wp-includes/functions.php“.

.

Самая интересная строка в ней:

$url = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);

Собственно, всё отлично и должно работать. Но посмотрев что возвращает каждый из параметров оказалось, что REQUEST_URI отдаёт полный путь вместе с доменом, т.е. выглядит примерно так: “http://site.ru/some_path”, когда в документации написанно, что должен быть путь без домена: “/some_path”!

.

Желания искать причину бага уже не было(да и гугл выдаёт всего пару случаев, без решения) был быстро написан простой костыль, состоящий из двух файлов: .htaccess и req_url.php.
.htaccess:

php_value auto_prepend_file /full/path/req_url.php

.

req_url.php:

<?php
$_SERVER['REQUEST_URI']=str_replace("http://".$_SERVER["HTTP_HOST"],"",$_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI']=str_replace("https://".$_SERVER["HTTP_HOST"],"",$_SERVER['REQUEST_URI']);
?>

Здесь в htaccess указанно правило, которое обязывает в начале всех скриптов запускать req_url.php, в котором, в свою очередь, написан простой фикс серверной переменной.

.

Оба эти файла находятся в корне папки с сайтами, дабы на всех сайтах всё отлично работало.

.

Теги: , , ,
Jan, 5 php | 2 комментария
 

Не так давно я узнал, что в Ubuntu нет встроенного кэширования dns запросов. А у меня, хоть и достаточно быстрый интернет и хорошие пинги до dns серверов, но терять от 50 до 1000мс на запрос как-то не хочется.
.
Для огранизации dns кэширования будем использовать dnsmasq.
.
Читать далее »

Теги: , ,
Oct, 3 Ubuntu | 2 комментария