我正在考虑如何使用Haskell的类型系统来强制执行程序中的模块化.举例来说,如果我有一个Web应用程序,我很好奇,如果有从纯代码分开CGI代码从文件系统代码的所有数据库代码的方式.
例如,我正在设想一个DB monad,所以我可以编写如下函数:
countOfUsers :: DB Int
countOfUsers = select "count(*) from users"
Run Code Online (Sandbox Code Playgroud)
我希望不可能使用DB monad支持的副作用.我描绘出了一个更高级别的单子,将被限制在直接URL处理器,将能够撰写的DB单子和IO单子电话.
这可能吗?这是明智的吗?
更新:我最终用Scala而不是Haskell实现了这个目标:http://moreindirection.blogspot.com/2011/08/implicit-environment-pattern.html
我们可以在Actionscript中使用已编译的Haxe swf的swc作为普通的库吗?我有一个从haxe代码编译的swf(我可以尝试将其编译成其他东西SWC for ex)我想在AS3中将它用作lib.
可能吗?
如果是的话怎么办?
我创建了一个应用程序,从Web服务获取一组地址,我想映射它们.我知道Apple在MapKit中留下了这个,包括只有一个反向Geocoder.我想知道解决这个问题的最佳方法是什么.网络服务?Google Maps API(API密钥如何工作?)?CloudMade?
您对哪种服务最快,最容易使用,哪种服务最便宜(希望免费)有什么看法?
这一定是一个愚蠢的问题,但我没有看到任何明显的参考.如何在Windows机箱启动时启动glassfish?
如何为此命令进行验证错误?
if blablablabla:
os.makedirs('C:\\test\\')
Run Code Online (Sandbox Code Playgroud)
如果文件夹已经存在,他会给我一个错误...我怎么能让它忽略这个错误?继续前进?
我有一个场景,我使用Dictionary来保存某个系统接受的事务类型列表.Dictionary中的键是一个枚举字段,值是一个int.
在系统的某个时刻,我们将要做这样的事情:
sqlCommand.Parameters.AddWithValue("@param", LookupDictionary[argument.enumField]);
Run Code Online (Sandbox Code Playgroud)
当我们在字典中查找字段时,我们将获得正确的整数值以提供给数据库.我已经考虑过为此实际使用enum int值,但这并不完全正确.我们正在与一个系统交互,我们需要提供一个神奇的数字来表示我们正在进行的更新.
上面的代码工作得很好.我有一个初始化方法,添加已知的类型:
LookupDictionary = new Dictionary<mynamespace.myproject.myclass.enumType, int>();
LookupDictionary.Add(enumType.entry1, 4);
LookupDictionary.Add(enumType.entry2, 5);
LookupDictionary.Add(enumType.entry3, 6);
Run Code Online (Sandbox Code Playgroud)
此代码也可以正常工作.
但是,在我真正开始使用LookupDictionary之前,我确认正在进行的请求实际上设置为我们支持的枚举值.这是LookupDictionary的主要原因,它包含有效的(有这种方法无法使用的有效枚举条目).
这是不起作用的代码:系统无法识别枚举匹配.在调试器中,我可以看到LookupDictionary中的条目列表确实显示它具有entry2的值 - 它只是像那样调用它,entry2.另一方面,传入的enumField具有完整的命名空间; mynamespace.myproject.myclass.enumType.entry2 - 我想这就是为什么它不会看到它们是相同的.
if (!LookupDictionary.ContainsKey(argument.enumField))
{
throw new InvalidOperationException("argument.enumField not valid in blahMethod.");
}
Run Code Online (Sandbox Code Playgroud)
我是否提到过这是通过WCF服务传递的?但我没有使用自动生成的代理......线路两端的两个项目共享类型作为项目引用,我在代码中构建了我的通道客户端.
有任何想法吗?我做错了吗?使用Enums作为键的字典不能很好地工作吗?这是WCF吗?
注意:感谢有关将枚举设置为包含magic int的建议.然而,我想在一个配置中设置它们,因为可能的是"魔术数字"4 5和6可能会改变.因此,如果我按照建议将它们编码到枚举中:
public enum MyEnum
{
MyValue1 = 4,
MyValue2 = 5,
MyValue3 = 6
}
Run Code Online (Sandbox Code Playgroud)
我失去了在运行时编写一个设置未来幻数的方法的能力; 相反,它需要更改代码.
我将git用于个人项目,并认为它很棒.它快速,灵活,功能强大,适用于远程开发.
但现在它的工作是强制性的,坦率地说,我们遇到了问题.
开箱即用,git似乎不适用于大型(20多个开发人员)组织的集中开发,开发人员具有不同的能力和git复杂程度 - 特别是与Perforce或Subversion等其他源控制系统相比,针对那种环境.(是的,我知道,Linus从未打算这样做.)
但是 - 出于政治原因 - 我们仍然坚持使用git,即使它很糟糕我们正试图用它做什么.
以下是我们看到的一些事情:
但是,我听说人们在大型开发组织中成功使用git.
如果您处于这种情况 - 或者如果您通常拥有工具,提示和技巧,以便在一个大型组织中使用git变得更容易和更有效率,而某些人不是命令行粉丝 - 我很想听听您有什么建议.
顺便说一句,我已经在LinkedIn上问了这个问题的一个版本,并没有得到真正的答案,但很多"天哪,我也很想知道这一点!"
更新:让我澄清一下......
在我工作的地方,除了git之外我们不能使用任何东西.这不是一个选择.我们坚持下去.我们不能使用mercurial,svn,bitkeeper,Visual Source Safe,ClearCase,PVCS,SCCS,RCS,bazaar,Darcs,monotone,Perforce,Fossil,AccuRev,CVS,甚至是我在1987年使用的Apple的好投影仪.因此,虽然欢迎您讨论其他选项,但如果您不讨论git,您将无法获得赏金.
另外,我正在寻找有关如何在企业中使用git的实用技巧.我在这个问题的顶部列出了我们所遇到的问题清单.同样,欢迎人们讨论理论,但如果你想获得赏金,请给我解决方案.
请考虑以下陈述:
int *pFarr, *pVarr;
int farr[3] = {11,22,33};
int varr[3] = {7,8,9};
pFarr = &(farr[0]);
pVarr = varr;
Run Code Online (Sandbox Code Playgroud)
在这个阶段,两个指针都指向每个相应阵列地址的开头.对于*pFarr,我们目前正在考虑11和*pVarr,7.
同样,如果我通过*farr和*varr请求每个数组的内容,我也得到11和7.
到现在为止还挺好.
现在,让我们尝试pFarr++
和pVarr++
.大.正如预期的那样,我们现在看22和8.
但现在...
试图拉升farr++
和varr++
...我们得到"错误类型的参数来增加".
现在,我认识到数组指针和常规指针之间的区别,但由于它们的行为相似,为什么会出现这种限制呢?
当我还考虑在同一个程序中我可以用表面上正确的方式和另一种不正确的方式调用以下函数时,这让我更加困惑,我得到了相同的行为,尽管与上面发布的代码中发生的情况形成对比!?
working_on_pointers ( pFarr, farr ); // calling with expected parameters
working_on_pointers ( farr, pFarr ); // calling with inverted parameters
Run Code Online (Sandbox Code Playgroud)
.
void working_on_pointers ( int *pExpect, int aExpect[] ) {
printf("%i", *pExpect); // displays the contents of pExpect ok
printf("%i", *aExpect); // displays the contents of …
Run Code Online (Sandbox Code Playgroud) $('#post_form').submit(function() {
$("#ajax_bar_loader").show();
$.ajax({
url: 'add.html',
data: $('#post_form').serialize(),
dataType: 'json',
type: 'post',
success: function( result ) {
retVal = formCheck( result );
}
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
这就是我的代码看起来像而不是"返回false",如果"result"中包含的数据说明,我想允许它.我怎么能做到这一点?
好吧,这个特定的布局让我烦恼.并且似乎无法找到一种方法来使用listView,底部有一排按钮,因此listview不会延伸到按钮顶部,因此按钮始终会捕捉到屏幕底部.这就是我想要的:
删除了死的ImageShack链接
看起来它应该很容易,但我尝试过的一切都失败了.有帮助吗?
这是我目前的代码:
RelativeLayout container = new RelativeLayout(this);
container.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
//** Add LinearLayout with button(s)
LinearLayout buttons = new LinearLayout(this);
RelativeLayout.LayoutParams bottomNavParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
bottomNavParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bottomNavParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
buttons.setLayoutParams(bottomNavParams);
ImageButton newLayer = new ImageButton(this);
newLayer.setImageResource(R.drawable.newlayer);
newLayer.setLayoutParams(new LinearLayout.LayoutParams(45, LayoutParams.FILL_PARENT));
buttons.addView(newLayer);
container.addView(buttons);
//** Add ListView
layerview = new ListView(this);
RelativeLayout.LayoutParams listParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
listParams.addRule(RelativeLayout.ABOVE, buttons.getId());
layerview.setLayoutParams(listParams);
container.addView(layerview);
Run Code Online (Sandbox Code Playgroud) ajax ×1
android ×1
arrays ×1
c ×1
c# ×1
cocoa-touch ×1
dictionary ×1
enterprise ×1
enums ×1
flash ×1
geocoding ×1
git ×1
glassfish ×1
haskell ×1
haxe ×1
iphone ×1
java ×1
jquery ×1
layout ×1
listview ×1
mkmapview ×1
pointers ×1
python ×1
startup ×1
swc ×1
type-systems ×1
types ×1
wcf ×1
windows ×1