小编Nat*_*ong的帖子

发起下载的最佳方式?

在基于PHP的网站上,我想在填写简短表单后向用户发送下载包.网站启动的下载应该类似于download.com这样的网站,它们说"你的下载将在一瞬间开始".

我知道的几种可能的方法和浏览器兼容性(基于快速测试):

1)window.open指向新文件.

- FireFox 3 blocks this.  
 - IE6 blocks this.  
 - IE7 blocks this.
Run Code Online (Sandbox Code Playgroud)

2)创建指向新文件的iframe.

- FireFox 3 seems to think this is OK. (Maybe it's because I already accepted it once?)  
 - IE6 blocks this.  
 - IE7 blocks this.

How can I do this so that at least these three browsers will not object? 
Run Code Online (Sandbox Code Playgroud)

额外奖励:有没有一种方法不需要浏览器条件语句?

(我相信download.com有条件地使用这两种方法,但我不能让任何一种方法工作.)

回应和澄清:

Q: "Why not point the current window to the file?"  
A: That might work, but in …
Run Code Online (Sandbox Code Playgroud)

javascript php download

12
推荐指数
3
解决办法
8296
查看次数

为什么不使用PHP作为桌面编程语言?

在回答这个问题时,我确信很多人会反对PHP不是桌面编程的最佳选择,而是会推荐像Ruby或Python这样的东西.我认为讨论原因会很有趣.

除了关于PHP是否总体上是一门好语言的争论之外,您对良好的桌面编程语言(与Web开发相对)的标准是什么?

php desktop

12
推荐指数
5
解决办法
5752
查看次数

Git:如何创建不同的未合并状态?

何时git status发生不同的未合并状态added by us,added by them或者both deleted

我试图通过执行合并来重现后者,其中文件已在当前和合并分支中删除,但我无法创建此状态.

git git-status

12
推荐指数
1
解决办法
2056
查看次数

PHP的__autoload()有多独特?

PHP __autoload()(文档)对我来说非常有趣.以下是它的工作原理:

  • 你尝试使用一个类,如new Toast_Mitten()(脚注1)
  • 该类尚未加载到内存中.PHP拉回拳头,给你一个错误.
  • 它暂停了."等等,"它说."这里__autoload()定义了一个功能." 它运行它.
  • 在该函数中,您以某种方式将字符串映射Toast_Mittenclasses/toast_mitten.php并告诉它要求该文件.确实如此.
  • 现在这个类在内存中,你的程序一直在运行.

内存优势:您只需加载所需的类.Terseness的好处:您可以停止在任何地方包含这么多文件,只需包含您的自动加载器.

如果事情变得特别有趣

1)您__autoload()可以通过自动方式从类名确定文件路径和名称.例如,也许您的所有课程都在,classes/并且Toast_Mitten将在classes/toast_mitten.php.或者,也许你的名字类,比如Animal_Mammal_Weasel,这将是classes/animal/mammal/animal_mammal_weasel.php.

2)使用工厂方法获取类的实例.

$Mitten = Mitten::factory('toast');
Run Code Online (Sandbox Code Playgroud)

Mitten :: factory方法可以对自己说,"让我们看看,我有一个被调用的子类Toast_Mitten()吗?如果是这样,我会返回它;如果没有,我只会返回一个我自己的通用实例 - 一个标准的手套.哦看!__autoload()告诉我那里吐司一类特殊的.好了,下面是一个实例!"

因此,您可以在整个代码中开始使用通用的手套,当一天到来时,您需要特殊的toast行为,您只需创建该类和bam! - 您的代码正在使用它.

我的问题是双重的:

  • (事实)其他语言有类似的结构吗?我看到Ruby有一个自动加载,但似乎你必须在给定的脚本中指定你期望使用它的类.
  • (意见)这太神奇了吗?如果你最喜欢的语言不这样做,你认为,"嘿,狡猾,我们应该有那个"或"我很高兴语言X不是那么草率?"

1 我向非英语母语人士道歉.这是一个小笑话.据我所知,没有"吐司手套"这样的东西.如果有的话,这将是一个拿起热吐司的手套.也许你在自己​​的国家有吐司连指手套?

php ruby language-agnostic language-features autoload

12
推荐指数
1
解决办法
559
查看次数

获取标记名称的xpath语法是什么?

我正在使用Nokogiri来解析一个大型XML文件.说我有以下结构:

<menagerie>
  <penguin>Pablo</penguin>
  <penguin>Mortimer</penguin>
  <bull>Ferdinand</bull>
  <aardvark>James Cornelius Madison Humphrey Zophar Handlebrush III</aardvark>
</menagerie>
Run Code Online (Sandbox Code Playgroud)

我可以算这样的非企鹅:

xml.xpath('//menagerie//*[not(penguin)]').length // 2
Run Code Online (Sandbox Code Playgroud)

但是如何获得这样的标签列表呢?(确切的格式并不重要;我只是想直观地扫描非企鹅.)

bull
aardvark
Run Code Online (Sandbox Code Playgroud)

更新

这给了我想要的清单 - 感谢OdedTMN以及delnan!

xml.xpath('//menageries/*[not(penguin)]').each do |node|
  puts node.name()
