<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3440514228829272358</atom:id><lastBuildDate>Thu, 03 Oct 2024 18:40:34 +0000</lastBuildDate><category>.net</category><category>C#</category><category>ASP.Net</category><category>Silverlight</category><category>Javascript</category><category>System.Xml</category><category>rdf</category><category>semantic web</category><category>аннотация</category><category>Binding</category><category>IE</category><category>Kooboo</category><category>RIA</category><category>SPARQL</category><category>SemWeb</category><category>System.Reflection</category><category>Twitter</category><category>asp.net mvc</category><category>hack</category><category>helper</category><category>owl</category><category>многопоточность</category><category>синглтон</category><category>ссылки</category><title>Копилка знаний</title><description></description><link>http://kopilkaz.blogspot.com/</link><managingEditor>noreply@blogger.com (Anonymous)</managingEditor><generator>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-810907049027043862</guid><pubDate>Tue, 23 Sep 2014 20:21:00 +0000</pubDate><atom:updated>2014-09-23T16:34:34.357-07:00</atom:updated><title>Добавляем SD карту в виртуальную машину в Oracle VirtualBox</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;ol&gt;
&lt;li&gt;Запускаем cmd с правами администратора&lt;/li&gt;
&lt;li&gt;Выполняем: 
wmic diskdrive list brief
&lt;br /&gt;
Получаем что-то похожее на это:&lt;pre&gt;C:\Users\Administrator&amp;gt;wmic diskdrive list brief
Caption                      DeviceID            Model                        Partitions  Size
WDC WD7500BPKT-75PK4T0       \\.\PHYSICALDRIVE0  WDC WD7500BPKT-75PK4T0       3           750153761280
O2Micro SD SCSI Disk Device  \\.\PHYSICALDRIVE1  O2Micro SD SCSI Disk Device  1           3964584960
&lt;/pre&gt;
Находим нашу карту. Нас интересует ее DeviceID: \\.\PHYSICALDRIVE1
&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;Перемещаемся в директорию с VirtualBox (C:\Program Files\Oracle\VirtualBox\):
&lt;br /&gt;

&lt;pre&gt;cd C:\Program Files\Oracle\VirtualBox
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Теперь создадим ссылку на SD-карту:
&lt;br /&gt;

&lt;pre&gt;VBoxManage internalcommands createrawvmdk -filename &quot;%USERPROFILE%/Desktop/sdcard.vmdk&quot; -rawdisk &quot;\\.\PHYSICALDRIVE1&quot;
&lt;/pre&gt;
&lt;br /&gt;

Таким образом мы создали файл (sdcard.vmdk, на рабочем столе), который и есть наша ссылка на SD-карту.
&lt;br /&gt;
&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;

Теперь добавляем полученную ссылку в виртуальную машину
Открываем Settings для нужной ВМ. Идем в Storage -&amp;gt; Controller: SATA -&amp;gt; (клик правой клавишей) Add Hard Disk -&amp;gt; Choose Existing Disk И выбираем файл на рабочем столе который мы создали в предыдущем шаге.
&lt;br /&gt;

