我正在尝试使用 docker-compose 启动一个 kafka 服务,它应该可以在 docker 内部和外部访问。因此,应该在内部和外部设置合适的广告商:
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9094:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://127.0.0.1:9094
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://127.0.0.1:9094
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试从集群外部连接时,我没有得到 127.0.0.1 作为节点的名称,而是内部主机名:
$ kafkacat -L -b 127.0.0.1:9094
Metadata for all topics (from broker -1: 127.0.0.1:9092/bootstrap):
1 brokers:
broker 1001 at 91588ea968d4:9092
28 topics:
...
Run Code Online (Sandbox Code Playgroud)
KAFKA_ADVERTISED_LISTENERS 和 KAFKA_LISTENERS 的目的不是处理这种情况吗?我尝试设置 KAFKA_ADVERTISED_HOST_NAME 但它被忽略了(一份文档说它已弃用,另一份说它仍然处于活动状态),但这似乎不是答案,因为我想要两个不同的广告主机名用于两个不同的网络。
我想老问题仍然存在:如何使 kafka 在 docker-compose 内外工作?
如何在smalltalk/squeak/pharo中获取给定协议中所有(类)方法的集合?
我正在尝试收集一组方法返回的值.我不想将方法存储在实例或类变量中.所以我虽然可以将它们添加到协议中并以这种方式"标记"它们.
谢谢.
对我而言,理解J的最好方法是模仿解释器。由于该语言结构紧凑且规则很少,因此很容易...除了等级如何影响函数求值外。
我希望能够逐步看到一个表达式并知道J在做什么以获取结果。
是否有文档,或者有人可以给我一个算法,以便我自己计算自己a f " n m b的评估方式?
提前致谢。
我正在开发一个plone4网站,每个用户都有一个可排序的项目库存.ATFolder的folder_content视图非常适合这种情况.唯一的问题是,而不是像这样的URL:
/site/user/inventory
Run Code Online (Sandbox Code Playgroud)
或这个
/site/inventory/user
Run Code Online (Sandbox Code Playgroud)
网址应该是:
/site/inventory
Run Code Online (Sandbox Code Playgroud)
我想过几个解决方案,但每个人都有自己的疑虑.
你会怎么做?
谢谢.
我已经用几个ATCTContent创建了一个附加组件,所有这些都是用paster addcontent contenttype.除了一个,所有GearContent工作都按预期工作.只有当我创建GearContent的实例时,他们才会收到诸如gear,gear-1等名称,忽略标题.在默认视图中,H1标签始终为"Gear",但标题如下所示.
尝试更改文件夹内容视图上的ID和标题不会执行任何操作.没有错误消息.
目录也是如此.GearContent的Title元数据是所有实例的"Gear".它适用于所有其他类型.
GearContent只能在GearFolder中添加.其他内容有类似的限制,工作正常.我正在使用plone 4.0.4.
我可以做些什么来使新实例获得正确的标题?
在content/gearcontent.py下面:
"""Definition of the Gear Content content type
"""
from zope.interface import implements
from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
# -*- Message Factory Imported Here -*-
from levity7.gears import gearsMessageFactory as _
from levity7.gears.interfaces import IGearContent
from levity7.gears.config import PROJECTNAME
GearContentSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((
# -*- Your Archetypes field definitions here ... -*-
atapi.StringField(
'title',
storage=atapi.AnnotationStorage(),
widget=atapi.StringWidget(
label=_(u"Title"),
description=_(u"Name …Run Code Online (Sandbox Code Playgroud) 我正在学习Haskell,我发现它非常优雅和强大.但是我仍然无法使用OOP成像如何处理看起来如此简单的事情.以zope3/grok /金字塔网络平台为例.他们有一个基于匹配内容和视图来呈现页面的美妙理念.
在zope中,您有一个异类内容类型的树.当您请求URL时,您可以使用其到traverse该树的路径并获取context对象.路径的最后一部分是"视图名称".您可以View根据对象的类型和视图名称获得.它View是从特定上下文类型Request到Response对象的函数.
因此,如果您访问网址http://example.com/aFolder/aFaq/aQuestion/index.html,zope将从树的根目录开始.它会搜索一个名为节点aFolder,然后这个对象另一个名为内aFaq,和里面的一个命名aQuestion.因此该traverse函数可以返回任何类型的对象.
这里没问题.因为我只遍历树Traversable,所以我可以在Haskell中创建一个新的包装器类型或类,所以我会有一个Tree Traversable和一个函数traverse :: Tree Traversable -> [string] -> Traversable.
但后来出现问题,index.html是视图的名称.在一个简化的说明中[*] Zope寻找对(上下文的类型,viewname)并返回一个粗略的类型的函数{type of the context} -> Request -> Response.我可以编写一个函数render :: Traversable -> String -> Response来检查遍历的类型,但是,只要有人添加新的内容类型或新视图,就必须更新该函数.视图函数(或子函数)需要知道要使用其数据的上下文的类型.
那么,经验丰富的哈斯克勒如何攻击这类问题呢?我曾经想过GADT,但我不确定这是否会有所帮助,或者是否有更简单的选择.
谢谢!
编辑:伪代码澄清
def traverse(node, path):
# returns the context and the view name
itemname = path[0]
if …Run Code Online (Sandbox Code Playgroud) 我为Plone 4.2开发了一个附加组件,我正在编写测试.当我执行
# bin/test -s my.stream
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:KeyError:u'profile-my.common:default' 为什么我收到错误?
这里有一些可能有用的信息.
追溯:
Traceback (most recent call last):
File "/blah/user/blah/00-buildout/eggs/zope.testing-3.9.7-py2.6.egg/zope/testing /testrunner/runner.py", line 366, in run_layer
setup_layer(options, layer, setup_layers)
File "/blah/user/blah/00-buildout/eggs/zope.testing-3.9.7-py2.6.egg/zope/testing/testrunner/runner.py", line 628, in setup_layer
setup_layer(options, base, setup_layers)
File "/blah/user/blah/00-buildout/eggs/zope.testing-3.9.7-py2.6.egg/zope/testing/testrunner/runner.py", line 633, in setup_layer
layer.setUp()
File "/blah/user/blah/00-buildout/eggs/plone.app.testing-4.2-py2.6.egg/plone/app/testing/helpers.py", line 343, in setUp
self.setUpPloneSite(portal)
File "/blah/user/blah/venv26/buildout/src/my.stream/my/stream/testing.py", line 20, in setUpPloneSite
applyProfile(portal, 'my.stream:default')
File "/blah/user/blah/00-buildout/eggs/plone.app.testing-4.2-py2.6.egg/plone/app/testing/helpers.py", line 113, in applyProfile
setupTool.runAllImportStepsFromProfile(profileId)
File "/blah/user/blah/00-buildout/eggs/Products.GenericSetup-1.7.1-py2.6.egg/Products/GenericSetup/tool.py", line 353, in runAllImportStepsFromProfile
ignore_dependencies=ignore_dependencies)
- __traceback_info__: profile-my.stream:default
File "/blah/user/blah/00-buildout/eggs/Products.GenericSetup-1.7.1-py2.6.egg/Products/GenericSetup/tool.py", line 1095, in _runImportStepsFromContext
chain …Run Code Online (Sandbox Code Playgroud) 如何自定义plone中的目录中显示的级别数?
Plone默认在TOC中显示三个级别(从H2到H4).如何自定义显示三个以上?我找不到任何地方生成TOC的代码
使用 django-rest-framework,如何将一对多关系的许多元素序列化为这些项目的一个字段中的简单值列表?例如在
class Album(models.Model):
album_name = models.CharField(max_length=100)
artist = models.CharField(max_length=100)
class Track(models.Model):
album = models.ForeignKey(Album, related_name='tracks')
order = models.IntegerField()
title = models.CharField(max_length=100)
duration = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
我想得到
{
'album_name': 'Things We Lost In The Fire',
'artist': 'Low',
'tracks': [15, 12, 17, 23]
}
Run Code Online (Sandbox Code Playgroud)