пятница, декабря 18, 2009

Сюрпризик

Теперь – от поля SPFieldUser. Оказалось, что поведение поля существенно зависит от значения свойства AllowMultipleValues. Например, при значении true обращение к данным элемента списка с таким полем (item[fieldName]) приводит к получению объекта типа SPFieldUserValueCollection (как, собственно, и можно ожидать). Однако при значении AllowMultipleValues == false тип полученного объекта – вовсе не SPFieldUserValue, а String.

Похоже, кто-то где-то лишний раз ToString() присобачил…

Technorati Tags:

среда, декабря 02, 2009

Забавное…

Выяснилось <здесь должна быть ссылка на форум GDN, но он упал и не поднимаетсяthumbs_down>, что для сохранения результатов редактирования элемента списка пользователю требуется разрешение на …удаление. Проверить просто – чуть-чуть измените настройку уровня разрешений “Чтение”: 

editnotdelete

После этого попробуйте выполнить редактирование и сохранение под пользователем, имеющим такой уровень разрешений. Несколько весёлых минут… clap

Technorati Tags:

четверг, ноября 19, 2009

Visual Studio 2010 и Sharepoint 2007

Задался целью выяснить, можно ли обойтись одной Студией (желательно, 2010-й) для разработок (хотя бы, для модификаций имеющихся) – веб-частей, утилит, рабочих процессов и т.д. для текущей версии Sharepoint (до использования новой версии и разработок для неё когда ещё дело дойдёт…). Выяснилось, что новая Студия вполне спокойно относится к проектам, сделанным в Студии 2008 без использования VSeWss – их можно редактировать, компилировать и делать другие необходимые действия. Даже можно включить использование .NET 4.0, правда, исполняться полученный код не станет smile_sad. При отладке нужно переключить версию отлаживаемого управляемого кода на 2.0 (по умолчанию используется 4.0, а они вместе отлаживаться не могут).

nets

Для разработок же под Silverlight новая Студия намного удобней – в неё включили часть функциональности Expression и отпала необходимость прыгать между приложениями.

В общем, можно потихоньку переползать на Студию 2010 – по крайней мере, выглядит она “красивше”. Правда, новый Help 3.0 не нравится совсем: с запуском дополнительного web-сервера примириться ещё можно, но вот демонстрация материала в окне браузера раздражает очень сильно - вызывается не новый экземпляр браузера, а тот, который был запущен последним (правда, на собственное окно браузера почем-то внимания не обращается). [А я для удобства работы использую несколько рабочих столов и появление браузера с другого стола генерирует не очень печатные слова…]. Спишем пока что на бету.

Technorati Tags: ,

среда, ноября 18, 2009

Sharepoint 2010, установка

Да, интересное занятие получила Шарепойнт-тусовка с выходом бета-версии. Занятие сопровождается большой радостью – версия сразу на многих языках, русском в том числе. Пока что этим радость и исчерпывается smile_sad.

В общем, получить что-то работающее на моём компьютере удалось только с четвёртой попытки. Установка на Windows 7 (по инструкции с MSDN) началась довольно бодро, но установщик предложил выполнить обновление существующей версии WSS 2007. Пришлось отказаться – работать, всё же, на чём-то надо…

Эксперименты продолжились на Server 2008 R2 в VirtualBox (почему-то Windows Virtual PC не признаёт 64-битных гостевых систем…) с памятью 2 ГБ.

Так, установить office sharepoint server 2010 удалось, но открыть даже страницу Центра администрирования не получилось – явно ресурсов маловато.

Установить office sharepoint foundation server 2010 (SPF, так теперь придётся WSS называть) привычным образом (как ферму с использованием своей установки SQL Server 2008) не получилось – мастеру настройки не понравилось, что предлагаемый ему пользователь не является доменным, а поднимать на виртуалке домен в мои планы пока что не входит…

В итоге пришлось ограничиться “автономной” установкой SPF 2010. Чемпионских скоростей работы не наблюдается, но для экспериментов сойдёт…

Одно хорошо – обнаружилась веб-часть “Веб-часть Silverlight”, с такой же практически функциональностью, что и SilverLight App Launcher.

Technorati Tags: ,

суббота, ноября 14, 2009

Запуск SilverLight-приложений на страницах Sharepoint

В процессе глубоко научных попыток использовать SilverLight в пользовательском интерфейсе собственных разработок получилась веб-часть общего назначения для запуска SilverLight-приложений на Шарепойнт-страницах. Собрал туда разные идеи из блогов и др. источников и выложил вместе с исходниками. Может, ещё кому пригодится…

Technorati Tags: ,

пятница, ноября 13, 2009

Отображение иерархических данных

Вывесил веб-часть HieView для вывода на страницу таких данных, содержащихся в списках Шарепойнта. Часто на форуме спрашивают, особенно новички: первая задача, которую им начальство ставит – изобразить оргструктуру предприятия. Пускай пользуются…
Technorati Tags:

Пятница, 13-е или Live Writer

Не могла эта 13-я пятница просто так пройти… Выяснилось, что не запускается Writer, молча закрывается, и фсё… Один раз пообещал сказать, в чём дело, если решение разыщет, но пока молчит.thumbs_down

Пришлось самому. Восстановление/переустановка не помогли, помогла попытка запуска от имени другого пользователя – запустился и захотел настраиваться. Осталось порыться в собственном профиле, и в файле "C:\Users\DkmS\AppData\Local\Windows Live Writer\Windows Live Writer.log" обнаружить причину явно неадекватного поведения примочки – не смогла обнаружить папку для черновиков, заданную в настройках. Ну да, не было такой папки (машину модернизировал, диски менял, вот и пропалаsmile_embaressed), но это вовсе не повод молча заваливаться…

