Разработка OpenID+OAuth и общие мысли

На днях Andrew Arnott, известный своим полезным для web-разработчиков проектом DotNetOpenId (библиотека для реализации интерфейсов OpenID в среде .Net), анонсировал в марте этого года выход третьей версии, которая будет включать функционал OAuth. Напомню, что OAuth - это протокол для безопасной передачи своих данных третьим сайтам. От OpenID его отличает лишь то, что все операции с данными проходят с минимальным участием пользователя и данные эти могут быть произвольными, а не только частью профиля пользователя, жестко связанным с его OpenID.
Кроме того Andrew пишет, что в связи с ростом проекта ему нужны деньги на новый хостинг и просит всех не безразличных перечислить сколько не жалко на PayPal. На мой взгляд, читателей у его блога маловато и средства он врядли таким способом соберет.
Примечательно, что с того момента, как модное слово OpenID растащили по своим доменам крупные пользовательские сервисы,
потерялось общее направление в развитии OpenID. Даже должность исполнительного директора в OpenID Foundation до сих пор пустует. Начали совершенствоваться средства по обучению этих глупых пользователей пользоваться новой технологией (речь про F*Connect и различные интеграции сервисов между собою). Обучение, конечно, никак не обойти, но не пора ли задуматься о переходе с простой переброски данных между серверами на расшаривание функционала над данными в хранилище? Как мы знаем, распределенная идентификация - это один из 9 механизмов составляющих семантический веб. Поэтому развитие OpenID нужно вести в ключе скорой интеграции с еще недостаточно разработанными 4мя (Combiner, Mediator, Monitor, Ontology). Итак, каждый OpenID идентификатор должен включать ИмяПользователя(OralIdentifier), Мыло(ElectronicIdentifier), Аватарку(VisialIdentifier) и полное XML(+public RDF)-описание объекта (FullSocialObjectDescription). Без ограничения общности, все это хостится на информационном ресурсе, подключенном к семантической сети, и все приходящие запросы должны быть выполнены не как сейчас "для данного пользователя дайте-ка такое-то поле", а "выполните такой-то SPARQL запрос над данными такого пользователя и верните ответ". Такой подход обусловлен тем, что любые данные в интернете имеют социальную привязку, а значит, возможно, что все новые данные будут выкладываться в таком социальном контексте. Кроме того, меняется RDF-понятие описания ресурса с данными с описания всех ресурсов домена на описание ресурсов одного автора, зарегистрированного на домене, что более абстрагирует нас от физического доменного носителя.

Метки: , ,   Категории:trend | news | OpenID


.Net: Программная печать документов MS Office

На днях решил поменять в одной программе печать документов с простого "webBrowser.ShowPrintDialog();" в браузере, на полноценное открытие MS Word с дальнейшей печатью. Но речь пойдет не о создании простого процесса winword.exe с передачей ему в качестве параметра нужного документа, а о библиотеках, которые созданы для разработчиков предусмотрительным Microsoft'ом. Заявлено, что решение работает под Office2003/2007, WinXP+, MSVS2005+. Краткое описание по работе с библиотекой приводит один из индийских девелоперов, номинированный как MVP (Microsoft Most Valuable Professional). Однако после строчек кода:
Copy Source | Copy HTML
  1. Object true = true;
  2. Object false = false;
