我试图让一个程序让用户输入一个单词或字符,存储它,然后打印它,直到用户再次键入它,退出程序.我的代码看起来像这样:
#include <stdio.h>
int main()
{
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
gets(input);
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check);
}
printf("Good bye!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是我不断打印输入字符串,即使用户输入(检查)与原始(输入)匹配.我比较错误吗?
情况
在Django REST框架中使用验证时ModelSerializer,我注意到这些Meta.model字段总是经过验证,即使这样做不一定有意义.以下示例为User模型的序列化:
password领域和一个confirm_password领域.如果两个字段不匹配,则无法创建用户.同样,如果请求username已存在,则无法创建用户.validate在串行的情况下(见下文),捕不匹配password和confirm_password领域执行validate:
def validate(self, data):
if data['password'] != data.pop('confirm_password'):
raise serializers.ValidationError("Passwords do not match")
return data
Run Code Online (Sandbox Code Playgroud)
问题
即使ValidationError被引发validate,ModelSerializer仍然会查询数据库以检查它username是否已被使用.这在从端点返回的错误列表中很明显; 存在模型和非字段错误.
因此,我想知道如何在非字段验证完成之前阻止模型验证,从而节省了对数据库的调用.
尝试解决方案
我一直试图通过DRF的来源找出这种情况发生的地方,但是我找不到我需要覆盖的内容以使其工作失败.
我正在使用Django REST框架(DRF)创建一个端点,我可以通过它注册新用户.但是,当我使用POST命中创建端点时,新用户通过序列化程序保存,但密码以明文形式保存在数据库中.我的序列化程序的代码如下:
from django.contrib.auth import get_user_model
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ['password', 'username', 'first_name', 'last_name', 'email']
read_only_fields = ['is_staff', 'is_superuser']
write_only_fields = ['password']
Run Code Online (Sandbox Code Playgroud)
请注意,我使用的是Django auth软件包中的默认用户模型,而且我对使用DRF非常新!另外,我发现这个问题提供了一个解决方案,但这似乎需要两个数据库交互 - 我不相信这是有效的,但这对我来说可能是一个不正确的假设.
情况
我正在创建一个允许创建用户的简单端点.我需要一个不在我的用户模型中的字段(即confirm_password).我将运行验证,将此字段与模型中的另一个字段进行比较,然后再从不在序列化程序中再使用其他字段.
问题
DRF版本3已经改变了完成此任务的过程,我不太明白文档建议我做什么.请参阅此处获取文档.
尝试解决方案
我创建了一个UserSerializer如下所示:
from django.contrib.auth import get_user_model
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
confirm_password = serializers.CharField(allow_blank=False)
def validate(self, data):
"""
Checks to be sure that the received password and confirm_password
fields are exactly the same
"""
if data['password'] != data.pop('confirm_password'):
raise serializers.ValidationError("Passwords do not match")
return data
def create(self, validated_data):
"""
Creates the user if validation succeeds
"""
password = validated_data.pop('password', None)
user = self.Meta.model(**validated_data)
user.set_password(password)
user.save()
return user
class Meta: …Run Code Online (Sandbox Code Playgroud) 我一直在研究Play Framework作为帮助我构建简单API的可能候选者.然而,Django Rest Framework(DRF)似乎也是一个非常强大的竞争者.
据我所知,DRF并不像Play Framework那样宣传自己是异步(或非阻塞)框架,但我对这是否重要感兴趣.我一直在考虑的情况是通过Mandrill向用户发送电子邮件 - 我不希望我的API陷入困境,等待Mandrill API告诉它是否发送了电子邮件.
因此,我认为这个问题可以概括为:客户的观点是否有益于我使用异步/非阻塞框架(如Play over the DRF)构建API,或者我错过了这一点?
我希望这些问题相当简单:( NASM编译器,Linux,x86英特尔语法)
第1部分:
我试图弄清楚如何使用Assembly程序的.bss部分来找到一种方法来存储值,例如操作(+ - */)中的值到声明的变量.例如:
section .bss
variable: resb 50 ;Imaginary buffer
section .text
add 10,1 ;Operation
;move the result into variable
Run Code Online (Sandbox Code Playgroud)
所以,我知道有可能用内核intterupt来读取用户输入(但这涉及到字符串,但有没有办法将这个值复制到变量变量中,以便以后可以使用?这会更容易而不是必须推动和弹出堆栈上下两件事.
第2部分:
有没有办法删除.bss部分中变量的值?换句话说,如果我想在.bss变量中存储一个新值,如果没有变量中的字符/值没有与新值复合,我怎么能这样做呢?
谢谢
我正在尝试配置我的Spring Boot应用程序,以便在存在某些环境变量时使用特定的数据源.例如,如果MY_PROD_DATASOURCE环境变量存在,我想使用我的生产数据源; 否则,我想使用我的本地数据源(相同类型).
我在Spring参考中找到了一些解释如何在我的文件中声明单个数据源的内容application.properties.具体来说,MySQL数据源可能如下所示:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driverClassName=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到如何在此文件中有条件地更改数据源属性.还有另一种方法吗?
背景
我正在尝试使用Flask-RESTful扩展创建一个简单的REST API.此API主要用于管理CRUD和用户身份验证以获得简单服务.
我还尝试使用Flask-SocketIO扩展创建一些Web套接字,这些用户可以连接到这些扩展,并查看与使用该服务的其他人相关的一些数据的实时更新.因此,我需要知道这些用户已经过身份验证并有权连接到某些套接字.
问题
但是,我在设置时遇到了一些麻烦.看起来我无法让这两个组件(REST API和SocketIO服务器)在同一个Flask实例上协同工作.我说这个的原因是因为当我运行以下命令时,REST API或SocketIO服务器都可以工作,但不能同时工作:
from flask import Flask
from flask_restful import Api
from flask.ext.socketio import SocketIO
app = Flask(__name__)
api = Api(app)
socketio = SocketIO(app)
# some test resources for the API and
# a test emitter statement for the SocketIO server
# are added here
if __name__ == '__main__':
app.run(port=5000)
socketio.run(app, port=5005)
Run Code Online (Sandbox Code Playgroud)
题
这种类型的设置的典型解决方案是同时具有两个不同的Flask实例吗?例如,我的SocketIO服务器是否必须向我的REST API发出请求才能检查特定用户是否经过身份验证/授权连接到特定套接字?
当我遇到C程序的return语句/退出语句时,我只是编写了一个快速程序来计算一些东西.
我声明main()是类型的int,所以我必须输入一个整数,否则我的程序将无法正确编译.但是,制作main一个Boolean甚至是否可以接受void?
我知道创建一个C程序的标准方法是返回一个值,这样可以解决任何问题,但不会以Boolean同样的方式工作吗?另外,我是否能够宣布它void并且在终止后仍然运行我的程序时操作系统没有问题?
感谢您的帮助.
使用Microsoft Kinect,我正在收集有关对象的深度数据.从这些数据中,我创建了一个点"云"(点云),当绘制时,允许我查看使用Kinect扫描的对象.
但是,我希望能够从不同的"视图"中收集多个点云并对齐它们.更具体地说,我想使用诸如迭代最近点(ICP)之类的算法来实现这一点,通过计算我收集的每个云与之前收集的云之间的旋转和转换来转换我的点云中的每个点.
然而,虽然我理解ICP背后的过程,但我不明白我将如何在3D中实现它.也许是因为我缺乏数学经验或缺乏OpenCV等框架的经验,但我找不到解决方案.我想避免像Point Cloud Library那样为我做这类事情的图书馆,因为我想自己做.
任何和所有建议都表示赞赏(如果有一个解决方案涉及我可以使用的OpenCV/python,那会更好!)
python ×5
django ×3
c ×2
api ×1
assembly ×1
asynchronous ×1
database ×1
flask ×1
java ×1
linux ×1
nasm ×1
opencv ×1
return-type ×1
spring ×1
spring-boot ×1
strcmp ×1
string ×1
validation ×1
x86 ×1