Поотрывать бы “программерам” примочки всё, что отрывается…smile_angry

Technorati Tags: ,

среда, октября 14, 2009

Маленький такой сюрпризик

Казалось бы, два определения свойства эквивалентны:

   1: public StyleOfViewList ListViewStyle {
   2:     get { return listviewstyle; }
   3:     set { listviewstyle = value; }
   4: }
   5: StyleOfViewList listviewstyle = StyleOfViewList.GridStyle;
и
   1: public StyleOfViewList ListViewStyle { get; set; }

Тип свойств – обыкновенное перечисление

   1: public enum StyleOfViewList : byte { GridStyle = 1, PackedStyle = 2 }

Действительно, Рефлектор показывает для обеих конструкций практически одинаковый код, да и опыт с документацией подсказывают, что должно быть без разницы, какую из конструкций использовать… И так оно и есть, пока вторая конструкция не использована в определении свойства веб-части (с атрибутом [WebPartStorage]) – такая веб-часть становится неработоспособной.
Замена на первую конструкцию излечивает проблему. Нда…

Technorati Tags: ,

вторник, октября 06, 2009

Очередная попытка, бесплодная…

В очередной раз пытаюсь найти решение возникшей на ровном месте задачи получения информации с удалённых узлов Шарепойнта.

Собственно, особого разнообразия вариантов и нет – к неработающему способу обращения по механизму WebServices добавляется способ с использованием WCF. Смотрим, что получится:

   1: string endPointUrl = url.TrimEnd("/".ToCharArray()) + "/_vti_bin/Lists.asmx";
   2: ListsSoapClient client = new ListsSoapClient("ListsSoap", endPointUrl);
   3: client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
   4: client.ClientCredentials.Windows.AllowNtlm = true;
   5: client.ClientCredentials.Windows.ClientCredential = new NetworkCredential(); 
   6: // from http://blogs.msdn.com/kaevans/archive/2009/03/10/calling-sharepoint-lists-web-service-using-wcf.aspx
   7: client.Open();
   8: XmlNode tst = null;
   9: try {
  10:     tst = client.GetListCollection();
  11:     Console.WriteLine(string.Format("success: {0} bytes", tst.OuterXml.Length));
  12: } catch (Exception err) {
  13:     Console.WriteLine(string.Format("error: {0}", err.Message));
  14: }


Результат, собственно, тот же, что в предыдущем опыте – локальные узлы (находящиеся на том же компьютере, откуда делается запрос, и на компьютерах, виртуальных или физических, в локальной сети) отдают данные как ожидается, при обращении к удалённым узлам (заведомо имеющим NTLM аутентификацию и разрешённый анонимный доступ) получаем исключение с сообщением “The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'”. Весьма информативно, да…

Раскопки показывают, что народ с этим тоже пытается как-то бороться (безуспешно, впрочем), а корень зла описан в KB-статье. Оказывается, это борются так с “отражёнными атаками”, которые неизвестно, бывают ли, но средство борьбы надёжное – фиг прорвёшься. Что называется, лес рубят – щепки летят.

В общем, фантазия иссякает… Осталось попробовать водрузить на сервер свой сервис и пытаться через него как-то передавать нужное, но это никак не поправит ситуации, когда удалённый сервер – чужой.

Technorati Tags: ,

суббота, сентября 19, 2009

Белый пушистый сюрприз

Выяснилось, что при обращении по адресу наподобие http://server/site/folder/file.aspx?id=N вне зависимости от содержания файла file.aspx происходит переход на N-й файл в папке folder. Особенно умиляет диагностика, когда N превышает количество файлов – в адресной строке браузера написано то, что и должно быть, а на странице ошибок Шарепойнт – что такой страницы нет или она изменена другим пользователем.

image

А я таким способом пытался в веб-часть на странице передать ID элемента списка… В общем, хотелось бы на умника посмотреть, который такую гадость придумал. Причём и в новом WSS 4 наблюдается такое же поведение.

Technorati Tags: ,

понедельник, июля 20, 2009

Windows 7, установка “тяжёлого” софта

Цель - сделать рабочий компьютер для "жизни" и для разработки под Шарепойнт. И, конечно, для тестирования  Office 2010 и WSS 4.

Порядок установки пакетов (именно так, чтобы была свобода в размещении файлов программ, особенно VS):
  • Visual Studio 2008 + sp1
  • SQL Server 2008 + sp1
  • Office 2007 ultimate + sp2
  • SharePointDesigner 2007 + sp2
В итоге - офисные программы с такими примерно версиями:
 
8ba3ce6147560f91af903d891fc55de1
 
Синхронизация с моим мобильником Qtek работает и по OneNote, и по Outlook clap, системный диск содержит 29 Гб данных (включая 7 Гб под файлами hiberfil.sys и pagefile.sys). Можно приступать к упражнениям с Office 2010 и WSS 4. smile_speedy
 
Technorati Tags: ,

Windows 7, переустановка.

Всякие-разные эксперименты на системой привели к достаточно печальным последствиям. В частности, расстроилась синхронизация данных с мобильником – с OneNote синхронизируется, с Outlook – ни в какую. Google, правда, рассказал, что я тут не одинок, много народу от подобного страдает. Никакие попытки реанимации типа сноса/переустановки/ковыряня_реестра не помогли.

