我已经查看了SO上的所有其他(优秀)答案(尤其是:JavaScript关闭如何工作?)但我想要您对我对该概念的理解的反馈.
据我所知,一个用例是隐藏私有方法的实现,不受公共访问.
我想到的另一个是它作为工厂发电机:
<script>
function carFactory( make ) {
    var m = make;
    return { manufacture: function ( model ) 
        {console.log("A " + m + " " + model + " has been created");}
    }
}
toyotaFactory = carFactory("toyota");
hondaFactory = carFactory("honda");
toyotaFactory.manufacture("corolla");
toyotaFactory.manufacture("corolla");
hondaFactory.manufacture("civic");
</script>
这输出:
A toyota corolla has been create
A toyota corolla has been created
A honda civic has been created 
那么你认为它是闭包的有效用例(即使用相同的代码库创建多个工厂)吗?或者我可以使用更好的东西来实现同样的目标吗?
请注意,问题不在于闭包的技术实现,而在于应用程序设计/开发中的有效用例.
谢谢.
我想用MVVM模式构建一个简单的应用程序.
该应用程序将包含两个主要部分:
导航很简单:
我之前使用的代码已经完成了这一点,其中菜单项的代码隐藏事件处理程序已加载所有页面,应该显示的那个作为StackPanel的子项加载.但是,这在MVVM中不起作用,因为您不希望手动填充StackPanel,而是显示例如带有DataTemplate的"PageItem"对象等.
那些用MVVM制作了这样一个简单的点击菜单应用程序的人,你的基本应用程序结构是什么? 我正在考虑以下几点:
MainView.xaml:
<DockPanel LastChildFill="False">
    <Menu 
        ItemsSource="{Binding PageItemsMainMenu}" 
        ItemTemplate="{StaticResource MainMenuStyle}"/>
    <ContentControl 
        Content="{Binding SelectedPageItem}"/>        
</DockPanel>
其中菜单填充了"PageItems"集合,DataTemplate将每个"PageItem对象"的标题显示为每个MenuItem的标题.
ContentControl将填充一个具有完整功能的View/ViewModel对,但我不确定.
昨晚我转储Windows 7并将我的硬盘驱动器格式化为基于Linux的操作系统,纯粹是因为我想开始使用Node.JS
所以我已经安装了Node.JS并做了一些测试工作,http服务器和套接字等.
我想要做的是构建一个与MVC框架紧密集成的HTTP服务器,但在开始之前我需要学习如何在Node中高效构建.
例如在PHP中作为我的框架,我将创建一个引导加载系统来加载所有基类等,然后我会激活我的事件系统准备开始附加回调.
我将继续处理请求等,直到生成输出,然后将其发送到将处理标头等的输出处理程序
但Node是一个全新的环境,我想知道在Node中构建系统的最佳实践.
我正在寻找的信息更多的是与设计结构有关,而不是应用程序的实际编码,如何加载lib加载库的位置等等
任何帮助表示赞赏.
到目前为止,我的WebApplication很顺利,我已经构建了我的应用程序非常传统和一点程序.
我开始的是创建一个像这样的目录结构:
<root>
    startup.js
    /public/
        favicon.ico
        /images/
        /stylesheets/
        /javascripts/
    /system/
        init.js
        config.js
        /libs/
            /exceptions/
                http.js
                server.js
    /application/
        /views/
            /_override/
                /errors/
                    generic.view
            /partials/
                sidebar.voew
            index.view
        /controllers/
             index.js
        /models/
            users.js
