Pull to refresh
11
0
Кирилл Костюхин @Skycker

Python/Django разработчик

Send message

Go в санях, Python рядом с киоском с надписью Sphinx, лого Sentry на белом грузовике

Для многопоточного парсинга я бы рекомендовал Scrapy. У нее внутри twisted, код будет менее многословным, чем кастомное решение на bs4 и шататных питоновских возможностях работы с потоками/процессами. К тому же работа с разметкой там гораздо лаконичнее. Как-то на работе появилась задача напистать скрипт для периодического парсинга примерно 20 ресурсов на предмет упоминаний о компании клиента. Со scrapy получилось уложиться в несколько часов.


И позвольте на минуту включить зануду и немного покритиковать оформление кода. У вас импорты не по PEP8 оформлены. В кучу смешаны вендорные пакеты и встроеные. В функции get_all_links зачем-то идут строки очистки файла, но, судя по названию, её задача — вытащить ссылки с главной страницы. Принцип одной отвественности говорит, что котлеты с рыбой смешивать не нужно. Да и все ссылки на сайты, имена файлов и подобное хорошо бы вынести вверх скрипта в константы. Если захотите сохранять результаты не в coin.csv, а в foobar.csv, то придется править код в двух местах. В небольшом скрипте такое, конечно, не критично, но в реальных прикладных проектах может сэкономить время и нервы коллег, поддерживающих ваш код

Возможно Ember не идеален, но он следует методологии "соглашения превыше конфигураций", за это имхо можно многое простить. Он навязывает структуру прокта и другие принятые в комьюнити конвенции. В случае больших проектов это дает бонус при поддержке и расширении, особенно ценно для пришедших в уже функционирующий проект разработчиков. Наверное, никто не любит поддерживать код, в котором предыдущие программисты пускались в творчество, полузуясь кучей слабосвязанных библиотек. Да и переживать за архитектуру почти не приходится.


До версии 2.0 документация была скудновата, очень многие моменты приходилось собирать по сторонним блогам. Из-за этого и порог вхождения повышался. Сейчас они вроде как исправились, больше деталей описывают в туториале, больше примеров дают, конференции организовывают, митапы

У Django отменная документация, большая часть которой переведена на русский язык. В книгах по этому фреймворку нет особой необходимости
Опровергать вашу теорию не буду, может я и допустил где-то ошибки. Дело было давно, но точно помню, что критерием правильности функций умножения для меня было совпадение их результатов с таблицами в конце этой статьи. В качестве исходных данных брался массив чисел [0..255]. Точно помню, что этот тест мои функции прошли, иначе бы статью здесь я не опубликовал
Пожалуй, это действительно нужно приложить к статье. Универсального умножения я не писал, только на константы из алгоритма. Специально оставил закомменченные варианты вычислений, ибо они понятнее, изящнее, но почему-то работают неправильно. Может кто подскажет почему?

Умножение в поле Галуа
def mul_by_02(num):
   
    if num < 0x80:
        res =  (num << 1)
    else:
        res =  (num << 1)^0x1b

    return res % 0x100

def mul_by_03(num):
    return mul_by_02(num)^num

def mul_by_09(num):
    #return mul_by_03(num)^mul_by_03(num)^mul_by_03(num) - works wrong, I don't know why
    return mul_by_02(mul_by_02(mul_by_02(num)))^num
 
def mul_by_0b(num):
    #return mul_by_09(num)^mul_by_02(num)
    return mul_by_02(mul_by_02(mul_by_02(num)))^mul_by_02(num)^num

def mul_by_0d(num):
    #return mul_by_0b(num)^mul_by_02(num)
    return mul_by_02(mul_by_02(mul_by_02(num)))^mul_by_02(mul_by_02(num))^num

def mul_by_0e(num):
    #return mul_by_0d(num)^num
    return mul_by_02(mul_by_02(mul_by_02(num)))^mul_by_02(mul_by_02(num))^mul_by_02(num)
Спасибо, интересный проект) Очень порадовала фраза
We probably won't run your code (we'll definitely read it though). You can ask us for help; we'll try our best.

Ну, внедрять это куда-то я и не планировал. Зато радость, когда все корректно заработало, была себе доставлена) ибо мат часть заработала не сразу. И конечно же самообразование, без него никуда)

Information

Rating
Does not participate
Location
Смоленск, Смоленская обл., Россия
Date of birth
Registered
Activity