В общем, пришёл к выводу, что систему пора переустанавливать. Вдобавок пришло приглашение поучаствовать в тестировании новых версий Офиса и Шарепойнта, для чего расхристанная система вряд ли годится.

Действие 1 - Установка поверх существующей установки в попытке сохранить софт и настройки.

Метод испытанный поколениями, не было оснований не надеяться на удачный результат. Поэтому из существующей установки запустил дистрибутив, он бодро взялся устанавливаться в режиме upgrade, предупредив, правда, что потом не будет работать русский LangPack, Daemon Tools и Sharepoint. Но дальнейшие события сильно отличались от ожидаемых (основываясь на опыте подобных операций с Windows 95/98/2000/XP/2003).

Примерно час выполнялась операция типа "Сбор данных для переноса", что это за фигня действие - неведомо, но статус показывал, что набралось около 200 тыс. единиц этого.

Установка самой системы прошла достаточно быстро (собственно, как обычно), после этого примерно 2 часа шло восстановление “даннных для переноса”. Таких “данных” было около 800 тыс. (!?) единиц. Откуда взялось, неведомо...

После установки выяснилось, что зачем-то изменились права на диски с данными (точнее, с них удалены права для Everyone) и доступа к ним ни у кого нет. Пришлось пытаться "овладевать" ими и настраивать нужные права. В процессе оказалось, что глубоко лежащие папки почему–то брыкаются на предмет отсутствия доступа... После двухчасовой возни пришёл к выводу, что проще систему восстановить из бекапа и дополнить нужным софтом.

Однако фокус не удался smile_sad - установщик в процессе "update" что-то делал с диском, раздел диска стал каким-то не таким и используемая для бекапа программа Active Disk Image восстановления системного раздела сделать не сумела...heart_broken О бекапе системного диска/раздела – отдельно попозже.

Действие 2. - установка начисто и обустройство.

Запустил дистрибутив с компакта, его средствами удалил кривую партицию и в освободившееся место установил новый экземпляр Windows-7 RC.

Установку всякого софта делал, по преимуществу, не на системный диск - бекапить меньше да и из других Осей можно попользоваться:

  1. Сразу после установки запустил не получавшуюся ранее установку виртуальной машины для Windows 7. Установилась, но криво - мастер создания новых машин установился, но без ярлыка в меню: пришлось искать программку (нашлась в system32) и ярлык самому делать. Более пристальное рассматривание не выявило признаков работы с x64-системами, сделал испытанную штуку – установил Server 2008 x64 в VirtualBox 3.0.2. А там посмотрим.
  2. Установились драйверы/апдейты - много чего сразу притащило, в т.ч. русский LangPack.
  3. Установил необходимые для жизни мелочи - Avira Personal, Daemon Tools Lite, разные gadgets, nncron, ditto, gladinet, архиваторы, RoboForm, LastPass.
  4. Для Интернета и Шарепойнта - FireFox 3.5, Safari 4, IE7Pro, Digsby, Windows Live, WindowsLiveSync.
  5. Клиенты DynDNS и No-IP сервисов

В итоге система заняла на диске ок. 18 Гб (включая 7 Гб. pagefile и hiberfile).

Technorati Tags:

Органайзеры (OneNote и EverNote)

Вполне похожие по функциям и возможностям, не считая мелочей типа бедноватого редактора текста в Evernote. Даже бесплатностью похожи - с апреля 2009 г. OneNote 2007 входит в бесплатный пакет с Sharepoint Designer 2007. Как дальше будет, посмотрим.

Но есть у каждого крупные недостатки, компенсируемые, впрочем,  функциональностью другого.

OneNote:

Нет возможности централизованного хранения данных на сервере. Компенсируется возможностью EverNote импортировать заметки из OneNote.

EverNote:

В мобильном клиенте (по  крайней мере, для WM) отсутствует возможность регулировать объём синхронизации данных - не нужна на телефоне вся база (с картинками, которые там и не рассмотреть). Из-за этого пришлось даже от этого клиента отказаться, функции заметок OneNote аналогичны (правда, пользоваться удобнее клиентом EverNote – на кнопки нажимать нужно заметно меньше)

Technorati Tags:

воскресенье, июля 19, 2009

Логины блогов в Writer’е

Сидят в реестре в подключах ключа
HKEY_CURRENT_USER\Software\Microsoft\Windows Live\Writer.
Без паролей, правда, но это проще, чем вспоминать все адреса. Можно сохранить в файл и сохранить где-нить – на SkyDrive, в EverNote и т.д. При всяких авариях достаточно импортировать сохранённое, а при отправке ввести пароль…

Ну, не придумали более пристойной архивации этого дела… blacksheep

Technorati Tags:

понедельник, июля 13, 2009

Sharepoint и экономическая “школа”

Больше года работы по внедрению MOSS 2007 в ставшей вдруг, неизвестно почему, известной РЭШ с показательным окончанием... thumbs_down

четверг, июля 02, 2009

Google Writer

Пощупал, что такое "Документы Google".
Для пробы опубликовал описание "Картотеки PSI". Сначала загрузил как docx, оно тут отобразилось. Естественно, вордовские рисунки отобразились никак, пришлось вставить png-рисунок.
Потом выяснилось, что можно постить в блог, что и сделал.

Слабовато, конечно. Но если нет другого, сойдёт.      -Konstantin 02.07.09 3:10


среда, июня 10, 2009

Windows Vista x64 ended

