Pull to refresh
247
-7
Send message

Torrent-файл. Что же у него внутри?

Reading time 7 min
Views 53K

Введение


image
Добрый день.
Использую, как и многие, крупный торрент-трекер — rutracker.org, однако есть одна особенность которая меня раздражает.
Это добавление в список трекеров адреса ix*.rutracker.net, который служит для непонятных мне целей. Однако который часто (у меня — практически всегда) выдаёт ошибки (502 Bad Gateway и 0 No Response). Торрент-клиент (у меня Transmission) помечает торрент сломанным. Что само собой довольно сильно мне мешает. Особенно если учесть особенность Transmission — она задаёт статус торрента по последнему ответу трекера. То есть опрашиваем ix*, он возвращает ошибку, торрент помечается как Broken, через n минут/секунд опрашивается следующий трекер из списка — bt*.rutracker.org или retracker.local, которые возвращают успешный код и торрент снова становится нормальным. Такая чехарда не особо меня радует.

Решение банально — убрать этот нехороший адрес из списка. Однако файлов у меня много, из каждого вручную вырезать совсем не хочется, да и дополнительное действие при добавлении нового торрента выполнять тоже не было никакого желания. Поэтому принял решение разобраться в формате и автоматизировать удаление трекера из списка.
Читать дальше →
Total votes 146: ↑131 and ↓15 +116
Comments 56

Transmission — внедряем в него плюшки

Reading time 8 min
Views 22K
Добрый день.
На своём домашнем серваке сменил систему, и собственно софт тоже нужно было переставлять.
Поэтому ради теста просмотрел несколько самых популярных торрент-клиентов, работающих на *nix (rTorrent, Deluge, MLDonkey, Transmission).
Последний понравился мне больше всего, однако для меня нашёлся существенный минус — невозможно переименовывать зашитые в .torrent-файл имена торрентов.
То есть у нас на диске будут всякие разные папки, например — «Krovavaja gora», «Место Преступления Нью-Йорк», а то и просто «7 Сезон».
Мне это не по нраву, я люблю порядок, соотвестсвенно свою фильмотеку (точнее её сериальную часть) организую в виде "%SERIAL_NAME%/Season N".
Transmission увы не позволяет такого. Но так как в основном всё было хорошо, я взялся подгонять клиент под себя.
Читать дальше →
Total votes 60: ↑57 and ↓3 +54
Comments 43

FreeBSD versus GRUB

Reading time 6 min
Views 4.7K
Добрый день. Эта заметка посвящена моей частной борьбе против GRUB'a, ну или за него, это как посмотреть.
Понадобилось поставить grub-загрузчик на freebsd, конечно многие знают про chainloader+1, но этот способ не годился для меня.
Читать дальше →
Total votes 68: ↑63 and ↓5 +58
Comments 8

Пишем интерпретатор трехадресного кода

Reading time 6 min
Views 7.6K

Введение



Добрый день.
Продолжаю писать о около-компиляторных темах. В этот раз затрону вопрос о проектировании и создании интерпретатора, который работает с синтаксическими деревьями.
Рекомендую ознакомиться с предыдущей статьёй — «Пишем LR(0)-анализатор. Простыми словами о сложном», потому что в интерпретаторе я не строю синтаксический анализатор с нуля, а использую наработки, описанные в той статье. Ах да, еще один немаловажный момент — писать будем на JavaScript. Я не поклонник этого языка, но считаю что это наиболее удобный для общественности способ посмотреть результат. Не каждый рискнёт качать неизвестно что, да и это всё же сложнее чем просто открыть страничку. Нетипичность инструмента компенсируется «учебностью» примера. Скорость работы не важна (100-150 строк лимит, мне кажется больше никто не захочет набирать того чтобы поиграться с интерпретатором), а понятность кода у JS достаточно велика.

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Comments 8

Пишем LR(0)-анализатор. Простыми словами о сложном

Reading time 10 min
Views 27K

Введение



Добрый день.
Не нашел простого и внятного описания данного алгоритма на русском языке. Решил восполнить сей пробел. Прежде всего что это такое? LR(0)-анализатор в первую очередь это синтаксический анализатор. Цель синтаксического анализатора обработать входной поток лексем(базовые элементы языка, которые производит лексический анализатор на основе входного потока символов, примеры лексем — число, запятая, символ) и сопоставить его с описанием языка заданного в определенном формате. Сопоставление заключается в построении определенной структуры данных, чаще всего — дерева. Дальше эта структура пойдет на следующий этап — семантический анализ, где уже компилятор пытается понять смысл, заключенный в дереве.

Существует 2 класса синтаксических анализаторов — восходящие анализаторы и нисходящие. Первые строят дерево начиная с листьев, которые являются входными лексемами, вторые соответственно наоборот начинают с корня дерева. Собственно LR и значит то, что анализатор будет читать поток слева направо (L — 'Left') и строить дерево снизу вверх (пусть не смущает буква R, которая значит Right, объяснения даны чуть ниже). Индекс 0 обозначает то что мы не предпросматриваем следующие лексемы, а работаем только с текущей. Какие же плюсы даёт нам выбор этого типа анализаторов?
  • Он быстр.
  • Покрывает множество языков. То есть если вы придумали язык и описали его, то с большой долей вероятности LR-анализатор его сможет обработать.
  • Синтаксические ошибки обнаруживаются так быстро как это возможно. Сразу же как встречается символ, который не соответствует предыдущему входному потоку, мы можем вывести ошибку об этом.

Есть и недостатки:
  • Относительная сложность построения.
  • Можно вогнать анализатор в ступор неоднозначностью описания языка.


Читать дальше →
Total votes 75: ↑71 and ↓4 +67
Comments 17
2

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Registered
Activity