我正在尝试在我们的 CI 中调试以下构建错误,其中“A 依赖于 B,它无法构建,因为它依赖于 C。” 我正在构建不直接依赖于 kafkaAvailMonitor.go 的数据服务,这使得此错误难以追踪。换句话说:
数据(我正在构建的)取决于(?),这取决于 kafkaAvailMonitor.go
对于开发人员来说,修复他们只是“去做任何事情”似乎微不足道,但作为发布过程的一部分,我不能这样做 - 我必须找到添加依赖项的人并要求他们修复它。
我知道有一些工具可以可视化依赖树和其他更复杂的构建系统,但这似乎是一个非常基本的问题:有什么方法可以查看完整的依赖树以查看导致构建问题的原因吗?
go build -a -v
../../../msgq/kafkaAvailMonitor.go:8:2: cannot find package
"github.com/Shopify/sarama/tz/breaker" in any of:
/usr/lib/go-1.6/src/github.com/Shopify/sarama/tz/breaker (from $GOROOT)
/home/jenkins/go/src/github.com/Shopify/sarama/tz/breaker (from $GOPATH)
/home/jenkins/vendor-library/src/github.com/Shopify/sarama/tz/breaker
/home/jenkins/go/src/github.com/Shopify/sarama/tz/breaker
/home/jenkins/vendor-library/src/github.com/Shopify/sarama/tz/breaker
Run Code Online (Sandbox Code Playgroud) 更新的问题:
套接字对象实际上是从哪里创建的?我在socketmodule.c的 4188行找到了这个,但看起来它叫做sock_new而不是套接字?
static PyObject *sock_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
Run Code Online (Sandbox Code Playgroud)是否有一些约定来确定导入socketmodule.c之类的模块的位置?换句话说,当我看到"来自_socket import*"时,谁知道导入的是什么(不搜索整个存储库)?
原版的:
sock_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
Run Code Online (Sandbox Code Playgroud)
我试图理解这段代码是如何工作的,具体是如何/在哪里Python实际上使OS函数调用socket():
class _socketobject(object):
__doc__ = _realsocket.__doc__
__slots__ = ["_sock", "__weakref__"] + list(_delegate_methods)
def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, _sock=None):
if _sock is None:
_sock = _realsocket(family, type, proto)
self._sock = _sock
for method in _delegate_methods:
setattr(self, method, getattr(_sock, method))
Run Code Online (Sandbox Code Playgroud)
当我在维基百科上查找BSD套接字时,我看到这个例子是有意义的,因为套接字函数是在types.h下定义的.在上面我看到调用realsocket看起来像一个OS函数调用,但我没有在任何地方定义realsocket(我在Python27/include头文件中根本没有看到任何关于套接字的内容).
/* Server code in C */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我展示了我认为在golang中嵌入(方法得到提升)和组合(不提升方法)之间的区别.
你为什么要在golang中使用组合?
type obj1Inherited struct {
obj2
}
type obj1Composed struct {
someobj obj2
}
type obj2 struct {
}
func (o obj2) printTest() {
fmt.Println("obj2")
}
func main() {
o := obj1Inherited{}
o.printTest() //fine - printTest is promoted
obj1Composed := obj1Composed{}
obj1Composed.selector.printTest() //fine because I'm using the composed obj
obj1Composed.printTest() //not fine - printTest is NOT promoted
Run Code Online (Sandbox Code Playgroud) 我正在尝试在真实设备(Android手机,Android 5.0.1版本)上运行量角器测试.它正在打开浏览器(Chrome),但没有导航到网址并抛出以下错误消息.
super(opt_error);
^
WebDriverError: unknown error: operation is unsupported on Android
(Session info: chrome=49.0.2623.105)
(Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 10.0 x86_64).
Run Code Online (Sandbox Code Playgroud)
这是来自conf js的代码(仅限于需要的代码):
seleniumAddress: 'http://localhost:4723/wd/hub',
capabilities: {
browserName: 'chrome',
platformName: 'android',
deviceName: ' ',
},
framework: 'jasmine2',
specs: ['../functional/AppLogin.js'],
Run Code Online (Sandbox Code Playgroud)
实际规格代码:
describe("Verify Login", function(){
it("Verify Application Login",function(){
browser.get("http://juliemr.github.io/protractor-demo/");
});
});
Run Code Online (Sandbox Code Playgroud)
注意:设备连接到系统正常,Appium节点服务器运行正常.
我需要执行以下操作:
这是我正在使用的代码:
Private Ws As Worksheet
Private budgets() As Variant
Private arrayToWrite() As Variant
Private lastrow As Long
Private lastcol As Long
Private Sub procedure()
Application.ScreenUpdating = False
Set Ws = Sheet19
Ws.Activate
lastrow = Ws.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).row
lastcol = Ws.Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
ReDim budgets(1 To lastrow - 1, 1 To lastcol - 2)
budgets= Ws.Range("C2:AU265")
ReDim arrayToWrite(1 To (lastCol - 2) * (lastRow - 1))
k = …Run Code Online (Sandbox Code Playgroud) 目标:通过在数据库中存储新消息(发布到 Web API)并将其推送到单个监听客户端 (SignalR),促进 2 个用户之间的聊天。
以下是我的担忧:
我想过尝试一下:
也许我的应用程序太简单,不需要更好的设计?
这是我到目前为止所拥有的:
public class chatPush
{
public chatPush(){}
public push(string msg)
{
try{
string jsonMsg = JsonConvert.SerializeObject(msg);
await Clients.User(userId).send(jsonMsg);
}
catch
{
string errorMsg = //error with msg
await Clients.User(userId).send(errorMsg);
}
}
}
async Task<IHttpActionResult> PostMessage(Message msg)
db.Messages.Add(msg);
try
{
await db.SaveChangesAsync();
}
catch
{ …Run Code Online (Sandbox Code Playgroud) 我试图理解这句话的意思:
每个 Java 虚拟机线程都有自己的 pc(程序计数器)寄存器。在任何时候,每个 Java 虚拟机线程都在执行单个方法的代码,即该线程的当前方法(第 2.6 节)。
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.1
我假设 JVM 线程像任何其他线程一样工作 - 每次该线程被安排运行时(比如 Linux 内核),它的“程序计数器”是从它的task_struct 数据结构加载的,所以从 CPU 的角度来看,只有一个程序计数器 - 每次操作系统切换线程时,它都会被操作系统更新。
那是对的吗?我很困惑,因为整个页面似乎一直在强调每个 JVM 都有自己的 PC/堆栈/堆等等。