?

Log in

No account? Create an account

python import re, string

Dec. 12th, 2017 | 10:14 pm

Python: given a string, keep only alphanumeric charecters:
https://stackoverflow.com/questions/1276764/stripping-everything-but-alphanumeric-chars-from-a-string-in-python

tl;dr:
re.sub('[\W_]+', '', sourcestring)

is way faster than anything else.
Tags:

Ссылка | Leave a comment | Share

bash, exec, перенаправление вывода и именованные пайпы

Nov. 8th, 2017 | 06:34 pm

#!/bin/bash

echo hello

if test -t 1; then
    # Stdout is a terminal.
    exec >log
else
    # Stdout is not a terminal.
    npipe=/tmp/$$.tmp
    trap "rm -f $npipe" EXIT
    mknod $npipe p
    tee <$npipe log &
    exec 1>&-
    exec 1>$npipe
fi

echo goodbye


http://ashep.org/2010/perenapravleniya-v-bash-pri-pomoshhi-exec/#.WgMjIxOCxmB
PS. в bash4 можно использовать coproc
Tags: ,

Ссылка | Leave a comment | Share

Космический мусор

Aug. 25th, 2017 | 02:02 pm

13 ноября 2015 на землю упало нечто под кодовым названием WT1190F.







WT1190F



Read more...Collapse )

Ссылка | Leave a comment | Share

Обрабатываем динамические web-страницы. Python во все поля.

May. 17th, 2017 | 03:05 pm

selenium + BeatifulSoup
from bs4 import BeautifulSoup
from selenium import webdriver
#br = webdriver.Firefox()
selenium = webdriver.Chrome()
selenium.get('https://example.com')

#залогиниться
username = selenium.find_element_by_id('username'); password = selenium.find_element_by_id('password')
username.send_keys('myusername'); password.send_keys('mypassword')
selenium.find_element_by_name("submit").click()


# подождать подгрузки чего-нибудь
# WebDriverWait(selenium, 5).until(EC.visibility_of_element_located((By.ID, "the-element-id")))

# уже можно сохранять динамический код
src = selenium.page_source
# или поискать что-то конкретное
parser = BeautifulSoup(src,"lxml")
posts=[x['href'] for x in parser.findAll('a',attrs={'class':'post_header'})]
# собрать кукисы, скачать картиночки
headers['Cookie'] = '; '.join(['%s=%s'%(x['name'],x['value']) for x in selenium.get_cookies()])
headers['Referer'] = link
for imglink in [baseurl+x['src'] for x in parser.findAll('img') if 'upload' in x['src']]:
  imgrq=requests.get(imglink, headers=headers, stream=True)
  shutil.copyfileobj(imgrq.raw, open(filename, 'wb'))

спасибо https://dvenkatsagar.github.io/tutorials/python/2015/10/26/ddlv/
докам по selenium и BeautifulSoup

Ссылка | Leave a comment | Share

Каталог аккумуляторов 18650

Mar. 22nd, 2017 | 01:56 pm

Сравнение
http://lygte-info.dk/review/batteries2012/Common18650comparator.php
Куча красивых графиков по конкретной модели
http://lygte-info.dk/review/batteries2012/LG%2018650%20D1%203000mAh%20(Pink)%20UK.html
Tags:

Ссылка | Leave a comment | Share

автоопределение PMTU blackhole

Feb. 17th, 2017 | 03:12 pm

оказывается, linux умеет автоматически определять PMTU blackhole и сбрасывать MSS на net.ipv4.tcp_base_mss.
У меня на 2.6.32 это занимает около 6 секунд.
net.ipv4.tcp_mtu_probing - INTEGER
    Controls TCP Packetization-Layer Path MTU Discovery.  Takes three
    values:
      0 - Disabled
      1 - Disabled by default, enabled when an ICMP black hole detected
      2 - Always enabled, use initial MSS of tcp_base_mss.
Tags:

Ссылка | Leave a comment | Share

Лекция про красно-чёрные деревья

Aug. 19th, 2016 | 02:52 pm

Хорошая лекция по-английски про красно-чёрные деревья
http://videolectures.net/mit6046jf05_demaine_lec10/

вообще весь курс по структурам данных интересный, хотя называется Introduction to Algorithms.

Ссылка | Leave a comment | Share

HTTPS Optimizing time-to-first-byte

Mar. 2nd, 2016 | 01:35 pm

О накладных расходах на https соединение и что можно улучшить,
TLS false start и nginx large cert bug
https://www.igvita.com/2013/12/16/optimizing-nginx-tls-time-to-first-byte/

Тут еще про ssl_stapling, ECDSA и AES-NI:
https://habrahabr.ru/company/yandex/blog/249771/
Tags: , , ,

Ссылка | Leave a comment | Share

Настраиваем serial console

Feb. 4th, 2016 | 08:25 pm

CentOS6:
kvm: Настраиваем гостевую систему, чтобы работало virsh console
https://mcdee.com.au/kvm-virsh-console-access-centos/

echo "stop on runlevel[016]
start on runlevel[345]
respawn
instance /dev/ttyS0
exec /sbin/mingetty /dev/ttyS0" > /etc/init/ttyS0.conf

echo ttyS0 >> /etc/securetty

initctl start ttyS0

vi /etc/grub.conf
Add console=ttyS0 as a kernel option
Tags:

Ссылка | Leave a comment | Share

Про преобразование Фурье

Nov. 14th, 2015 | 02:10 am

Дискретное преобразование Фурье на пальцах, без ортогональных базисов и прочих умных слов, зато понятно, что откуда выходит.
http://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/

Ссылка | Leave a comment | Share