tag:blogger.com,1999:blog-2817532408458048142024-02-08T07:08:34.458+03:00Записки охламонаJust Oxlamonhttp://www.blogger.com/profile/05675229243651638296noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-281753240845804814.post-48120700540875999822011-02-08T12:59:00.004+03:002011-02-08T13:12:44.567+03:00Волшебный парсинг строки в число.Однажды появилась задача, пропарсить XML. Задача в общем-то простая и в легкую решаемая с помощью .Net. Но есть там небольшая заморочечка, значения некоторых атрибутов были в виде строки, а надо было загрузить их в виде числа. Все вроде просто пока, но строки эти были вида: res_in, res_out, res_inout и т.п. Быстрое и в лоб решение это либо использование switch или кучки if. Но учитывая, что подобных атрибутов было масса, код выглядел бы ужасно, а хотелось небольшого элегантного решения, и оно нашлось.<br /><pre name="code" class="cpp"><br />//Создаем Enum<br />enum AttributeValuesEnum: int{<br />res_in = 19,<br />res_out = 15,<br />res_inout = 35<br />}<br /><br />// Парсим<br />int ResTypeID = (int)(Enum.Parse( typeof(AttributeValuesEnum), atribute_string_value);<br /></pre><br />Минусов решения полно, зато быстро кодится и расширяется. Возможно кому-то и пригодится.Just Oxlamonhttp://www.blogger.com/profile/05675229243651638296noreply@blogger.com1tag:blogger.com,1999:blog-281753240845804814.post-92184171098604771532009-07-26T15:14:00.003+04:002009-07-26T15:39:21.580+04:00Silverlight + WCFВ общем-то только начал разбираться с указанными технологиями, и сразу с места в карьер да в стену. Запросы от Silverlight приложения не приходят до WCF сервиса, а ларчик в общем-то открывается просто. Нужно в корень приложения (там же где <span style="font-weight: bold;">web.config</span>) поместить следующий файлик: <span style="font-weight: bold;">ClientAccessPolicy.xml </span>вот с таким контентом:<br /><pre name="code" class="xml:collapse"><br /><access-policy><br /> <cross-domain-access><br /> <policy><br /> <allow-from headers="SOAPAction"><br /> <domain uri="*"><br /> </domain><br /> <grant-to><br /> <resource path="/" subpaths="true"><br /> </resource><br /> </grant-to><br /> </allow-from><br /></policy><br /></cross-domain-access><br /></access-policy><br /></pre><br />в общем-то его хватает. Конечно для разбора что тут и зачем уйдет дополнительное время, но я пока поверю на слово msdn-щикам.Just Oxlamonhttp://www.blogger.com/profile/05675229243651638296noreply@blogger.com0tag:blogger.com,1999:blog-281753240845804814.post-66066418289889283912009-06-10T07:05:00.001+04:002009-07-26T15:42:14.098+04:00Я открыл для себя GraphvizМного тысяч лет я искал программу способную рисовать графы, мне такая нужна была для всего, начиная от планирования личной жизни, заканчивая описанием работы программ. И все что я перепробовал до этого, мне не нравилось... И вот, нашел двиг от AT&T -<a href="http://ru.wikipedia.org/wiki/Graphviz">http://ru.wikipedia.org/wiki/Graphviz</a>. Пишешь <b>в тексте </b>команды, получаешь на выходе граф. пример:<div><span class="Apple-style-span" style="line-height: 19px;font-family:-webkit-sans-serif;font-size:13px;" ><pre style="border: 1px dashed rgb(47, 111, 171); padding: 1em; color: black; background-color: rgb(249, 249, 249); line-height: 1.1em;">digraph G{<br /> Рождение->Юность->Зрелость->Старость->Смерть;<br /> Юность->Смерть;<br /> Зрелость->Смерть;<br />}</pre></span></div><div>получаешь на выходе готовый граф.<br /><br /><br /></div>Just Oxlamonhttp://www.blogger.com/profile/05675229243651638296noreply@blogger.com0tag:blogger.com,1999:blog-281753240845804814.post-13710790957456434222009-05-21T07:07:00.000+04:002009-05-21T07:11:39.738+04:00Python refcard<div style="text-align: justify;">Просто захотел поделиться refcard (шпаргалка по возможностям) для питона. Часто такие штуки очень помогают. Собственно pdf-ку, брать <a href="http://users.physik.fu-berlin.de/%7Egoerz/blog/wp-content/uploads/2008/09/python_refcard.pdf">тут</a>, а блог автора <a href="url=http://users.physik.fu-berlin.de/%7Egoerz/">тут</a>. Если перейти по тегу refcard, поучим множество шпаргалок.</div>Just Oxlamonhttp://www.blogger.com/profile/05675229243651638296noreply@blogger.com0tag:blogger.com,1999:blog-281753240845804814.post-30213804976950014972009-05-19T13:40:00.001+04:002009-07-26T15:44:04.996+04:00Стиль Mac'овских окошек для WPF<div style="text-align: justify;">WPF Великая и могучая технология, в общем-то это ясно и без меня. Но в сети очень маленькое кол-во информации про это чудо. Вот восполняю этот пробел рунета. Начнем с простейшего. Стиль окошка. Причем я выбираю Metal brush. Сделать ее оказалось достаточно просто. Для начала я оч. рекомендую поставить себе маленькую програмку KaXaml, взять ее можно вот отсюда: <a href="http://www.kaxaml.com/">http://www.kaxaml.com/</a>. Программа служит для более быстрого написания WPF кода. Лучшая из бесплатных. Я вообще очень расчитываю что минимальное знакомство уже есть с XAML. поэтому особливо не изъясняюсь. В итоге мы должны получить что-то подобное:<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRL2crzxpADhIdf3pus41d9sQ7pW-QqWbWOoxGYfN6VIjqPL4HdOitTWYPAUjnuLiKSTqhdGr_6x7WIZpZrekE804lVA81xm16pr1StDdA8IU91OK4tcAGXve9uy4z1JxsIVD396dBf4A/s1600-h/imac.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 352px; height: 260px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRL2crzxpADhIdf3pus41d9sQ7pW-QqWbWOoxGYfN6VIjqPL4HdOitTWYPAUjnuLiKSTqhdGr_6x7WIZpZrekE804lVA81xm16pr1StDdA8IU91OK4tcAGXve9uy4z1JxsIVD396dBf4A/s320/imac.png" alt="" id="BLOGGER_PHOTO_ID_5337473301811867154" border="0" /></a>Картинка она всегда, лучше дополнительных описаний ;). В начала трик, без которого я так и не смог подступиться к подобному стилю. Загружаем <span style="font-weight: bold;">Photoshop </span>ну или я использовал к примеру <span style="font-weight: bold;">Paint.Net</span>. И создаем там картинку размером 256x256 px, (я фанат степеней двойки, привыкайте), с белым фоном. Далее добавляем монохромный шум (noise). И потом просто применяем фильтр <span style="font-weight: bold;">Motion Blur</span> по вертикальному направлению. Вуаля текстурка на первый взгляд готова, но нет. Она не тайловая. Если вы приложите две таких текстурки рядом край (шов) будет сильно виден. Это не есть гут. К счастью проблема очень просто решается. Добавляем слой и копируем на него предыдущий, но по кусоч<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPpzZ3NINLMf5kbH8Q9Hz3DsbuIWNpKog9Wo2e4tPOE_Pd6CzDj-mbGUqq_FIGBPSpUiUEUKIIt0X1R0jbLQv97xM5puiLb2rZ8gMKtjtvH47QjNpCkYWO8JO9k5dmbNV_qr7b0UzSX64/s1600-h/22.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 144px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPpzZ3NINLMf5kbH8Q9Hz3DsbuIWNpKog9Wo2e4tPOE_Pd6CzDj-mbGUqq_FIGBPSpUiUEUKIIt0X1R0jbLQv97xM5puiLb2rZ8gMKtjtvH47QjNpCkYWO8JO9k5dmbNV_qr7b0UzSX64/s200/22.jpg" alt="" id="BLOGGER_PHOTO_ID_5337476684388996530" border="0" /></a>кам. вот так:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjir8937vdK2NrTXctdh2-ZabFFC_zSGWgIR5sqf2CY9qUSPcA9MFlkoWkWT1TkEXeGkLhu_uywxcx8ePNX7Fi-6FLVEtbM1wPTbU3A2pmCsn7ZwOZyNiDT9QAWGhdW2OblmBkNFm2BH0M/s1600-h/1.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 144px; height: 144px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjir8937vdK2NrTXctdh2-ZabFFC_zSGWgIR5sqf2CY9qUSPcA9MFlkoWkWT1TkEXeGkLhu_uywxcx8ePNX7Fi-6FLVEtbM1wPTbU3A2pmCsn7ZwOZyNiDT9QAWGhdW2OblmBkNFm2BH0M/s200/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5337475527690001346" border="0" /></a>Слева то что у нас было после применения фильтра <span style="font-weight: bold;">Motion Blur</span>, а вот справа как раз то, что получилось после копирования на новый слой. Не знаю, видно ли что по центру второй картинки как раз виден тот самый мерзкий шов. В общем как бы то ни было, теперь просто ластиком с мягкими краями стираем швы, и у нас начинает просвечивать тот слой, который мы оставили снизу. Но швы абсолютно исчезли. Лепота. Теперь, мы можем как угодно повторять полученную текстуру, швов никто не увидит. А если увидит, то значит вы сделали не правильно. В общем. Теперь у нас есть та самая текстура имитации металла.<br />Теперь едем в XAML.<br /><br />В ресурсах создадим нашу кисточку которой будем заливать фон:<br /><pre name="code" class="xml:collapse"><br /><imagebrush key="MetalBackgroundBrush" viewport="0,0,256,256" viewportunits="Absolute" tilemode="Tile" imagesource="metal_bg.png"><br /></pre><br />Здесь мы только указали, то "окошко" на текстуре, которое мы будем повторять, ну и собственно саму текстуру. Если вы работаете в KaXaml, то можете указать полный путь к вашей текстуре, и она появится. Есть только один минус, поменять без выключения KaXaml эту текстурку не получится. Это подло, но это так. Далее полный код фона:<br /><pre name="code" class="xml:collapse"><br /><grid><br /> <Border CornerRadius="4" BorderBrush="#11000000" BorderThickness="0,0,1,1"<br /> Background="{StaticResource MetalBackgroundBrush}"<br /> <border.bitmapeffect><br /> <dropshadowbitmapeffect shadowdepth="4" direction="-35"><br /> </Border.BitmapEffect><br /> </border><br /> <border borderbrush="#eeffffff" borderthickness="1,1,0,0" cornerradius="4"><br /> <border borderbrush="#aa000000" borderthickness="0,0,1,1" cornerradius="4"><br /> <border.background><br /> <lineargradientbrush startpoint="0,0" endpoint="1,0"><br /> <gradientstop color="#44000000" offset="0"><br /> <gradientstop color="#33ffffff" offset="0.5"><br /> <gradientstop color="#44000000" offset="1"><br /> </lineargradientbrush><br /> </Border.Background><br /> </border><br /></grid><br /></pre><br /><br />Большинство из здешних Border только для красивого эффекта объема. Но самый основной, это LinearGradientBrush, вот тот самый миниэлемент который не дает чувствовать тайловость исходного фона. Трик.<br />Этого всего достаточно для создания панелек в таком металлическом стиле. Далее мы рассмотрим создание цельного окна в таком стиле.</div>Just Oxlamonhttp://www.blogger.com/profile/05675229243651638296noreply@blogger.com0