我计划创建一种方法,以特定方式格式化时间(俄语专用格式).
我想在多个模型,控制器和可能的视图中重用这个辅助方法.另外我想在Time类的实例上调用这个helper方法,如下所示:
t=Time.now
t.my_super_shiny_helper
Run Code Online (Sandbox Code Playgroud)
问题:我应该在哪里实施这个助手?(模块或类,在应用程序目录结构中的位置?).创建之后,我应该怎么称呼它?
我是ruby/rails的新手,并努力以正确的方式工作.
谢谢.
我使用以下代码使用java声音API播放声音文件.
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
clip.open(inputStream);
clip.start();
Run Code Online (Sandbox Code Playgroud)
调用Clip.start()方法的方法立即返回,系统在后台线程中播放声音文件.我希望我的方法暂停,直到播放完成.
有没有好办法呢?
编辑:对于对我的最终解决方案感兴趣的每个人,根据Uri的答案,我使用下面的代码:
private final BlockingQueue<URL> queue = new ArrayBlockingQueue<URL>(1);
public void playSoundStream(InputStream stream) {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
clip.open(inputStream);
clip.start();
LineListener listener = new LineListener() {
public void update(LineEvent event) {
if (event.getType() != Type.STOP) {
return;
}
try {
queue.take();
} catch (InterruptedException e) {
//ignore this
}
}
};
clip.addLineListener(listener );
}
Run Code Online (Sandbox Code Playgroud) 我读过的所有内容似乎都暗示构建交叉编译器比构建针对其运行的平台的编译器要困难得多.这是真的?如果是这样,为什么?似乎为任意平台生成汇编代码和系统调用不应该比为编译器运行的平台生成这样的代码和系统调用更难,但也许我只是天真.
我对procmail有一个非常常见的要求,但我无法以某种方式获得结果.我有这个内容的procmailrc文件:
:0
* ^To.*@myhost
| /usr/bin/python /work/scripts/privilege_emails_forward.py
Run Code Online (Sandbox Code Playgroud)
其中我的自定义python脚本(privilege_emails_forward.py)将扫描当前收到的电子邮件,并对邮件内容进行一些操作.但是我无法在第一次拍摄时执行脚本(更不用说扫描邮件内容了).
我试图以一种方式将数字分解为数组(在php中),例如:
我不知道正确的用语是什么,但我认为这个想法很明确.
我的循环解决方案非常简单:
$number = rand(0, 128);
$number_array_loop = array();
$temp_number = $number;
while ($temp_number > 0) {
$found_number = pow(2, floor(log($temp_number, 2)));
$temp_number -= $found_number;
$number_array_loop[] = $found_number;
}
Run Code Online (Sandbox Code Playgroud)
我也有一个递归的解决方案,但是我不能在不使用全局变量的情况下工作(不想这样),以下内容接近但会导致数组中的数组:
function get_numbers($rest_number) {
$found_number = pow(2, floor(log($rest_number, 2)));
if ($found_number > 0) {
$temp_array[] = get_numbers($rest_number - $found_number);
$temp_array[] = $found_number;
}
return $temp_array;
}
$number_array_recursive = array();
$number_array_recursive = get_numbers($number);
Run Code Online (Sandbox Code Playgroud)
然而,使用诸如pow(floor(log())之类的东西似乎对于像这样的简单问题有点多.
在我看来,问题需要一个非常简单的数学递归解决方案,但我只是没有看到它.
任何帮助都会被贬低.
编辑:二进制是关键,非常感谢!
首先,我确实知道Fisher-Yates shuffle.但为了论证,我想允许用户从下拉列表中选择一个排序选项.该列表将包括"随机"选项.根据他们的选择结果,我只想在IComparer实例中替换我的排序.IComparer会是什么样子?
谷歌提出了大量有缺陷的结果,所有结果都采取以下形式:
public class NaiveRandomizer<T> : IComparer<T>
{
private static Random rand = new Random();
public int Compare(T x, T y)
{
return (x.Equals(y))?0:rand.Next(-1, 2);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,该实现是有偏见的,甚至会在某些情况下抛出异常.可以使用以下代码演示偏差:
void Test()
{
Console.WriteLine("NaiveRandomizer Test:");
var data = new List<int>() {1,2,3};
var sortCounts = new Dictionary<string, int>(6);
var randomly = new NaiveRandomizer<int>();
for (int i=0;i<10000;i++)
{ //always start with same list, in _the same order_.
var dataCopy = new List<int>(data);
dataCopy.Sort(randomly);
var key = WriteList(dataCopy);
if (sortCounts.ContainsKey(key))
sortCounts[key]++;
else
sortCounts.Add(key, 1); …Run Code Online (Sandbox Code Playgroud) 在网页上,我正在呼叫第三方,它不允许我以编程方式设置超时.我调用BeginInvoke并使用AsyncWaitHandle.WaitOne等待指定的时间.
如果呼叫超时,我继续前进,忘记我开始的线程呼叫.我的问题是,在超时情况下,我是否还要以某种方式调用EndInvoke?这个MSDN页面上的"注意"注释让我想知道我是否应该:http://msdn.microsoft.com/en-us/library/2e08f6yc(VS.71).aspx
如果您认为我应该,那么接下来的问题是,如果我的网页已经完成处理并在第三方回来之前返回到客户端,那么回调方法是否会在那里听取运行代码?一旦我的请求/响应完成,服务器是否停止寻找活动?
这是我正在使用的代码:
public class RemotePaymentProcessor
{
private delegate string SendProcessPaymentDelegate(string creditCardNumber);
private string SendProcessPayment(string creditCardNumber)
{
string response = string.Empty;
// call web service
SlowResponseService.SlowResponseService srs = new WebServiceTimeout.SlowResponseService.SlowResponseService();
response = srs.GetSlowResponse(creditCardNumber);
return response;
}
public string ProcessPayment(string creditCardNumber, int timeoutMilliseconds)
{
string response = string.Empty;
SendProcessPaymentDelegate sppd = new SendProcessPaymentDelegate(SendProcessPayment);
IAsyncResult ar = sppd.BeginInvoke(creditCardNumber, null, new object());
if (!ar.AsyncWaitHandle.WaitOne(timeoutMilliseconds, false))
{
// Async call did not return before timeout
response = "TIMEOUT";
}
else …Run Code Online (Sandbox Code Playgroud) 多年来,我已经习惯于逐步调试调试器,无论是在构建器中,还是在Eclipse中使用pydev调试器.
目前,我正在使用Python制作并在Google App Engine上运行它,我应该补充一点,我对开发任何真正的Web应用程序都很陌生; 除了编辑HTML代码之外,我从未真正做过多少工作.
所以,我正在运行Google的dev_appserver并在http:// localhost,dig,现在查看我的工作,我用来识别问题的唯一工具是PMD(穷人的调试器)..基本上把东西写到html页面来查看局部变量的值.
有没有更好的技术来处理这个?
注意:现在有人提出这个问题,请注意日期.这个问题已接近4年,而且信息相对过时.根据我的经验,NHibernate现在相对容易使用(使用流畅的界面),Entity Framework是一个合法的竞争者,而像Dapper和Massive这样的MicroORMS正变得非常流行.
我们正在重写我们的核心Web应用程序之一,我终于从管理层清楚地了解了用ORM框架替换可怕的存储过程纠结以实现我们的数据访问层.
万岁,对我而言.现在我必须选择一个.
以下我玩了一下
现在我知道NHibernate是真正的Alt.Netty选择,但问题是我和承包商合作,据我所知,他们从来没有听说过,NHibernate在相当的学习曲线上享有盛誉.在此期间,亚音速似乎是一种更为直接的方法.我也了解实体框架,但我对它的'meh'招待和Linq对Oracle持谨慎态度,但我很担心我几乎没有听到任何关于它的事实.
所以问题是:
更多考虑因素:
我倾向于亚力士,但我很好奇人们可能会说些什么.
我已经创建了一个类MyClass,它打算向JSP输出大量文本.我认为MyClass对象使用页面的输出流更好.这是一个好/可能的想法吗?
在测试可能的方法来做到这一点......
这些输出文本,但它显示在页面正文之前:
response.getWriter().append("test1");
response.getWriter().println("test2");
response.getWriter().write("test3");
Run Code Online (Sandbox Code Playgroud)
这个错误告诉我输出流已经得到了:
response.getOutputStream().println("test4");
Run Code Online (Sandbox Code Playgroud)