如何编写PowerShell脚本是否有任何推荐的编码风格?
它不是关于如何构造代码(有多少函数,如果使用模块,......).它是关于" 如何编写代码以使其可读 ".
在编程语言中有一些推荐的编码样式(缩进的内容,如何缩进 - 空格/制表符,在哪里创建新行,在哪里放括号,...),但我还没有看到任何关于PowerShell的建议.
我特别感兴趣的是:
如何写参数
function New-XYZItem
( [string] $ItemName
, [scriptblock] $definition
) { ...
Run Code Online (Sandbox Code Playgroud)
(我看到它更像'V1'语法)
要么
function New-PSClass {
param([string] $ClassName
,[scriptblock] $definition
)...
Run Code Online (Sandbox Code Playgroud)
或(为什么要添加空属性?)
function New-PSClass {
param([Parameter()][string] $ClassName
,[Parameter()][scriptblock] $definition
)...
Run Code Online (Sandbox Code Playgroud)
或(我在Jaykul的代码中看到的其他格式)
function New-PSClass {
param(
[Parameter()]
[string]
$ClassName
,
[Parameter()]
[scriptblock]
$definition
)...
Run Code Online (Sandbox Code Playgroud)
要么 ...?
如何编写复杂的管道
Get-SomeData -param1 abc -param2 xyz | % {
$temp1 = $_
1..100 | % { …
Run Code Online (Sandbox Code Playgroud) 我已经配置了一些在登录之前可供所有用户使用的基本路由:
App.config(function ($routeProvider) {
$routeProvider.
when('/login', { templateUrl: 'views/login.html', controller: PageStartCtrl.Controller }).
otherwise({ redirectTo: '/login' });
});
Run Code Online (Sandbox Code Playgroud)
所以用户唯一能做的就是登录.用户登录后,我想注册其他路由,如下所示:
$http
.post('api/Users/Login', { User: userName, Password: userPassword })
.success(function (response : any) {
App.config(function ($routeProvider) {
$routeProvider
.when('/dashboard',
{ templateUrl: 'part/dashboard.html',
controller: DashboardCtrl.Controller });
});
Run Code Online (Sandbox Code Playgroud)
但是,我想我应该只调用一次.config方法,因为$ routeProvider是一个对/ login route一无所知的全新实例.进一步的调试向我展示了在解析视图更改时使用$ resourceProvider的第一个实例.
问:以后如何注册路线?
从路由和模板动态添加到$ routeProvider的解决方案可能有效,但是非常难看(涉及全局变量nastyGlobalReferenceToRouteProvider
).
我想学习.NET Microframework,发现有(尤其)Netduino与Arduino有某种兼容性.最近.NET Gadgeteer上市.有很多热情,所以它看起来像.NET Microframework的重要一步.
有可能以某种方式比较它们吗?我不确定哪些任务更好Netduino以及Gadgeteer的任务.或者他们实际上是完全不同的野兽?
我无法从主页上的信息中读到这些内容,因为主要是营销材料.
假设我的控制器中有一个通过jQuery AJAX调用调用的方法.我想删除一个用户.当一切顺利时,我返回新内容('ok')并退出方法.
发生错误时该怎么办?我想通过适当的状态代码来表明它,以便调用我的错误回调.为什么状态代码?在这里阅读: 如何使用ASP.NET MVC在jQuery AJAX调用中触发"错误"回调?
但是,该方法不起作用,因为IIS7返回自己的自定义错误消息的消息(错误请求).
除此之外还有另外两个:
错误回调可能如下所示:error:function(request){alert(request.responseText);}
假设我有这些表
create table bug (
id int primary key,
name varchar(20)
)
create table blocking (
pk int primary key,
id int,
name varchar(20)
)
insert into bug values (1, 'bad name')
insert into bug values (2, 'bad condition')
insert into bug values (3, 'about box')
insert into blocking values (0, 1, 'qa bug')
insert into blocking values (1, 1, 'doc bug')
insert into blocking values (2, 2, 'doc bug')
Run Code Online (Sandbox Code Playgroud)
我想在id
列上加入表格,结果应该是这样的:
id name blockingName
----------- -------------------- --------------------
1 …
Run Code Online (Sandbox Code Playgroud) 我在Firefox中打开了很多标签.在我关闭Firefox然后再次运行它之后,选项卡就在那里.没关系.
但是,Firefox有时会崩溃,我的标签会丢失.如何获取打开的选项卡并将列表备份到某个文件?
(使用文件中的选项卡,我也可以使用Git,SVN或其他任何内容来存储它们,并可选择找到我在浏览器中看到的但不记得它是什么的链接.)
到目前为止我得到了什么:
我能够获得一些URL,但这似乎不是我在Firefox中看到的:
$c = ((gc c:\Users\..\AppData\Roaming\Mozilla\Firefox\Profiles\xfvj8vd5.default\sessionstore.js ) -join '')
$sess = [Jayrock.Json.Conversion.JsonConvert]::Import( $c.trim('()') )
$sess.windows[0].tabs |
% { $_.entries } |
% { $_.url } |
Select-Object -Unique
Run Code Online (Sandbox Code Playgroud)
请不要告诉我"使用这个插件或那个插件".我真的很想按照我的描述去做.
在Erlang中引入了绿色线程,并且可能所有基于它的语言都知道它们,也在go(gorutines)中.然后afaik他们被除锈.
我的问题:
我们测量了一些执行测试,我注意到CPU在内核模式下运行了很多时间.我想知道为什么会这样.
应用程序:它是经典的Azure云服务Web角色,其中Owin正在IIS下监听,而Owin本身只提供缓存在内存中的静态文件(因此应该只有一点性能损失,而且每个都应该非常快).内容将复制await stream.CopyToAsync(response.Body)
到输出流.
测试本身在加特林看起来像这样:
val openLoginSet = exec(http("ROOT")
.get("/")
.headers(Headers105Test2.headers_0)
.resources(
http("MED: arrow-down-small.png").get(uriIconAssets + "/arrow-down-small.png").headers(Headers105Test2.headers_1),
http("MED: arrow-up-small.png").get(uriIconAssets + "/arrow-up-small.png").headers(Headers105Test2.headers_1),
http("MED: close-medium.png").get(uriIconAssets + "/close-medium.png").headers(Headers105Test2.headers_1),
http("MED: decline-medium.png").get(uriIconAssets + "/decline-medium.png").headers(Headers105Test2.headers_1),
http("MED: help-medium.png").get(uriIconAssets + "/help-medium.png").headers(Headers105Test2.headers_1),
http("MED: submit-medium.png").get(uriIconAssets + "/submit-medium.png").headers(Headers105Test2.headers_1),
http("MED: delete-medium.png").get(uriIconAssets + "/delete-medium.png").headers(Headers105Test2.headers_1),
http("MED: en-us.js").get("/en-us.js").headers(Headers105Test2.headers_8),
http("MED: cloud_logo_big.png").get("/assets/cloud_logo_big.png").headers(Headers105Test2.headers_1),
http("MED: favicon.ico").get("/favicon.ico").headers(Headers105Test2.headers_0))
val httpProtocol = http
.baseURL("https://myurl.com")
.inferHtmlResources()
val openLoginSenario = scenario("OpenOnly").exec(repeat(400, "n") {
exec(openLoginSet).pause(3,6)
})
setUp(openLoginSenario.inject(rampUsers(150) over (3 minutes)))
.protocols(httpProtocol)
.maxDuration(3 minutes)
Run Code Online (Sandbox Code Playgroud)
(我将测试缩短为运行3分钟只是为了捕获这里显示的数据)有3台计算机运行此gatling测试,每个计算机最多150个并发线程,总共450个线程.
我看到内核中运行的代码很多,而W3wp进程并没有占用大部分CPU:
测试刚刚启动时捕获的CPU(添加新线程时cpu正在上升):
当测试几乎在结束之前捕获CPU:
内核模式看起来很糟糕,我不确定是什么原因造成的.应该几乎没有涉及锁.当阅读其他可能导致高内核模式的内容时,我发现DPC可能会导致它.所以我也捕获了一些DPC数据,但我不确定什么是正常的,什么不是.无论如何,具有DPC最大时间的图表也包括在sshot中.
vmbus.sys从所有DPC中获取最重要的时间.这意味着Azure实例不是任何裸机(并不令人惊讶),并且该实例与其他实例共享它的计算能力.据我了解,vmbus.sys负责网卡本身与托管的HyperV实例之间的通信.可能在HyperV中运行是低性能的主要原因?
我想知道在哪里查看,以及如何在我的情况下找出导致内核模式的原因.
更多数据:
测试开始时的部分DPC数据(在30秒内拍摄):
Total …
Run Code Online (Sandbox Code Playgroud) 有一个问题在这里;)
我有这个功能:
function Set-DbFile {
param(
[Parameter(ValueFromPipeline=$true)]
[System.IO.FileInfo[]]
$InputObject,
[Parameter(ValueFromPipelineByPropertyName=$true)]
[scriptblock]
$Properties
)
process {
$InputObject | % {
Write-Host `nInside. Storing $_.Name
$props = & $Properties
Write-Host ' properties for the file are: ' -nonew
write-Host ($props.GetEnumerator()| %{"{0}-{1}" -f $_.key,$_.Value})
}
}
}
Run Code Online (Sandbox Code Playgroud)
看看$Properties
.应对每个文件进行评估,然后进一步处理文件和属性.
示例如何使用它可能是:
Get-ChildItem c:\windows |
? { !$_.PsIsContainer } |
Set-DbFile -prop {
Write-Host Creating properties for $_.FullName
@{Name=$_.Name } # any other properties based on the file
}
Run Code Online (Sandbox Code Playgroud)
当我将函数复制并粘贴Set-dbFile
到命令行并运行示例代码段时,一切都很好.
但是,当我将函数存储在模块中,导入它并运行该示例时,该$_ …
来自html5的Canvas是不久前推出的.目前它(几乎)只用于演示它有多酷 - 它主要与绘画,游戏和图表有关.其中许多都可以在Canvas演示中找到.
画布的创造性/异常性如何?
一些例子:
powershell ×3
.net ×1
ajax ×1
angularjs ×1
asp.net-mvc ×1
azure ×1
c# ×1
callback ×1
canvas ×1
clr ×1
coding-style ×1
concurrency ×1
cpu-usage ×1
deferred ×1
dynamic ×1
firefox ×1
html ×1
html5 ×1
left-join ×1
mysql ×1
netduino ×1
performance ×1
scope ×1
sql ×1
t-sql ×1
url-routing ×1
variables ×1