我无法理解如何将烧瓶应用分成多个文件.
我正在创建一个Web服务,我想将api分成不同的文件(AccountAPI.py,UploadAPI.py,...),所以我没有一个巨大的python文件.
我已经读过你可以用蓝图做到这一点,但我不完全确定路线对我来说是正确的.
最终我想运行一个Main python文件并包含其他文件,这样当它运行时,它们被认为是一个大文件.
例如,如果我有Main.py和AccountAPI.py我希望能够这样做:
Main.py:
from flask import Flask
import AccountAPI
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
AccountAPI.py:
@app.route("/account")
def accountList():
return "list of accounts"
Run Code Online (Sandbox Code Playgroud)
我知道这个例子显然不会起作用,但有可能做那样的事吗?
谢谢
是否需要#include某个文件,如果在标题(*.h)内,使用此文件中定义的类型?
例如,如果我使用GLib并希望gchar在我的标题中定义的结构中使用基本类型,是否有必要执行a #include <glib.h>,知道我已经在我的*.c文件中有它?
如果是,我还必须把它放在#ifndef和#define之后#define?
无论出于何种原因,我们公司都有一个编码指南,规定:
Each class shall have it's own header and implementation file.
因此,如果我们编写一个名为的类,MyString我们需要一个关联的MyStringh.h和MyString.cxx.
还有其他人这样做吗?有没有人看到任何编译性能影响?10000个文件中的5000个类的编译速度是否与2500个文件中的5000个类一样快?如果没有,差异是否明显?
[我们编写C++并使用GCC 3.4.4作为我们的日常编译器]
我喜欢在Xcode 4项目导航器窗格中将我的类组织成组.我也通过终端使用GIT版本,这对我来说比Xcode 4集成更好.对我来说,当我在Xcode中创建的组对应于我的文件系统上的真实文件夹时,它是最有意义的.
但是,Xcode似乎并不关心文件系统中的文件(例如Objective-C .h/.m文件)的位置,每次添加一个group(Option+Command+N)时,它都是纯粹的装饰,因为你放在那里的任何文件都会分享与其余硬盘相同的位置.
奇怪的是,如果您首先在硬盘驱动器上创建一个文件夹,然后将其拖到Xcode,那么您已经在文件系统上创建了一个具有自己位置的组.您在其中创建的每个文件都将在磁盘上的文件夹中创建.我喜欢这个,但如果Xcode会为我做这件事,我会更喜欢它Option+Command+N.为您要创建的每个组切换到Finder的工作流程,然后将其拖回到项目导航器中的正确位置,这简直太愚蠢了.
感觉就像设置会修复,但我找不到它!有没有更好的办法?
更新:将文件夹拖动到Xcode时,您将看到一个对话窗口,您可以在其中选择"文件夹参考".这看起来很有希望,但是我的Xcode 4不接受那里的文件作为类,并一直告诉我它找不到任何文件.也许答案就在这里,但我仍然找不到它.
另一个更新:我已将主编辑器环境从Xcode更改为AppCode.后者支持实际创建文件夹以支持项目组,同时保持与Xcode的100%兼容性.那些AppCode的人肯定知道他们在做什么.
目前,我在InnoDB表中将图像(最大6MB)存储为BLOB.随着数据量的增长,夜间备份越来越慢,阻碍了正常的性能.
因此,二进制数据需要转到文件系统.(指向文件的指针将保存在数据库中.)
数据具有树关系:
- main site
- user_0
- album_0
- album_1
- album_n
- user_1
- user_n
etc...
Run Code Online (Sandbox Code Playgroud)
现在我希望数据通过目录结构均匀分布.我该怎么做到这一点?
我想我可以尝试MD5('userId, albumId, imageId');切片结果字符串以获取我的目录路径:
/var/imageStorage/f/347e/013b/c042/51cf/985f7ad0daa987d.jpeg
这将允许我将第一个字符映射到服务器,并将目录结构均匀分布在多个服务器上.
然而,这不会保持每个用户组织的图像,可能将图像分散在多个服务器上的1个专辑中.
我的问题是:
在保持用户/专辑数据在一起的同时,以平衡的方式将图像数据存储在文件系统中的最佳方法是什么?
我在想正确的方向吗?或者这是完全做事的错误方式?
更新:
我将为md5(user_id)最高级别的拆分进行字符串切片.然后将所有用户数据放在同一个存储桶中.这将确保数据的均匀分布,同时保持用户数据紧密存储在一起.
/var
- imageStorage
- f/347e/013b
- f347e013bc04251cf985f7ad0daa987d
- 0
- album1_10
- picture_1.jpeg
- 1
- album1_1
- picture_2.jpeg
- picture_3.jpeg
- album1_11
- picture_n.jpeg
- n
- album1_n
我想我会使用从后面拆分的albumId(我喜欢这个想法!),以保持每个目录的专辑数量更小(尽管大多数用户不需要).
谢谢!
我习惯在一个C文件中完成所有编码.但是,我正在开展一个足够大的项目,这样做变得不切实际.我一直在#including他们,但是我遇到了多次#include一些文件的情况,等等.我听说过.h文件,但我不确定他们的功能是什么(或者为什么有2个文件比1)好.
我应该使用什么策略来组织我的代码?是否可以将"公共"功能与特定文件的"私有"功能分开?
这个问题促成了我的询问.tea.h文件没有引用tea.c文件.编译器是否"知道"每个.h文件都有一个相应的.c文件?
我在Eclipse项目中有一堆软件包,它们的名称如下:edu.xxx.proj.app edu.xxx.proj.demo edu.xxx.proj.utils Eclipse中有没有办法自动将它们折叠成文件夹结构?我希望它们在工作台上如下:
edu__
|_xxx__
|_proj__
|_app
|_demo
|_utils
Run Code Online (Sandbox Code Playgroud) 对于我正在开发的webapps,我通常使用以下文件组织,因为我认为它尊重约定:
src
|-- main
|-- resources
| |-- *.properties
| |-- *.xml
| |-- spring
| |-- applicationContext.xml (main application context config file)
|-- webapp
|-- WEB-INF
|-- spring
| |-- spring-mvc.xml (web application context config file, delegated to manage only the web part)
| |-- spring-security-http.xml (web security config)
|-- static
| |-- *.css
| |-- *.js
|-- views
| |-- *.jsp
|-- web.xml (deployment configuration)
Run Code Online (Sandbox Code Playgroud)
我想尝试的是根据以下结构组织我的文件:
src
|-- main
|-- resources
| |-- *.properties
| |-- *.xml
| …Run Code Online (Sandbox Code Playgroud) 我继承了一个庞大的crontab,我需要维护和更新.我没有太多的经验或bash脚本(我认为我对基础知识有一个很好的掌握),我想做得很好.简短请求:任何"重构"凌乱的crontab和一组bash脚本的指南
长期请求:我遇到了很多问题,但很多人使用cron文件等我觉得我必须缺少一些大型信息库,最佳实践和工具 - 或者这只是一个风格上的差异那种编程?(我的偏见:为什么我可以使用工具更快,更一致,更好地手动执行某些操作?).
迄今为止的问题示例:
由于外部事件,crontab没有运行几天.与其他人一起,我们手动浏览列表,试图找出未运行的内容,我们需要重新运行的内容,以及我们需要编辑和运行早期日期等的脚本.我找不到:
事实证明,一份特定的报告已经运行了两年.它只是再次被要求,而且,它在crontab中!bash脚本刚刚破坏了对相关文件的路径引用.我找不到:bash文件的某种路径检查器?像网站链接检查器.是的,我最终将手动完成这些操作,但它至少会显示一些问题区域.
听起来有些时候,依赖进程之间的间隔太长或太短,因此在第一次运行之后发生了更新,或者在第二次调用之前第一次没有完成运行.我已经看到了一些可能的选项(例如anacron按顺序运行),但你会推荐什么?
还有大量基本无意义的电子邮件从crontab生成(脚本抛出错误但运行'正确',大多数情况下无声地失败,或只是打印非必要脚本的永久性).我会手动浏览脚本并尝试让它们提供更多有用的数据,或者"安静地成功",但是你知道 - 任何指导方针?
如果我对这个问题的理解或布局感到困惑,那么我道歉,但是嘿 - 你看到了我的问题!我需要去从新手,知道怎样做才能得到这个正确的,并没有进一步搞砸了一个敏感的系统.谢谢!
我喜欢组织我的代码,所以理想情况下我想要每个文件一个类,或者当我有非成员函数时,每个文件需要一个函数.
原因是:
当我阅读代码时,我将始终知道在哪个文件中我应该找到某个函数或类.
如果它是每个头文件的一个类或一个非成员函数,那么当我include成为头文件时,我不会包含整个混乱
.
如果我在函数中做了一些小改动,那么只需要重新编译该函数.
但是,将所有内容拆分为许多标头和许多实现文件都会使编译速度变慢.在我的项目中,大多数函数访问一定数量的模板化其他库函数.因此代码将反复编译,每个实现文件一次.编译我的整个项目目前在一台机器上需要45分钟左右.大约有50个目标文件,每个目标文件使用相同的昂贵编译头.
也许,每个头文件有一个类(或非成员函数)是可接受的,但是将许多或所有这些函数的实现放在一个实现文件中,如下例所示?
// foo.h
void foo(int n);
// bar.h
void bar(double d);
// foobar.cpp
#include <vector>
void foo(int n) { std::vector<int> v; ... }
void bar(double d) { std::vector<int> w; ... }
Run Code Online (Sandbox Code Playgroud)
同样,优点是我可以只包含foo函数或只包含bar函数,整个项目的编译速度会更快,因为foobar.cpp是一个文件,所以std::vector<int>(这只是其他一些昂贵的例子)编译模板化构造)必须只编译一次,而不是两次编译a foo.cpp和bar.cpp单独编译.当然,我上面的原因(3)对于这种情况是无效的:刚刚改变foo(){...}之后我必须重新编译整个可能很大的文件foobar.cpp.
我很好奇你的意见是什么!
c++ build-process file-organization compilation code-organization
c ×2
c++ ×2
java ×2
bash ×1
blob ×1
compilation ×1
cron ×1
crontab ×1
database ×1
eclipse ×1
flask ×1
header ×1
java-ee ×1
objective-c ×1
performance ×1
python ×1
spring ×1
web-services ×1
xcode ×1
xcode4 ×1