Окончание мыльной оперы (предыдущие серии здесь, здесь, здесь, здесь, здесь и здесь) с Windows Vista в главной роли, растянувшейся почти на 2 года. Сказать по-правде, к концу жизни Vista стала вполне пристойной системой, на ней получалось выполнять всю нужную мне работу. Некоторые глюки, в то же время, так и остались неизлеченными (неизлечимые?) даже после установки sp2 rc – самые досадные из них с IE8 и с Visual Studio 2008 (sp1 установить не получается, снести Студию можно, установить снова – нельзя smile_party).

После выхода Дистрибутива с интегрированным sp2 решил применить испытанное безотказное оружие – установка поверх имеющейся версии. Во всех предыдущих версиях Windows средство действовало безотказно, но здесь случилась осечка – за время пути мыльной оперы собачка смогла подрасти аппетиты системы выросли и она захотела 16 Гб свободного места для выполнения обновления (в начале эпопеи хотела 7 Гб). Если учесть, что и с требованиями к размеру дисков для установки изготовители промахнулись минимум в два раза, а я их цифру увеличил всего в полтора, то больше 10 Гб освободить не получилось. Пришлось записать дистрибутив на болванку, снести все обломки и установить Vista x64 sp2 начисто.

После установки и загрузки выяснилось, что работает система заметно быстрее, на уровне “семёрки”. Так что, если та будет продолжать глючить, есть куда вернуться. fingerscrossed

Technorati Tags:

понедельник, июня 01, 2009

Windows 7, continued.

Ещё в первой серии нашего мыла экспериментов c Windows “se7en” поставил предлагаемую для “семёрки” версию Virtual PC – она вполне себе работала, однако поствила в мои виртуалки собственные дополнения, которые не сильно понравились VPC 2007 в Висте. Поэтому при втором подходе к снаряду второй установке и настройке поставил старую виртуалку, чтобы была совместимость в двух системах (а сильно рекламируемый режим XP-совместимости мне вовсе и не нужен).

Теперь, когда с Вистой решил отношения прекратить, для порядка попробовал поставить “родную” семёрочную виртуалку. Не тут-то было, ставится, требует перезагрузки, на загрузке начинает делать какие-то действия и обламывается. В системном логе сиротливое сообщение “Ошибка установки: не удается установить следующее обновление из-за ошибки 0x8007054f: Обновление для ОС Windows (KB958559).” мало чего объясняет smile_sad. Ну, и привет.

Technorati Tags:

пятница, мая 22, 2009

Горе от ума

Неплохой набор средств для изготовления РП в Sharepoint Designer содержит, в частности, средства для манипуляций разрешениями на элементы списков (библиотек). Эти средства вполне успешно были применены в проекте год назад, однако при попытке использовать их на сервере комьюнити выяснилось, что назначение разрешений работает только в случае Windows-пользователей. Для пользователей с LiveID-аутентификацией назначение разрешений заканчивается ошибкой smile_omg.

Причина обнаружилась в фрагменте кода, выполняющем поиск пользователя по имени.

if (SPUtility.IsLoginValid(site, userOrGroup)) {
myUser = site.RootWeb.EnsureUser(userOrGroup);
}

Понятно, что авторы при помощи метода IsLoginValid пытались избавиться от обработки исключений smile_shades, но в Шарепойнте так много действий построено на обработке исключений, что эта попытка выглядит ловлей мелких насекомых. Хуже того, IsLoginValid, похоже, не находит LiveID-пользователей вовсе smile_baringteeth. Выяснилось, что вполне можно было обойтись и без этого метода:

try {
myUser = site.RootWeb.EnsureUser(userOrGroup);
} catch {}

В этом случае оба типа пользователей благополучно находятся и весь процесс назначения разрешений работает как ожидалось. thumbs_up

Technorati Tags: ,

вторник, мая 19, 2009

Visual Studio 2008

Очень хороший продукт, много чего может. И работает достаточно быстро и надёжно.

Работает, пока что-нибудь не произойдёт. У меня это "что-то" произошло после установки MSDN для Visual Studio sp1 - как-то странно стали расползаться окна в Студии, перестали загружаться пакеты и кое-что по мелочи. Никакие "восстановительные действия" ни к чему хорошему не привели.
После полного удаления Студии и установки с самого начала она, в общем-то, заработала, однако sp1 установить больше не удаётся по причине зацикливания – установщик SPInstaller.exe намекает, что "You must first use Microsoft Visual Studio Patch removal tool before installing Visual Studio 2008 SP1. The tool will verify Visual Studio integrity and remove previous Visual Studio 2008 updates or pre-release software". Запуск помянутого инстрУмента VS2008-PatchRemovalTool-x86.exe проходит "успешно", но SPInstaller.exe при следующем запуске снова намекает на своё... Найденные "рецепты" для исправления проблем ничего не дают.
При этом установить MSDN, с которого всё и началось, вполне можно...

Получается какая-то неремонтопригодная штуковина... Не припомню что-то других продуктов, которые можно снести и обратно не установить. Надеюсь, что после полной переустановки ОС фокус, всё же, получится, но я это проделывал совсем недавно, чуть больше недели назад, и энтузиазма повторить эпопею пока не испытываю.

P.S. Эти приключения – на Windows 7, на Vista – тоже приколы со Студией, но другие…

суббота, мая 16, 2009

Сюрпризик от GetSiteData

Есть такой полезный метод SPWeb.GetSiteData, собирающий данные по спискам/библиотекам, объединённым, например, наличием одинаковой колонки. Всё хорошо до тех пор, пока эта колонка не имеет тип LookUp с множественным выбором. Метод для таких колонок просто не возвращает никаких данных, без каких-либо сообщений.

