我正在使用Babel的ES6课程.我有一个看起来像这样的React组件:
import { Component } from 'react';
export default class MyReactComponent extends Component {
getInitialState() {
return {
foo: true,
bar: 'no'
};
}
render() {
return (
<div className="theFoo">
<span>{this.state.bar}</span>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来不像getInitialState
是被调用,因为我收到了这个错误:Cannot read property 'bar' of null
.
我有一个Rails 3应用程序,我正在变成一个Rails引擎/宝石.这个引擎有一些我已放在它的.gemspec文件中的gem依赖项.
我已经创建了一个新的'父'Rails 3应用程序,我想将我的引擎gem添加到Gemfile并让gem的依赖项自动"加载",但这对我不起作用!bundle install
安装gem依赖项很好,但是当我启动服务器时,应用程序因为没有加载而崩溃.
例如,我的引擎的gemspec包含以下行:
s.add_runtime_dependency(%q<rails>, ["= 3.0.7"])
s.add_runtime_dependency(%q<acts_as_commentable>, [">= 3.0.1"])
s.add_runtime_dependency(%q<haml>, [">= 3.1.1"])
Run Code Online (Sandbox Code Playgroud)
..和父Rails 3应用程序在其Gemfile中有这些行:
source 'http://rubygems.org'
gem 'my_engine', :path => "~/src/gems/my_engine"
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
undefined local variable or method `acts_as_commentable'
from /home/user/src/gems/my_engine/app/models/account.rb:66:in `<class:Account>'
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加gem 'acts_as_commentable', '>= 3.0.1'
到父Rails 3应用程序的Gemfile,则加载gem并且错误消失.
我正在使用Rails 3.0.8.
有没有人有什么建议?我是否需要更改引擎加载方式?
我们在Unicorn + Nginx上运行Rails应用程序.服务器有两个我们使用的NIC.eth0
处理对公共互联网的eth2
请求,并处理来自我们专用网络的请求.
当请求通过时eth0
,nginx日志显示公共IP,Rails日志也显示此IP.但是,当请求通过时eth2
,nginx日志会正确显示私有IP(例如192.168.5.134
),但Rails日志会显示127.0.0.1
.
因此,似乎公共请求正确设置eth0
了X-Forwarded-For
标头,但是对于请求没有发生这种情况eth2
.
我们的nginx配置非常基本:
upstream example.com {
server unix://var/www/example.com/shared/sockets/unicorn.socket fail_timeout=0;
}
...
server {
listen 443 ssl;
...
location @example.com {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real_IP $remote_Addr;
proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if ($host ~* "^(.+)\.example.com$") {
set $subdomain $1;
}
proxy_pass http://example.com;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我没有在任何地方找到一个好的答案,这似乎是一个毫无意义的惯例.在许多教程和文档中,Redux操作定义如下:
{
type: "ACTION_NAME",
payload: {
foo: 123,
bar: 456,
}
}
Run Code Online (Sandbox Code Playgroud)
什么是点payload
对象?为什么不写这个:
{
type: "ACTION_NAME",
foo: 123,
bar: 456,
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Flow,我喜欢将所有动作类型定义为union,没有嵌套的有效负载:
type Action = {
type: 'ACTION_NAME',
foo: number,
bar: number,
} | {
type: 'ANOTHER_ACTION',
someData: string,
} | {
type: 'ONE_MORE_ACTION',
moreData: boolean,
}
Run Code Online (Sandbox Code Playgroud)
我没有payload
这么多次打字,我得到了自动完成并对我的所有动作进行了类型检查,所以我不确定我缺少什么.
我没有把所有数据放在一个payload
对象中,我错过了一些好处吗?
我正在一个实验性开源项目 ( ruby_crystal_codemod ) 中试用 Sorbet 。我无法弄清楚如何让类型检查与嵌套测试项目中的某些 RSpec 测试一起使用。当我运行时srb tc
,我看到一些像这样的类型检查错误:
spec/src/example_class_annotated_spec.rb:6: Method it does not exist on T.class_of(<root>) https://srb.help/7003
6 | it 'should add @foo and @bar' do
7 | instance = ExampleClass.new(2, 3, 4)
8 | expect(instance.add).to eq 5
9 | end
spec/src/example_class_annotated_spec.rb:8: Method expect does not exist on T.class_of(<root>) https://srb.help/7003
8 | expect(instance.add).to eq 5
^^^^^^^^^^^^^^^^^^^^
https://github.com/sorbet/sorbet/tree/67cd17f5168252fdec1ad04839b31fdda8bc6155/rbi/core/kernel.rbi#L2662: Did you mean: Kernel#exec?
2662 | def exec(*args); end
^^^^^^^^^^^^^^^
spec/src/example_class_annotated_spec.rb:8: Method eq does not exist on T.class_of(<root>) https://srb.help/7003 …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个用Swift编写的iOS应用程序.我有一个UITabBarController的子类,然后是一个嵌套的子类:
class HWTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
...
}
}
class MainTabBarController: HWTabBarController {
override func viewDidLoad() {
super.viewDidLoad()
...
}
}
Run Code Online (Sandbox Code Playgroud)
这在iOS模拟器中运行良好,甚至在我在iPhone上调试应用程序时也是如此.但是当我将应用程序存档并使用TestFlight将其发送到我的手机时,它会崩溃.
我的崩溃日志充满了这个无限循环:
22 HDWR 0x00145e10 @objc HDWR.MainTabBarController.viewDidLoad (HDWR.MainTabBarController)() -> () (MainTabBarController.swift:16)
23 HDWR 0x00262867 NRMA__voidParamHandler
24 HDWR 0x0014ea00 HDWR.HWTabBarController.viewDidLoad (HDWR.HWTabBarController)() -> () (HWTabBarController.swift:24)
25 HDWR 0x00145e10 @objc HDWR.MainTabBarController.viewDidLoad (HDWR.MainTabBarController)() -> () (MainTabBarController.swift:16)
26 HDWR 0x00262867 NRMA__voidParamHandler
27 HDWR 0x0014ea00 HDWR.HWTabBarController.viewDidLoad (HDWR.HWTabBarController)() -> () (HWTabBarController.swift:24)
28 HDWR 0x00145e10 @objc HDWR.MainTabBarController.viewDidLoad (HDWR.MainTabBarController)() -> () (MainTabBarController.swift:16)
29 HDWR …
Run Code Online (Sandbox Code Playgroud) 我目前正在iOS 8,iPhone 6上进行测试。我正在从Swift调用这些API。
我试图弄清楚为什么我不能startRecordingToOutputFileURL
在的单个实例上多次调用AVCaptureMovieFileOutput
。
stopRecording
要先打电话,startRecordingToOutputFileURL
然后再打电话。startRecordingToOutputFileURL
。第一次,我打电话startRecordingToOutputFileURL
时,didStartRecordingToOutputFileAtURL
委托回调被触发。当我打电话时stopRecording
,didFinishRecordingToOutputFileAtURL
回调被触发。
此后,我删除了临时文件。
然后,当我startRecordingToOutputFileURL
下次调用时,不会触发委托回调。当我stopRecording
第二次调用时,“完成”回调也不会触发。
的 用于startRecordingToOutputFileURL苹果文档说以下内容:
在iOS中,不支持此框架精确的文件切换。您必须再次调用stopRecording才能再次调用此方法,以避免出现任何错误。
但是我打电话 stopRecording
再次之前先进行调用,但它不起作用。
我当前的解决方法是删除AVCaptureMovieFileOutput
连接,初始化一个新实例AVCaptureMovieFileOutput
,然后建立新的连接。这很糟糕,因为它需要很长时间并且会冻结视频预览。
如果您知道为什么会发生这种情况,并且有解决办法,请告诉我。
更新:我只是注意到,如果我将其切换AVCaptureSession
sessionPreset
到AVCaptureSessionPresetPhoto
然后再回到AVCaptureSessionPresetHigh
,则可以再次开始捕获视频。
更新2:这是我可以解决此问题的另一种方法:
captureSession.stopRunning()
captureSession.startRunning()
Run Code Online (Sandbox Code Playgroud)
更新3:事实证明,这似乎与捕获音量按钮的某些代码有关-JPSVolumeButtonHandler。当我注释掉开始的代码时,不会发生这种情况JPSVolumeButtonHandler
。
avfoundation ios avcapturesession avcapturemoviefileoutput swift
我觉得 Android GC、JavaScriptCore 或 Genymotion 中的某个地方可能存在错误。我正在 Android 上测试 React Native 应用程序,所以我的所有代码都是用 JavaScript(而不是 Java)编写的。我试图找出我在以下 Android 模拟器上重现的崩溃:
我注意到我的应用程序在使用大约 5 分钟后总是崩溃。使用 查看日志后adb logcat
,我注意到它总是在 GC 运行后立即崩溃。它只在 Android 上崩溃,而在 iOS 上从未发生过崩溃。它也只有在“远程调试 JS”关闭时才会发生,我才意识到原因。这是因为当启用“远程调试 JS”时,所有 JS 都在我的笔记本电脑上的 Chrome 中运行,在 V8 引擎中。(这使得调试非常困难!)
我正在使用reselect库,但我使用了一个带有可配置“cacheSize”的分支来存储多个结果,而不是仅仅缓存一个结果。你可以在这里看到我的新defaultMemoize
功能。我的第一个想法是我在这里做错了什么,但我没有使用 aWeakMap
或类似的东西。我只是将缓存的结果存储在一个普通数组中,并且我总是持有对选择器的引用,所以我认为 GC 不应该清除内存。
我将描述有关我的应用程序的更多详细信息。我有一个LookupTable
类,它引用一个Matrix
类。查找表预先计算了一些东西以加快查找速度。
我的查找表代码如下所示:
// @flow
import autobind from 'autobind-decorator'
export …
Run Code Online (Sandbox Code Playgroud) 我正在开发 Rails 5.x 应用程序,并使用 Postgres 作为数据库。
rake db:migrate
我经常在生产服务器上运行。有时,迁移会向数据库添加新列,这会导致某些控制器操作崩溃并出现以下错误:
ActiveRecord::PreparedStatementCacheExpired: ERROR: cached plan must not change result type
Run Code Online (Sandbox Code Playgroud)
这种情况发生在需要零停机时间的关键控制器操作中,因此我需要找到一种方法来防止这种崩溃发生。
我应该捕获ActiveRecord::PreparedStatementCacheExpired
错误并重试吗save
?或者我应该向这个特定的控制器操作添加一些锁定,以便在数据库迁移运行时不会开始服务任何新请求?
防止此类事故再次发生的最佳方法是什么?
database postgresql transactions ruby-on-rails database-migration
我看到这个非常有趣的推文:
抵制我的代码高尔夫本能
if(!bool1 && bool2)
变成if(bool1<bool2)
我之前从未见过,所以我想看看编译器是否也会使用这种优化.我开始使用自述文件和测试C程序进行回购:https://github.com/ndbroadbent/gcc_experiments
这是测试程序:
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
int main(int argc, const char* argv[]) {
if(argc != 3) {
printf("Usage: %s <a> <b>\n", argv[0]);
exit(1);
}
bool a = strtol(argv[1], NULL, 10) != 0;
bool b = strtol(argv[2], NULL, 10) != 0;
if (!a && b) {
printf("!a && b == true (a: %d, b: %d)\n", a, b);
} else {
printf("!a && b == false (a: %d, …
Run Code Online (Sandbox Code Playgroud) 我正在将上传的PDF转换为图像,每页只有一个图像.我已经弄清楚如何使用生成图像MiniMagick::Tool::Convert
,但我不知道如何version
为Uploader 编写块,以便我可以访问图像URL数组.
到目前为止,这是我的上传者:
class DocumentUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
# storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :jpg do
process :convert_to_images
process :set_content_type_jpg
def convert_to_images(*args)
image = MiniMagick::Image.open(current_path)
image.pages.each_with_index do |page, index|
MiniMagick::Tool::Convert.new do |convert|
convert.background 'white'
convert.flatten
convert.density 300
convert.quality 95
convert << page.path
convert << "#{CarrierWave.root}/#{store_dir}/image-#{index}.jpg"
end
end
end
end
def set_content_type_jpg(*args)
self.file.instance_variable_set(:@content_type, "image/jpg")
end
# Add a white list of extensions which are allowed to be uploaded.
def extension_white_list
%w(jpg jpeg …
Run Code Online (Sandbox Code Playgroud) javascript ×3
ios ×2
reactjs ×2
swift ×2
android ×1
avfoundation ×1
boolean ×1
bundler ×1
c ×1
carrierwave ×1
crash ×1
database ×1
dependencies ×1
flowtype ×1
gem ×1
image ×1
imagemagick ×1
ip ×1
minimagick ×1
networking ×1
nginx ×1
postgresql ×1
react-native ×1
redux ×1
ruby ×1
sorbet ×1
subclass ×1
transactions ×1
typechecking ×1
types ×1
unicorn ×1