在离开这个话题 20 多年(自从我获得 CS 本科学位以来)之后,我又回到了语言设计/规范(通过 BNF/EBNF 语法)。
我只是模糊地记得这个领域的各种相关术语,比如 LR(1)、LALR 等。我一直在尝试通过一些谷歌搜索和阅读来刷新,但它来得很慢(可能是因为我没有完全理解这些东西回到学校)。所以我可能做事相当粗略。
我决定用语法来描述一种玩具语言,然后尝试分析并可能优化它,作为我重新学习的一部分。
注意:下面的所有片段也可以在此处的要点中找到。
我从 EBNF 表示开始(由该工具处理/验证):
Program := WhSp* (StmtSemi WhSp*)* StmtSemiOpt? WhSp*;
Stmt := AStmt | BStmt | CStmt | DStmt;
StmtSemi := Stmt? (WhSp* ";")+;
StmtSemiOpt := Stmt? (WhSp* ";")*;
WhSp := "_";
AStmt := "a";
BStmt := "b";
CStmt := "c";
DStmt := "d";
Run Code Online (Sandbox Code Playgroud)
以下是该语言的一些有效匹配(每行一个匹配):
_____
;;;;;
_;_;_
a
__a__
a;
a;b;
a;_b;
_a;_b;_
_a_;_b_;_
__a__;;
_;_a;_b;c;;;__;;__d;___a___
Run Code Online (Sandbox Code Playgroud)
这里有一些该语言中没有的值(同样,每行一个):
ab
a_b
a;_b_c
Run Code Online (Sandbox Code Playgroud)
然后我将其手动转换为以下 BNF 形式( …
我想将文本文件中的所有数字缩写(例如 1K、100K、1M 等)转换为纯数值,例如 1000、100000、1000000 等。
例如,如果我有以下文本文件:
1.3K apples
87.9K oranges
156K mangos
541.7K carrots
1.8M potatoes
Run Code Online (Sandbox Code Playgroud)
我想在 bash 中将其转换为以下内容:
1300 apples
87900 oranges
156000 mangos
541700 carrots
1800000 potatoes
Run Code Online (Sandbox Code Playgroud)
我使用的命令是用完整的数值替换匹配的数字缩写字符串,如下所示:
sed -e 's/1K/1000/g' -e 's/1M/1000000/g' text-file.txt
Run Code Online (Sandbox Code Playgroud)
我的问题是,当发生变化时,我无法找到并替换所有可能的数字缩写。我想这样做直到至少有一位十进制缩写。
我希望
echo foo | tee /proc/self/fd/{3..6} 3>&1
Run Code Online (Sandbox Code Playgroud)
因/ proc / self / fd / 4之类的错误而失败:没有这样的文件或目录等,但令我惊讶的是,它输出
foo
foo
foo
foo
foo
Run Code Online (Sandbox Code Playgroud)
就像3>&1导致以下所有描述符都重定向到stdout一样,除非如果我更改3为其他内容则不起作用,例如
echo foo | tee /proc/self/fd/{3..6} 3>&1
Run Code Online (Sandbox Code Playgroud)
有这种行为的解释吗?
新方法Object.hasOwn()返回一个布尔值,指示指定对象是否将指定属性作为其自己的属性,但也有Object.prototype.hasOwnProperty(),它们之间有什么区别,使用其中一个相对于另一个有什么好处?
javascript prototypal-inheritance javascript-objects hasownproperty
在使用 GA4 view_cart、begin_checkout、add_ payment_info 事件作为项目数组 Price 参数时,会在 GA 调试视图中附加多个零。
例如:我们发送的商品价格如下
gtag('event', "view_cart", {
currency:'MXN',
items:[
{
"item_id":"84162903",
"item_name":"Multipack Magnum Mini Cl\u00e1sica 60ml",
"quantity":14,
"affiliation":"MI16",
"discount":0,
"item_brand":"Magnum",
"item_category":"Multipack",
"item_variant":"",
"price":24040.8,
"currency":"MXN",
"coupon":null
},
{
"item_id":"68199453",
"item_name":"Pinta Magnum Almendras 440ML",
"quantity":14,
"affiliation":"MI16",
"discount":0,
"item_brand":"Magnum",
"item_category":"Helado",
"item_variant":"",
**"price":9570.96**,
"currency":"MXN",
"coupon":null
},
{
"item_id":"67536209",
"item_name":"Magnum Double Caramelo 93ML",
"quantity":14,
"affiliation":"MI16",
"discount":0,
"item_brand":"Magnum",
"item_category":"Paletas",
"item_variant":"",
"price":7654.5,
"currency":"MXN",
"coupon":null
},
{
"item_id":"209045",
"item_name":"Magnum Mini Almendras Multipack",
"quantity":14,
"affiliation":"MI16",
"discount":0,
"item_brand":"Magnum",
"item_category":"Paletas",
"item_variant":"",
"price":7295.4,
"currency":"MXN",
"coupon":null
} …Run Code Online (Sandbox Code Playgroud) 我有一个运行 Net 6 Preview 4 的简单 Blazor WASM,我使用本指南进行设置:
确切的代码与 Net 5.0 完美配合(使用相应的 Net 5.0 程序集)
但是,当我升级到 Net 6 时,我收到以下身份验证错误:
There was an error trying to log you in: 'Cannot read property 'toLowerCase' of undefined'
Run Code Online (Sandbox Code Playgroud)
我似乎也无法获得更多细节。这是在 Azure 应用服务自包含发布上发布的。
代码可以在这里找到: https ://github.com/aherrick/BlazorWASM.Net6Prev4.AzureAD
我在使用 Nuxt 设置新的 Google Analytics 4 (GA4) 帐户时遇到问题。根据教程,一切似乎都配置好了,但是我的流量没有显示在 GA(开发和生产)中
在 nuxt.config.js 我有以下内容
buildModules: [
'@nuxtjs/tailwindcss','@nuxtjs/google-analytics'
],
googleAnalytics: {
id: 'G-HWW3B1GM6W'
},
Run Code Online (Sandbox Code Playgroud)
google id 是我的生产网站的 GA4 数据流 id。我尝试了 2 个不同的流,有 www 和没有 www,但流量没有出现在 GA4 中。
我一直在尝试在我的应用程序中使用 react-ga 包和 google analytics 4。测量 ID 无法使用它,并且我可以使用的 google 分析 4 中没有跟踪代码。拜托,我需要帮助!
import ReactGA from 'react-ga';
const trackingId = 'G-XXXXXXXXXX'; // UA-XXXXXXXXX-X isn't available in GA4
ReactGA.initialize(trackingId, options);
ReactGA.pageview(page);
Run Code Online (Sandbox Code Playgroud) google-analytics google-analytics-api reactjs react-ga google-analytics-4
我想以编程方式将自定义事件发送到新的 Google Analytics(分析),而不是先在 GTM 中定义它。
我正在使用 Google 跟踪代码管理器,根据这篇文章: https ://developers.google.com/analytics/devguides/collection/ga4/translate-events
这只能通过在 GTM 本身中定义事件来实现。我不能这样做,并且想继续使用旧方法执行此操作,您可以这样做:
if ("ga" in window) {
var tracker = ga.getAll()[0];
if (tracker) {
tracker.send("event", eventCategory, eventAction);
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用 JavaScript 和新的 Google Analytics (GA4) 来实现这种效果?
window.gtag未定义,因为我使用 GTM,并且window.ga未定义,因为我使用 GA4。GTM 中配置的唯一标签是“Google Analytics:GA4 配置”。
javascript google-analytics google-tag-manager google-analytics-4
看起来 Spring Data r2dbc 不支持复合主键。这是一个已知问题吗?
我没有看到对@Embedded 的支持。