Skip to content

Instantly share code, notes, and snippets.

View akrisanov's full-sized avatar

Andrey Krisanov akrisanov

View GitHub Profile
@akrisanov
akrisanov / sprint3_1.py
Last active April 18, 2023 17:45
Yandex.Praktikum 🍂
import pandas as pd
data = pd.read_csv("/datasets/visits.csv", sep="\t")
data['local_time'] = (
pd.to_datetime(data['date_time'], format='%Y-%m-%dT%H:%M:%S')
+ pd.Timedelta(hours=3)
)
data['date_hour'] = data['local_time'].dt.round('1H')
data['too_fast'] = data['time_spent'] < 60
data['too_slow'] = data['time_spent'] > 1000
@akrisanov
akrisanov / sprint_2_theme_3_task_3.py
Last active November 8, 2022 11:09
Yandex.Praktikum 🍂
import pandas as pd
stock = pd.read_csv('/datasets/stock_upd.csv')
stock['item_lowercase'] = stock['item'].str.lower()
apple = stock[stock['item_lowercase'].str.contains('apple')]['count'].sum()
samsung = stock[stock['item_lowercase'].str.contains('samsung')]['count'].sum()
stock['item_lowercase'] = stock['item_lowercase'].drop_duplicates()
stock = stock.dropna().reset_index(drop=True)
@akrisanov
akrisanov / options-ssl-nginx.conf
Created September 1, 2019 11:05
Let's Encrypt, Ruby on Rails 5.2, Content Security Policy and Nginx – Gist 2
# ...
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload;";
add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";
add_header Referrer-Policy "no-referrer, strict-origin-when-cross-origin";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
@akrisanov
akrisanov / nginx.conf
Created September 1, 2019 11:04
Let's Encrypt, Ruby on Rails 5.2, Content Security Policy and Nginx – Gist 1
# ...
ssl_certificate /etc/letsencrypt/live/mysite-0001/fullchain.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mysite/chain.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite-0001/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# ...
@akrisanov
akrisanov / course1_4.md
Last active August 14, 2019 20:18
Яндекс.Практикум – Data Science

Выводы из данных

  • Оскароносные фильмы становятся короче, дешевле и при этом у них понижается пользовательский рейтинг и сборы. Вкусы киноакадемии всё больше двигаются в сторону искусства и всё дальше уходят от кино как бизнеса.
  • Мелодрама — самый дорогой и прибыльный жанр. Это связано с его популярностью и высокими гонорарами актёров. Также большой вклад внёс фильм «Титаник» с большим бюджетом и сборами.
  • Криминальные фильмы и триллеры самые короткие и приносят кинокомпаниям меньше всего денег. Вероятно, причина этого – высокое напряжение, которое тяжело долго выдерживать и не всем по нраву.
repos:
- repo: https://github.com/ambv/black
rev: stable
hooks:
- id: black
language_version: python3.7
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v1.2.3
hooks:
- id: flake8
[flake8]
ignore = E203, E266, E501, W503, F403, F401
max-line-length = 88
max-complexity = 18
select = B,C,E,F,W,T4,B9
@akrisanov
akrisanov / bcoin_client.py
Last active November 29, 2022 11:27
Trading cryptocurrencies
import logging
from http import HTTPStatus
import requests
from mnemonic import Mnemonic
class BcoinClient:
"""
Simple wrapper around Bcoin REST API.
@akrisanov
akrisanov / lbs.md
Last active April 17, 2019 10:27
The Little Book of Semaphores – Problems

3.3 Rendezvous

Generalize the signal pattern so that it works both ways. Thread A has to wait for Thread B and vice versa. In other words, given this code:

Thread A Thread B
statement a1 statement b1
statement a2 statement b2
@akrisanov
akrisanov / fib.py
Last active March 26, 2019 18:06
Python Concurrency
def fib(n):
if n <= 2:
return 1
else:
return fib(n-1) + fib(n-2)