Aug 26, 2019

Urllib: disable SSL sertificates check

import ssl
ssl._create_default_https_context = ssl._create_unverified_context
Fix for local environment for example for such exceptions:
Traceback (most recent call last):
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/urllib/request.py", line 1317, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/http/client.py", line 1244, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/http/client.py", line 1290, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/http/client.py", line 1239, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/http/client.py", line 966, in send
    self.connect()
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/http/client.py", line 1414, in connect
    server_hostname=server_hostname)
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/ssl.py", line 423, in wrap_socket
    session=session
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/ssl.py", line 870, in _create
    self.do_handshake()
  File "/home/alexey/anaconda3/envs/torch_04/lib/python3.7/ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)

Oct 11, 2018

Compile tensorflow and opencv from source

Tensorflow

sudo apt install python3-dev python3-pip
pip install -U pip six numpy wheel mock
pip install -U keras_applications==1.0.5 keras_preprocessing==1.0.3 --no-deps

./configure  # see 'View sample configuration session' here https://www.tensorflow.org/install/source
bazel build --config=opt --config=cuda --config=mkl --config=monolithic //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install /tmp/tensorflow_pkg/tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl

cuDNN

Instructions here: https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

Bazel

Follow instructions: https://docs.bazel.build/versions/master/install-ubuntu.html#using-bazel-custom-apt-repository
Download from https://github.com/bazelbuild/bazel/releases
Be sure Java installed

# Bazel 18.1 for TF r1.12 
# Details why so: https://github.com/tensorflow/tensorflow/issues/23401

chmod +x bazel--installer-linux-x86_64.sh
./bazel--installer-linux-x86_64.sh --user

# add:
# export PATH="$PATH:$HOME/bin"
# to ~/.bashrc

git clone https://github.com/tensorflow/tensorflow
git checkout r1.12
https://www.tensorflow.org/install/source

Opencv

https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/

ln -s /usr/local/lib/python3.6/site-packages/cv2.so cv2.so
cp -r ~/anaconda3/envs/opencv_build/lib/python3.6/site-packages/cv2/ ~/anaconda3/envs/tf_build/lib/python3.6/site-packages/

Feb 26, 2018

Extract lemmas

Docs
# conda install spacy
# python -m spacy download en

In[1]: import spacy
In[2]: nlp = spacy.load('en')

In[3]: doc = nlp("Hello, my cruel world. I'm leaving you tonight.")

