如何在Scala中创建功能正常的可配置对象?我看过托尼莫里斯关于Reader
monad 的视频,我仍然无法连接点.
我有一个硬编码的Client
对象列表:
class Client(name : String, age : Int){ /* etc */}
object Client{
//Horrible!
val clients = List(Client("Bob", 20), Client("Cindy", 30))
}
Run Code Online (Sandbox Code Playgroud)
我希望Client.clients
在运行时确定,可以灵活地从属性文件或数据库中读取它.在Java世界中,我定义了一个接口,实现了两种类型的源,并使用DI来分配一个类变量:
trait ConfigSource {
def clients : List[Client]
}
object ConfigFileSource extends ConfigSource {
override def clients = buildClientsFromProperties(Properties("clients.properties"))
//...etc, read properties files
}
object DatabaseSource extends ConfigSource { /* etc */ }
object Client {
@Resource("configuration_source")
private var config : ConfigSource = _ //Inject it at runtime
val clients …
Run Code Online (Sandbox Code Playgroud) 在注释驱动的Spring MVC中,有没有办法生成URL模式,动词及其映射表?就像是:
/foo/{fooId} | GET | FooController.get() | jsp/foo/home.jsp |
/foo/{fooId}/bars/ | GET | FooController.getBars() | jsp/foo/bar/index.jsp |
Run Code Online (Sandbox Code Playgroud) 客户有一个简单的增加订单号(1,2,3 ......).他希望最终用户收到8位或9位数字(仅数字 - 无字符)"随机"数字.显然,这个"随机"数字实际上必须是唯一且可逆的(它实际上是对actualOrderNumber的加密).
我的第一个想法是只是洗牌一些.当我向客户展示一个样本序列时,他抱怨随后的obfuscOrderNumbers正在增加,直到它们达到"shuffle"点(低位比特发挥作用的点).他希望obfuscOrderNumbers尽可能随机看似.
我的下一个想法是确定性地播种线性同余伪随机数生成器,然后获取actualOrderNumber值.但在这种情况下,我需要担心碰撞 - 客户想要一种保证不会在至少10 ^ 7个周期内发生碰撞的算法.
我的第三个想法是"呃,只是对加密的东西进行加密",但如果我使用股票加密库,我必须对其进行后期处理才能获得8位或9位数的要求.
我的第四个想法是将actualOrderNumber的位解释为格雷编码的整数并返回.
我的第五个问题是:"我可能会过度思考这个问题.我敢打赌,StackOverflow上的某个人可以用几行代码完成这项工作."
我有一个Scala函数foo(bs : Stream[Bar]) : Bat
,我需要从Java代码调用.如何Stream[Bar]
在Java中创建"bs"Stream()并懒惰地生成其Bar对象?
在集成两个子系统时,我们被迫使用多个SessionFactory实例,这在与我们的Hibernate二级缓存(Terracotta EhCache)交互时会导致麻烦.特别:
for(CacheManager cm : CacheManager.ALL_CACHE_MANAGERS){
LOGGER.log(Level.DEBUG, "In cm " + cm.getName());
for(String cn : cm.getCacheNames()){
LOGGER.log(Level.DEBUG, "I have a cache called " + cn);
LOGGER.log(Level.DEBUG, "it's status is " + ms.getCache(cn).getStatus());
}
}
try{
myCollection.size();
}catch(IllegalStateException ise){
LOGGER.log(Level.FATAL, ise); //Triggered
}
Run Code Online (Sandbox Code Playgroud)
调试打印输出显示STATUS_ALIVE
缓存"Foo",但调用size()
抛出IllegalStateException
:
java.lang.IllegalStateException: The Foo Cache is not alive.
Run Code Online (Sandbox Code Playgroud)
目前,两个SessionFactories都配置为使用SingletonEhCacheRegionFactory
.如果我将SessionFactories切换为使用EhCacheRegionFactory
(非单例),缓存行为的后果是什么(特别是在Web App上下文中)?
说我有一个有两个列表的特征.有时候我对这个有兴趣,有时候会对此感兴趣.
trait ListHolder {
val listOne = List("foo", "bar")
val listTwo = List("bat", "baz")
}
Run Code Online (Sandbox Code Playgroud)
我有一系列函数调用,在其中我有我需要在列表之间选择的上下文,但在其底部我使用了特征.
在命令式范例中,我通过函数传递上下文:
class Imperative extends Object with ListHolder {
def activeList(choice : Int) : List[String] = {
choice match {
case 1 => listOne
case 2 => listTwo
}
}
}
def iTop(is : List[Imperative], choice : Int) = {
is.map{iMiddle(_, choice)}
}
def iMiddle(i : Imperative, choice : Int) = {
iBottom(i, choice)
}
def iBottom(i : Imperative, choice : Int) = {
i.activeList(choice) …
Run Code Online (Sandbox Code Playgroud) 给定一个中等复杂的XML结构(数十个元素,数百个属性),没有XSD,并且希望创建一个对象模型,那么避免编写样板from_xml()和to_xml()方法的优雅方法是什么?
例如,给定:
<Foo bar="1"><Bat baz="blah"/></Foo>
Run Code Online (Sandbox Code Playgroud)
我如何避免编写无穷无尽的序列:
class Foo
attr_reader :bar, :bat
def from_xml(el)
@bar = el.attributes['bar']
@bat = Bat.new()
@bat.from_xml(XPath.first(el, "./bat")
end
etc...
Run Code Online (Sandbox Code Playgroud)
我不介意明确地创建对象结构; 这是我确信可以通过一些更高级别的编程来处理的序列化......
我不是试图为每个类保存一行或两行(通过将from_xml行为移动到初始化器或类方法等).我正在寻找复制我心理过程的"元"解决方案:
"我知道每个元素都将成为一个类名.我知道每个XML属性都是一个字段名.我知道要分配的代码只是@#{attribute_name} = el.[#{attribute_name}然后递归到子元素.然后反转到to_xml."
我同意建议"构建器"类加上XmlSimple似乎是正确的路径.XML - >哈希 - >? - >对象模型(和利润!)
更新2008-09-18 AM:来自@ Roman,@ fatgeekuk和@ScottKoon的优秀建议似乎打破了问题.我下载了HPricot源码,看看它是如何解决问题的; 关键方法显然是instance_variable_set和class_eval.irb工作非常鼓舞人心,现在正朝着实施方向迈进......非常激动
什么时候,我从相机捕获图像然后它在ios7的控制台上给出错误.我首先尝试没有在代码中添加Thread.sleep(3000),但这也无法正常工作.
完成错误:快照未呈现的视图会导致空快照.确保在屏幕更新后快照或快照之前至少渲染了一次视图.
码:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Perform any additional setup after loading the view, typically from a nib.
PictureFromCameraButton.TouchUpInside += PictureFromCameraButton_Click;
}
private void PictureFromCameraButton_Click (object sender, EventArgs e)
{
try {
Thread.Sleep (4000);
ImagePickerController.SetSourceType(UIImagePickerControllerSourceType.Camera);
this.PresentViewController (ImagePickerController, true, null);
} catch (NotSupportedException exception) {
//Logging Exception in Flurry
FA.Flurry.LogError(exception.GetType().Name,exception.Message,
new NSError(NSError.CocoaErrorDomain,3584));
BeginInvokeOnMainThread (() => {
UIAlertView ErrorAlert = new UIAlertView ("Device unsupported", "Your device does not support this feature",
new UIAlertViewDelegate (), "OK");
ErrorAlert.Show …
Run Code Online (Sandbox Code Playgroud) 有没有办法在System.Linq.Xml.XDocument.Load(string uri)上设置超时?或者我应该使用实现C#通用超时中描述的技术?
给定一个HTML页面具有复杂的基于表格的布局和许多复制和浪费的标签,例如:
td align="left" class="tableformat" width="65%" style="border-bottom:1px solid #ff9600; border-right:1px solid #ff9600; background-color:#FDD69E" nowrap etc.
Run Code Online (Sandbox Code Playgroud)
是否有工具可以帮助将页面重构为更紧凑的形式?例如,一个自动生成CSS样式和选择器的工具?将表转换为div布局?
只是为了了解问题的顺序,我正在查看的页面是> 8000行HTML和JavaScript,500Kb 不计算图像!
更新:重新."放弃并从头开始"评论.在现实世界中,这意味着什么?打印页面,扫描它,在Dreamweaver中将其设置为背景图像,然后从那开始?真的吗?这真的比重构更有效吗?
更新:我不是在诋毁"从头开始追踪",也不是说暗示Dreamweaver无论如何都是我的选择工具.我很惊讶重构布局被认为是一个棘手的问题.
scala ×3
java ×2
.net ×1
c# ×1
css ×1
css-tables ×1
ehcache ×1
encoding ×1
encryption ×1
hibernate ×1
html ×1
idioms ×1
ios7 ×1
linq-to-xml ×1
monads ×1
numbers ×1
performance ×1
random ×1
reader-monad ×1
refactoring ×1
ruby ×1
spring-mvc ×1
timeout ×1
xamarin.ios ×1
xml ×1