...я почувствовал, что все шутки на баше про индийских программистов не были надуманными.
Далее я приведу шаги, с помощью которых, мне удалось осуществить задуманное и кусок кода. Итак, скачайте указанный выше архив с библиотеками. Внутри него будет также инструкция по интеграции этих библиотек в MSVS, но я рекомендую просто подключить нужную библиотеку, в моем случае это "Microsoft.Office.Interop.Word.dll", потому как я работаю только с MSWord, как Refference в проект. Далее, так как я хочу выводить на печать содержимое окна браузера, то я создал наследника от класса WebBrowser. Обратите внимание на функцию OpenInWord. Она создает вначале приложение офиса Application, потом сам документ, с которым работаем, загружая его из файла. Когда загрузка завершена, то делаем отображение самого офиса, выставляя значение Visible в true, так как по умолчанию офис будет работать спрятан:
Copy Source | Copy HTML
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Text.RegularExpressions;// регулярные выражения
  9. using System.IO;//работа с файлами
  10.  
  11. namespace BestApplicationEvah
  12. {
  13.     public partial class WebBrowser_I : WebBrowser
  14.     {
  15.         public WebBrowser_I()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.  
  20.         /// <summary>
  21.         /// Временная директория в которую складываются все файлы отправляемые на печать.
  22.         /// </summary>
  23.         private string printdirectory = "Rprint";
  24.  
  25.         /// <summary> Временная директория в которую складываются все файлы отправляемые на печать. </summary>
  26.         public string PrintDir { get { return printdirectory; } set { printdirectory = value; } }
  27.  
  28.         /// <summary>
  29.         /// Функция преобразования html в правильный формат для показа в doc
  30.         /// </summary>
  31.         /// <param name="file">Название файла. Желательно с расширением doc</param>
  32.         /// <param name="HTML">Html для преобразований</param>
  33.         /// <returns></returns>
  34.         private string HtmlToDocFile(ref string file, string HTML)
  35.         {
  36.             /*** много кода ***/
  37.         }
  38.  
  39.         /// <summary>
  40.         /// Функция сохраняет текущую страницу, как указанный файл и открывает его
  41.         /// </summary>
  42.         /// <param name="file">Имя создаваемого файла, должно иметь расширение DOC</param>
  43.         public void OpenAsDoc(string file)
  44.         {
  45.             this.OpenAsDoc(file, false);
  46.         }
  47.  
  48.         /// <summary>
  49.         /// Функция сохраняет текущую страницу, как указанный файл и открывает его
  50.         /// </summary>
  51.         /// <param name="file">Имя создаваемого файла, должно иметь расширение DOC</param>
  52.         /// <param name="newWindow">Открыть файл в новом окне?</param>
  53.         public void OpenAsDoc(string file, bool newWindow)
  54.         {
  55.             string err = this.HtmlToDocFile(ref file, this.DocumentText);
  56.             if (!String.IsNullOrEmpty(err))
  57.             {
  58.                 //вывод сообщения об ошибке
  59.                 MessageBox.Show(err, "Ошибка");
  60.             }
  61.  
  62.             //и отображаем доковский файл в браузере
  63.             this.Navigate(Directory.GetCurrentDirectory() + "/"+ this.printdirectory + "/" + file,newWindow);
  64.         }
  65.  
  66.         /// <summary>
  67.         /// Открытие HTML в MS Word...
  68.         /// </summary>
  69.         /// <param name="file">Название файла для сохранения информации</param>
  70.         public void OpenInWord(string file){
  71.             //создадим из контента файл
  72.             string err = this.HtmlToDocFile(ref file, this.DocumentText);
  73.             if (!String.IsNullOrEmpty(err))
  74.             {
  75.                 //вывод сообщения об ошибке
  76.                 MessageBox.Show(err, "Ошибка");
  77.             }
  78.  
  79.             try
  80.             {
  81.                 //Create an object for missing values. This will be passed whenever we don’t want to pass value
  82.                 Object missing = System.Reflection.Missing.Value;
  83.                 //Objects for true and false to be used in the word document for passing true or false.
  84.                 //Object true = true;
  85.                 //Object false = false;
  86.                 //Creating objects of word and document
  87.                 Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
  88.                 Microsoft.Office.Interop.Word.Document oWordDoc = new Microsoft.Office.Interop.Word.Document();
  89.                 object fileName = Directory.GetCurrentDirectory() + "/" + this.printdirectory + "/" + file;
  90.                 // You can keep it true if you want to open the file in readonly mode
  91.                 object readOnly = false;
  92.                 // we can keep it false if you want to open the file but not make it invisible
  93.                 object isVisible = true;
  94.                 //открытие файла
  95.                 oWordDoc = oWord.Documents.Open(ref fileName, ref missing, ref
  96.                   readOnly, ref missing, ref missing, ref missing, ref
  97.                   missing, ref missing, ref missing, ref missing, ref
  98.                   missing, ref isVisible, ref missing, ref missing, ref
  99.                   missing);
  100.                 //делаемся видимыми
  101.                 oWord.Application.Visible = true;
  102.                 //oWord.ShowMe();//смысл функции остался неизвестным
  103.                 //автопечать
  104.                 //oWord.PrintOut(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
  105.                 // ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
  106.                 // ref missing, ref missing);
  107.             }
  108.             catch(Exception WordExc)
  109.             {
  110.                 MessageBox.Show(WordExc.Message, "Ошибка при работа с MS Word");
  111.             }
  112.         }
  113.     }
  114. }
