среда, 13 ноября 2013 г.

5. Поделка для сына. Дни 8-12.

На 8 день начал строительство крыши. Замерил и отпилил бревна под стропилы. Установил стойки и коньковый прогон, на котором сделал соединение стропил. После того как застыл клей соединяющий стропила, я убрал переднюю стойку, чтоб не мешала потом делать фронтон.

вторник, 12 ноября 2013 г.

4. Поделка для сына. Дни 2-7.

Подготовка большого количества бревен в первый день несколько утомила, поэтому на второй решил внести небольшое разнообразие и занялся подготовкой фундамента.

понедельник, 11 ноября 2013 г.

3. Поделка для сына. День 1.

Работа началась!

Для начала я подготовил рабочее место, накрыл журнальный столик куском пластика и прикрутил к нему тиски.

Посчитал масштаб своей будущей постройки, вычислил необходимую длинну бревен и приступил к их изготовлению.

Бревна для модели сруба.

2. Поделка для сына. Шоппинг.

Сруб я собирался делать с рубкой углов "в чашу". Поэтому обдумывал, каким инструментом это можно сделать.
Рубка стен "в чашу".
Первое, что пришло в голову, это использовать напильник круглого сечения со средней насечкой, с диаметром, примерно равным диаметру бревна. Но в строительном магазине я нашел более интересное решение, это дремель с подходящими насадками.

четверг, 7 ноября 2013 г.

1. Поделка для сына. Начало.



Как-то раз обрадовали нас с сыном в детском саду тем, что нужно сделать поделку к празднику осени. Пока шли домой я все думал чего же интересного сделать. Картинки из листочков склеить? Пластелиновых зверюшек с теми же листочками, веточками и орешками? Большинство родителей со своими детьми примерно такие поделки и делают. Видимо потому что, как правило, в поделках участвуют мамы. :) В общем, решил я делать что-то немного серьезнее, а именно, домик с небольшим участком, построенный почти по правилам большой стройки. Ну почти... :) Посоветовался с сыном, он одобрил и пошел его рисовать.

Дружно мы взялись за дело и работа закипела!

воскресенье, 18 августа 2013 г.

Проверка существования ключа в словаре.

Обработка исключений

try:
 d[key] = d[key] + 1
except KeyError:
 d[key] = 1

Метод has_key

if d.has_key(key):
 d[key] = d[key] + 1
else:
 d[key] = 1

Метод setdefault

d[key] = d.setdefault(key, 0) + 1

Метод get

d[key] = d.get(key, 0) + 1

Оператор in

if key in d:
 d[key] = d[key] + 1
else:
 d[key] = 1
  1. Если предполагается почти 100% существование ключей в словаре, то инструкция try except будет самой эффективной на любом наборе данных.
  2. Если искомый ключ часто не существует, то инструкция try except окажется самой медленной из возможных решений.
  3. Метод has_key эффективно работает с небольшими наборами данных, на больших ведет себя хуже.
  4. Методы setdefault и get почти одинаковы по скорости, setdefault незначительно выигрывает.
  5. Хорошие показатели достигаются с оператором in и на маленьких и на больших наборах данных.


Если есть сомнения что лучше выбрать в конкретной ситуации, лучше использовать оператор in.
А еще лучше - тестировать.

Информацию нашел здесь http://wiki.gungfu.de/Main/PythonIdioms
По этой ссылке полное описание тестов с результатами.

понедельник, 24 июня 2013 г.

Pattern. Singleton (Одиночка).

Одиночка (англ. Singleton) в программировании — порождающий шаблон проектирования.
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

class Singleton(object): 
    __instance = None 
    def __new__(cls): 
        if cls.__instance is None: 
            cls.__instance = super(C, cls).__new__(cls) 
        else: 
            cls.__init__ = lambda x: None 
        return cls.__instance

Просмотрел массу решений, в том числе отсуда. В итоге больше понравилось одно из этих, его и опубликовал с небольшими изменениями.

UPD: А вот так еще краше получилось

class Singleton(object):
    def __new__(cls):
        if not hasattr(cls, 'instance'):
            cls.instance = super(Singleton, cls).__new__(cls)
        else:
            cls.__init__ = lambda x: None
        return cls.instance