凑诗

文章 评论 浏览 28

凑诗 2025-02-20 16:32:36

我从这种情况下找到了一种简单的半自动方法:使用Regex在Subroutine声明后立即添加__Function__的硬编码定义。从makefile内部完成的工作将注意每个编译都会刷新__function__宏。

假设我们有一个f77列表,看起来像该

文件“ my-file.f”,

  SUBROUTINE my_sub(var1, var2, var3)
  INCLUDE 'some-include.PRM'
  INTEGER var1
  INTEGER var2

  ! the rest of my code here
  WRITE(*,*)__FUNCTION__

  END SUBROUTINE

我想将其转换为

文件'my_file.ff'

  SUBROUTINE my_sub(var1, var2, var3)
#undef __FUNCTION__
#define __FUNCTION__ "my_sub"
  INCLUDE 'some-include.PRM'
  INTEGER var1
  INTEGER var2

  ! the rest of my code here
  WRITE(*,*)__FUNCTION__

END SUBROUTINE

注意,修订的代码现在位于 enter 源文件中:<代码> my-file.ff

操作。

my-file.o: my-file.F
    perl -pne 's/^(\s+SUBROUTINE\s*)([^(]+)(\(.*\))/$1$2$3\n#undef __FUNCTION__\n#define __FUNCTION__ _S($2)/ixms' 
lt; > 
lt;.F; \
    $(FC) $(CPPFLAGS) $(FCFLAGS) -c 
lt;.F -o $@

要执行此 文件:

  • 不确定的__function__宏,可能是之前定义的。
  • 在子例程定义下方添加__function__ __指令两行,其中包含子例程的名称。
  • 将文件保存在另一个名称下。
  • 将新源编译到所需的对象文件中。

结果应为 my-file.o 在这种情况下。

您可能已经注意到我也在使用宏_s()。这是一个“弦乐”宏。您只需要将其添加到fortran文件的顶部(我将其放在我到处都包含的config.h中),

GNU和Intel的实现不同:

#ifdef __INTEL_COMPILER
#define _S(x) #x
#else
#define _S(x) "x"
#endif 

I found an easy semi-automated way out of this situation: use regex to add a hardcoded definition of __FUNCTION__ right after the SUBROUTINE declaration. Done from within the makefile will take care that every compilation refreshes the __FUNCTION__ macro.

Suppose we have a F77 listing that looks like this

file 'my-file.F'

  SUBROUTINE my_sub(var1, var2, var3)
  INCLUDE 'some-include.PRM'
  INTEGER var1
  INTEGER var2

  ! the rest of my code here
  WRITE(*,*)__FUNCTION__

  END SUBROUTINE

I want to convert it to

file 'my_file.F.F'

  SUBROUTINE my_sub(var1, var2, var3)
#undef __FUNCTION__
#define __FUNCTION__ "my_sub"
  INCLUDE 'some-include.PRM'
  INTEGER var1
  INTEGER var2

  ! the rest of my code here
  WRITE(*,*)__FUNCTION__

END SUBROUTINE

Note the amended code is now located in another source file: my-file.F.F

To do this I added the following lines to 'Makefile'

my-file.o: my-file.F
    perl -pne 's/^(\s+SUBROUTINE\s*)([^(]+)(\(.*\))/$1$2$3\n#undef __FUNCTION__\n#define __FUNCTION__ _S($2)/ixms' 
lt; > 
lt;.F; \
    $(FC) $(CPPFLAGS) $(FCFLAGS) -c 
lt;.F -o $@

Assuming FC is defined as the fortran compiler executable, this should perform the following procedure on all the subroutines in the file:

  • undefine a __FUNCTION__ macro that was possibly defined earlier.
  • Add a __FUNCTION__ directive two lines below the SUBROUTINE definition, containing the subroutine's name.
  • save the file under another name.
  • compile the new source into the required object file.

The result should be my-file.o in this case.

You may have noticed that I'm using the macro _S() as well. This is a 'stringify' macro. You just need to add it to the top of your fortran file (I place it inside a config.h that I include everywhere)

There is a different implementation for GNU and intel:

#ifdef __INTEL_COMPILER
#define _S(x) #x
#else
#define _S(x) "x"
#endif 

fortran查询并打印出功能或子例程名称

凑诗 2025-02-20 11:53:30

更改:

