小编Nom*_*ien的帖子

如何以常规格式打印日期?

这是我的代码:

import datetime
today = datetime.date.today()
print today
Run Code Online (Sandbox Code Playgroud)

这打印:2008-11-22这正是我想要的但是......我有一个列表我正在追加这个然后突然一切都变得"不稳定".这是代码:

import datetime
mylist = []
today = datetime.date.today()
mylist.append(today)
print mylist
Run Code Online (Sandbox Code Playgroud)

这打印出以下内容:

[datetime.date(2008, 11, 22)]
Run Code Online (Sandbox Code Playgroud)

我怎么能得到像"2008-11-22"这样的简单日期呢?

python datetime date

637
推荐指数
13
解决办法
127万
查看次数

如何在Jinja2中使用简单的for循环构建HTML表?

我刚刚学习Jinja2.我之前从未做过任何模板,因此我发现文档现在非常混乱.

如何使用简单的FOR循环构建HTML表?我的模板看起来像这样:

{% for item in items %}
<TR>
   <TD class="c1"><IMG src="favicon.ico"></TD>
   <TD class="c2">{{date}}</TD>
   <TD class="c3">{{id}}</TD>
   <TD class="c4"><SPAN>{{position}}</SPAN></TD>
   <TD class="c5"><SPAN>{{status}}</SPAN></TD>
</TR>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我的python代码如下所示:

import jinja2
loader = jinja2.FileSystemLoader('./index.html')
env = jinja2.Environment(loader=loader)
template = env.get_template('')
print template.render(date='2012-02-8', id='123', position='here', status='Waiting')
Run Code Online (Sandbox Code Playgroud)

我似乎无法生成任何表格.我也不知道这是否是填充具有多个字段的表的最佳方法.

jinja2

32
推荐指数
1
解决办法
6万
查看次数

c中的协议解析

我一直在尝试实现一些协议解码器,但每次遇到"简单"问题时我觉得我解决问题的方式并不是最优的,必须有更好的方法来做事.我正在使用C.目前我正在使用一些固定数据并将其作为文件读取,但稍后它将通过TCP或UDP.

这是问题所在.我正在玩二进制协议.所有字段都是8位长.第一个字段(8位)是数据包类型.所以我在前8位读取并使用一个开关/情况我调用一个函数来读取数据包的其余部分,因为我知道它的大小/结构.但是......其中一些数据包里面有嵌套数据包,所以当我遇到那个特定的数据包时,我必须再读取另外一个8-16字节的另一个交换机/情况,看看下一个数据包类型是什么,然后打开.(幸运的是,数据包只嵌套2或3深).只有将整个数据包解码后,才能将其处理到我的状态机进行处理.

我想这也是一个更普遍的问题.你一次从套接字读取多少数据?越多越好?协议标题中的"类似"是什么?

所以即使这个协议是相当基本的,我的代码是一大堆switch/case语句,我从文件/套接字中做了很多阅读,我觉得这不是最优的.我的主要目标是尽可能快地制作这个解码器.对于那些经验丰富的人来说,这是要走的路还是有一种更好的方式,我还没想到呢?这个问题的优雅解决方案?

c parsing protocols

10
推荐指数
1
解决办法
3975
查看次数

从插座中部分读取

我有一个小测试程序,在客户端 - >服务器 - >客户端(ping/pong测试)之间发送大量的udp数据包.每次运行时数据包都是固定大小的(最后一次运行是udp数据包的最大允许大小)我正在用随机数据填充数据包,除了包含数据包编号的每个数据包的开头.所以我只想知道我是否收到客户端的所有数据包.

我正在使用sendto()和recvfrom(),我只读取sizeof(packet_number)(在本例中是一个int).其他数据会发生什么变化?它最终是在仙境中(被丢弃)吗?或者到达的新数据包是否附加到此"旧"数据?

(使用linux)

sockets udp

9
推荐指数
2
解决办法
8455
查看次数

新手:我应该学习c#,VB.Net还是VBA/VB for excel编程?

我的背景:主要是C编程.我有一些(最近......最近2个月)获得了JAVA(新手)技能.我所有有限的经验都是基于Linux的开发.

我想为工作目的做一些excel编程.我的主要兴趣是开始创建"仪表板"和excel表格中的图表/报告,因为我厌倦了手工更新许多工作表.我很懒,所以我喜欢在任何地方自动化:-)

您建议学习哪种"新"语言(对我而言)?我也希望如果/当我越来越熟悉Windows/MS Office环境时,我可以做更多"强大"的事情.

c# vb.net vba

3
推荐指数
2
解决办法
1万
查看次数

calloc并使用c将数据复制到内存区域

我正在尝试分配一块内存,然后将数据复制到该空间.我制作了这个简单的程序,并没有按照我的预期去做.有人可以指出我错误的推理.

谢谢.

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
int t1 = 11;
int t2 = 22;
int *bufptr;

bufptr = calloc(2, sizeof(int));
if(bufptr == NULL)
{
    fprintf(stderr, "Out of memory, exiting\n");
    exit(1);
}

memcpy(bufptr, &t1, sizeof(int));
memcpy((bufptr+sizeof(int)), &t2, sizeof(int));

printf("bufptr11: %d\n", *bufptr);
printf("bufptr22: %d\n", *bufptr+sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

打印出的内容如下:
bufptr11:11
bufptr22:15(这应该是22而不是15)

感谢所有人的帮助,但我刚刚陷入了下一个障碍!本练习的重点是通过udp将一些数据发送给另一台主机.在调用sendto()之前我查看了bufptr的内容,一切看起来都很好,发送似乎进展顺利.另一方面(我在127.0.0.1上运行客户端/服务器)我只收到"废话".我叫recvfrom(s_fd,bufptr,buflen等).我使用相同的calloc调用为bufptr分配内存.从这次调用中返回了适量的数据,但它的内容都只是垃圾!

bufptr = calloc(2, sizeof(int));
if(bufptr == NULL)
{
   fprintf(stderr, "Out of memory, exiting\n");
   exit(1);
}

buflen = 2*sizeof(int);

rc = recvfrom(sd, bufptr, buflen, 0, (struct sockaddr *)&serveraddr, &serveraddrlen);
printf("t2: …
Run Code Online (Sandbox Code Playgroud)

c memory-management calloc

2
推荐指数
1
解决办法
1968
查看次数

strncmp()和if()不同意......我错过了什么?(原始插座)

我正在尝试构建一个在以太网级别上工作的简单echo服务器/客户端(使用原始套接字).服务器端本身工作并显示eth0上的所有传入数据包.客户端工作并在eth0上发送以太网数据包(我用wireshark检查了这个数据包,可以看到数据包输出.)我现在想要制作一个过滤器,只查看我感兴趣的数据包.(这基于目的地/源地址.)

在下面的代码,可能有人请向我解释为什么STRNCMP返回零(指字符串匹配),但还没有了"如果(ethernet_header-> h_dest == MAC)"执行失败(不匹配).变量"mac"和"ethernet_header-> h_dest"都是相同的类型和长度.

一些更多的背景: - 这是Linux 64位完成(Ubuntu的) - 我使用的是同一台机器上发送/接收的eth0 ....我不认为这应该是一个问题吗?

我只是不明白为什么strcmp返回一个匹配,如果没有.我错过了什么?

void ParseEthernetHeader(unsigned char *packet, int len) {
    struct ethhdr *ethernet_header;
 unsigned char mac[ETH_ALEN] = {0x01, 0x55, 0x56, 0x88, 0x32, 0x7c}; 

 if (len > sizeof(struct ethhdr)) {
  ethernet_header = (struct ethhdr *) packet;

  int result = strncmp(ethernet_header->h_dest, mac, ETH_ALEN);
  printf("Result: %d\n", result);

  if(ethernet_header->h_dest == mac) {
   /* First set of 6 bytes are Destination MAC */
   PrintInHex("Destination MAC: ", ethernet_header->h_dest, 6);
   printf("\n");

   /* Second set of 6 …
Run Code Online (Sandbox Code Playgroud)

c raw-sockets strcmp

0
推荐指数
1
解决办法
580
查看次数

标签 统计

c ×3

c# ×1

calloc ×1

date ×1

datetime ×1

jinja2 ×1

memory-management ×1

parsing ×1

protocols ×1

python ×1

raw-sockets ×1

sockets ×1

strcmp ×1

udp ×1

vb.net ×1

vba ×1