小编Rob*_*t K的帖子

在PHP中将数组作为参数传递,而不是数组

我似乎记得在PHP中有一种方法可以将数组作为函数的参数列表传递,将数组解引用为标准func($arg1, $arg2)方式.但是现在我迷失了怎么做.我记得通过引用传递的方式,如何"传递"传入的参数...但不是如何将数组取消列表到参数列表.

它可能很简单func(&$myArgs),但我很确定不是这样.但是,遗憾的是,到目前为止,php.net手册尚未透露任何内容.并非我在过去一年左右不得不使用这一特定功能.

php arrays methods function

142
推荐指数
4
解决办法
9万
查看次数

当它看起来如此相似时,为什么本征类不等同于self.class?

我错过了某个地方的备忘录,我希望你能解释一下这个.

为什么对象的本征类不同self.class

class Foo
  def initialize(symbol)
    eigenclass = class << self
      self
    end
    eigenclass.class_eval do
      attr_accessor symbol
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的逻辑系列等同于特征类,class.self非常简单:

class << self是一种声明类方法的方法,而不是实例方法.这是捷径def Foo.bar.

因此在对类对象的引用中,返回self应该相同self.class.这是因为,class << self将设置selfFoo.class用于类方法的定义/属性.

我只是困惑吗?或者,这是Ruby元编程的偷偷摸摸的伎俩吗?

ruby language-features eigenclass

80
推荐指数
3
解决办法
1万
查看次数

在Ruby中检测没有getc/get的按键(非阻塞)

我有一个简单的任务,需要等待文件系统上的某些东西改变(它本质上是原型的编译器).因此,在检查更改的文件后,我有一个简单的无限循环,睡眠时间为5秒.

loop do
  # if files changed
  #   process files
  #   and puts result
  sleep 5
end
Run Code Online (Sandbox Code Playgroud)

而不是Ctrl+C敬礼,我宁愿能够测试并看看是否按下了一个键,而没有阻止循环.基本上我只需要一种方法来判断是否有传入的按键,然后一种方法来获取它们直到满足Q,然后退出程序.

我想要的是:

def wait_for_Q
  key_is_pressed && get_ch == 'Q'
end

loop do
  # if files changed
  #   process files
  #   and puts result
  wait_for_Q or sleep 5
end
Run Code Online (Sandbox Code Playgroud)

或者,这是Ruby不做的事情(好)?

ruby input nonblocking

19
推荐指数
4
解决办法
2万
查看次数

RoR:has_one"或其他"?(或者,没有继承的多态性.)

嘿所有,我对我的项目有一些有趣的要求.我需要一个has_one关系,它可以是一个类或另一个类,但没有继承.如果它是唯一的方法,我可以逃脱继承,但两个相关记录具有完全不同的数据,并且根本不相关.

我需要弄清楚的是以下内容.

# 1. Foo never belongs to anything.
# 2. Foo MUST have one assigned sub-record for validity.
# 3. Foo can only have either Bar or Baz assigned.
# 4. Bar and Baz have only ONE common property, and aren't
#    related in either data or implementation.

class Foo < ActiveRecord::Base
  # Attributes: id, name, value
  has_one :assignment, :foreign_key => 'assigned_to', :readonly => true
          # Could really use an :object_type for has_one here...
end

class Bar …
Run Code Online (Sandbox Code Playgroud)

polymorphism activerecord ruby-on-rails has-one polymorphic-associations

8
推荐指数
1
解决办法
1866
查看次数

如何链接到HTML文档中的gzip javascript?

我已经看过一些关于gzipping javascript以节省下载时间的参考资料. 我也看到一些警告,某些浏览器不支持这一点.

我可以使用两种不同的方法:

  1. 用于mod_deflate通过htaccess使Apache压缩给定目录中的JS/CSS文件
  2. 用于ob_start('gzhandler')压缩文件并使用正确的标头将其返回到浏览器.

方法1的问题在于并非所有浏览器都支持mod_deflate,而且我不知道如何将.htaccess文件写入足够智能以便为此进行调整.

方法2的问题在于没有关于如何判断浏览器是否支持gzip压缩脚本或样式表的确定答案,并且如果它确实必须将mime-type作为标题中的内容类型给出.

我需要一些建议.首先,浏览器更普遍接受哪种方法?其次,如何使用任一方法衰减来提供未压缩的备份脚本?第三,单独<script src="js/lib.js.gz" type="text/javascript"></script>工作?(显然不会腐烂.)

为了记录,我使用PHP5与mod_deflate和完整的gzip创建功能,我的doctype是xhtml strict.此外,javascript本身是用YUI压缩的. 编辑: 我回去看了看,但我只有Apache 1.3; 我以为我有2,所以很抱歉在我可能没有它时提及mod_deflate.

javascript php compression

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

如何在PHP中调试和防范无限循环?

我最近碰到了一个挑战我的编程能力的问题,这是一个非常偶然的无限循环.我重写了一些代码来干掉它并改变了一个被它调用的确切方法重复调用的函数; 当然是一个基本问题.Apache决定通过崩溃来解决问题,而日志只注明"衍生出来的子进程".问题是我当天从未真正调试过这个问题,它在下午出现,并且今天不得不解决它.

最后,我的解决方案很简单:手动记录逻辑并查看发生了什么.当我有一个由两条独特的线组成的日志文件时,问题立即显现出来,接下来是两条线,每条线重复约两百次.

有什么方法可以保护自己免受无限循环的影响?并且,当它失败(并且会失败)时,追踪它的最快方法是什么?它确实是最有效的日志文件,还是其他什么?

如果它是最佳实践,那么您的答案可能与语言无关,但我宁愿坚持使用PHP特定的技术和代码.

php apache debugging infinite-loop

6
推荐指数
1
解决办法
8928
查看次数

学习C++本身的资源,而不是编程的基础知识?

我是一个新的,不情愿的从Pascal,Ruby和PHP背景转换为C++.自从使用"Delphi Turbo"几个月的酷刑以来,我没有和Pascal合作过.从那时起,我几乎一直在吃Ruby和PHP.我已经熟悉面向对象编程和许多不同的主题.

我的主要问题是我已经了解了C/C++编程的基本知识,而不是使用C++的实际经验.我和C一起工作了很长时间才意识到,即使没有宏等,我也不想使用它.(有些厌恶是因为习惯于Pascal的自动字符串管理,在​​C语言中维护一个CGI应用程序.)我知道只有足够的C++对我自己以及其他任何不知道使用我的"代码"的人来说都是危险的.

我非常希望能够对C++有足够的了解,使用像Crypto ++和Boost这样的库,而不会出现重大问题或深入了解语言的复杂性.我只需要弄清楚如何在不杀死自己的情况下使用C++(无论是使用C++,还是长期不喜欢我已经在与之斗争).

在没有假设我必须完成所有基本编程的情况下,有什么资源可以教我C++?我宁愿不重新学习我已经知道的概念,除非C++中的范例有很大不同.我也在学习自己的时间,所以不要向我推荐一本复杂的书,需要大师向我解释一下,拜托!和我有$ 0学习C++有效的预算,所以请保持建议很常见,我可以很可能在图书馆找到它们的质量在线资源或书籍.

c++

4
推荐指数
2
解决办法
766
查看次数

这个MATLAB代码如何工作?(概率和随机序列)

我在文章" 永无止境的洗牌序列 " 的评论中看到了这段代码.我理解基本前提,但我不知道它是如何工作的.我需要的最大解释是while循环的前两行.

(因为它是用MATLAB编写的,我只能猜测这段代码的功能.)

probabilities = [1 1 1 1 1 1];
unrandomness = 1;
while true
    cumprob = cumsum(probabilities) ./ sum(probabilities);
    roll = find(cumprob >= rand, 1)
    probabilities = probabilities + unrandomness;
    probabilities(roll) = probabilities(roll) - 6*unrandomness;
    if min(probabilities) < 0
        probabilities = probabilities - min(probabilities);
    end
end
Run Code Online (Sandbox Code Playgroud)

random matlab shuffle probability

4
推荐指数
1
解决办法
2933
查看次数

在PHP中执行shell命令而不等待结果

执行shell命令时遇到问题.问题是我想运行一个命令,exec('du -sh /var/www/backups/* > backups.log')但我想按"START"并稍后阅读backups.log.现在,当我按下按钮时,我必须等到它完成,所以页面一直等到脚本完成.

php shell exec

4
推荐指数
1
解决办法
1857
查看次数

如何将字符串拆分为后缀数组?

将字符串拆分为其后缀数组的最有效方法是什么?

假设你有字符串"天气很好",我想生成一个后缀数组:

[0] = "nice"

[1] = "is nice"

[2] = "weather is nice"

[3] = "the weather is nice"
Run Code Online (Sandbox Code Playgroud)

我可以从头到尾以令牌(单词)的形式访问迭代器形式的字符串.

java arrays search phrase

4
推荐指数
1
解决办法
178
查看次数

3
推荐指数
1
解决办法
1925
查看次数

如何在Ruby中的子模块中正确封装方法?我的方法不会出现在任何地方!

我在Ruby中编写了一个非常基本的财务模块来简化我自己的计算,因为有时它更容易进入irb并开始调用函数.但奇怪的是,在我的模块中,我有一个带有一个名为future_value(Finance::CompoundInterest.future_value)的方法的子模块......但根据irb它不存在?它非常小,但我真的更喜欢能够使用复利而不必每次都输入公式.

加载时irb不会抛出任何错误或警告,并且该方法对于所有意图和目的都是不可见的.几乎可悲的是,我可以实例化一个Finance::Mortgage.

这是我的财务部门:

module Finance
  module CompoundInterest
    def future_value(present_value, interest, length)
      interest /= 100 if interest >= 1 # if given in percent 1..100
      present_value * ((1 + interest)**length)
    end
  end

  class Mortgage
    attr_accessor :amount, :rate, :years, :payment, :interest_paid
    def initialize(amount, rate, years)
      @amount, @rate, @years = amount, rate, years

      i = rate  / 12
      n = years * 12
      m = (1 + i)**n

      @payment …
Run Code Online (Sandbox Code Playgroud)

ruby methods module

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

检查项目是否包含在数组或散列中

在Ruby中是否可以使用这样的东西

if @subscription.state = ['trail', 'active']
   #Do something 
end
Run Code Online (Sandbox Code Playgroud)

应该是自我解释的.

ruby

-6
推荐指数
2
解决办法
122
查看次数