<img src="https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photo_reference=Aap_uEA7vb0DDYVJWEaX3O-AtYp77AaswQKSGtDaimt3gt7QCNpdjp1BkdM6acJ96xTec3tsV_ZJNL_JP-lqsVxydG3nh739RE_hepOOL05tfJh2_ranjMadb3VoBYFvF0ma6S24qZ6QJUuV6sSRrhCskSBP5C1myCzsebztMfGvm7ij3gZT&key="+{apiKey}/>

到:

<img src=`https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photo_reference=Aap_uEA7vb0DDYVJWEaX3O-AtYp77AaswQKSGtDaimt3gt7QCNpdjp1BkdM6acJ96xTec3tsV_ZJNL_JP-lqsVxydG3nh739RE_hepOOL05tfJh2_ranjMadb3VoBYFvF0ma6S24qZ6QJUuV6sSRrhCskSBP5C1myCzsebztMfGvm7ij3gZT&key=${apiKey}`/>

change :

<img src="https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photo_reference=Aap_uEA7vb0DDYVJWEaX3O-AtYp77AaswQKSGtDaimt3gt7QCNpdjp1BkdM6acJ96xTec3tsV_ZJNL_JP-lqsVxydG3nh739RE_hepOOL05tfJh2_ranjMadb3VoBYFvF0ma6S24qZ6QJUuV6sSRrhCskSBP5C1myCzsebztMfGvm7ij3gZT&key="+{apiKey}/>

to :

<img src=`https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photo_reference=Aap_uEA7vb0DDYVJWEaX3O-AtYp77AaswQKSGtDaimt3gt7QCNpdjp1BkdM6acJ96xTec3tsV_ZJNL_JP-lqsVxydG3nh739RE_hepOOL05tfJh2_ranjMadb3VoBYFvF0ma6S24qZ6QJUuV6sSRrhCskSBP5C1myCzsebztMfGvm7ij3gZT&key=${apiKey}`/>

可以在typecript reactj中与变量的连接图像URL可以连接图像URL

凑诗 2025-02-20 10:58:34

只是修复了问题...

mymaps组件映射.jsx文件具有这样的错误输出

  if (loadError) return 'Error';
  if (!isLoaded) return 'Loading...';

而不是这样,这是JSX方式

  if (loadError) {
    return <div>Map cannot be loaded right now, sorry.</div>;
  }
  if (!isLoaded) {
    return <div>Loading...</div>;
  }

Just fixed the issue...

MyMaps component maps.jsx file had the error output like this

  if (loadError) return 'Error';
  if (!isLoaded) return 'Loading...';

instead of this way, which is the JSX way

  if (loadError) {
    return <div>Map cannot be loaded right now, sorry.</div>;
  }
  if (!isLoaded) {
    return <div>Loading...</div>;
  }

&#x27; mymaps&#x27;不能用作JSX组件

凑诗 2025-02-20 03:40:02

根据您提供的方程式,您期望的列向量是由逆(a)*b = x的解决方案给出的,我认为这就是为什么它不起作用的原因。正确的方法是

# solving the matrix
matrix1_inv = np.linalg.inv(matrix1)
solution = np.linalg.solve(matrix1_inv, matrix2)
center_x = solution[0]/2
center_y = solution[1]/2
radius = math.sqrt(solution[2]/2 + (center_x)**2 + (center_y)**2)/2

According to the equation you are giving, the column vector you expect is given by the solution of inverse(A)*B = x, I think that's why it doesn't work. The right way to do it is

# solving the matrix
matrix1_inv = np.linalg.inv(matrix1)
solution = np.linalg.solve(matrix1_inv, matrix2)
center_x = solution[0]/2
center_y = solution[1]/2
radius = math.sqrt(solution[2]/2 + (center_x)**2 + (center_y)**2)/2

线性方法使用最小二乘法圈子拟合

凑诗 2025-02-19 21:00:26

我更喜欢 @itagaki的答案,但值得注意的是, findall 也可以使用:

import re
text = "12345678 abcdefg 37394822 gdzdnhqihdzuiew 09089799 78998728 gdjewdwq"
re.findall(r"\d+(?:\s+[a-z]+)?", text)
  #=> ['12345678 abcdefg', '37394822 gdzdnhqihdzuiew', '09089799', '78998728 gdjewdwq']

demo

正则表达式可以分解如下。

\d+       # match one or more digits
(?:       # begin a non-capture group
  \s+     # match one or more whitespaces
  [a-z]+  # match one or more lowercase letters
)         # end non-capture group
?         # make non-capture group optional

