我有一种情况,我想用Python来解决这个问题,但不幸的是我对图表知之甚少.我找到了一个看起来非常适合这个相对简单的任务的库networkx,但是我遇到的问题是我想做的事情,这应该是相当简单的.
我有一个节点列表,可以有不同的类型,以及两个"类"的邻居,向上和向下.任务是在两个目标节点之间找到路径,并考虑到一些约束:
所以,我尝试了一些实验,但正如我所说,我一直在努力.首先,我不确定这实际代表什么类型的图表?它不是方向性的,因为从节点1到节点2,或从节点2到节点1无关紧要(除了在最后一个场景中,因此使事情复杂化......).这意味着我不能只创建一个简单的多向图形,因为我必须考虑到这个约束.其次,我必须遍历这些节点,但指定只有特定类型的节点必须可用于路径.此外,如果最后一个场景发生,我必须记住进入和退出类/方向,这使它处于某种有针对性的状态.
这是一些示例模型代码:
import networkx as nx
G=nx.DiGraph()
G.add_node(1, type=1)
G.add_node(2, type=2)
G.add_node(3, type=3)
G.add_edge(1,2, side="up")
G.add_edge(1,3, side="up")
G.add_edge(2,1, side="down")
G.add_edge(2,3, side="down")
for path in nx.all_simple_paths(G,1,3):
print path
Run Code Online (Sandbox Code Playgroud)
输出相当不错,但我需要这些约束.那么,您是否有一些建议如何实现这些,或者给我一些关于理解这类问题的指导,或者针对这个问题提出不同的方法或库?也许一个简单的基于字典的算法适合这种需要?
谢谢!
考虑到这一点,我已经看到了很多问题,但未能解决我的问题.我有一个带烧瓶登录的Flask应用程序用于会话管理.而且,当我尝试在没有登录的情况下查看页面时,我会被重定向到一个形式的链接/login/?next=%2Fsettings%2F
问题是,据我所知,"下一个"参数保存了我实际需要的网站部分,但是当向登录表单提交请求时,它是通过完成的POST,所以这个论点不再存在可供我重定向到.
我试图使用Request.path从申请(网址),但都只是返回/login/的请求URL /路径,而不是实际的/login/?next=xxx.
我的登录方法如下:
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
#getting the user
user = User.get(request.form['username'])
if user.user is None:
return redirect('/login/')
#actual login proces
if user and check_password_hash(user.user.password, request.form['password']):
login_user(user, remember=remember)
#the redirection portion of the login process
return redirect(request.path or ("/")) # I tried various options there but without success, like request.args['next'] and such
return redirect('/login/')
else:
return redirect('/')
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一组geoJSON点,并且它们附有相应的标签.
var points = L.geoJson (null, {
onEachFeature: function (feature, layer) {
layer.options.riseOnHover=true; //tried adding this
layer.options.riseOffset=9999; //as well as this
layer.bindLabel(feature.properties["name"], {className: 'map-label'});
L.setOptions(layer, {riseOnHover: true}); //this as well
}
});
Run Code Online (Sandbox Code Playgroud)
这是遍历JSON文件中每个功能并创建一组点的代码.现在,将标记添加到地图的实际功能如下:
var addJsonMarkers = function() {
map.removeLayer(markers);
points.clearLayers();
markers = new L.layerGroup();
points.addData(dataJson);
markers.addLayer(points);
map.addLayer(markers);
return false;
};
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是无论我尝试添加什么(你可以看到我的评论),标签总是在标记后面,这不是预期的行为.

