Ходил как то на митап по языку Go, там говорили, что есть 2 вещи, куда имеет смысл воткнуть проверку для прерывания выполнения процесса: в вызовы функций (это они реализовали в версии 1.2) и в каждую итерацию for / while цикла (ещё не реализовали).
В Erlang оба этих случая сводятся к одному, т.к. реализовать цикл без вызова функции невозможно в принципе (только рекурсия).
Не очень сочетается с duck-typing. Ведь без PyFence достаточно было чтобы у объекта number был метод .as_integer_ratio() чтобы код работал, а с fence придётся обязательно наследоваться от float, иначе ругнётся.
Конечно, на практике этим не часто пользуются, но идея именно в этом.
В оригинальной статье написано, что в нидерландах находился прокси-сервер. Т.е. кейлоггер вытаскивалка паролей собранные данные отправляла на нидерландский сервер, а тот пересылал на основной.
Ну и примечание: Pony это не кейлоггер, а выковыривалка сохранённых паролей из firefox/chrome/TheBat/ftp/ssh клиентов и т.п. (~95 различных программ).
Кстати, занятная штука — почти полностью на ассемблере написана — тут можно утёкшие исходники посмотреть app.box.com/s/9r15nwfqqsd4f8ioceirforum.xakepinter.net/showthread.php?t=4859
Это я вчера информацию нарыл когда на оригинальную новость наткнулся.
Тоже немного приходилось работать с натуральными языками, но более поверхностно.
Например, для разбивки на предложения написал простую стейт-машину
Скрытый текст
SPACE, DOT, DOT_SPACE, OTHER = range(4)
DOT_SYMBOLS = {u".", u"?", u"!", u"\u2026"}
_STRIP_SYMBOLS = "".join(DOT_SYMBOLS) + " "
def split_to_sentences(text, bad_words=set()):
"""Finite-state machine that split text to sentences.
See tests.sentences for tests and examples"""
state = None
sentence = ""
last_word = ""
for char in text:
if state == DOT_SPACE and char.isupper():
# TODO: check that last word is not "г." "ул." etc.
sentence += last_word
# print last_word, "LAST WORD"
if last_word.strip(_STRIP_SYMBOLS) not in bad_words:
yield sentence
sentence = ""
last_word = char
state = OTHER
elif state in (SPACE, DOT_SPACE) and char == " ":
pass # remove duplicate spaces
elif state in (SPACE, DOT_SPACE) and char not in DOT_SYMBOLS:
# any char, except space, after space -> new word
sentence += last_word
last_word = char
state = OTHER
elif state == DOT and char == " ":
last_word += char
state = DOT_SPACE
elif char in DOT_SYMBOLS:
last_word += char
state = DOT
elif char == " ":
last_word += char
state = SPACE
else:
last_word += char
state = OTHER
# print char, state
if last_word:
sentence += last_word
if sentence:
yield sentence
Для морфологии взял pymorphy. Но согласен — тема сложная. А если пытаться учитывать ошибки и опечатки…
А почему решили завязаться на Amazon? Для очереди я, например, успешно использую RabbitMQ, и т.п. Плюс вы говорите у вас админ был выделенный…
Оказалось, что всё намного проще. После экспериментов заметил, что у меня в EHLO подставлялся не реальный домен сервиса а локальный хостнейм из /etc/hostname
После того как это поправил проблема вроде исчезла. Но нужно ещё понаблюдать.
А, в смысле «спамеры не будут делать много попыток отправить письмо, а легальным сервисам хочешь-не-хочешь а нужно». Что то такое читал…
SPF добавил несколько дней назад, DKIM в процессе. DMARC без DKIM не работает, так что тоже в процессе.
PTR я так понимаю не получится настроить, если с одного сервера отсылается почта с нескольких доменов.
Не могу не высказаться в поддержку rabbitmq любят у вас там гвозди закручивать отвёртками...
Настраивать там на самом деле нечего (у меня очереди по 2.7млн сообщений обслуживались установленным из стандартного репозитория Ubuntu стандартным же rabbitmq, в конфиг вообще не заглядывал).
Падающие воркеры прекрасно обрабатываются за счёт отложенного ACK (консьюмер забрал сообщение из очереди а потом закрыл коннект (умер) не прислав ACK — сообщение возвращается обратно в очередь).
Можно для каждого фотосервера создать отдельную очередь и следить по длинне очереди за прогрессом. Можно воркеров подключать к нескольким очередям, можно перекидывать между ними.
Насчёт транзакционности не знаю — в посте об этом не было сказано. На мой взгляд проблема надуманная, но вам виднее наверное.
Спасибо, интересно.
Немного не по теме вопрос, но всё-же: у меня есть проектик мелкий связанный с электронной почтой и там используется свой SMTP релей. Проблема в том, что при попытке отправить почту на yandex ящики постоянно возникает ошибка
retries_exceeded {temporary_failure,"mx.yandex.ru",<<"451 4.7.1
Sorry, the service is currently unavailable. Please come back later. aybVX4avs9-66CaKdFk\r\n">>}
retries_exceeded {temporary_failure,"mx.yandex.ru",<<"451 4.7.1
Sorry, the service is currently unavailable. Please come back later. boXDD0YAFa-6aC0CbEh\r\n">>}
Если повторять попытку отправки много раз, то всё-же письмо проходит. С другими сервисами (mail.ru, gmail) всё проходит с первого раза.
Это нормальное поведение и просто нужно продолжать попытки или всё-же где то закрался баг?
В http1.1 keep-alive устанавливается по умолчанию. WRK не шлёт connection: close если вы присмотритесь повнимательнее. Хотя я добавлял поддержку свитча с опционально отключаемым keep-alive github.com/seriyps/wrk/blob/master/src/wrk.c#L70 но её не приняли.
В Erlang оба этих случая сводятся к одному, т.к. реализовать цикл без вызова функции невозможно в принципе (только рекурсия).
Две трети из этого в contrib/gis почему-то.
Ладно, я всего лишь высказываю своё мнение. То что кто-то с ним не согласен меня устраивает.
docs.python.org/2/glossary.html#term-eafp
В наследовании от
floatпочему-то не вижу ничего плохого :-\numberбыл метод.as_integer_ratio()чтобы код работал, а с fence придётся обязательно наследоваться отfloat, иначе ругнётся.Конечно, на практике этим не часто пользуются, но идея именно в этом.
кейлоггервытаскивалка паролей собранные данные отправляла на нидерландский сервер, а тот пересылал на основной.Ну и примечание: Pony это не кейлоггер, а выковыривалка сохранённых паролей из firefox/chrome/TheBat/ftp/ssh клиентов и т.п. (~95 различных программ).
Кстати, занятная штука — почти полностью на ассемблере написана — тут можно утёкшие исходники посмотреть app.box.com/s/9r15nwfqqsd4f8ioceir forum.xakepinter.net/showthread.php?t=4859
Это я вчера информацию нарыл когда на оригинальную новость наткнулся.
Тоже немного приходилось работать с натуральными языками, но более поверхностно.
Например, для разбивки на предложения написал простую стейт-машину
Для морфологии взял pymorphy. Но согласен — тема сложная. А если пытаться учитывать ошибки и опечатки…
А почему решили завязаться на Amazon? Для очереди я, например, успешно использую RabbitMQ, и т.п. Плюс вы говорите у вас админ был выделенный…
Условно говоря (с синтаксисом не знаком, так что псевдокод):
Такое провернуть не удастся, т.к. каждый запрос может выполняться в совершенно разных соединениях. Правильно понял?
Про исправление ошибок: в своё время реализовал технику из этой статьи habrahabr.ru/company/sphinx/blog/61807/ — на удивление хорошие результаты показало www.1aauto.com/search?words=menyfold (пример работы)
После того как это поправил проблема вроде исчезла. Но нужно ещё понаблюдать.
SPF добавил несколько дней назад, DKIM в процессе. DMARC без DKIM не работает, так что тоже в процессе.
PTR я так понимаю не получится настроить, если с одного сервера отсылается почта с нескольких доменов.
Настраивать там на самом деле нечего (у меня очереди по 2.7млн сообщений обслуживались установленным из стандартного репозитория Ubuntu стандартным же rabbitmq, в конфиг вообще не заглядывал).
Падающие воркеры прекрасно обрабатываются за счёт отложенного ACK (консьюмер забрал сообщение из очереди а потом закрыл коннект (умер) не прислав ACK — сообщение возвращается обратно в очередь).
Можно для каждого фотосервера создать отдельную очередь и следить по длинне очереди за прогрессом. Можно воркеров подключать к нескольким очередям, можно перекидывать между ними.
Насчёт транзакционности не знаю — в посте об этом не было сказано. На мой взгляд проблема надуманная, но вам виднее наверное.
Немного не по теме вопрос, но всё-же: у меня есть проектик мелкий связанный с электронной почтой и там используется свой SMTP релей. Проблема в том, что при попытке отправить почту на yandex ящики постоянно возникает ошибка
retries_exceeded {temporary_failure,"mx.yandex.ru",<<"451 4.7.1 Sorry, the service is currently unavailable. Please come back later. aybVX4avs9-66CaKdFk\r\n">>} retries_exceeded {temporary_failure,"mx.yandex.ru",<<"451 4.7.1 Sorry, the service is currently unavailable. Please come back later. boXDD0YAFa-6aC0CbEh\r\n">>}Если повторять попытку отправки много раз, то всё-же письмо проходит. С другими сервисами (mail.ru, gmail) всё проходит с первого раза.
Это нормальное поведение и просто нужно продолжать попытки или всё-же где то закрался баг?
Как в .NET не знаю, на python делал это с помощью github.com/kmike/pymorphy2