&lt;/li&gt;
&lt;/ol&gt;
Запускаем машинку.... и... вуаля!&lt;/div&gt;</description><link>http://kopilkaz.blogspot.com/2014/09/sd-oracle-virtualbox.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-3439799425669396037</guid><pubDate>Fri, 10 Sep 2010 22:18:00 +0000</pubDate><atom:updated>2010-09-10T17:03:15.902-07:00</atom:updated><title>Событие изменения свойства в Javascript</title><description>&lt;p&gt;Довольно частая задача - запустить какие-то действия в скрипте в ответ на изменение некоторого свойства объекта. Подумав в очередной раз над этой задачей написал небольшой класс реализующий это поведение.&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;js&quot;&gt;function Property (param_value) {&lt;br /&gt;var value = param_value;&lt;br /&gt;var delegates = new Array();&lt;br /&gt;var RiseChangedEvent = function () {&lt;br /&gt;      $.each(delegates, function (index, item) {&lt;br /&gt;          item(value);&lt;br /&gt;      });&lt;br /&gt;  };&lt;br /&gt;  this.Property = function () {&lt;br /&gt;&lt;br /&gt;      this.SetChangedEventDelegate = function (delegate) {&lt;br /&gt;          delegates.push(delegate);&lt;br /&gt;      };&lt;br /&gt;      this.Get = function () {&lt;br /&gt;          return this;&lt;br /&gt;      };&lt;br /&gt;      this.Set = function (param_value) {&lt;br /&gt;          value = param_value;&lt;br /&gt;          RiseChangedEvent();&lt;br /&gt;      };&lt;br /&gt;&lt;br /&gt;  };&lt;br /&gt;return new this.Property();&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;delegates - коллекция ссылок на функции обратного вызова.&lt;br /&gt;Подписываемся функцией - SetChangedEventDelegate(),&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Использование:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;js&quot;&gt;&lt;br /&gt;event.finished = new Property(event.finished);&lt;br /&gt;//Заменяем переменную свойством (объектом класса Proerty)&lt;br /&gt;event.finished.SetChangedEventDelegate(function (value) {&lt;br /&gt;              input.attr(&quot;checked&quot;, value);&lt;br /&gt;          });&lt;br /&gt;//Подписываемся на событие изменения свойства&lt;br /&gt;//Теперь все обращения только через get и set&lt;br /&gt;var input = event.finished.Get();&lt;br /&gt;event.finished.Set(this.checked);&lt;/code&gt;&lt;/pre&gt;</description><link>http://kopilkaz.blogspot.com/2010/09/javascript.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-1666363850094784314</guid><pubDate>Mon, 03 May 2010 00:35:00 +0000</pubDate><atom:updated>2010-05-02T17:52:41.099-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net mvc</category><category domain="http://www.blogger.com/atom/ns#">Kooboo</category><title>Kooboo CMS. Процедура обновление версии</title><description>&lt;p&gt;В Kooboo предусмотрена удобная система обновления версии СМS. Но как и для всего, остального что связанно с Kooboo по этой теме крайне мало информации. В этой заметке я постараюсь кратко описать процедуру.&lt;/p&gt;&lt;p&gt;Для начала необходимо скачать девелоперскую версию &lt;a href=&quot;http://kooboo.codeplex.com/&quot;&gt;Kooboo&lt;/a&gt; и версию до которой необходимо обновить сайт.&lt;/p&gt;&lt;p&gt;Скачанную версию CMS распаковываем в отдельную папку. После чего необходимо собрать и запустить проект Kooboo.Upgrade Tool. В появившемся диалоге выбираем размещение старой версии сайта, размещение новой версии и запускаем обновление. &lt;/p&gt; Вот собственно и все.</description><link>http://kopilkaz.blogspot.com/2010/05/kooboo-cms.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-4632168030401726151</guid><pubDate>Sun, 13 Dec 2009 00:12:00 +0000</pubDate><atom:updated>2009-12-12T16:25:56.632-08:00</atom:updated><title>Прекрасная статья о том как упаковывать dll в один exe файл.</title><description>&lt;a href=&quot;http://weblogs.asp.net/ralfw/archive/2007/02/04/single-assembly-deployment-of-managed-and-unmanaged-code.aspx&quot;&gt;Single Assembly Deployment of Managed and Unmanaged Code&lt;/a&gt;&lt;p&gt;В кратце:&lt;/p&gt;&lt;p&gt;Добавляем нужную dll сборку как emebeded resource. Затем в статическом конструкторе класса, где она нужна (у меня это статический класс оборачивающий функции этой dll) прописываем вызов следующего метода:&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;csharp&quot;&gt;namespace MyLib&lt;br /&gt;{&lt;br /&gt;  public class MyClass&lt;br /&gt;  {&lt;br /&gt;      static MyClass()&lt;br /&gt;      {&lt;br /&gt;          ResourceExtractor.ExtractResourceToFile(&quot;MyLib.ManagedService.dll&quot;, &quot;managedservice.dll&quot;);&lt;br /&gt;          ResourceExtractor.ExtractResourceToFile(&quot;MyLib.UnmanagedService.dll&quot;, &quot;unmanagedservice.dll&quot;);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      ...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;А это собственно реализация экстрактора:&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;csharp&quot;&gt;public static class ResourceExtractor&lt;br /&gt;{&lt;br /&gt;    public static void ExtractResourceToFile(string resourceName, string filename)&lt;br /&gt;    {&lt;br /&gt;        if (!System.IO.File.Exists(filename))&lt;br /&gt;            using (System.IO.Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))&lt;br /&gt;                using (System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Create))&lt;br /&gt;                {&lt;br /&gt;                    byte[] b = new byte[s.Length];&lt;br /&gt;                    s.Read(b, 0, b.Length);&lt;br /&gt;                    fs.Write(b, 0, b.Length);&lt;br /&gt;                }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;</description><link>http://kopilkaz.blogspot.com/2009/12/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-2345526769124967828</guid><pubDate>Sun, 09 Aug 2009 09:41:00 +0000</pubDate><atom:updated>2009-12-12T17:09:50.460-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">Binding</category><category domain="http://www.blogger.com/atom/ns#">Silverlight</category><title>Танцы с бубнами.</title><description>&lt;p&gt;Существует некоторый класс простых багов, которые могут запросто превратиться в головную боль, привести к срыву всех сроков и довести до нервного истощения. Чаще всего оказывается, что решение лежало на поверхности.&lt;/p&gt;&lt;p&gt;Вот например кусок XAML, который мучал меня почти сутки&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt; &lt;chartingToolkit:Chart x:Name=&quot;MainChart&quot; Margin=&quot;0&quot; Grid.Column=&quot;1&quot; template=&quot;{StaticResource ChartControlTemplate}&quot;&gt;&lt;/chartingToolkit:Chart&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Если попытаться записать ему DataContext из CodeBehind, вот так:&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;csharp&quot;&gt;MainChart.DataContext = Sale.Data;&lt;/pre&gt;&lt;p&gt;то можно поймать совершенно изумительное ВэллНоун исключение:&lt;br /&gt;...................................................&lt;br /&gt;.................................&lt;br /&gt;................&lt;/p&gt;&lt;p&gt;Вот так всегда. Даже попытка повторить его не удалась. Спрашивается, с чем я боролся то сутки? Танцы с бубнами, да и только...&lt;/p&gt;&lt;p&gt;В общем исключение было следующим:  &quot;Collection was modified; enumeration operation may not execute&quot;.  Как я его заборол не понимаю до сих пор. Код, вроде как, тот же. Раньше не работал, теперь работает.&lt;/p&gt;&lt;p&gt;Возможно нужно было убрать установку DataContext из шаблонов в XAML и все. Еще один вариант - необходимо явно указывать Binding на родительские элементы. А те в свою очередь необходимо инициализировать из XAML каким-то начальным значением. Что-то из этого работает.&lt;/p&gt;</description><link>http://kopilkaz.blogspot.com/2009/08/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-4208138920698263796</guid><pubDate>Wed, 29 Jul 2009 21:35:00 +0000</pubDate><atom:updated>2009-08-09T02:46:32.646-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">RIA</category><category domain="http://www.blogger.com/atom/ns#">Silverlight</category><title>Странный баг в .Net Silverlight RIA Services</title><description>Портируя Silverlight приложение на .Net RIA Services столкнулся с неприятным багом, который сейчас и попробую описать.&lt;br /&gt;&lt;br /&gt;Имеется некий метод TotalDueByRegionId который принимает в качестве параметра с именем inputName строку ( раньше принимал число, но баг повторяется независимо от этого ).&lt;br /&gt;И вот необходимо вызвать его из XAML кода контрола, что я и делаю следующим образом, пытаясь передать ему параметр:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&lt;riacontrols:domaindatasource name=&quot;TDR&quot; queryname=&quot;TotalDueByRegionId&quot; autoload=&quot;True&quot;&gt;&lt;br /&gt;          &lt;riacontrols:domaindatasource.domaincontext&gt;&lt;br /&gt;              &lt;domain:addomaincontext&gt;&lt;br /&gt;          &lt;/domain:addomaincontext&gt;&lt;/riacontrols:domaindatasource.domaincontext&gt;&lt;br /&gt;          &lt;riacontrols:domaindatasource.queryparameters&gt;&lt;br /&gt;              &lt;riadata:controlparameter parametername=&quot;inputName&quot; value=&quot;zuxel&quot;&gt;&lt;br /&gt;          &lt;/riadata:controlparameter&gt;&lt;/riacontrols:domaindatasource.queryparameters&gt;&lt;br /&gt;      &lt;/riacontrols:domaindatasource&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Запускаем код и отлавливаем в вызов TotalDueByRegionId в сгенерированом коде:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/1d0e1b42-849b-486d-a4ef-503c76913d9b/2009-07-30_0201.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 1091px; height: 232px;&quot; src=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/1d0e1b42-849b-486d-a4ef-503c76913d9b/2009-07-30_0201.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В этом месте инструкция по адресу 03Bh передает значение в переменную this._value&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/5b89b2c3-d5fe-4918-80b4-89fcc6994dc3/2009-07-30_0211.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 1058px; height: 441px;&quot; src=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/5b89b2c3-d5fe-4918-80b4-89fcc6994dc3/2009-07-30_0211.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Следующая инструкция устанавливает эту же переменную в null:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/8e2b7353-1ea2-4f12-9501-87b391875d80/2009-07-30_0221.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 996px; height: 438px;&quot; src=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/8e2b7353-1ea2-4f12-9501-87b391875d80/2009-07-30_0221.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дизасемблер IL кажет нам следующие:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/2d36d895-5d9e-4f2f-ac07-af86e71a2b3e/2009-07-30_0223.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 718px; height: 488px;&quot; src=&quot;http://content.screencast.com/users/Neanderthal/folders/Jing/media/2d36d895-5d9e-4f2f-ac07-af86e71a2b3e/2009-07-30_0223.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Что явно не вяжется с тем, что происходит в реальности. Я в тупике. Как жить дальше?&lt;br /&gt;&lt;br /&gt;UPD: Запостил на официальный форум Silverlight: &lt;a href=&quot;http://silverlight.net/forums/p/115386/260071.aspx#260071&quot;&gt;http://silverlight.net/forums/p/115386/260071.aspx#260071&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPD 2: Решение: Когда необходимо просто передать параметр в запрос - надо использовать тип parameter вместо controlparameter. Controlparameter позволяет забаиндиться к свойствам других контролов. (Надо меньше тупить... Надо меньше тупить... и чаще отдыхать)</description><link>http://kopilkaz.blogspot.com/2009/07/net-silverlight-ria-services.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5413481234551768469</guid><pubDate>Sat, 23 May 2009 01:42:00 +0000</pubDate><atom:updated>2009-05-22T18:42:51.675-07:00</atom:updated><title></title><description>У меня программерская проблема. Некоторые вещи очень медленно компиляться. И за время компиляции я успеваю зачитатьс чьим нибудь блогом.</description><link>http://kopilkaz.blogspot.com/2009/05/blog-post_626.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5893817166660700364</guid><pubDate>Tue, 28 Apr 2009 09:01:00 +0000</pubDate><atom:updated>2009-04-28T02:01:25.105-07:00</atom:updated><title></title><description>Сейчас открою америку. Если не очень долго но упорно и не отдыхая делать одно дело - скучно становиться чрезвычайно быстро. Очень быстро....</description><link>http://kopilkaz.blogspot.com/2009/04/blog-post_28.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5916974021841843054</guid><pubDate>Sat, 18 Apr 2009 02:57:00 +0000</pubDate><atom:updated>2009-12-12T19:02:35.597-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">helper</category><category domain="http://www.blogger.com/atom/ns#">Javascript</category><title>Javascript функция рекурсивного обхода DOM</title><description>Пока я с красными глазами искал как исправить баг в IE из прошлого поста. Я написал весьма полезную функцию подписывающую все подписывающиеся потомки заданного элемента на событие вызывающие alert. И хотя существует мнение, что дебажить код алертами плохо - эта возможность меня спасла, от разрыва мозга, как минимум.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;js&quot;&gt;&lt;br /&gt;function resetinputs(node) {&lt;br /&gt;    var oNode = node;&lt;br /&gt;    if (!oNode.length) {&lt;br /&gt;        try {&lt;br /&gt;            if (oNode.tagName == &quot;IMG&quot; || oNode.tagName == &quot;MAP&quot; || oNode.tagName == &quot;AREA&quot;) { alert(oNode.tagName + &quot;-|-&quot; + oNode.id); };&lt;br /&gt;            if (oNode.Id == &quot;ChartArea1&quot;) { oNode.style.opacity = &quot;.5&quot;; };&lt;br /&gt;        }&lt;br /&gt;        catch (dfr) { };&lt;br /&gt;        var curch = oNode;&lt;br /&gt;        try {&lt;br /&gt;            curch.onmouseup = function(evnt) {&lt;br /&gt;                var n = 1;&lt;br /&gt;                alert(this.tagName + &quot; -|- &quot; + this.id);&lt;br /&gt;                var z = 25;&lt;br /&gt;            };&lt;br /&gt;        } catch (eval) { };&lt;br /&gt;        if (oNode.childNodes) {&lt;br /&gt;            curch = oNode.childNodes;&lt;br /&gt;            for (var n = 0; n &lt; curch.length; n++) resetinputs(curch[n]);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;        curch = oNode.childNodes;&lt;br /&gt;        for (var i = 0; i &lt; curch.length; i++) { resetinputs(curch[i]) };&lt;br /&gt;    }&lt;br /&gt;    return 1;   &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;</description><link>http://kopilkaz.blogspot.com/2009/04/javascript-dom.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-7976419006948482876</guid><pubDate>Sat, 18 Apr 2009 02:41:00 +0000</pubDate><atom:updated>2009-04-18T05:26:14.753-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack</category><category domain="http://www.blogger.com/atom/ns#">IE</category><category domain="http://www.blogger.com/atom/ns#">Javascript</category><title>События Javascript на прозрачных элементах в IE 7 (Internet Explorer 7)</title><description>Мерзкий, гадкий, подлый осёл не дает перехватывать события на элементах страницы для которых стоит свойство &lt;span style=&quot;font-weight:bold;&quot;&gt;background-color:transparent&lt;/span&gt;. У меня ушло немеряно времени что-бы отучить его от этого поведения, и заставить поймать мое событие.&lt;br /&gt;&lt;br /&gt;Хак:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;javascript&quot;&gt;&lt;br /&gt;//Panel - это мой div&lt;br /&gt;//Проверяем, действительно ли это IE7&lt;br /&gt;if((document.all &amp;&amp; !window.opera &amp;&amp; window.XMLHttpRequest) ? true : false) {&lt;br /&gt;       //Делаем его мой див непрозрачным, ибо только непрозрачные контролы ловят события.&lt;br /&gt;       Panel.style.backgroundColor = &quot;gray&quot;;&lt;br /&gt;//И делаем его прозрачным снова.&lt;br /&gt;       Panel.style.filter  = &quot;alpha(opacity = 0)&quot;;&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но у этого решения есть серьезный недостаток. Все вложенные элементы тоже становятся прозрачными!!! Хак приведенный ниже работает без этого недостатка:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;javascript&quot;&gt;&lt;br /&gt;    /*IE HACK. It takes more than 40 hours for me.*/&lt;br /&gt;    if((document.all &amp;&amp; !window.opera &amp;&amp; window.XMLHttpRequest) ? true : false) {&lt;br /&gt;       Panel.style.background = &quot;url(bogus)&quot;;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Это решение найдено &lt;a href=&quot;http://getsatisfaction.com/livelabs/topics/mouse_events_not_captured_for_clear_overlays_in_ie_7&quot;&gt;здесь&lt;/a&gt;</description><link>http://kopilkaz.blogspot.com/2009/04/javascript-ie-7-internet-explorer-7.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-3969633458921020256</guid><pubDate>Sun, 05 Apr 2009 15:40:00 +0000</pubDate><atom:updated>2009-04-05T08:40:47.647-07:00</atom:updated><title></title><description>Продолжаю скрещивать Semantic Web и ASP.Net MVC...</description><link>http://kopilkaz.blogspot.com/2009/04/semantic-web-asp.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-8940237091075212680</guid><pubDate>Fri, 03 Apr 2009 23:16:00 +0000</pubDate><atom:updated>2009-04-03T16:16:38.226-07:00</atom:updated><title></title><description>Очень тяжело вникать в суть онтологий.. Мозг клинит. Как  надо парсить случайные RDF данные?</description><link>http://kopilkaz.blogspot.com/2009/04/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-3886527274086030956</guid><pubDate>Thu, 02 Apr 2009 20:16:00 +0000</pubDate><atom:updated>2009-04-02T13:16:33.554-07:00</atom:updated><title></title><description>Programmer: an organism that turns coffee into software</description><link>http://kopilkaz.blogspot.com/2009/04/programmer-organism-that-turns-coffee.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-1728699929000061276</guid><pubDate>Sat, 21 Mar 2009 14:53:00 +0000</pubDate><atom:updated>2009-03-22T17:26:43.789-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><title>URL rewritintg а точнее routing в ASP.Net 3.5</title><description>Все, что необходимо знать по этой теме прекрасно описано в статье &lt;a href=&quot;http://chriscavanagh.wordpress.com/2008/03/11/aspnet-routing-goodbye-url-rewriting/&quot;&gt;ASP.Net routing... Goodby URL rewriting?&lt;/a&gt;  Криса Каванагса (Интересно правильно ли я транскрибировал его фамилию? :) &lt;div&gt;И здесь я просто кратко повторю:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Первым делом надо добавить в проект ссылки на сборки&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt; System.Web.Routing&lt;/span&gt; и &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;System.Web.Abstrations&lt;/span&gt;&lt;/div&gt;&lt;pre name=&quot;code&quot; class=&quot;C#&quot;&gt;&lt;br /&gt;public class WebFormRouteHandler&lt;t&gt; : IRouteHandler where T : IHttpHandler, new()&lt;br /&gt;{&lt;br /&gt;    public string VirtualPath { get; set; }&lt;br /&gt;&lt;br /&gt;    public WebFormRouteHandler(string virtualPath)&lt;br /&gt;    {&lt;br /&gt;        this.VirtualPath = virtualPath;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public IHttpHandler GetHttpHandler(RequestContext requestContext)&lt;br /&gt;    {&lt;br /&gt;        return (VirtualPath != null)&lt;br /&gt;            ? (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(T))&lt;br /&gt;            : new T();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Этот клас необходим для работы механизма роутинга в IIS 7&lt;br /&gt;public class RoutingHandler : UrlRoutingHandler&lt;br /&gt;{&lt;br /&gt;    protected override void VerifyAndProcessRequest(IHttpHandler httpHandler, HttpContextBase httpContext)&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/t&gt;&lt;/pre&gt;&lt;div&gt;Чтобы роутинг заработал в IIS7 Необходимо выполнить ряд дополнительных действий&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Вставить в &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;web.config&lt;/span&gt;, в раздел&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt; system.webServer &lt;/span&gt;в теге&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt; modules&lt;/span&gt; следующую строчку:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&lt;add name=&quot;UrlRoutingModule&quot; type=&quot;System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;&gt;&lt;br /&gt;&lt;/add&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;В сам тег&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt; modules&lt;/span&gt; добавить атрибут&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&lt;modules runallmanagedmodulesforallrequests=&quot;true&quot;&gt;&lt;br /&gt;&lt;/modules&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;И последнее в том же разделе в тег &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;handlers&lt;/span&gt; добавить:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&lt;add name=&quot;UrlRoutingHandler&quot; precondition=&quot;integratedMode&quot; verb=&quot;*&quot; path=&quot;UrlRouting.axd&quot; type=&quot;SimpleRoutingTest.RoutingHandler, SimpleRoutingTest&quot;&gt;&lt;br /&gt;&lt;/add&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;Ну и теперь для счастливой жизни нам не хватает только следующего кода в файле &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Global.asax&lt;/span&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;C#&quot;&gt;&lt;br /&gt;    protected void Application_Start(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        RegisterRoutes(RouteTable.Routes);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void RegisterRoutes(RouteCollection routes)&lt;br /&gt;    {&lt;br /&gt;        // Note: Change the URL to &quot;{controller}.mvc/{action}/{id}&quot; to enable&lt;br /&gt;        //       automatic support on IIS6 and IIS7 classic mode&lt;br /&gt;&lt;br /&gt;        var routeHandler = new WebFormRouteHandler&lt;page&gt;(&quot;~/MyPage.aspx&quot;);&lt;br /&gt;&lt;br /&gt;        routes.Add(new Route(&quot;{page}&quot;, routeHandler));&lt;br /&gt;        routes.Add(new Route(&quot;AccountServices/{page}&quot;, routeHandler));&lt;br /&gt;        routes.Add(new Route(&quot;Default.aspx&quot;, routeHandler));&lt;br /&gt;    }&lt;br /&gt;&lt;/page&gt;&lt;/pre&gt;&lt;div&gt;Перед тем как использовать рекомендую так-же прочитать&lt;br /&gt;&lt;a href=&quot;http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx&quot;&gt;&lt;br /&gt;Using routing with WEbforms &lt;/a&gt;. Дабы спастись от злых хакеров&lt;br /&gt;&lt;/div&gt;</description><link>http://kopilkaz.blogspot.com/2009/03/url-rewritintg-routing-aspnet-35.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-6266032514833846246</guid><pubDate>Sat, 21 Mar 2009 00:11:00 +0000</pubDate><atom:updated>2009-03-20T19:31:50.110-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><title>Получаем абсолютный путь к файлу в аттрибуте action тега form  в ASP.Net</title><description>Так уж устроена работа программиста, что периодически приходиться спотыкаться на тривиальнейших вещах. И вот споткнувшись, обязательно во время выполнения черезвычайно срочного заказа, который надо было сдать позавчера, приходиться сидеть по многу часов подряд, и искать способ обойти какую-нибудь очередную хрень. За это время, заказчик успевает плюнуть на тебя и уходит на всегда. А ты продолжаешь сидеть и пытаешься понять, где же тебя...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Так и в этот раз. Оказалось, что атрибут action тега form возвращаемый aspx страницей содержит в содержит в себе исключительно относительный путь к странице. И что делать? Могли ведь предусмотреть в webconfig-е параметр, например, AbsoluteURLs = true, который бы заменял в случае необходимости относительные пути на абсолютные? И где он? Может я просто про него не знаю?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ну а теперь собственно решение.&lt;/div&gt;&lt;div&gt;В папочке App_Browsers создаем файл Form.browser. В этот файл помещаем следующий код:&lt;/div&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&lt;browsers&gt;&lt;br /&gt;&lt;browser refid=&quot;Default&quot;&gt;&lt;br /&gt;&lt;controladapters&gt;&lt;br /&gt; &lt;adapter controltype=&quot;System.Web.UI.HtmlControls.HtmlForm&quot; adaptertype=&quot;WebApplication1.FormRewriterControlAdapter&quot;&gt;&lt;br /&gt;&lt;/adapter&gt;&lt;/controladapters&gt;&lt;br /&gt;&lt;/browser&gt;&lt;br /&gt;&lt;/browsers&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;После этого мы созадем классы FormRewriterControlAdapter и RewriteFormHtmlTextWriter со следующим содержимым:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;C#&quot;&gt;&lt;br /&gt;namespace WebApplication1&lt;br /&gt;{&lt;br /&gt;   public class FormRewriterControlAdapter : System.Web.UI.Adapters.ControlAdapter&lt;br /&gt;   {&lt;br /&gt;       protected override void Render(System.Web.UI.HtmlTextWriter writer)&lt;br /&gt;       {&lt;br /&gt;           base.Render(new RewriteFormHtmlTextWriter(writer));&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       public class RewriteFormHtmlTextWriter : HtmlTextWriter&lt;br /&gt;       {&lt;br /&gt;           public RewriteFormHtmlTextWriter(HtmlTextWriter writer)&lt;br /&gt;               : base(writer)&lt;br /&gt;           {&lt;br /&gt;               this.InnerWriter = writer.InnerWriter;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           public override void WriteAttribute(string name, string value, bool fEncode)&lt;br /&gt;           {&lt;br /&gt;               if (name == &quot;action&quot;)&lt;br /&gt;               {&lt;br /&gt;                   HttpContext Context = HttpContext.Current;&lt;br /&gt;&lt;br /&gt;                   if (Context.Items[&quot;ActionAlreadyWritten&quot;] == null)&lt;br /&gt;                   {&lt;br /&gt;                       Uri url = Context.Request.Url;&lt;br /&gt;                     &lt;br /&gt;                       value = ((new StringBuilder()).AppendFormat(&quot;http://{0}:{1}{2}&quot;, url.Host, url.Port, Context.Request.RawUrl)).ToString();&lt;br /&gt;                       Context.Items[&quot;ActionAlreadyWritten&quot;] = true;&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;               base.WriteAttribute(name, value, fEncode);&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;Вуаля. Сейчас если соберусь, выложу способ замены относительных путей на абсолютные в других частях aspx. &lt;br /&gt;&lt;/p&gt;</description><link>http://kopilkaz.blogspot.com/2009/03/action-form-aspnet.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-1859482679545279144</guid><pubDate>Fri, 13 Mar 2009 19:17:00 +0000</pubDate><atom:updated>2009-03-20T19:34:33.376-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Silverlight</category><title>Загрузка XAML во время выполнения</title><description>Загружаем элементы Silverlight из стороннего XAML файла.&lt;br /&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;C#&quot;&gt;private Canvas GetControlFromFile()&lt;br /&gt;{&lt;br /&gt;Uri uri = new Uri(&quot;Hands.xaml&quot;, UriKind.Relative);&lt;br /&gt;&lt;br /&gt;System.Windows.Resources.StreamResourceInfo streamInfo = Application.GetResourceStream(uri);&lt;br /&gt;if ((streamInfo != null) &amp;amp;&amp;amp; (streamInfo.Stream != null))&lt;br /&gt;  {&lt;br /&gt;  using (System.IO.StreamReader reader = new StreamReader(streamInfo.Stream))&lt;br /&gt;      {&lt;br /&gt;          return XamlReader.Load(reader.ReadToEnd()) as Canvas;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Полученный элемент добавляем к другому элементу&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;C#&quot;&gt;&lt;br /&gt;LayoutRoot.Children.Add(GetControlFromFile);&lt;br /&gt;&lt;/pre&gt;</description><link>http://kopilkaz.blogspot.com/2009/03/silverlight-xml.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-6723327031523618894</guid><pubDate>Sun, 01 Mar 2009 13:04:00 +0000</pubDate><atom:updated>2009-03-01T05:06:28.305-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rdf</category><category domain="http://www.blogger.com/atom/ns#">SPARQL</category><category domain="http://www.blogger.com/atom/ns#">Twitter</category><title>Turn Twitter Into Your Personal Assistant</title><description>A few simple conventions, together with &lt;a href=&quot;http://www.w3.org/RDF/&quot; target=&quot;_blank&quot;&gt;RDF&lt;/a&gt;  and &lt;a href=&quot;http://www.w3.org/TR/rdf-sparql-query/&quot; target=&quot;_blank&quot;&gt;SPARQL&lt;/a&gt;, can turn your Twitter feeds into rich information streams, which you can then use for a more productive microblogging experience.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.devx.com/semantic/Article/40869&quot;&gt;Читаем тут&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Помоему это интересно..&lt;/div&gt;</description><link>http://kopilkaz.blogspot.com/2009/03/turn-twitter-into-your-personal.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-8678135300430753236</guid><pubDate>Sun, 01 Mar 2009 10:36:00 +0000</pubDate><atom:updated>2009-03-01T15:39:15.481-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">semantic web</category><category domain="http://www.blogger.com/atom/ns#">аннотация</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><title>Ссылки по SW</title><description>&lt;span style=&quot;font-weight: bold;font-size:130%;&quot;&gt;Аннотация&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://wiki.stasis-project.net/Wiki.jsp?page=Annotation#ref-Annotation-2&quot;&gt;Stasis Wiki&lt;/a&gt; - коротко об аннотации. На сайте кроме этого много другой полезной информации.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.w3.org/2001/Annotea/&quot;&gt;Anotea&lt;/a&gt; - Анотация от W3C&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://nazou.fiit.stuba.sk/home/misc/itat_nazou_ontea.pdf&quot;&gt;OnTeA: Semi-automatic Ontology based TextAnnotation Method &lt;/a&gt;- Чрезвычайно позновательный документ о методах реализации анотирования.&lt;br /&gt;&lt;blockquote&gt;In this paper we describe a solution for the ontology based text annotation (OnTeA) tool. The tool analyzes a document or text using regular expression patterns and detects equivalent semantic elements according to the defined domain ontology.&lt;/blockquote&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:130%;&quot;&gt;&lt;br /&gt;Просто ссылки&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.w3.org/2001/sw/&quot;&gt;W3C Semantic Web Activity&lt;/a&gt; - Самая ЖЫРНАЯ ссылка&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.semanticfocus.com/blog/entry/title/30-semantic-web-introductions-references-guides-and-tutorials/&quot;&gt;30+ Semantic Web Introductions, References, Guides, and Tutorials&lt;/a&gt; - Кладезь. Найден при помощи HeadUp. ;) &lt;blockquote&gt;&quot;Matrix has you&quot; &lt;/blockquote&gt;&lt;a href=&quot;http://www.semanticuniverse.com/&quot;&gt;Semantic Universe&lt;/a&gt; - Очень полезный источник всего и вся.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://librdf.org/&quot;&gt;Redland RDF Libraries&lt;/a&gt; - библиотеки для работы c SW на C&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.xml.com/pub/a/2005/11/16/introducing-sparql-querying-semantic-web-tutorial.html&quot;&gt;Introducing SPARQL: Querying the Semantic Web&lt;/a&gt;  - Введение в SPARQL: Запросы к Смантическому Веб-у</description><link>http://kopilkaz.blogspot.com/2009/03/sw.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5404365882764689852</guid><pubDate>Sun, 01 Mar 2009 01:05:00 +0000</pubDate><atom:updated>2009-03-01T03:53:35.939-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">owl</category><category domain="http://www.blogger.com/atom/ns#">rdf</category><category domain="http://www.blogger.com/atom/ns#">semantic web</category><category domain="http://www.blogger.com/atom/ns#">аннотация</category><title>Аннотирование семантических данных</title><description>перевод фрагмента статьи &lt;a href=&quot;http://www.dcs.shef.ac.uk/%7Efabio/paperi/webSemantics2006.pdf&quot;&gt;Semantic annotation for knowledge management: Requirements and a survey of the state of the art&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Требования&lt;/h2&gt;&lt;p&gt;Разработка модели Управления Знаниями ориентированная на документы, потребовала от нас формулировки требований к системам аннотации семантических данных. Они совпадают в какой-то степени с требованиями изложенных Handschuh и др.. [15], но существуют также различия. Например, мы не касались таких проблем, как эффективность и правильные ссылки, хотя мы и признаем, что это важно. Вместо этого, мы рассмотрели задачу с четырех точек зрения: онтологий, документов, аннотаций, которые связывают онтологии и документы, а также пользователей системы. Все эти точки зрения предполагают одно или несколько требований, каждое из которых, как правило, объединяет несколько связанных потребностей. Например, с точки зрения онтологий появляется требование поддержки инструментами множества меняющихся онтологий, а с точки зрения документов мы видим необходимость поддержки повторного использования и контроля версий документов.&lt;/p&gt;&lt;p&gt;[Ниже перечислены семь требований к инструментам анотации - прим.пер.] &lt;/p&gt;&lt;h3&gt;1. Использование стандартных форматов&lt;/h3&gt;&lt;p&gt;Использование стандартных форматов предпочтительнее, где это возможно, поскольку затраты на маркировку ресурсов значительны - стандартизация создаст прочную основу для будущего, так-так новые инструменты, услуги и т.д., которые не были предусмотрены при первоначальной семантической аннотации, смогут легко использовать такие ресурсы. Соответствие стандартам, также освобождает компании от ограничений связанных с использованием лицензионных форматов при выборе программного обеспечения по управлению знаниями Эти преимущества могут быть отнесены к системам в целом.&lt;br /&gt;В системах аннотации, в частности, стандартные форматы могут стать тем связующим механизмом, который позволит обеспечить совместный доступ к распределенным ресурсам, а так же объединит усилия пользователей и организации в  предоставлении доступа к аннотациям. Активность W3C в развитии и поощрении международных стандартов в области Семантического Веба, убеждает нас в том, что  в области управления знаниями стоит следовать этим путем. Два вида стандартов являются обязательными, стандарты для описания онтологий,&lt;br /&gt;такие как OWL и стандарты аннотации такие как W3C схема аннотации RDF .&lt;/p&gt;&lt;h3&gt;2. Ориентированный на пользователя / совместную работу дизайн&lt;/h3&gt;&lt;p&gt;Аннотирование может стать узким местом, если оно выполняется  специально-обученными людьми и занимает много их времени. Хорошей практикой будет иметь  единый интерфейс ввода данных, например когда инструмент позволяющий пользователю аннотировать документы интегрирован с инструментами для их чтения, создания, редактирования, и распространения.&lt;br /&gt;Дизайн системы, так же, нуждается в облегчении взаимодействия между пользователями, что является ключевым аспектом обработки знаний экспертами в различных областях, способствуя повторному использования &quot;умных&quot; документов. Мы уже определили стандартные форматы, как предпосылку для обмена аннотациями.&lt;br /&gt; Другие вопросы сотрудничества включают реализацию системы контроля над тем, что разделять и с кем. Например, в медицинском контексте, врачи могли бы обмениваться всей информацией о пациентах между собой, но предоставлять только общую, обезличенную информацию в отдел планирования. Это подводит нас к вопросам, связанным с доверием, источниками данных и правами доступа к ним. Внутренние сети обеспечивают более контролируемую среду для отслеживания источников аннотаций, чем дикий Веб, но и в этом случае политика доступа к данным является важным вопросом для организаций, которые неизбежно касаются вопросов конфиденциальности данных клиентов и сотрудников.&lt;/p&gt;&lt;h3&gt;3. Поддержка онтологий (множества онтологий и их развития) &lt;/h3&gt;&lt;p&gt;В дополнение к поддержке соответствующих форматов онтологий, средства аннотации должны быть в состоянии поддерживать большое количество онтологий. Например, в медицинском контексте, это может быть одна онтология для общих метаданные о пациенте и несколько других технических онтологиях, связанных с диагностикой и лечением. Либо онтологии должны быть объединены либо аннотации должны четко декларировать, на какие онтологии они ссылаются.&lt;br /&gt;Кроме того, система должна уметь обрабатывать изменения, внесенные в онтологии с течением времени, как, например, включение новых классов или изменение существующих. В этом случае, проблема заключается в обеспечении соответствия между онтологиями и аннотациями в плане изменения онтологий.&lt;br /&gt;Один из важных аспектов проектирования среды аннотации, определить, как изменения должны быть отражены в базе знаний аннотированных документов, и не появляется ли в измененных онтологиях конфликтов с существующими аннотациями.&lt;/p&gt;&lt;h3&gt;4. Поддержка разнообразных форматов документов&lt;/h3&gt;&lt;p&gt;Стандарты Семантического Веб для аннотаций, как правило, предполагают, что аннотируемые документы представлены в наиболее часто используемых форматах веб-документов, таких как HTML или XML. Например, Annotea для определения местоположения аннотации в документе использует XPointers. Такой подход имеет ограниченную полезность для управления знаниями.&lt;br /&gt;Документы могут иметь самые разные форматы, включая файлы текстовых процессоров, электронные таблицы, графические файлы и сложные смеси различных форматов. И хотя это рождает техническую проблему, требующую большого количества исследований, возможность использования разнообразных форматов документов является необходимым условием для массового использования аннотаций на практике.&lt;/p&gt;&lt;h3&gt;5. Отселживание изменений в документ ( связь документа и аннотации )&lt;/h3&gt;&lt;p&gt;Случается онтологии меняются, но документы меняются гораздо чаще. Примером могут служить спецификации консорциума W3, которые проходят через множество ревизий. Требование 3 сосредотачивается на проблеме сохранения связанности онтологий и аннотаций. Данное требование, касается поддержания связи аннотации с текстом документа, т.е. обслуживания указателей из аннотации на информацию в тексте.&lt;br /&gt;Вопрос - &quot;Что должно происходит с аннотацией документа, когда он изменяется?&quot;, имеет как технические стороны, так и стороны касающиеся логики самого приложения. Если якорь к аннотации в общедоступном документе удаляется кем-то, при редактировании, надо ли информировать автора этого документа, чтобы он мог повторно поставить якорь, а быть может и удалить соответствующую аннотацию, или документ не может быть изменен ни кем кроме автора? Надо ли, в общем случае, приводить аннотации в соответствие с новым вариантом документа, или же версии аннотации необходимо поддерживать параллельно с версиями документа? Например, если договор изменяется под нового клиента, аннотации указывающие на правовые онтологии должны быть сохранены, но аннотации, в которых говорится о предыдущих клиентах, надо удалить. Как может быть достигнуто такое выборочное изменение аннотаций?&lt;br /&gt;Инструмент аннотации должен уметь помогать пользователю грамотно изменять необходимые аннотации при изменении документа. &lt;/p&gt;&lt;h3&gt;6. Хранение аннотаций&lt;/h3&gt;&lt;p&gt;Модель Семантического Веб-а предполагает, что аннотации будут храниться отдельно от первоначального документа, в то время как модель &quot;текстового процессора&quot; предполагает, что комментарии, хранятся в качестве неотъемлемой часть документа, и могут быть показаны или скрыты в зависимости от предпочтений пользователя. Модель Семантического Веб-а, в которой содержание отделено от семантики, особенно хорошо работает в Веб, где авторы аннотаций не обязательно имеют контроль над документами, которые они аннотировали. Этот аспект следует учитывать при работе с документами некоторых форматов, которые могут уже содержать в себе аннотации.&lt;/p&gt;&lt;h3&gt;7. Автоматизация&lt;/h3&gt;&lt;p&gt;Другим аспектом облегчения работы с инструментами аннотации является создание условий для автоматической разметки наборов документов, в целях облегчения аннотации больших собраний документов. Чтобы добиться этого, большое значение имеет интеграция технологий добычи знаний в среду аннотации. Это позволяет автоматически идентифицировать сущности, которые являются экземплярами классов и отношения между классами. Надо отметит, что автоматические инструменты могут помочь эффективно справится с аннотированием даже неподготовленному пользователю, для этого могут использоваться, например методы обработки естественного языка (NLP).&lt;/p&gt;</description><link>http://kopilkaz.blogspot.com/2009/02/blog-post_28.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5196994510038884082</guid><pubDate>Tue, 10 Feb 2009 03:38:00 +0000</pubDate><atom:updated>2009-02-11T00:06:40.492-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">System.Xml</category><title>Атрибут xmlns</title><description>При попытке выполнить следующий код:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;XmlWriter output;&lt;br /&gt;output.WriteStartElement(&quot;sparql&quot;);&lt;br /&gt;output.WriteAttributeString(&quot;xmlns&quot;, &quot;http://www.w3.org/2005/sparql-results#&quot;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;получаем исключение:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;System.Xml.XmlException: Префикс &quot;&quot; не может быть переопределен с &quot;&quot; на &quot;http://www.w3.org/2005/sparql-results#&quot; внутри того же начального тега элемента.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Это все потому, что правильно делать вот так:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;XmlWriter output;&lt;br /&gt;output.WriteStartElement(&quot;sparql&quot;, &quot;http://www.w3.org/2005/sparql-results#&quot;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ошибка была обнаружена в библиотеке &lt;a href=&quot;http://razor.occams.info/code/semweb/&quot;&gt;SemWeb&lt;/a&gt;. Теперь в репозитории лежит уже исправленная версия.</description><link>http://kopilkaz.blogspot.com/2009/02/xmlns.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-8574360744070582215</guid><pubDate>Mon, 02 Feb 2009 02:26:00 +0000</pubDate><atom:updated>2009-02-13T23:49:19.828-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">SemWeb</category><title>Вывод результата запроса в SemWeb</title><description>&lt;p style=&quot;text-align: left;&quot;&gt;Для того чтобы сериализовать результаты выполнения запроса к RDF хранилищу в нужный нам формат в пространстве имен SemWeb.Query библиотеки SemWeb предусмотрен абстрактный класс QueryResultSync, а так же реализованы несколько его наследников:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;SparqlXmlQuerySynk, возвращающий результат запроса в виде XML документа содержащего исходный запрос и результат.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HTMLQuerySink, - возвращает результат в виде таблицы HTML&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CSVQuerySynk - как нетрудно догадаться возвращает результат в строку разделенную запятыми&lt;/li&gt;&lt;li&gt;QueryResultBuffer - класс который сохраняет результаты в три коллекции Variables, Bindings, и Coments&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;В случае если функциональности перечисленных классов нехватает для того чтобы возвратить результаты в необходимой нам форме, можно написать свою реализацию класса QueryResultSyn.&lt;/p&gt;&lt;code&gt;&lt;br /&gt;public abstract class QueryResultSink&lt;br /&gt;{&lt;br /&gt;public virtual void Init(Variable[] variables){}&lt;br /&gt;public abstract bool Add(VariableBindings result);&lt;br /&gt;public virtual void Finished() {}&lt;br /&gt;public virtual void AddComments(string comments) {}&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Примеры реализации лучше всего смотреть в коде самой библиотеки.</description><link>http://kopilkaz.blogspot.com/2009/02/semweb.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-966115793094224749</guid><pubDate>Mon, 02 Feb 2009 00:57:00 +0000</pubDate><atom:updated>2009-02-01T17:35:59.244-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">многопоточность</category><category domain="http://www.blogger.com/atom/ns#">синглтон</category><title>Cинглтон и многопоточность</title><description>Допустим у нас есть некий синглтон, который сохраняет свои состояния и работает как конечный автомат. И состояний этих у него много. Но допустим нам хотелось бы воспроизвести результаты его поведения в начальном состоянии. А как его в это состояние вернуть непонятно.&lt;br /&gt;В этом случае иногда может выручить многопоточность. &lt;br /&gt;&lt;code&gt;&lt;br /&gt;public delegate string GetXmlFromTestedDelegate(Person[] persons);&lt;br /&gt;private string GetXmlFromTested(Params[] params)&lt;br /&gt;{&lt;br /&gt;Singletone.Instance.Import(params);&lt;br /&gt;return Singletone.GetAllInXml();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void GetResultInXml()&lt;br /&gt;{&lt;br /&gt;GetXmlFromTestedDelegate asyncDelegate = GetXmlFromTested;&lt;br /&gt;IAsyncResult result = asyncDelegate.BeginInvoke(Params, null, null);&lt;br /&gt;while (!result.IsCompleted)&lt;br /&gt;{&lt;br /&gt; Thread.Sleep(50);&lt;br /&gt;}&lt;br /&gt;string xml = asyncDelegate.EndInvoke(result);&lt;br /&gt;&lt;br /&gt;Assert.That(xml,Is.EqualTo(GetEtalonXML()));&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;А может и не выручить... Это я к чему собственно?? А к тому, что не всякая реализация синглтона действительно синглтон.</description><link>http://kopilkaz.blogspot.com/2009/02/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5482123792423086980</guid><pubDate>Sat, 31 Jan 2009 01:53:00 +0000</pubDate><atom:updated>2009-01-30T18:17:27.539-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><title>Как узнать полный путь к файлу в приложении на ASP.Net?</title><description>&lt;p&gt;Исчерпывающее руководство по этому вопросу можно найти &lt;a href=&quot;http://msdn.microsoft.com/ru-ru/library/ms178116.aspx&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Основное же – это использование метода MapPath(), который прячется в таких классах как Control, Page, Server.&lt;/p&gt;</description><link>http://kopilkaz.blogspot.com/2009/01/aspnet.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-4186272533040811360</guid><pubDate>Fri, 30 Jan 2009 03:40:00 +0000</pubDate><atom:updated>2009-02-01T17:19:38.463-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">System.Reflection</category><title>Перебираем все свойства класса</title><description>&lt;p&gt;Иногда возникает задача перебрать все свойства некоторого класса. Задача очень просто решается при помощи рефлексии: &lt;code&gt;person.GetType().GetProperties();&lt;/code&gt; &lt;/p&gt;  &lt;p&gt;Этот код возвращает коллекцию PropertyInfo, из которой мы можем достать все необходимое.&lt;/p&gt;  &lt;p&gt;А вот пример кода возвращающего значение свойства объекта по имени свойства: &lt;code&gt;person.GetType().GetProperty(property.Name).GetValue(person, null)&lt;/code&gt;&lt;/p&gt;</description><link>http://kopilkaz.blogspot.com/2009/01/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3440514228829272358.post-5951163663619524385</guid><pubDate>Thu, 29 Jan 2009 16:32:00 +0000</pubDate><atom:updated>2009-01-29T19:44:58.753-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">System.Xml</category><title>Вывод XML в виде форматированного текста</title><description>Иногда возникает задача вывести некий Xml документ в строку, а иногда даже в виде текста на HTML страничке. Я нашел два похожих варианта решения.&lt;br /&gt;&lt;br /&gt;Вариант с использованием XmlTextWriter&lt;br /&gt;&lt;br /&gt;&lt;code&gt;StringBuilder builder = new StringBuilder();&lt;br /&gt;XmlTextWriter wr = new XmlTextWriter(new StringWriter(builder));&lt;br /&gt;wr.Indentation = 2;&lt;br /&gt;wr.IndentChar = &#39;\t&#39;;&lt;br /&gt;wr.Formatting = Formatting.Indented;&lt;br /&gt;&lt;br /&gt;//Этот запрос заполняет строку builder xml данными форматированными символами &quot;/t и /n&quot;&lt;br /&gt;ExecuteQuery(query, new SparqlXmlQuerySink(wr));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string s = builder.ToString();&lt;br /&gt;//А это нам понадобилось чтобы получить возможность вставить строку в HTML&lt;br /&gt;s.Replace(&quot;\t&quot;, &quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&quot;).Replace(&quot;&lt;&quot;, &quot;&amp;amp;lt;&quot;).Replace(&quot;&gt;&quot;, &quot;&amp;amp;gt;&quot;).Replace(&quot;\n&quot;, &quot;br&quot;)           &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Вариант с использованием XmlWriter&lt;br /&gt;&lt;br /&gt;&lt;code&gt;StringBuilder builder = new StringBuilder();&lt;br /&gt;XmlWriterSettings settings = new XmlWriterSettings();&lt;br /&gt;settings.Indent = true;&lt;br /&gt;settings.IndentChars = (&quot;\t&quot;);&lt;br /&gt;&lt;br /&gt;XmlWriter xmlWriter = XmlWriter.Create(builder, settings);&lt;br /&gt;&lt;br /&gt;//Заполняем builder XML кодом и опять получаем строку форматированную символами &quot;/t и /n&quot;     &lt;br /&gt;manager.Write(xmlWriter);&lt;br /&gt;&lt;/code&gt;</description><link>http://kopilkaz.blogspot.com/2009/01/xml.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item></channel></rss>