Предпочитаете скеливать строки с помощью string.Format?

by galyamov 25. апреля 2011 14:18
Тогда вот вам сравнительный анализ разных методов конкатинации строк:
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            const int length = 1000000;
            string[] res = new string[length];

            // KISS
            sw.Restart();
            for (int i = 0; i < length; i++)
            {
                res[i] = "(" + i.ToString() + ")";
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 642

            // Медленнее из-за боксинга. Не забываем про ToString().
            sw.Restart();
            for (int i = 0; i < length; i++)
            {
                res[i] = "(" + i + ")";
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 687

            // Самый медленный вариант и не самый удобный.
            sw.Restart();
            for (int i = 0; i < length; i++)
            {
                res[i] = String.Format("({0})", i.ToString());
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 878!

            // Не на много быстрее чем первый, но самый не удобный.
            // Имеет смысл использовать, если критична скорость или требуется сложная конкатинация.
            sw.Restart();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < length; i++)
            {
                res[i] = sb.Clear()
                    .Append("(")
                    .Append(i.ToString())
                    .Append(")")
                    .ToString();
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds); // 631

            Console.ReadLine();
        }
Вывод: использовать "+" - это нормально.

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

Веб-сервис для SharePoint

by galyamov 2. февраля 2011 11:42

Процесс создания собственного веб-сервиса для SharePoint страшен и ужасен.

Майкрософт предлагает инструкцию http://msdn.microsoft.com/en-us/library/ms464040.aspx, которая является причиной лютого бад-хёрта программистов всего мира.

Но пакистанский  коллега Али Кхан в своём блоге предлагает более легкое решение.

Оно заключается в автоматизации процесса путем использования утилиты SPDev

Утилита отлично работает для 2007 шарика, но для 2010 выдает ошибку, которую надеюсь когда-нибудь решат.

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Кастомный урл фильтр

by galyamov 2. февраля 2011 11:28

Потребовалось установить заказчику Query String (URL) Filter Web Part в проекте на SharePoint 2007, но у того не было требуемой лицензии.

Выходом послужило написание своего фильтра.

Вот замечательная статья  http://office.microsoft.com/en-us/sharepoint-server-help/connect-a-query-string-url-filter-web-part-to-another-web-part-HA010250999.asp, которой мы воспользовались.

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint

Как принудительно удалить решение из SharePoint 2007

by galyamov 15. декабря 2010 05:16

Иногда возникает ситуация, что решение никак не хочет удаляться из шарика, а очень надо.

В простейшем случае нужно зайти в центре администрирования на страницу  "Центр администрирования > Операции > Управление решениями" (http://sp2007server:12417/_admin/Solutions.aspx), отозвать решение и потом удалить его.

Это может не сработать и решение повиснет в списке со статусом ошибка.

Придется воспользоваться старой доброй командной строкой.

В папке C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN имеется утилита STSADM.exe, будем юзать её.

Для начала получим список текущий развёртываний:

STSADM.exe -o enumdeployments  

Найдем по имени среди них  наше решение и запомним JobId, например это будет 68c86332-eb4e-4522-9f75-1742b521a9f9

Убедимся, что в винде запущена  служба Windows SharePoint Service Administration.

Отменяем джобу:

stsadm -o canceldeployment -id 68c86332-eb4e-4522-9f75-1742b521a9f9 

И ретрактим решение:

STSADM.exe -o retractsolution -name listdefinitions.wsp -immediate 

STSADM.exe -o execadmsvcjobs 

Заходим на страницу "Центр администрирования > Операции > Управление решениями", убеждаемся что решение отозвано, статус ошибки пропал.

И финальный штрих - удаляем решение:

STSADM.exe -o deletesolution -name listdefinitions.wsp -override

 Надеюсь, это поможет.

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint

Как настроить локальную сеть для Windows Server 2003 на Hyper-V

by galyamov 13. декабря 2010 06:25

Первым делом нужно расшарить вашу локальную сетевую карту в Hyper-V в Virtual Network Manager.

Далее, после создания виртуальной машины в её настройках добавьте Legacy Network Adapter, зайдите в настройки адаптера, и выберете ранее созданную виртуальную сеть:



После этого ваша локальная сеть начинает видиться на виртуальной машине.

Текущий рейтинг: 1.0 (1 голосов)

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Hyper-V | SharePoint | одминство

Использование веб-методов на Sharepoint.

by galyamov 3. ноября 2010 10:56

Если вы гуглите по словам SharePoint, WebMethod, undefined, то вам сюда.

Во-первых, веб-методы работают только на страницах, с WebParts у вас такой номер не пройдет.

Во-вторых, нужно настроить скрипт-менеджер. Так как на страницах SharePoint скрипт-менеджер уже есть, по крайней мере в SharePoint 2010, настраивать его нужно программо. В коде ниже это делает функция EnsureScriptManager.

В-третьих, PageMethods в SharePoint почему-то синхронно не работает, по этому респонз нужно забирать из калбек функции асинхронно.

Итак. В код добавляем:

/// <summary>

/// Настраивает скрипт менеджедр что б работали веб-методы

/// </summary>

private void EnsureScriptManager()

{

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); if (scriptManager == null)

{

scriptManager = new ScriptManager(); scriptManager.EnablePageMethods = true; if (Page.Form != null)

{

Page.Form.Controls.AddAt(0, scriptManager);

}

}

scriptManager.EnablePageMethods = true; scriptManager.EnablePartialRendering = true;

}

/// <summary>

/// Тут инициализируем скрипт-менеджер

/// </summary>

protected override void OnInit(EventArgs e)

{

EnsureScriptManager();

base.OnInit(e);

}

/// <summary>

/// Это тут совсем не нужно )

/// </summary>

protected void Page_Load(object sender, EventArgs e)

{

}

/// <summary>

/// Наш веб-метод

/// </summary>

[WebMethod] public static string GetData(int id)

{

return "im a data";

}

На aspx добавляем: 

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">

<script type="text/javascript">

function test() {

// Так не работает

var temp = PageMethods.GetData(13);

alert(temp);

// Так работает

PageMethods.GetData(13, function (response) {

alert(response);

});

}

test();

</script>

</asp:Content>

Текущий рейтинг: 5.0 (1 голосов)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint

О нас

Это блог компании Инлайн. Мы занимаемся разработкой сайтов, корпоративных порталов и корпоративных информационных систем на основе новейших технологии Microsoft  - ASP.NET, SharePoint и Silverlight. А в этом блоге мы размещаем самые последние новости в области разработке для web.

Облако тегов