Исправляется глюк копированием (например, простеньким SPD РП) содержимого в колонку типа “однострочный текст”.

Technorati Tags: ,

среда, мая 13, 2009

Windows 7, continued.

После регенерации, вернее, установки по-новой, “семёрка” не стала брыкаться, а спокойно заработала. После двух дней – праздники же, не очень до неё было – новой жизни решил обустроиться по-серьёзному. Office 2007 Ultimate, Sharepoint Designer 2007, Visual Studio 2008 Team Suite, SQL Server 2008 Developer Edition, Windows Sharepoint Services 2007 sp2 – весь этот зверинец пришлось запустить, не обойтись без него при работе с Шарепойнтом.

По ходу дела выяснилось, что Visual Studio надо бы устанавливать до Office (он без всякого спросу устанавливает какой-то огрызок от Студии 2005 smile_devil). В дальнейшем основная Студия устанавливается в папку, связанную с той, куда установлен огрызок, а иногда надо бы порулить путями, куда ставить. То, что Студию надо ставить и до SQL Server’а, выяснилось ещё раньше (SQL устанавливает свою версию Студии, не обязательно совпадающую с запланированной к установке).

Для установки Шарепойнта использовался испытанный Bamboo-способ, модифицированный для борьбы с “семёркой”. При использовании этого способа основное – не забыть включить отключённый сервис обратно и перезагрузиться. При выключенном сервисе “Центр Администрирования Шарепойнта” при запуске обычным порядком, через ссылку в “Administrative Tools”, выглядит довольно непривычно.

В итоге всё это хозяйство заработало исправно и, хочется верить, достаточно шустро (измерять, естественно, лениво smile_wink). Вот уже пятый день… Тьфу-тьфу smile_embaressed

Всё прочее хозяйство, нужное для жизни (Пунты-Торренты и Daemon Tools’ы, Аськи-Messenger’ы, Picasa-Gallery…) тоже заработало, в основном. Несколько гаджетов, ставших привычными в Висте, потерялись или не заработали, но нашлись другие, похожие, или получилось заменить системными средствами.

Technorati Tags: ,

вторник, мая 12, 2009

Бессмертное…

Почти 2 года назад обнаружилась смешная глюковинка, легко поддающаяся исправлению. Ан нет – и во втором сервиспаке глюковинка на месте.present

Technorati Tags: ,

понедельник, мая 11, 2009

Windows 7, continued. Regeneration.

Почитал для начала статьи про восстановление предыдущих версий ОС (наподобие вот этой) и решил попробовать сэкономить ранее потраченное на установку время. Предлагаемый метод восстановления вылился в такой вот командный скрипт (запускать его надо по методике из статьи после перехода на диск, где надо выполнить манипуляции):

rem backup current OS
move /y \windows \Windows.srv\
move /y "\Program Files" \Windows.srv\
move /y "\Program Files (x86)" \Windows.srv\
move /y \Users \Windows.srv\
move /y \ProgramData \Windows.srv\

rem restore previous OS
move /y \Windows.old\windows \
move /y "\Windows.old\Program Files" \
move /y "\Windows.old\Program Files (x86)" \
move /y \Windows.old\Users \
move /y \Windows.old\ProgramData \
После выполнения скрипта система вполне себе нормально загружается и выглядит как взаправдашняя. Вместе с глюками, побудившими от неё отказаться. Радости от этого немного, поэтому решил воспользоваться старым казачьим способом – установить систему поверх себя в надежде получить функционирующую ОС без потери настроек. Способ применялся для разных Windows, начиная с версии 3.11, и практически всегда давал приличные результаты.
Здесь же приличного результата не получилось – несмотря на долгое время работы (около полутора часов с тремя или четырьмя перезагрузками) никакого улучшения в работе не обнаружилось. Может, “благодаря” использованному способу переноса настроек – судя по сообщениям во время установки применялся встроенный способ “Windows Easy Transport”.
Собственно, всё как обычно – попытка сэкономить время приводит к его дальнейшему непроизводительному расходу. smile_thinking Результат - вторая “чистая” установка на пустой раздел. Как и прежде – всё чудесно, очень быстро и красиво…smile_wink


Technorati Tags:

пятница, мая 08, 2009

Windows Server 2008 R2

В принципе, это серверный вариант Windows 7, но пока называется вот так. Правда, при ближайшем рассмотрении выясняется, что многое, относящееся у пользовательскому интерфейсу, по дороге от “семёрки” к серверу куда-то делось. Для сервера, конечно, мелочь, но у меня-то цель была получить рабочую станцию для разработки под Шарепойнт. Думаю, не мне одному такя станция нужна…

Установка происходит достаточно гладко и быстро, ранее установленная Windows 7 сметена в папку Windows.old и не мешается. Сложности начались дальше. С самого начала выяснилось, что сервер не очень заботится о поддержке видеосистемы и считает, что 1024*768 – сойдёт. Пришлось насильно скармливать драйверы от Висты, после чего интерфейс стал радовать глаз. Но не до конца – самые интересные фенечки как раз и потерялись. Все прочие перенастройки сервера в рабочую станцию прошли нормально и можно было согласиться с отсутствием мелочей.

Дальше выяснилось, что не включается режим hibernate (режима sleep, похоже, не предусмотрено вовсе) – препятствует этому включённый Hyper-V. Обе этих фишки нужны мне обязательно – у нас часто выключается свет и на shutdown батарей может не хватить, а всякие сомнительные вещи (типа сервиспаков и прочих обновлений Шарепойнта) предпочитаю проверять на виртуальных машинах.