In[4]: list(doc.sents)
Out[4]: [Hello, my cruel world., I'm leaving you tonight.]

In[5]: list(doc)
Out[5]: [Hello,, , my, cruel, world,., I, 'm, leaving, you, tonight, .]

In[6]: doc[8]
Out[6]: leaving
In[7]: doc[8].lemma
Out[7]: 9707179535890930240
In[8]: doc[8].lemma_
Out[8]: 'leave'

In[9]: doc[8].pos_
Out[9]: 'VERB'

In[10]: from spacy import displacy
In[11]: displacy.serve(doc, style='dep')

Oct 12, 2017

Байки от Фихтенгольца

Студента математика зовут на представление в камерный театр. «Ка-мерный театр»,- читает он на билете,- «Посмотрим, посмотрим». Возвращается разочарованным. На расспросы друзей объясняет «Обещали k-мерный, а рассмотрели только тривиальный случай k=3″
Лекции Григорий Михайлович вел поистине артистично. Соответственно, мало кто отвлекался. Но в 1954 году известен случай, когда профессор Фихтенгольц выгнал первокурсника со своей лекции за игру в шахматы. Первокурсника звали Боря Спасский. Через год после этого события Борис Спасский выигрывает чемпионат мира по шахматам среди юношей, становится международным гроссмейстером, а в последствии — чемпионом мира.

Теорему о пределе промежуточной функции Григорий Михайлович называл «Теоремой о двух милиционерах» — «Если Вы обнаружили себя между двух милиционеров, направляющихся в отделение, то и сами там неминуемо окажетесь»

http://ib.mazurok.com/fun/

Анекдот от разработчиков Алисы

Dec 13, 2016

Трое математиков и трое физиков собираются ехать на поезде в другой город на конференцию. Они встречаются перед кассой на вокзале. Первой подходит очередь физиков и они, как все нормальные люди покупают по билету на человека. Математики же покупают один билет на всех. «Как же так?» — удивляются физики — «Ведь в поезде контроллер, вас же без билетов оттуда выгонят!». «Не волнуйтесь» — отвечают математики — «У нас есть МЕТОД».

Перед отправкой поезда физики рассаживаются по вагонам, но стараются проследить за применением загадочного «метода». Математики же все набиваются в один туалет. Когда контроллер подходит к туалету и стучит, дверь приотворяется, оттуда высовывается рука с билетом. Контроллер забирает билет и дальше все они без проблем едут в пункт назначения.После конференции те же вновь встречаются на вокзале. Физики, воодушевившись примером математиков, покупают один билет. Математики не берут ни одного. — А что же вы покажете контроллеру? — У нас есть МЕТОД.

В поезде физики набиваются в один туалет, математики — в другой. Незадолго до отправления, один из математиков подходит к туалету, где прячутся физики. Стучит. Высовывается рука с билетом. Математик забирает билет и возвращается к коллегам.

МОРАЛЬ: Нельзя использовать математические методы, не понимая их!

Oct 25, 2016

Compile and run Postgres with debug symbols

cd SOURCE_DIR
mkdir $HOME/root/postgres_git
./configure --enable-cassert --enable-debug CFLAGS="-ggdb -Og -g3 -fno-omit-frame-pointer" --prefix=$HOME/root/postgres_git
make
make install


sudo service postgresql stop
cd /home/seaside/root/postgres_git/bin
mkdir -p ../usr/local/pgsql/data
sudo chown postgres ../usr/local/pgsql/data
sudo su - postgres
./initdb -D ../usr/local/pgsql/data
postgres -D ../usr/local/pgsql/data > ../usr/local/pgsql/data/logfile 2>&1 &
./createdb test
./psql test
test=# SELECT pg_backend_pid();


sudo gdb -p 2466
Developer_FAQ Install

Apr 16, 2016

String translation table

import string
# In [1]: string.punctuation
# Out[1]: '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
# In [2]: string.uppercase
# Out[2]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# In [3]: " " * len(string.punctuation) + string.lowercase
# Out[3]: ' abcdefghijklmnopqrstuvwxyz'
# translation table maps upper case to lower case and punctuation to spaces
translation_table = string.maketrans(string.punctuation+string.uppercase,
" " * len(string.punctuation) + string.lowercase)
line = ""
line = line.translate(translation_table)
# In [4]: line
# Out[4]: 'foo bar bizz'
word_list = line.split()
# In [5]: word_list
# Out[5]: ['foo', 'bar', 'bizz']

Mar 12, 2016

Using RDTSC instruction that returns CPU TSC (Time Stamp Counter)

/*
https://en.wikipedia.org/wiki/Time_Stamp_Counter
https://ru.wikipedia.org/wiki/Rdtsc
*/
#include <stdio.h>
typedef unsigned long long uint64;
int main() {
uint64 val;
unsigned int h, l;
for (int i=0; i<=10; i++) {
__asm__ __volatile__("rdtsc" : "=a" (l), "=d" (h));
val = ((uint64)l) | (((uint64)h) << 32);
printf("%llu \n", val);
}
}
view raw rdtsc.c hosted with ❤ by GitHub
// http://developers.redhat.com/blog/2016/03/11/practical-micro-benchmarking-with-ltrace-and-sched/
/* One drawback of the RDTSC instruction is that the CPU is allowed to reorder
it relative to other instructions, which causes noise in our results. Fortunately,
Intel has provided an RDTSCP instruction that’s more deterministic. We’ll pair
that with a CPUID instruction which acts as a memory barrier, resulting in this: */
static __inline__ int64_t rdtsc_s(void)
{
unsigned a, d;
asm volatile("cpuid" ::: "%rax", "%rbx", "%rcx", "%rdx");
asm volatile("rdtsc" : "=a" (a), "=d" (d));
return ((unsigned long)a) | (((unsigned long)d) << 32);
}
static __inline__ int64_t rdtsc_e(void)
{
unsigned a, d;
asm volatile("rdtscp" : "=a" (a), "=d" (d));
asm volatile("cpuid" ::: "%rax", "%rbx", "%rcx", "%rdx");
return ((unsigned long)a) | (((unsigned long)d) << 32);
}
. . .
clocks_before = rdtsc_s ();
p = malloc (i); /* Test goes here */
clocks_after = rdtsc_e ();
clocks_per_malloc = clocks_after - clocks_before;
// let the OS use CPU #0
// boot options:
// linux . . . isolcpus=1,2,3,4,5,6,7
// check:
// taskset -p $$
// Interrupt affinity:
// cd /proc/irq
// for i in */smp_affinity; do echo 1 > $i; done
view raw rdtscp.c hosted with ❤ by GitHub

Feb 4, 2016

JIT vs AOT

JIT Just-in-time compilation динамическая компиляция. Технология увеличения производительности программ, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы. Так достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. Из-за того что компиляция произходит во время исполнения можно проводить различные оптимизации, например, компиляция может осуществляться непосредственно для целевого CPU и операционной системы (SSE, MMX), profile-guided optimizations - cреда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации; cреда может делать глобальные оптимизации кода (встраивание библиотечных функций в код, pseudo-constant propagation или indirect/virtual function inlining); перестраивание кода для лучшего использования кэша.

Tracing JIT в отличие от классического JIT записывает линейную последовательность наиболее часто используемых операций, компилирует их в нативные машинные инструкции, а затем выполняет. Этим он отличается от классического JIT, который компилирует методы целиком.

AOT Ahead-of-time compilation. Процесс компиляции полностью выполняется перед выполнением программы. АОТ не требует выделения дополнительной памяти. АОТ компиляция проходит с минимальной нагрузкой на систему. Хорошо подходит для встроенных систем или mobile устройств.

Примеры

Python, Ruby - интерпретируемый байт-кодом (минимальные оптимизации)

PyPy (via RPython), HOPE, Dalvik (Android), Java, .Net - JIT

ART (заменит Dalvik), Mono AOT, GNU Compiler for Java - AOT

Lua, Pyston, JavaScript V8 - Tracing JIT

Misc

Just-In-Time Compilation Using GCC: Video, Slides, Wiki

view raw jit_vs_aot.rst hosted with ❤ by GitHub