Блог о програмировании и программистах

Чем больше всматривашься в код, тем больше код всматривается в тебя

Шпаргалка по командам в терминале мака

SHORTCUTS

Key/Command Description
Ctrl + A Go to the beginning of the line you are currently typing on
Ctrl + E Go to the end of the line you are currently typing on
Ctrl + L Clears the Screen
Command + K Clears the Screen
Ctrl + U Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H Same as backspace
Ctrl + R Lets you search through previously used commands
Ctrl + C Kill whatever you are running
Ctrl + D Exit the current shell
Ctrl + Z Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W Delete the word before the cursor
Ctrl + K Clear the line after the cursor
Ctrl + T Swap the last two characters before the cursor
Ctrl + F Move cursor one character forward
Ctrl + B Move cursor one character backward
Esc + F Move cursor one word forward
Esc + B Move cursor one word backward
Esc + T Swap the last two words before the cursor
Tab Auto-complete files and folder names

15 полезных сервисов для дизайнеров и веб-разработчиков

Сервисы для дизайнеров и веб разработчиков.

Ресурсы для бесплатного образования

Сейчас даже образование можно получить совершенно бесплатно даже не выходя из дома. Все знают про курсы MIT, Stanford University, но мало кто знает про эти замечательные ресурсы:

1. www.intuit.ru - самый крупный российский интернет университет с кучей интересностей.

2. shad.yandex.ru/lectures/ - школа анализа данных Яндекса

3. www.academicearth.org - сайт со всеми лекциями лучших университетов мира. Чтобы не лазить и не собирать по крупицам лучшее.

1 - Работа с переменными

Variable Bindings(работа с переменными)

        
            //0 - простое присваивание
                let x = 5;

            //1 - распаковка значений

                let (x, y) = (1, 2);

            //2 - обозначение типа переменной

                let x: i32 = 5;

            //3 - неизменяемость

                //выдаст ошибку
                let x = 5;
                x = 10; 

            //4 - область видимости и замена переменных

                //пример ошибочного кода, переменная на доступна вне блока
                let x: i32 = 17;
                {
                    let y: i32 = 3;
                    println!("The value of x is {} and value of y is {}", x, y);
                }
                println!("The value of x is {} and value of y is {}", x, y); // This won't work

                //пример замены переменных
                let x: i32 = 8;
                {
                    println!("{}", x); // Prints "8"
                    let x = 12;
                    println!("{}", x); // Prints "12"
                }
                println!("{}", x); // Prints "8"
                let x =  42;
                println!("{}", x); // Prints "42"

                //пример смены типа и изменяемости переменной
                let mut x: i32 = 1;
                x = 7;
                let x = x; // x is now immutable and is bound to 7

                let y = 4;
                let y = "I can also be bound to text!"; // y is now of a different type
        
    

Кратко о библиотеке numpy

1)Методы класса ndarray

  • ndarray.ndim - количество измерений ил ранк матрицы
  • ndarray.shape - возвращает количество измерений по каждой из осей (n,m), где n - количество строк, m - количество столбцов
  • ndarray.size - количество элементов в массиве
  • ndarray.dtype - тип элементов массива
  • ndarray.itemsize - размер в байтах каждого элемента в массиве
  • ndarray.data - буфер, содержащий элементы массива

2)Создание массива

        
              import numpy as np
            a = np.array([2,3,4])
            a.dtype #dtype('int64')
            b = np.array([1.2, 3.5, 5.1])
            b.dtype #dtype('float64')

            #создание двухмерного массива
            b = np.array([(1.5,2,3), (4,5,6)])
            #создание трехмерного массива
            b = np.array([((1.5,0.1,2.0),(1.5,0.1,2.0)), ((1.5,0.1,2.0),(1.5,0.1,2.0))])
            #тип элементов может задан в момент создания
            c = np.array( [ [1,2], [3,4] ], dtype=complex )
        
    

Ссылки на обучающие сервисы

Список ссылок:

Подробно о классах в Python

1)Области видимости

Пример области видимости функций и переменных:
        
        def scope_test():
            def do_local():
                spam = "local spam"
            def do_nonlocal():
                nonlocal spam
                spam = "nonlocal spam"
            def do_global():
                global spam
                spam = "global spam"
            spam = "test spam"
            do_local()
            print("After local assignment:", spam)
            do_nonlocal()
            print("After nonlocal assignment:", spam)
            do_global()
            print("After global assignment:", spam)

        scope_test()
        print("In global scope:", spam)
        #The output of the example code is:
        """
        After local assignment: test spam
        After nonlocal assignment: nonlocal spam
        After global assignment: nonlocal spam
        In global scope: global spam
        """
        
    
....

Установка прав доступа для контролера

Определение, является ли пользователь админом:



from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from django.contrib import messages
from django.utils.decorators import available_attrs
from functools import wraps
#Пишем декоратор, для контролера
def is_user_admin(view_func):
    @wraps(view_func, assigned=available_attrs(view_func))
    def wrap(request, *args, **kwargs):
        if request.user.is_superuser:
            #исполняем переданный нам контролер
            res = view_func(request, *args, **kwargs)
        else:
            #редиректим на начальную страницу с ошибкой
            messages.error(request, u'У Вас недостаточно прав для доступа')
            return HttpResponseRedirect('/')
        return res
    return wrap   

#Пример применения на контролере
@is_user_admin
def index_controler(request):
    context={}
    return render_to_response('index.html', context, context_instance=RequestContext(request)) 


Бинарный поиск

Бинарный поиск:



# -*- coding: UTF-8 -*-
import profile
import random

#простая версия бинарного поиска
def binarySearch1(alist, item):
    first = 0
    last = len(alist)-1
    found = False

    while first <= last and not found:
        midpoint = (first + last)//2
        if alist[midpoint] == item:
            found = True
        else:
            if item < alist[midpoint]:
                last = midpoint-1
            else:
                first = midpoint+1
    return found

....

Сортировка пузырьком

Оценка работы алгоритма сортировки пузырьком:


# -*- coding: UTF-8 -*-

#----------------------------------------
#сортировка пузырьком
#----------------------------------------

#инициализация
#----------------------------------------
import profile
import random
 
array = [x for x in xrange(1000)]
random.shuffle(array)
arr=[]

#----------------------------------------
#python эталон(встроенная функция[1000 - 0.001c])
profile.run('array.sort()')
#----------------------------------------

#1 вариант(неоптимизированный[1000 - 0.103c])
#----------------------------------------
# Реализация в виде функции
def bubble_sort(lst):
    for i in xrange(len(lst)-2):
        for j in xrange(len(lst) - i - 1):
            if lst[j] > lst[j+1]:
                lst[j], lst[j+1] = lst[j+1], lst[j]
    return lst

#запускаем скрипт сортировки
#----------------------------------------
profile.run('arr=bubble_sort(array)')
#----------------------------------------