Собственно, на этом любовь с  сервером закончилась smile_thinking и пришлось приступить ко второй серии мыльной оперы экспериментов с “семёркой” (вылечить болячки Висты пока не удаётся smile_sad).

Technorati Tags:

среда, мая 06, 2009

Windows 7

Поставил “на попробовать” эту “семёрку” ещё в январе, когда выпустили публичную бету. Особого впечатления не произвела, да и особых причин уползать с Висты не было – она нормально работала, выполняла нужные мне функции… Читал периодически всякие отзывы, иногда заходил, потихоньку экспериментировал…

Выпуск RC семёрки и фокусы ИЕ в Висте поторопили начать более плотное изучение нового чуда.

Русскую версию поставил на старую машину – её поленились собрать в x64-варианте, поэтому пускай на слабом железе и сидит, тем более, нужна для тестирования русификации (которую, по-правде, тоже поленились…).

На основную машину поставил английскую x64-сборку с прицелом сделать её основной рабочей системой (кстати, в опросе на connect такой вариант использования предусмотрен). Ставиться поверх имеющейся Висты категорически отказалась – из-за недостатка места на диске (15 Гб хочет) и из-за несовместимости некоторых установленных программ, Шарепойнта, в частности. Последнее обстоятельство несколько насторожило, но в запасе оставался вариант использования Шарепойнта на виртуальном сервере.

Собственно, началось всё достаточно гладко – быстрая установка, быстрый старт, распознанные устройства (кроме одного, которое в Висте вполне известно). Интерфейс местами интересный, некоторые фички вполне практичные и быстро находят применение. В общем, первые 3 часа – всё чудесно.

Дальше – хуже. При установке Офиса выяснилось, что Live Addin для Outlook работает как-то не так (или не работает вовсе – в меню его нет), в результате чего почту Hotmail в Outlook подключить можно, но авторизация там проходит далеко не с первого раза, что сильно задалбывает. Через клиента Windows Mail подключиться к news-группам connect так и не удалось – не авторизуется на сервере…

В интерфейсе полезли какие-то глюки – иногда вокруг окон проступает полоска с фоновым рисунком. Полоска довольно широкая и моргает – очень противно, хоть и стирается мышкой.

Доконала “зацикленная авторизация” на почте Hotmail – не войти никак, привычное “лечение” не помогает. Кроме того, выяснилось, что Bamboo-установка Шарепойнта не удаётся – пришлось системку выбросить и начать эксперименты с серверным вариантом (называется до сих пор Windows Server 2008 R2).

Technorati Tags: ,

IE задолбал

Я, собственно, не про то, что IE8 плохой – нет, он заметно лучше предыдущих версий. С “конкурентами” даже сравнивать не хочу – давно пришёл к выводу, что всякому своё. Поэтому сайты, где преобладает технология Microsoft (почта Hotmail, MSDN и т.д.), смотрю IE, почту GMail – Хромом. Так и висит постоянно несколько разных браузеров. Но жить можно. smile_secret

Но IE, всё же, задалбывает больше остальных – может, потому, что пользуюсь им больше… smile_angry

