小编kos*_*tix的帖子

处理嵌入式Tcl运行时执行的退出命令

我有一个小的shell应用程序,它嵌入了Tcl来执行一些Tcl代码.使用Tcl_CreateInterp初始化Tcl解释器.一切都很简单:

  1. 用户类型Tcl命令
  2. 该命令将传递给Tcl_Eval进行评估
  3. 重复

但是如果用户键入'exit',这是一个有效的Tcl命令,整个事情--Tcl解释器和我的shell应用程序 - 会自动退出.

问:有什么方法可以捕获来自Tcl解释器的退出信号.我真的不想检查每个用户命令.我尝试了Tcl_CreateExitHandler,但它没有用.

非常感谢.

interpreter tcl

5
推荐指数
2
解决办法
888
查看次数

在Go中调用kernel32的ReadProcessMemory

我正在尝试使用Go语言操作Windows上的进程,我开始通过使用来阅读其他进程的内存ReadProcessMemory.

但是,对于大多数地址,我都会收到Error: Only part of a ReadProcessMemory or WriteProcessMemory request was completed.错误.也许我的论据清单是错误的,但我找不到原因.

谁能指出我在这里做错了什么?

package main

import (
  "fmt"
)

import (
  windows "golang.org/x/sys/windows"
)

func main() {
  handle, _ := windows.OpenProcess(0x0010, false, 6100) // 0x0010 PROCESS_VM_READ, PID 6100
  procReadProcessMemory := windows.MustLoadDLL("kernel32.dll").MustFindProc("ReadProcessMemory")

  var data uint   = 0
  var length uint = 0

  for i := 0; i < 0xffffffff; i += 2 {
    fmt.Printf("0x%x\n", i)

    // BOOL ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead) …
Run Code Online (Sandbox Code Playgroud)

interop unsafe ffi go kernel32

5
推荐指数
1
解决办法
2511
查看次数

无法在 Eclipse 中安装 Subclipse 插件

我无法从“安装新软件”和 Eclipse Marketplace 中安装 Subclipse。

当我尝试安装 Subclipse 4.2.3 时,我得到了以下信息: 在此输入图像描述


对于第二个选项“更新我的安装以与正在安装的项目兼容”: 在此输入图像描述

对于第三个选项“显示原始错误并构建我自己的解决方案”,我收到以下错误:

    Cannot complete the install because of a conflicting dependency.
  Software being installed: Subclipse 4.2.3.201707071932 (org.tigris.subversion.subclipse.feature.group 4.2.3.201707071932)
  Software currently installed: Subversion Client Adapter (Required) 1.10.3 (org.tigris.subversion.clientadapter.feature.feature.group 1.10.3)
  Only one of the following can be installed at once: 
    Subversion Client Adapter 1.10.3 (org.tigris.subversion.clientadapter 1.10.3)
    Subversion Client Adapter 1.9.4.2 (org.tigris.subversion.clientadapter 1.9.4.2)
  Cannot satisfy dependency:
    From: Subversion Client Adapter (Required) 1.10.3 (org.tigris.subversion.clientadapter.feature.feature.group 1.10.3)
    To: org.tigris.subversion.clientadapter [1.10.3]
  Cannot satisfy dependency:
    From: Subclipse 4.2.3.201707071932 (org.tigris.subversion.subclipse.feature.group …
Run Code Online (Sandbox Code Playgroud)

eclipse subclipse eclipse-plugin

5
推荐指数
1
解决办法
6233
查看次数

Go中的网络编程

我正在学习Go for network programming.问题是Go文档太简单了.例如,我不知道何时使用net.DialTCP,何时使用TCPListener对象AcceptTCP,有什么区别?客户端如何与其他客户端通信?不是客户端到服务器.

go

4
推荐指数
1
解决办法
588
查看次数

有没有更好的方法来处理可变大小的片段?

请看下面的代码

names := make([]string, 0, 100)
names = append(names, "Jack")
names = append(names, "Jacob")
// adding many names in here
Run Code Online (Sandbox Code Playgroud)

鉴于这样的情况:我会从其他地方得到这些名字,在此之前我不知道它的大小.所以我需要一个包含这些名称的动态数组.上面的代码是我提出的方式.我很想知道是否有更优雅的方式来做到这一点.

如果我这样初始化

names := make([]string, 100, 200)
// then I use append in here
// I would get first 100 elements as empty, the append start at index 101.
Run Code Online (Sandbox Code Playgroud)

我想这会浪费在记忆上.我是静态编程语言的新手,所以如果这篇文章中有任何错误的概念,请指出.

arrays go slice

4
推荐指数
1
解决办法
120
查看次数

如何监听ICMP数据包?

我正在开发一个两部分应用程序,其中一方发送ICMP数据包,另一方侦听ICMP数据包并在收到它们时采取行动.问题是,我不确定如何让监听器无限期地保持活着(只是希望它坐在循环中,只在收到数据包时才采取行动).

目前,我能够使用go-fastping库,如果是双向通信,我可以发送和接收数据包(我发送它,它们响应,我处理远程响应).问题是如何使这种不对称?

我对听众的尝试是:

for {
    conn, err := icmp.ListenPacket("ip4:icmp", "192.168.1.8")
    if err != nil {
        fmt.Println(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我的逻辑是我想要一个while true循环来保持监听器活着(在这种情况下就是这样for {),然后我用ICMP监听新的数据包,ListenPacket但我似乎没有使用这种方法得到任何东西.

任何想法或帮助将不胜感激.提前感谢您的时间和帮助.

sockets network-programming listener go icmp

4
推荐指数
1
解决办法
1342
查看次数

如何从URL获取证书?

我正在尝试找到一个类似于Python的函数ssl.get_server_certificate(),它接受一个主机名 - 端口对并返回一个PEM编码的证书,但我没有运气.

我已经做了相当多的挖掘,但我发现的最接近的问题(在golang中获取远程ssl证书)没有帮助,也没有阅读包的文档crypto/tls.我是Go的新手,所以我可能还没有理解文档中的内容

ssl ssl-certificate go

4
推荐指数
1
解决办法
445
查看次数

错误:样式父级的资源类型'attr'无效

将我的Android项目升级到Studio 3.0.1和Gradle 3.0之后,我在构建期间遇到了一个问题:

MAFLogonUI-3.15.6.aar\\46f903e9d58266c453b893b9caa03deb\\res\\values\\values.xml","position":{"startLine":456,"startColumn":4,"startOffset":32855,"endLine":459,"endColumn":12,"endOffset":33105}}],"original":"","tool":"AAPT"}
Run Code Online (Sandbox Code Playgroud)

我认为这个问题是由于Android帮助引用的问题 所在,他们声称在引用"android"时,@符号被忽略了.并且生成的values.xml文件包含以下内容:

<style name="SapUexTextAppearance.SlidingTabActive" parent="@android:attr/textAppearanceMedium"> ...
Run Code Online (Sandbox Code Playgroud)

但是因为这来自我已经包含在我的构建中的库,所以如果我对此有任何控制权,我就不知道.有没有办法阻止生成的res/values/value.xml中的@符号?还是我需要升级我的lib?

与此同时,我已禁用AAPT2 ......

android android-gradle-plugin

4
推荐指数
2
解决办法
3284
查看次数

如何在Go中重复使用单个Postgres DB连接进行行插入?

我正在尝试使用Go将一行数据插入到Postgres表中,用于从rabbitmq接收的每个新消息,使用单个连接到DB,该数据库在下面的代码的init函数中打开.

代码不会打开一个连接,而是打开497并最大化,导致行插入停止...

我已经使用这些问题的信息试图打开和关闭在Go应用程序的数据库连接,并在函数内部开放式数据库连接该说我应该打开一个连接,并使用全球数据库,以便主要功能的SQL语句传递到在打开连接init函数.

我以为我已经这样做了,但是为每个新行打开了一个新连接,所以一旦达到postgres连接限制,代码就会停止工作......

我是Go的新手,并且编程经验有限,过去两天我一直在努力理解/解决这个问题,我真的可以帮助理解我在哪里出错...

var db *sql.DB

func init() {
    var err error
    db, err = sql.Open ( "postgres", "postgres://postgres:postgres@SERVER/PORT/DB")
    if err != nil {
        log.Fatal("Invalid DB config:", err)
    }
    if err = db.Ping(); err != nil {
        log.Fatal("DB unreachable:", err)
    }
}

func main() {

// RABBITMQ CONNECTION CODE IS HERE

// EACH MESSAGE RECEIVED IS SPLIT TO LEGEND, STATUS, TIMESTAMP VARIABLES

// VARIABLES ARE PASSED TO sqlSatement    

        sqlStatement := `
        INSERT INTO heartbeat …
Run Code Online (Sandbox Code Playgroud)

go

4
推荐指数
1
解决办法
2129
查看次数

Pycharm 更改 github 凭据

我想知道是否有人可以帮助我解决这个问题:

我正在学习使用 github,到目前为止仅从 pycharm 开始。最近,我用新的用户名、电子邮件和地址更新了我的 github 页面。我在“设置 - > 版本控制 - > Github”中更改了 pycharm 中的凭据并运行测试我确实收到消息成功连接。然而,每当我尝试提交我的项目时,我都会收到一条失败的连接消息,因为它试图到达旧地址。这是我得到的消息:

Push failed:
ProjectName: failed with error: Authentication failed for 'Old_Repositoriy_url' 
Run Code Online (Sandbox Code Playgroud)

似乎其他用户也遇到了类似的错误,但是,我不知道如何从终端更改我的 git 凭据...

我在 ubuntu 16.04 中使用 pycharm 2017.2

谢谢你的任何建议

pycharm

4
推荐指数
1
解决办法
6461
查看次数