четвер, 25 жовтня 2012 р.

Нестандартный диалог настроек Андроид.

Android - Настройки приложения

 В андроиде существует мощный фреймворк для работы с настройками приложения. Как говорит http://developer.android.com, надо стремиться к использованию оного, дабы пользователь мог контролировать приложение стандартным способом, а не конфузиться в интерфейсе уникальном и непознанном :-) Для настроек, значения которых описываются простыми типами (будь то строки, буль или число), Preference API справляеться "на ура", однако в жизни часто так бывает, что для всеобъемлющего счастья нехватает самую малость - чуть больше, чем есть сейчас :) Итак, сегодня поговорим о том как организовать интерфейс для сохранения более комплексных сущностей. Предположим, мы создаём некое клиентское приложение, в настройках которого надо реализовать возможность ввести адрес вебсервиса. Как известно - веб-адрес имеет следующую структуру:
Символьное_Имя_или_IP_адрес[:Порт(не обязательно)]
Отсюда следует, что у нас настройка "адрес" будет состоять из двух частей - собсно адреса и порта. Итак, начнём...

середа, 11 січня 2012 р.

PDF + .NET
Довольно часто у заказчиков возникает шальная мысль прикрутить к разрабатываемому сайту модуль репортов, и чтоб данные не просто выводились на экран - но чтобы их обязательно можно было сохранить в каком-нить интересном формате. Это может быть либо Microsoft Excel (благо эту блажь достаточно легко реализовать - мелкософтяне выдумали xml формат, который поддерживается начиная с Excel 2003 (глядеть здесь)), а иногда заказчик даже знает о существовании Pdf. К счастью для нас с Вами, в этом случае - как и в предыдущем, мы легко можем обойтись без проприетарных библиотек для формирования документов.

четвер, 8 грудня 2011 р.

[Поле для ввода пароля - пустое!]
Суть проблеммы - поле TextBox (type="password") - на админ-странице пустое, хотя на сервере значения текста устанавливаеться. Пустое поле наводит на пользователя мысль, что пароль не установлен вообще, отсюда вечные проблемы, связаные з желанием пользователя всунуть свои ручки не туда куда надо, и сделать таким макаром доброе дело... скрытие пароля из текстбокса - это фитча, умышленно внесённая разработчиками, призванная, в прынципе повысить безопасность страниц, предотвращая кражу пароля, простым просмотром исходника страницы в браузере. Все-таки заставить показать звёздочки в поле пароля можно применив следующий код:
[myTextBox.Attributes.Add("value","myRobustPassword");]

понеділок, 21 листопада 2011 р.

Вызов .NET кода из ASP страницы
Итак, возникла необходимость вызывать функционал, написанный на .NET из существующей asp-страницы. Для того, чтоб работал следующий стандартный VB 6 код:
<%@Language="VBScript" %> <% Dim testObj Set testObj = server.createObject("testlib.Test") Response.Write(testObj.TestFunc()) Response.End() %>
надо сделать следующее:

1. Скомпилировать сборку, с включенными флагами Properties -> Application -> Assembly Information -> Make Assembly COM-visible и Properties -> Signing -> Sign the assembly (создаем новый или выбираем существующий файл строгого имени в выпадающем списке 'Choose a strong name key file')
 2. Создаем библиотеку типов для свежескомпилированной сборки: regasm testlib.dll /tlb:testlib.tlb
 3. Регистрируем сборку: regasm testlib.dll
 4. Помещаем её в GAC: gacutil /i testlib.dll (К сожалению у меня на этом шаге гакутыл постоянно падал, чесно говоря, что случился Unknown Error, по-этому пришлось внести её туда вручную - открыл проводником папку C:/Windows/Assemblies и просто перетащить мышкой мою сборку)
 5. Создать COM сервер, и поместить в него приложение - нашу библиотеку. Всё. На этом этапе можно смело создавать тестовую страничку, подымать локальный веб сервер, и смотреть чего получилось :-)

понеділок, 17 жовтня 2011 р.

Округление числа в xslt

Округляем число в xslt
<xsl:value-of select="floor(sum(./ClientSite/@RosteredMins) div 60)" />
В данном примере, если сумма аттрибутов будет равна, к примеру 96, в результате преобразования получим число 1 (наименьшее целое из 96 div 60, которое почему-то равно 1,6 :-) )

пʼятниця, 7 жовтня 2011 р.

Разрыв страницы средствами CSS (печать)

Как организовать разрыв страницы с помощью CSS
<div style="page-break-after:always;">Какой-то блок контента</div>
<div style="page-break-after:always;">Какой-то другой блок контента</div>


В данном примере, другой блок контента будет размещен на новой странице - во время печати.

четвер, 8 вересня 2011 р.

Флаги Enum в .NET

Установка/проверка значений битовых флагов VB.NET:
_
Enum Colors As Short
Black = 0
Red = 1
Green = 2
Blue = 4
End Enum

Sub SomeFunc()
'Устанавливаем значение
Dim _MyFlags As Colors = Colors.Red Or Colors.Blue

'Проверяем
If (_MyFlags And Colors.Green) = Colors.Green Then
'Зелёный установлен, делаем что-то
Else
'Зелёный не установлен. Делаем что-то другое (в этом примере будет исполнена именно эта ветка)
End If
End Sub