如果需要完全有8位数字,并且字符串小写字母的长度在(例如)7和15之间(如示例),则将其正则稍微修改:

r"\d{8}(?:\s+[a-z]{7,15})?"

I prefer @Itagaki's answer but it's worth noting that findall could also be used:

import re
text = "12345678 abcdefg 37394822 gdzdnhqihdzuiew 09089799 78998728 gdjewdwq"
re.findall(r"\d+(?:\s+[a-z]+)?", text)
  #=> ['12345678 abcdefg', '37394822 gdzdnhqihdzuiew', '09089799', '78998728 gdjewdwq']

Demo

The regular expression can be broken down as follows.

\d+       # match one or more digits
(?:       # begin a non-capture group
  \s+     # match one or more whitespaces
  [a-z]+  # match one or more lowercase letters
)         # end non-capture group
?         # make non-capture group optional

If it were required that there be exactly 8 digits and that the strings lowercase letters have lengths between (say) 7 and 15 (as in the example), the regex would be modified slightly:

r"\d{8}(?:\s+[a-z]{7,15})?"

拆分琴弦而无需删除分离器

凑诗 2025-02-19 14:30:23

nvm 旨在作为每个用户脚本,如前所述在这里。
它被克隆并安装到每个用户的主机中。
因此,您需要通过关注
安装说明来再次安装它。 。

对于其他命令,请检查您的路径是否正确,或者如果也以每个用户为基础安装命令,例如 nvm

nvm is intended as a PER-USER script, as stated here.
It is cloned and installed into the home-directory of each individual user.
Therefore, you need to install it again by following the installation instructions.

For other commands, please check that your PATH is correct, or if the command is also installed on a per-user basis like nvm.

在Linux中创建新用户后,如何使用root中的命令?

凑诗 2025-02-19 12:35:17

根据您给出的东西,这可以正常工作。这里还有其他东西,但我认为问题不是列表理解〜

text = """import re
pattern = re.compile(r"==.+==")
z = [pattern.sub('', x) for x in y]"""

try:
    y = ['hi']
    exec(text)
    assert 'pattern' in locals()
except AssertionError:
    print('Error')

print(z)

输出:

['hi']

Based off of what you've given, this works fine. There's something else missing here, but I don't think the issue is the list comprehension~

text = """import re
pattern = re.compile(r"==.+==")
z = [pattern.sub('', x) for x in y]"""

try:
    y = ['hi']
    exec(text)
    assert 'pattern' in locals()
except AssertionError:
    print('Error')

print(z)

Output:

['hi']

为什么如果要执行的字符串包含列表理解,为什么Python的Exec()函数失败?

凑诗 2025-02-19 10:18:58

通常,身份验证插件(实现 auth_on_register -hook)将对经纪人提供内部响应。如果插件对客户端进行身份验证,则响应将为 ok 。响应也可以是下一个告诉代理当前插件无法验证客户端,因此代理应该只需检查 next 插件即可。

这主要是一种允许用户链接自己的插件的方法。由于与蚊子格式兼容的原因,它没有针对基于文件的插件实现。
但是,您可以轻松地在 vmq_diversity 插件中实现链条,因为您可以调整LUA脚本。

  1。这是Vernemq的预期行为吗?
 

现在,是的,请参见上述说明

  2。如果没有,如何启用多个auth插件?
 

通过使插件返回下一个而不是身份验证错误。然后,Verne将只需遍历所有插件,直到它用尽插件来询问。您将始终看到典型的 plugin_chain_exhausted 记录为被拒绝客户端的原因。让我知道您何时需要更多帮助。

  3。启用了多个auth插件,他们以什么顺序进行检查?
 

按负载顺序检查它们(无论是通过 vernemq.conf 文件内部加载插件,还是通过插件启用命令在外部加载插件)。该顺序也应在 vmq-admin插件show 命令中可见。

In general, an authentication plugin (implementing the auth_on_register-hook) will give an internal response to the broker. If the plugin authenticates the client, the response will be ok. The response can also be next to tell the broker that the current plugin cannot authenticate the client, so the broker should just go check the next plugin.

This was mostly intended a way to allow users to chain their own plugins. It was not implemented for the file-based plugin, for reasons of compatibility to the Mosquitto format.
You can easily implement a chain in a vmq_diversity plugin, though, as you can adapt the Lua scripts.

1. Is this the expected behaviour of vernemq?

Right now, yes, see above explanation

2. If not, how can multiple auth plugins be enabled?

