12/10/2011 3:55:53 PM

Прибрался на рабочем слоле. Стало красивее.

desktop

Tags:

Live | Other

12/10/2011 10:46:28 AM

У меня нет LiveJournal и он мне не нравится. Но вот Лена отчего-то странного к нему прикипела и пользуется.
А зато мне нравится Windows Live Writer для написания блог-постов. Удобненько всё, визуально. Я и сейчас в нём пишу. 
В отличие от того же LiveJournal, в котором Лена периодически руками вставляет какие-то теги, отдельно заливает фотографии и потом вставляет адреса, опять же руками… Она, мне кажется, больше с HTML работает, чем я и скоро знать его будет лучше…

LiveJournal имеет “стандартный” интерфейс, который имеют большинство блог-платформ и который поддерживается Live Writer’ом, но, к сожалению, феномен “was not invented here” добрался и до LJ и развитие поддержки стардартных протоколов они остановили, а вместо этого придумали свой собственный интерфейс, которого не понимает никто.
Таким образом Live Writer хоть и может работать с LJ, но на очень базовом уровне (сколько ребята осилили от общепринятого протокола): нет возможности управлять видимостью постингов, нет возможности добавить теги и т.д.

Поэтому мне пришла идея попробовать написать расширение для Live Writer, которое бы позволило работать с этой платформой более полно. Ниже я напишу что получилось, а ещё ниже – как это получилось.

Что.

Итак, после установки расширения в списке расширений появляется следующий пункт:

При нажатии на него пользователь увидит вот такое вот окошечко, во время показа которого система подключится к LJ и получит сведенния об имеющихся тегах и пользовательских группах:

Естественно, ничего подобного не произойдёт в том случае, если текущий выбраный блог в Live Writer не LJ. В этом случае вообще ничего не произойдёт :)

После этого в текущий пост будет вставлен невзрачного вида блок со специфичными для LJ параметрами:

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

При клике на этот информационный блок Live Writer (как и в случае других плагинов) сбоку покажет сайдбар, где эти самые специфичные для LJ параметры и редактируются.

В текущей бета-версии можно задавать теги для постинга а так же ограничивать видимость для определённых пользовательских групп. Ещё там можно задать текст для “ката” (тег <lj cut>).

Больше, в общем-то, пока в плагине ничего нет. А, нет, если посмотреть на первую картинку, то там ещё один пунктик есть: Add LJ User (добавить LJ-пользователя), но это мелочи.

Скачать версию плагина (beta1) можно здесь: http://storage.raga.name/Wlw4LJ-beta1.zip
Установить тоже просто: разархивировать и скопировать те два файла, что там есть, в каталог
"c:\Program Files (x86)\Windows Live\Writer\Plugins"
Если такого каталога с “x86” нет, то используется каталог без оного, то есть "c:\Program Files\Windows Live\Writer\Plugins".

Вроде работает, посты-картинки постит, драфты даже уважает…

Как.

Теперь самое весёлое, “для тех кто понимает” ;)
Так как у LJ свой API, то, очевидно, необходимо написать свой провайдер, умеющий работать с этим API. Провайдеры в WLW есть, наследуйся да пиши, а вот возможность подключить собственный провайдер туда добавить отчего-то забыли. Поэтому механизм добавления нового провайдера называется DirtyHack и выглядит (в коде) соотвествующе.

Аналогично в WLW отсутствует возможность (либо я таковой не нашёл) хоть какого-то хука на запуск приложения или на его инициализацию. И никакие хаки тут не помогут. Любой плагин получает управление только в момент его вызова.
Поэтому функциональность добавления LJ-специфичного провайдера (тот самый DirtyHack) срабатывает в момент первого вызова плагина (нажатия на Add LJ Attributes). Это в чём-то лимитирует, так как при наличии хука на стар приложения можно было бы использовать некие имеющиеся, но скрытые для “оригинального” LJ-провайдера элементы управления. А когда пользователь уже нажал – ну, тут уже поздно.
Кроме того в WLW отчего-то невозможно добавить кнопки управления на Ribbon. Этому я не поверил и проверил, потом не поверил снова и проверил опять, но со словами “ну как так можно-то!” отстал. Ну, либо, опять же, не нашёл. Поэтому – только меню Add LJ Attributes. А так бы, конечно, хотелос�� бы Ribbon-панельку добавить.

Про протокол, опять же.
Я поскольку ленив, то писать имплементацию XmlRpc-протокола для общения с LJ мне не хотелось. Я поискал в интернете и обнаружил некую библиотечку с названием lj_net, которая, вроде как, общается с LJ и имеет все нужные мне функции и которую люди в разных поделках типа моей и используют.
Но, видит небо, более ужасного кода я не встречал уже давно. Иногда это смешно, иногда – страшно. Ответа на вопрос почему ЭТО сделано ТАК не существует.
Пришлось рефакторить, конечно, стало куда лучше, хотя и не идеально.

Идеально было бы таки написать уже свой XmlRpc провайдер (благо WLW содержит низкоуровневый набор для работы с XmlRpc), надо только его использовать. Для пользователя, конечно, разницы никакой практически, но тем не менее…

Плюс ещё есть набор фич, которые можно реализовать, от moods и до странной и повергающей меня в ступор функциональности “этот пост могу видеть только я!”. Ведь, если его можешь видеть только ты, зачем ты его в социальную сеть-то постишь, человече?! Положи себе в записную книжку, в файлик, в EverNote какой-нибудь, но в блог-то зачем?!
Ан нет, фича, говорят, страсть как полезна и нужна :)

Планы.

Может быть буду обновлять, если будет хватать рук.

12/4/2011 5:16:40 AM

Съездили в консульство, проголосовали.

Пока ехал подумал (никого ни с кем не сравниваю), что, например, режим Пиночета потерпел поражение именно на выборах. Это при том, что Пиночет не то, чтобы там как-то подковёрно, а вполне себе официально имел практически неограниченую личную власть, включая возможность назначать и снимать судей, отменять судебные решения любых инстанций и т.д. И при том, что за несколько лет до этого по результатам референдума население поддерживало Пиночета более чем на 70%.
Или, например, “правительство аппартеида” в ЮАР. Тоже всё выборы.
Опять, это я не пытаюсь провести параллели между текущим режимом в РФ и правительством Пиночета или аппартеида, а к тому, что выборы – это реальный инструмент имеющий реальную силу даже в самых сложных условиях.

То есть, бывают и посложнее ситуации. Главное – это не вестись на выкрики безумных лунатиков, призывающих игнорировать выборы в надежде, что кто-то там вдруг заметит и воскликнет: “ой, а ведь люди-то что-то не идут голосовать! давайте-ка изменимся к лучшему, а то стыдно как-то!”. В условиях преднамеренной отмены минимального порога явки, в условиях преднамеренной отмены опции “против всех” остаётся только один выбор – идти и голосовать, всем-всем-всем. Во всяком случае, это гораздо менее наивно, чем разводить байду по поводу игнорирования. Потому, что те, кого вы пытаетесь таким способом проигнорировать – они-то пойдут, и проголосуют, будте уверены.

В общем, тому, кто поленился сходить на избирательный участок, возможно прикрывшись “игнорированием”, я могу сказать только одно: “ну и сам дурак”.

Tags:

Live

Powered by BlogEngine.NET 2.5.0.6

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Twitter

Widget Twitter not found.

Root element is missing.X


Recent posts

Archive

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in