end
Run Code Online (Sandbox Code Playgroud)

ruby xml xpath nokogiri

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

如何为插件的默认设置提供对最终设置的访问权限?

我正在研究一个jQuery插件.当插件运行时,它首先要确定它的设置.它通过采用一些默认设置并使用用户传入的任何内容覆盖部分或全部设置来实现此目的.

这是一个简化版本:

(function( $ ) {
  $.fn.somePlugin = function(userOptions) {
    // Short name for internal use - exposed below for external modification
    var defaults = $.fn.somePlugin.defaults;

    // Decide settings
    // User settings overrule defaults, but merge both into an empty 
    // hash so that original defaults hash isn't modified
    var settings = $.extend(true, {}, defaults, userOptions);

    settings.alerter.call();

    // More code, etc.
  }

  $.fn.somePlugin.defaults = {
    name: 'Captain Slappy von Martinez, Esquire, DDS',
    favoriteColor: 'red',
    alerter: function(){alert("I got bones!");}        
  }

})( …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

12
推荐指数
1
解决办法
626
查看次数

在Ruby的"gsub"和Vim的替换命令中,"g"代表什么?

Ruby和Vim都使用"g"和替换命令来表示"所有出现"."g"代表什么?

具体来说,在Ruby中,String类有两个"子"命令:sub将仅替换第一个匹配项,gsub并将替换所有匹配项.例如:

string = "One potato, two potato, three potato, four."
string.sub('potato','banana') # => "One banana, two potato, three potato, four."
string.gsub('potato','banana') # => "One banana, two banana, three banana, four."
Run Code Online (Sandbox Code Playgroud)

类似地,在Vim中,:%s/foo/bar将查看整个文件(这%意味着什么)并且每行替换一个事件,但是:%s/foo/bar/g将在每一行上执行所有事件.

我的猜测是,在这两种情况下,"g"意味着"贪婪",因为Ruby命令和Vim命令都接受正则表达式,但我对贪婪匹配的理解是"匹配符合这些条件的最长子字符串",而不是"匹配尽可能多的子串." (参见" 注意贪婪! ")

ruby regex vim

12
推荐指数
2
解决办法
3145
查看次数

如何使用Ruby 1.9在Rails中使用美式日期?

我在美国,我们通常将日期格式设置为"月/日/年".我正在努力确保使用Ruby 1.9的Rails应用程序在任何地方都采用这种格式,并按照它在Ruby 1.8下的方式工作.

我知道很多人都有这个问题,所以我想在这里创建一个明确的指南.

特别:

  1. '04/01/2011'是2011年4月1日,而不是2011年1月4日.
  2. '2011年4月1日'也是2011年4月1日 - 不需要领先的零.

我怎样才能做到这一点?

这是我到目前为止所拥有的.

控制日期#to_s行为

我有这条线application.rb:

    # Format our dates like "12/25/2011'
    Date::DATE_FORMATS[:default] = '%m/%d/%Y'
Run Code Online (Sandbox Code Playgroud)

这确保了如果我执行以下操作:

d = Date.new(2011,4,1)
d.to_s
Run Code Online (Sandbox Code Playgroud)

......我得到"04/01/2011",而不是"2011-04-01".

控制String#to_date行为

ActiveSupport的String#to_date方法目前看起来像这样(来源):

 def to_date
    return nil if self.blank?
    ::Date.new(*::Date._parse(self, false).values_at(:year, :mon, :mday))
  end
Run Code Online (Sandbox Code Playgroud)

(如果你不遵循这个,第二行创建一个新的日期,按年顺序传递年,月和日.它获取年,月和日值的方式是使用Date._parse,它解析字符串和以某种方式决定这些值是什么,然后返回一个哈希值..values_at按顺序从该哈希值中拉出值Date.new.)

因为我知道我通常会传递像"04/01/2011"或"4/1/2011"这样的字符串,所以我可以通过monkeypatching来解决这个问题:

class String

  # Keep a pointer to ActiveSupport's String#to_date
  alias_method :old_to_date, :to_date

  # Redefine it as follows
  def to_date
    return nil if self.blank?
    begin
      # …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails date ruby-1.9

12
推荐指数
1
解决办法
4210
查看次数

我怎样才能给Sinatra一个笼统的默认路线?

对于小型开发人员文档应用程序,我想设置一个Sinatra应用程序来提供HAML文件.在CSS文件和图像的路由之后,我想要一条尝试为您请求的任何路径加载HAML文件的路由.

例如:

  • /index加载views/index.haml,如果存在的话
  • /this/page/might/exist加载views/this/page/might/exist.haml,如果存在的话

我该如何指定这条路线?

ruby sinatra

12
推荐指数
1
解决办法
5801
查看次数

如何让nanoc SASS过滤器使用SCSS语法?

在我的nanoc网站中,我想使用SCSS指定我的样式:

p {
  em {
    color: red;
  }
}
Run Code Online (Sandbox Code Playgroud)

......不是SASS:

p 
  em 
    color: red
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试使用SCSS,我会从SASS过滤器中收到编译错误.如何使用SCSS?

ruby nanoc

12
推荐指数
1
解决办法
1194
查看次数