Прескачане на paywalls

Един от най-хитрите начини за прескачане на платените механизми на сайтовете са следните два кода
javascript:window.location="https://m.facebook.com/l.php?u="+encodeURIComponent(window.location.href);
или
javascript:window.location="https://www.google.com/url?rct=j&url="+encodeURIComponent(window.location.href);

Как работят?

Маркирате един от тях и го завлачвате във лентата за отметките. Когато някой сайт започне да мрънка как не сте си платили за да видите статията избирате отметката записана по рано и си я прочитате без проблем. Защото тези paywalls всъщност внимават когато посетител дойде от Facebook или Google и им показва цялата статия. Със помоща на тези 2 кода вие излъгвате сайта, че идвате  баш от тях.

смъкване снимки

Как да смъкнем картинки от Google Images Search?

Ако някога ви се е налагало да смъквате много картинки от Google по зададена ключова дума трябва да сте били отегчени до смърт от цялото това кликане и записване. Наскоро и на мен ми се наложи и точно поради това намерих един скрипт и ще ви покажа как да го използвате.

var cont=document.getElementsByTagName("body")[0];
var imgs=document.getElementsByTagName("a");
var i=0;var divv= document.createElement("div");
var aray=new Array();var j=-1;
while(++i<imgs.length){

  if(imgs[i].href.indexOf("/imgres?imgurl=http")>0){
divv.appendChild(document.createElement("br"));
aray[++j]=decodeURIComponent(imgs[i].href).split(/=|%|&/)[1].split("?imgref")[0];
divv.appendChild(document.createTextNode(aray[j]));
}
}
cont.insertBefore(divv,cont.childNodes[0]);

Как  да го използваме?

  1. Отваряме любимия си браузър и започваме да търсим по картинка.
  2. Когато се заредят снимките натискаме нейде десен бутон на мишката -> Inspect Element и отиваме на таба „Console“
  3. Копираме  скрипта отгоре и го поставяме там. Натискаме Enter. На някой браузъри може първите няколко резултата да са подпъхнати под хедъра. Махаме хедъра който пречи.
  4. Намираме всички линкове, копираме ги във нов текстов файл. Запазваме текстовия файл примерно като list.txt
  5. Изпълняваме една от следните команди във команден ред:
    wget -i list.txt
    cat file-with-list-of-urls.txt | xargs -n 1 curl -LO
    cat file-with-list-of-urls.txt | xargs -n 1 -P 10 curl -LO
    .
    Резултата и от трите команди е, че файловете се смъкват локално на компютъра. Ако първите две смъкват файл по файл то последната смъква по 10 файла наведнъж.

Така процеса е полу-автоматизиран и много по-бърз.

Допълнение от Владимир Василев за което се бях сетил, но съм го пропуснал:
Внимавайте за лицензите! Това, че смъквате изображенията не означава, че имате права върху тях самите. Ако искате да ви бъдат показани само такива изображения със съотвените лицензи ползвайте инструментите на търсачката. Безразборното използване на чужди изображения без необходимите права върху тях може да ви докара правни проблеми със собственниците на правата.

google images лицензи

Затова ако ще използвате снимките някъде проверете лицензите преди това.

SaveSave

Страната на съветите

От много време все някой ме спира или иска съвет по нещо си. Което е изморително от психическа гледна точка, защото трябва да изслушаш човека, да вникнеш във проблема му и чак тогава да му дадеш съвет. Което разбира се отнема време, но все пак се почва „аз само за малко“. Та винаги се сещам за бруталния руски виц:

Мальчик пас стадо баранов, а когда он заснул,бараны разбежались. Мальчик пошел искать стадо и у подножия горы увидел пожилого человека.“Не видели ли вы,дедушка моих баранов?““Нет,мальчик,не видел,но я дам тебе совет-поднимись выше в гору, там сидит мой отец,он все знает…“ Мальчик поднялся выше и,увидев следующего старика, спросил и у него о баранах. „Нет,дорогой, я их не видел.Но я тоже дам тебе совет- поднимись еще выше…“На самой вершине горы сидел глубокий старик.“Нет ли здесь моих баранов?“-спросил мальчик. „Нет, баранов нет, но есть добрый совет….“ „Что вы все мне даете советы? Мне нужны бараны,а не советы!“ „Дорогой , ты забыл , в какой стране живешь! У нас не страна баранов, а Страна Советов!“

Та се превръщам във страната на съветите.

Xcode documentation error

От известно време виждам само това докато се опитвам да инсталирам документацията:

Could not download and install Guides and Sample Code. An unexpected error occurred while moving files to the final destination.

А решението се оказа много просто

