← All posts tagged DC

OCTAGRAM
Juick IPB микроблоггинг READONLY ADC В связи с нововведениями ухожу к себе на форум. Если вкратце, я тут всё взвесил, и получилось:

XMPP доступ на juick.com: нет
XMPP доступ на форуме: нет
ADC доступ на juick.com: нет
ADC доступ на форуме: нет
MetaWeblog на juick.com: нет
MetaWeblog на форуме: нет
PingBack на juick.com: нет
PingBack на форуме: нет
RSS трансляция на juick.com: нет
RSS трансляция на форуме: да
Разметка на juick.com: ублюдочный markdown
Разметка на форуме: привычный bbCode
Можно ответить незарегистрированному на juick.com: нет
Можно ответить незарегистрированному на форуме: да

И получается, что хотя оба решения не фонтан, но жуик настолько доломан, что IPB начал перевешивать по фичам. Там на меня можно подписаться по почте или RSS. Форуму 15 лет, так что может внезапно оказаться, что там даже и учётка у кого-то уже есть. А всё равно форум чем дальше, тем больше походит на мой блог. Пусть это станет официально.
OCTAGRAM
P2P ttk С одной стороны, хорошо, что ТТК приучает к DC, с другой стороны, делают они это каким-то специфичным образом. Нормальный участник p2p подключен к одной-двум дюжинам хабов по интересам. Если шара интересная, ещё и на закрытые приглашают. Качаешь с закрытых ништяки, раздаёшь на всех, и так течёт информация.

Но Граждане Интернета, которые спаунятся в сети ТТК, не таковы. Сидят, значит, на местном огороженном по IP хабе двое клоунов, один сетует, что 6го сезона Зачарованных нет в p2p, я офигеваю, говорю, да как нету, такая вещь вот уж точно никуда не денется, ищу, нахожу, вот тебе ссылки, тут включается второй, говорит, что по ссылке даже не находится.

И тут я начинаю прозревать. Нашёл первого в списке пользователей. В теге стоит H: 1/0/0. Нашёл второго в списке пользователей. В теге стоит H: 1/0/0. Сами себе злобные буратины
OCTAGRAM
Jabber jabber.ru Не лучшие стороны XMPP по сравнению с NMDC

Соединение с octagram@jabber.ru/tetris разорвано
Потеряно соединение с сервером: Удалённый узел разорвал соединение.
ada-ru@conference.jabber.ru: The account has disconnected and you are no longer in this chat. You will automatically rejoin the chat when the account reconnects.
Ошибка присоединения к чату ada-ru@conference.jabber.ru/OCTAGRAM
401: Не авторизован

Сфигали?!! Ах, да

ada-ru@conference.jabber.ru: Ваши сообщения к ada-ru@conference.jabber.ru блокируются. Для снятия блокировки перейдите по ссылке captcha.jabber.ru
Открывается браузер.

Ждём…

Ждём…

Ждём…

Ждём…

Открылся.

404 Not Found
У! Ё! Ищем в списке собеседников чат ada-ru, дважды кликаем, идём по второму кругу.

ada-ru@conference.jabber.ru: Ваши сообщения к ada-ru@conference.jabber.ru блокируются. Для снятия блокировки перейдите по ссылке captcha.jabber.ru
Проверка капчи прошла успешно.

Я не для того в джаббер захожу, чтоб на скорость открывать браузер. Для сравнения, на NMDC хабе mydc.ru тоже капча есть, но сразу ссылка на картинку, так что можно wget скачать и не открывать браузер.
OCTAGRAM
криптография DC tth Никак не могу воспроизвести TTH на папку. Да, я знаю, это позор, который должен быть спрятан глубоко, и лучше, чтоб про него даже не знали, но вот приспичило. Надо. Есть хеш папки, который посчитал удалённый клиент, есть сохранённый список файлов с него. По идее, это расширение было когда-то здесь, но этот старый сайт давно не пашет, а в Машине Времени не сохранилось. В документацию как официальное расширение не вошло, поэтому следы ведут на мёртвую вики. Сейчас у разработчиков на замену старому сайту есть новый dcbase.org, и там, по идее, текст был скопирован сюда. Из-за того, что вебмастер не мог придумать ничего лучше, чем поставить на сайт принудительный HTTPS, сайт этот сейчас стал недоступен от слова совсем. Ну или я, по крайней мере, не знаю прямого IP. Приходится читать через кеш Гугла. Но у меня такое чувство, что это это не копия вики, а копия форума, на котором когда-то обсудили, потом реализовали, и окончательную версию записали в вики, а вики сдохла. И теперь осталась только реализация в исходниках. Искал-искал, так и не нашёл, где это вычисляется.

