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) 我正在编写一个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) 我是ANTLR的新手。我刚刚发现,可以像这样在生产中标记每个替代品:
foo
: a # aLabel
| b # bLabel
| // ...
;
Run Code Online (Sandbox Code Playgroud)
但是,我发现必须标记所有替代方案或不标记替代方案是令人不快的。最近,我只需要标记具有20个以上分支的产品中的2个替代品,最后我标记了每个其他替代品# stubLabel。有什么理由要全部或不加标签?
NumPy 具有log、log2和log10方法,可以执行矢量化对数基数 e / 2 / 10(分别)。但是,对于进行逆运算(求幂),我只看到exp. 为什么没有exp2/exp10的/ etc?
我试过使用np.power(10, nums),但它不会让我提升到负幂。10 ** nums也不起作用。
谁能向我解释以下摘要的打印原因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的新手,因此这对我来说有点神秘,因为这两个语句似乎无关。任何帮助,将不胜感激,谢谢!
我对 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”。
我正在尝试制作一个 Xamarin.Android 应用程序,突出显示许多不同语言的语法。我计划使用 ANTLR 来处理它们中的大部分,但对于 C#,我想使用 Roslyn,因为这无疑比 ANTLR 更快,错误更少。
使用 Roslyn 实现语法高亮的最佳方法是什么?为了突出 Java 语法,我采用的方法是将文本解析为解析树,并使用访问者为与每个终端关联的文本着色。你可以在这里查看我的代码。这对 Roslyn 来说也是一个好主意,还是 Roslyn 提供用于语法高亮显示的 API?(例如,Visual Studio 中语法高亮背后的代码是否存在于dotnet/roslyn 存储库中?)我真的不想重新发明轮子,但如果必须的话,我会这样做。
编辑:我接受了塔马斯的回答,因为他的解决方案对我的用例来说是最实用的;我无法访问构建语义模型的完整解决方案,因此我将不得不进行一些自己的分析。但是,如果您的应用程序支持更广泛的 C# 集成并且可以构建语义模型,请查看 Jonathon Marolf 的回答中使用的 Roslyn 分类 API。
我有两个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.
我想在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
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中的一个错误,有哪些方法可以避免这种情况?
这占用了我在批处理脚本中调试的大部分时间:
:: 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如果将参数包装在引号中,为什么/有什么理由命令行为不同?
我想打印出文件的名称,当且仅当它不包含字符串时foo.但是,如果file包含foo和我运行它
grep -lv 'foo' file
Run Code Online (Sandbox Code Playgroud)
file 输出.为什么会发生这种情况,我该怎么做才能解决这个问题?
以下代码打印出来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 考虑到周围的上下文来对单词进行词形还原?
.net ×4
c# ×4
python ×3
windows ×3
batch-file ×2
c ×2
cmd ×2
io ×2
roslyn ×2
antlr ×1
antlr4 ×1
async-await ×1
fread ×1
grammar ×1
grep ×1
linux ×1
nlp ×1
nltk ×1
numpy ×1
pandas ×1
parsing ×1
path ×1
powershell ×1
printf ×1
python-3.x ×1
scikit-learn ×1
scripting ×1
stdio ×1
task ×1
windows-10 ×1