Skip to content

Instantly share code, notes, and snippets.

View shvechikov's full-sized avatar

Leonid Shvechikov shvechikov

View GitHub Profile
@shvechikov
shvechikov / vim_last_position
Created July 6, 2010 15:08
Vim: Return to last edit position
View vim_last_position
" Put to .vimrc
" Return to last edit position (You want this!) *N*
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
@shvechikov
shvechikov / simple-git-branching-model.md
Last active October 23, 2020 06:17
a simple git branching model
View simple-git-branching-model.md

a simple git branching model

This is a very simple git workflow. It (and variants) is in use by many people. I settled on it after using it very effectively at Athena. GitHub does something similar; Zach Holman mentioned it in this talk.

Update: Woah, thanks for all the attention. Didn't expect this simple rant to get popular.

View matrix-rotation-algo-layers.py
def print_matrix(matrix):
for line in matrix:
print(' '.join(map(str, line)))
def empty(n, m):
matrix = []
for i in range(m):
matrix.append(['.'] * n)
return matrix
View matrix-rotation-algo.py
#!/bin/python3
def get_direction(n, m, x, y):
if y == 0 and x != n - 1:
return '>', n-x-1
if y == m - 1 and x != 0:
return '<', x
if x == 0:
return '^', y
if x == n - 1:
@shvechikov
shvechikov / typograph.py
Created February 17, 2014 04:03
Evgeny Muravjev Typograph, http://mdash.ru
View typograph.py
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
###################################################
## Evgeny Muravjev Typograph, http://mdash.ru ##
## Version: 3.2-py (beta) ##
## Release Date: February 6, 2014 ##
## Authors: Evgeny Muravjev & Alexander Drutsa ##
###################################################
@shvechikov
shvechikov / README.md
Last active July 20, 2018 06:01 — forked from snehesht/Concurrent HTTP Requests with Python3 and asyncio
Concurrent HTTP Requests with Python3 and asyncio
View README.md

Concurrent HTTP Requests with Python3 and asyncio

http://geekgirl.io/concurrent-http-requests-with-python3-and-asyncio/

My friend who is a data scientist had wipped up a script that made lots (over 27K) of queries to the Google Places API. The problem was that it was synchronous and thus took over 2.5 hours to complete.

Given that I'm currently attending Hacker School and get to spend all day working on any coding problems that interests me, I decided to go about trying to optimise it.

I'm new to Python so had to do a bit of groundwork first to determine which course of action was best.

@shvechikov
shvechikov / timed_code.py
Created July 9, 2018 05:54 — forked from lericson/timed_code.py
Python Timer Class - Context Manager for Timing Code Blocks
View timed_code.py
import logging
from contextlib import contextmanager
from timeit import default_timer
time_logger = logging.getLogger(__package__ + ".timer")
@contextmanager
def timed_code(name=None):
next_unit = iter(("s", "ms", "ns", "us")).next
msg = "section %s took" % (name,) if name else "section took"
@shvechikov
shvechikov / signed_s3_upload.py
Created April 28, 2016 13:10
Upload files to S3 using generated signed URLs
View signed_s3_upload.py
import requests
from boto.s3.connection import S3Connection
c = S3Connection(AWS_ACCESS_KEY, AWS_SECRET_KET)
data = 'file content'
filename = 'dir/name.txt'
bucket_name = 'your-bucket-name'
headers = {'Content-Type': 'text/plain'}
View mongo_auth_middleware.py
"""
This module is no more needed. It could be useful for implementing Django-level authentication.
Now it works using DRF-level authentication -- dating.apps.mongo_auth.authentication.MongoTokenAuthentication.
So it's here JFYI.
"""
# from django.contrib import auth
from django.utils.functional import SimpleLazyObject
from .models import User, AnonymousUser
@shvechikov
shvechikov / upprint.py
Created February 27, 2012 09:11
UnicodePrettyPrinter
View upprint.py
# -*- coding: utf-8 -*-
import sys
from pprint import PrettyPrinter
class UnicodePrettyPrinter(PrettyPrinter):
"""Unicode-friendly PrettyPrinter
Prints:
- u'привет' instead of u'\u043f\u0440\u0438\u0432\u0435\u0442'