Pull to refresh
30
0

Пользователь

Send message
Тоже использую dnsmasq для блокировки рекламы.
# cat /etc/dnsmasq.hosts | wc -l
48306

Базы обновляю при помощи скрипта в cron.
#!/bin/bash
#
if test -s /tmp/hosts_list.*
then
    rm -f /tmp/hosts_list.*
fi
wget --no-check-certificate -O /tmp/hosts_list.1 http://hosts-file.net/ad_servers.txt &&
wget --no-check-certificate -O /tmp/hosts_list.2 https://adaway.org/hosts.txt &&
cat /tmp/hosts_list.* | grep -v ^# | sort -u > /etc/dnsmasq.hosts &&
rm -f /tmp/hosts_list.* &&
/bin/systemctl reload dnsmasq
Я не жадный ;)

http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&startdate[day]=&startdate[month]=&startdate[year]=
http://winhelp2002.mvps.org/hosts.txt
http://malware-domains.com/files/domains.zip
http://adaway.org/hosts.txt
http://someonewhocares.org/hosts/hosts
UFO landed and left these words here
Ну и, собственно, на всякий случай листинг кусочка конфига, который спокойно проходит на А+:
тык
server {

listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
rewrite ^ https://$server_name$request_uri? permanent;

}

server {
listen 80;
server_name example2.com www.example2.com;
rewrite ^(.*) $scheme://example.com$request_uri permanent;

}

server {
# port on which we're listening for incoming connections
listen 443 ssl spdy;
# 40x error pages
error_page 404 /404.html;
error_page 403 /403.html;
error_page 500 /500.html;
error_page 502 /502.html;

# defining a zone for domain to answer to
server_name example.com www.example.com;

ssl on;
ssl_certificate /etc/nginx/conf.d/example.com.unified.crt;
ssl_certificate_key /etc/nginx/conf.d/example.com.unified.key;

ssl_session_cache shared:SSL:5m;
ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+ECDSA+AESGCM:AES128+EECDH:AES128+EDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA:!ADH';
ssl_prefer_server_ciphers on;
ssl_stapling on;

resolver 8.8.8.8 8.8.4.4 208.67.222.222 valid=300s;
resolver_timeout 10s;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Strict-Transport-Security max-age=31536000;


Внедряется за пару минут буквально, больше времени на выписку сертификатов и их заливку уходит. Ничего нигде не падает, из софт-специфик вещей приходилось только немного подкрутить конфиг Mediawiki, чтобы она не выдавала mixed-content, а тому же Вордпрессу, phpBB и куче всего прочего — вообще до фонаря, абсолютно так же работает, как и напрямки.
Напишу на случай, если кто-то будет делать pHash по описанию в этой статье. В статье написана ЧУШЬ. Правильный алгоритм DCT-pHash такой (описан в phash.org/docs/pubs/thesis_zauner.pdf, раздел 3.2.1):

1. Картинка уменьшается до 32×32
2. Переводится в grayscale
3. Применяется DCT 32×32
4. (вот тут разница) Из полученной матрицы 32×32 берётся подматрица 8×8 со сдвигом 1×1 от верхнего левого угла (!). То есть, если наша 32×32 пронумерована как 0..31×0..31, то мы берём пересечение 1..8×1..8.
5. Вычисляем среднее значение величин полученной матрицы
6. Составляем из 64 величин матрицы 64-битовый массив, в котором бит равен 1, если значение величины больше среднего, 0 если меньше.

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

Это бред, картинка и её фурье-образ могут быть похожи только случайно.
/usr/bin/vlc -vvv --loop --http-reconnect rtsp://160.74.34.2:554 --sout "#std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=:9109/camera1.flv}"
Я тоже сильно привык к screen, но иногда бывает, что он зависает\залипает, ни как не могу выяснить причину. Те он так зависает, что даже не возможно сделать detach и в новом терминале не возможно сделать screen –x session. Приходится его kill -9.

Еще я очень привык что screen у меня запускается по алиасу:
alias live='
if [ -n "`screen -ls | grep LIVE`" ]; then 
    if [ -n "`screen -ls | grep LIVE | grep Attached`" ]; then 
        if [ -z "`echo $TERMCAP | grep screen`" ]; then 
            echo "Enter into Atached screen"; 
            sleep 2; 
            screen -x LIVE ; 
        else 
            echo "in LIVE" ; 
        fi 
    else 
        screen -r LIVE ; 
    fi  
else 
    screen -S LIVE -c .screenrc.live ; 
fi'


если screen с сессией live не запущен, запустить его и перейти в него, если сессия live есть, и не подключена ни к одному терминалу просто войдем в эту сессию, если сессия live существует и подключена на другом терминале, то сообщим об этом, ждем 2 секунды и войдем в сессию, а если мы находимся в этой сессии, то просто сообщаем, что уже тут.

Те все, что мне нужно сделать в терминале после перезагрузки (бывает и такое) это набрать live. На работе не забыть нажать C-a d, а по приходу домой просто набрать live.

А в .screenrc.live (настриваем по вкусу рабочее окружение):
vbell off
hardstatus alwayslastline '%{= dg}[ %{g}%H %{g}][%= %{= dg}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{g}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
screen -t root          0 sudo -i
screen -t jabber        1 mcabber
screen -t irc           2 irssi -c irc.freenode.net -n nick -w password
screen -t rss           3 snownews -u
screen -t bash          4
startup_message off
bindkey -k F2 next # переключение табов по <--f11 f12-->
bindkey -k F1 prev


Спасибо за пост, буду пробовать tmux. Правда в посте не хватает пару слов о том, как вывести список сессий и как вернутся в нужную сессию.
C-b d – отключится от сессии
tmux list-sessions – список сессий
tmux attach-session -t 0 – вернуться в нужную сессию

C-b после C-a в screen ужасно не удобно…
Пожалуйста.
Код
#include <stdio.h>
#include <unistd.h>

#define RED         "\033[1;32;41m"
#define GREEN       "\033[5;30;42m"
#define OLDCOLOR    "\033[0;0;0m"

main(){
	if(isatty(STDOUT_FILENO)) printf(RED "This is a TTY! " GREEN "Output may be colorized!" OLDCOLOR "\n");
	else printf("This is pipe, no colors!\n");
}


Выхлоп

Недавно в какой-то либе встретил интересный прием заполнения свойств объекта:

return {
    // ... some properties,
    params: new function() {
        var pairs = url.search.slice(1).split('&');
        for (var i = 0; i < pairs.length; i++) {
            var pair = pairs[i].split('=');
            this[pair[0] || ''] = pair[1] || '';
        }
    }
}

'this[...] =' заполняет свойства объекта, созданного через new function. Более явно это можно было бы записать так:

    params: new function() {
        var pairs = url.search.slice(1).split('&'),
            result = {};
        
        for (var i = 0; i < pairs.length; i++) {
            var pair = pairs[i].split('=');
            result[pair[0] || ''] = pair[1] || '';
        }
        return result;
    }

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity