小编Ant*_*rin的帖子

所有Cygwin应用程序的启动速度都非常慢

在Windows 8.1 x64上启动任何Cygwin应用程序需要一分多钟.不要紧,无论是我开始mintty从快捷方式或cygwin.batls.exebash.exe从bin文件夹.他们每个人都会很慢.

在Bash或mintty开始之后,他们的工作相当快:

$ time for i in {1..10} ; do bash -c "echo Hello" ; done
Hello
...
Hello

real    0m1.273s
user    0m0.060s
sys     0m1.181s
Run Code Online (Sandbox Code Playgroud)

步骤,我试过:

  • 重新安装并尝试了几次Cygwin和Cygwin64(版本2.864)
  • 以管理员身份启动它们
  • 试图在Windows 7兼容模式下运行它们
  • 在此回复中禁用LAN的"自动检测设置"
  • 在同一回复中添加127.0.0.1 localhost cygdrive wpad到主机
  • 将防病毒设置为禁用状态
  • 检查未安装Bash完成(没有/etc/bash_completion.d文件夹)
  • 在设备管理器中禁用所有可移动驱动器(仅限系统SSD和数据HDD)
  • 试图用空etc/profile.d文件夹运行
  • 试图用空etc/bash.bashrc文件运行

我怎么能找到根本原因?

PS - 我有两个不同的系统,笔记本电脑和台式机都使用Windows 8.1 64位.这个问题在两者上都是100%可重复的.

此外,如果我在登录后几秒钟启动Bash,它会立即启动.

windows cygwin windows-8.1

36
推荐指数
3
解决办法
2万
查看次数

在客户端JavaScript中读取逐行文件

你可以帮我解决以下问题.

目标

在客户端(通过JS和HTML5类在浏览器中)逐行读取文件,而不将整个文件加载到内存中.

脚本

我正在处理网页,它应解析客户端的文件.目前,我正在阅读本文中描述的文件.

HTML:

<input type="file" id="files" name="files[]" />
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$("#files").on('change', function(evt){
    // creating FileReader
    var reader = new FileReader();

    // assigning handler
    reader.onloadend = function(evt) {      
        lines = evt.target.result.split(/\r?\n/);

        lines.forEach(function (line) {
            parseLine(...);
        }); 
    };

    // getting File instance
    var file = evt.target.files[0];

    // start reading
    reader.readAsText(file);
}
Run Code Online (Sandbox Code Playgroud)

问题是FileReader立即读取整个文件,这会导致大文件崩溃的选项卡(大小> = 300 MB).使用reader.onprogress不能解决问题,因为它只会增加结果,直到它达到极限.

发明一个轮子

我已经在互联网上做了一些研究,并没有找到任何简单的方法来做到这一点(有很多文章描述了这个确切的功能,但在服务器端为node.js).

作为解决它的唯一方法,我只看到以下内容:

  1. 按块拆分文件(通过File.split(startByte, endByte)方法)
  2. 在该块中找到最后一个新行字符('/ n')
  3. 读取除最后一个新行字符后的部分以外的那个块,并将其转换为字符串并按行分割
  4. 从第2步中找到的最后一个新行字符开始读取下一个块

但我最好使用现有的东西来避免熵增长.

html javascript html5 client-side filereader

22
推荐指数
2
解决办法
3万
查看次数

点源函数从函数内部的文件到全局范围

我想从文件中导入外部函数,而不是将其转换为模块(我们有数百个每个函数的文件,所以将它们视为模块是过度的).

这是代码说明.请注意我在Import-Function中有一些额外的逻辑,比如添加脚本根文件夹并检查文件是否存在并抛出特殊错误,以避免每个需要这种导入的脚本中的代码重复.

C:\库\ Foo.ps1:

Function Foo {
    Write-Host 'Hello world!'
}
Run Code Online (Sandbox Code Playgroud)

C:\ InvocationTest.ps1:

# Wrapper func
Function Import-Function ($Name) {
    # Checks and exception throwing are omitted
    . "C:\Repository\$name.ps1"

    # Foo function can be invoked in this scope
}

# Wrapped import
Import-Function -Name 'Foo'
Foo          # Exception: The term 'Foo' is not recognized

# Direct import
. "C:\Repository\Foo.ps1"
Foo          # 'Hello world!'
Run Code Online (Sandbox Code Playgroud)

是否有任何技巧,将源点到全球范围?

powershell

11
推荐指数
2
解决办法
3645
查看次数

为PowerShellGet创建纯PowerShell Nuget模块

我想要的是

我想将许多PowerShell脚本发布为构建系统上使用的Nuget包.

我想使用PowerShellGet为我和版本管理做安装工作.

我不希望这些脚本成为任何Visual Studio解决方案的一部分,而是作为独立脚本.

使用场景

在任何系统上,配置的Nuget提供程序用户执行:

Install-Module MyModule
Run Code Online (Sandbox Code Playgroud)

从那时起,该模块的所有导出将永久可供该用户使用.用户也可以再次调用该命令来更新这些脚本的版本.

我做了什么

你可以在这里找到当前的包状态:GitHub

  1. 我已将Nuget提供程序添加并配置到我们的本地Nuget服务器

    要做这个电话Get-PackageProvider -Name NuGet -ForceBootstrapSet-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted

  2. 创建了适当的模块,可以通过本地导入 Import-Module
  3. 使用该模块创建并发布了Nuget包

问题

我可以通过Install-Modulecmdlet 安装该软件包,稍后我会在Get-InstalledModule列表中看到它.

但是,没有可用的功能.

此外,无论如何,但Install-Module不从我的包中调用任何脚本:

  • 不调用ScriptsToProcessMyModule.psd1
  • 没有Install.ps1tools文件夹调用
  • 没有Init.ps1tools文件夹调用
  • 模块导出的Cmdlet不可用,模块无法导入 Import-Module

(从Visual Studios安装时,相同的包正常工作Install-Package MyModule,调用脚本,导入PowerShell模块).

调查

因为PowerShellGet基于OneGet它似乎问题是在Install-Packagecmdlet(在cmdlet中调用Install-Module). …

powershell nuget oneget powershellget

10
推荐指数
1
解决办法
3930
查看次数

双跳访问复制文件而不使用CredSSP

你好,

我们拥有数百台虚拟机的大型环境.在我们的服务部署期间,我们需要将一些文件从build drop复制到所有这些机器.

所以,我们有:

  • 用户机器,其中部署脚本正在执行
  • 构建丢弃机器,文件所在的位置
  • 目标机器

Powershell用作脚本语言.就像是:

$buildDrop     = "\\sourceMachine\Build"
$machineTarget = "targetMachine"

Invoke-Command -ComputerName $machineTarget -ArgumentList $buildDrop -ScriptBlock {
     Param( $buildDrop )
     Test-Path $buildDrop # Will return False
}
Run Code Online (Sandbox Code Playgroud)

这种方法导致双跳问题,由于在XP和2k3机器上不支持CredSSP功能,我无法解决这个问题.在用户计算机上调用的副本会导致性能瓶颈(数据通过用户计算机传输).

是否有任何方法可以使所有目标机器始终显示构建丢弃?可能以某种方式将它们添加到受信任的位置或类似的东西?

提前致谢!

windows powershell remoting windows-xp remote-access

7
推荐指数
1
解决办法
7500
查看次数

Register-PSRepository上的Web Uri错误无效

在Windows 11月更新(PackageManagement以及PowerShellGet1.0.0.1版本的模块)之后,我无法再将HTTPS NuGet服务器注册为PSRepository:

Register-PSRepository -Name test -SourceLocation https://some-nuget/api/v2
Run Code Online (Sandbox Code Playgroud)

它返回错误:

# Register-PSRepository : The specified Uri 'https://some-nuget/api/v2' for parameter 'SourceLocation' is an invalid Web Uri. Please ensure that it meets the Web Uri requirements.
Run Code Online (Sandbox Code Playgroud)

powershell oneget powershellget

7
推荐指数
2
解决办法
5488
查看次数

通过打字稿和业力来宣传项目

设置和目标

打字稿项目,使用打字稿mocha测试.项目应该从Typescript转换到ES6,然后通过Babel转换成几个可发送的捆绑包.

我想通过Karma(最终是BrowserStack)在浏览器中运行所有测试,而不是将由babel生成的相同转换版本.

尝试和问题

我有karma-typescript + mocha工作,但仅限于es2017兼容的浏览器.问题是插入两者之间的babel.
我想我已经尝试了我能想到的一切,但是:

还有上述所有以及更多的变化,其中没有一个起作用.

有希望的设置 karma-babel-preprocessor

我认为这应该是一个正确的方法,所以我发布了一个项目,我目前的状态:https://github.com/anpur/karma-typescript-babelify.

这是我的一部分karma.conf.js:

frameworks: ['mocha', 'karma-typescript'],

preprocessors: {
  'src/*.ts': ['karma-typescript', 'babel'],
},

babelPreprocessor: {
  options: {
    presets: [
      [ 'es2015' ]
    ]
  }
},

karmaTypescriptConfig: {
    compilerOptions: {
      sourceMap: true,
      target: 'es6'
    },
    bundlerOptions: {
      addNodeGlobals: true,
      sourceMap: true
    },
    tsconfig: './tsconfig.json'
},
Run Code Online (Sandbox Code Playgroud)

Karma能够在这个设置中进行转换 …

babel typescript karma-runner karma-babel-preprocessor karma-typescript

6
推荐指数
1
解决办法
451
查看次数

即将到期的Lazy <T>课程

.NET库中是否有任何可以作为过期的类Lazy<T>

这个想法是Func<T>值工厂lambda在那里传递并且仅在第一次或者超时传递时调用.

我已经创建了简单的类来做到这一点,但我想避免发明一个轮子.

public class ExpiringLazy<T>
{
    private readonly object valueGetLock = new object();
    private readonly Func<T> valueFactory;
    private readonly TimeSpan timeout;

    private T cachedValue;
    private DateTime cachedTime;

    public T Value
    {
        get
        {
            Thread.MemoryBarrier();

            if (cachedTime.Equals(default(DateTime)) || DateTime.UtcNow > cachedTime + timeout)
            {
                lock (valueGetLock)
                {
                    if (cachedTime.Equals(default(DateTime)) || DateTime.UtcNow > cachedTime + timeout)
                    {
                        cachedValue = valueFactory();
                        Thread.MemoryBarrier();
                        cachedTime = DateTime.UtcNow;
                    }
                }
            }

            return cachedValue;
        }
    } 

    public ExpiringLazy(Func<T> valueFactory, TimeSpan timeout)
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# base-class-library

5
推荐指数
1
解决办法
728
查看次数

-ErrorAction参数被忽略,有利于$ ErrorActionPreference

无论,$ErrorActionPreference变量和-ErrorActioncmdlet的参数应该定义的行为是非终止错误.

由于变量是全局的,并且参数特定于cmdlet调用,因此我希望该参数覆盖变量.事实上,我找不到任何情况,哪里-ErrorAction做任何事情.

$expression = 'Write-Error "non-terminating error"'

# No exception
$ErrorActionPreference = 'Continue'
Invoke-Expression -Command $expression

# Exception
$ErrorActionPreference = 'Stop'
Invoke-Expression -Command $expression

# No exception, why?
$ErrorActionPreference = 'Continue'
Invoke-Expression -Command $expression -ErrorAction Stop

# Exception, why?
$ErrorActionPreference = 'Stop'
Invoke-Expression -Command $expression -ErrorAction Continue
Run Code Online (Sandbox Code Playgroud)

PS - 我发现了这个问题,但它更侧重于相关问题而非优先级问题.

error-handling powershell

5
推荐指数
1
解决办法
1237
查看次数

Python LINQ 之类的方法

作为 Python 的新手,我真的很想念 LINQ 方法。我发现了这个这个问题,这对我理解 Python 可枚举和生成器的工作方式有很大帮助。

但是,我想使用好的旧方法,如 Select、SelectMany、First、Last、Group、Distinct 等。

我知道,所有情况都可以由生成器和/或表达式处理,但它会降低代码的可读性。

python linq collections list-comprehension

3
推荐指数
2
解决办法
4259
查看次数

通过CSS获取所有可用的视口高度

插图

有一种方法可以在不知道上面元素的高度的情况下迫使div占据所有可用高度?

如果知道高度,则可以使用vh单位,例如,如果height: 100vh - 30px;#header 的高度为30px,则可以将其应用于#view。

我在jsFiddle中做了一个小例子:

<div id="header">
    Header
</div>
<div id="view">
    View
</div>

#header {
    height: 50px;
}
#view {
    height: calc(100vh - 50px);
}
Run Code Online (Sandbox Code Playgroud)

html css height html5 viewport

1
推荐指数
1
解决办法
4609
查看次数