cd ~/Library/Developer/Shared/
rmdir Shared/
mkdir Shared
cd Shared/
mkdir Documentation
cd Documentation/
mkdir DocSets
cd DocSets/

И край на проблемите ми със инсталирането на документацията. Всичко само защото пътя до DocSets е бил със объркани права

използване на принтер от мобилно устройство

Принтиране от мобилно устройство

Използването на принтер от мобилно устройство било то таблет или телефон е лесно когато имате принтер със такава поддръжка. Обикновенно тези принтери разполагат със връзка към безжична мрежа и (ама разбира се!) съответно са малко по-скъпи. Проблема възниква когато разполагате със по-стар принтер който е или само жичен (USB или Centronics) или принтер със безжична поддръжка, но по-стар модел. Сега ще ви покажа как да се преборите със тази житейска несправедливост.

Печатане от Android

Под Android проблемите се решават сравнително по-лесно със Google Cloud Print. Изисква се браузър Chrome и регистриране на принтера във облака. Така можете да принтирате от целия свят на вашия принтер. Разбира се има уловка – трябва да се логнете във мобилното устройство и във Chrome със един и същи потребител. Ето и процедурата:

  • Регистрираме принтера на настолния компютър тук chrome://devices/
  • На мобилното устройство инсталираме Cloud Print

И общо взето е това. Има няколко благинки:

  • можем да използваме принтера от друг компютър. Хитрото е, че принтера тогава може да се намира във друг град, страна и даже континент. Разбира само от Chrome
  • можем да си закупим по-модерен принтер със поддръжка на Google Cloud Print. Текущите модели са налични ето тук
  • можем да наблюдаваме заявките през интернет оттук
  • можем да печатаме документи от Google Drive директно
  • можем да печатаме директно към CUPS под Linux със използване на специализиран драйвер за него. Кода на драйвера може да бъде взет оттук или да използвате прекомпилиран пакет оттук

И тъжната новина – връзката става само и единственно през интернет. Ако няма интернет дори и във същата стая да се намира принтера ако не е вързан със кабел към компютъра ще е просто неизползваем. Същото важи и за мобилното устройство – дори и да е във същата безжична мрежа. Ако няма интернет няма да може да използва принтера.

Печатане от iOS

Под iOS нещата са малко по-различни. Тук най-лесния и удобен начин е когато принтера поддържа AirPrint през протокола Bonjour. Ако нямаме такъв принтер разбира се ще си го емулираме:

  • инсталираме HandyPrint на macOS оттук. Под Windows ще трябва да се хакне ето така или оттук със по-новата версия. Отделно под Windows ще се наложи да инсталирате и Bonjour Print Services оттук.
  • на мобилното устройство избираме иконката за споделяне (share) и ако приложението поддържа AirPrint принтера ще се появи във списъка. Няма никакви настройки

Сега малко особенности:

  • принтера трябва да се намира във същата локална мрежа със мобилното устройство
  • няма функция печатане през интернет
  • може да се печата дори и когато интернет липсва във локалната мрежа
  • ако имате принтер свързан със AirPort Extreme или AirPort Express то самия принтер трябва да поддържа AirPrint за да можете да го ползвате. Официален списък на поддържаните принтери през AirPort има тук и неофициални тук и тук. Но ще трябва да проверите дали и принтера поддържа AirPrint иначе от мобилно устройство няма да можете да го видите и използвате
  • може да се ползва CUPS и да се емулира подобен принтер. За повече информация как – тук, тук и тук

Разбира се това са официалните начини. Има и алтернативи. Hewlett Packard поддържат стандарта ePrint използващ техните устройства. FedEx имат мобилно принтиране също тук – като след отпечатването можете да изберете да минете през техен офис за да го вземете или те да ви го доставят. Можете да използвате Printer Pro – оттук или някое от многобройните алтернативни приложения. Можете да видите дали производителя на принтера ви няма приложение: Samsung, Canon, Epson или други.

Както виждате – има богат избор вече на пазара. А само преди няколко години използването на принтер от мобилно устройство беше мит. Вече е реалност.

ET Legacy и macOS Sierra проблем

Човек и добре да живее минава на по-нова версия на операционната система. Част от проблемите от новата версия е, че ETLegacy спря да работи поради липсата на файлове. Всъщност аз ги виждам през файловата система, но приложението не.

FS_InitFilesystem: Original game data files not found.
Please copy pak0.pk3, pak1.pk3 and pak2.pk3 from the ‘etmain’ path of your Wolfenstein: Enemy Territory installation to:
„/private/var/folders/ph/72hb8_ds1cg98mvs4xb61c9w0000gn/T/AppTranslocation/55316FBE-BCC2-43C9-B1DC-817D7B012C32/d/etmain“

