在对这个主题进行了一些研究之后,我一直在尝试使用模式来组织我的jQuery代码(例如,Rebecca Murphy 在jQuery会议上做过这方面的演示).
昨天我检查了(显示)模块模式.结果看起来有点像我认为的YUI语法:
//global namespace MyNameSpace
if(typeof MNS=="undefined"||!MNS){var MNS={};}
//obfuscate module, just serving as a very simple example
MNS.obfuscate = function(){
//function to create an email address from obfuscated '@'
var email = function(){
$('span.email').each(function(){
var emailAddress = $(this).html().replace(' [ @ ] ','@');
$(this).html('<a href="mailto:' + emailAddress + '">' + emailAddress + '</a>');
});
};
return {
email: email
};
}();
//using the module when the dom's ready
jQuery(document).ready(function($){
MNS.obfuscate.email();
});
Run Code Online (Sandbox Code Playgroud)
最后我有几个模块.一些自然包括"私有成员",在这种情况下,它意味着变量和/或函数,这些变量和/或函数仅对该模块中的其他函数很重要,因此不会在return语句中结束.
我认为将模块中的部分连接(与搜索有关的所有内容)组合在一个模块中是有意义的,给出了整个结构.
但在写完这篇文章 …
我正在编写一个使用pygame C API的Python C扩展.到现在为止还挺好.现在我想知道如何组织我的源代码,以便我可以在包中包含多个子模块.所有教程都集中在一个.c文件扩展名上.我试着查看一些项目的setup.py文件,但是它们让我的思绪变得复杂,我无法看到树木的森林.
基本上,我有一个扩展,说MyExt.MyExt具有全局功能,有3种类型.我如何组织PyMethodDef列表?我是否必须将所有这些都放在一个列表中?或者,我注意到您传递给setup函数的Extension对象实际上是一个模块数组,因此如何命名模块以使它们都在一个包中并且可以看到彼此?
我的setup.py:
main_mod = Extension('modname',
include_dirs = ['C:\Libraries\Boost\include',
'C:\Libraries\SDL\include',
'C:\Libraries\SDL_image\include'],
libraries = ['libSDL',
'SDL_image'],
library_dirs = ['C:\Libraries\SDL\lib',
'C:\Libraries\SDL_image\lib'],
sources = ['main.cpp',
'Object1.cpp',
'Object2.cpp',
'Etcetera.cpp'])
Run Code Online (Sandbox Code Playgroud)
所以当我调用:setup(name ="Some Human Readable Name,Right?",ext_modules = [main_mod])我可以将其他模块添加到ext_modules列表但是我将第一个参数传递给'Extension'?我是否使用像'mypackage.submodule'这样的点分隔字符串?
更一般地说,如何组织具有多个子模块的C扩展?如果有人能指出一些易于阅读和理解的源代码,那就太棒了.非常感谢!
我需要为最近的项目使用多个工作区.每个工作区可能包含10个或更多项目.
当我在各种应用程序和不同的eclipse实例之间切换时(对于多个工作空间),我希望能够轻松区分给定的工作空间,而无需花费5秒钟从打开的文件中了解等.
有哪些设施可以快速了解我所在的工作空间?
Eclipse中有相当一层的组织.您可以拥有多个工作区,每个工作区都可以有项目,这些项目可以分配到工作集,然后每个项目都可以有源文件夹....
你如何使用这个组织?你甚至使用它吗?工作集如此隐蔽,我几乎不知道它们是什么; 它们是常用的,还是因为它们如此常见而被隐藏?
这背后的方法甚至是什么?我想对使用所有这些不同组织层的推荐方法做一个很好的解释,因为目前我基本上只在一个工作区(默认的%USER%/工作区文件夹)中有一堆随机项目,而且它到了是一个字母混乱.
所以从本质上讲:如何保持Eclipse工作空间的整理?
所以,在Python中(虽然我认为它可以应用于许多语言),我经常发现自己有这样的事情:
the_input = raw_input("what to print?\n")
while the_input != "quit":
print the_input
the_input = raw_input("what to print?\n")
Run Code Online (Sandbox Code Playgroud)
也许我太挑剔了,但我不喜欢这条线有多the_input = raw_input("what to print?\n")重复.它降低了可维护性和组织性.但是我没有看到任何避免重复代码的变通方法而不会进一步恶化问题.在某些语言中,我可以这样写:
while ((the_input=raw_input("what to print?\n")) != "quit") {
print the_input
}
Run Code Online (Sandbox Code Playgroud)
这绝对不是 Pythonic,Python甚至不允许在循环条件AFAIK中进行赋值.
这个有效的代码修复了冗余,
while 1:
the_input = raw_input("what to print?\n")
if the_input == "quit":
break
print the_input
Run Code Online (Sandbox Code Playgroud)
但是也感觉不对.将while 1意味着这个循环将永远运行下去; 我正在使用一个循环,但给它一个假的条件并将真正的条件放入其中.
我太挑剔了吗?有一个更好的方法吗?也许有一些我不知道的为此设计的语言结构?
我一直认为在服务器上使用NodeJS的一大好处是可能在服务器端和客户端之间共享代码(例如输入验证).现在我实际上正在使用NodeJS进行开发,我发现的一个难点是确定执行每个代码体的责任和上下文.下面我将列出一些我曾经遇到过的困难,希望能够对我可能忽略的惯例或指导有所启发,这有助于提升这些问题.
构建时间代码
以遵循基本文档的方式构建使用Gulp,Grunt或vanilla NPM的项目的时间代码通常很容易理解.大多数较小的项目倾向于将所有代码保存在单个文件中,并且文件往往被命名为传统名称,如gulpfile.js,但是对于更大的项目,我看到这些脚本开始被拆分.我已经看到一些gulp文件被拆分成多个文件并放在一个单独的目录下的情况.更糟糕的是,我发现gulpfile.js文件甚至没有这样命名的情况导致新开发人员寻找gulpfile所在的位置,一旦找到它,gulp命令总是必须运行特定的- -gulpfile选项.
运行时服务器端代码
基本节点应用程序的入口点似乎只需要在运行node命令时指出特定的JavaScript文件(例如node script.js).对于Web服务器应用程序,例如那些使用Express的应用程序,我注意到按照惯例,入口点文件通常称为server.js,通常可以在应用程序的根目录中找到.在某些其他情况下,例如在开发人员环境中运行Web服务器时,我看到gulp任务负责启动Node.在这些情况下,似乎有多种方法可以包含入口点,但我发现的一个例子就是启动webpack编译器,然后是入口点脚本的require语句.在这种类型的设置中,弄清楚如何结合关于如何完成典型节点调试命令的正常指导是非常重要的.除了应用程序的入口点之外,似乎没有关于NodeJS/Express应用程序的目录结构的任何一般指导,这些应用程序将服务器端特定代码保存在其中以帮助定位它并使其与构建时间和客户端代码.
服务器端代码既用于提供静态内容,服务器端生成的视图(例如使用MVC),也用于向客户端提供API,服务器端故事变得更加复杂.侧.我倾向于将API与应用程序项目分开,但我从其他人那里得到的感觉是,这样做有一种过于复杂的感觉,我将其视为合理的关注点分离.
运行时客户端代码
由于客户端代码通常可以根据请求的第一页具有各种入口点,因此这可能很棘手.但是,由于URL的一般透明性以及它们如何映射到典型情况下的资源,以及调试工具在现代浏览器中的强大程度,因此遵循脚本并不会太麻烦.对于典型的构建过程而言,难以替代客户端代码,这通常最终会复制文件并将它们放置在不同名称下的生产类结构中.一个例子是一个项目,它有一个名为src或js的文件夹,它保存客户端和服务器端代码混合,除了只有一部分文件碰巧包含在构建任务中,该任务转换并经常连接文件和将它们放在分发文件夹中.我见过的这些分发文件夹的常用名称是dist,public,www和wwwroot.通常,如果不总是这些目录位于项目的根目录,这至少使得它更容易定位而无需询问构建脚本.
我希望有一些一般指导如何将所有这些结合在一起,或许是一个权威的来源,主要是为那些像我一样可能想要从右脚开始的人提供指导.作为副作用或许能够引用某种标准,即使它是一个松散的标准,也可能减少团队在开始时发明和讨论的样板数量.在上面列出的每个上下文中,显然会有一些技术特定的约定,例如客户端的AngularJS,Meteor或ReactJS遵循的约定.我正在寻找的约定更具体地分离端到端JavaScript应用程序中的主要高级上下文,其中语言和平台不再是区分每种语言和平台的明显方式.
每当我通过在Xcode中拖放时向我的项目添加一些文件时,会弹出一条消息"将项目复制到目标的组文件夹(如果需要)".
我注意到当我们使用大多数第三方库时,我们不勾选复选框,而是在"标题搜索路径/库搜索路径"中指定库路径.但对于像图像这样的较小资源文件,我们勾选复选框.
我需要勾选哪些特定情况,它会有什么不同?
我正在使用angular给出我的第一步,我需要定义一个实用程序帮助程序库,其中包含一些函数方法,类似于
dataHelper.parse,dataHelper.sanitize等
以角度组织它的推荐方法是什么?
今天,我已将我的私人 github 存储库移至新创建的组织(我是该组织的所有者)。我已将远程源更改为 git@github.com:organization/repo.git。我无法推送到远程,因为我收到错误消息
错误:MyGithubUsername 对organization/repo.git 的权限被拒绝。
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
我已检查我的帐户是否是组织的所有者并且存储库存在。
所以目前我将所有缩略图存储在一个目录中,文件名作为完整大小图像的完整路径的 md5 哈希值。但是我在这里读到,当目录达到数千个文件时,这会导致问题。它们将被 linux 文件系统定位得越来越慢。
考虑到我只能通过原始图像路径找到缩略图,我有哪些选择?日期将是最好的选择,例如year/month/day/md5_hash.jpg,但这需要我从某个地方存储和读取日期,因此需要添加一些额外的步骤。
我正在考虑拆分 md5,例如前两个字符 = 子文件夹名称,其余 = 文件名。这会给我 15*15 个子文件夹,但我想听听更好的选择,谢谢!
我刚刚得到的另一个想法是:创建一个单独的服务器来组织缩略图。服务器将跟踪缩略图计数并在达到某个限制时创建其他文件夹,并在删除缩略图时重新使用旧文件夹。缺点是我需要一个单独的数据库来将哈希映射到缩略图路径:(
organization ×10
eclipse ×2
javascript ×2
module ×2
python ×2
angularjs ×1
build-time ×1
github ×1
image ×1
jquery ×1
node.js ×1
performance ×1
permissions ×1
push ×1
redundancy ×1
runtime ×1
server ×1
thumbnails ×1
workspace ×1
xcode ×1