小编Tor*_*zki的帖子

图表对于cairo-renderer位图来说太大了

我试图使用pyreverse为项目源代码生成UML图像.当我运行pyreverse命令并指定生成png图像时,它会运行,然后一段时间后,它会显示:

dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.271394 to fit
dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.333083 to fit
Run Code Online (Sandbox Code Playgroud)

然后,如果我打开任一图像,文本是不可读的,因为它已缩放.有没有办法不缩放,让图像大尺寸?

谢谢

linux graphics dot cairo ubuntu-12.04

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

如何获取引用属性的值

我想实现一个自动更新TextView的SeekBar,用于实际值,最大值和最小值.我从搜索栏,并获得3个定义与命名的属性format之中reference.

在构造函数中,我TypedArray通过调用得到了一个obtainStyledAttributes().TypedArray每种属性类型都包含很多getter.我缺少的是某种Object getReference()int getReferenceId().

如何获取引用属性的值?

编辑:

我有一个类的属性定义MinMaxSlider,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MinMaxSlider">
        <attr name="min" format="integer" />
        <attr name="valueView" format="reference" />
    </declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)

剪切掉的布局定义如下所示:

    <LinearLayout
        style="@style/ParameterLabelLayout"
        android:orientation="horizontal">
        <TextView
            style="@style/ParameterSliderLabel"
            android:text="min. Interval" />
        <TextView
            android:id="@+id/min_connection_interval_slider_value"
            style="@style/ParameterSliderValue"/>
    </LinearLayout>

    <com.roche.rcpclient.MinMaxSlider
        style="@style/ParameterSlider"
        android:id="@+id/min_connection_interval_slider"
        android:max="3200"
        custom:valueView="@id/min_connection_interval_slider_value"
        custom:min="1"/>
Run Code Online (Sandbox Code Playgroud)

在这里,MinMaxSlider应该引用上面的一个TextViews来显示它的当前值.

从构造函数中MinMaxSlider,我可以查找min属性值.

如果我尝试将valueView属性作为整数查找,我总是得到默认值(0),而不是R.id.min_connection_interval_slider我所期望的.

编辑:正确查找a的函数reference似乎是getResourceId.findViewById当构造整个对象层次结构时,获得的整数id可以用于稍后使用.

在我的例子中,我OnSeekBarChangeListener()在回调被触发时注册并在回调中查找View.

android android-custom-view

8
推荐指数
1
解决办法
5201
查看次数

无法创建C++ ruby​​扩展

我在创建ruby扩展以导出我在OSX下写入ruby的C++库时遇到问题.这个简单的例子:

#include <boost/regex.hpp>

extern "C" void Init_bayeux()
{
    boost::regex expression("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");
}
Run Code Online (Sandbox Code Playgroud)

导致抛出bad_cast异常:

#0  0x00000001014663bd in __cxa_throw ()
#1  0x00000001014cf6b2 in __cxa_bad_cast ()
#2  0x00000001014986f9 in std::use_facet<std::collate<char> > ()
#3  0x0000000101135a4f in boost::re_detail::cpp_regex_traits_base<char>::imbue (this=0x7fff5fbfe4d0, l=@0x7fff5fbfe520) at cpp_regex_traits.hpp:218
#4  0x0000000101138d42 in cpp_regex_traits_base (this=0x7fff5fbfe4d0, l=@0x7fff5fbfe520) at cpp_regex_traits.hpp:173
#5  0x000000010113eda6 in boost::re_detail::create_cpp_regex_traits<char> (l=@0x7fff5fbfe520) at cpp_regex_traits.hpp:859
#6  0x0000000101149bee in cpp_regex_traits (this=0x101600200) at cpp_regex_traits.hpp:880
#7  0x0000000101142758 in regex_traits (this=0x101600200) at regex_traits.hpp:75
#8  0x000000010113d68c in regex_traits_wrapper (this=0x101600200) at regex_traits.hpp:169
#9  0x000000010113bae1 in regex_data (this=0x101600060) at basic_regex.hpp:166
#10 …
Run Code Online (Sandbox Code Playgroud)

c++ ruby macos boost ruby-c-extension

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

从C/C++扫描BLE设备