这个目录结构就像大多数基于MVC的Web应用程序一样,所以使用这种方法我觉得很舒服.
启动文件是由节点作为入口点执行的,node startup &看起来像这样:
/*
    * Header of t he file, Copyright etc
*/
var _Intitialize = require("./system/init.js");
//Displays the command line header, title, copyright etc
_Intitialize.DisplayCommandLineHeader();
//Check the enviroment, Permissions, Ports etc
_Intitialize.CheckEnviroment();
//Start the server and …我已经阅读了很多关于MVC的出版物,但我仍然无法清楚地理解为什么我们需要"控制器".
我经常在客户端 - 服务器模型中编写应用程序
服务器包含所有的业务逻辑,它对gui一无所知.它完成了主要工作,并且尽可能便携.
client是一个GUI,它绑定到服务器,与用户交互,从用户向服务器发送命令.
我喜欢这种架构,我无法弄清楚为什么人们真的需要在客户端和服务器之间再添一个媒体,这似乎是控制器?
UPD:简单示例:假设我们需要编写一些数据记录器.数据来自COM端口,它由某些协议编码.需要在简单的日志窗口中显示收到的消息.
我该怎么做:
服务器包含以下项目:
Data_receiver:其实从COM端口接收到的原始数据,但它的接口,所以我们能够做出一些从其他来源接收数据,另一个类;Data_decoder:获取原始数据并返回生成的解码消息,它也是接口,因此我们可以轻松地更改编码协议;Data_core:在使用的情况下Data_receiver和Data_decoder,发射信号到客户端.客户端包含以下项目:
Data_receiver(连接到COM端口的那个)Data_decoder和Data_core(它接受引用Data_receiver和Data_decoder实例)的实例,还创建GUI简单的日志窗口(参考Data_core);Data_core,即侦听由其发出的信号,并显示接收的数据.当我理解我所读到的关于MVC的内容时,GUI实际上不应该从中接收消息Data_core,因为控制器应该这样做,然后将数据传递给GUI.但是如果GUI直接从模型中获取这些数据会发生什么不好的事情?
关于构建Web应用程序的页面:
最近,我发现自己创建的网页比以前更简单.之前,我会尝试将尽可能多的功能集中到一个页面中,以防止有大量页面.
我开始意识到这只会使事情变得更加复杂,复杂和令人困惑.为什么没有更多页面?我认为我这样做的原因是因为我不希望用户必须浏览其他页面; 只是为了在一个页面上拥有所需的所有功能.
好吧,这些良好的意图变成了一个过于混乱的用户界面和非常难以管理的源代码.我是一名新开发人员,我正在努力反思我正在做的事情,以便我能够改进.如果它有所作为,我正在开发ASP.net(尽管这些可能是任何平台的考虑因素).
我的问题是:
我需要一个我的DTO类的基类,它将用于我的通用接口.
但DTO课程没有任何共同之处.它们只是包含一些属性的哑类.
public void GetGridData()
{
   IDataForGrid<DTOBase> aa;
   if(request == 1) aa = new CustomerGridData;
   if(request == 2) aa = new OrderGridData;
   var coll = aa.GetList();
}
public class CustomerGridData : IDataForGrid<CustomerDTO>
{
  ...
}
我们正在为汽车司机开发iPhone GPS应用程序.
您可能知道,iOS4引入了多任务处理,因此我们的应用程序可以在后台运行 - 事实就是如此.这是其功能的一部分.
问题在于在iOS4上关闭应用程序的标准方法.以下是两种情况:
1)用户想要将应用程序放到后台:
通常,在iPhone iOS4上,它就像按"主页"按钮一样简单.
2)用户想关闭应用程序(即到达目的地点后):
标准iPhone iOS4程序如下:
用户每次到达某处(例如,每天两次)都必须终止我们的申请,以节省他的电池.如果他不这样做 - GPS会很快耗尽所有电池电量.此外,我们无法在后台运行时禁用GPS,因为我们需要主要应用程序功能的精确位置信息.
当然,您无法更改应用程序中"主页"按钮的行为(即可接受AppStore).此外,我认为将预期行为改为与iPhone平台上的其他应用程序完全不同的东西并不是一个好的解决方案.
你觉得怎么样?你知道任何好的解决方案吗?我们有一个想法,但我不想向你提出任何建议.
我们的解决方案非常简单:只需在屏幕右上方显示小的"x"按钮即可.点击它会终止应用程序(可能在一些确认问题之后).
这个解决方案有一个很大的优势:它不会改变默认的系统行为 - 用户意识到iOS4多任务使用仍然可以按下"主页"按钮在后台运行应用程序并以iPhone方式关闭它.
你怎么看?
我目前正在寻找解决问题,因为无法在Finder中快速创建新文件.我将开源我写的东西因为我认为Mac社区需要解决这个问题.
在Windows上,您可以右键单击,创建新的文本文件.OS X,您应该可以使用这样的服务来执行此操作:
在Snow Leopard中编写Finder 服务理论上是实现这一目标的方法,尽管我还没有找到任何示例代码.(我承认我只是简单地查看了文档).
我不确定如何开始,Apple是否在Xcode中提供服务模板.基本上我正在寻找帮助以使运行的工作服务项目.那么实现代码对于我在Obj-C中编写应该是相当微不足道的.那么我该怎么做才能创建一个新的工作服务项目呢?如果我对此有误,请告诉我正确的方法,请提供示例代码或一些步骤让我开始.
编辑:相信我们,我不是OS X菜鸟.尝试了很多应用程序来实现解决方案:PathFinder,Automator,终端等,我对它们都不满意.
我想创建一个可右键单击的菜单项来创建新文件,就像Windows一样.如果此API不允许我这样做,那么我将在必要时修改系统文件.但我宁愿这样做也不需要我攻击OS X.
可悲的事实是,当Snow Leopard发布并且开发者不满意时,Apple禁用了第三方上下文菜单项.您可以使用Automator在上下文菜单下创建服务,但它非常有限.
是的,Quicksilver是我此刻创建文件的方式,除非我在我touch ~/Desktop/file.txt或任何地方都在终端.
如果您无法通过提供Xcode项目的源代码来编写服务来回答我的问题,请保留您对我应该如何使用计算机的意见.无论如何,我想在我自己实施之后,我可能会回答我自己的问题.
我的应用程序将大量数据从数据库加载到复杂的数据结构中.内存数据结构重新组合数据库的结构,这意味着如果数据库包含以下表:
然后我有A,B和C类,以及:
这意味着如果我加载数据库,我必须以正确的顺序加载它.如果我首先加载C,那么它会抱怨它不能设置值C :: m_b,因为它应指向的实例未加载.
问题是当A中的列也是其他表之一的外键时,让我们说C.
我可以通过将所有外键加载为字符串来解决问题,然后在加载所有数据后执行查找,但由于我有时需要加载数百万条记录,因此我无法在这些上花费内存(尽管是临时的) )字符串.
阅读好的设计(例如"大规模C++软件设计"一书),在我看来,根本没有循环引用是一个坏主意.例如,如果文件XH包含YH,但是YH也包括XH,那么您可能设计不好; 如果X类依赖于Y类,反之亦然,那么你可能有一个糟糕的设计,应该通过提取这个依赖并引入第三个Z来解决,它取决于X和Y(X和Y将不再依赖于彼此) .
将此设计规则扩展到数据库设计是一个好主意吗?换句话说:防止外键中的循环引用.
database-design foreign-keys application-design application-dependency
我们是服务提供商。假设在我们的应用程序中,我们最初拥有自己的用户/角色管理。允许具有不同角色的不同用户使用不同的功能。因此,当用户登录时,我们需要知道该用户具有哪些角色,并准备适当的UI。我们具有管理员角色,具有此角色的用户可以将角色分配给其他用户。
我们正在考虑为我们的应用程序启用SAML SSO,现在的问题是我们如何为每个用户设置角色。
解决方案1,我们依靠IdP为每个登录用户提供角色信息,该角色信息可能会随Assertion一起提供,但这可能不适用于所有IdP。
解决方案2,我们仅从IdP检索用户,并在我们自己的应用程序中管理角色。例如,当我们获得一个断言时,我们检索用户名(或电子邮件地址),并与数据库中的一条记录匹配,如果该记录不存在,我们会自动为此新用户创建一个。然后,我们依靠具有管理员角色的用户为该新用户分配正确的角色。
现在的问题是,第一个管理员来自哪里?我们的客户获取了我们的应用程序,并打开了SAML SSO,现在数据库中还没有用户,那么如何解决此类引导问题?有什么标准的方法吗?我们提出了不同的选择,但不确定哪个更好,每个选择的关注点是什么。
选项1,具有默认的内置管理员用户。内置用户有一个常规的本机登录页面,而无需通过IdP即可登录(如果启用了SAML SSO,则可以打开/关闭该选项)
选项2,在SAML SSO设置过程中,要求提供管理员用户名,以便我们在具有管理员角色的数据库中自动创建此用户。然后,当该用户通过IdP登录时,我们可以在数据库中匹配他。
还有哪些其他选择?
user-management saml application-design user-roles single-sign-on
.net ×1
asp.net ×1
c# ×1
closures ×1
cocoa ×1
foreign-keys ×1
interface ×1
ios4 ×1
iphone ×1
javascript ×1
multitasking ×1
mvvm ×1
node.js ×1
objective-c ×1
saml ×1
structure ×1
user-roles ×1
wpf ×1