在Go中编写了一些脚本后,我问自己,.go-file 的编译与后来的执行和go run FILE.go命令在性能等方面是否有任何区别.
如果我使用这些方法之一启动Web服务,是否有任何优势?
我正在尝试创建给定文件夹中所有文件(路径)的索引.到目前为止,我一直gulp.src(filePath)努力实现这一目标.根据这篇博客文章,它应该工作:
gulp.src(files)是包含文件/文件路径的字符串或数组.
我目前的代码:
gulp.task("createFileIndex", function(){
var index = gulp.src(['./content/**/*.*']);
console.log("INDEX:", index[0]);
});
Run Code Online (Sandbox Code Playgroud)
通过输出gulp.src()带有index[0]I get 的返回值,undefined整个index输出只有一个没有任何文件路径的大型字典.
我对Go的例程并不是很熟悉,但是因为我正在使用路由器,net/http所以我看到了几次ListenAndServe()被go例程包裹起来.
服务器需要能够同时处理多个请求以提高效率.那么为什么要使用例程作为"轻量级线程"呢?并发性是否具有任何优势?
这是OpenShift的一个例子
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello OpenShift!")
}
func main() {
http.HandleFunc("/", helloHandler)
go func() {
fmt.Println("serving on 8080")
err := http.ListenAndServe(":8080", nil)
if err != nil {
panic("ListenAndServe: " + err.Error())
}
}()
go func() {
fmt.Println("serving on 8888")
err := http.ListenAndServe(":8888", nil)
if err != nil {
panic("ListenAndServe: " + err.Error())
}
}()
select {}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试解析CSS文件,其中可以注入在配置文件中定义的变量.目前该功能有:
func parse(path string) {
f, err := ioutil.ReadFile(path)
if err != nil {
log.Print(err)
return
}
// Parse requires a string
t, err := template.New("css").Parse(string(f))
if err != nil {
log.Print(err)
return
}
// A sample config
config := map[string]string {
"textColor": "#abcdef",
"linkColorHover": "#ffaacc",
}
// Execute needs some sort of io.Writer
err = t.Execute(os.Stdout, config)
if err != nil {
log.Print("Can't execute ", path)
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是template.Parse()需要的内容串和template.Execute()一个io.Writer作为参数.我试图打开文件 …
我当前的项目是一个 Restful API,它验证 POST 请求以创建新用户,并且可能会发生多个错误(具有 HTTP 状态):
我应该立即发回这样的 JSON 响应吗
{
"status": 400,
"Message": "No username is set"
}
Run Code Online (Sandbox Code Playgroud)
如果检测到错误,或者如果我累积所有错误应该更好,如下所示:
{
"status": <HTTP STATUS CODE>,
"errors": [
{"message": "Username is not set."},
{"message": "Can't access the database."}
]
}
Run Code Online (Sandbox Code Playgroud)
最后一种方法不需要多个请求来发送有效负载。但是,如果未设置用户名(400 错误请求)或服务器无法访问数据库(500 内部服务器错误),应该使用哪个状态代码?
我还在学习Python programmimg语言.我在代码异常方面问自己,当需要以pythonic方式处理这种情况时.我读了几遍"你永远不应该默默地传递错误".
例如一个小功能:
def square(list_with_items):
return [i**2 for i in list_with_items]
Run Code Online (Sandbox Code Playgroud)
如果有人将元组作为参数传递,是否需要编写错误处理程序?或者,当我必须检查用户输入的验证时,它更有意义吗?
我试图通过外键在两个表字段之间创建关系,但在文档或 stackoverflow 上的相关线程中的示例失败。这是我的代码:
class User(BaseModel):
""" Field Types """
user_id = PrimaryKeyField()
username = CharField(25)
role = ForeignKeyField(User, to_field='role_id')
class Meta:
db_table = 'users'
class User(BaseModel):
""" Field Types """
role_id = PrimaryKeyField()
rolename = CharField(25)
class Meta:
db_table = 'roles'
Run Code Online (Sandbox Code Playgroud)
to_field 指的是我的代码片段中等效表“users”中的相关字段。在 peewee 的文档中,我看到 related_names 作为参数,它引用用户模型中不存在的字段推文。
class User(Model):
name = CharField()
class Tweet(Model):
user = ForeignKeyField(User, related_name='tweets')
content = TextField()
Run Code Online (Sandbox Code Playgroud)
希望有人可以解释这个语法。
我想使用struct DataResponse作为参数JSON()来响应用户.通过初始化DataResponse我得到错误消息的实例,给出了太多的参数,但给出了所有必要的参数.
type DataResponse struct {
Status int `json:"status"`
Data interface{} `json:"data"`
}
func GetUser(rw http.ResponseWriter, req *http.Request, ps httprouter.Params) {
user := models.User{}
// Fetching user from db
resp := DataResponse(200, user)
JSON(rw, resp) // rw is the ResponseWriter of net/http
}
Run Code Online (Sandbox Code Playgroud)
编译器抛出以下错误消息:
too many arguments to conversion to DataResponse: DataResponse(200, user)
Run Code Online (Sandbox Code Playgroud)
DataResponse需要两个给定的参数,并且Data是一个接口,因此它应该接受models.User为数据类型.
我目前用一条users路线建立一个宁静的api .如果用户名是唯一的,那么使用用户名或他的id作为参数更具有特异性吗?
或
example.com/api/users/johndoe
Run Code Online (Sandbox Code Playgroud)
要么
example.com/api/users/123456
Run Code Online (Sandbox Code Playgroud)
此外,我计划了project资源的路线.如果我在这里要求project-id,它会是一个不一致的设计吗?
我的目的是在两个响应结构的标头和正文中使用 HTTP 状态代码。但是,无需将状态代码设置两次作为函数参数,并再次设置结构以避免冗余。
response的参数JSON()是一个允许接受两个结构的接口。编译器抛出以下异常:
response.Status undefined (type interface {} has no field or method Status)
Run Code Online (Sandbox Code Playgroud)
因为响应字段不能有状态属性。有没有其他方法可以避免设置状态代码两次?
type Response struct {
Status int `json:"status"`
Data interface{} `json:"data"`
}
type ErrorResponse struct {
Status int `json:"status"`
Errors []string `json:"errors"`
}
func JSON(rw http.ResponseWriter, response interface{}) {
payload, _ := json.MarshalIndent(response, "", " ")
rw.WriteHeader(response.Status)
...
}
Run Code Online (Sandbox Code Playgroud) go ×5
python ×2
rest ×2
command-line ×1
compilation ×1
concurrency ×1
exception ×1
file ×1
gulp ×1
interface ×1
io ×1
javascript ×1
json ×1
orm ×1
peewee ×1
performance ×1
restful-url ×1
sql ×1
templates ×1