我必须使用Git并且想要撤消一个在提示之前提交的提交.在Hg中它是hg backout
.Git中的模拟命令是什么?
(在发布之前我没有看到,也没看到模拟命令.)
我做了以下操作并丢失了Docker容器中所有已更改的数据.
docker build -t <name:tag> .
docker run *-p 8080:80* --name <container_name> <name:tag>
docker exec
(导入和处理一些文件,启动服务器来托管它们)然后我想在不同的端口上运行它.docker stop
&docker run
不起作用.相反,我做到了
docker stop
docker rm <container_name>
docker run
(与以前相同的参数)重新启动后,我看到1-3中容器中发生的更改已经消失,并且必须重新运行导入.
下次我该怎么做?
我需要关于程序架构的好例子和最佳实践.
我正在尝试为适用于Google.Maps的应用构建一个JS用户界面.在第一稿中,用户应该能够以类似于GM的方式在地图上绘制几何形状然后通过AJAX发送形状并显示响应.
问题是代码变得复杂只是用多边形编辑.
在Joel的"Duct-tape Programmer"的启发下,我尝试绘制一个直截了当的代码,它可以动作并切换事件处理程序,以避免使用大的if-else树."新建多边形"按钮为map.onclick创建一个观察者,更改其他按钮的事件处理程序或隐藏它们,并隐藏自身等.
这种方法的缺点是数据处理代码与接口混合在一起.创建div容器以在新多边形上显示数据的代码位于处理w/GM或w /形状数据的代码旁边.如果我想修改UI,我需要处理整个应用程序.
我可以稍后再查看它并将这个生成UI的代码移到别处,但后来我的主程序员.相反,他坚持使用"消息传递"方法:一个简单的事件系统,其中对象订阅事件并触发它们.接口代码可以与数据处理和与GM交谈完全隔离,但现在每个监听器都必须仔细检查此消息是否适用于它.
例如,单击地图上的多边形必须突出显示它并开始编辑.但是如果正在绘制另一个多边形而不是.那么,有些人在和你说话吗? - 代码随处可见.
我会很感激UI架构方法的好例子.
我正在构建一个与Web客户端(Django)和远程API(可能是一个独立的守护进程)一起工作的系统.我发现将它们的工作与JavaScript中的某些事件框架协调起来更容易.不幸的是,Django信号是同步的,这将使对客户端的回复非常慢.此外,我可能希望能够将守护程序或其部分迁移到单独的计算机,但仍以相同的方式工作(不是RPC,而只是触发事件或发送消息).(这听起来像是Erlang的方法.)
是否有一个框架可以使用经过验证的可靠方法在流程之间进行通信(例如,RabbitMQ),并且需要最少的样板?
至于Twisted,AndréParamés建议,我更喜欢更简单的代码.这在扭曲中是否可行?
from events_framework import subscribe, trigger
from django.http import Client
http_client = Client() # just a sample
@subscribe('data_received'):
def reply(data):
http_client.post('http://www.example.com', data)
trigger('data_resent', data)
Run Code Online (Sandbox Code Playgroud)
这里有更多细节.有一个Django视图文件,它使用一些模型并通知其他事件.并且有一个独立的守护程序脚本可以无限运行并对事件做出反应.
这只是伪代码,我的意思是它应该是多么容易.
# django_project/views.py (a Django views file)
from events_framework import publish, subscribe
from annoying import
@subscribe('settings_updated')
def _on_settings_update(event): # listens to settings_updated event and saves the data
Settings.object.get(user__id=event.user_id).update(event.new_settings)
@render_to('form.html')
def show_form(request): # triggers 'form_shown' event
publish('form_shown', {'user_id': request.user.id, 'form_data': request.GET})
return {...}
# script.py (a standalone script)
from events_framework import publish, …
Run Code Online (Sandbox Code Playgroud) 我做了初始安装步骤并创建了初始修订版,但是当我在django shell中保存模型时,没有创建新版本:
In [1]: s = Shop.objects.all()[0]
In [2]: import reversion
In [3]: s.name = 'a'
In [4]: s.save()
In [5]: s.name = 'b'
In [6]: s.save()
In [7]: reversion.get_for_object(s)
Out[7]: [<Version: <1> "X">]
Run Code Online (Sandbox Code Playgroud)
这是初始修订版.
从视图更新模型时,会成功创建修订.
我错过了什么?
models.py文件是:
...
class Shop(Model):
...
import reversion
reversion.register(Shop)
<EOF>
Run Code Online (Sandbox Code Playgroud)
我在post_save
接收器中看到了一种反转方法,虽然在我调试它时没有调用它.
我有Django v1.4.1,reversion v1.6.2.
我需要建立一个评论机制,用户突出显示一段文字,点击"评论这个",然后做一些事情.Javascript代码不仅要知道所选文本(这是微不足道的),还要知道anchorOffset,以确切地知道选择文本的字符.
我有Ubuntu 10.04,最近升级到11.10.其他SSH密钥停止工作.我有钥匙bitbucket
和github
,这是我的网站.如何告诉SSH使用Bitbucket的一个特定密钥和GitHub使用另一个密钥?
所以,我有一个配置:
Host bitbucket
HostName 207.223.240.182
User hg
IdentityFile ~/.ssh/bitbucket
Run Code Online (Sandbox Code Playgroud)
当我打电话时ssh bitbucket
,ssh使用密钥成功登录并被踢出.但是当我尝试时hg pull
,我看到"远程hg没有回应".并且没有询问密码.
可以做些什么?
在Python中,我有一个装饰器,如果函数在调用它的本地定义,则必须跳过任何实际工作.我做了一个简单的测试脚本:
def fn1():
# @my_decorator will be here
def fn2():
pass
print(fn2)
return fn2
x = fn1()
print(x)
print(x.__module__)
Run Code Online (Sandbox Code Playgroud)
它打印这个:
<function fn1.<locals>.fn2 at 0x7fd61bdf3ae8>
<function fn1.<locals>.fn2 at 0x7fd61bdf3ae8>
__main__
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,Python看到函数是在局部空间中定义的(<locals>
在打印文本中),但我看不出如何找到那些数据.我走过inspect
模块,看不到任何类似的东西.
我不能依赖函数是否在全局变量中.
我该用什么?
此代码创建了一个竞争条件:
import threading
ITERS = 100000
x = [0]
def worker():
for _ in range(ITERS):
x[0] += 1 # this line creates a race condition
# because it takes a value, increments and then writes
# some inrcements can be done together, and lost
def main():
x[0] = 0 # you may use `global x` instead of this list trick too
t1 = threading.Thread(target=worker)
t2 = threading.Thread(target=worker)
t1.start()
t2.start()
t1.join()
t2.join()
for i in range(5):
main()
print(f'iteration {i}. expected x …
Run Code Online (Sandbox Code Playgroud) python ×3
git ×2
javascript ×2
mercurial ×2
python-3.x ×2
backout ×1
bitbucket ×1
common-lisp ×1
django ×1
docker ×1
docker-image ×1
dom ×1
events ×1
gil ×1
github ×1
lisp ×1
sbcl ×1
ssh ×1
twisted ×1