在Rails Gemfile中,它们之间有什么区别:
gem "gemname", "~> 4.0.1"
Run Code Online (Sandbox Code Playgroud)
和
gem "gemname", "4.0.1"
Run Code Online (Sandbox Code Playgroud)
和
gem "gemname"
Run Code Online (Sandbox Code Playgroud)
还应该使用哪种方式以及遵循这种方式的好处?
我有一个json字符串如下:
j := `{"bvu62fu6dq": {
"name": "john",
"age": 23,
"xyz": "weu33s"
.....
.....}
}`
Run Code Online (Sandbox Code Playgroud)
我想从json字符串中提取name
和age
从中提取值.我看了golang网站http://play.golang.org/p/YQgzP7KPp9给出的这个例子
但我的问题是顶级json的关键是动态的.这意味着bvu62fu6dq
动态.我创建了这样的结构:
type Info struct {
UniqueID map[string]string
}
Run Code Online (Sandbox Code Playgroud)
但不知道如何提取name
和age
.我的代码在http://play.golang.org/p/Vbdkd3XIKc
我有两个字符串(它们实际上是版本号,它们可以是任何版本号)
a := "1.05.00.0156"
b := "1.0.221.9289"
Run Code Online (Sandbox Code Playgroud)
我想比较哪一个更大.如何在golang中做到这一点?
我有以下内容:
我想以一定角度将i1和i2放在bi上,然后生成最终图像.我有i1和i2的x和y轴值以及它们的预期旋转角度.i1和i2可以部分地彼此重叠.但我知道i1和i2的z索引,如果它们重叠,那么谁将在前台.
我试图在Golang实现这一目标.
http://golang.org/doc/articles/image_draw.html似乎是这样做的.任何人都知道任何类似的代码示例,这可能有所帮助.或者你能在Golang中向我展示几行作为伪程序吗?
谢谢.
我有一个证书文件,该位置是:/usr/abc/my.crt
我想在我的tls配置中使用该证书,以便我的http客户端在与其他服务器通信时使用该证书.我目前的代码如下:
mTLSConfig := &tls.Config {
CipherSuites: []uint16 {
tls.TLS_RSA_WITH_RC4_128_SHA,
tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA,
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA,
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
}
}
mTLSConfig.PreferServerCipherSuites = true
mTLSConfig.MinVersion = tls.VersionTLS10
mTLSConfig.MaxVersion = tls.VersionTLS10
tr := &http.Transport{
TLSClientConfig: mTLSConfig,
}
c := &http.Client{Transport: tr}
Run Code Online (Sandbox Code Playgroud)
那么如何在我的TLS配置中分配证书?我看到http://golang.org/pkg/crypto/tls/#Config上的证书设置有人可以建议如何在那里配置我的证书位置吗?
mTLSConfig.Config{Certificates: []tls.Certificate{'/usr/abc/my.crt'}}
< - 错了,因为我正在传递string.right?我没有任何其他文件,如.pem或.key等,只有这个my.cert.我是空白怎么办?
早些时候,我编辑过go源代码http://golang.org/src/pkg/crypto/x509/root_unix.go 并/usr/abc/my.crt
在第一行后添加.12,它工作.但问题是我的证书文件位置可以更改,因此我在构建TLSConfig时从root_unix.go中删除了硬编码的行并尝试动态传递它.
我正在尝试设计REST API以支持各种移动客户端(iOS和Android应用程序).这些应用程序将允许用户使用Facebook登录以及我们自己的电子邮件身份验 您可以参考下图来了解我的设计
授权分为两级:
第一个是使用OAuth2的"客户端(或应用程序)授权".因此,当用户在移动设备上安装我们的应用程序并启动应用程序时,首先,应用程序进行"客户端(应用程序)授权",如上图所示(第1张图像).并且服务器向access_token
客户端发回长期存储以用于所有后续调用.我的问题是:
Q1)可以看到客户端发送client_key
和client_secret
,我将它们存储在client_info
表中.这个秘密应该是纯文本还是应该是可解密的格式?如果我加密它,我仍然需要在我的系统中的某处保留加密密钥.那它将如何使其安全?同样在每次通话中,解密都是一种开销.
Q2)是否可以access_token
在redis中以纯文本格式缓存客户端并首先使用该缓存?
Q3)为了更安全,我要求客户发送appsecret_proof
以确保access_token,他们发送的只属于此客户端.它使用与Facebook相同的概念https://developers.facebook.com/docs/graph-api/securing-requests#appsecret_proof.它是hash_hmac('sha256', access_token, client_secret)
Q4)我们将只拥有自己的2个移动应用程序(每个用于iOS和Android),并且不提供第三方使用我们的API来开发其他应用程序.这意味着,client_info
对于每种类型的应用,我们的表只有两行一个.所以可以,在应用程序代码中,我们保留client_key
并client_secret
硬编码?如果是,那么将来当我们必须使新秘密失效并使用新秘密时,我们将如何取代这些信息呢?
Q5)因为它是我们自己的应用程序几年,所以会有多个access_token将被创建针对相同client_key
和client_secret
.为了保存所有这些,在redis中存储client_key
键和array of all access_tokens
值是一个好主意.将来,当我们将API打开给第三方时,这个redis存储设计仍然可以扩展吗?
=================
稍后,用户决定对我的应用程序执行某些操作,因为我们需要用户登录他的帐户.对于该用户,请单击"facebook login".我的应用程序facebook access_token
从Facebook 获取和fb用户的id并将这些信息传递给API服务器(如第二张图所示).API服务器获取该令牌并调用facebook API来验证它access_token
.一旦令牌被验证,服务器使用该用户相关的一些元数据与FB访问令牌一起产生我们自己user_access_token
,让我们说utoken
.并将其传递utoken
回客户端,以便在每个后续用户特定的API调用中传回.我的问题是:
Q1)可以将其保存utoken
在数据库,user_token
表中.这utoken
应该是纯文本还是应该是可解密的格式?如果我加密它,我仍然需要在我的系统中的某处保留加密密钥.那它将如何使其安全?同样在每次通话中,解密都是一种开销.
Q2)在每个用户特定的API调用中,我是否应该每次调用facebook进行检查facebook access_token
仍然有效?我相信我不应该,因为这对我没有任何意义.请注意,Facebook仅用于"facebook登录".
Q3)我应该加密生成utoken
什么信息?我想有一个散列或用户的关联数组email
,user id
,role …
我正在使用turbolink(rails4)和js链接由我的页面标题部分中的application.js文件生成
<script data-turbolinks-track="true" src="/assets/jquery.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/jquery_ujs.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/global.js?body=1"></script>
Run Code Online (Sandbox Code Playgroud)
我的application.js看起来像:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap.min.js
//= require respond.min.js
Run Code Online (Sandbox Code Playgroud)
我想从OTHER网站添加一个外部javascript文件,例如http://otherdomain.com/xyz.js在我网站的特定页面中.假设我想在特定页面http://mysite.com/profile中添加此外部js文件我想在页面的标题部分添加此js文件.那我该怎么办呢?请不要建议在本地保存该外部文件,因为这不是我的选择.
javascript ruby-on-rails sprockets asset-pipeline ruby-on-rails-4
我在我的rails 4应用程序中使用resque和resque_scheduler.我的应用程序正在为resque做一些工作,但它们并没有被工人处理.reque-web显示没有失败.
我通过跑步开始了resque工作
QUEUE=kqueue rake environment resque:work
我的rails控制台
2.0.0p353 :006 > Resque.info
=> {:pending=>0, :processed=>0, :queues=>0, :workers=>1, :working=>0, :failed=>0, :servers=>["redis://localhost:6379/0"], :environment=>"development"}
2.0.0p353 :007 > Resque.redis
=> #<Redis::Namespace:0x007fbb0fbf3e58 @namespace=:resque, @redis=#<Redis client v3.0.6 for redis://localhost:6379/0>, @warning=false>
2.0.0p353 :008 > Resque.workers
=> [#<Worker xxx-macbook.local:16869:kqueue>]
Run Code Online (Sandbox Code Playgroud)
在redis上,
redis 127.0.0.1:6379> keys *
1) "resque:workers"
2) "resque:delayed_queue_schedule"
3) "resque:worker:xxx-macbook.local:16869:kqueue:started"
4) "resque:timestamps:{\"class\":\"InvokeScheduler\",\"args\":[{\"target\":\"/sendmail\",\"http_method\":\"post\",\"type\":\"signup_verification\",\"user_id\":31}],\"queue\":\"kqueue\"}"
5) "resque:delayed:1388832771"
Run Code Online (Sandbox Code Playgroud)
resque-web说:
0 of 1 Workers Working
Failed Jobs
Showing 0 to 0 of 0 jobs
Worker xxx-macbook.local:16869:kqueue
Host Pid Started Queues Processed Failed Processing …
Run Code Online (Sandbox Code Playgroud) 如何在S3中的现有或新创建的文件中附加文本.我正在使用fog
,我有以下代码
require 'fog'
file = "abc.csv"
bucket = 'my_bucket'
storage = Fog::Storage.new(:provider => 'AWS', :aws_access_key_id => 'XXXXXXXX', :aws_secret_access_key => 'YYYYYYYY')
dir = connection.directories.new(:key => bucket) # no harm, if this bucket already exists, if not create one
buffer = ["big_chunk1", "big_chunk2", "big_chunk3", "big_chunk4", "big_chunk5"]
# I need help after this line. No changes above.
buffer.each do |chunk|
# this will not work as it will not append text below the existing file or
# newly created one. I …
Run Code Online (Sandbox Code Playgroud) 我的 app.py 文件
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres:////tmp/test.db'
db = SQLAlchemy(app) # refer https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/#flask_sqlalchemy.SQLAlchemy
Run Code Online (Sandbox Code Playgroud)
我的模型类之一,我在其中导入db
from app import db
Base = declarative_base()
# User class
class User(db.Model, Base):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
def get_user_by_id(self, id):
return self.query.get(id)
Run Code Online (Sandbox Code Playgroud)
我的数据库在不同模式(多租户)中具有相同的表集,并且我需要根据特定租户即时发起的请求before_request
(从子域 URL 获取租户 ID)来选择模式。
我发现 Postgres …