我正在运行OS X 10.8.2,我相信默认情况下这是Python 2.7.3.我之前从python.org安装了Python 2.7.2并且想要废弃它以基本上将我的系统的默认python重置为预先安装的.原因是每当我启动任何*.py文件时IDLE都拒绝打开(即使指定我安装的Python2.7.2 IDLE)并且我想让事情变得更新.
虽然我从来没有使用它,但我确实安装了MacPorts并且我看到它在我的Python路径上做了很多东西 - 特别是将我的Python 2.7路径改为"/Library/Frameworks/Python.framework/Versions/2.7/bin :$ {PATH}",所以我不知道这是否有所作为.
有人可以在这推荐一个行动方案吗?如果需要,我很乐意提供更多信息.
我正在开发一个由3个服务器可执行文件和一个共享代码库组成的项目.我希望它是跨平台的,所以我正在使用CMake(因为Xcode很痛苦)来处理构建过程.我在设置CMakeLists时遇到问题,以便在构建可执行文件时可以从同一级别的目录中包含库.
这是目录结构(和CMake文件):
tethealla2.0/
CMakeLists.txt
libtethealla/
CMakeLists.txt
encryption/
utils/
patch_server/
CMakeLists.txt
login_server/
CMakeLists.txt
ship_server/
CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
我的顶级CMake(tethealla2.0/CMakeLists.txt,仅包含应编译的子项目):
project(tethealla CXX)
cmake_minimum_required(VERSION 2.6)
add_subdirectory(libtethealla)
add_subdirectory(patch_server)
Run Code Online (Sandbox Code Playgroud)
tethealla2.0/libtethealla/CMakeLists.txt,它生成一个静态库:
project(Libtethealla C)
cmake_minimum_required(VERSION 2.6)
include_directories(encryption)
set(ENC_DR encryption/)
set(ENCRYPTION_SOURCES
${ENC_DR}/psobb-crypt.c
${ENC_DR}/psogc-crypt.c
${ENC_DR}/psobb-crypt.c
${ENC_DR}/encryption.c
)
add_library(tethealla STATIC ${ENCRYPTION_SOURCES})
Run Code Online (Sandbox Code Playgroud)
到目前为止tethealla2.0/patch_server/CMakeLists.txt:
project(patch_server CXX)
cmake_minimum_required(VERSION 2.6)
add_executable(server main.cc)
target_link_libraries(server tethealla)
Run Code Online (Sandbox Code Playgroud)
因此,如果我从顶层构建它更有意义,因为tethealla2.0/CMakeLists.txt将从每个子目录继承目标,而patch_server中的目标将可以访问tethealla库.但是我想要的是能够从这些子目录中构建生成Xcode项目,以便我可以单独处理/重新编译它们.为此,我需要能够访问libtethealla/build目录(CMake输出)以从patch_server访问libtethealla.a库.这可能吗?
另外注意,即使在顶级目录的构建中,我在patch_server中的源也不能包含"encryption.h",这是加密库的头文件.这看起来很好.对此的任何想法也非常感谢!
我有一大堆工作的C++代码,我想编写Python绑定.我正在尝试使用Boost.Python,因为它似乎是让这个工作最简单的方法,但它不合作.这是我正在尝试构建的扩展模块的代码的一部分:
BOOST_PYTHON_MODULE(libpcap_ext) {
using namespace boost::python;
class_<PacketEngine>("PacketEngine")
.def("getAvailableDevices", &PacketEngine_getAvailableDevices);
}
Run Code Online (Sandbox Code Playgroud)
Bjam似乎很痛苦并拒绝识别我的Pythonpath或允许我链接libpcap,所以我正在使用CMake.这是我的CMakeLists文件,可以导入和构建一切就好(按预期输出libpcap.so):
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE "DEBUG")
#SET(CMAKE_BUILD_TYPE "RELEASE")
#SET(CMAKE_BUILD_TYPE "RELWITHDEBINFO")
#SET(CMAKE_BUILD_TYPE "MINSIZEREL")
ENDIF()
FIND_PACKAGE(Boost 1.55.0)
find_package(PythonLibs REQUIRED)
IF(Boost_FOUND)
INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}" "${PYTHON_INCLUDE_DIRS}")
SET(Boost_USE_STATIC_LIBS OFF)
SET(Boost_USE_MULTITHREADED ON)
SET(Boost_USE_STATIC_RUNTIME OFF)
FIND_PACKAGE(Boost 1.55.0 COMPONENTS python)
ADD_LIBRARY(pcap_ext MODULE PacketWarrior/pcap_ext.cc PacketWarrior/PacketEngine.h PacketWarrior/PacketEngine.cc PacketWarrior/Packet.h PacketWarrior/Packet.cc)
TARGET_LINK_LIBRARIES(pcap_ext pcap)
TARGET_LINK_LIBRARIES(pcap_ext ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
ELSEIF(NOT Boost_FOUND)
MESSAGE(FATAL_ERROR "Unable to find correct Boost version. Did you set BOOST_ROOT?")
ENDIF()
ADD_DEFINITIONS("-Wall")
Run Code Online (Sandbox Code Playgroud)
我的pcap.py文件试图利用该模块:
import libpcap_ext
engine = libpcap_ext.PacketEngine()
print engine.getAvailableDevices()
Run Code Online (Sandbox Code Playgroud)
但每当我尝试运行该模块时,我都会收到以下错误:
Traceback (most recent …Run Code Online (Sandbox Code Playgroud) 所以我正在研究一个Django项目,并试图弄清楚如何让Javascript能够从我的静态目录中呈现图像.我已经修改了我的settings.py来从myproject/static加载静态文件(图像,js等),从myproject/templates加载我的模板.现在位于每个模板的顶部,我有以下几行:
{% load staticfiles %}
Run Code Online (Sandbox Code Playgroud)
这允许我在模板中加载这样的图像:
<img src="{% static "images/someImage.jpg" %}" width="65" height="36" alt="SomeImage"/>
Run Code Online (Sandbox Code Playgroud)
现在,这很好用 - 图像加载并在页面上按预期显示.但是我正在尝试这样做(好吧,无论如何,我的队友是):
<p><script src="{% static "js/getHeader.js" %}" type="text/javascript"></script></p>
Run Code Online (Sandbox Code Playgroud)
该行与上面两行在同一个文件中.getHeader.js文件:
var time = new Date();
var month = time.getMonth();
var day = time.getDate();
var year = time.getFullYear();
if (month == 1 & day == 23 & year == 2013) {
document.write('<img src="{% static "images/anotherImage.png" %}" width="680" height="210" />');
} else {
document.write('<img src="{% static "images/yetAnotherImage.png" %}" width="680" height="210"/>');
}
Run Code Online (Sandbox Code Playgroud)
只是为了澄清,这个想法是在某个预定的日子打印一个不同的标题.我试图将任何图像/ html与渲染模板的Python代码分开,原因很明显,所以我不想只是将图像名称作为参数传递.代码本身运行正常,但是当加载页面时,会出现alt名称,但图像本身不会; 只是其中一个通用的空"图像未找到"框.
值得一提的是,如果我将这个Javascript内联到实际的HTML页面中,那么图像渲染就可以了.这也是在开发环境中,而不是生产 - 我将在后面处理这个问题.
是什么赋予了?我认为既然该行应该写入包含上述'load …
我正在研究一种方法来集中我的URL连接,以便从服务器发送和接收JSON数据.它适用于POST,但不适用于GET.我正在使用Google App Engine服务器,并且在我的计算机上它将处理POST请求并返回正确的结果(并正确记录),但是当我使用GET方法尝试请求时出现以下错误:
Error Domain=kCFErrorDomainCFNetwork Code=303 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 303.)" UserInfo=0xd57e400 {NSErrorFailingURLKey=http://localhost:8080/api/login, NSErrorFailingURLStringKey=http://localhost:8080/api/login}
Run Code Online (Sandbox Code Playgroud)
此外,GAE dev服务器显示"管道损坏"错误,表示客户端在服务器完成发送所有数据之前关闭了连接.
这是方法:
/* Connects to a given URL and sends JSON data via HTTP request and returns the result of the request as a dict */
- (id) sendRequestToModule:(NSString*) module ofType:(NSString*) type function:(NSString*) func params:(NSDictionary*) params {
NSString *str_params = [NSDictionary dictionaryWithObjectsAndKeys:func, @"function", params, @"params", nil];
NSString *str_url = [NSString stringWithFormat:@"%@%@", lds_url, module];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:str_url]];
NSData *data = …Run Code Online (Sandbox Code Playgroud) (对不起,很长的问题!)我最近一直在尝试使用Go而不是C++作为一个游戏服务器模拟器,我正在做一个侧面项目,并质疑我是否在合理的Go术语中实现它.正如您所料,服务器通过发送符合特定协议规范的原始数据包(TCP)与一个或多个游戏客户端进行通信.相关部分是这样的:
接收标题 - >解密它 - > recv字节,直到达到标题长度 - >解密剩余的数据包 - >调度到处理程序 - >解码数据包 - >根据需要处理 - >发送响应
协议是按照小端顺序的字节定义的,所以在我的C++实现中,包头看起来像这样(我知道,它只适用于LE机器):
struct pkt_header {
uint16_t length;
uint16_t type;
uint32_t flags;
};
Run Code Online (Sandbox Code Playgroud)
在recv()和解密此标头后,我将提取字段:
// client->recv_buffer is of type u_char[1024]
header = (pkt_header*) client->recv_buffer;
if (client->recv_size < header->length) {
// Recv some more
}
// Decrypt and so on
Run Code Online (Sandbox Code Playgroud)
在处理程序本身中,我可以将上面的头结构嵌套在其他数据包结构定义中,并将它们转换到byte []缓冲区数组,以便直接访问字段.从我所读到的,结构对齐(不出所料)很难/不可能,并且在Go中非常气馁.
不知道还能做什么,我写了这个函数来从任意的Struct - > []字节:
// Serializes the fields of a struct to an array of bytes in the order in …Run Code Online (Sandbox Code Playgroud) boost-build ×1
boost-python ×1
c++ ×1
cmake ×1
django ×1
go ×1
json ×1
objective-c ×1
python ×1
python-2.7 ×1