By making the plugins return next instead of an authentication error. Verne will then just go through all the plugins until it runs out of plugins to ask. You will always see the typical plugin_chain_exhausted logged as a reason for a rejected client. Let me know when you need more help with that.

3. With multiple auth plugins enabled, in what order are they checked?

They are checked in load order (whether you load the plugins internally via vernemq.conf file or externally via the plugin enable command). The order should be visible in the vmq-admin plugin show command too.

在Vernemq中启用多个身份验证/授权插件

凑诗 2025-02-19 08:05:28

我会使用从实例编辑值的方法。

。此方法采用目标
该字段作为价值参数,应返回
应用来序列化目标的表示形式。值
参数通常是模型实例。

换句话说,您可以使用to_presentation()方法来添加甚至不存在模型中的字段中的值。就像您想在其中添加另一个字段,例如“ Apple”:5 您可以,尽管它在 self self.meta.model 中不存在。

因此,我自由地量身定制这样的答案,就像我正常情况一样。像这样,您有更多的自由可以在没有框架的许多验证的情况下使用数据做任何您想做的事情。

class ExampleSerializer(serializers.ModelSerializer):

    class Meta:
        model = DataProviderModel
        fields = "__all__"

    def analyze_data(self, data):
        # do all things needed here.
        return analyzed_data

    def analyze_analyzed_data(self, analyzed_data):
        # do all things needed here.
        return analyzed_analyzed_data
     
    def to_representation(self, instance):

        analyzed_data = self.analyzed_data(instance.data)
        analyzed_analyzed_data = self.analyzed_analyzed_data(analyzed_data)

        data = {
                "data": instance.data,
                "analyzed_data": analyzed_data,
                "analyzed_analyzed_data": analyzed_analyzed_data
                }

         return data

I would use the to_reprensentation() approach to edit the values from instance.

.to_representation(self, value) method. This method takes the target
of the field as the value argument, and should return the
representation that should be used to serialize the target. The value
argument will typically be a model instance.

In other words, you can use the to_representation() method to even add values that does not even exists into the fields from the model. Like if you want to add another field to it like "apple":5 you can, although it does not exist in the self.Meta.model.

Therefore, I took the freedom to tailor the answer like this as I do normally. Like this you have much more freedom to do whatever you want with the data without many validations from the framework.

class ExampleSerializer(serializers.ModelSerializer):

    class Meta:
        model = DataProviderModel
        fields = "__all__"

    def analyze_data(self, data):
        # do all things needed here.
        return analyzed_data

    def analyze_analyzed_data(self, analyzed_data):
        # do all things needed here.
        return analyzed_analyzed_data
     
    def to_representation(self, instance):

        analyzed_data = self.analyzed_data(instance.data)
        analyzed_analyzed_data = self.analyzed_analyzed_data(analyzed_data)

        data = {
                "data": instance.data,
                "analyzed_data": analyzed_data,
                "analyzed_analyzed_data": analyzed_analyzed_data
                }

         return data

在另一个方法字段中使用序列化方法字段

凑诗 2025-02-19 04:44:48

NPM上的v.8.4.4有一个问题,

更改您的软件包。JSON并改用8.4.3!

将其固定在

  "resolutions": {
    "@types/eslint": "8.4.3"
  }

https://classic.yarnpkg.com/ “对于 npm

  "overrides": {
    "@types/eslint": "8.4.3"
  }

更多有关NPM中覆盖值的信息更多信息
我如何覆盖NPM依赖的NPM依赖性版本?

有关问题的更多信息(在此处检查):

“某物出了问题”

There is an issue with v.8.4.4 on the NPM

Change your package.json and use 8.4.3 instead!

Pin it in "resolutions" for yarn

  "resolutions": {
    "@types/eslint": "8.4.3"
  }

or "overrides" for npm

  "overrides": {
    "@types/eslint": "8.4.3"
  }

more info about overriding values in NPM:
How do I override nested NPM dependency versions?

more about issue (check it here):

something went wrong

404尝试使用Create-React-App安装ESLINT 8.4.4时找不到

凑诗 2025-02-18 18:57:28

使用 tatter =“ https://docs.oracle.com/javase/7/docs/api/java/java/util/regex/regex/matcher.html” rel =“ nofollow noreferrer”> Matcher> Matcher 带有

Pattern pattern = Pattern.compile("ParamField\\(paramName=(.+), paramValue=(.+)\\)");