Надо с отладочной печатью воспроизвести, как из хешей внутренних файлов получился хеш папки. Уж я и сортировку делал не делал, endianness вертел не вертел, вертел до / после сортировки, хеш вычислял и TTH, и чистый TIGER. Не сходится, и всё тут.

Как была криптография болью, так и остаётся. Ничего не меняется.
OCTAGRAM
работа P2P ADC То чувство, когда общаешься с заказчиком по ГрейЛинку. В частности, чат там явно получше, чем эта навороченная тормозящая штука на ангуляре с вечно отваливающимися и не заваливающимися обратно вебсокетами, из-за которых надо обновлять страницу фриланса, чтоб увидеть, появился ли ответ, в общем, получше по сравнению с тем, что такое обычное в вебе.
OCTAGRAM
web P2P magnet Было некогда желание сделать виджет для магнитных ссылок, чтоб из менюшки можно было сделать поиск по TTH через онлайн-индексаторы, проверку в VirtusTotal, а также варианты поделится в соцсетях. В менюшке можно отображать альтернативные HTTP/HTTPS ссылки, рекомендуемые DC++ хабы и прочее, прочее, что в магнитную ссылку теоретически можно запихнуть, но чем практически сложно воспользоваться из-за слабой поддержки в клиентах.

Но так и не сделал, с нуля наклепать такое не просто. Я на altaimolodoi.ru как-то раз поставил подсветку ключевых слов, по которым пришли из поиска, так оно вешало Хром, а я этого не знал, так как в IceDragon работало. А тут попался похожий сервис виджетов для Скайпа, где, похоже, всё отлажено. Можно переделать код под свои нужды.
OCTAGRAM
C++ рак Можно бросать исключение как только заподозрено неладное и стучать на сервер по делу, а можно позволить ошибке дать метастазы, коллекционировать на сервере дампы, и по метастазам, разползшимся по всему дампу, определять, откуда они пошли.
<pewpew> плесну-ка и я бензинчику в ваш костёрчик: знаете ли вы, что когда флайлинк падает, он отправляет на сервер дамп памяти, в котором есть, в том числе, и ваши пароли?
<Karumo> pewpew, плеснул так плеснул....
<pewpew> то-то же, бережней обращайся с предметом, не роняй почём зря
<Karumo> у меня он пока не падал, да и паролей я там предусмотрительно не держу)
<HackFresse> но там — это ж в оперативке
<FlylinkDC-dev> pewpew полный дамп формируется если юзер соглашается с этим, а также если стек падения ранее не встречался. все последующие дампы такого типа идут в mini формате.
<FlylinkDC-dev> вот пример топового стека — yadi.sk все дампы мини и содержат только стек.
<FlylinkDC-dev> но раз тут такие параноики завелись можно будет приделать затирку пароля после отправки на сервер
<FlylinkDC-dev> pewpew предлагай где хранить пароль. чтобы он не попадал в дамп.
OCTAGRAM
время posix ada GNAT FILETIME Разобрался с конвертацией времени. Как выясняется, в GreyLink DC++ время хранится совсем не в том формате, в котором я подумал, а в FILETIME. Также выяснилось, что и FILETIME в Windows, и time_t в POSIX могут быть как с високосными секундами, так и без. FILETIME, похоже, с високосными секундами не встречается, но тут пишут, что это не исключено. time_t согласно POSIX.1 тоже не должен поддерживать их:
IEEE Std 1003.1-1988 (``POSIX.1'') legislates that a time_t value of 536457599 shall correspond to "Wed Dec 31 23:59:59 GMT 1986." This effectively implies that POSIX time_t's cannot include leap seconds and, therefore, that the system time must be adjusted as each leap occurs.… но я смотрю на маны posix2time и time2posix и вижу, что совместимость с POSIX где-то может быть сломана в угоду монотонности времени. Всегда надо уточнять, с високосными секундами время или нет, иначе будет разъезжаться на 25 секунд, и с каждым годом всё больше. Вот, допустим, MySQL поддерживает високосные секунды в полях TIMESTAMP, если работать с этими значениями через функцию UNIX_TIMESTAMP. Но как мы уже выяснили, подлинный UNIX time_t не содержит високосных секунд, значит, это может быть только модифицированный. И если вы создаёте значение инструментом, который не вставляет эти секунды, у вас время начнёт разъезжаться. Вот в JavaScript по стандарту временная шкала нелинейная, как и в POSIX.1. Но если POSIX.1 где-то нарушается, то, может быть, и EcmaScript тоже? Давайте проверим:
OCTAGRAM
P2P время Выписал реальные значения временных меток в атрибуте Shared (GreyLink DC++) и TS (FlyLink DC++). Для сравнения ещё вычислил Date.now(), он получился по длине между ними. Для наглядности добавил подчёркивание там, где кончаются секунды.
GreyLink DC++: 1307966464_52889830
Date.now(): 1480931727_080
FlyLink DC++: 1295288944
Таким образом, это в общем везде время от начала Эпохи (1970), но во FlyLink DC++ — с точностью до секунды, а в GreyLink DC++ — с точностью до 10 наносекунд. Я опасался, что там время OLE Automation (от 1900) может затесаться.

