在以下django模型中:
class MyModel(models.Model):
published = models.BooleanField(default=False)
pub_date = models.DateTimeField('date published')
Run Code Online (Sandbox Code Playgroud)
我希望每次发布的字段更改为True时,都会使用当前日期自动更新pub_date字段.
什么是聪明的方式?
谢谢.
通常,列表推导用于从现有列表中导出新列表.例如:
>>> a = [1, 2, 3, 4, 5]
>>> [i for i in a if i > 2]
[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我们应该用它们来执行其他程序吗?例如:
>>> a = [1, 2, 3, 4, 5]
>>> b = []
>>> [b.append(i) for i in a]
[None, None, None, None, None]
>>> print b
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
或者我应该避免上述内容而是使用以下内容?:
for i in a:
b.append(i)
Run Code Online (Sandbox Code Playgroud) 我有这个代码示例:
import sys
from PyQt4.QtGui import (QApplication, QHBoxLayout, QVBoxLayout, QDialog,
QFrame, QPushButton, QComboBox)
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
moreButton = QPushButton('moreButton')
moreButton.setCheckable(True)
resizeButton = QPushButton('Resize')
combo = QComboBox()
combo.addItems(['item1', 'item2'])
layout1 = QHBoxLayout()
layout1.addWidget(moreButton)
layout1.addWidget(resizeButton)
layout2 = QHBoxLayout()
layout2.addWidget(combo)
self.frame = QFrame()
self.frame.setLayout(layout2)
self.frame.hide()
layout3 = QVBoxLayout()
layout3.addLayout(layout1)
layout3.addWidget(self.frame)
moreButton.toggled.connect(self.frame.setVisible)
moreButton.clicked.connect(self.method)
resizeButton.clicked.connect(self.method)
self.setLayout(layout3)
self.resize(630, 50)
def method(self):
if self.frame.isVisible():
self.resize(630, 150)
else:
self.resize(630, 250)
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
我运行它,当moreButton点击时,ComboBox出现或消失.Dialog的大小也会发生变化.但是,如果我将方法更改为:
def method(self):
if self.frame.isVisible():
self.resize(630, …Run Code Online (Sandbox Code Playgroud) 是否有一种简单的方法可以列出所有系统蒙版单元?
我能想到:
ls -l /etc/systemd/system/* | grep /dev/null
Run Code Online (Sandbox Code Playgroud)
或者(仅限单位名称):
ls -l /etc/systemd/system/* | grep /dev/null | cut -d' ' -f12 | awk -F'/' '{ print $(NF) }'
Run Code Online (Sandbox Code Playgroud)
有更清晰的方法吗?
我想将CTRL>组合映射到gt(转到下一个vim选项卡).
因为>是一个特殊的角色,nmap <c->> gt不起作用.
我怎样才能达到预期的效果?
和其他许多人一样,我想拥有一个包含我的配置文件的git存储库,并将其备份上传到托管站点.我的问题是如何处理本地回购的dotfiles.
假设我在dotfiles repo中有我的zshrc/bashrc.我可以将'source/path /到/ local/repo/zshrc'这一行放到我的〜/ .zshrc文件中,一切都很好.与vimrc相同.
但那些不支持这种命令的dotfiles呢?我是否应该在〜/ .conffile和/ pathtolocalrepo/conffile中具有相同的内容,当我对其中一个进行更改时更新另一个文件?或者有更聪明的方法吗?
常见的做法是什么?
这个本地存储库通常位于何处(在Linux上)?我不认为主文件夹是正确的位置(配置文件应该也可供其他用户使用),但哪个地方最适合它?
提前致谢.
在这个代码示例中:
from PyQt4.QtGui import QDialog, QPushButton, QRadioButton, QHBoxLayout, QApplication, QButtonGroup
import sys
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent=None)
button = QPushButton('Button')
self.radiobutton1 = QRadioButton('1')
self.radiobutton2 = QRadioButton('2')
#self.group = QButtonGroup()
#self.group.addButton(self.radiobutton1)
#self.group.addButton(self.radiobutton2)
#self.group.setExclusive(False)
layout = QHBoxLayout()
layout.addWidget(button)
layout.addWidget(self.radiobutton1)
layout.addWidget(self.radiobutton2)
self.setLayout(layout)
button.clicked.connect(self.my_method)
def my_method(self):
self.radiobutton1.setChecked(False)
self.radiobutton2.setChecked(False)
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
单击按钮时,我希望取消选中所选的radioButton,但这种情况从未发生过.如果我取消注释注释行并运行代码,那么我可以取消选中radioButtons.但另一个问题出现了.因为该组不是独占的,所以我可以设置两个不能发生的radioButtons.
如果一次只能选择一个按钮,我该怎么办才能解开按钮?
通过将 zsh 与 oh-my-zsh 框架一起使用一段时间,我注意到哪个命令在 zsh 中的行为与在 bash 中不同。
我的意思是:
# on zsh
ilias@ilias-pc ~ ? which ls
ls: aliased to ls --color=auto
ilias@ilias-pc ~ ? which which
which: shell built-in command
ilias@ilias-pc ~ ? bash
[ilias@ilias-pc ~]$ which ls
/usr/bin/ls
[ilias@ilias-pc ~]$ which which
/usr/bin/which
[ilias@ilias-pc ~]$
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何“修复”它?
附注。我在 Arch Linux 上重现了这个(不确定它是否重要,但我提到了它)。
我正在使用子进程运行一个进程:
\n\n p = subprocess.Popen(cmd, stdout=subprocess.PIPE)\nRun Code Online (Sandbox Code Playgroud)\n\n我想要做的是循环中一个一个地读取输出字符:
\n\nwhile something:\n char = p.stdout.read(1)\nRun Code Online (Sandbox Code Playgroud)\n\n在 python3 中subprocess.Popen().stdout.read()返回bytes()不str()。我想将它用作 str 所以我必须这样做:
char = char.decode("utf-8")\nRun Code Online (Sandbox Code Playgroud)\n\n它可以很好地处理 ascii 字符。
\n\n但对于非 ascii 字符(例如希腊字母),我得到一个 UnicodeDecodeError。这就是为什么希腊字符由多个字节组成的原因。问题是这样的:
\n\n>>> b\'\\xce\\xb5\'.decode(\'utf-8\')\n\'\xce\xb5\'\n>>> b\'\\xce\'.decode(\'utf-8\') # b\'\\xce\' is what subprocess...read(1) returns - one byte\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nUnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xce in position 0: unexpected end of data\n>>> \nRun Code Online (Sandbox Code Playgroud)\n\n我该如何处理这个问题?\n的输出subprocess.Popen().stdout.read()(作为字符串)的输出可能类似于“lorem …
我想在原子和非原子操作之间使用独立的内存屏障(我认为无论如何它都不重要)。我想我了解存储屏障和加载屏障的含义以及 4 种可能的内存重新排序;LoadLoad, StoreStore, LoadStore, StoreLoad.
但是,我总是发现获取/释放概念令人困惑。因为在阅读文档时,acquire 不仅说到loads,还说到stores,而release 不仅说到stores,还说到loads。另一方面,普通负载障碍仅为您提供负载保证,而普通商店障碍仅为您提供商店保证。
我的问题如下。在 C11/C++11 中,将独立atomic_thread_fence(memory_order_acquire)视为负载屏障(防止LoadLoad重新排序)和atomic_thread_fence(memory_order_release)存储屏障(防止StoreStore重新排序)是否安全?
如果以上是正确的,我可以用什么来防止LoadStore和StoreLoad重新排序?
当然,我对可移植性感兴趣,我不在乎上述在特定平台上产生什么。
首先我要承认,即使在阅读了一些相关资源之后,我对 Linux 上的高内存和低内存的概念仍然没有完全清楚。然而,根据我对 64 位 Linux 的了解,无论如何都没有高内存(如果我错了,请纠正我)。
我试图了解 kmap 和地址空间如何在defconfig为arm64配置的Linux内核版本5.8.1上工作。
我添加了以下系统调用:
SYSCALL_DEFINE1(mycall, unsigned long __user, user_addr)
{
struct page *pages[1];
int *p1, *p2;
p1 = (int *) user_addr;
*p1 = 1; /* this works */
pr_info("kernel: first: 0x%lx", (long unsigned) p1);
if (get_user_pages(user_addr, 1, FOLL_WRITE, pages, NULL) != 1)
return -1;
p2 = kmap(pages[0]);
*p2 = 2; /* this also works */
pr_info("kernel: second: 0x%lx", (long unsigned) p2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我从用户空间分配整个内存页面(在页面边界上),并将其作为该系统调用的参数传递给内核。通过从内核内部取消引用任一指针来修改该内存效果非常好。但是,这两个指针具有不同的值:
[ 4.493480] kernel: first: 0x4ff3000
[ …Run Code Online (Sandbox Code Playgroud) memory-management linux-kernel virtual-address-space 32bit-64bit arm64
假设我想写一个游戏(用C语言),询问用户在游戏结束后是否想再次玩游戏.
我看到两种明显的方式来写这个.
第一:
int main(void)
{
/* variable declarations and initializations */
do { /* optionally multiple games */
/* game code here */
........
/* prompt user wheter he wants to play again */
bool playagain = playagain();
} while(playagain);
.....
}
Run Code Online (Sandbox Code Playgroud)
第二个:
int main(void)
{
/* variable declarations and initializations */
game_start: /* optionally multiple games */
/* game code here */
........
/* prompt user wheter he wants to play again */
bool playagain = playagain();
if …Run Code Online (Sandbox Code Playgroud) python ×5
linux ×3
c ×2
pyqt4 ×2
python-3.x ×2
32bit-64bit ×1
arm64 ×1
bash ×1
byte ×1
c++ ×1
datetime ×1
decode ×1
django ×1
dotfiles ×1
git ×1
goto ×1
linux-kernel ×1
memory-model ×1
pyqt ×1
qt ×1
radio-button ×1
stdatomic ×1
subprocess ×1
systemd ×1
vim ×1
zsh ×1