var result = Stream.of(
                "ParamField(paramName=Thomas, paramValue=Admitted)",
                "ParamField(paramName=Martin, paramValue=Discarded)",
                "ParamField(paramName=Steve, paramValue=Admitted)"
        ).map(pattern::matcher)
        .filter(Matcher::find)
        .map(m -> String.format("%s-%s", m.group(1), m.group(2)))
        .collect(Collectors.joining(";"));

System.out.println(result);

Using Pattern and Matcher classes with Stream API:

Pattern pattern = Pattern.compile("ParamField\\(paramName=(.+), paramValue=(.+)\\)");

var result = Stream.of(
                "ParamField(paramName=Thomas, paramValue=Admitted)",
                "ParamField(paramName=Martin, paramValue=Discarded)",
                "ParamField(paramName=Steve, paramValue=Admitted)"
        ).map(pattern::matcher)
        .filter(Matcher::find)
        .map(m -> String.format("%s-%s", m.group(1), m.group(2)))
        .collect(Collectors.joining(";"));

System.out.println(result);

我如何使用Java8或Regex通过Mutliple定界器解析字符串

凑诗 2025-02-18 17:36:00

不是100%确定您要如何处理所有狭窄的显示等。但是

  • &lt; div class =“。the -drop”&gt; 删除标记中类上的
  • 期限在您有问题的情况下,与CSS在一起的时间删除了一些问题,以回到“基本”这项工作。我这样做了,并调整了一些CSS选择器。我认为不需要绝对
  • 借助弯曲,然后显示块,它会跳动一点,但我会把它留给您。
.nav-list {
  list-style: none;
  border: 1px solid blue;
  display: flex;
  flex-flow: row wrap;
  align-items: start;
  justify-content: space-around;
  color: white;
  background-color: #429CD9;
}

#hire-dropdown {
  cursor: pointer;
  background-color: #429CD9;
}

.the-drop,
.drop-1-list,
.drop-2-list {
  display: none;
}

#hire-dropdown:hover * {
  display: grid;
}

#hire-dropdown .the-drop {
  grid-template-areas: "drop-1-list drop-2-list";
  grid-template-columns: 1fr 1fr;
}

.drop-1-list,
.drop-2-list {
  background-color: white;
  border: 1px solid black;
  list-style: none;
}

.drop-1-list {
  grid-area: "drop-1-list";
}

.drop-2-list {
  grid-area: "drop-2-list";
}
<nav>
  <ul class="nav-list">
    <li>Nothing</li>
    <li class="to-hire">
      <div id="hire-dropdown">To Hire
        <div class="the-drop">
          <ul class="drop-1-list">
            <li><a href="#">Access</a></li>
            <li><a href="#">Breaking</a></li>
            <li><a href="#">Compaction</a></li>
            <li><a href="#">Cooling</a></li>
            <li><a href="#">Drilling</a></li>
            <li><a href="#">Lifting</a></li>
            <li><a href="#">Sanding</a></li>
            <li><a href="#">Sawing</a></li>
          </ul>
          <ul class="drop-2-list">
            <li><a href="#">Product 1</a></li>
            <li><a href="#">Product 2</a></li>
            <li><a href="#">Product 3</a></li>
            <li><a href="#">Product 4</a></li>
            <li><a href="#">Product 5</a></li>
          </ul>
        </div>

      </div>
    </li>
  </ul>
</nav>

Not 100% sure how you want to handle all the narrow displays etc. but

  • <div class=".the-drop"> remove the period on the class in the markup
  • Remove some CSS - most of the time with CSS when you have issues remove some to get back to "basic" this work your way to your goal. I did that and adjusted some CSS selectors. No need for the absolute I think.
  • with the flex and then display of the blocks it jumps around a bit but I will leave that to you as to how you address that.

.nav-list {
  list-style: none;
  border: 1px solid blue;
  display: flex;
  flex-flow: row wrap;
  align-items: start;
  justify-content: space-around;
  color: white;
  background-color: #429CD9;
}

#hire-dropdown {
  cursor: pointer;
  background-color: #429CD9;
}

.the-drop,
.drop-1-list,
.drop-2-list {
  display: none;
}

#hire-dropdown:hover * {
  display: grid;
}

#hire-dropdown .the-drop {
  grid-template-areas: "drop-1-list drop-2-list";
  grid-template-columns: 1fr 1fr;
}

.drop-1-list,
.drop-2-list {
  background-color: white;
  border: 1px solid black;
  list-style: none;
}