Правда, тут есть один нюанс. Согласно POSIX, время отсчитывается без учёта високосных секунд, а вот справедливо ли это по отношению к каждой из трёх приведённых дат, не очевидно. Надо полагать, что всё-таки без.
OCTAGRAM
BitTorrent P2P greylink directconnect Расширения тега File во FlyLink DC++
Почитал тут.
HIT — количество скачиванийВ GreyLink DC++ есть в базе, но нет в XML списке файлов.
TS — дата добавленияВ GreyLink DC++ есть аналогичный атрибут Shared, но формат другой. И там, и там числа, но у GreyLink явно подлиннее. И есть подозрение, что этот атрибут есть только в обычном корневом файле шары, а в сгенеренных вручную — нет. Но мой генератор получает на вход именно корневые файлы и имеет возможность пробросить этот атрибут в выходной файл.
BR — Битрейт файла
WH — разрешение картинки
MA — аудио информация (кодек, количество каналов, количество дорожек, язык дорожек)
MV — видеоинформация (кодек, Битрейт видеопотока, соотношение сторон экрана)
В GreyLink DC++ не хранится ни в базе, ни в XML, вместо этого можно делать асинхронные запросы к файлам. Пожалуй, решение FlyLink DC++ лучше. При этом информация в GreyLink DC++ более полна, видно авторa и альбом, как они написаны в ID3 тегах. Самое лучшее решение я видел в Shareaza.
Ещё в GreyLink DC++ есть возможность назначать папкам свои картинки. И опять в dcls фича, скорее всего, обычно не пробрасывается, но мой генератор может научиться это делать. Насчёт поддержки в FlyLink DC++ не знаю.
Ещё Shareaza при хешировании шары проставляет в дополнительные потоки папок UUID, и по ним отслеживает переименования и переносы. Не помешало бы аналогичное для DC++. Вот как раз онлайн-ссылки в новое расположение можно было бы автоматом перенаправлять. Но увы, такого нет. Во всяком случае, в чужих шарах такого ожидать не приходится.

Заодно посмотрел расширения торрента. Даже близко такого нет (кроме даты создания), хотя я мог бы сделать, чтоб мой генератор с барского плеча пожаловал метаинформацию от FlyLink DC++ в info.files.*.
OCTAGRAM
BitTorrent P2P ADC BEP47 Сконвертил свою p2p шару в формат торрента по спецификации BEP 47.

В оригинале (.xml.bz2) 3,1Мб, распакованный XML 12 Мб, а в формате торрента получилось 16 Мб. Он, конечно, двоичный, в отличие от распакованного XML, и каждый TTH там 24мя байтами кодируется, а не 39ю в Base32, но это с лихвой компенсировалось тем, что в описании каждого файла участвует info.files.path, повторяющий названия верхних директорий несколько тысяч раз, в то время как в XML тег Directory указывает имя директории только один раз. Я поискал и сходу не вижу такой BEP, чтобы можно было как-то вложить info в info. Это бы решило проблему, но увы.

Так же, как и для dcls, для торрентов можно генерить один большой файл, а в нём запоминать смещения (в списке info.files), чтобы потом склеивать на лету. Правда, это дурацкое устройство info.files.path и здесь не даёт возможности сделать всё нормально. Название директории, которую описывает торрент, задаётся в info.name. А элементы списка info.files.path идут уже внутри info.name. Так что если нам захотелось в торренте для вложенной папки установить info.name в имя этой папки, у нас получится такая картина, что в нём сначала папка с именем желаемой папки, потом внутри неё несколько взаимовложенных папок с именами папок от корня шары, потом снова эта папка, и там уже собственно файлы. Если генерить отдельные торренты для каждой директории, 16Мб распухнут пусть не в семь (как для dcls), но едва ли меньше, чем в два раза. Общий info.name в каждом торренте в принципе, был бы наиболее логичен, если рассматривать их по отдельности, но если их у одного человека становится несколько и все одинаково названы, тоже как-то не здорово. Решил сделать компромиссный вариант: в info.name не само имя папки, а конкатенация имени папки с именем корня (в качестве которого у меня выступает CID). Всё же хочется иметь возможность забить хостинг как можно большим количеством скачанных шар.