И когда мы всетаки завершим работать с офисом, важно закрыть объекты, иначе процесс winword может остаться висеть:
Copy Source | Copy HTML
  1. //Closing the file
  2. oWordDoc.Close(ref oFalse, ref missing, ref missing);
  3. //Quitting the word application to release the memory.
  4. oWord.Quit(ref missing, ref missing, ref missing);

Остальные возможности работы в документами содержаться в многочисленных методах объекта oWord и требуют дополнительных экспериментов.

Метки: , ,   Категории:Code


Кто я?

Программист. Я слежу за блогосферой и знаю, как будет развиваться интернет. Когда у меня есть время я даже прилагаю для этого усилия. Подробнее

Последние комментарии

Не отображать

Topbot at FeedsBurner

Мои Твиты

Twitter января 14, 19:00
8 японок основали поп-группу для пропаганды криптовалют http://dlvr.it/QBC3cw https://twitter.com/f1ashr/status/952616326605938688/photo/1

Twitter января 7, 10:12
Белый шум защищен авторским правом на youtube http://dlvr.it/Q9DFXS

Twitter января 1, 20:52
Новогодние белки http://dlvr.it/Q8SyPZ https://twitter.com/f1ashr/status/947933468222152704/photo/1

Twitter января 1, 16:43
Популярные блогеры и посты за 2017 год http://dlvr.it/Q8RpTj https://twitter.com/f1ashr/status/947870931896082433/photo/1

Twitter января 1, 15:37
@true_policy @nickolas_vs @KremlinRussia @iremeslo Но Путин делает все, чтобы выборная система в глазах аборигенов стала нелегитимной.

Twitter января 1, 11:32
@true_policy @nickolas_vs @KremlinRussia @iremeslo Нужен не новый президент, а другой система. От демократии к респ… https://twitter.com/i/web/status/947792574697431040

Twitter декабря 31, 21:11
Самоуправляемые ездящие картошки http://dlvr.it/Q8MGMd

Twitter декабря 31, 13:34
Разбор сериала Медичи: Повелители Флоренции http://dlvr.it/Q8KDRt https://twitter.com/f1ashr/status/947460855972601857/photo/1

Twitter декабря 31, 11:32
Папа Римский выступил на TED http://dlvr.it/Q8Jjb5

Twitter декабря 31, 10:25
коломенский кремль: альтернативная история 2 http://dlvr.it/Q8JRYv https://twitter.com/f1ashr/status/947413453701971968/photo/1

Twitter декабря 31, 10:25
Суперлайки в Перископе http://dlvr.it/Q8JRYr

Twitter декабря 30, 15:16
Peace, Death! (Пиз Дец) http://dlvr.it/Q8Cv1S https://twitter.com/f1ashr/status/947124264259395584/photo/1

Twitter декабря 30, 15:16
Итоги 2016 года в Живом Журнале http://dlvr.it/Q8Ctw6 https://twitter.com/f1ashr/status/947124257149956096/photo/1

Twitter декабря 30, 13:39
Разбор сериала "Молодой папа" (теория общего знания, часть 22) http://dlvr.it/Q8CP7P https://twitter.com/f1ashr/status/947099721675370496/photo/1

Twitter декабря 30, 13:05
Механического медведя не починить - пятая песня FNAF http://dlvr.it/Q8CDG8 https://twitter.com/f1ashr/status/947091170844278784/photo/1

Twitter декабря 30, 10:55
Skype and Baidu links http://dlvr.it/Q8Bf03

Twitter декабря 30, 10:23
Яндекс атаковал Израиль http://dlvr.it/Q8BWKR

Twitter декабря 30, 10:23
По случаю 8 марта погасили статую свободы http://dlvr.it/Q8BW9V https://twitter.com/f1ashr/status/947050399160156161/photo/1

Twitter декабря 30, 10:23
Кто забанил робота? http://dlvr.it/Q8BW82

Twitter декабря 30, 10:23
Рутин тутин Путин http://dlvr.it/Q8BW8y

Мой твиттер

Копирайт

Все мысли, высказанные в блоге, являются моим мнением и за это мнение меня никто не забанит! Кроме того, никто не имеет право копировать материалы блога без использования ctrl+C/V!

© Copyright 2008