我希望标签能够在它之上.我试图手动更改z-index的map-label类,以及与众多的解决方案,riseOnHover这似乎是这种情况的解决方案,但唱片公司仍落后.有谁看到我做错了什么?
完整的代码可以在这里看到
Flask-login似乎不是"在会话中保存用户".在/login处理程序上,用户登录并记住通过login_user(user, remember=True),但在打开任何其他页面时,返回的用户是AnonymousUser,而不是来自User类的登录用户.
下面是简单的用户类,其中包含从另一个用于数据库存储的类中获取用户的方法.
class User():
def __init__(self, user):
self.user = user
def is_authenticated(self):
return True
def is_active(self):
return True
# Flask-Login is technically able to support these.
# We don't swing that way.
def is_anonymous(self):
return False
@staticmethod
def get(userid):
print 'getuser instance'
return User(find_user_by_username(userid))
def get_id(self):
return self.user.username
def __repr__(self):
return '<User %r>' % self.user.username
def get_auth_token(self):
print 'gettingtoken'
data = [self.user.id, self.user.username]
return login_serializer.dumps(data)
Run Code Online (Sandbox Code Playgroud)
获取用户和用户加载器的方法如下:
def find_user_by_username(username):
print 'find …Run Code Online (Sandbox Code Playgroud) 我现在被困在这个问题好几天了,我的眼睛开始受到尝试不同组合的时间的伤害,但没有成功.问题是,我正在制作一个应用程序,它必须从互联网上获取数据,解析它然后显示给用户.我已经尝试了几种方法,并且使用JSOUP非常有帮助,特别是在解析和从结果中获取数据时.
但是,有一个问题我无法解决.我已尝试使用常规HTTPClient和JSOUP,但我无法成功获取所需的数据.这是我的代码(JSOUP版本):
public void bht_ht(Context c, int pozivni, int broj) throws IOException {
//this is the first connection, to get the cookies (I have tried the version without this method separate, but it's the same
Connection.Response resCookie = Jsoup.connect("http://www.bhtelecom.ba/imenik_telefon.html")
.method(Method.GET)
.execute();
String sessionId = resCookie.cookie("PHPSESSID");
String fetypo = resCookie.cookie("fe_typo_user");
//these two above are the cookies
//the POST request, with the data asked
Connection.Response res = Jsoup.connect("http://www.bhtelecom.ba/imenik_telefon.html?a=search")
.data("di", some_data)
.data("br", some_data)
.data("btnSearch","Tra%C5%BEi")
.cookie("PHPSESSID", sessionId)
.cookie("fe_typo_user", fetypo)
.method(Method.POST)
.execute();
Document dok = …Run Code Online (Sandbox Code Playgroud) 我有一个每日 cron 来处理我的应用程序中的一些重复事件,我不时注意到日志中弹出一个奇怪的错误。除其他外,cron 会对一些代码进行验证,并且它使用运行在同一服务器上的 web 应用程序,因此验证请求是通过POST带有一些数据的请求发出的。
url = 'https://example.com/validate/'
payload = {'pin': pin, 'sku': sku, 'phone': phone, 'AR': True}
validation_post = requests.post(url, data=payload)
Run Code Online (Sandbox Code Playgroud)
所以,这会产生实际的请求,我会记录响应。有时,最近高达 50% 的请求,响应包含来自 nginx 的以下消息:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method GET is not allowed for the requested URL.</p>
Run Code Online (Sandbox Code Playgroud)
因此,实际请求是使用GET方法发出的,而不是代码中指示的POST。在 nginx 中,access.log我可以看到该条目:
123.123.123.123 - - [18/Feb/2015:12:26:50 -0500] "GET /validate/ HTTP/1.1" 405 182 "-" "python-requests/2.2.1 CPython/2.7.6 Linux/3.13.0-37-generic"
Run Code Online (Sandbox Code Playgroud)
该应用程序的 uwsgi 日志显示了类似的内容: …
我已经在一段时间内将github用于一个项目,但仅作为问题跟踪器.因此,今晚我花了一些时间来处理代码,并且犯了一个菜鸟错误:我提交了凭据文件和其他不必要的数据.我现在已经将这些添加到.gitignore文件中,它们应该不再是问题,但我发现它们在历史记录中可用.
这带来了安全问题,因此我必须对其进行排序并删除那些敏感数据.我是目前唯一的开发人员,所以这就是为什么我只在我的电脑和实际的服务器上保存代码,但也希望得到这个.
到目前为止,我已经尝试了这篇文章,也发现了一些关于SO的问题,但是还没有弄明白这一点.我大多得到一些像这样的错误:fatal: ambiguous argument 'rm': unknown revision or path not in the working tree.
我会删除整个仓库,但我有很多跟踪数据的问题,所以我需要保留它,所以这不是一个选项.我不介意其他提交,我可以从头开始使用本地机器的代码,但需要一些方法来丢失旧的提交及其完整的历史记录,或者更改这些文件(有些东西在.gitignore目录中,所以可能非常繁琐的删除).
我尝试过git rebase -i,但在那里我只看到我的最后三次提交(测试),没有推,其余的在线,其中10个左右没有显示.
我使用的回购是私有的,我和客户只能访问,所以没有第三方看到这个.
我是git的新手,谢谢你的时间和帮助!
我正在使用Flask进行我正在使用的一个应用程序,以及用于存储数据的sqlalchemy和MySQL数据库.Jinja2用于模板化.在开发过程中,一切都很好,但是现在当使用更大的数据集时,我对包含大量数据的一些网页的呈现速度非常慢.例如,此代码处理用户列表:
def users():
q = Users.query.all()
out = []
for i in q:
try:
something_i_need = Table.query.filter_by(email=i.email).order_by(Table.date).first().id
except:
something_i_need = 0
out.append({
'id': i.id,
'last_name': i.last_name,
'first_name': i.first_name,
'middle_name': i.middle_name,
'phone': i.phone,
'team': i.team,
'status': i.status,
'needed': something_i_need,
'some_more_data': i.some_more_data
})
return render_template('users.html', list_of_users=out)
Run Code Online (Sandbox Code Playgroud)
数据有点简化,因为列表中有更多字段.对此位置的调用(一次查询大约2000个用户)需要10秒以上,然后页面的负载也需要10-20.该表由以下主题函数包装,来自此链接的第一个表,虽然在某些列上禁用排序功能有帮助,但它仍然非常慢.
所以,我想知道,我如何优化此过程或生成模板以使其更快?我在Amazon EC2实例上运行它Python 2.7.3 and mod_wsgi, Flask 0.9, Flask-SQLAlchemy=0.16, Jinja2==2.7, MySQL-python=1.2.4, SQLAlchemy=0.8.1.一个"明显"的解决方案,一次分页并返回100个左右的记录将真正起作用,因为列表必须包含所有用户以进行排序(主要是日期),因此该解决方案将是最后的手段.
提前致谢!
我在网上找到了以下脚本,它可以备份数据库并将其上传到S3存储桶:
#!/bin/bash
# Shell script to backup MySql database
# CONFIG - Only edit the below lines to setup the script
# ===============================
MyUSER="test" # USERNAME
MyPASS="test" # PASSWORD
MyHOST="localhost" # Hostname
S3Bucket="test" # S3 Bucket
# DO NOT BACKUP these databases
IGNORE="information_schema mysql performance_schema phpmyadmin"
# DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING
# ===============================
# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which …Run Code Online (Sandbox Code Playgroud) python ×4
flask ×3
flask-login ×2
mysql ×2
algorithm ×1
amazon-s3 ×1
android ×1
bash ×1
cookies ×1
git ×1
github ×1
google-maps ×1
graph ×1
http ×1
java ×1
javascript ×1
jinja2 ×1
jsoup ×1
leaflet ×1
login ×1
mysqldump ×1
networkx ×1
nginx ×1
oauth ×1
path ×1
rebase ×1
redirect ×1
session ×1
shell ×1
uwsgi ×1
z-index ×1