我有一个应用程序,允许用户创建不同的表单(调查),然后填写它们.(所以它可以替代纸张).
这是我在应用程序中使用的当前模型:
Table 1)
+-------------------------+
| SURVEYS TABLE |
+----+------+-------------+
| ID | name | description |
+----+------+-------------+
Table 2)
+-----------------------------------+
| $[name_of_the_survey] |
+----+-------+------+-------+-------+
| ID | field | type | value | items |
+----+-------+------+-------+-------+
Table 3)
+--------------------------------------+
| $[name_of_the_survey] _records |
+----+---------------------------------+
| ID | columns specific to each survey |
+----+---------------------------------+
Run Code Online (Sandbox Code Playgroud)
所以基本上当用户创建调查时,程序会在Surveys Table中插入一条记录,然后创建2个表:
表(2)用于表格(3)的字段,用于将要存储的记录,其中列对应于表(2)行.
它有效,但有一些局限性.例如,当您向表(2)添加字段时,它必须读取表(3)内容,将其保存到虚拟表,删除上一个表(3)并创建一个新表.当表(3)具有大量记录时,这可能是性能问题.
所以我的问题是......有更好的数据库设计吗?
我的Oracle表有一个tmstp
包含TIMESTAMP(3) WITH TIME ZONE
数据类型的列.
当我运行以下查询时
SELECT COUNT(column1)
FROM table1
WHERE tmstp BETWEEN to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR')
AND to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');
Run Code Online (Sandbox Code Playgroud)
它提供的计数大约是以下查询的两倍:
SELECT COUNT(column1)
FROM table1
WHERE tmstp >= to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR')
AND tmstp <= to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');
Run Code Online (Sandbox Code Playgroud)
我认为他们应该给出相同的结果.关于可能发生什么的任何意见?我该怎么调试呢?
当我运行此代码时:
$_='xaxbxc';
if(/(x(?<foo>.))+/) {
say "&: ", $&;
say "0: ", $-{foo}[0];
say "1: ", $-{foo}[1];
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
&: xaxbxc
0: c
1:
Run Code Online (Sandbox Code Playgroud)
我知道这是它应该如何工作,但我希望能够以某种方式得到所有匹配的列表('a', 'b', 'c')
而不是最后一个匹配(c
).我怎样才能做到这一点?
我有一个本地xml文件,我知道它包含UTF-8格式良好的xml.但是NSXMLParser不会解析correclty.
档案路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"example.xml"];
Run Code Online (Sandbox Code Playgroud)
从Web保存xml:
NSURL *xml = [NSURL URLWithString:@"http://www.example.com/example.xml"];
NSString *data = [[NSString alloc] initWithContentsOfURL:xml encoding:NSUTF8StringEncoding error:nil];
[data writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)
解析xml:
NSURL *xmlFile = [NSURL URLWithString:appFile];
NSXMLParser *addressParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlFile];
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接解析NSURL"xml"它可以工作,但上面的代码将返回NULL并且没有错误.我在论坛上发现了另一篇文章,描述了完全相同的内容,但我再也找不到了,帖子没有答案.
希望有人可以帮忙!基本上只需要将web xml存储到文件中,然后将其提供给NSXMLParser.
我有文件存储在php变量$ text中.此文本可以是100或1000或10000个单词.正如目前实现的那样,我的页面基于文本扩展,但如果文本太长,页面看起来很难看.
我想获取文本的长度并将字符数限制为500,如果文本超出此限制,我想提供一个链接,说"阅读更多".如果单击"阅读更多"链接,它将显示包含$ text中所有文本的弹出窗口.
当您通常想要在Android中添加AppWidget时,有一个列表,您需要选择一个小部件并将其绑定到主屏幕.
我正在尝试构建一个app,它有自己的appWidgetHost和我为它构建的特定App Widgets.
我有两个问题:
简单来说; 我的AppWidgets有我的应用程序,我希望完全控制将appWidget绑定到appWidgetHost等.
3人在Google论坛中提出了类似的问题:
我发现可能的唯一答案是链接号2.Paraneet(其中一个回复者)说你可以在/ system/app下安装应用程序而不是/ data/app,因为有些安全问题.但我不确定它是否是一种可靠的生产解决方案,我想更多地了解这样做的优点和缺点.
谢谢,Shai.
我的团队正在与使用Solr作为搜索索引的第三方CMS合作.我注意到,似乎作者使用Solr作为各种类型的数据库,因为返回的每个文档都包含两个字段:
所以基本上它运行对Solr的搜索,下载对象的XML表示,然后从XML实例化对象,而不是使用id在数据库中查找它.
我的直觉告诉我这是一个不好的做法.Solr是一个搜索索引,而不是一个数据库......所以对我来说更有意义的是对Solr执行复杂的搜索,获取文档ID,然后将相应的行拉出数据库.
当前的实现是否完美无缺,或者是否有数据支持这种重构成熟的想法?
编辑:当我说"XML表示"时 - 我的意思是一个存储字段,其中包含所有对象属性的XML字符串,而不是多个存储字段.
这是在杀我!
我正在使用django-filebrowser,我想创建一个图库应用程序,利用它的上传功能来管理图像.
我有一个Gallery模型,允许用户在服务器上选择或创建目录,并将文件上传到该文件夹以显示在库中.我想自动搜索用户已将图像上传到的目录,然后选择该目录,然后自动为该文件夹中的每个图像创建图像实例.
class Gallery(model.Models):
gallerydirectory = FileBrowserField(...)
title = ...
description ...
class Image(model.Models):
image_field = models.ImageField()
Run Code Online (Sandbox Code Playgroud)
问题是FileBrowser表示图像与Django不同,但我想使用DJango ImageFields,因为我可以在模板端使用其他应用程序(sorl缩略图).
我有文件所需的所有数据,即文件名,路径等,我只是无法让Django创建一个ImageField的实例,而无需再次实际上传图像.我只是想填充它.
我在这里看到另一个提示如下的线程:
for image in filebrowser_image_objects_list:
f = File(open('path-to-file-on-server','r'))
i = Image()
i.image_field('filename.png',f.read())
Run Code Online (Sandbox Code Playgroud)
但这给了我一个:
SuspiciousOperation error
Attempted access to '/filename.png' denied
Run Code Online (Sandbox Code Playgroud)
这表明路径没有被正确读取.我打印了文件对象的属性,它正在打开正确的图像,它只是没有被传递到ImageField
帮助将非常感谢!
UPDATE
我已经放弃了尝试这项工作,因为它太乱了.我上面遇到的问题是我将ImageField的upload_field设置为'/'并且它没有被注意到意味着该文件被写入'/something.png'.
我已对其进行了修改,以便Image现在也使用FileBrowserField而不是ImageField.
jQuery的mouseout()和mouseleave()有什么区别?
我正在显示一个带有edittext视图的对话框.但是,仅当用户按下编辑视图内部时,才会打开软键盘.所以我尝试使用以下代码调用InputMethodManager.
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
Run Code Online (Sandbox Code Playgroud)
dialogField是输入字段.但是,我到底应该这样做呢?我在对话框的onStart()方法中尝试了它,但没有任何反应.我之前也尝试过请求对话框的焦点,但这没有任何改变.
我也试过这段代码
dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
public void onFocusChange (View v, boolean hasFocus)
{
if (hasFocus)
{
Main.log("here");
dialogInput.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
/*
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(dialogField,0);
*/
}
}
});
Run Code Online (Sandbox Code Playgroud)
在两个版本中.但是没有软键盘会出现.Main.log只是一个日志,它向我显示该函数实际被调用.是的,它被称为.
在对话框打开之前,我可以使用SHOW_FORCED标志获取键盘.但是在退出时它不会关闭.而且我只能在显示对话框之前这样做.在任何回调中它也不起作用.