这是一个广泛的问题,但我想得到一个规范的答案.我一直在尝试在Django中使用gunicorn和nginx部署一个站点.阅读吨的教程后,我获得了成功,但我不能肯定我遵循的步骤是不够好,没有问题或可能有更好的方法来做到这一点运行一个网站.这种不确定性很烦人.
这就是为什么我正在为新手寻找一个非常详细且解释清楚的答案.我不想解释太多我所知道的,什么我不知道,因为这会歪曲回答了一下,其他人可以受益程度较轻,从你的答案.但是,我想提到的一些事情是:
您认为哪种"设置"最佳?我用的virtualenv和感动我的Django项目这个环境中,但是我已经看到了另一个设置那里是虚拟环境的项目文件夹等.
如何以允许多个站点托管在单个服务器中的方式设置内容?
为什么有人建议使用gunicorn_django -b 0.0.0.0:8000和其他人建议gunicorn_django -b 127.0.0.1:8000?我测试了后者的Amazon EC2实例,但而前者没有问题的工作也没有工作.
nginx的配置文件背后的逻辑是什么?有很多教程使用截然不同的配置文件,我很困惑哪一个更好.例如,有些人使用alias /path/to/static/folder和其他人root /path/to/static/folder.也许您可以共享首选配置文件.
为什么我们之间创建一个符号链接site-available,并sites-enabled在/etc/nginx?
一些最佳实践一如既往地欢迎:-)
谢谢
一个简单的熊猫问题:
是否有drop_duplicates()功能可以删除复制中涉及的每一行?
一个等效的问题如下:pandas对数据帧有不同的设置吗?
例如:
In [5]: df1 = pd.DataFrame({'col1':[1,2,3], 'col2':[2,3,4]})
In [6]: df2 = pd.DataFrame({'col1':[4,2,5], 'col2':[6,3,5]})
In [7]: df1
Out[7]:
col1 col2
0 1 2
1 2 3
2 3 4
In [8]: df2
Out[8]:
col1 col2
0 4 6
1 2 3
2 5 5
Run Code Online (Sandbox Code Playgroud)
所以也许df2.set_diff(df1)会产生这样的东西:
col1 col2
0 4 6
2 5 5
Run Code Online (Sandbox Code Playgroud)
但是,我不想依赖索引,因为在我的情况下,我必须处理具有不同索引的数据帧.
顺便说一下,我最初考虑过当前drop_duplicates()方法的扩展,但现在我意识到使用集合论属性的第二种方法通常会更有用.但是,这两种方法都解决了我当前的问题
谢谢!
Anaconda的一个主要特点是它与博客中所述的语言无关:
您可以创建任何二进制依赖关系树的环境(不同版本的Python,R,Julia等).
最近我在Python中使用virtualenv转换为Anaconda,所以我很想在Anaconda环境中尝试Julia.但是,我找不到足够明确的说明来成功安装Julia.首先,我天真地尝试过conda create -n julia-test julia.显然,它没有用.然后我在binstar.org 找到了带有代码的Julia软件包(版本0.3)
conda install -c https://conda.binstar.org/wakari1 julia
Run Code Online (Sandbox Code Playgroud)
但是,我不想在特定虚拟环境之外安装Julia,因此我将其更改为:
conda create -n julia-test -c https://conda.binstar.org/wakari1 julia
Run Code Online (Sandbox Code Playgroud)
它没有抛出错误,但最终未能启动Julia解释器.
那么,在anaconda环境中安装Julia(0.2,最好是)的正确方法是什么?
UPDATE
截至2018年3月,Julia v0.6.1可用于conda-forge频道上的linux-64:
https://anaconda.org/conda-forge/julia
它已设置为在内部安装软件包<env_prefix>/share/julia/site,以保持与用户~/.julia用户主目录的隔离.
conda create -n julia -c conda-forge julia
我有一些应用程序所需的图像.有许多图像(50,000+)但总体尺寸很小(40 Mb).最初,我以为我会简单地使用S3,但上传速度很慢.作为一个临时解决方案,我想附上一个包含图像的EBS,这样就可以了.但是,阅读一下有关EBS通用(gp2)的内容,我注意到以下描述:
GP2是Amazon EC2实例的默认EBS卷类型.这些卷由固态驱动器(SSD)支持,适用于各种事务工作负载,包括开发/测试环境,低延迟交互式应用程序和启动卷.GP2旨在提供一位数的毫秒延迟,提供3 IOPS/GB的一致基准性能,最高可达10,000 IOPS,并且每卷可提供高达160 MB/s的吞吐量.
正是这3个IOPS/GB的数量令我担忧.这在实践中意味着什么?假设您需要为少量用户提供电子商务网站(例如,每分钟<10,000个请求),并且需要检索这些图像.亚马逊描述了如何衡量IOPS:
当小型I/O操作在物理上连续时,Amazon EBS会尝试将它们合并为单个I/O,直到最大大小.例如,对于SSD卷,单个1,024 KiB I/O操作将计为4个操作,而每个4 KiB的256个I/O操作将计为256个操作.
这是否真的意味着如果我想在一秒钟内检索50个10kB的图像,我需要50 IOPS并且很容易超过3 IOPS的基线?
更新:
感谢Mark B的建议,我能够使用S3上传我的文件.但是,我仍然想知道执行常见任务所需的IOPS量,例如运行数据库或为Web应用程序提供其他文件.我很高兴根据您的经验听取一些关于IOPS最小值的参考值.
我刚刚使用Angular 2(版本rc.2)app(带有Typescript)更新到webpack 2.1.0-beta.15,但我想知道如何使用树摇动功能.我读到它应该"开箱即用",但我仍然有一个1.7Mb的捆绑一个非常简单的应用程序,所以可能我做错了.
这是我到目前为止:
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
的package.json
{
"name": "angular2-quickstart",
"version": "1.0.0",
"scripts": {
"build": "webpack --progress",
"build:prod": "webpack -p --progress --optimize-minimize",
"postinstall": "typings install",
"serve": "webpack-dev-server --inline --progress --output-public-path=/dist/"
},
"license": "ISC",
"dependencies": {
"@angular/common": "2.0.0-rc.2",
"@angular/compiler": "2.0.0-rc.2",
"@angular/core": "2.0.0-rc.2",
"@angular/forms": "0.1.0",
"@angular/http": "2.0.0-rc.2",
"@angular/platform-browser": "2.0.0-rc.2",
"@angular/platform-browser-dynamic": "2.0.0-rc.2",
"@angular/router": "2.0.0-rc.2",
"@angular/router-deprecated": "2.0.0-rc.2",
"@angular/upgrade": "2.0.0-rc.2",
"angular-pipes": "1.4.0",
"bootstrap": …Run Code Online (Sandbox Code Playgroud) 另一个熊猫问题.
阅读Wes Mckinney关于数据分析和熊猫的优秀书籍,我遇到了以下我认为应该起作用的事情:
假设我有一些关于提示的信息.
In [119]:
tips.head()
Out[119]:
total_bill tip sex smoker day time size tip_pct
0 16.99 1.01 Female False Sun Dinner 2 0.059447
1 10.34 1.66 Male False Sun Dinner 3 0.160542
2 21.01 3.50 Male False Sun Dinner 3 0.166587
3 23.68 3.31 Male False Sun Dinner 2 0.139780
4 24.59 3.61 Female False Sun Dinner 4 0.146808
Run Code Online (Sandbox Code Playgroud)
我想知道与总账单有关的五大提示,即分别tip_pct针对吸烟者和非吸烟者.这样可行:
def top(df, n=5, column='tip_pct'):
return df.sort_index(by=column)[-n:]
In [101]:
tips.groupby('smoker').apply(top)
Out[101]:
total_bill tip sex smoker day time …Run Code Online (Sandbox Code Playgroud) 据我所知,预备语句(主要)是一个数据库功能,允许您将参数与使用此类参数的代码分开.例:
PREPARE fooplan (int, text, bool, numeric) AS
INSERT INTO foo VALUES($1, $2, $3, $4);
EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);
Run Code Online (Sandbox Code Playgroud)
参数化查询替代手动字符串插值,因此不是这样做
cursor.execute("SELECT FROM tablename WHERE fieldname = %s" % value)
Run Code Online (Sandbox Code Playgroud)
我们可以做的
cursor.execute("SELECT FROM tablename WHERE fieldname = %s", [value])
Run Code Online (Sandbox Code Playgroud)
现在,似乎准备好的语句大部分都用在数据库语言中,参数化查询主要用于连接数据库的编程语言,尽管我已经看到了这个规则的例外.
问题在于询问预准备语句和参数化查询之间的区别会带来很多混乱.他们的目的无疑是相同的,但他们的方法似乎是截然不同的.然而,有消息表明两者都是相同的.MySQLdb和Psycopg2似乎支持参数化查询,但不支持预处理语句(例如,这里是MySQLdb和postgres驱动程序的TODO列表或sqlalchemy 组中的这个答案).实际上,有一个实现psycopg2游标的要点,支持准备好的语句和关于它的最小解释.还有一个建议是在psycopg2中继承游标对象以手动提供准备好的语句.
我想得到以下问题的权威答案:
预准备语句和参数化查询之间是否存在有意义的区别?这在实践中是否重要?如果使用参数化查询,是否需要担心预处理语句?
如果存在差异,Python生态系统中预准备语句的当前状态是什么?哪些数据库适配器支持预处理语
python database sql-injection prepared-statement parameterized-query
当1em应用于元素时,它采用浏览器的默认值(通常为16px)或其父级的font-size值,对吗?但是我注意到如果我margin-top: 1em在h1元素中使用类似的东西(不使用重置样式表,因此,h1设置为font-size: 32px),则1em等于32px,即使其父元素设置为font-size: 16px.
但是,使用类似font-size的东西:100%; 解决了这个差异.
我错过了什么?
我有一个问题比较输出与dateutil和pytz.我正在创建一个有意识的日期时间对象(UTC),然后转换为给定的时区,但我得到了不同的答案.我怀疑dateutil有时会给出错误的结果,因为它考虑到夏令时有问题(至少,我读过它的评论),但我找不到确认或修复该问题.这是代码:
import dateutil
u = dateutil.tz.tzutc()
date1 = datetime.datetime(2010, 5, 2, 11, 10, tzinfo=u)
# 2010-05-02 11:10:00+00:00
u2 = dateutil.tz.gettz('America/Chicago')
date2 = datetime.datetime(2010, 5, 2, 11, 10, tzinfo=u2)
# 2010-05-02 11:10:00-05:00
import pytz
u = pytz.timezone('UTC')
date1 = datetime.datetime(2010, 5, 2, 11, 10, tzinfo=u)
# 2010-05-02 11:10:00+00:00
u2 = pytz.timezone('America/Chicago')
date2 = datetime.datetime(2010, 5, 2, 11, 10, tzinfo=u2)
# 2010-05-02 11:10:00-06:00
Run Code Online (Sandbox Code Playgroud)
那么,这可能是什么问题?
我刚试过这个:
print u2.normalize(date1.astimezone(u2))
# 2010-05-02 06:10:00-05:00
Run Code Online (Sandbox Code Playgroud)
pytz需要normalize考虑DST吗?
好像pytz和dateutil似乎没有给出America/Argentina/San_Luis的答案,但这有效:
import pytz, …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以将文件从Mathematica上传到ifile.it.我已经看过ifile.it 的API,但是,我仍然不知道它是如何工作的.此外,我在Mathematica中看到的最接近的例子是" 使用Mathematica进行推特 ",但我不清楚,如何使用该示例中的GET请求.
提前致谢