Конечно, не удержался от того, чтобы ковырнуть торрент µTorrent'ом. Пишет «Невозможно загрузить 'root.torrent'. Недостаточно памяти для обработки команды. !». Мда, печально это. p2p-клиенты и не такими объёмами ворочают.
OCTAGRAM
Яндекс кинопоиск Если уж Яндекс не смог понять «на чём стоит» купленный им «Кинопоиск» и решил превратить его в очередной онлайн-кинотеатр…И хоть бы кто–нибудь написал, на чём же он, по их мнению стоит.
Вот по моему мнению, он стоит на плагинах для Magneto и т. п. движков, автоматически импортирующих список актёров, английское название и т. п. информацию, чтобы публикующим магнитные ссылки для DC++ порталов было совсем мало работы. Просто потому что ни в каком другом качестве я им не пользовался и не видел, чтобы пользовались другие. Но я подозреваю, что уже второй автор, который такое пишет, не уточняя, что он имеет в виду, всё же имел в виду что–то другое.
OCTAGRAM
BitTorrent P2P dc++ NMDC Не кормить и пороть! Американский рецепт любви народов
А мне вот пришла в голову аналогия BitTorrent и NMDC. В бытность работы сотрудником техподдержки в провайдере звонили нам по поводу треккера, который был в локалке, но не фирменный. Так и чесался язык ответить: «В нашей сети действует файлообмен по двум основным протоколам. Один из них плохо подходит, чтобы поиметь пользователей, другой — очень хорошо. Вы выбрали тот протокол, который очень хорошо подходит, чтобы вас поиметь. Вас поимели. С чего бы это?» К счастью, в нашем провайдере фирменным был (и сейчас остаётся, после покупки нас ЗС–ТТК) только DC++, и нам полагалось посылать таких звонивших, ну разве что приходилось отказывать себе в удовольствии делать это именно такими фразами. Так и оставались люди в неведении, почему с ними это происходило.
OCTAGRAM
web PHP JavaScript $_SERVER['HTTP_REFERER'] , но document.referrer. Да что с ними не так?
HTTP referer
Любопытно, что написание английского слова referrer как referer — популярная ошибка. Настолько популярная, что вошла в официальные спецификации протокола HTTP.Ах, вот оно как. Я–то думал, это только в NMDC такие ляпы. Ну теперь я спокоен.
OCTAGRAM
Apple cocoa llvm objectiveC Я как–то проводил инвентаризацию, как бы теоретически можно было писать под Cocoa для Windows:
1. Реализация Cocoa берётся из iTunesInstaller.exe
2. Компилятор либо LLVM, либо LLVM в роли ObjC => C транслятора, затем другим транслятором
3. Оставались только заголовочные файлы, которые, наверное, надо брать из XCode, вот только какой версии, не очень было понятно. Учитывая, как реализована совместимость на уровне машинных кодов в Objective-C, в принципе, можно брать самую новую и просто не использовать слишком новые методы.
Нашёл время провести более детальный анализ того, что же именно содержит Apple Application Support. Во–первых, собственно Objective-C портированных библиотеки там 2: Foundation.dll и CoreFoundation.dll. В закрытых версиях Apple есть несколько типов CoreFoundation, которые без конвертации можно привести к указателю на Objective-C (toll-free bridging). Похоже, что это оно. Если поставить iCloud, там ещё можно отрыть AOSKit.dll, экспортирующий какие–то Objective-C классы. Никаких AppKit нет.
Что касается версии, я немного позанимался дихотомией и пришёл к выводу, что Apple Application Support из iTunes примерно соответствует версиям Lion/Mountain Leopard. Если скачать с сайта ADC xcode462_cltools_10_76938260a.dmg, он же Command Line Tools (OS X Lion) for Xcode — April 2013.dmg, достать оттуда 7-zip'ом Foundation.h и взять этот же файл из command_line_tools_for_osx_mountain_lion_april_2014.dmg, то видно, что, например, добавился #import <Foundation/NSHashTable.h>, и я вижу OBJC_CLASS_$_NSHashTable в Foundation.dll, и для некоторых других новых классов тоже, но не всех. А из Maverick (commandlinetoolsosx10.9forxcode6.2.dmg) я ничего добавленного уже не вижу.
Все остальные библиотеки реализованы более менее без Objective-C. Несколько библиотек, вижу, импортируют несколько вызовов objc.dll, но, похоже, только лишь для того, чтобы поработать с blocks и libdispatch.dll.
Таким образом, реально из iTunes можно взять:
1. Коллекции и связанные с ними Property List сериализаторы
2. Quartz (CoreGraphics), которым, в частности, можно рисовать текст нормально, как на Mac OS X, без радужного замыливания
3. «Официальный» порт libdispatch
Может, ещё какие не–Objective-C библиотеки, коих там куча.
AppKit, видимо, только через GNUStep, Cocotron или YellowBox. Свои интерфейсы Safari и iTunes, видимо, как–то через C'шные библиотеки отрисовывают поверх C'шного Quartz.

