Laravel中是否有类似的东西可以让你看到正在执行的实际SQL?例如,在Rails中,您可以在控制台中看到SQL.在Django你有一个工具栏.
在Laravel 4中有类似的东西吗?
澄清一下:我的问题是如何在没有代码的情况下做到这一点.是否有内置在Laravel中的东西不需要我在应用程序中编写代码?
更新:我希望看到CLI查询(例如php artisan migrate)
这似乎是在Laravel 4验证模型的官方途径是通过Validator在Controller?有人能指出为什么会这样吗?
实施验证不是更有意义Model吗?
我需要将我的进程设置为在'nobody'下运行,我找到了os.setuid(),但是我怎么找到uid我的login?
我发现uid在/ etc/passwd中,但也许比扫描/ etc/passwd有更多的pythonic方式.任何人?
问题:
>>> a = dict(a=1,b=2 )
>>> b = dict( b=3,c=2)
>>> c = ???
c = {'a': 1, 'b': 5, 'c': 2}
Run Code Online (Sandbox Code Playgroud)
所以,这个想法是两个以最短的形式通过int/float值添加到字典.这是我设计的一个解决方案,但我不喜欢它,因为它很长:
c = dict([(i,a.get(i,0) + b.get(i,0)) for i in set(a.keys()+b.keys())])
Run Code Online (Sandbox Code Playgroud)
我认为必须有一个更短/更简洁的解决方案(可能与reduce和操作员模块有关吗?itertools?)...任何想法?
更新:我真的希望找到更优雅的东西,比如"reduce(operator.add,key = itemgetter(0),a + b)".(显然这不是真正的代码,但你应该得到这个想法).但似乎这可能是一个梦想.
更新:仍然需要更简洁的解决方案.也许groupby可以帮忙吗?我用"reduce"/"groupby"提出的解决方案实际上并不简洁:
from itertools import groupby
from operator import itemgetter,add
c = dict( [(i,reduce(add,map(itemgetter(1), v))) \
for i,v in groupby(sorted(a.items()+b.items()), itemgetter(0))] )
Run Code Online (Sandbox Code Playgroud) 如何__repr__在Python中创建类似用户定义的内容?
比方说,我有一个object1的SomeClass,比方说我有一个函数void function1(std::string).有没有办法定义一些东西(函数,方法,...)来使编译器转换类SomeClass来std::string调用function1(object1)?
(我知道我可以使用stringstream缓冲区和operator <<,但我想找到一种没有中间操作的方法)
我需要找到一种优雅的方式来做两种MixIns.
第一:
class A(object):
def method1(self):
do_something()
Run Code Online (Sandbox Code Playgroud)
现在,MixInClass应该method1这样做:do_other()- > A.method1()- > do_smth_else()- 即基本上"包装"旧功能.我很确定必须有一个很好的解决方案.
第二:
class B(object):
def method1(self):
do_something()
do_more()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望MixInClass2能够在do_something()和之间注入do_more(),即:do_something()- > MixIn.method1- > do_more().我明白这可能需要修改class B- 没关系,只是寻找最简单的方法来实现这一点.
这些都是非常微不足道的问题,我实际上解决了它们,但我的解决方案被污染了.
Fisrt one通过使用self._old_method1 = self.method1(); self.method1() = self._new_method1();和写入_new_method1()调用_old_method1().
问题:多个MixIns都将重命名为_old_method1并且它不够优雅.
第二个MixIn通过创建一个虚拟方法call_mixin(self): pass并在调用和定义之间注入它来解决self.call_mixin().再次不优雅,将打破多个MixIns ..
有任何想法吗?
感谢Boldewyn,我找到了第一个优雅的解决方案(我忘了你可以在运行中创建装饰器,而无需修改原始代码):
class MixIn_for_1(object):
def __init__(self):
self.method1 = self.wrap1(self.method1)
super(MixIn_for_1, self).__init__() …Run Code Online (Sandbox Code Playgroud) 试图转换成一个简单的好super(B, self).method()bubble()电话.
做到了,见下文!
在这个例子中是否可以引用B类?
class A(object): pass
class B(A):
def test(self):
test2()
class C(B): pass
import inspect
def test2():
frame = inspect.currentframe().f_back
cls = frame.[?something here?]
# cls here should == B (class)
c = C()
c.test()
Run Code Online (Sandbox Code Playgroud)
基本上,C是孩子B,B是孩子A.然后我们创建c类型C.然后调用c.test()实际调用B.test()(通过继承),调用test2().
test2()可以得到父框架frame; 代码引用方法via frame.f_code;
self通过frame.f_locals['self']; 但type(frame.f_locals['self'])是C(当然),但不B …
在Python中,我可以将它转换为Unicode并执行'(?u)^ [\ w] + $'正则表达式搜索,但PHP似乎不了解国际\ w,或者它是什么?
是否有方法/模式/库来执行类似的操作(在伪代码中):
task_queue.push_back(ObjectType object1, method1);
task_queue.push_back(OtherObjectType object2, method2);
Run Code Online (Sandbox Code Playgroud)
这样我就可以做一些这样的:
for(int i=0; i<task_queue.size(); i++) {
task_queue[i].object -> method();
}
Run Code Online (Sandbox Code Playgroud)
所以它会打电话:
obj1.method1();
obj2.method2();
Run Code Online (Sandbox Code Playgroud)
或者这是一个不可能的梦想?
如果有办法添加一些参数来调用 - 这将是最好的.
Doug T.请看这个优秀的答案!
Dave Van den Eynde的版本也很好用.
我需要运行一个长时间运行的子进程,如果我(出于任何原因)退出父应用程序,则将其终止。
这是代码:
cmd := exec.Command("./long-process")
defer cmd.Process.Kill()
if err != nil {
log.Fatal(err)
}
var fail io.ReadCloser
fail.Close()
Run Code Online (Sandbox Code Playgroud)
这里fail产生明显的
panic: runtime error: invalid memory address or nil pointer dereference
Run Code Online (Sandbox Code Playgroud)
它按预期工作 - 子进程被终止。
但这发生在 goroutine 中:
cmd := exec.Command("./long-process")
defer cmd.Process.Kill()
if err != nil {
log.Fatal(err)
}
go func() {
var fail io.ReadCloser
fail.Close()
}()
Run Code Online (Sandbox Code Playgroud)
恐慌仍然发生,但似乎defer没有被调用,子进程也没有被杀死。
有办法解决这个问题吗?
更新我需要一个跨平台解决方案(至少对于 Linux 和 FreeBSD)
最小的例子:
infinite-loop.sh
#!/bin/bash
while true; do
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
别忘了
chmod +x infinite-loop.sh
Run Code Online (Sandbox Code Playgroud)
test1.go …