我有一个基于Squeryl的应用程序.我将我的模型定义为案例类,主要是因为我觉得有方便的复制方法.
我有两个严格相关的模型.字段相同,许多操作是共同的,它们将存储在同一个DB表中.但是有一些行为只在两种情况中的一种情况下才有意义,或者在两种情况下都有意义但有所不同.
到目前为止,我只使用了一个案例类,其中一个标志区分了模型的类型,所有基于模型类型的方法都以if开头.这很烦人,不太安全.
我想要做的是考虑祖先案例类中的常见行为和字段,并让两个实际模型继承它.但是,据我所知,继承自case类在Scala中是不受欢迎的,如果子类本身就是一个case类(不是我的情况),它甚至被禁止.
在继承案例类时我应该注意哪些问题和陷阱?在我的情况下这样做是否有意义?
我开始使用THREE.js,我正在尝试绘制一个带有纹理的矩形,由单个光源照亮.我认为这很简单(为简洁起见省略了HTML):
function loadScene() {
var world = document.getElementById('world'),
WIDTH = 1200,
HEIGHT = 500,
VIEW_ANGLE = 45,
ASPECT = WIDTH / HEIGHT,
NEAR = 0.1,
FAR = 10000,
renderer = new THREE.WebGLRenderer(),
camera = new THREE.Camera(VIEW_ANGLE, ASPECT, NEAR, FAR),
scene = new THREE.Scene(),
texture = THREE.ImageUtils.loadTexture('crate.gif'),
material = new THREE.MeshBasicMaterial({map: texture}),
// material = new THREE.MeshPhongMaterial({color: 0xCC0000});
geometry = new THREE.PlaneGeometry(100, 100),
mesh = new THREE.Mesh(geometry, material),
pointLight = new THREE.PointLight(0xFFFFFF);
camera.position.z = 200;
renderer.setSize(WIDTH, HEIGHT);
scene.addChild(mesh);
world.appendChild(renderer.domElement);
pointLight.position.x = …Run Code Online (Sandbox Code Playgroud) 我试图向Web服务发出一个简单的POST请求,该请求返回Scala中的一些XML.
似乎Dispatch是用于此任务的标准库,但我找不到它的文档.我在上面链接的主站点详细解释了什么是承诺以及如何进行异步编程,但实际上并没有记录API.有一个周期表 - 看起来有点可怕 - 但它只对那些已经知道该做什么并且只需要提醒隐藏语法的人有用.
似乎Scalaz也有一些HTTP工具,但我也找不到任何文档.
我有一个div,其内容可能以各种方式改变:例如,其整个内容可以通过innerHTML重新加载,或者节点可以通过DOM方法添加.这反过来可能通过本机javascript或通过调用jQuery API或通过其他库间接发生.
我希望在div的内容改变为执行一些代码,但我绝对没有控制上如何将改变.事实上,我正在设计一个可供其他人使用的小部件,他们可以按自己喜欢的方式自由更改div的内容.当此div的内部内容发生更改时,可能还必须更新窗口小部件的形状.
我正在使用jQuery.有没有办法捕获这个div的内容已经改变的事件,但它发生了吗?
我正在开发一个由许多应用程序组成的Django(1.3)项目.每个应用程序在其自己的static目录下都有自己的静态文件.此外,我添加了一个目录project_static,其中应包含静态文件,这些文件在各种应用程序中很常见,例如jQuery.
我立即遇到的问题是命名冲突.默认情况下,collectstatic只需将所有内容放在全局static目录下,而无需按应用程序对其进行分类.这对我不起作用,因为每个应用程序都有 - 例如 - 一个名为的文件css/screen.css.
我的方式解决它是通过消除django.contrib.staticfiles.finders.AppDirectoriesFinder来自STATICFILES_FINDERS和使用命名空间的静态文件显示目录,所以我的设置现在的样子:
STATICFILES_DIRS = (
os.path.join(PROJECT_PATH, 'project_static'),
('my_app', os.path.join(PROJECT_PATH, 'my_app', 'static')),
('another_app', os.path.join(PROJECT_PATH, 'another_app', 'static')),
...
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
)
Run Code Online (Sandbox Code Playgroud)
问题是,通过这种方式,我丢失了所有其他应用程序的静态文件(例如django.contrib.admin).当然我可以手动添加管理员,但我不知道如何在不破坏管理员的情况下执行此操作,管理员具有不同的目录结构.
有没有更好的方法来管理具有多个应用程序的静态文件?
我正在尝试设计一个有一些表格的页面.似乎样式表比应该是更痛苦.
问题如下.桌子应该有一个固定的高度,并且当底部太少时,显示底部的空白区域 - 或者当内容太少时显示空白 - 或者显示垂直滚动条.除此之外,表格有一个不应滚动的标题.
据我所知,thead不滚动是表的默认行为.拉伸tfoot可以很好地填充白色空间.可悲的是,似乎我可以放在桌子高度上的每一个约束都被高兴地忽略了.我试过了
table {
height: 600px;
overflow: scroll;
}
Run Code Online (Sandbox Code Playgroud)
我试过了max-height.我试图绝对定位表并给出顶部和底部坐标.我试图在Firebug中手动编辑高度,看看它是否与CSS特异性有关.我也尝试过设置高度tbody.事实上,无论我的努力如何,表格的内容始终保持高水平.
当然我可以伪造一个带有div结构的表,但它实际上是一个表,我担心使用div我可能遇到一些问题,其中一些列可能没有正确对齐.
我怎么能给桌子一个高度?
不久前,当我学习Javascript时,我研究了Javascript:好的部分,我特别喜欢关于坏和丑陋部分的章节.当然,我并不同意所有内容,因为总结编程语言的设计缺陷在某种程度上是主观的 - 尽管如此,我想每个人都会同意这个关键字with在Javascript中是个错误.尽管如此,我发现阅读此类评论很有用:即使有人不同意,也有很多需要学习的地方.
是否有博客文章或一些描述Python设计错误的书籍?例如,我猜有些人会认为缺少尾调优化是一个错误; 可能还有其他值得学习的问题(或非问题).
好吧,这是一个相当基本的问题:我下面的SICP视频,我有点困惑之间的差异define,let和set!.
1)根据视频中的Sussman,define允许只附加一次值(在REPL中除外),特别是不允许两行定义.然而,Guile愉快地运行了这段代码
(define a 1)
(define a 2)
(write a)
Run Code Online (Sandbox Code Playgroud)
正如预期的那样输出2.事情有点复杂,因为如果我尝试这样做(编辑:在上述定义之后)
(define a (1+ a))
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,而
(set! a (1+ a))
Run Code Online (Sandbox Code Playgroud)
被允许.我仍然不认为这是set!和define我之间的唯一区别:我错过了什么?
2)define和let我之间的区别更让我困惑.我知道理论上let用于绑定局部范围内的变量.尽管如此,在我看来,这也是一样的define,例如我可以替换
(define (f x)
(let ((a 1))
(+ a x)))
Run Code Online (Sandbox Code Playgroud)
同
(define (g x)
(define a 1)
(+ a x))
Run Code Online (Sandbox Code Playgroud)
和f和g工作相同:在特定的变量a是未结合的外面g为好.
我可以看到这个有用的唯一方法是let可能具有整个函数定义的更短范围.在我看来,总是可以添加一个匿名函数来创建必要的范围,并立即调用它,就像在javascript中一样.那么,真正的优势是let什么?
我即将为一个应该在Tomcat服务器上运行的Web应用程序启动一个项目.我决定去Scala - 我工作的另一个替代方案是Groovy - 主要是为了类型安全.我现在面临着为工作选择合适工具的任务.
我需要开发的项目只能通过JSON API访问.它将与自己的数据库和两个外部服务进行交互,这两个服务分别公开JSON和XML API.我还需要能够安排定期作业,我的应用程序将使用这些外部服务执行各种同步任务.
对于数据库,我希望能够在Scala中定义我的模型并自动生成模式.如果需要更改我的模型,我希望有迁移来处理它.
对于这个应用程序,我试图评估Lift,Play!2和Scalatra.
电梯是我的第一选择.它是三个项目中最成熟的,似乎被认为是高度安全的(我不想在安全性上妥协).此外,它具有Scala中最好的JSON处理库.不过,在尝试了一下之后,我不确定这是不是正确的选择.文档并不是我见过的最好的文档.此外,Record + Squeryl在我看来比Mapper更好的抽象,但这种用途的文档更加稀缺.最后,尽管Lift当然可以用于创建Web服务,但它的真正优势似乎在于状态处理,因此我不相信我的项目需要额外的复杂性.
玩!2似乎有更好的文档,我看起来更熟悉(我来自Django背景).同样,它的默认数据库抽象并不能让我安心:ANORM依赖于SQL,这对类型检查没有帮助.无论如何我不得不使用Squeryl,我不确定这个用例的文档是否同样好.而且,部署Play!目前有2个应用程序比我想要的更复杂.一个人必须安装Play!在生产服务器上,我不确定这是我工作的选项.否则,有一个插件可以使它与servlets容器一起使用,但它是非常新的,我不确定它是多么稳定/可靠.
最后,可以选择使用Scalatra.Scalatra似乎很容易设置,它的设计完全是为了创建Web服务.折衷方案是Scalatra不提供太多功能.它不与现有ORM集成或建议如何组织应用程序的模型部分,它无助于设计cron或命令行任务.我也不确定该项目的长期未来.
您认为什么是我的任务的最佳选择?
scala ×3
javascript ×2
python ×2
case-class ×1
css ×1
css-tables ×1
django ×1
html ×1
http ×1
inheritance ×1
jquery ×1
lift ×1
scalatra ×1
scalaz ×1
scheme ×1
three.js ×1
unit-testing ×1
widget ×1