我正在使用的Less编译器(OrangeBits和dotless 1.3.0.5)正在积极地进行翻译
body { width: calc(100% - 250px - 1.5em); }
Run Code Online (Sandbox Code Playgroud)
成
body { width: calc(-151.5%); }
Run Code Online (Sandbox Code Playgroud)
这显然是不希望的.我想知道是否有办法向Less编译器发出信号,在编译期间基本上忽略该属性.我搜索了Less文档和两个编译器的文档,但我找不到任何东西.
Less或less编译器是否支持此功能?
如果没有,是否有一个CSS扩展器呢?
在节点v8.1.4和v6.11.1上
我开始使用以下echo服务器实现,我将其称为pipe.js或pipe.
const http = require('http');
const handler = (req, res) => req.pipe(res);
http.createServer(handler).listen(3001);
Run Code Online (Sandbox Code Playgroud)
我用wrk和下面的lua脚本(为简洁起见缩短了)对它进行了基准测试,它将发送一个小体作为有效载荷.
wrk.method = "POST"
wrk.body = string.rep("a", 10)
Run Code Online (Sandbox Code Playgroud)
每秒2k请求和44ms的平均延迟,性能不是很好.
所以我编写了另一个使用中间缓冲区的实现,直到请求完成,然后将这些缓冲区写出来.我将其称为 buffer.js或buffer.
const http = require('http');
const handler = (req, res) => {
let buffs = [];
req.on('data', (chunk) => {
buffs.push(chunk);
});
req.on('end', () => {
res.write(Buffer.concat(buffs));
res.end();
});
};
http.createServer(handler).listen(3001);
Run Code Online (Sandbox Code Playgroud)
性能发生了巨大变化,buffer.js每秒处理20k次请求,平均延迟为4ms.
在视觉上,下图描绘了超过5次运行和各种延迟百分位数的服务请求的平均数量(p50是中位数).
因此,缓冲区在所有类别中都要好一个数量级.我的问题是为什么?
接下来是我的调查笔记,希望它们至少具有教育意义.
这两个实现都是精心设计的,因此它们会给出与返回的完全相同的响应curl -D - --raw
.如果给出一个10 d's的主体,两者都将返回完全相同的响应(当然,修改时间): …
当我尝试在AVX2 256位向量中存储和加载 256位时,我在发布模式下没有收到预期的输出.
use std::arch::x86_64::*;
fn main() {
let key = [1u64, 2, 3, 4];
let avxreg = unsafe { _mm256_load_si256(key.as_ptr() as *const __m256i) };
let mut back_key = [0u64; 4];
unsafe { _mm256_storeu_si256(back_key.as_mut_ptr() as *mut __m256i, avxreg) };
println!("back_key: {:?}", back_key);
}
Run Code Online (Sandbox Code Playgroud)
在调试模式下:
back_key: [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
在发布模式下:
back_key: [1, 2, 0, 0]
Run Code Online (Sandbox Code Playgroud)
后半部分没有被加载或存储,我无法弄清楚哪一个.
什么是奇怪的是针对本机CPU工作.在发布模式+RUSTFLAGS="-C target-cpu=native"
back_key: [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我甚至试图通过强制对齐无法获得Clippy错误(我不确定下面的代码是否被认为更正确).
use std::arch::x86_64::*;
#[repr(align(256))]
#[derive(Debug)]
struct Key([u64; 4]);
fn main() {
let …
Run Code Online (Sandbox Code Playgroud) 一个相对简单的问题.我有一个datagridview,它只是显示统计信息.没有编辑/添加/删除行.datagridview绑定到List.我想要实现的是让用户能够对列进行排序.
class Market
{
public int Location {get;set;}
public float Value {get;set;}
//...
}
class City
{
public String Name {get;set;}
//...
}
List<Market> _markets;
List<City> _cities;
//Lists are populated.
dataGridView1.DataSource = _markets.Select(market =>
new { _cities[market.Location].Name, market.Value}).ToList();
Run Code Online (Sandbox Code Playgroud)
正如所料,列不可排序,但显示的信息是您想要的.我的问题是如何根据具有最少复杂和最少代码量的列类型进行DataGridView排序,因为代码将在整个过程中多次使用.
此应用程序用于使用具有视图的数据库.然后这些视图填充DataGridViews.观点仍然存在,因此可能的解决方案可能是:
DataBase.ViewMarketValue temp = new DataBase.ViewMarketValue()
_markets.ForEach(market => temp.AddViewMarketValueRow(_cities[market.Location].Name, market.Value);
dataGridView1.DataSource = temp;
Run Code Online (Sandbox Code Playgroud)
这导致了所需的:具有所有信息的数据网格视图,并且它是可排序的.唯一的问题是在这方面使用视图似乎是错误的.所以我该怎么做?
在为Windows 8创建应用程序时,我理解如何远离数据网格设计,如此stackoverflow问题所示.我仍然认为,在某些情况下,以表格格式显示数据仍然是有益的.实际上,默认的Window 8应用程序有很多表格数据的例子,如下面的截图所示.他们正是我想要的.
默认天气应用程序
默认的财务应用程序
但是,我的尝试并不富有成效(我甚至无法决定是使用listbox,listview还是gridview).我似乎无法在我的所有创作中创建列.在互联网上搜索几分钟后,我遇到了一个MSDN答案:
您需要通过重新模板化Listview/ListviewItem来创建非常自定义的外观
这真的是最好/最简单的方法吗?似乎我的要求很小.数据很小(20行左右),只读,非交互式(如所示的Window 8应用程序).我想要列,列标题和交替行样式.考虑到金融和天气应用程序中的表格数据有多常见,有人必须解决这个问题!
我有一个看似简单和令人尴尬的问题困难时期.我想要的只是IEnumberable中的下一个元素而不使用Skip(1).Take(1).Single().这个例子说明了基本问题.
private char _nextChar;
private IEnumerable<char> getAlphabet()
{
yield return 'A';
yield return 'B';
yield return 'C';
}
public void sortAlphabet()
{
foreach (char alpha in getAlphabet())
{
switch (alpha)
{
case 'A': //When A pops up, I want to get the next element, ie 'B'
_nextChar = getAlphabet().Skip(1).Take(1).Single();
break;
case 'B': //When B pops up, I want 'C' etc
_nextChar = getAlphabet().Skip(1).Take(1).Single();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了丑陋之外,这个例子也有效.但是,让我们说IEnumerable包含200万个元素,然后LINQ语句使程序执行速度难以忍受.我想要的很简单.我只想要IEnumberable <>中的下一个元素.如果有这样的功能,我的所有问题都将得到解决:
_nextChar = getAlphabet().moveNext() //or getNext()
Run Code Online (Sandbox Code Playgroud)
如果解决方案保持与示例相同的结构/布局/功能,则是更优选的,但是我是灵活的.我的程序是一个文件解析器,在200万行文本中有一些键,如"money = 324",其中"money"和"324"是IEnumberable中的邻居元素,当解析器出现"money"时,我想" 324" .(谁没有?:D对不起的双关语.)
在Jenkins中使用声明性管道,如何在多个版本的docker镜像中运行阶段.我想在python 2.7,3.5和3.6上执行以下jenkinsfile.下面是一个管道文件,用于在docker容器中构建和测试python项目
pipeline {
agent {
docker {
image 'python:2.7.14'
}
}
stages {
stage('Build') {
steps {
sh 'pip install pipenv'
sh 'pipenv install --dev'
}
}
stage('Test') {
steps {
sh 'pipenv run pytest --junitxml=TestResults.xml'
}
}
}
post {
always {
junit 'TestResults.xml'
}
}
}
Run Code Online (Sandbox Code Playgroud)
什么是最少量的代码,以确保相同的步骤跨python 3.5和3.6成功?希望是如果测试失败,很明显测试失败的版本.
或者是我要求的声明性管道不可能(例如,脚本化的管道可能是最优雅地解决这个问题的方法)
作为比较,这就是Travis CI允许您指定跨不同python版本运行的方式.
我的 cloudflare 工作人员站点包含 React 应用程序获取的二进制数据。该二进制数据以 gzip 压缩形式存储,因为它压缩得非常好(我们谈论的是 20-25 倍的压缩,未压缩时它太大,无法满足 10MB KV 限制)。我遇到的问题是工作人员返回的数据没有适当的标头:
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
或者如果我让工作人员添加标头,cloudflare 将双重压缩响应。那么,如何在 cloudflare KV 中存储 gzip 压缩数据,以便我可以使用正确的内容编码返回它,而无需 cloudflare 双重压缩响应?
为了最小化复制:这是我正在使用的两个工作脚本。
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
上面的工作脚本返回没有内容编码标头的二进制数据,因此浏览器不会自动膨胀响应。
所以然后我尝试通过手动添加标题
import { getAssetFromKV, mapRequestToAsset } from '@cloudflare/kv-asset-handler'
addEventListener('fetch', event => {
try {
event.respondWith(handleEvent(event))
} catch (e) {
event.respondWith(new Response('Internal Error', { status: 500 }))
}
})
async function handleEvent(event) {
const cacheControl = { browserTTL: 60 * 60 * 6 };
return await getAssetFromKV(event, { mapRequestToAsset, cacheControl });
}
Run Code Online (Sandbox Code Playgroud)
响应具有正确的内容编码,但 …
我正在构建一个简单的类型提供程序,但在引用我创建的类型时,我似乎遇到了问题.例如,给定
namespace Adder
type Summation = Summation of int
module QuickAdd =
let add x y = x + y |> Summation
Run Code Online (Sandbox Code Playgroud)
我想让以下测试用例通过:
module Adder.Tests
open Adder
open NUnit.Framework
type Simple = QuickAddProvider<1, 2>
[<Test>]
let ``Simple sample is 3`` () =
let foo = Simple()
Assert.AreEqual(foo.Sample, Summation 3)
Run Code Online (Sandbox Code Playgroud)
使用以下类型提供程序:
namespace Adder
open Microsoft.FSharp.Core.CompilerServices
open ProviderImplementation.ProvidedTypes
open System.Reflection
[<TypeProvider>]
type public QuickAddProvider (config : TypeProviderConfig) as this =
inherit TypeProviderForNamespaces ()
let ns = "Adder"
let asm = Assembly.GetExecutingAssembly()
let …
Run Code Online (Sandbox Code Playgroud) 今天我很震惊,有比较内心的倾向Buffer.BlockCopy
,Array.CopyTo.
我很好奇,看看是否在幕后Array.CopyTo
被召唤Buffer.BlockCopy
.这背后没有实际用途,我只想进一步了解C#语言及其实现方式.不要跳枪并指责我微观优化,但你可以指责我好奇!
当我在mscorlib.dll上运行ILdasm时,我收到了这个 Array.CopyTo
.method public hidebysig newslot virtual final
instance void CopyTo(class System.Array 'array',
int32 index) cil managed
{
// Code size 0 (0x0)
} // end of method Array::CopyTo
Run Code Online (Sandbox Code Playgroud)
这个 Buffer.BlockCopy
.method public hidebysig static void BlockCopy(class System.Array src,
int32 srcOffset,
class System.Array dst,
int32 dstOffset,
int32 count) cil managed internalcall
{
.custom instance void System.Security.SecuritySafeCriticalAttribute::.ctor() = ( 01 00 00 00 )
} // end of method Buffer::BlockCopy
Run Code Online (Sandbox Code Playgroud)
坦率地说,这令我感到困惑.我从未在我没有创建的dll/exe上运行ILdasm.这是否意味着我将无法看到这些功能是如何实现的?搜索周围只显示了一个stackoverflow问题 …
适用于 .NET Core 2.1+ 和 .NET Standard 2.1 的C# span 文档列表。在宣布 .NET Standard 2.1中,Span<T>
被列为该版本的第一大亮点。第 3 方文章还列出了Span<T>
.NET Standard 2.1 中添加的内容。
我理解这些证据意味着人们可以在 netstandard2.1 目标库中以与在 netcoreapp2.1 目标库中相同的方式使用 span。我在我的一个具有零依赖性的库中尝试了这一点,如果一个目标是 netcoreapp2.1,那么该库的跨度 API 就可用了——例如:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netcoreapp2.1;netstandard2.1</TargetFrameworks>
</PropertyGroup>
<!-- snip -->
<PropertyGroup Condition="'$(TargetFramework)'=='netcoreapp2.1' Or '$(TargetFramework)'=='netstandard2.1'">
<LangVersion>7.2</LangVersion>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
(代码片段中使用的 netstandard2.0 是目标示例,其中库不会公开Span
兼容的 API,因为它需要System.Memory
依赖项)
但情况似乎并非如此(针对 netstandard2.1 时出现“无法找到类型或命名空间 'Span<>' 的错误”)
这个库的目标是零依赖,所以我宁愿不依赖System.Memory
.
是否可以在没有依赖项的 netstandard 2.1 库中使用与在没有依赖项的 netcoreapp2.1 中Span
使用相同的方式?Span
编辑:答案是“是的,可以Span<T>
在 netstandard …
c# ×5
linq ×2
avx2 ×1
cloudflare ×1
compilation ×1
css ×1
css-calc ×1
css3 ×1
datagridview ×1
docker ×1
f# ×1
foreach ×1
http ×1
ienumerable ×1
il ×1
javascript ×1
jenkins ×1
less ×1
mscorlib ×1
node.js ×1
reflection ×1
rust ×1
simd ×1
sorting ×1
stream ×1
xaml ×1
yield ×1