"蓝牙设备访问指南",我读过蓝牙API应该可以从C或C++访问.我在IOBluetooth框架中找到了一些与蓝牙相关的C-header(IOBluetoothUserLib.h,Bluetooth.h),它包含用于定义搜索creteria的枚举和数据,但是我找不到任何采用这种枚举或数据结构的函数作为参数.根据文档,我将不得不创建一个CBCentralManager但我找不到从C或C++这样做的方法.

背景:我们使用OS/X作为开发平台,用于开发支持BLE的微控制器.要更新此微控制器上的固件,我想编写一个BLE引导加载程序,我希望有一个命令行客户端来更新固件.所有的代码都是用C++编写的,我不想为这个小任务学习objectiv-C.

任何指针,文档,示例?

谢谢

托斯滕

c macos core-bluetooth bluetooth-lowenergy

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

注册为模板参数

我正在寻找一种使用gcc 4.8.4将嵌入式设备寄存器传递给C++模板的方法.在描述嵌入式器件的数据手册中,寄存器的地址通常作为原始存储器位置给出(例如,0x40008000).

当我测试软件时,我想使用静态整数作为寄存器来查看寄存器值是否设置正确.

所以基本上一个设备外围设备的包装器归结为一个类,其寄存器地址作为模板参数给出:

template < volatile std::uint32_t* Reg >
struct peripheral {};
Run Code Online (Sandbox Code Playgroud)

测试工作正常:

std::uint32_t reg;
peripheral< &reg > mocked;
Run Code Online (Sandbox Code Playgroud)

但是当我想用固定的数据表给出地址时,实例化模板:

peripheral< reinterpret_cast< std::uint32_t* >( 0x40008000 ) > mocked;
Run Code Online (Sandbox Code Playgroud)

gcc抱怨:could not convert template argument '1073774592u' to 'volatile uint32_t* {aka volatile long unsigned int*}.clang并没有抱怨这个.

如果我使用给定为整数的地址作为模板参数,我在测试期间使用模拟寄存器的地址来实例化模板时遇到问题:

template < std::intptr_t Reg >
struct peripheral {};

std::uint32_t reg;
peripheral< reinterpret_cast< std::intptr_t >( &reg ) > mocked;
Run Code Online (Sandbox Code Playgroud)

这导致了error: conversion from pointer type 'uint32_t* {aka long unsigned int*}' to arithmetic type 'intptr_t {aka …

c++ embedded gcc

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

如何生成安全会话 ID

对于 C++ Web 服务器,我必须生成会话 ID。我考虑使用某种随机数和哈希值,以及会话的初始 IP 地址和时间戳。

这会产生一个合理且不可猜测的 ID 吗?什么是一种好的随机生成器算法(最优选由 boost-random 实现的算法)?

亲切的问候托斯顿

我的解决方案现在看起来像:

std::string secure_session_generator::operator()( const char* /* network_connection_name */ )
{
    std::stringstream out;
    out << std::hex << distribution_( generator_ );

    return out.str();
}
Run Code Online (Sandbox Code Playgroud)

成员是默认构造的:

    boost::random::random_device                                        generator_;
    boost::random::uniform_int_distribution< boost::uint_least64_t >    distribution_;
Run Code Online (Sandbox Code Playgroud)

security boost-random

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

获取文件更改的最新提交

我的任务是弄清楚,最后一次提交的提交ID是什么,特定文件的更改位置.我正在使用红宝石/坚固耐用.我提出的唯一解决方案是遍历所有提交,在与该文件的提交相关联的树中搜索文件,并将该文件oid与来自第一个(最新)提交的文件的oid进行比较:

def commit_oid commit, file
    commit.tree.walk( :postorder ) { | root, obj |
        return obj[ :oid ] if "#{root}#{obj[ :name ]}" == file 
    }

    raise "\'#{file}\' not found in repository"     
end

def find_last_commit file
    johnny = Rugged::Walker.new( get_repository )
    johnny.push get_repository.head.target

    oid = commit_oid johnny.first, file
    old_commit = johnny.first.oid

    johnny.each do | commit |
        new_oid = commit_oid commit, file

        return old_commit if new_oid != oid

        old_commit = commit.oid 
    end

    old_commit
end
Run Code Online (Sandbox Code Playgroud)

这有效,但似乎很复杂.必须有一种更简单的方法来获取信息,"通过提交改变了什么".是否有更简单,更直接的方法来实现同样的目标?

ruby git rugged

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