小编Jam*_* Ko的帖子

我想将stdin解释为二进制文件.为什么freopen在Windows上失败?

TL; DR:为什么freopen(NULL, "rb", stdin)在Windows 上总是失败?

我正在尝试base64在C中重新实现一个从stdin获取输入并将编码的等价物输出到stdout的编码器.我之前的帖子中有一个问题fread是过早发出EOF信号.这是我的主要方法:

int main(void)
{
    unsigned char buffer[BUFFER_SIZE];
    unsigned char base64_buffer[BASE64_BUFFER];

    while (1)
    {
        TRACE_PUTS("Reading in data from stdin...");
        size_t read = fread(buffer, 1, sizeof(buffer), stdin); /* Read the data in using fread(3) */

        /* Process the buffer */

        TRACE_PRINTF("Amount read: %zu\n", read);
        TRACE_PUTS("Beginning base64 encode of buffer");
        size_t encoded = base64_encode(buffer, read, base64_buffer, sizeof(base64_buffer));

        /* Write the data to stdout */
        TRACE_PUTS("Writing data to standard output"); …
Run Code Online (Sandbox Code Playgroud)

c windows io stdio fread

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

Roslyn:如何确定表达式是否具有与某个运算符相同/更低优先级的运算符?

我正在编写一个Roslyn分析器,用三&&||运算符替换三元运算符中的布尔文字的用法.以下是代码修复提供程序应该执行的操作:

expr1 ? true : expr2 -> expr1 || expr2
expr1 ? false : expr2 -> !expr1 && expr2
expr1 ? expr2 : true -> !expr1 || expr2
expr1 ? expr2 : false -> expr1 && expr2
Run Code Online (Sandbox Code Playgroud)

这是我的代码的相关部分:

// In MA0002Analyzer.cs
internal static bool? ValueOfBoolLiteral(ExpressionSyntax expr)
{
    switch (expr.Kind())
    {
        case SyntaxKind.TrueLiteralExpression:
            return true;
        case SyntaxKind.FalseLiteralExpression:
            return false;
    }

    if (expr is ParenthesizedExpressionSyntax parenExpr)
    {
        return ValueOfBoolLiteral(parenExpr.Expression);
    }

    return null;
}

// In MA0002CodeFixProvider.cs
using static …
Run Code Online (Sandbox Code Playgroud)

.net c# roslyn

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

为什么ANTLR要求标记所有替代品或不标记替代品?

我是ANTLR的新手。我刚刚发现,可以像这样在生产中标记每个替代品:

foo
    : a # aLabel
    | b # bLabel
    | // ...
    ;
Run Code Online (Sandbox Code Playgroud)

但是,我发现必须标记所有替代方案或不标记替代方案是令人不快的。最近,我只需要标记具有20个以上分支的产品中的2个替代品,最后我标记了每个其他替代品# stubLabel。有什么理由要全部或不加标签?

grammar antlr antlr4

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

如何使用 NumPy 将一组数字提高到幂?

NumPy 具有loglog2log10方法,可以执行矢量化对数基数 e / 2 / 10(分别)。但是,对于进行逆运算(求幂),我只看到exp. 为什么没有exp2/exp10的/ etc?

我试过使用np.power(10, nums),但它不会让我提升到负幂。10 ** nums也不起作用。

python numpy python-3.x

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

Windows Batch:findstr未在for循环中设置错误级别

谁能向我解释以下摘要的打印原因0

@echo off
setlocal

for /f %%i in ('cmd /c echo blah') do (
    echo %%i | findstr bin > NUL
    echo %ERRORLEVEL%
)
Run Code Online (Sandbox Code Playgroud)

在for循环外添加另一个等效语句使它打印1 1

@echo off
setlocal

echo blah | findstr bin > NUL
echo %ERRORLEVEL%

for /f %%i in ('cmd /c echo blah') do (
    echo %%i | findstr bin > NUL
    echo %ERRORLEVEL%
)
Run Code Online (Sandbox Code Playgroud)

我是Batch的新手,因此这对我来说有点神秘,因为这两个语句似乎无关。任何帮助,将不胜感激,谢谢!

windows cmd batch-file command-prompt windows-10

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

如何在C中打印二进制数据?

我对 C 比较陌生。我有一个要打印到标准输出的二进制缓冲区,如下所示:

unsigned char buffer[1024];
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 printf 将其输出到 stdout?我查看了 printf 的手册页,但是没有提到 an unsigned char*,只有const char*for %s

我想我可以遍历缓冲区并执行putchar(buffer[i]),但是我认为这效率很低。有没有办法使用 printf 做到这一点?我应该改用类似的东西fwrite,那会更合适吗?

谢谢。

编辑:抱歉造成混乱,我不想将任何内容转换为十六进制/二进制表示法,只需按原样写出缓冲区即可。例如,如果我[0x41 0x42 0x42 0x41]在缓冲区中,那么我想打印“ABBA”。

c io printf

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

使用 Roslyn 突出显示 C# 语法的最佳方法是什么?

我正在尝试制作一个 Xamarin.Android 应用程序,突出显示许多不同语言的语法。我计划使用 ANTLR 来处理它们中的大部分,但对于 C#,我想使用 Roslyn,因为这无疑比 ANTLR 更快,错误更少。

使用 Roslyn 实现语法高亮的最佳方法是什么?为了突出 Java 语法,我采用的方法是将文本解析为解析树,并使用访问者为与每个终端关联的文本着色。你可以在这里查看我的代码。这对 Roslyn 来说也是一个好主意,还是 Roslyn 提供用于语法高亮显示的 API?(例如,Visual Studio 中语法高亮背后的代码是否存在于dotnet/roslyn 存储库中?)我真的不想重新发明轮子,但如果必须的话,我会这样做

编辑:我接受了塔马斯的回答,因为他的解决方案对我的用例来说是最实用的;我无法访问构建语义模型的完整解决方案,因此我将不得不进行一些自己的分析。但是,如果您的应用程序支持更广泛的 C# 集成并且可以构建语义模型,请查看 Jonathon Marolf 的回答中使用的 Roslyn 分类 API。

.net c# parsing roslyn

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

结合两个任务的最有效方法是什么?

我有两个Task想要按顺序运行的对象.目前,我运行它们的代码如下所示:

private async Task Advance(IToken token, SyntaxKind kind)
{
    await Approach(token);
    await Surpass(token, kind);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是结合它们的最有效方法吗?我知道async涉及很多状态机逻辑,所以使用它会更有效ContinueWith吗?

private Task Advance(IToken token, SyntaxKind kind)
{
    // TODO: This would take advantage of the overload accepting a state
    // parameter to avoid the closure allocation
    return Approach(token).ContinueWith(() => Surpass(token, kind));
}
Run Code Online (Sandbox Code Playgroud)

如果您认为它更有效,请随意指出另一种方法(既不是await也不是ContinueWith).谢谢.

注意:对于我的情况,我正在寻找结合两个非通用(无结果)Task的最好方法,但是为了谷歌遇到这个问题的人,可以Task<TResult>在你的答案中包括如何结合两个s.

.net c# multithreading task async-await

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

如何构建一个使用多个属性的基于内容的推荐系统?

我想在Python中构建一个基于内容的推荐系统,它使用多个属性来决定两个项是否相似.在我的例子中,"items"是由C#包管理器(示例)托管的包,它们具有各种属性,例如名称,描述,标签,可以帮助识别类似的包.

这里有一个原型推荐系统,目前只使用一个属性,描述来决定包是否相似.它计算了描述的TF-IDF排名,并根据以下内容打印出前10项建议:

# Code mostly stolen from http://blog.untrod.com/2016/06/simple-similar-products-recommendation-engine-in-python.html
Run Code Online (Sandbox Code Playgroud)
def train(dataframe):
    tfidf = TfidfVectorizer(analyzer='word',
                            ngram_range=(1, 3),
                            min_df=0,
                            stop_words='english')
    tfidf_matrix = tfidf.fit_transform(dataframe['description'])
    cosine_similarities = linear_kernel(tfidf_matrix, tfidf_matrix)
    for idx, row in dataframe.iterrows():
        similar_indices = cosine_similarities[idx].argsort()[:-10:-1]
        similar_items = [(dataframe['id'][i], cosine_similarities[idx][i])
                        for i in similar_indices]

        id = row['id']
        similar_items = [it for it in similar_items if it[0] != id]
        # This 'sum' is turns a list of tuples into a single tuple:
        # [(1,2), (3,4)] -> (1,2,3,4)
        flattened = sum(similar_items, ()) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas scikit-learn recommender-systems

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

PowerShell中的奇怪行为:在下标中调用Path.GetFullPath返回相对于外部脚本的路径

PowerShell的新手在这里.我注意到在编写脚本时Path.GetFullPath()会返回相对于外部脚本目录的路径.例如:

# In your PowerShell console...
cd ~/Downloads
echo "cd ..;[IO.Path]::GetFullPath('script.ps1')" > script.ps1
powershell -ExecutionPolicy Bypass './script.ps1'
Run Code Online (Sandbox Code Playgroud)

打印C:\Users\You\Downloads\script.ps1时,它应该打印C:\Users\You\script.ps1(注意cd ..).

这是PowerShell中的一个错误,有哪些方法可以避免这种情况?

.net c# powershell scripting path

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

为什么在引号中包装CMD的起始参数会导致它的行为不同?

这占用了我在批处理脚本中调试的大部分时间:

:: Opens up Chrome
start C:\cygwin64\home\james\code\cs\PolynomialReducer\reports\PolynomialReducer.Tests\index.htm

:: Opens a new command prompt
start "C:\cygwin64\home\james\code\cs\PolynomialReducer\reports\PolynomialReducer.Tests\index.htm"
Run Code Online (Sandbox Code Playgroud)

start如果将参数包装在引号中,为什么/有什么理由命令行为不同?

windows cmd batch-file command-prompt

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

grep -lv为什么不工作?

我想打印出文件的名称,当且仅当它不包含字符串时foo.但是,如果file包含foo和我运行它

grep -lv 'foo' file
Run Code Online (Sandbox Code Playgroud)

file 输出.为什么会发生这种情况,我该怎么做才能解决这个问题?

linux grep

0
推荐指数
2
解决办法
75
查看次数

nltk:如何将周围的单词词形还原?

以下代码打印出来leaf

from nltk.stem.wordnet import WordNetLemmatizer

lem = WordNetLemmatizer()
print(lem.lemmatize('leaves'))
Run Code Online (Sandbox Code Playgroud)

这可能准确,也可能不准确,具体取决于周围环境,例如Mary leaves the roomvs. Dew drops fall from the leaves. 我怎样才能告诉 NLTK 考虑到周围的上下文来对单词进行词形还原?

python nlp machine-learning nltk lemmatization

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