小编Mar*_*lke的帖子

Perl数组vs列表

我在Perl中有两个数据结构:

数组:

my @array2 = ( "1", "2", "3");

for $elem (@array2) {
    print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)

给我以下输出:

1
2
3
Run Code Online (Sandbox Code Playgroud)

还有一个清单:

my @array = [ "1", "2", "3"];                                            

for $elem (@array) {
    print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

ARRAY(0x9c90818)
Run Code Online (Sandbox Code Playgroud)

显然,我想在两种情况下迭代元素,但为什么第二种解决方案只给我这个数组的引用?

arrays perl perl-data-structures

41
推荐指数
4
解决办法
5万
查看次数

spray-json和list marshalling

我正在使用spray-json将自定义对象列表编组到JSON中.我有以下case类和它的JsonProtocol.

case class ElementResponse(name: String, symbol: String, code: String, pkwiu: String, remarks: String, priceNetto: BigDecimal, priceBrutto: BigDecimal, vat: Int, minInStock:Int,                        maxInStock: Int)

object JollyJsonProtocol extends DefaultJsonProtocol with SprayJsonSupport  {
 implicit val elementFormat = jsonFormat10(ElementResponse)
}
Run Code Online (Sandbox Code Playgroud)

当我试图像这样的路线投入时:

get {
      complete {
        List(new ElementResponse(...), new ElementResponse(...))
      }
    }
Run Code Online (Sandbox Code Playgroud)

我得到一个错误说:

 could not find implicit value for evidence parameter of type spray.httpx.marshalling.Marshaller[List[pl.ftang.scala.polka.rest.ElementResponse]]
Run Code Online (Sandbox Code Playgroud)

也许你知道这是什么问题?

我正在使用Scala 2.10.1喷雾1.1-M7和喷雾-json 1.2.5

scala scala-2.10 spray spray-json

10
推荐指数
2
解决办法
7368
查看次数

通用类型的Java枚举

我想为IBatis创建一个基于枚举的通用映射器.我正在使用以下代码执行此操作.这确实有编译时错误,我不知道如何修复.也许我的解决方案是完全错误的(请记住使用IBatis),在这种情况下请提出更好的建议.

任何帮助赞赏.

我想要实现的是将后续的映射器定义为:

public class XEnumTypeHandler extends CommonEnumTypeHandler<X> {
}
Run Code Online (Sandbox Code Playgroud)

目前的代码:

public class CommonEnumTypeHandler<T extends Enum> implements TypeHandlerCallback {

 public void setParameter(ParameterSetter ps, Object o) throws SQLException {
  if (o.getClass().isAssignableFrom(**T**)) { 
   ps.setString(((**T**) o).value().toUpperCase());
  } else
   throw new SQLException("Excpected ParameterType object than: " + o);
 }

 public Object getResult(ResultGetter rs) throws SQLException {
  Object o = valueOf(rs.getString());
  if (o == null)
   throw new SQLException("Unknown parameter type: " + rs.getString());
  return o;
 }

 public Object valueOf(String s) {
  for (T pt : …
Run Code Online (Sandbox Code Playgroud)

java generics enums

8
推荐指数
1
解决办法
2万
查看次数

使用VB或python编写OpenOffice Forms脚本

我正在尝试编写我的OpenOffice文档(在我的情况下是Writer)来编写一些简单的小部件.即我想将文本从小部件复制到小部件.为此我想获得一个组件,而不是从中获取文本.

我一直试图这样做:

document   = ThisComponent.CurrentController.Frame

oDocument      =  ThisComponent
oTextBoxFrom = document.getByName("Text Box 1")    # 1
oTextBoxFrom = oDocument.getByName("Text Box 1")   # 2
Run Code Online (Sandbox Code Playgroud)

版本#1和#2都不起作用.VB编译器吐出"文本框1"无法访问,但我的表单中有该组件.我的猜测是我试图从错误的地方获取这个组件,例如.不是它的框架.我只是无法弄清楚文件的结构是什么.

这似乎是一个非常简单的任务,但是我无法找到任何OpenOffice规范,因为从VB或python访问OO UNO对象.

python vbscript scripting openoffice-writer

6
推荐指数
1
解决办法
948
查看次数

django内联表单与自定义表单

嗨,我有一个领域模型,用于Django应用程序,我想在一个表单上呈现.我用自定义的ModelForms创建了我的应用程序(没有太多变化,一些字段被排除在外等).模型的依赖关系如下:

Complaint
   \
    .--- CarInfo
    .--- Customer
Run Code Online (Sandbox Code Playgroud)

我的视图功能如下所示:

def make(request):
  if request.method == 'POST':
    parameters = copy.copy(request.POST)
    complaint = Complaint()
    carInfo = CarInfo()
    customer = Customer()

    customer_form = CustomerForm(parameters, instance=customer)
    carInfo_form = CarInfoForm(parameters, instance=carInfo)
    parameters['complaint_date'] = get_current_date()
    parameters['customer'] = 1 # dummy value to allow validation success
    parameters['car_info'] = 1 # dummy value to allow validation success
    form = ComplaintForm(parameters, instance=complaint)
    if form.is_valid() and customer_form.is_valid() and carInfo_form.is_valid():
      carInfo_form.save()
      customer_form.save()
      parameters['customer'] = customer.id
      parameters['car_info'] = carInfo.id
      form = ComplaintForm(parameters, instance=complaint)
      form.save() …
Run Code Online (Sandbox Code Playgroud)

django django-forms

5
推荐指数
1
解决办法
7851
查看次数

H2数据库和函数在单独的模式中

我正在尝试创建一个测试数据库(使用H2数据库).我在生产中使用Oracle,在h2中使用oracle兼容模式似乎很好.

但是我在翻译oracle构造时遇到了问题:

create or replace PACKAGE permission_tools IS
    FUNCTION get_role_access_level(
          p_role_id IN NUMBER,
          p_permiss IN VARCHAR2)
    RETURN NUMBER;
END permission_tools;
Run Code Online (Sandbox Code Playgroud)

我打电话给:

select permission_tools.get_access_level(?, ?) from dual;
Run Code Online (Sandbox Code Playgroud)

进入H2当量.我一直在尝试这样的事情:

CREATE SCHEMA PERMISSION_TOOLS;

CREATE ALIAS PERMISSION_TOOLS.GET_ACCESS_LEVEL as $$
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
$$;
Run Code Online (Sandbox Code Playgroud)

但这给了我编译错误:

org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "

CREATE ALIAS PERMISSION_TOOLS.[*]GET_ACCESS_LEVEL AS   
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
   "; expected "FOR"; SQL statement:


CREATE ALIAS PERMISSION_TOOLS.GET_ACCESS_LEVEL as $$
String nextPrime(String value) {
    return new …
Run Code Online (Sandbox Code Playgroud)

java database testing h2

3
推荐指数
1
解决办法
4143
查看次数

Django模型表单和对象数据库id

我有一个复杂的django对象,它具有其他类类型的属性.这是这样的:

class Order:
   contractor - type Person
   some other fields....
Run Code Online (Sandbox Code Playgroud)

在我的表单中,我希望能够从下拉列表中选择现有的Person对象,或者添加一个带有表单的新对象.我已经设法创建表单和适当的工作流程,但问题是保存Order本身,我根本无法获取已保存的Person实例的id.我这样做:

def make_order(request):
  if request.method == 'POST':
    parameters = copy.copy(request.POST)
    contractor_form = ContractorForm(parameters)
    if contractor_form.is_valid():
      contractor_form.save()
      parameters['contractor'] = ???
    form = OrderForm(parameters)
    if form.is_valid():
      form.save() 
      return HttpResponseRedirect('/orders/')
  else:
    form = OrderForm()
    contractor_form = ContractorForm()

  return render_to_response('orders/make_order.html', {'order_form' : form, 'contractor_form' : contractor_form})
Run Code Online (Sandbox Code Playgroud)

因此,如果POST请求到达此方法,我首先检查ContractorForm是否已被填充 - 我假设如果表单有效,则表示要使用它.如果是,则保存,并希望将保存对象的数据库ID分配给适当的字段,以便OrderForm找到它.

我所有的表单都是ModelForms.

问题是:

  1. 有没有更好的方法来做到这一点?(从下拉菜单中选择或添加到位) - 更好或更多pythonic ;-)
  2. 使用ModelForms时如何获取保存的对象ID?

编辑

我的ContractorForm是:

class ContractorForm(ModelForm):
  class Meta:
    model = Contractor
Run Code Online (Sandbox Code Playgroud)

没有什么花哨.

django django-models django-forms

3
推荐指数
1
解决办法
7536
查看次数

调试django信号的问题

我在连接django中的信号时遇到问题.我一直在关注http://dmitko.ru/?p=546上提供的教程,并尝试扩展用户注册.

我已经正确设置了django-registration.它工作正常.出于调试目的,我将以下代码放入我的urls.py中:

from registration.signals import user_registered

def log_user_created(sender, user, request, ** kwargs):
  logger.debug("got USER_REGISTERED signal")

if settings.DEBUG:
  logger.debug("registering debug signal listeners")
  user_registered.connect(log_user_created)
else:
  logger.debug("debuging signals not enabled")    
Run Code Online (Sandbox Code Playgroud)

但是永远不会调用log_user_created函数.

我的问题是:如何调试我的应用程序以查看吞下user_registered信号的位置?

注意:我已经检查过我的django-registration版本是否正常工作.我已将我的版本改为上述博客示例应用程序中的版本.它没有改变观察到的行为.

django django-signals django-registration

3
推荐指数
1
解决办法
2928
查看次数

跟踪已经看到的物体

我正在尝试为我的应用程序实现一个拦截器,它能够跟踪它看到的对象.我需要能够分辨出我现在看到的对象是新的还是重用的.

假设我有这样一个界面:

public interface Interceptor {
    void process(Object o);
}
Run Code Online (Sandbox Code Playgroud)

我一直在考虑添加一个可以跟踪这些对象的Set.但是既然我不想因这种行为导致内存泄漏,或许我应该设计一些其他模式?最后,这些对象可能会在其他层中被破坏.

可能的解决方案:

  • 将对象的hashCode放入Set中
  • 使用WeakHashSet而不是HashSet

第一个选项似乎不是100%可靠,因为hashCode可能不是唯一的.至于第二个选项,我不确定这会阻止memleaks.

还有一点需要注意,我无法修改对象,我无法添加字段,方法.包装也不是一种选择.

有任何想法吗?

java object

2
推荐指数
1
解决办法
130
查看次数