В отсутствие AppKit самое интересное (для меня) остаётся в libdispatch. И libdispatch, и libuv решают похожие задачи, но кто из них лучше? У libdispatch на Windows, кроме «официального» порта есть два неофициальных, и неплохо бы было, чтобы кто–нибудь посравнивал их между собой на предмет проблемы C10k.
OCTAGRAM
Apple Mac Обзор OS X
Джон Сиракуза:
Около 15 лет назад я написал первый обзор для сайта «энтузиастов PC» Ars Technica. Около 15 лет спустя я написал последний. При том, что Apple несомненно выпустит очередную версию OS X на WWDC в этом июне, я не собираюсь делать обзор ни для Ars Technica, ни для любого другого журнала, включая вебсайт, который вы сейчас читаете.Том Хольверда:
Лучший обозреватель в своём деле уходит.
OCTAGRAM
P2P icon greylink bitbucket.org
И ещё кое–что сегодня перестаёт быть моим ноу–хау.
Парсит журналы GreyLink, разбивает примерно по дням (на самом деле, с нахлёстом) и выводит их в виде HTML файлов в формате, похожем на журналы Jabber конференций на jabber.ru. Поддерживаются смайлы, магнитные ссылки для DC++, ники делаются ссылками в таком формате, в котором поддерживает GreyLink DC++. Некоторые слова можно в целях SEO или каких–то других делать ссылками куда надо. Все реплики имеют якорь. Если выбрать конкретную реплику и скопировать ссылку на таймкод перед этой репликой, это и будет ссылка на реплику. Так как в журналах GreyLink нет секунд, реплики внутри минуты нумеруются по порядку. Реализовано на языке Icon.
В штатном режиме обновляет только последний/предпоследний день, но может и обновить, начиная с произвольной даты. Когда это у меня последний раз работало, я запускал по часам каждые 5 минут.

Вот так выглядит результат: p2p.toom.su
А так выглядит оригинал, под который я косил: chatlogs.jabber.ru

Чего так и не сделал: не исправил косяк с определением дня недели, не сделал вывод логотипов провайдера и города, как в самом GreyLink ( assembla.com ), не сделал скрипт для GreyLink, чтоб когда картинку постят в чате, она выкачивалась автоматом без клика по ней, и чтоб потом вставленные таким образом в чат картинки попадали в HTML в конечном итоге.

Ну и в режиме реального времени чат работать не будет, конечно, на таких технологиях, это многое надо бы было переделать, а мне незачем. Стопятьсот юзеров ежедневно генерили уникальный контент. Вот что бы ни случилось, это обсуждают, а потом в поисковиках другие люди то же самое ищут и приходят, и оно само по себе работает и работает. Для этого и делал.
OCTAGRAM
P2P dc++ icon flylink innosetup bitbucket.org
Продолжаем выкладывать некоторые разработки, которые могут пригодиться. Собственно, есть такой проект, как FlyLink DC++ с установщиком, поддерживающим кучу провайдеров, и каждый уважающий себя провайдер стремится попасть в список поддерживаемых провайдеров, заказывает VIP или Mini-VIP установщики. При всём при этом FlyLink DC++ открытый, в том числе установщик, то есть, вместе с информацией обо всех провайдерах. Всё это замечательно, вот только информация о том, какие есть провайдеры и какие у них есть хабы, оказывается разбросанной по куче файлов (.iss Inno Setup Source, Favorites.xml, ...), да ещё по–разному для VIP и Mini-VIP. Мой конвертер, написанный на Icon, парсит всю эту разнородную информацию и выводит её в формате YAML, где её можно использовать самым разным образом. Версия примерно от 2011-10-06.
Предполагалось, что в моём установщике GreyLink DC++ OpenMod будет парсер YAML и возможность выбирать всех тех же провайдеров, что и в установщике FlyLink DC++. Собственно, парсер–то есть и он работает, но в нескольких местах получалась каша, которую надо было переделать. Так и не переделал.