Разбира се при вас цифрите може да са малко по-различни. Може да отказва да зареди и заради липсата на файла librenderer_opengl1_mac въпреки, че го има. Проблема се оказва новата защита на приложения във macOS (Gatekeeper path randomization) и решението е сравнително лесно. Трябва само да отворите терминал и да изпишете следните команди:

cd /Applications/
xattr -dr com.apple.quarantine ET\ Legacy/

след което можете да си пуснете играта.

Global Firefox Console

Firefox е един от най-любимите ми браузъри по много причини. Днес установих, че е възможно да се активира глобална конзола където той да започне да показва информация относно целия мрежов трафик от всичките плъгини, него самия и сайтовете. Единственното което трябва да се направи е да се стартира със параметър от командния ред -jsconsole. Как става това?
Windows 32 битов

"C:\Program Files\Mozilla Firefox\firefox.exe" -jsconsole

Windows 64 битов

"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -jsconsole

OSX

/Applications/Firefox.app/Contents/MacOS/firefox-bin -jsconsole

Linux

firefox -jsconsole

Това е всичко. Разбира се подгответе се за потоп от информация във глобалната конзола. На мен лично ми трябва да открия проблем при обновлението му. На версия 48.0 съм и ми казва че няма обновление. Което е лъжа при положение че има 48.0.2 налична.

HTTP debugger

Понякога човек се нуждае от услуги който надежно да използва докато праща заявки нагоре-надолу към други услуги. Разбира се… не винаги може да се дебъгне точно какво и как се изпраща нагоре, особенно когато заявките са криптирани.

И тук на помощ идва HTTPBIN. Със негова помощ може доста по-лесно да се диагностицират заявките и да се преработят.

Enabling HTTP/2 on nginx over Amazon AMI

Една от любимите oперационни системи на Amazon EC2 е тяхната Amazon AMI. Разбира се няма нищо по-хубаво когато производителя на хардуера ти доставя оптимизиран софтуер за него. УВИ има няколко проблема като най-големия е, че отделни модули са доста стари. Това е защото AMI използва някакъв миш-маш от няколко операционни системи – RHEL6, RHEL7 и дори Fedora. Във моя случай nginx е версия 1.8, но за да активирам HTTP/2 се нуждая поне от версия 1.9.5 (докато актуалната е 1.10.1). Разбира се ако изчакам още някой месец може и да ме огрее… но чакам вече година и ми писна. Затова взех нещата във свои ръце и си прекомпилирах своя версия на nginx.

1. Инсталирайте nginx – ще ви спести поне писане на конфигурационни файлове. Конфигурирайте си го по свой вкус.
2. sudo yum install pcre-devel openssl-devel #библиотечки… ще ви потрябват
3. wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz
4. tar zxvf openssl-1.0.2j.tar.gz -c /lib/opt
5. wget http://nginx.org/download/nginx-1.10.1.tar.gz
6. tar zxvf nginx-1.10.1.tar.gz
7. cd nginx-1.10.1
8. ./configure –prefix=/usr/share/nginx –sbin-path=/usr/sbin/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –http-client-body-temp-path=/var/lib/nginx/tmp/client_body –http-proxy-temp-path=/var/lib/nginx/tmp/proxy –http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi –http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi –http-scgi-temp-path=/var/lib/nginx/tmp/scgi –pid-path=/var/run/nginx.pid –lock-path=/var/lock/subsys/nginx –user=nginx –group=nginx –with-file-aio –with-ipv6 –with-http_ssl_module –with-http_realip_module –with-http_addition_module –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_degradation_module –with-http_stub_status_module –with-mail –with-mail_ssl_module –with-http_v2_module –with-openssl=/opt/lib/openssl-1.0.2j –with-pcre –with-pcre-jit –with-debug –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic’ –with-ld-opt=’ -Wl,-E’
9. make
10. /etc/init.d/nginx stop
11. sudo cp objs/nginx /usr/sbin
12. /etc/init.d/nginx start

ВАЖНО! Ако обновление ви презапише по-стара версия на nginx ще се наложи да изпълните точка 9 поне още веднъж. Защото това е един дърт пач върху оригиналния nginx.

Сега вече ако напишете nginx -V ще видите нейде:
nginx version: nginx/1.10.1

Оттук насетне е лесно. Отивате във конфигурационния файл и издирвате това:
listen 443 ssl;
за да го замените със:
listen 443 ssl http2;

Честито! Вече имате работещ nginx със http/2.

Забележка!!! Оригиналния nginx във AMI е компилиран със малко повечко опции. Липсващите са:
–with-http_xslt_module
–with-http_image_filter_module
–with-http_geoip_module
–with-http_perl_module
–with-google_perftools_module
но аз така или иначе не ги използвам тях.