пятница, февраля 15, 2013

Кнопка Start vs Start Screen

Всё же, в Windows 8 на десктопе с монитором 24” запустить Excel удобнее "по-старому", через кнопку "Старт" и меню программ:

clip_image001

По новому "стартовому экрану" нужную плитку разыскивать заметно дольше:

clip_image002

Жалко, новые программы (Metro Style) не догадались в меню включить (а они таки появляются, с полезными функциями…).

Использую “кнопочную” программку Start Menu X, если что.

вторник, февраля 12, 2013

WinFoms or WPF

Есть у меня утилита для работы с локальными или удалёнными серверами Шарепойнт, которую переделываю/усовершенствую уже много лет. Решил на этот раз "усовершенствовать" интерфейс программки.

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

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

clip_image001

Почему - понять не удалось, да и не очень-то хотелось…

В WPF, конечно, изобразительные возможности покруче, поэтому решил попробовать. Студию открыл, проект сделал, стал пытаться воспроизвести нынешний интерфейс…

Практически удалось - и две панели с изменением размеров, и деревья в них, и выращивать деревья можно программно… Но возни оказалось побольше, чем в WinForms: элементы во второй (правой) панели (ColumnDefinition в Grid) базируются относительно окна и им приходится приписывать отрицательный Margin. Передвижение GridSplitter требует неслабой обработки - все эти смещения пересчитывать… Может, я для панелей неправильный способ реализации выбрал, но ничего лучше Студия почему-то не предложила, а копаться в гуглях ради такой мелочи (при постройке WinFoms-интерфейса точно нигде не копался) - не стану, это должно быть очевидным…

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

воскресенье, февраля 10, 2013

Sharepoint и Windows Store - 2

Как-то смешно выглядит невозможность сделать приложение для WinRT, работающее с Шарепойнтом – прямо из серии “такого не может быть…”. Должна же быть какая-то возможность…
При рассматривании SDK попадается на глаза “ECMAScript Class Library” – библиотека для работы с CSOM на языке ECMAScript (JavaScript, JScript). Отлично, щас попользуемся…
Раскопки на MSDN показывают, что программу для WinRT тоже можно соорудить на JavaScript (+ HTML5, CSS 3 etc). Совсем здорово, начинаем пробовать практически, тем более, даже книжка бесплатная на эту тему существует.
Делаем по книжке, примеры работают, начинаем смотреть, как оно вообще устроено, и …приходим в ужас: написать руками  код на JScript длиннее 50 строк и сложнее вызова alert(“Hello!”) можно только после двух месяцев тренировок…
Выходим из прострации, обращаемся к Гуглю и выясняем, что для облегчения жизни существует язык TypeScript – масштабируемый, с типизацией, поддерживается MS. Ура, мы спасены! Тем более, к языку приложено довольно приличное приложение для WinRT. Ну, немного кривоватое, но к мелочам зачем же цепляться…
Делаем новое приложение, добавляем туда js-скрипты из папок Шарепойнта, в файле script.ts пишем долгожданное
clientContext = SP.ClientContext.get_current();
На этом эксперименты с TypeScript заканчиваем: выясняется, что JS-библиотеки языком TypeScript не воспринимаются, а библиотек с определениями типов (*.d.ts-файлов) никто пока не сделал и в общее пользование не предоставил.
При попытках продолжить эксперименты уже на JavaScript выясняем, что “ECMAScript Class Library” вовсе не предназначена для работы вне страниц, полученных с сервера Sharepoint: в отличие от C#-библиотеки, js-объект SP.ClientContext не имеет средств для логина пользователя и не позволяет коннектиться к произвольному УРЛ. И это не только в версии 2010, но и в новейшей 2013-й… Можно, наверное, эти библиотеки дополнить соответствующим функционалом – но это уже другая песня.
Остаётся, конечно, ещё одна возможность – REST-сервисы. Но что-то в 2010-й версии Шарепойнта лично у меня с ними отношения не сложились, а 2013-й Sharepoint пока не сильно интересует…
В общем, подождём развития событий. А WinRT пока поживёт без Шарепойнта (особенно, в версии для ARM).

четверг, февраля 07, 2013

Sharepoint и Windows Store

Прочитал книжку Сергея Пугачёва с соавторами и вдохновился соорудить метрошную программку для просмотра Шарепойнт-сайтов. С использованием клиентской модели, которую немного освоил…
Естественно, облом случился - Шарепойнт-то на .NET 3.5, а проект строится на 5.0.5 и никаких переключений версий не предполагает.

По идее, надо пробовать сборки от 2013-го Шарепойнта… Как они, любопытно, будут работать с 2010-м Шарепойнтом?  В принципе, должно быть без разницы…

C 2013-ми сборками - тоже облом.
В тексте программки написал:
 using Microsoft.SharePoint.Client;
private Web web = null;

При компиляции получаю сообщение:
Ошибка - Не удаётся найти тип System.ComponentModel.MarshalByValueComponent в модуле System.dll.       

При расследовании выясняется, что сборка System.dll, подключённая к проекту (подключение называется ".NET for Windows Store apps"), какая-то урезанная и помянутого типа там, и вправду, нет, а подключить нормальную сборку не дают - её, дескать, и без вас подключили… И удалить то, что подключено, не предполагается…

Похоже на то, что программы для работы с пупер-флагманским продуктом Sharepoint 2013 в Windows Store не сильно-то и требуются…
Вот про салаты или коктейли - это да…

среда, февраля 06, 2013

Кривые списки и модели данных

При доработке утилиты SpfExplorer столкнулся со списком, при обращении к Title которого вылетает исключение с диковинным сообщением:

"Недопустимое имя файла.

Нельзя использовать указанное имя файла. Это имя существующего файла или папки, либо у вас отсутствует разрешение на доступ к этому файлу."

Как такое чудо сотворили, не признаются…

 

В программке с использованием серверной модели (OM) для отрисовки узлов со списками использовался Linq-код:

 

clip_image001

 

Этот код при наличии помянутого чудо-списка падал без генерации узлов, ещё на выборке элементов…

 

Для обхода пришлось вернуться к "старому доброму" циклу:

 

clip_image002

 

с обработкой ошибок при доступе к данным каждого списка…

 

При использовании клиентской модели (CSOM) для получения коллекции списков используем код

 

clip_image003

 

Код падает при наличии чудо-списка, коллекция списков оказывается неинициализированной.

 

Попытка эмуляции (размер коллекции-то неизвестен…) второй возможности из OM тоже не удаётся:

 

clip_image004

 

Этот код падает до запроса данных, ещё на строке var list = lists[ii];

 

Остаётся только посоветовать обратиться к администратору для исправления ошибок…

 

Конечно, есть ещё возможность попытаться обращаться через веб-сервисы (а CSOM разве что-то другое делает?), сильно будет надо - сделаем…