小编Luk*_*uke的帖子

通过缓存电子表格值提高脚本性能

我正在尝试使用 Google Apps 脚本开发一个 web 应用程序以嵌入到 Google 站点中,该站点仅显示 Google 表格的内容并使用一些简单的参数对其进行过滤。至少目前是这样。稍后我可能会添加更多功能。

我有一个功能强大的应用程序,但发现过滤通常需要一段时间,因为客户端有时必须等待最多 5 秒才能收到来自服务器的响应。我认为这很可能是因为每次调用电子表格时我都使用 SpreadsheetApp 类按 ID 加载电子表格。

我决定doGet使用 CacheService在我的函数中缓存电子表格值,而是每次都从缓存中检索数据。

然而,出于某种原因,这意味着二维数组现在被视为一维数组。因此,当在 HTML 表格中显示数据时,我最终得到一列,每个单元格都被一个字符占据。

这就是我实现缓存的方式;据我从 API 参考中得知,我没有做错任何事情:

function doGet() {
  CacheService.getScriptCache().put('data', SpreadsheetApp
                                  .openById('####')
                                  .getActiveSheet()
                                  .getDataRange()
                                  .getValues());

  return HtmlService
      .createTemplateFromFile('index')
      .evaluate()
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

function getData() {
  return CacheService.getScriptCache().get('data');
}
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用 GAS 开发合适的应用程序(我之前在 Sheets 中使用过它)。有什么很明显的我遗漏了吗?我在 CacheService 参考页面上没有看到任何类型限制...

caching google-sheets google-apps-script

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

SqlDataReader HasRows = True但没有数据

我正在连接到SQL Server 2012数据库,以基于ID查询单个值。(可能值得一提的是,该数据库位于我的开发机器上的另一大陆的服务器上,因此延迟非常高。大约100毫秒左右)。

该查询似乎已成功执行。该对象的HasRows属性SqlDataReader设置为true,因此我尝试使用该值来分配变量。当我正常运行程序时,遇到message异常'Given key was not present in the dictionary'。如果我停止执行并检查SqlDataReader对象,并枚举结果。首先,我被告知'enumeration yielded no results',然后当我继续执行时,消息中出现另一个异常'invalid attempt to read when no data is present'

这是有问题的代码:

SqlConnection sql_conn = new SqlConnection(ConnectionString);
SqlCommand sql_cmd = new SqlCommand(String.Format("select ItemType from ItemTable where ItemID='{0}'", item_id), sql_conn);

Console.WriteLine(sql_cmd.CommandText);

sql_conn.Open();

SqlDataReader rdr = sql_cmd.ExecuteReader();

rdr.Read();

if (rdr.HasRows) //True
{
    item_type= TypesMap[rdr["ItemType"].ToString()]; //Either 'given key not found in dictionary' or 'invalid attempt to read when no data is …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqlclient

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

Windows 上的 Electron Packager 什么都不做

我在 Windows 中用 Electron 编写了一个小应用程序,并且有一些功能可以检查注册表以获取有关已安装的某些软件的信息,我需要在另一台机器上运行该应用程序进行测试。所以,我正在尝试打包我的应用程序。

首先,需要注意的是,当我>electron .在项目的根目录中运行时,它运行没有任何问题。

我尝试手动打包应用程序,将我的应用程序放在resources\app文件夹下并运行 Electron.exe。它不起作用。Electron 应用程序在退出之前在任务管理器中启动。没有任何错误或警告。没有对话框或任何东西。

我已经安装了电子打包器模块,并尝试使用它来打包应用程序。然而,它什么也不做。没有控制台输出,它只是在退出之前在那里停留了一段时间。当它退出时,没有打包的应用程序。什么也没有变。我尝试了电子制造商并得到了相同的结果。

我一般不熟悉节点,所以我怀疑我只是做错了什么。这是我的 package.json (我仍然不完全理解其目的):

{
  "name": "welcome",
  "version": "0.1.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
    "compile": "node .\\node_modules\\webpack\\bin\\webpack.js",
    "prep": "robocopy . releases\\app /XD node_modules releases blah /S /MIR /XF *.jsx \"webpack.config.js\" && robocopy node_modules\\winreg releases\\app && robocopy node_modules\\path releases\\app",
    "package": "asar pack .\\releases\\app .\\releases\\app.asar",
    "build": "electron-packager releases\\app WelcomeApp --ignore=node_modules --platform=win32 --arch=x64 --output=releases"
  },
  "author": …
Run Code Online (Sandbox Code Playgroud)

node.js electron electron-builder

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

在C++中定义一个不寻常的二维数组

我想使用枚举引用2维数组的第一维.但是,每个枚举值表示的配置有时会重叠(不是以任何图案化方式),这意味着数组中的数据有时会相同.因此,我希望有一些元素指向相同的数据数组,如下图所示.

异常阵列配置

有没有办法在C++的声明时间这样做?

c++ arrays

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

#pragma warning - 特定于文件?

简单的问题,但我似乎无法在任何参考资料中找到答案.

如果我有#pragma warning()指令,编译器是否只为当前文件定义?或者它是通过我的项目中的其他文件中的#includes传播的?

这可能是一个更广泛的问题,不一定是#pragma特有的,但我特别担心的情况.

c c++ pragma c-preprocessor preprocessor-directive

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

| 0在Javascript中做什么?

我最近一直在研究要在项目中使用的asm.js,而且我注意到,asm.js编译后的代码通常会以结束一个语句|0;,甚至在该语句中看起来似乎是多余的i = i|0;

这不是我以前在Javascript代码中遇到的东西。这是为了什么

编辑

我不相信这是重复的。我知道是位还是位。我在这里专门问为什么在分配之前可能会使用0或0。这有什么目的?

javascript asm.js

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

Swift - 使用 AVPlayerItemVideoOutput 访问解码帧:不调用 outputMediaDataWillChange

我有一个应用程序可以播放从用户库中选择的视频。我希望应用程序最终能够做到的是将叠加渲染到视频上(在播放时),然后将结果输出到新的媒体文件。为此,我需要捕获解码的帧,以便在视频播放结束后渲染此叠加并输出到文件。

这是我使用 AVFoundation 的第一个应用程序,我花了一两天的时间试图通过谷歌和苹果文档找出如何实现这一目标,我认为我在对象中有一些东西AVPlayerItemVideoOutput。但是,委托回调永远不会执行。

我发现必须在is in status之后AVPlayerItemVideoOutput创建。因此,在我的初始化程序中,我向 AVPlayerItem 添加了一个观察者以观察其状态。AVPlayerItemreadyToPlayPlayerUIView

init(frame: CGRect, url: Binding<URL?>) {
        _url = url
        // Setup the player
        player = AVPlayer(url: url.wrappedValue!)
        super.init(frame: frame)
        
        playerLayer.player = player
        playerLayer.videoGravity = .resizeAspect
        layer.addSublayer(playerLayer)
        
        //displayLink = CADisplayLink()
        
        // Setup looping
        player.actionAtItemEnd = .none
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(playerItemDidReachEnd(notification:)),
                                               name: .AVPlayerItemDidPlayToEndTime,
                                               object: player.currentItem)
        
        player.currentItem?.addObserver(self, forKeyPath: #keyPath(AVPlayerItem.status), options: [.old, .new], context: nil)
        
        // Start the movie
        player.play()
    }
Run Code Online (Sandbox Code Playgroud)

我在中间创建了一个 CADisplayLink - 注释掉 - 因为我看到它可以以某种方式用于此目的,但不完全确定它应该如何或做什么。还从名称来看,它从显示的视频中获取帧,而不是从实际解码的视频帧中获取帧,这正是我想要的。

readyToPlay当状态第一次设置为 …

avfoundation ios swift

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

C#中的正则表达式匹配"..."

我试图找到并删除C#程序中各种字符串中出现的"..."."..."的任何一面都可以是绝对的,但它永远不会出现在字符串的开头或结尾.

我试过"\.{.{3}","[\.] {3}"和""(\.\.\.)".这些似乎都不起作用.

谁知道什么是错的?

编辑

固定.我认为"......"实际上是"......".这是我试图匹配的单个角色.

c# regex

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

在C#中加载.sys文件的最佳方法是什么?

我尝试过DllImport,但它似乎比它需要的更复杂.我想知道Assembly.Load会更容易吗?

c# driver

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

有没有办法获得UIElementCollection中的项目?

我在网格中有一堆CheckBoxes.我想访问它们,以便我可以根据启动时的注册表值将它们设置为选中或取消选中.

我已将Grid的子项作为UIElementCollection,并过滤掉其他类型..但是,似乎没有任何方法可以访问存储在集合中的数据.有这么简单的方法吗?

c# collections wpf

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

C# - 时间计算不适用于TimeSpan.FromTicks DateTime

我正在尝试计算程序中的视频帧速率.要做到这一点,我采取

DateTime.Now
Run Code Online (Sandbox Code Playgroud)

在流的开头,然后在每一帧之后再次增加一个帧计数器.

然后我像这样计算FPS:

int fps = (int)(frames / (TimeSpan.FromTicks(CurrentTime.Ticks).Seconds - TimeSpan.FromTicks(StartTime.Ticks).Seconds));
Run Code Online (Sandbox Code Playgroud)

问题是我偶尔会得到一个负数,这意味着开始时间必须晚于当前时间.情况怎么样?有没有人知道这些功能需要解释?

c# datetime timespan

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

Swift - AVFoundation - 检查视频尺寸/长宽比

我有一个 iOS 应用程序,目前它只是使用用户库中的 AVFoundation 播放视频。我想做的是根据视频的宽高比设置设备的方向。如果是纵向视频,我想将方向设置为纵向,如果标准 16:9 或 4:3,那么当然是横向,这样屏幕最终不会在黑条中浪费大量空间视频的两侧。

我想我可以通过获取视频的尺寸来确定纵横比,从而确定方向:

if width > height:
    landscape
else:
    portrait
Run Code Online (Sandbox Code Playgroud)

然而,事实证明这比我想象的要困难。我有一个AVPlayer对象,最初查看了它的元数据属性,但这显然不是我想要的元数据。然后我发现 AVPlayer.presentationSize 可以包含我正在寻找的信息,但是当我打印出来时 - 就在调用之前play()- 查看它时,我得到了以下信息:Optional((0.0, 0.0))

除了研究如何自己解析视频文件头以尝试访问此信息之外,API 中是否有任何地方可以向我公开此信息?谷歌搜索提供了大量有关如何在捕获视频时指定视频大小的信息,但关于这个特定问题的信息却很少。

avfoundation ios swift

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

Python bitwise与布尔运算符

我读通过教程的一个基于Python的交易平台,它是推荐使用按位的(~,&,|),而不是布尔(not,and,or)运营商合并布尔表达式.

类似因素,可以组合过滤器.使用&(和)和|(或)运算符组合过滤器.

有这么好的理由吗?我以前从未见过它.我并不完全确定Python中布尔值的所有属性,但我确实认为在C和C++中,布尔值由整数1或0表示,并且可以这样操作.Python类似吗?在这种情况下,我可以看到一个&|至少是如何工作的.

使用这些按位运算符而不是布尔值的目的是什么?它更快吗?

python bitwise-operators boolean-operations

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