Pull to refresh
100
0
Иван Коробков @drJonnie

User

Send message
А при чем здесь GFS? Это не файловая система в прямом смысле. Это распределенная система по хранению файлов. На жестких дисках все равно ext2 или что-либо подобное.
Кто-нибудь знает, сколько он живет с Core i7 внутри? Часа три-то хоть продержится?
Сами списки так сравнить не получится, только поочередно их элементы. Я бы написал вот так:
  1. # У вас матрица, поэтому берем по каждой строчке
  2. # из обоих обоих списков, после этого сравниваем
  3. # элементы в этих строках попарно.
  4. for x, y in zip(list1, list2):
  5.     map(self.assertAlmostEqual, zip(x, y))

Еще для уменьшения количества используемой памяти (вдруг данные большие будут) можно заменить zip на itertools.izip, который возвращает генератор.
Специально для тестирования чисел с плавающей запятой в unittest.TestCase есть методы assertAlmostEqual и assertNotAlmostEqual. Они вычисляют разницу между двумя числами, после округляют до указанного количества знаков после запятой и сравнивают результат с нулем. Конечно, списки с числами придется сравнивать вручную.
Да, вы правы.
Конечно, это менее магично. Но наследования все равно не получится:
class Artist(MyClass, '/artist/\d+'):
    pass

class RockArtist(Artist):
    pass
Я тоже сначала статью закончил словами, что в реальности это практически нигде не пригодится. Только как-то мрачно получалось, поэтому убрал. Думаю, что стоит расценивать только как демонстрацию гибкости Питона.
А наследование?
Это gEdit, стандартная тема Cobalt, стандартная подстветка для Питона + шрифт Consolas от Микрософта. Дальше просто вырезал нужный фрагмент да сделал тень.
Вот-вот, я про то же.
Мне не совмем понятно, зачем вы сделали Cache синглтоном? Можно же было просто создавать его инстанс и передавать его MemcacheProtocol. В реальности это упрощает связи в программе. Да и потом, представьте, что вам потребуется заменить Cache на обычный dict. Сейчас это очень сложно, а с инстансом можно обойтись сабклассом: class DictCache(dict): ...

Очень режет глаз не указывание четких зависимостей в классах. Сейчас поясню. У вас Cache hard-coded в MemcacheProtocol. А хотелось бы видеть нечто подобное:
class MemcacheProtocol(LineOnlyReceiver):
    cache = Cache

# либо
class MemcacheProtocol(LineOnlyReceiver):
    def __init__(self, cache, ...):
        pass

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

Жизненный пример: в модуле weakref есть WeakKeyDictionary. Когда потребовалось использовать свой конструктор для создания слабых связей, пришлось переписать полностью весь класс. А хотелось бы так:
class MyWeakDict(WeakKeyDictionary):
    weakref_factory = MyWeakref

Чем-то этот принцип напоминает inversion of control, только здесь я делаю упор просто на указание всех явных зависимостей класса, а не на их инициализацию.
Вот только не надо «купит большая корпорация». Citrix уже купила разрабатываемый всем миром Xen, и что в итоге? RedHat да и другие разработчики быстро переключилась на открытую KVM. Открытое, никому не принадлежащее программное обеспечение тем и хорошо, что его могут разрабатывать много различных коммерческих компаний на равных.
Насколько быстро эта оболочка запускается? Не придется ли теперь ждать, пока загрузиться биос?
Точно, зачем нужет самолет, когда есть лопата.
Джейм Эллрой, «Черная орхидея», «Секреты Лос-Анджелеса», «Американский таблоид». А вообще читать надо все книги, начиная с цикла «Лос-Анджелесский квартет».

Пишет умные, захватывающие, жестокие детективы. По моему мнению (да и не только по моему), это лучше детективы в мире. Сам называет себя Толстым в криминальном чтиве. По нескольким книгам сняты фильмы, лучшие: Черная орхидея и Секреты Лос-Анжелеса. Последний получил два оскара (просто остальные забрал Титаник ;-).

Единственное, о чем хотелось бы предупредить: у Эллроя очень сложный язык, поэтому его очень сложно переводить, а плохой перевод легко может убить книгу. Если знаете английский (даже в совершенстве), попробуйте открыть любую книгу в оригинале, и убедиться, что без словаря под рукой (а также мультитрана и urbandict) его читать вообще не возможно.

P.S. Говорят, в этом мире есть два типа людей: те, которые не читали Эллроя, и те, которые читали все его книги ;-)
Учитывая, что Ява — язык корпоративный, понятно, почему в нем так мало ругаются.
Вы знаете, мне достаточно того, что компания существует, получает прибыль и платит зарплату своим сотрудникам. Я всегда считал, что этого достаточно — создавать хорошие рабочие места, это и есть социальная направленность бизнеса. А требовать от него вкладывать деньги в некоммерческие проекты, в благотворительность — это не правильно. Здесь каждый решает сам для себя.

И еще меня возмущает, когда люди пытаются переложить обязаности государства на бизнес. Это государство должно заботиться о бездомных детях, лечить тяжелобольных, помогать старикам, а не бизнес.

В общем, для меня Яндекс — это и есть социальный проект.
А может, очень хорошо, что уже выросло поколение, которое так мыслит?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity