好的,所以我说这个没有问题,但是我想确保我做得对,因为从长远来看,这似乎是一项额外的工作.
我正在与Sinatra合作并使用HAML模板.我想在我的HAML文件中包含一个JavaScript文件.我的目录结构如下所示:
当我尝试包含文件(没有额外的路由或任何东西)时,我得到一个页面无法找到错误.但是,如果我添加此代码,那么它工作正常:
get '/media/js/:name' do
begin
send_file('media/js/' + params[:name])
rescue
"There's nothing for you here"
end
end
Run Code Online (Sandbox Code Playgroud)
我这样做是为了提供我的媒体/静态文件没有问题,但我只是想确保这是必要的,我想避免这是可能的.
编辑
我将以下代码包含在我的bootstrap.rb文件中,但无济于事:
set :root, File.dirname(__FILE__)
enable :static
Run Code Online (Sandbox Code Playgroud) 我正在开展一个大型项目,涉及获取数千(30,000+)个静态网页并将其转换为CMS.
问题是这些页面中的许多页面在其目录中是重复的.我想通过使用301重定向保持SEO完好无损,但是,我不知道如何进行如此大的重定向(301).
以下是页面当前目录结构的示例.
/page.html /folder/page.html /folder/subfolder/page.html /folder/subfolder/anotherfolder/page.html
如您所见,page.html在所有目录中都是重复的.
对于新CMS,该页面的URL就是/page.html.
使用异常来指示已到达文件的末尾似乎很脏.我们阅读的每个文件都有一个结尾,所以它似乎并不特殊或意外.此外,我不喜欢对我的程序的非异常流程使用异常.
我正在谈论使用java.io.EOFException来表示数据输入流的结束:
想象一个包含以下消息的文件......
----------------- ------------------
- 2-byte LENGTH - - N-byte PAYLOAD - , where N = LENGTH;
----------------- ------------------
Run Code Online (Sandbox Code Playgroud)
...并使用DataInputStream读取此文件:
DataInputStream in = new DataInputStream(...);
...
try {
while (true) {
short length = in.readShort();
byte[] b = new byte[length];
in.readFully(b);
}
} catch (EOFException e) { }
...
Run Code Online (Sandbox Code Playgroud)
在此示例中,调用将抛出EOFException in.readShort().我应该弄清楚文件中的字节数,并准确读取该字节数(由total -= length零开始确定),并退出while循环而没有异常?我正在寻找最佳实践.
我应该这样做吗?
long total = file.length();
while (total > 0) {
short length = in.readShort();
total -= length;
byte[] b = new …Run Code Online (Sandbox Code Playgroud) 继我上一期的问题之后:
我正在研究Linux上的套接字性能.通过上面的例子,我的往返时间约为65μsec.如果我在文件系统上制作两个fifo,则会下降到~45μsec.使用localhost套接字的额外时间必须是因为我正在访问网络堆栈.
是否有一些操作系统配置可以使localhost套接字与命名管道一样快?
uname -a
Linux fiatpap1d 2.4.21-63.ELhugemem #1 SMP Wed Oct 28 23:12:58 EDT 2009 i686 athlon i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
提前致谢!
检查传递给方法的对象的最佳方法是扩展给定的类?
目前我有一个方法需要发送ByteBuffer数据和我编写的'播放器'类,并将数据排队到IO服务器上发送给客户端:
public void send(ButeBuffer toSend, Player player)
{
// prep the byte buffer for sending, and queue it on the IO server
}
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是让传入的玩家对象成为扩展玩家类的任何对象.我做了一些搜索,发现了这样的事情:
public void send(ByteBuffer toSend, Player<? extends Player> player)
{
// prep the byte buffer for sending, and queue it on the IO server
}
Run Code Online (Sandbox Code Playgroud)
但这给了我编译错误,我不明白到底发生了什么.这是正确的方法吗?如果是这样,任何人都可以解释这段代码具体做什么以及它为什么不起作用,或者将我链接到一篇更详细解释这一点的文章.
或者,我想我可以设置这样的东西:
public void send(ByteBuffer toSend, Object player)
{
// Check that the player extends Player, using instanceof or something
// along those lines
// Prep the ByteBuffer, and queue the …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用xml包(http://golang.org/pkg/xml/)在Go中读取XML文件.
我的问题是我不确定如何读取元素的内部文本.我在xml.Parser中加载文档,然后调用parser.Token()来遍历文件.我检查令牌使用以下内容:
token, err := parser.Token()
if element, ok := token.(xml.StartElement); ok {
// process as a start element. I can read the element name and attributes here
}
if charData, ok := token.(xml.CharData); ok {
// process as text. How do I read the text data?
}
Run Code Online (Sandbox Code Playgroud)
xml.CharData类型定义为:
type CharData []byte
Run Code Online (Sandbox Code Playgroud)
但我似乎无法将charData变量用作转换为字符串的字节数组.为CharData定义的唯一方法是复制令牌,但这只是给出CharData变量的另一个副本.我尝试过一些东西,但是他们没有编译:
innerText := string(charData)
innerText := string(charData[0:])
innerText := string(charData[0]) // this compiled but is not what I want
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法将xml.CharData变量视为一个字节片?
我有一个字节数组,我从消息的标题部分读取.这些字节包含消息的长度.从不超过3个字节,它们从LSB到MSB排序.所以在下面的例子中,39是LSB,2是MSB.
var data = new byte[] { 39, 213, 2 };
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我如何获取这些字节并转换为数字(int,short等)?
这可能以前得到了回答,但我花了一些时间寻找并找不到确切的答案.
我有一个父div,包含两个div B和C.
B和C都向左浮动.C没有设定的高度(增长与文本的数量).
问题:父A没有增长到C的大小.我知道这与浮动元素不是普通文档流的一部分有关,但我不知道如何修复它(设置一个高度)在A上没有帮助,因为它取决于C)的高度.
我想要一个可选择的标签控件,就像截图中的那个一样.它可以使用无边框TEdit完成,但我想知道是否有另一种方法可以使用渐变背景?
例如http://usera.ImageCave.com/brk303/SelectableLabel.png.jpg
为了澄清,我使用了一个简单的PageControl,由于Win XP具有渐变绘图,放置在页面上的无边框TEdit不能完美地融合:
在PageControl上编辑http://usera.ImageCave.com/brk303/Gradient.png.jpg
更新:
我设法通过添加到达中途
procedure CNCtlColorStatic(var AMsg: TWMCtlColorStatic); message CN_CTLCOLORSTATIC;
procedure TTransparentEdit.CNCtlColorStatic(var AMsg: TWMCtlColorStatic);
begin
with ThemeServices do
if ThemesEnabled then
begin
SetBkMode(AMsg.ChildDC, Windows.TRANSPARENT);
DrawParentBackground(Handle, AMsg.ChildDC, nil, False);
AMsg.Result := GetStockObject(NULL_BRUSH);
end
else
inherited;
end;
Run Code Online (Sandbox Code Playgroud)
它现在是透明的,但还需要做其他事情,因为在选择文本时绘画无法正常工作.这个行为很难解释,我会进一步调查并在这里更新......
我正在尝试为iPad创建一个简单的应用程序,当您单击按钮时播放FLV.我使用http://developer.apple.com/iphone/library/codinghowtos/AudioAndVideo/index.html#VIDEO-USE_THE_MEDIA_PLAYER_FRAMEWORK_FOR_VIDEO_PLAYBACK中的代码作为参考.这是我的点击事件的代码
-(IBAction) btnPlayVideoClick:(id) sender {
NSString* videoPath = [[NSBundle mainBundle] pathForResource:@"myVideo" ofType:@"flv"];
MPMoviePlayerController* myMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:videoPath]];
myMovie.scalingMode = MPMovieScalingModeAspectFill;
// Register for the playback finished notification.
[[NSNotificationCenter defaultCenter] addObserver:self
selector: @selector(myMovieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:myMovie];
[myMovie play];
}
-(void)myMovieFinishedCallback:(NSNotification*)aNotification
{
MPMoviePlayerController* theMovie=[aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:theMovie];
// Release the movie instance created in playMovieAtURL
[theMovie release];
}
Run Code Online (Sandbox Code Playgroud)
我能够成功编译并运行应用程序,但是当我单击按钮时,应用程序只退出时没有任何错误消息或任何活动.有什么东西我做错了,或者是否有某些原因我无法使用模拟器播放FLV.我还无法在真实设备上进行测试,因为我正在等待批准获得我的开发许可证.
谢谢,
麦克风