所以我是节点的新手,并试图学习如何使用express它.但是,我想弄清楚的问题是为什么我/public文件夹中的文件似乎不是作为静态内容提供的.
这是我的代码:
var http = require('http');
var port = process.env.port || 1337;
var express = require('express');
var handlebars = require('express3-handlebars');
var path = require('path');
var application = express();
application.use(express.static(path.join(__dirname, 'public')));
application.engine('handlebars', handlebars({ defaultLayout: 'main' }));
application.get('/', function(req, res){
res.render('index.handlebars', { someProp: 3 });
});
application.listen(port);
Run Code Online (Sandbox Code Playgroud)
我的目录结构:
/
- server.js (the above referenced file)
/ Views
- index.handlebars
/ Layouts
- main.handlebars
/ public
- ServeMe.txt
Run Code Online (Sandbox Code Playgroud)
我的理解是,application.use(express.static(path.join(__dirname, 'public')));应该将服务器配置为响应具有该资源的公共文件夹下的任何请求(如果找到).我究竟做错了什么?有趣的是,将把手配置为视图引擎比让公共文件夹工作= D更容易
编辑:我试图请求的完整网址:
http://localhost:1337/public/serveme.txt
我已经尝试了区分大小写(这应该是一个非问题),而且也没有用.
所以,这个有趣的问题一直困扰着我过去几个小时.Visual Studio 2010 Ultimate不再附加调试器并让我调试我的代码.
如果我使用内置的开发服务器,那么一切正常.如果我切换到使用本地IIS Web服务器(http:// localhost /),那么所有它都附加到w3wp.exe,但没有加载任何DLL或PDB.我可以转到Debug> Windows> Modules,在这个窗口中没有任何内容.相反,使用内置开发服务器时,"模块"窗口会显示所有DLL,并显示已加载我的DLL的符号.有些东西显然不对劲.VS装置完全是骨头.
在IIS中,我的网站配置了ASP.NET 2.0(因为从下拉列表中选择不存在3.5),以及在"主目录"选项卡上选中的读取/日志访问/索引此资源选项.
我的一些失败的想法:
1)如果我附加到显示网站的iexplore.exe实例上的进程,它会加载Internet Explorer的DLL,但不是我的.
2)我多次重启计算机
3)我已经调用了devenv.exe/resetuserdata
4)我已经确认每个项目确实设置为调试而不是释放.
5)删除所有\ bin内容并重建解决方案.
6)删除整个解决方案并从源代码管理中删除.
有人能告诉我这件事有什么问题吗?我将会因为头痛而产生一种动脉瘤.
所以,我在一个文件夹中有一组目录00-99.每个目录都有100个子目录,00-99.每个子目录都有数千个图像.
我正在尝试做的基本上是在计算平均文件大小时得到进度报告,但我无法让它工作.这是我当前的查询:
get-childitem <MyPath> -recurse -filter *.jpeg | Where-Object { Write-Progress "Examining File $($_.Fullname)" true } | measure-object -Property length -Average
Run Code Online (Sandbox Code Playgroud)
这显示了一个在每个文件被处理时更新的栏,但最后我没有回到平均文件大小数据.显然,我做错了,因为我试图破解Where-Object打印进度声明可能是一个坏主意(tm).
由于存在数百万个图像,因此该查询显然需要非常长的时间才能工作.如果我理解正确的话,get-childitem几乎是查询时间的一部分.什么指针得到我想要的?AKA,我的结果理想情况是:
Starting...
Examining File: \00\00\Sample.jpeg
Examining File: \00\00\Sample2.jpeg
Examining File: \00\00\Sample3.jpeg
Examining File: \00\00\Sample4.jpeg
...
Examining File: \99\99\Sample9999.jpg
Average File Size: 12345678.244567
Run Code Online (Sandbox Code Playgroud)
编辑:我可以做简单的选项:
get-childitem <MyPath> -recurse -filter *.jpeg | measure-object -Property length -Average
Run Code Online (Sandbox Code Playgroud)
然后离开我的工作站一天半或者其他东西,但这似乎有点低效= /
所以,这个问题刚刚被问到:
我的示例代码:
public static void Main(string[] args)
{
foreach (var item in Numbers().Take(10))
Console.WriteLine(item);
Console.ReadKey();
}
public static IEnumerable<int> Numbers()
{
int x = 0;
while (true)
yield return x++;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么这是懒惰的评估?我在Reflector中查找了这段代码,我比开始时更困惑.
反射器输出:
public static IEnumerable<int> Numbers()
{
return new <Numbers>d__0(-2);
}
Run Code Online (Sandbox Code Playgroud)
对于numbers方法,看起来为该表达式生成了一个新类型:
[DebuggerHidden]
public <Numbers>d__0(int <>1__state)
{
this.<>1__state = <>1__state;
this.<>l__initialThreadId = Thread.CurrentThread.ManagedThreadId;
}
Run Code Online (Sandbox Code Playgroud)
这对我来说毫无意义.我会认为这是一个无限循环,直到我把这些代码放在一起并自己执行.
编辑:所以我现在明白了.取()可以告诉大家,枚举了"结束"在foreach,当它真的没有,但不应号()被调用,在它的全部链接着在起飞前() ?Take结果是实际被枚举的内容,对吗?但是,如果没有对Numbers进行全面评估,那么如何执行?
EDIT2:这只是'yield'关键字强制执行的特定编译器技巧吗?
所以,这似乎是一个边缘情况,但我只是想知道这是否可能.我所拥有的是静态集和延迟集的组合IEnumerable- 例如:
public IEnumerable<T> MakeMyQuery<T>()
{
// returns a List<T>
var someStaticData = LoadMyStaticDataFromDatabase();
// Returns IEnumerable<T>, but from another resource
var deferredQuery = CreateADeferredQueryUsingYieldReturn();
return someStaticData.Concat(deferredQuery);
}
Run Code Online (Sandbox Code Playgroud)
所以这里发生的是当我调用.Take(someNumber)我的枚举时,它会在尝试评估延迟组件之前首先从我的静态数据返回元素 - 实际上,我已经"隐藏"了一些可能耗时的生成任务后面的任务,如果我从来不需要获取这些元素,因为LINQ的延迟特性,它们实际上永远不会被评估.
但是,我不认为可以缓存此查询以供以后使用(我不相信Iterator的状态将保留在缓存中,对吧?)或者是否有一种简单的方法可以在不将结果枚举到保存?
理想情况下,我的流程是这样的:
public List<T> SomeMethod<T>(int numberOfGuys)
{
IEnumerable<T> query = null;
if(// Is in Cache)
query = Cache["MyQuery"];
else
{
query = MakeMyQuery();
Cache["MyQuery"] = query;
}
return query.Take(numberOfGuys).ToList();
}
Run Code Online (Sandbox Code Playgroud)
所以我可以反复使用相同的查询来请求数据,但可能永远不必重新查询数据库.有没有办法做到这一点?
假设我有一个ASCX用户控件,需要访问当前用户的全名.ASPX页面顶部包含此行
<%@ Register src="top.ascx" tagprefix="custom" tagname="top" %>
Run Code Online (Sandbox Code Playgroud)
而这一行在体内:
<custom:top runat="server" />
Run Code Online (Sandbox Code Playgroud)
ASPX文件知道当前用户的用户ID,并可以确定他的全名.那么如何使用ASPX文件运行的代码将其信息提供给ASCX文件呢?
这是我的代码:
var jqxhr = $.post("mypage.php", {url:pageurl}, function() {
alert("fetching...");
})
.success(function() { alert("fetch complete!"); })
.error(function() { alert("error!"); })
.complete(function() { alert("complete"); });
// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });
Run Code Online (Sandbox Code Playgroud)
我收到警报("获取...")对话框,但其余代码未完成.我收到错误:错误:$ .post("sec_fetch_report.php",function(){alert("fetching ...");}).success不是函数
我想也许我可能会错过jquery libs,但我有另一个调用$ .post的函数,它运行得很好.是否存在语法错误,我在某处丢失或者什么?谢谢
在这个JS片段中,我有一个具有两个版本的私有函数(bar和bar2)的对象.我声明了两个实例,但是我发现私有函数(bar)的一个版本似乎错误地访问了OTHER对象中私有var v的值.有人可以告诉我为什么会这样吗?
Eric = function(_v)
{
var v = _v;
bar = function() {
alert(v);
};
function bar2() {
alert(v);
};
this.foo = function() {
bar();
};
this.foo2 = function() {
bar2();
};
};
var e = new Eric('I am Eric');
var e2 = new Eric('I am Eric II');
e2.foo(); // outputs "I am Eric II"
e.foo(); // outputs "I am Eric II" ------ WHY?
e2.foo2(); // outputs "I am Eric II"
e.foo2(); // outputs "I am Eric"
Run Code Online (Sandbox Code Playgroud)
非常感谢安德鲁
我还在努力学习java,如果我错了,请纠正我.据我所知,super关键字调用类的构造函数.所以我不明白说什么意义
super.paint(g)
Run Code Online (Sandbox Code Playgroud)
例如,或者最近在阅读我遇到的动画时
super.addNotify()
Run Code Online (Sandbox Code Playgroud)
我试着查看关于两者的文档(可能很差)并且它不能充分满足我的好奇心,所以我们在这里.
对这两个例子或一般情况的任何澄清将不胜感激.谢谢!
我正在处理C#和MySql请求.我正在尝试在我的数据库中检索我的数据但是我有这样的错误消息:读取器关闭时无效的读取尝试.
谢谢你们的帮助:)
我有这个功能:
public MySqlDataReader GetValueFromTable(string table, ArrayList attribut, ArrayList parameter)
{
string query = string.Empty;
MySqlDataReader rdr = null;
try
{
query = "SELECT * FROM `" + table + "` WHERE ";
for (int i = 0; i < attribut.Count; i++)
{
query += attribut[i] as string;
query += " = ";
query += parameter[i] as string;
if(i != attribut.Count - 1)
query += " AND ";
}
query += ";";
using (mysqlConnection)
{
using (mysqlCommand = new …Run Code Online (Sandbox Code Playgroud)