如何使新闻提供"友好"的数据库设计,以便将所有项目(查询)放入新闻源中并不是非常昂贵?我能想到的唯一方法是将UNIONing几乎每个表(代表组,注释,朋友等)和获取日期等等,这似乎是为每个用户运行一个非常昂贵的查询,它如果每个人都与众不同,就很难缓存这样的东西.
我编写了一个LINQ to XML查询,它可以实现我想要的功能,但它看起来非常难看.我想知道,你们怎么会以一种看起来不那么花哨的方式格式化以下查询?
如果我的例子有点冗长,请道歉.
我查询的XML文档具有以下结构:
<?xml version="1.0" encoding="iso-8859-1"?>
<newsitem itemid="1" id="root" date="1996-08-20" xml:lang="en">
<title>A title</title>
<headline>A headline</headline>
<dateline>A dateline</dateline>
<text>
Some text
</text>
<metadata>
<codes class="">
<code code="">
<editdetail attribution=""/>
</code>
</codes>
<dc element="dc.date.created" value=""/>
<dc element="dc.publisher" value=""/>
<dc element="dc.date.published" value=""/>
<dc element="dc.source" value=""/>
<dc element="dc.creator.location" value=""/>
<dc element="dc.creator.location.country.name" value=""/>
<dc element="dc.source" value=""/>
</metadata>
</newsitem>
Run Code Online (Sandbox Code Playgroud)
和相应的LINQ查询:
XElement dummy = new XElement("dummy");
var query = from article in newsdoc.Elements("newsitem").DefaultIfEmpty(dummy)
select new
{
NewsItemID = (int)article.Attribute("itemid"),
Date = (DateTime)article.Attribute("date"),
Title = (string)article.Element("title"), …Run Code Online (Sandbox Code Playgroud) 我正在考虑使用typeid()但我不知道如何询问该类型是否是另一个类的子类(顺便说一下,它是抽象的)
如何在C#中列出压缩文件夹的内容?例如,如何知道压缩文件夹中包含多少项,以及它们的名称是什么?
这是一个非常基本的问题,但......
我有一些像这样的代码
var arr = Array('blah.jpg','ha.jpg');
for (var i=0; i<array.length; i++)
{
$('div#blah' + i).click(function() {
$('img').attr('src', arr[i]); });
}
Run Code Online (Sandbox Code Playgroud)
这应该绑定div id="blah0"以将所有图像更改为'blah.jpg'单击时.同样,单击div id ="blah1"应将所有图像更改为'ha.jpg'.
但是,匿名函数将无法工作,因为它将在执行时使用'i'的值,即2.这意味着单击div将尝试将所有图像设置为arr [2] - 不存在元素(有趣的是不会在我的机器上抛出JS错误,但这是另一个故事......).
如何在声明时使用'i'的值创建匿名函数?
作为一个更简单的例子:
for (var i=0; i<10; i++)
{
$('div#blah'+i).click(function() {
alert(i)); });
}
Run Code Online (Sandbox Code Playgroud)
当我点击'blah0'时,这应显示'0',当我点击'blah1'等时,应该显示'1'等.
但是,默认情况下,无论点击哪个'blah',它都会显示'10'.
希望是一个很好的简单的.
我有一个php3网站,我想在php 5.2上运行
首先,我只想将每个对当前"index.php3"_within_each_file_(递归)的引用更改为"index.php",然后继续担心全局等.
K.去!
:)
更新:非常感谢!我意识到我的问题错过了引用在网站的每个文件中的事实,我想在所有文件/文件夹中递归地执行.
我正在开发一个小型网络爬虫,它将在系统托盘中运行,并在一小时内每小时抓取一个网站.
让.NET每小时或某个其他时间间隔提升事件以执行某项任务的最佳方法是什么.例如,我想根据时间每20分钟运行一次事件.该活动将在以下时间举行:
00:20
00:40
01:00
01:20
01:40
Run Code Online (Sandbox Code Playgroud)
等等.我能想到的最好的方法是在线程上创建一个循环,不断检查时间是否可以被给定的时间间隔整除,并在达到时间时引发回调事件.我觉得必须有一个更好的方法.
我会使用a Timer但是我更喜欢遵循"时间表"的东西,这些时间表按小时或类似的方式运行.
如果没有在Windows任务调度程序中设置我的应用程序,这可能吗?
更新:
我正在添加我的算法来计算计时器的时间间隔.此方法采用" minute"参数,即计时器应触发刻度的时间.例如,如果" minute"参数为20,则计时器将按照上述时间表中的间隔进行勾选.
int CalculateTimerInterval(int minute)
{
if (minute <= 0)
minute = 60;
DateTime now = DateTime.Now;
DateTime future = now.AddMinutes((minute - (now.Minute % minute))).AddSeconds(now.Second * -1).AddMilliseconds(now.Millisecond * -1);
TimeSpan interval = future - now;
return (int)interval.TotalMilliseconds;
}
Run Code Online (Sandbox Code Playgroud)
此代码使用如下:
static System.Windows.Forms.Timer t;
const int CHECK_INTERVAL = 20;
static void Main()
{
t = new System.Windows.Forms.Timer();
t.Interval = CalculateTimerInterval(CHECK_INTERVAL);
t.Tick += new EventHandler(t_Tick);
t.Start();
} …Run Code Online (Sandbox Code Playgroud) 我正在使用自己的自定义身份验证与IIS,我希望每个页面上的服务器加载(无论什么类型的文件)首先检查应用程序变量,以查看用户是否经过身份验证并有权查看该站点.在global.asax中,这可能是:
void Application_Start(Object Sender, EventArgs e)
{
if(Application["username"] == null)
{
Response.redirect("login.aspx");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这个站点有多个子根.也就是说,http://example.com/site1 是一个与http://example.com/site2完全不同的网站.因此,我想说Application_Start函数在site1上工作但不影响site2.
如果global.asax可以在目录级别自定义,那么这不会是一个问题.但由于每个服务器只有一个global.asax,因此我无法实现此解决方案.
global.asax还有哪些替代方案?或者global.asax能以某种方式为每个目录不同吗?
我的休眠域模型中有循环引用导致 Betwixt 失败。我不想改变我的域模型。
如何更改 Betwixt 以忽略循环引用?
我意外地将一个不需要的文件(filename.orig在解析合并时)提交到我的存储库几个提交之前,直到现在我才注意到它.我想从存储库历史记录中完全删除该文件.
是否可以重写更改历史记录,以便filename.orig从未首先添加到存储库中?