Как стать автором
Обновить
15
0
Кудрявцев Денис @kuda78

Пользователь

Отправить сообщение
Но UTF-8 покрывает значительно большее количество случаев и намного более удобен, чем подобные костыли с code pages.

А почему именно UTF-8?

Был опыт в попытке подружить вывод консоли TalendStudio с со сборочным агентом bamboo работающем под linux, вот только первый отправлял в stdout данные в кодировке UTF-16 а агент считывал их используя кодировку UTF-8. Так что использование unicode и не windows стека технологий в общем случае не спасет от возникновения проблем.

Ну и не надо забывать, что первоначально была задача решить проблему производства. :)
Как хорошо, что есть люди, которые верят в существование серебряной пули.
Если немного глубже погрузиться в изучение стандарта unicode то можно узнать, что он состоит из двух основных разделов: универсальный набор символов (universal character set) и семейство кодировок (unicode transformation format). Так как в статье озвучена проблема кодировок, то посмотрим, какой зоопарк нам предоставляет unicode, а это UTF-8, UTF-16, UTF-32 + модификации LE / BE, ну и экзотика типа UTF-7, UTF-9, UTF-18. Так что проблемы кодировок символов с приходом unicode никуда не делись.
Не поможет.

chcp 1251
test-1.ps1
$ErrorActionPreference = "Stop"
chcp 1251
& $PSScriptRoot\ConsoleApp1.exe


Результат выполнения


chcp 65001
test-2.ps1
$ErrorActionPreference = "Stop"
chcp 65001
& $PSScriptRoot\ConsoleApp1.exe


Результат выполнения

Честно говоря я не представляю, как без особо сильных заморочек, с использование MOF манифеста, заставить dsc сгенерировать исключительную ситуацию.
Добавление элемента в конец списка — константа O(1) — «ОХРЕНЕННО!!»


А почему не учтена сложность на операцию увеличения размера списка (grow)? этом случае сложность становится O(N).
Возможно я не совсем правильно понял вопрос, но аутентификацию доменными пользователями делаю следующим образом:

$securePassword = convertto-securestring $targetPassword -asplaintext -force
$cred = New-Object System.Management.Automation.PsCredential($targetUsername, $securePassword)
$session = new-PSsession $targetServer -authentication credssp -credential $cred

Предварительно необходимо разрешить передавать и получать CredSSP

#Server Side:
  Enable-PSRemoting -Force
  Enable-WSManCredSSP -Role server

#Client Side:
  Enable-WSManCredSSP -Role client -DelegateComputer '$($this.server)'

И настроить к каким серверам возможен доступ либо через реестр либо через редактор групповых политик

HKLM:\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\CredentialsDelegation
HKLM:\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly
В статье пропущен очень важный момент — передача параметров в скрипт на удаленной машине.

$deployRemote = {
    param(
        [string]$targetEnvName,
        [string]$targetUsername)
    $Global:ErrorActionPreference = "Stop"
    # ...
}

Invoke-Command -Session $session -ScriptBlock $deployRemote -ArgumentList ($targetEnvName, $targetUsername)
Если уж создавать объекты, то и методы надо добавлять:

function ServicesDbUtils($connectionString)
{
    $result = New-Object -Typename PSObject -Property `
    @{
        ConnectionString = $connectionString
    }

    Add-Member -InputObject $result -MemberType ScriptMethod -Name ConnectionOpen -Value `
    {
        $conn = New-Object System.Data.SqlClient.SQLConnection
        #....
        return $conn
    }

    Add-Member -InputObject $result -MemberType ScriptMethod -Name UpdateFormatParamSet -Value `
    {
        Param($name, $title, ...)
        $conn = $this.ConnectionOpen()
        #....
    }

    return $result
}

$ServiceDbUtils = ServicesDbUtils -connectionString "Server=PORT-EXT-DB02;Database=EecService;Integrated Security=True"
$ServiceDbUtils.UpdateFormatParamSet('...', '...', ...)
Имхо, основная проблема не в температуре, а в возможном конденсате.
Покупал зимой духовку — через два дня отказалась включаться с сообщением об ошибке, которой даже нет в сервисной книжке. Вскрытие показало, что капля конденсата (доставка зимой в -30) с верхней крышки упала на плату управления, после чего получился такой красивый белесый след. Из-за него духовка self-test при включении и не проходила. Протер спиртом и все заработало.
Для запуска тестов взаимодействующих с БД, но без изменения структуры, можно использовать другой механизм — транзакции в DCOM. Он корректно работает с ADO, LINQ2SQL, Entity.

В NUnit наследовать все тесты с БД от класса:
namespace TestNamespace
{
	using System.EnterpriseServices;
	using NUnit.Framework;

	[Transaction(TransactionOption.Required)]
	public class RepositoryTestsBase : ServicedComponent
	{
		[TearDown]
		public virtual void Teardown()
		{
			System.Data.SqlClient.SqlConnection.ClearAllPools();

			if (ContextUtil.IsInTransaction)
			{
				ContextUtil.SetAbort();
			}
		}
	}
}


Есть некоторые особенности использования, но они очень легко обходятся.
Я имел в виду, что при использовании низкого напряжения можно использовать малогабаритные выключатели либо, что на мой взгляд предпочтительнее, герконы.
>Управление местным освещением шкафа-купе
А не задумывались о небольшом изменении схемы включения?
Возможно что безопаснее будет на концевые выключатели подавать «безопасное» напряжение, а уже потом, через реле включать ленту.
Я конечно понимаю, что проекты бывают разные, и некоторые тесты могут работать довольно продолжительное время, но я придерживаюсь правила, что сборка из репозитария должна всегда работать и в команде сломанные билды не поощряем.

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

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

[TestCase(0, 0, 0)]
[TestCase(2, 0, 2)]
[TestCase(15, 1, 3)]
[TestCase(36, 3, 0)]
public void ConstructorSuccess(int ctorParam, int expectedFeet, int expectedRemainderInches)
{
    var testBox = new Size(ctorParam);
    Assert.That(testBox.Feet, Is.EqualTo(expectedFeet));
    Assert.That(testBox.RemainderInches, Is.EqualTo(expectedRemainderInches));
}
Я имел в виду, что при возникновении исключительной ситуации можно в один клик перейти на строку кода, в которой данное исключение произошло.

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

Что то мне подсказывает, что в принтере остается огромная механическая часть, которая намного чаще выходит из строя чем механизм позиционирования лазера. В конторе порядка 600 лазерных принтеров. За почти 15 лет не было обнаружено ни разу.
Небольшое дополнение по крепежу Молли(MOLLY, «зонтик»).
За последний месяц в Челябинске покупал около сотни этого крепежа размером 4/38 для крепления в гипсокартон 12 мм.
У каждого третьего при завинчивании болта срывалась резьба в гайке. Т.е. он не мог начать складывать зонтик.
>Я бы сначала проложил проводку + дырки под подрозетники
А как вы представляете себе штукатурить стены по маякам с уже продолбленными местами установок подрозетников? А если в итоге окажется, что в месте подрозетника толщина слоя штукатурки превышает 5 см? :)
Когда требуется провести уличный монтаж и при этом боле-менее аккуратно вместо ПВХ гофры лучше использовать ПВХ тонкостенные трубы, которые предназначены специально для прокладки кабеля. Для них выпускают всевозможные соединители, в том числе и кабельные сальники для герметичного ввода кабеля в распредкоробку.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность