我目前面临着一个非常不寻常的设计问题,希望比我更聪明的开发人员能够提供一些见解.
没有太具体,我被非营利组织聘用,以协助重建他们的遗产,但非常有价值(在社会价值方面)软件.开发团队不同于我作为软件开发人员时遇到的任何开发团队,由少数开发人员和更多非编程领域专家组成.这种安排的不寻常之处在于领域专家(我们称之为内容创建者),使用自定义工具(其中一些基于prolog专家系统引擎)来开发基于Web的软件组件/表单.
系统使用非常笨拙的回发模型来执行服务器端的逻辑操作并返回新的表单/结果.它很慢,容易出现故障.简单的东西,比如利用现有的工具创建HTML表单是多少更艰巨的比它应该是.随着对更具交互性和高性能体验的需求的增长,软件开发人员越来越多地发现他们必须绕过内容创建者使用的专家系统/可视化工具,并在javascript中手动编写新组件.内容创作者越来越感到他们的双手被束缚,因为他们现在无法贡献新的组件.
我一直在倡导完全放弃以前的模型并采用典型的软件开发过程.如前所述,由于非程序化开发工具已无法满足业务需求,因此该项目自然而然地向此发展.
然而,内容创建者可以做出非常宝贵的贡献,我希望他们能够专注于使用像Cucumber这样的工具正式指定软件的预期行为,而不是参与实现.
我的同事,我非常尊重和怀疑,比我更有知识,认为现有的过程很好,我们只需要建立更好的工具.然而我不禁觉得这种方法存在根本性的缺陷.我还没有找到一个实例,无论是历史还是现代,这种软件开发模式都取得了成功.COBOL的开发理念是允许业务人员/领域专家在不需要程序员的情况下编写应用程序,在我看来,所有这些都是创建一种新的程序员 - COBOL程序员.如果有可能开发出有效的系统,允许非程序员创建非平凡的应用程序,对程序员的需求肯定会低得多吗?我所知道的唯一适合这种模式的框架是SAP的Smart Forms和Microsoft的Dynamix AX--这两个框架都是特定领域的ERP系统.
这两个概念之间的妥协是将某种DSL作为模板语言来实现.我甚至不确定这会成功,因为除了一个例外,所有内容创建者都完全不是技术性的.
我还考虑使用图形/工具箱样式工具构建基于Visual Studio或Net Beans的自定义IDE.
非程序化开发是一个愚蠢的错误吗?这总是会导致一些令人不满意的事情,需要程序员亲自动手吗?
非常感谢您花时间阅读本文,我当然感谢任何反馈.
我需要一些关于如何在IntelliJ中定义工作域函数的非常基本的建议:
(ns clojure.examples.hello
(:gen-class))
(defn -main
[greetee]
(println (str "Hello " greetee "!")))
Run Code Online (Sandbox Code Playgroud)
当我创建一个项目时,将前面的代码粘贴到源文件中,并设置运行配置(选择脚本路径,模块,工作开发和"在REPL中运行脚本"),:java.lang.Exception: Unable to resolve symbol: -main in this context (NO_SOURCE_FILE:1)"每次运行时都会得到(-main "Some Greeting").任何意见将是有益的.
我想要绘制6个向量.我如何用不同的颜色(随机)制作每个图?使用下面的代码,图表限制为所有六个向量的一种颜色.
plot(x,y,'-rs','LineWidth',1,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',5);
Run Code Online (Sandbox Code Playgroud) 如何控制虚拟表中虚函数的顺序?它们的布局是否与它们声明的顺序相同?
继承具有虚拟表的类时,继承类的虚拟表是基类的扩展,或者是仅使用继承类虚函数创建的全新虚拟表.(即虚拟表是否仍然在类的索引+ 0x0?)
所以我在多处理器机器上有一个C++的布尔类型.变量开始生命为真,然后有几个线程,其中任何一个或多个可能将其写为假.
同时,这些线程也可以读取此变量以检查其状态.我不关心如果读取此变量与任何写入同步,它们每个都发生在代码中的不同位置,并且无论是在任何特定写入之前还是之后都无关紧要.现在,我需要一个锁定这个布尔值?
我需要锁定的唯一方法是,如果处于非常低的水平,内存可能会被两次竞争写入损坏.例如,如果处理器A上的汇编指令在处理器B执行相同操作的同时将0写入表示布尔值的字节...而不是写入0,则内存最终为值22或一些东西.这可能搞砸了.
所以,一般来说,如果proc A正在写3到一个内存位置,而proc B写7,没有同步,我保证最终得到3或7?还是容易打破记忆?
编辑:
谢谢你的评论.更多信息:当然程序中有同步.总而言之,有问题的标志是告知某个内存池是否"脏"(需要压缩).因此,任何线程都可以决定将此标志设置为false(意味着池是脏的).例如,从池中释放内存会使其变脏.然后,任何线程都可以读取此标志并设置另一个标志以指示需要清理 - 当从池中分配内存时执行此检查,如果内存不足则会发出清除信号.在迭代之间的主要关键部分的某处,每个线程都要查找更多要处理的数据,我将让线程检查第二个标志,并做一些适当的事情来确保:所有其他的theads完成当前的迭代,一个线程清理记忆,
所以我认为我不需要锁定,因为:锁定会确保写入不会与另一次写入或读取同时发生.但谁在乎呢,只要硬件没有让我失望,最糟糕的情况是读取在写入之前或之后随机发生 - 如果我用锁保护它会发生同样的事情,就在那时我们真的确定它是在......之前或之后...
我认为同样的论点适用于我上面提到的第二个标志.
我喜欢关于D的DFL GUI工具包的所有内容,除了它只适用于Windows,因为它基本上是围绕Windows API的漂亮的高级包装器.使用Winelib简单地将这样的工具包移植到Linux(我真的不关心除Windows和Linux之外的任何其他操作系统)有多难?如果我在Linux上编译这样一个库并将其与Winelib链接起来,它大多数"只是工作"的几率是多少?可能涉及哪些非显而易见的步骤?
注意:对于那些不熟悉D的C代码处理方法的人,可以直接从D调用C代码.只需将头文件转换为D(这已经针对Win32头文件,但不是Winelib头文件)我不确定Winelib标题是否需要翻译或者Windows标题是否足够好.),用C编译器编译C代码,然后链接C对象文件.
我正在使用JavaScript客户端(在浏览器中运行)和Node.js服务器创建一个小应用程序,使用WebSocket进行通信.
我想在客户端和服务器之间共享代码.我刚刚开始使用Node.js,至少可以说,我对现代JavaScript的了解有点生疏.所以我仍然围绕CommonJS的require()函数.如果我使用'export'对象创建我的包,那么我无法看到如何在浏览器中使用相同的JavaScript文件.
我想创建一组在两端使用的方法和类,以便于编码和解码消息,以及其他镜像任务.但是,Node.js/CommonJS打包系统似乎阻止我创建可以在双方使用的JavaScript文件.
我也尝试使用JS.Class来获得更紧密的OO模型,但我放弃了,因为我无法弄清楚如何让提供的JavaScript文件与require()一起使用.这里有什么我想念的吗?
我是整个动作脚本/ Flash世界的新手......但是试着自学足以完成某些事情.
我确定答案很简单......但我有一个.as文件,其中包含以下代码:
package
{
import flash.external.ExternalInterface;
public class Sender
{
public function Sender()
{
ExternalInterface.call("func1()");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个fla使用以下代码(我没有碰过其他内容):
import Sender;
var mySender:Sender = new Sender();
Run Code Online (Sandbox Code Playgroud)
现在发布后,我对html文件进行了一些调整(包含在下面)....我的Javascript被调用(是的!).不幸的是,在解除警报后,它再次被召唤......再次.......再次.我不知道为什么(我已经确认我的flash电影没有设置为循环,但这就是我所拥有的).任何帮助将不胜感激!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>sender</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
html, body { height:100%; background-color: #ffffff;}
body { margin:0; padding:0; overflow:hidden; }
#flashContent { width:100%; height:100%; }
</style>
<script>
function func1()
{
alert('hello external stuff');
}
</script>
</head>
<body>
<div …Run Code Online (Sandbox Code Playgroud) 我正在使用Codeigniter 1.7.2和Phil Sturgeon的精彩Dwoo包装器,它允许我在Codeigniter中使用Dwoo模板库 - http://philsturgeon.co.uk/code/codeigniter-dwoo
关于在我的模板文件中包含其他视图模板文件,我有一个小问题.比方说,我有一个dashboard.php文件,我想要包含页眉和页脚,这样做的最佳方法是什么?
我通常会这样做:
<?php
$this->load->view('header');
?>
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但使用模板库的重点是将代码与我的html分开.我可以使用Dwoo的include功能吗?如果是,怎么做?
更新
自发布以来我已经解决了Dwoo的细节,您可以包含视图文件并使用模板继承之类的东西来完成与为变量分配视图相同的内容.除非你真的需要,否则我不建议使用后者.
如何在python中检查列表的第一个元素(下面)是否是一个数字(使用某种正则表达式):
temp = ['1', 'abc', 'XYZ', 'test', '1']
Run Code Online (Sandbox Code Playgroud)
非常感谢.