小编Att*_*nen的帖子

Gatsby:如何在构建时将数据传递给 React Context

我有一个Gatsby 站点,我在其中使用 React Context 提供主题(标题、页脚、样式等)。现在我想将上次构建时间添加到页脚,例如“上次更新时间:11 月 13 日 23:08”。我怎样才能做到这一点?

显然,如果我只是将 buildTime 放在 Context Provider 中或创建它的 React Component 中的任何地方,那么时间将随着每次刷新(而不是每次构建)更新。

我想我应该能够buildTime = new Date()gatsby-node.jscreatePages API 中进行设置,然后在 pageContext 中传递 buildTime。但是在将它传递给几个 React 组件之后,我最终需要将它传递给<ThemeContext.Consumer>. 我无法将道具传递给上下文消费者。

我想出的最佳解决方案是将构建时间写入文件,然后从文件中加载该信息,这显然很糟糕,所以如果有更好的解决方案就好了。

reactjs gatsby

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

地图内的Scala Spark过滤器

我想在映射 RDD 时有效地过滤它。那可能吗?

这是我想要做的伪代码:

for element in rdd:
    val opt = f(element)
    if (opt.nonEmpty) add_pair(opt.get, element)
Run Code Online (Sandbox Code Playgroud)

这是在 Scala Spark 中实现伪代码的一种hacky 方法:

rdd.map(element => (
    f(element).getOrElse(99),
    element
)).filter(tuple => tuple._1 != 99)
Run Code Online (Sandbox Code Playgroud)

我找不到干净的语法来做到这一点,所以我首先映射了所有元素,然后过滤掉了我不想要的元素。请注意,潜在昂贵的调用f(element)仅计算一次。如果我在映射之前过滤元素(看起来更干净),那么我最终会调用f两次,这是低效的。

请不要将此标记为重复。虽然有类似的问题,但没有一个真正回答这个问题。例如,这个潜在的重复会调用f两次,这是低效的,因此不回答这个问题。

scala apache-spark

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

IntelliJ 用于 Java 项目的默认构建过程是什么?

在 IntelliJ 中直接从 IDE 构建 Java 项目非常好。它很快,而且很有效。我找不到任何关于 IntelliJ 如何执行这些默认构建的文档。我猜它使用Ant?我想要做的是为下载我的项目的任何人自动化这个快速而轻松的构建过程。那可能吗?

我通常使用 Maven,但它非常慢且容易出错。实际上,我什至无法将其转换为 Maven 项目,因为尽管根据官方文档中的示例设置了依赖项,Maven 仍然拒绝找到 JUnit。我还尝试从 IDE 生成 Ant 构建文件,但这些文件不能立即使用,并且在谷歌搜索之后,似乎这不是一个好方法?

java ant intellij-idea maven

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

Pandas append() row 具体示例

我的问题是如何使用 DataFrame 的 append() 方法干净地向 DataFrame 追加一行?

根据docs,append() 将“DataFrame 或 Series/dict-like 对象,或这些对象的列表”作为参数鉴于描述,我认为这样的事情应该是可能的,但我找不到正确的语法:

df = pd.DataFrame(columns=('x', 'y', 'label'))
df.append([2, 4, 1]) # Does not work
Run Code Online (Sandbox Code Playgroud)

我可以追加一行,df.loc[len(df)] = [4, 4, 1]但这不是很干净。

pandas

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

GatsbyJS Service Worker 配置不尊重“networkFirst”,继续提供陈旧数据

我有一个 GatsbyJS 网站,我要部署到 Netlify。每当我导航到我的网站时,Service Worker 都会为我提供该网站的旧版本并在后台发送请求,以便我下次获得更新的版本。我认为访问我网站的用户看到的版本可能是几天前的版本是不可接受的。只要网络可用,我希望 Service Worker 获取新版本,并且仅在离线模式下提供旧版本。我找不到有关如何实现这一点的任何文档。

基于此GatsbyJS文档这个针线文档我想它应该努力从改变策略staleWhileRevalidatenetworkFirst。他们没有在任何地方提供完整的例子,所以我不得不猜测语法,看起来我的猜测不正确。谁能提供一个完整的示例,说明如何配置 gatsby-plugin-offline 以实现合理的行为?

caching browser-cache service-worker gatsby workbox

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

img srcset,浏览器选择过大的图片

这是 Gatsby 生成的图像 srcset:

<source type="image/webp" srcset="
/static/be21c7dd0d11c74c18530fc39aefa922/10917/mailboxes.webp 200w,
/static/be21c7dd0d11c74c18530fc39aefa922/21f2d/mailboxes.webp 400w,
/static/be21c7dd0d11c74c18530fc39aefa922/fdc6a/mailboxes.webp 800w,
/static/be21c7dd0d11c74c18530fc39aefa922/e7f3d/mailboxes.webp 1200w,
/static/be21c7dd0d11c74c18530fc39aefa922/faacb/mailboxes.webp 1600w,
/static/be21c7dd0d11c74c18530fc39aefa922/acdd2/mailboxes.webp 1800w" 
sizes="(max-width: 800px) 100vw, 800px">
Run Code Online (Sandbox Code Playgroud)

我的图像显示在最多 800 像素宽的容器中,所以这是我希望浏览器选择的方式:

if screenWidth > 400 then choose 800w
if screenWidth > 200 then choose 400w
else choose 200w
Run Code Online (Sandbox Code Playgroud)

但是,浏览器实际上总是选择尽可能大的图像(即使我将浏览器的大小调整为 200 宽度)。

我相信问题出在这里:

sizes="(max-width: 800px) 100vw, 800px"

应该有~3个条件,对吧?相反,只有 1 个条件。我不确定我什至能够解释这个条件试图要求浏览器做什么。

下面是我的 GraphQL 代码:

edges {
    node {
      excerpt
      fields {
        slug
        prefix
      }
      frontmatter {
        title
        tags
        cover {
          children {
            ... on ImageSharp …
Run Code Online (Sandbox Code Playgroud)

html dpi highdpi retina-display gatsby

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

Ruby on Rails的今年

如何在Ruby on Rails中获得当前年份?

我尝试过各种各样的东西,包括

  • Date.current.year
  • Time.now.year

问题是,如果在启动服务器之后年份发生变化(例如新年之后),它们会返回前一年.

相关代码:

型号brewery.rb

class Brewery < ActiveRecord: :Base
...
validates :year, numericality: { only_integer: true, less_than_or_equal_to: Date.today.year }
...
Run Code Online (Sandbox Code Playgroud)

创建新啤酒厂时会出现问题,因此我假设每当该操作发生时都会评估Date.today.year.

ruby ruby-on-rails date

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

Jadira 依赖导致 AbstractMethodError

尝试启动 SpringApplication 时,使用 Maven 添加 Jadira 依赖项会导致 AbstractMethodError。堆栈跟踪中没有任何帮助;它没有引用我自己的任何类。是什么导致了这个错误,我该如何解决?

这是依赖项:

<dependency>
    <groupId>org.jadira.usertype</groupId>
    <artifactId>usertype.core</artifactId>
    <version>3.1.0.CR1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪的一部分:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError
    ...
    at sec.project.CyberSecurityBaseProjectApplication.main(CyberSecurityBaseProjectApplication.java:17) [classes/:na] // this is simply the line that launches the Spring app
    ...
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-1.4.2.RELEASE.jar:1.4.2.RELEASE]
Caused by: java.lang.AbstractMethodError: null
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:280) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
    ...
Run Code Online (Sandbox Code Playgroud)

FWIW,我试图做这个

java spring hibernate jpa maven

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