Не так давно приобрел калибратор монитора Spyder2Express для, очевидно, калибрования и настройки цветового профиля монитора, в особенности - монитора ноутбука.
Для чего это нужно? Нужно это, чтобы фотографии отображались как можно ближе к тому, как они будут выглядеть на печати/в жизни. Также оказывается, что правильно обработанные (в смысле цвета) фотографии лучше выглядят и на обычных, некалиброванных мониторах.
После покупки (за 2990 рублей) выяснилось, что софт, шедший с собственно прибором, является самой урезанной версией - большая часть возможностей просто отключена. Хотите больше? Не вопрос. Доплатив еще порядка 4,5 тыщ, можно проапгрейдиться прямо на сайте производителя. Но при этом сам дистр в свободном доступе, увы, не лежит. Пришлось искать. Линк можно найти на странице ссылок. Кому не страшно - может попробовать найти в интернетах кряк. Но, если вам данный софт понравился, конечно, лучше его приобрести легально.
ЗЫ Да, все три версии (Express, Suite и Pro) комплектуются одной моделью сенсора.
Калибратор Spyder2
•день 18, месяц Октябрь, лето 2008 • Комментариев нетроли в DotNetNuke
•день 22, месяц Сентябрь, лето 2008 • 1 комментарийИтак, страницы и пользователи у нас программно создаются. Самое время заняться распределением прав на страницы.
На самом деле, задача решается не совсем тривиально, поэтому буду давать детальные пояснения по коду.
Также следует добавить, что, в 4.5.1 (и позднее) есть группы ролей (RoleGroups). Скорее всего, целесообразно будет добавлять новые роли в какую-нибудь группу.
Ну, поехали.
var rc = new RoleController();
//find rolegroups
var rolegroups = RoleController.GetRoleGroups(PortalId);
var rgId = -1;
//find a rolegroup where to add role. -1 goes for Global Roles
foreach (RoleGroupInfo rg in rolegroups)
{
if (rg.RoleGroupName.Equals("GroupName"))
{
rgId = rg.RoleGroupID;
break;
}
}
Здесь всё понятно - создаем объект контроллера, который ищет группу ролей GroupName. Имя группы, понятно, надо заменить на реальные.
var roleinfo = new RoleInfo(); roleinfo.RoleName = "Role Name"; roleinfo.PortalID = PortalId; roleinfo.RoleGroupID = rgId; rc.AddRole(roleinfo);
тут тоже всё стандартно.
var tc = new TabController(); var tInfo = tc.GetTab(tabid, PortalId, true);
находим страницу, которой присваиваются роли на чтение и редактирование
var tpInfo = new TabPermissionInfo(); tpInfo.AllowAccess = true; tpInfo.RoleID = roleinfo.RoleID; tpInfo.RoleName = roleinfo.RoleName; tpInfo.PermissionID = 3; //view tpInfo.TabID = tInfo.TabID; tInfo.TabPermissions.Add(tpInfo);
Начинается “нетривиальность”. Чтобы добавить роль на страницу, надо создать объект TabPermissionInfo, затем указать id и имя нашей созданной роли (она должна быть уже добавлена в общую коллекцию ролей!), затем указать id разрешения - то есть какое конкретно действие мы разрешаем. для страниц это 3 - view и 4 - edit. Для каждого действия должен быть добавлен свой объект TabPermissionInfo. Также обязательно надо указать id страницы, иначе будет исключение. В конечном итоге добавляем объект в коллекцию разрешений страницы.
После того, как мы добавили все нужные нам разрешения, нужно сохранить изменения:
tc.UpdateTab(tInfo);
Без этого ничего работать не будет!
Делегирование пользователю роли происходит тривиально:
rc.AddUserRole(PortalId, userid, roleinfo.RoleID, Null.NullDate);
Программное создание пользователя в DotNetNuke
•день 19, месяц Сентябрь, лето 2008 • Комментариев нетВ данном посте рассмотрим, как создать пользователя в DotNetNuke 4.5.1, используя собственный контрол.
Первое, что нужно знать - контрол, в code behind которого мы будем добавлять нового пользователя, должен быть унаследован не от PortalModuleBase (как обычно), а от UserUserControlBase. Это важно!
Далее, нужно создать объекты классов UserMembership и UserProfile:
var usermembership = new UserMembership(); usermembership.CreatedDate = DateTime.Now; usermembership.Email = email; usermembership.Username = username; usermembership.Password = password; usermembership.Approved = true; usermembership.LockedOut = false; var userprofile = new UserProfile(); userprofile.FirstName = username; userprofile.LastName = "";
тут указаны только обязательные к заполнению поля объектов. Остальные можно заполнять или не заполнять - по вкусу.
Далее, заполняем собственно объект класса UserInfo. Далее в коде использовано свойство, определенное в UserUserModuleBase - User.
User.Membership = usermembership; User.Profile = userprofile; User.Username = username; User.FirstName = userprofile.FirstName; User.LastName = userprofile.LastName; User.DisplayName = username;
Затем вызываем собственно функцию создания пользователя. Так как эта функция принимает объект с модификатором ref, приходится создавать новый объект:
var uinfo = User;
var ucs = UserController.CreateUser(ref uinfo);
if (ucs != UserCreateStatus.Success)
{
//error occured
}
Далее - неочевидный, но важный кусок кода (без него пользователь не создастся):
var uceargs = new UserCreatedEventArgs(User);//defined in UserUserControlBase uceargs.Notify = false;//no user notification uceargs.CreateStatus = ucs; //next two methods defined in UserUserControlBase OnUserCreated(uceargs);//generates UserCreate event OnUserCreateCompleted(uceargs);//generates UserCreateComplete event
Пользователь создан. Теперь нужно раздать пользователю соответствующие роли. Об этом - в следущем посте.
Программное создание страниц в DotNetNuke
•день 12, месяц Сентябрь, лето 2008 • Комментарии (2)Как программно создать страницу в DotNetNuke (С#):
Нижеследующий код создает страницы в DNN. Страницы являются дочерними (child) по отношению к RootTab. Затем применяется шаблон страницы. Как сделать шаблон страницы, написано здесь.
var tc = new TabController();
var newtab = new TabInfo();
//если вы не хотите использовать корневую страницу,
//можно вместо roottab брать Activetab
var roottab = tc.GetTabByName("RootTab", PortalId);
newtab.IsVisible = false;
newtab.PortalID = PortalId;
newtab.ParentId = roottab.TabID;
newtab.TabName = "name";
newtab.Title = "name";
newtab.TabPermissions = roottab.TabPermissions;
newtab.SkinSrc = roottab.SkinSrc;
newtab.SkinPath = roottab.SkinPath;
newtab.ContainerPath = roottab.ContainerPath;
newtab.ContainerSrc = roottab.ContainerSrc;
newtab.TabPath =
DotNetNuke.Common.Globals.GenerateTabPath
(newtab.ParentId, newtab.TabName);
//собственно, добавляем страницу
tc.AddTab(newtab);
//дальше мы применяем шаблон.
//Первая хитрость - снова находим страницу,
//чтобы узнать ее TabID
newtab = tc.GetTabByName(name, PortalId);
//загружаем шаблон. Это XMLка
var XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath(
Page.TemplateSourceDirectory +
@"/Portals/_default/Templates") +
@"\pagetemplate.page.template");
//считывает информацию с шаблона
//у нас PortalController!!!
var pc = new PortalController();
pc.ParsePanes(XmlDoc.SelectSingleNode(
@"//portal/tabs/tab/panes"),
newtab.PortalID, newtab.TabID,
PortalTemplateModuleAction.Ignore,
new Hashtable());
//всё. шаблон применен.
Как сделать page template в DotNetNuke
•день 12, месяц Сентябрь, лето 2008 • 1 комментарийВозможно, кого-то мучает вопрос - как создавать макеты страниц (page templates) в DotNetNuke? Рассказываю.
В начале, понятно, надо сделать страницу, с которой будем снимать шаблон. Этот этап я опускаю ![]()
К сожалению, на данный момент в DotNetNuke отсутствует возможность создавать шаблоны страниц отдельно. Можно только создать шаблон целиком портала. Для этого:
- залогиниться под хостом,
- зайти на вкладку portals (если вы не знаете где это - можете спросить в камментах),
- Нажать кнопку Export Portal Template,
- Выбрать портал и указать имя файла, не забыть проставить галку в Include Content
- Нажать собственно Export Template
Всё - шаблон портала со всеми страницами готов. Скорее всего, он сохранен в подпапке _default папки Portals. Так как шаблон представляет собой XMLку, следующее, что нам надо сделать - убить всё лишнее. Это можно сделать в любимом текстовом редакторе ![]()
Оставить нужно следующую структуру (вместо квадратных скобок, понятно, треугольные):
[portal]
[description][/description]
[tabs]
[tab] - вот тут надо оставить только ту страницу, с которой и делаем шаблон
….тут все pane-ы и модули с содержимым.
[/tab]
[/tabs]
[/portal]
В принципе - нам надо привести файл к виду, похожему на дефолтный шаблон, лежащий в Portals/_default/Templates.
Далее шаблон называем [имя].page.template и складываем рядышком с дефолтным, в папку Portals/_default/Templates.
Всё.
Этот шаблон можно использовать для создания страниц, как в админке, так и программно.
Как установить приложения для Windows XP на Windows Server 2003
•день 4, месяц Сентябрь, лето 2008 • Комментарии (6)Итак. Берем софтину от Microsoft под названием Application Verifier. Устанавливаем.
Как я понял, данная программа предназначена для тестирования приложений в условиях различных осей, переменных окружения, COM-объектов и прочего. Понятно, что устанавливать кучу разных осей для этих целей может (легально) только программист микрософта, да и то - не всегда.
Далее. Запускаем ее. Добавляем через File->Add Application файл setup.exe из установочной папки Photoshop’а. В правом окне появится список доступных опций. Снимаем все галочки, кроме Compartibility -> HighVersionLie
Дальше правой кнопкой на HighVersionLie и открываем properties.
В появившейся таблице проставляем значения:
major version 5,
minor version 1,
build number 2600.
Advanced:
service pack major 2,
service pack minor 1
Остальные оставляем пустыми, сохраняем.
Запускаем Setup…. Вуаля!!!!! Немного тормозит, но мы ведь уже особо не торопимся, верно?
http://forum.rudtp.ru/showthread.php?t=27761
Также опубликовано на 0-stalker-0.livejournal.com, stalker-notes.blogspot.com
