这是一个通用的编程问题,而不是语言特定的.我已经看过几个尝试和捕获的appraoches.
一种是对所需数据进行任何预处理,使用适当的参数调用函数并将其包装到try/catch块中.
另一种是简单地调用函数传递数据并依赖函数内的try catch,如果发生错误,函数返回true/false标志.
第三个是功能和内部的try catch组合.但是,如果函数尝试catch捕获某些东西,它会抛出函数捕获之外的try catch块的另一个异常.
有关这些错误控制方法的优缺点的想法,或者是否有可接受的标准?我的谷歌搜索忍者技能让我无法找到准确的数据.
我继承了一个带有古怪架构的数据库.在没有细节的情况下,我有一个奇怪的用例.
该表包含一个completed_at字段,它是一个没有时区的时间戳.我要做的是按时间戳> X的时间戳排序结果
踢球者是X是数字(或十进制)值.尝试将时间戳转换为int失败甚至是字符串.
如果你只是尝试completed_at> 0,你就得到了
一个先驱:我现在已经在两个环境中工作,这个问题有相互矛盾的原则.我概述了相互竞争的想法,并想知道在描述的情况下哪个是"正确的".
场景:我们的Intranet上存在多个应用程序.我们正在使用LDAP作为我们的身份验证控件和用户目录来实现OpenSSO.问题在于,通过LDAP身份验证,我们知道内部网上允许用户,但是哪些应用程序可疑.
我们打算使用LDAP来控制每个用户可以访问的应用程序,即帮助台,顾问审查,报告生成器,调查创建者等.
问题在于,每个应用程序中都有很多角色,而且人们可能有多个角色.
解决第二个问题的最佳方法是什么?Shoudl所有角色都在ldap中,或者只是应用程序允许的每个应用程序数据库包含更细粒度的角色?
我们的应用程序每秒收到 20-30 个请求。尽管我们调整了性能变量,但女服务员似乎在负载下屈服了。它不会崩溃,也不会给出任何错误。相反,它似乎向正在向其发送请求的 Nginx 发送(我们假设)一个 ERRCONRESET。这个假设来自 waitress 文档,该文档指出,当积压超过其限制时,它可能会向请求方发送 ERRCONRESET。此外,当女服务员负载不足时,Nginx 会向我们返回 504。python 应用程序本身看起来仍然运行良好。
我们尝试增加线程(50 个线程)和连接限制(1000)。我们还降低了channel_timeout 和cleanup_interval(分别为10 秒和15 秒)。这仍然表明负载下的性能没有改善。最后,我们甚至尝试将积压订单增加到 2048 个。这些都没有产生任何重大影响。
在某种程度上,我什至想知道是否遵守了新的限制,因为运行 netcat 显示长时间运行的连接在 60 秒以上没有被终止。我们的印象是女服务员应该能够处理这个负载,但事实并非如此。需要注意的是,我们已将负载均衡器后面的并发实例扩展到 6 个以接受请求,但仍然收到这些错误。
任何反馈或性能提示将不胜感激。我们在基于 kubernetes 的强大 AWS 实例上运行这些实例。他们占用的 CPU 和 RAM 资源可以忽略不计。当它确实工作时,它的返回时间是毫秒,所以我看不到代码中可能有任何贡献的瓶颈,只有一些连接和积压被压垮的事实。
请参阅下面的女服务员配置来启动应用程序。
waitress.serve(app.app,
host=os.getenv('HOST', '0.0.0.0'),
port=int(os.getenv('PORT', '3000')),
expose_tracebacks=True,
connection_limit=os.getenv('CONNECTION_LIMIT', '1000'),
threads=os.getenv('THREADS', '50'),
channel_timeout=os.getenv('CHANNEL_TIMEOUT', '10'),
cleanup_interval=os.getenv('CLEANUP_INTERVAL', '30'),
backlog=os.getenv('BACKLOG', '2048'))
Run Code Online (Sandbox Code Playgroud) 因此经过多次辩论后,我想出了我认为可能是处理应用程序/系统错误与用户错误(即验证问题,权限问题等)的有效计划.
将使用自定义错误处理程序(通过set_error_handler())处理应用程序/系统错误.根据错误的严重程度,用户可能会被重定向到一般错误页面(即致命错误),或者可能只是默默地记录错误(即E_WARNING).
这些错误很可能是由用户控制之外的问题引起的(缺少文件,错误的逻辑等).
第二组错误是用户生成的错误.这些可能不会自动触发错误但会被视为一个错误.在这些情况下,我决定使用trigger_error()函数,并且通常会抛出一个减弱或通知,这将由错误处理程序静默记录.之后,由开发人员将用户重定向到另一个页面或显示向用户提供某种更有意义的消息.
这样就可以记录任何类型的错误,但是用户错误仍然允许开发人员以自己的方式自由处理它.即将它们重新定向回形式,并将其完全重新填充,并显示出错的信息.
有没有人看到这个有什么问题,或者有更直观的方式?我的错误处理方法通常是每个人都有自己的方式,但必须有一种方法.
我知道这很简单,但我今天无法弄明白,我找不到合适的解决方案.
我有一系列填充数据的选项卡.最后是确认选项卡.此时,他们可以点击"提交"按钮.按下此按钮时,将使用所有相关数据填充隐藏表单.我想要提交此表单,但我无法弄清楚如何使用JQUery提交表单.我试图在按钮上触发,但也许我做错了.下面是点击按钮的代码示例.注意填充的值,我只是无法获取提交的表单
$('#submitAppointment').click(function() {
$("#" + formName + "schedule_id option[value='" + $("input[name='appointmentTime']:checked").val() + "']").attr('selected', 'selected');
$("#" + formName + "apt_date").val($("#confirmDate").text());
$("#" + formName + "first_name").val($("#confirmFirstName").text());
$("#" + formName + "last_name").val($("#confirmLastName").text());
$("#" + formName + "email").val($("#confirmEmail").text());
$("#" + formName + "phone").val($("#confirmPhone").text());
$("#" + formName + "notes").val($("#confirmNotes").text());
$('#appt_form').submit(function() {
alert('Handler for .submit() called.');
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
关于修改提交功能需要做什么的任何想法?
许多最佳实践指南强调让您的进程成为守护进程,并让某些东西监视它以在发生故障时重新启动。这在一段时间内是有道理的。一个具体的例子可以是sidekiq。
bundle exec sidekiq -d
Run Code Online (Sandbox Code Playgroud)
然而,在我构建 Docker 时,我发现自己只需执行命令,如果进程突然停止或退出,整个 docker 容器就会崩溃,并且一个新的容器会自动启动 - 基本上就是守护进程并监视某些内容的整个过程(所有 STDOUT 都发送到 CloudWatch / Elasticsearch 进行监控)。
我觉得这也倾向于强化 docker 容器中单个进程的想法,如果你守护进程,我认为这往往会鼓励违反该通用标准。
即使您在容器内只运行一个进程,是否有关于此的最佳实践文档?
我们正在使用 Sidekiq 和 Rails 5 推出一款新应用程序。我们正在利用 Redis 来存储作业,但由于某种原因,本地和我们的开发区中的作业似乎都没有传递到 Redis。
当代码自行执行以及通过 IRB 执行时,通知似乎已正确发送。
[10] pry(main)> Notifications::WelcomeWorker.perform_async(1)
=> "1a1447c488f173fb09b212f7"
Run Code Online (Sandbox Code Playgroud)
查看 Redis,我们有失败和已处理的键(都为 0),但没有待处理的键,这让我相信由于某种原因它甚至没有命中 Redis。
我们的 Redis 配置在 config/sidekiq.yml 中设置,它仅设置并发性和 PID 位置。
我们在initializers/sidekiq.rb 中也有一个初始化程序文件
Sidekiq.configure_server do |config|
config.redis = { url: ENV["SIDEKIQ_REDIS"] , namespace: 'abcbh', network_timeout: 5 }
end
Sidekiq.configure_client do |config|
config.redis = { url: ENV["SIDEKIQ_REDIS"] , namespace: 'abcbh', network_timeout: 5 }
end
Run Code Online (Sandbox Code Playgroud)
SIDEKIQ_REDIS 本地转换为 redis://localhost ,并转换为 dev 上的相关 URL。
一切似乎都工作正常,但作业似乎没有出现在 Redis 中。
我的睡眠不足是否缺少某些东西?
工作人员本身在 app/workers/notifications/welcome_worker.rb 中设置
在 app/workers/notifications/welcome_worker.rb 中,我们有以下代码,但它从未被执行。
require …Run Code Online (Sandbox Code Playgroud) 所以,我刚刚了解了CURSORS,但仍然没有完全掌握它们.游标和程序甚至函数之间有什么区别?
到目前为止,各种示例(DECLARE CURSOR ... SELECT ... FROM ...)最多似乎是一个保存查询的变量.数据是实时的,还是声明光标的快照?
即我有一个表有一行和一个col值为2.我做DECLARE CURSOR ... SELECT*FROM table1然后我插入一个值为3的新行.
当我运行游标时,我会在声明游标之前获取一行,还是两行?
谢谢
我们一直在嘲笑我们的电子邮件工作,直到我们真正将SendGrid Gem包含在我们的工作人员的顶端
require 'sendgrid-ruby'
include SendGrid
class Notifications::WelcomeWorker
include Sidekiq::Worker
def perform(email_id)
emailAddr = Email.find(email_id)
...
end
end
Run Code Online (Sandbox Code Playgroud)
问题似乎出现,因为SendGrid在(电子邮件)中具有相同的模型
从而生成消息
undefined method `find' for SendGrid::Email:Class
Run Code Online (Sandbox Code Playgroud)
我试过通过ApplicationRecord :: Email调用电子邮件来更具特定于上下文,但无济于事.
所有SO和其他指南通常都会改变我们的模型名称,但我觉得必须有更好的方法.要清楚我们正在运行Rails 5,所以我想知道是否有一个更新它来解决这个问题,我根本没有找到.
最近,我的任务是编写基于团队的开发环境的正式程序.我们有几个项目,每个项目有多个模块.目前只有两个程序员,但是有计划扩展到4-6个程序员.每个程序员都将处理同一个项目以及可能导致写入或错误问题的页面.
到目前为止,我想到的理想解决方案是:
有没有人看到这个问题或有更好的解决方案?
我一直在讨论一些CSS问题,并发现它是doctype.
生产现场进行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Run Code Online (Sandbox Code Playgroud)
我们的舞台网站在哪里
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Run Code Online (Sandbox Code Playgroud)
使用生产标签时,我的List元素的许多文本颜色,大小等都会消失.
我使用960网格css文件,然后是reset和text.css文件.
之后我有一个带有我自己样式的main.css文件,但是特定div中我的列表的字体样式没有被识别
下面是HTML后面的页面的CSS
.sideBox {
width: 225px;
float: right;
text-align: left;
}
.sidebox ul, #slideMenu ul {
list-style: none;
margin: 0;
padding: 0;
text-indent: 0;
margin-top:8px;
}
#slideMenu ul li {
margin-right:10px;
padding-right: 10px;
float: left;
width:150px;
border-right: 1px solid #cccccc;
}
.sidebox li {
height:124px;
margin: 0;
padding: 0 10px;
border-bottom: 1px solid #cccccc;
}
.sidebox li:first-child{
height:123px;
border-top: 1px …Run Code Online (Sandbox Code Playgroud) 我有一个快速的python程序
import logging
import logging.handlers
import re
with open("sampleData2.log", "r") as ins:
array = []
for line in ins:
if re.match("app web\.1.-.*", line):
print line + "\n\n\n\n";
Run Code Online (Sandbox Code Playgroud)
它应该返回任何包含app web.1的行,如果我是正确的,但是当我运行程序时没有任何返回.我确认如果删除正则表达式,该文件实际上是输出所有内容.下面是文件数据的示例
109 <190>1 2015-01-22T19:43:18.632927+00:00 d.eae4693f-68e0-404f-a798-90943699b1dd app web.1 - - CRASdsafH fatal
109 <190>1 2015-01-22T19:43:18.632932+00:00 d.eae4693f-68e0-404f-a798-90943699b1dd app web.1 - - Test this errpr
162 <190>1 2015-01-22T19:43:18.633277+00:00 d.eae4693f-68e0-404f-a798-90943699b1dd app web.1 - - Rendered welcome/index.html.erb within layouts/application (0.0ms)
Connection from SyslogdProtocol #12 on 5144
342 <158>1 2015-01-22T19:43:18.622382+00:00 d.eae4693f-68e0-404f-a798-90943699b1dd heroku router - - at=info method=GET path="/assets/application-8474e4f266741613a6d5486dc2913241.js" …Run Code Online (Sandbox Code Playgroud)