我正在Django中编写一个项目,我发现80%的代码都在文件中models.py.这段代码令人困惑,经过一段时间后,我不再明白究竟发生了什么.
这是困扰我的:
User,但从技术上讲,它应该统一创建它们.这是一个简单的例子.起初,User模型是这样的:
class User(db.Models):
def get_present_name(self):
return self.name or 'Anonymous'
def activate(self):
self.status = 'activated'
self.save()
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,它变成了这样:
class User(db.Models):
def get_present_name(self):
# property became non-deterministic in terms of database
# data is taken from another service by api
return remote_api.request_user_name(self.uid) or 'Anonymous'
def activate(self):
# method now has a side effect (send message to user)
self.status = 'activated'
self.save()
send_mail('Your account is activated!', '…', [self.email])
Run Code Online (Sandbox Code Playgroud)
我想要的是在我的代码中分离实体:
实现可以在Django中应用的这种方法有哪些好的做法?
python django model-view-controller business-logic-layer data-access-layer
React.js的一大优势应该是服务器端渲染.问题是密钥功能React.renderComponentToString()是同步的,这使得在服务器上呈现组件层次结构时无法加载任何异步数据.
假设我有一个用于评论的通用组件,我可以在页面的任何位置删除它.它只有一个属性,某种标识符(例如文章的id在其下面放置注释),其他所有内容都由组件本身处理(加载,添加,管理注释).
我非常喜欢Flux架构,因为它使很多东西变得更容易,而且它的商店非常适合在服务器和客户端之间共享状态.一旦我的包含注释的商店被初始化,我就可以将其序列化并将其从服务器发送到客户端,在那里可以轻松恢复.
问题是填充我的商店的最佳方式是什么.在过去的几天里,我一直在谷歌搜索,我遇到了一些策略,考虑到React的这个功能被"提升"多少,这些策略看起来都不是很好.
在我看来,最简单的方法是在实际渲染开始之前填充我的所有商店.这意味着在组件层次结构之外的某个地方(例如,挂钩到我的路由器).这种方法的问题是我必须两次定义页面结构.考虑一个更复杂的页面,例如一个包含许多不同组件的博客页面(实际的博客帖子,评论,相关帖子,最新帖子,推特流......).我必须使用React组件设计页面结构,然后在其他地方我必须定义为当前页面填充每个所需存储的过程.这似乎不是一个很好的解决方案.不幸的是,大多数同构教程都是以这种方式设计的(例如,这个伟大的通量教程).
React-async.这种方法很完美.它让我只需在每个组件的特殊函数中定义如何初始化状态(无论是同步还是异步),并在层次结构呈现为HTML时调用这些函数.它的工作方式是在状态完全初始化之前不会呈现组件.问题是它需要Fibers,据我所知,这是一个改变标准JavaScript行为的Node.js扩展.虽然我非常喜欢这个结果,但在我看来,我们并没有找到解决方案,而是改变了游戏规则.而且我认为我们不应该被迫这样做来使用React.js的这个核心功能.我也不确定这个解决方案的一般支持.是否可以在标准Node.js虚拟主机上使用Fiber?
我自己在思考一点.我没有真正想过通过实现细节,但一般的想法是我会以类似于React-async的方式扩展组件,然后我会在根组件上重复调用React.renderComponentToString().在每次传递过程中,我会收集扩展回调,然后在传递和传递中调用它们来填充商店.我将重复此步骤,直到填充当前组件层次结构所需的所有存储.有很多事情需要解决,我对性能特别不确定.
我错过了什么?还有其他方法/解决方案吗?现在我正在考虑采用react-async/fiber方式,但我并不完全确定它,如第二点所述.
关于GitHub的相关讨论.显然,没有官方方法甚至解决方案.也许真正的问题是如何使用React组件.像简单的视图层(几乎是我的建议第一)或像真正的独立和独立组件?
我刚刚在我的机器上安装了visual studio 2012,之前我曾安装过visual studio 2012 RC.安装成功,但在我打开一个项目之后,C#编辑器无法运行,就像这样的纯文本编辑器:

我已经尝试修复它,完全卸载然后重新安装,但没有成功.
有人有想法吗?
我不知道它是否相关,但是在创建新项目或打开现有项目时,我有时也会收到此错误:

提前致谢
我在Linux机器上使用putty.我在vi中搜索的常用方法是输入斜杠/,然后输入我的搜索字符串,输入,然后通过n或shift+ 查看所有匹配项n.
我想知道vi是否有像Eclipse的增量搜索(ctrl+ j)这样的功能,其中当我输入时,它跳转到下一个逻辑匹配.我想我的一位同事曾经这样做,但我不确定.
我有一个不推荐使用的(已过时的)函数,它返回一个枚举,我有一个返回枚举列表的新函数.
其中一个枚举值仅在不推荐使用的函数中使用,因此可以将枚举成员设置为过时(因为它不能在列表中)?
我想用一个对象和特定顺序的对象列表初始化一个列表.目前,我正在做:
List<MyObject> list = new List<MyObject>();
list.Add(object1); // object1 is type MyObject
list.AddRange(listOfObjects); // listOfObjects is type List<MyObject>
Run Code Online (Sandbox Code Playgroud)
我希望将其整合到初始化语句中(当然语法错误):
List<MyObject> newList = new List<MyObject>() { object1, listOfObjects };
Run Code Online (Sandbox Code Playgroud)
有没有办法简洁地做到这一点?
我似乎无法通过阅读MSDN上的ObservableCollection.Move(int oldIndex,int newIndex)的文档来解决这个问题:
oldIndex类型:System.Int32从零开始的索引,指定要移动的项的位置.newIndex类型:System.Int32从零开始的索引,指定项的新位置.
我不明白它是如何工作的.该项目会发生什么变化newIndex?我的假设是每个项目的索引index >= newIndex递减.这个假设是否正确?更重要的是,在MSDN上某处解释或描述了这种行为?
我打算使用Python函数注释来指定静态工厂方法的返回值的类型.我知道这是注释的理想用例之一.
class Trie:
@staticmethod
def from_mapping(mapping) -> Trie:
# docstrings and initialization ommitted
trie = Trie()
return trie
Run Code Online (Sandbox Code Playgroud)
PEP 3107指出:
函数注释只不过是一种在编译时将任意Python表达式与函数的各个部分相关联的方法.
Trie是Python中的有效表达式,不是吗?Python不同意或者更确切地说,找不到名称:
def from_mapping(mapping) -> Trie:
NameError: name 'Trie' is not defined
值得注意的是,如果指定了基本类型(例如objector int)或标准库类型(例如collections.deque),则不会发生此错误.
导致此错误的原因是什么?如何解决?
我修改了我的代码,因此我可以将文件打开为只读.现在我无法使用,File.WriteAllText因为我的FileStream并StreamReader没有转换为字符串.
这是我的代码:
static void Main(string[] args)
{
string inputPath = @"C:\Documents and Settings\All Users\Application Data\"
+ @"Microsoft\Windows NT\MSFax\ActivityLog\OutboxLOG.txt";
string outputPath = @"C:\FAXLOG\OutboxLOG.txt";
var fs = new FileStream(inputPath, FileMode.Open, FileAccess.Read,
FileShare.ReadWrite | FileShare.Delete);
string content = new StreamReader(fs, Encoding.Unicode);
// string content = File.ReadAllText(inputPath, Encoding.Unicode);
File.WriteAllText(outputPath, content, Encoding.UTF8);
}
Run Code Online (Sandbox Code Playgroud) 我想以编程方式查明我的应用程序是否从网络驱动器运行.这样做最简单的方法是什么?它应该支持UNC路径(\\127.0.0.1\d$)和映射的网络驱动器(Z :).
c# ×6
.net ×4
collections ×2
python ×2
annotations ×1
django ×1
eclipse ×1
enums ×1
flux ×1
linux ×1
node.js ×1
putty ×1
python-3.x ×1
reactjs ×1
reactjs-flux ×1
streamreader ×1
type-hinting ×1
vim ×1