.drop-1-list {
  grid-area: "drop-1-list";
}

.drop-2-list {
  grid-area: "drop-2-list";
}
<nav>
  <ul class="nav-list">
    <li>Nothing</li>
    <li class="to-hire">
      <div id="hire-dropdown">To Hire
        <div class="the-drop">
          <ul class="drop-1-list">
            <li><a href="#">Access</a></li>
            <li><a href="#">Breaking</a></li>
            <li><a href="#">Compaction</a></li>
            <li><a href="#">Cooling</a></li>
            <li><a href="#">Drilling</a></li>
            <li><a href="#">Lifting</a></li>
            <li><a href="#">Sanding</a></li>
            <li><a href="#">Sawing</a></li>
          </ul>
          <ul class="drop-2-list">
            <li><a href="#">Product 1</a></li>
            <li><a href="#">Product 2</a></li>
            <li><a href="#">Product 3</a></li>
            <li><a href="#">Product 4</a></li>
            <li><a href="#">Product 5</a></li>
          </ul>
        </div>

      </div>
    </li>
  </ul>
</nav>

如何使用多个相邻列表创建下拉列表&#x27;

凑诗 2025-02-18 08:08:23

您可以使用此自定义库(用承诺书写)进行远程调用。

function $http(apiConfig) {
    return new Promise(function (resolve, reject) {
        var client = new XMLHttpRequest();
        client.open(apiConfig.method, apiConfig.url);
        client.send();
        client.onload = function () {
            if (this.status >= 200 && this.status < 300) {
                // Performs the function "resolve" when this.status is equal to 2xx.
                // Your logic here.
                resolve(this.response);
            }
            else {
                // Performs the function "reject" when this.status is different than 2xx.
                reject(this.statusText);
            }
        };
        client.onerror = function () {
            reject(this.statusText);
        };
    });
}

简单用法示例:

$http({
    method: 'get',
    url: 'google.com'
}).then(function(response) {
    console.log(response);
}, function(error) {
    console.log(error)
});

You can use this custom library (written using Promise) to make a remote call.

function $http(apiConfig) {
    return new Promise(function (resolve, reject) {
        var client = new XMLHttpRequest();
        client.open(apiConfig.method, apiConfig.url);
        client.send();
        client.onload = function () {
            if (this.status >= 200 && this.status < 300) {
                // Performs the function "resolve" when this.status is equal to 2xx.
                // Your logic here.
                resolve(this.response);
            }
            else {
                // Performs the function "reject" when this.status is different than 2xx.
                reject(this.statusText);
            }
        };
        client.onerror = function () {
            reject(this.statusText);
        };
    });
}

Simple usage example:

$http({
    method: 'get',
    url: 'google.com'
}).then(function(response) {
    console.log(response);
}, function(error) {
    console.log(error)
});

如何从异步电话中返回响应?

凑诗 2025-02-18 02:55:55

使用 config 表只有1行并将其与您的表进行跨加入,您的查询可以像下面一样写入。

WITH config AS (
  SELECT DATE_TRUNC(DATE_TRUNC(CURRENT_DATE(), MONTH)+7,ISOWEEK) AS initial,
         LAST_DAY(DATE_TRUNC(CURRENT_DATE(), MONTH)+7, ISOWEEK) AS final
),
HelloWorld AS (
  SELECT * FROM UNNEST([DATE '2022-06-06']) shop_date, config
   WHERE shop_date >= config.initial AND shop_date <= config.final
)
SELECT * FROM HelloWorld;

With config table having just 1 row and cross-joining it with your table, your query can be written like below.

WITH config AS (
  SELECT DATE_TRUNC(DATE_TRUNC(CURRENT_DATE(), MONTH)+7,ISOWEEK) AS initial,
         LAST_DAY(DATE_TRUNC(CURRENT_DATE(), MONTH)+7, ISOWEEK) AS final
),
HelloWorld AS (
  SELECT * FROM UNNEST([DATE '2022-06-06']) shop_date, config
   WHERE shop_date >= config.initial AND shop_date <= config.final
)
SELECT * FROM HelloWorld;

在预定查询bigquery中声明变量;

凑诗 2025-02-17 05:11:28

只需使用&lt; scrollview&gt; 而不是&lt; keyboardAwaresCrollview&gt;

Just use a <ScrollView> rather than <KeyboardAwareScrollView>

反应本机键盘意识滚动视图挤压内容

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

更多

友情链接

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文