В течение последних нескольких месяцев периодически (раз в 7-10 дней) “включается” глюк “зацикленная авторизация” – при попытке зайти на страницу Live (напр., http://home.live.com) после ввода LiveID начинается бесконечный цикл “авторизации”, при этом вход на другие Live-страницы проходит нормально. Лечится глюк удалением куков, всех или выборочно, со словом “live” в имени файла.

Последний по времени фокус описан вот здесь. Не вылечился пока никак – ни переустановкой, ни чисткой кеша и реестра, ни установкой на Висту sp2 RC. Так и приходится, если нужно написать нормальный пост, запускать IE8 x64. thumbs_down

Technorati Tags: , ,

пятница, апреля 24, 2009

Vista sp2 installing

При размещении системных файлов на других дисках (на системном - softlink) получается вот такой результат:

vista sp2rc      vista sp2rc ru

А всего-то и было, что папка Microsoft Games была перенесена на другой диск для экономии места.

 

Technorati Tags: , ,

суббота, февраля 28, 2009

PS и WSS 3

Продолжаем наши танцы эксперименты. В этот раз решаем простую задачку автоматического утверждения содержимого элемента списка. Решаем в технике использования обработчиков событий, т.к. в нём скрипты работают в контексте текущего пользователя и нет необходимости проверят его разрешения. Скрипт получается совсем простой:

   1:  function ApproveItemContent {
2: if (-not $list.EnableModeration ){ return; }
3: if ($item.ModerationInformation.Status –eq
Microsoft.SharePoint.SPModerationStatusType]::Approved `
4: -or `
5: $item.ModerationInformation.Status –eq
Microsoft.SharePoint.SPModerationStatusType]::Denied)
6: { return; }
7: $this.DisableEventFiring()
8: try{
9: $item.ModerationInformation.Status = `
10: [Microsoft.SharePoint.SPModerationStatusType]::Approved;
11: $item.ModerationInformation.Comment = 'Approved with PS-script by user '
12: + $user.Name + ' at ' + [System.DateTime]::Now.ToString();
13: $item.SystemUpdate();
14: }catch{
15: # не очень и хотелось...
16: }
17: }

Эту функцию записываем в конец заготовки обработчика и ставим её вызов в обработчики добавления и обновления:


function ItemAdded{ ApproveItemContent; }
function ItemUpdated{ ApproveItemContent; }
Не обошлось, как водится, без сюрпризовsmile_nerd: на списке вики-страниц ( узел создавался с шаблоном “вики”) скрипт работает наполовину – комментарий (строка 11) записывается, а статус (строка 9) – нет. При расследовании выяснилось, что исправляет дело замена SystemUpdate() на Update() в строке 13.

Technorati Tags: ,

пятница, февраля 27, 2009

PS и WSS 2

Во второй серии балета экспериментов пытаемся сделать при помощи PS-технологии нечто содержательное. Например, достаточно часто требуется для элементов списка (документов библиотеки) оставить доступ только создателю и некоторым группам пользователей, отобрав его у всех остальных. Достаточно легко эта операция проделывается при помощи рабочего процесса с использованием activities из пакета Useful Sharepoint Designer Custom Workflow Activities. Алгоритм достаточно простой:

  1. Убрать наследование разрешений
  2. Установить разрешения для групп
  3. Установить разрешения для создателя.

Для использования в обработчике событий PowerEventReceivers имеет смысл написать функцию, выполняющую нужные действия, и вызывать её из обработчиков ItemAdded и ItemUpdated. Функция получается такая:

function ResetPermissions{
$groupsNames = "Администрация", "ИТ Отдел";
$permissionLevelName = "Полный доступ";
$permissionLevel = $null;
$mustSave=$false;
if( -not $item.HasUniqueRoleAssignments){
try{ $item.BreakRoleInheritance($false); }
catch{
# у пользователя нет нужных разрешений
return;
}
}
if($item.HasUniqueRoleAssignments){
try{
$permissionLevel = $web.RoleDefinitions[$permissionLevelName];
}catch{
# у пользователя нет разрешений или неверно задан уровень
}
if($permissionLevel -ne $null){
try{
foreach ($groupName in $groupsNames) {
$group = $null;
try{$group = $web.Groups[$groupName];}catch{} #on web
if($group -eq $null) {try{$group = $web.Site.Rootweb.Groups[$groupName];}catch{}} #on site
if($group -eq $null) {continue;} #wrong group
$role = New-Object -TypeName Microsoft.SharePoint.SPRoleAssignment -ArgumentList $group;
$role.RoleDefinitionBindings.Add($permissionLevel);
$item.RoleAssignments.Add($role);
$mustSave=$true;
}
}catch{
if(-not $mustSave){
return;
}
}
#Creator
try{
$user = (($item.Fields[[Microsoft.SharePoint.SPBuiltInFieldId]::Author] `
-as [Microsoft.SharePoint.SPFieldUser]).GetFieldValue($item[[Microsoft.SharePoint.SPBuiltInFieldId]::Author].ToString()) `
-as [Microsoft.SharePoint.SPFieldUserValue]).User;
$userRole = New-Object -TypeName Microsoft.SharePoint.SPRoleAssignment -ArgumentList $user; #SPRoleAssignment
$userRole.RoleDefinitionBindings.Add($permissionLevel);
$item.RoleAssignments.Add($userRole);
$mustSave=$true;
}catch{
if(-not $mustSave){
return;
}
}
}
if($mustSave){ # сохранить изменения
$item.SystemUpdate();
}
}
## End of ResetPermissions ##
}

Такая функция исполняется ожидаемым образом только когда изменения списка проводит пользователь, имеющий права на изменение разрешений. У пользователя, не имеющего таких прав, дело заканчивается неудачей и разрешения на элемент списка наследуются от списка. Внутри скрипта дело поправить не удаётся (нужно выполнить код с системными привилегиями), поэтому следует искать другие выходы.

Выходов, как обычно, находится два: заставить изменить элемент пользователя с нужными правами или применить другие средства. Можно, например, в списке настроить обязательное утверждение элементов, и в момент утверждения все необходимые действия будут выполнены.

Из “других” средств можно применить SharePoint Designer PowerActivity того же автора. В рабочем процессе, основанном на этой “активности”, можно применить тот же самый скрипт, что и в обработчике событий. С учётом того, что рабочие процессы выполняются в контексте системной учётной записи, изменения проходят у любого пользователя, имеющего разрешения на добавление и/или редактирование элементов списков. Платой за это служит необходимость иметь SPD.

Тексты скриптов для обработчика (RecieverScript.ps1) и для PowerActivity (WFScript.ps1) можно взять здесь.


Technorati Tags: ,

вторник, февраля 24, 2009

PS и WSS

В то время как по всей России страдают многие энтузиасты ратуют за использование PowerShell в деле борьбы работы с Шарепойнтом, как-то у меня самого дальше советов пользователям форума пока не продвинулось. smile_embaressed Надо восполнить пробел…

Первая серия экспериментов – с обработчиком событий iLoveSharePoint.PowerEventReceivers, представленным Christian’ом Glessner’ом (http://www.iLoveSharePoint.com). Задача – попробовать, легко ли писать скрипты для этого обработчика и как эти скрипты должны выглядеть. Содержательно – скрипты должны добавлять свои сообщения в предназначенное для этого поле.

Результат: скрипты писать легко и просто, совсем как в Студии на C#, но можно и не обращать внимания на регистр символов (спасибо MS за любовь к BASIC’у). Вид же скриптов сильно зависит от типа обработчика (вызов перед началом события/после события). Гугль подсказывает, что народ с этим постоянно сталкивается и пытается бороться. Поэтому просто примем это за реальность и правила будем использовать такие:

  • в методах, вызываемых перед началом события (ItemAdding, ItemUpdating и т.п.) работаем с After-свойствами:
    function ItemAdding{
    $message="Adding;"; $fieldName="msg";
    $internalFieldName=$list.Fields[$fieldName].InternalName;
    $properties.AfterProperties[$internalFieldName]+=$message;
    }

  • В методах, вызываемых после события (ItemAdded, ItemUpdated и т.п.) работаем с полями элемента списка:
    function ItemAdded{
    $message="Added;"; $fieldName="msg";
    $internalFieldName=$list.Fields[$fieldName].InternalName;
    $item[$internalFieldName]+=$message;
    $item.SystemUpdate();
    }

Technorati Tags: ,

вторник, февраля 03, 2009

Something strange …

That day, trying to unravel the mystery of (ideally, to find workaround) on the lack of access to data on Sharepoint sites with anonymous access allowed (!?).

Here is a test console program:

using System;
using GetListDataWCF.Lists_WS; // proxy for Lists.asmx
using System.Net;
using System.Xml;

namespace GetListDataWCF {
class Program {
static void Main(string[] args) {
if (args.Length > 0)
new Test().GetData(args[0]);
else
Console.WriteLine(
"Usage:{0} <url of site>",
typeof(Test).Assembly.ManifestModule.Name);
}
}
class Test {
public void GetData(string url) {
Lists lists = new Lists();
lists.Url = url.TrimEnd("/".ToCharArray()) +
"/_vti_bin/Lists.asmx";
lists.Credentials = CredentialCache.DefaultCredentials;
XmlNode tst =null;
try {
tst = lists.GetListCollection();
Console.WriteLine(string.Format(
"success: {0} bytes", tst.OuterXml.Length));
} catch (Exception err) {
Console.WriteLine(
string.Format("error: {0}", err.Message));
}
}
}
}
The program applies to the site, the URL of which passed through the command-line switch causes the method GetListCollection () of Lists.asmx service, and if successful, displays the size of the response service (the contents of the response in this case does not matter). . Compiled software - are here. Actually, the algorithm taken from SDK, I have used it in various programs and until recently (at least until September-October 2008) was carried out successfully to all nodes, which allow anonymous access to the data.

Now, the bizarre result of the program depends on the user launching the program, and maybe even from some factors. Most often, the result is "error: The request failed with HTTP status 401: Unauthorized.", in the case of Forms-authentication - "403, forbidden". Cases of successful fulfillment of requests are rare. smile_omg In doing so, such conduct "different" only WSS-3 sites, sites WSS-2 give the data as expected.

To check you can use nodes with addresses
http://sharepoint-community.ru:55555/ (Win-authentication)
http://sharepoint-community.ru/ (Forms-authentication)
http://www.sharepointcommunity.com/ (Win-authentication)
http://new.hse.ru/sites/ibs_test/ (WSS-2 site).
At all sites allow anonymous access to the data, the successful completion of the testing program is observed only at the last node. smile_eyeroll

Very similar to the result of "improvements" in security ... thumbs_down

Technorati Tags:

вторник, января 20, 2009

Что-то странное…

Который день пытаюсь разгадать загадку (в идеале, найти пути обхода) по отсутствию доступа к данным на Шарепойнт-узлах с разрешённым анонимным доступом (!?).

Вот тестовая консольная программка:

using System;
using GetListDataWCF.Lists_WS; // proxy for Lists.asmx
using System.Net;
using System.Xml;

namespace GetListDataWCF {
class Program {
static void Main(string[] args) {
if (args.Length > 0)
new Test().GetData(args[0]);
else
Console.WriteLine(
"Usage:{0} <url of site>",
typeof(Test).Assembly.ManifestModule.Name);
}
}
class Test {
public void GetData(string url) {
Lists lists = new Lists();
lists.Url = url.TrimEnd("/".ToCharArray()) +
"/_vti_bin/Lists.asmx";
lists.Credentials = CredentialCache.DefaultCredentials;
XmlNode tst =null;
try {
tst = lists.GetListCollection();
Console.WriteLine(string.Format(
"success: {0} bytes", tst.OuterXml.Length));
} catch (Exception err) {
Console.WriteLine(
string.Format("error: {0}", err.Message));
}
}
}
}
Программа обращается в узлу, УРЛ которого передан через параметр командной строки, вызывает метод GetListCollection() сервиса Lists.asmx и в случае успеха выводит размер ответа сервиса (содержимое ответа в данном случае неважно). Скомпилированная программа – здесь. Собственно, сам алгоритм из SDK, используется у меня (с вариациями) в разных программах и до недавнего времени (по крайней мере, до сентября-октября 2008 г.) выполнялся успешно для всех узлов, на которых разрешён анонимный доступ к данным.
Сейчас же результат работы программы причудливым образом зависит от пользователя, запустившего программу, и, может быть, ещё от каких-то факторов. Чаще всего результатом бывает “error: Сбой запроса с состоянием HTTP 401: Unauthorized.”, в случае Forms-аутентификации - “403, forbidden”. Случаи успешного выполнения запросов редки. smile_omg При этом таким поведением “отличаются” только сайты WSS-3, сайты WSS-2 отдают данные, как и ожидается.
Для проверки можно использовать узлы с адресами
http://sharepoint-community.ru:55555/ (Win-аутентификация),
http://sharepoint-community.ru/ (Forms-аутентификация),
http://www.sharepointcommunity.com/ (Win-аутентификация),
http://new.hse.ru/sites/ibs_test/ (версия WSS-2).
На всех узлах разрешён анонимный доступ к данным, успешное выполнение тестовой программы наблюдается только на последнем узле.smile_eyeroll

Сильно похоже на результат “усовершенствования” в деле безопасности… thumbs_down


Technorati Tags: