小编Rab*_*ski的帖子

C语言:#DEFINEd值混乱8位乘法.为什么?

我有以下C代码:

#define PRR_SCALE 255
...
uint8_t a = 3;
uint8_t b = 4;
uint8_t prr;
prr = (PRR_SCALE * a) / b;
printf("prr: %u\n", prr);
Run Code Online (Sandbox Code Playgroud)

如果我编译它(使用msp430平台编译器,对于一个名为contiki的小型嵌入式操作系统),结果为0,而我预期为191.(uint8_t是typedef'ed为unsigned char)

如果我将其更改为:

uint8_t a = 3;
uint8_t b = 4;
uint8_t c = 255;
uint8_t prr;
prr = (c * a) / b;
printf("prr: %u\n", prr);
Run Code Online (Sandbox Code Playgroud)

它正常工作并打印191.

在Ubuntu框中使用gcc编译这个"正常"的简单版本会在两种情况下打印正确的值.

我不确定为什么会这样.我可以通过事先将DEFINEd值赋给变量来绕过它,但我宁愿不这样做.

有谁知道这是为什么?也许有关于此的更多信息的链接?

c embedded overflow multiplication msp430

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

如何在乳胶中添加更改栏?

在 Latex 中,我创建了一个新命令“changedtext”来标记文档中的特定部分并使其显示为蓝色:

\newcommand{\changedtext}[1]{\textcolor{blue}{#1} }
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法可以更改命令,使更改栏出现在生成的 PDF 中的文本旁边?如果不可能,任何其他在黑白打印输出上清晰的视觉标记(除了更改栏之外)的建议也将很有用。

更新:这个问题的读者可能会感兴趣,不久前我开始使用Latexdiff脚本来标记两个版本之间的更改。我将它与 SVN 结合使用,我认为效果很好;如果你分割你的 LaTeX 文件,你可能想看看这个 tex.stackexchange 问题。

latex

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

如何在引入错误处理时保持代码布局在视觉上"有吸引力"?

在编写代码时,我觉得很重要的是,我的代码看起来很好(除了一个事实,即它有工作很好).Code Complete(p729)一书中对此进行了详细描述:" 格式良好的代码的视觉和智能享受是很少有非程序员能够欣赏的乐趣 ".

问题是,只要我的代码功能正常工作,并且我开始引入错误处理(try-except子句等)以使其健壮,我发现这通常会弄乱我精心设计的代码并将其转换进入一些绝对不具备视觉美感的东西.try-except语句和其他if语句使代码的可读性和结构性降低.

我想知道这是因为我滥用或过度使用错误处理,还是这是不可避免的?任何提示或技巧,以保持良好的外观?

error-handling layout

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

将脚本的工作文件夹添加到Windows上的Python导入()路径的最佳方法?

我有一个python程序,我使用py2exe编译成Windows .exe.使用Inno Setup,我创建了一个Windows安装程序.

我的程序的性质是它使用插件,后来使用该__import__()语句导入.这些插件位于"plugins"文件夹中,该文件夹本身位于程序的.exe文件所在的子文件夹中.

现在,为了让程序找到插件,它先前在我的文件顶部有以下语句:

sys.path+= ['.']
Run Code Online (Sandbox Code Playgroud)

但是,当用户通过Windows的开始菜单启动程序时,这不能很好地工作,因为显然工作文件夹设置为开始菜单(而不是.exe所在的位置).所以'.'没有解决我想要的问题.

我通过将语句更改为以下来修复它,以便该__import__()语句也查找.exe所在的文件夹(因为它argv[0]是可执行文件的完整路径):

sys.path+= [os.path.dirname(sys.argv[0])]
Run Code Online (Sandbox Code Playgroud)

但是,我不确定我是否选择了正确的解决方案.特别是,因为我的程序是跨平台的(Windows,OSX,Linux),sys.argv文档说argv [0],"它是依赖于操作系统的,无论这是否是一个完整的路径名".

我应该以不同的方式解决这个问题,还是我的方法可行

python windows cross-platform working-directory

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

Python相当于Ruby的define_method?

是否有Ruby的Python等价物define_method,它允许动态生成类方法?(可以在维基百科的Ruby示例代码中看到)

ruby python

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

如何检查循环范围的重叠(重叠年度重复周期)

我试图找到一种优雅的算法来检查两个年度重复周期是否重叠。该期间与年份无关,但可以预期一年始终是闰年。

例如,期间 A =(3 月 1 日至 5 月 1 日)和期间 B =(4 月 1 日至 9 月 1 日)重叠。此外,期间 A =(10 月 1 日至 2 月 1 日)和期间 B =(1 月 1 日至 3 月 1 日)重叠。

然而,我发现这比我预期的要困难得多。复杂性来自跨越年底的时期。

我有一个doesOverlap(A,B)可行的解决方案(请参阅下面的方法),但我发现它很混乱。

# for the rest of the MWE context code, see further
# WORKING, but a bit convulted
def doesOverlap(A, B):  
    '''returns True if yearly period A and B have overlapping dates'''
    # list to track if day in …
Run Code Online (Sandbox Code Playgroud)

python range cycle overlap

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

如何访问DRF序列化器中的路径url参数?

简短的问题:

在 Django DRF 序列化器中访问url 路径参数(不是 url查询参数)的正确方法是什么?
例如,如何获取blogid中的值/api/blogposts/:blogid/comments。

语境:

A 有一个 Django DRF api,其中我有一个类似于以下内容的 url:

/api/blogposts/:blogid/comments
Run Code Online (Sandbox Code Playgroud)

由通用视图处理:

from rest_framework import generics

class MyCommentsView(generics.ListCreateAPIView):
       queryset = Comment.objects.all()
       serializer_class = CommentSerializer
Run Code Online (Sandbox Code Playgroud)

(blog并且comment只是示例资源;我正在使用不同的资源)

此视图允许通过 POST 调用创建新评论。由于遗留原因,请求还将包含blog_id也作为请求正文参数。

在我的序列化程序中,我想检查:blogidurl 中的内容是否与blog_id正文中的内容相同。目前我执行以下操作,但路径分割和元素选择感觉非常脆弱(例如,如果我在中重组我的网址,urls.py我需要调整我的自定义解析)。那么,有没有更好的办法呢?

class CommentSerializer(serializers.ModelSerializer):

    class Meta:
        model = Comment
        fields = [..., 'blog_id', ... ]

    ...

    def validate_blog_id(self, value):
        # Better way for next line?
        blogid_in_url = int(self.context['request'].path.split('/')[-2]) …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

如何保护版本控制之外的机密信息(例如测试密码)?

我的一些程序需要一些机密数据(主要是身份验证)才能正常工作.main()在开发和测试时,我经常将自己的凭据放在源代码中以查看我的代码是否有效,并在一切正常时删除它们.但是,很容易忘记删除它们.

什么是防止这些机密数据最终出现在版本控制提交中的好方法?

我使用Mercurial(和Python).

我一直在想:

  • 在提交时自动运行一些敏感数据检查脚本,如果找到一些特定的字符串就会中止(看起来不是万无一失,需要维护敏感的字符串)
  • 将机密数据存储在其他地方(哪里?,如何实际导入/使用它们?).
  • 使用测试分支(但并没有真正解决问题)
  • 提供机密数据作为命令行参数(太不实用)

security version-control mercurial

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

Python,unicode支持的最佳方法?

我有一个Python应用程序,可以从网站获取多语言信息,并在一个小的GUI窗口(基于wxpython)中显示它们.
我(目前)不在我的源文件中使用任何特定的unicode语句.

现在,当我从Eclipse中运行我的python应用程序时,很好地显示了法语字符(比如ë),当我从py2exe打包版本运行它时,该字符变得不稳定.我真的不明白为什么使用py2exe构建不会产生unicode或编码相关的错误.

但是,要解决这个问题,并按照该文章中,我包裹着我的琴弦unicode(my_string, "utf-8")电话只是其输出到屏幕前.这解决了它.

问题:

  • unicode()在显示好方法之前,是否在调用中包装字符串?
  • 为什么没有从Eclipse内部进行unicode转换,而不是从Windows打包的.exe版本转换?

我试过围绕unicode多次缠绕我的脑袋,但似乎我不兼容unicode: - |

python unicode py2exe

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

matplotlib图表轴上每个标签的不同颜色?

是否可以为轴上的某些标签设置不同的颜色?

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_yticks([0,1,2])
ax1.set_yticklabels(['red','red', 'blue'], color='blue') 
#What I would like to do
ax1.set_yticklabels(['red','red', 'blue'], colors=['red','red','blue'])  <-- doesn't work

plt.show()
Run Code Online (Sandbox Code Playgroud)

有没有办法实现我想要的?

不完全着色的轴标签

python colors matplotlib axis-labels

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