问题列表 - 第47834页

在不规则形状内渲染CoreText

我正在寻找有关实现视图的指导,该视图NSAttributedString在带有孔的多边形内呈现,包裹和回流文本以适合几何.这不是CoreText问题,而是将不规则形状划分为有序蹲下矩形序列的一般问题.

类似的问题尚未得到充分回答:

CoreText处理与文本布局和显示相关的令人难以置信的大量工作,所以我不禁怀疑我正在重新发明一个轮子.出于这个问题的目的,请假设我可以检查适合给定矩形的子字符串,同时考虑自动换行和连字符.

编辑:我已经决定只扫描从左到右的绘图,尽可能多地适应边界.虽然我打破了自然界限,但看起来有点随意,所以我仍然很欣赏其他应用程序如何包装文本的指导.

编辑#2:它现在看起来很不错,它支持基本的自动换行并避免渲染很短的行.我的问题一定太模糊了.谢谢你的期待.

编辑#3: Amorya指出CTFramesetter现在接受任何CGPath.

algorithm geometry text word-wrap core-text

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

为什么不同的C++编译器会为此代码提供不同的结果?

我正在编写一些C++代码,用于娱乐和练习,以了解有关语言功能的更多信息.我想更多地了解静态变量及其在递归函数中的行为.在g ++编译器中尝试此代码,我得到了预期的结果:

#include <iostream>
using namespace std;

int f(const int& value)
{
   static int result = 0;
   return result += value;
}

int main()
{
   cout << f(10) << ", " << f(f(10)) << ", " << f(f(f(10)));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

但我的朋友在Microsoft Visual C++ 6中测试了相同的代码.输出是50, 80, 90我用其他C++编译器(g ++,Borland,Code :: blocks和MingW在Linux,Win和Mac下)输出测试的110, 100, 40.我无法理解输出如何50, 80, 90......

为什么MSVC的输出不同?

c++ expression-evaluation visual-c++ unspecified-behavior

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

在http文本周围包裹<a>标签

如何找到以http://开头的页面上的每个单词并在其周围换行标签?

我可以使用像正则表达式这样的东西吗?

javascript regex string jquery

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

在MATLAB中同时定义多个变量?

我不知道MATLAB是否可以做到这一点,我希望它纯粹是为了我的代码中的美学,但是MATLAB可以同时创建两个变量吗?

x = cell(4,8);  
y = cell(4,8);
Run Code Online (Sandbox Code Playgroud)

有没有办法写代码类似于:

x&y = cell(4,8);
Run Code Online (Sandbox Code Playgroud)

variables matlab

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

从ActiveRecord模型中删除属性

我正在两个activerecord连接之间迁移数据,我已经正确设置了我的模型所以我可以从Legacy :: Tablename和Tablename读取并将其插入到新表中.

我遇到的问题是我的新模型没有遗留模型中的所有属性,因此当我尝试在新模型中创建记录时,我得到一个"未知属性";

legacy_users = Legacy::User.all
legacy_users.each do |legacy_user|
  User.create legacy_user.attributes
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试删除有问题的属性,它仍然无法正常工作,例如.

legacy_user.attributes.delete 'some_attribute'
Run Code Online (Sandbox Code Playgroud)

谁能提供任何指针?

ruby ruby-on-rails

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

Bookmarklet安全性考虑因素CSRF是关键所在

我的书签可以从任何网站调用,基本上允许用户从远处向他的收藏中插入一行 - 如果他已登录.

现在我想为我的网站启用CSRF保护,因为书签基本上是非伪造的跨网站请求,我想到了我如何区别于伪造的.
这不是一个高安全性的环境,但我也对原则感兴趣.

我以为我有办法做到这一点,但后来意识到它有很多问题.

创见

  • 生成包含在bookmarklet-link中的随机密钥.密钥的哈希值保存在数据库中.随机密钥只允许访问插入此集合的权限,不能在其他任何地方使用.
  • bookmarklet从我的服务器加载一个更长的脚本,所以我可以这样提供CSRF预防令牌
  • 要求用户登录

问题

  • 如果我有bookmarklet密钥,我是否需要反CSRF令牌?
  • 如果用户在恶意网站上点击他的书签,我有什么方法可以保护书签键吗?
  • 我不希望用户名和密码存储在bookmarklet链接中,因为任何有权访问计算机的人都会获得密码,所以我决定使用随机密钥.
    • 但是如果我只存储哈希,我就不能生成两次相同的书签链接,所以当用户想要在另一个浏览器/计算机中使用书签时,他繁琐地必须从旧的链接导入链接或者中断旧的链接.
    • 但是我不应该存储明文密钥,因为获得数据库访问权限的人可以使用此密钥将行插入不属于他的帐户中.
    • 可能的解决方法,我可以要求用户提供他的密码,他随时创建书签和散列密码很多次,并把该散列在URL中,并将该散列我的数据库的哈希值.但当然这会打开更糟糕的安全漏洞.
      • 我可以用"妈妈的娘家姓"这样的东西代替
      • 由于随机盐,我无法使用bcrypt进行散列,对吧?什么哈希函数是正确的?或者你会忽略整个想法?
  • 如果我将书签密钥丢失,恶意网站可以简单地嵌入书签并从中提取有效的CSRF令牌,对吧?

好主意?或者你没有F而没有CSR吗?


编辑,指定用例

我根本没想到的一件事是Sripathi Krishnan建议使用iframe.

我没有指定我的用例,所以是的,iframe是上述问题的有效解决方案.

然而,实际上我的书签目前在运行时确实与网站进行了一些基本的交互(意味着表格已经存在,用户可以在网站DOM中更改他的选择,这应该改变表格).我已经准备好为我的用例解雇这个功能,如果事实证明,没有合理安全的方式来区分伪造的非伪造跨站请求 - 但我仍然对理论水平感兴趣.

security hash bookmarklet csrf

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

减少存储库以聚合根

我目前拥有数据库中几乎每个表的存储库,并希望通过将它们简化为仅聚合根来进一步使自己与DDD保持一致.

我们假设我有以下表格,User并且Phone.每个用户可能有一部或多部电话.如果没有聚合根的概念,我可能会这样做:

//assuming I have the userId in session for example and I want to update a phone number
List<Phone> phones = PhoneRepository.GetPhoneNumberByUserId(userId);
phones[0].Number = “911”;
PhoneRepository.Update(phones[0]);
Run Code Online (Sandbox Code Playgroud)

聚合根的概念在纸上比在实践中更容易理解.我永远不会有不属于用户的电话号码,所以取消PhoneRepository并将电话相关的方法合并到UserRepository中是否有意义?假设答案是肯定的,我将重写先前的代码示例.

我是否允许在UserRepository上有一个返回电话号码的方法?或者它应该始终返回对用户的引用,然后通过用户遍历关系以获取电话号码:

List<Phone> phones = UserRepository.GetPhoneNumbers(userId);
// Or
User user = UserRepository.GetUserWithPhoneNumbers(userId); //this method will join to Phone
Run Code Online (Sandbox Code Playgroud)

无论我采用哪种方式获取手机,假设我修改了其中一种,我该如何更新它们?我有限的理解是,根目录下的对象应该通过root更新,这将引导我选择下面的#1.尽管这对于Entity Framework非常有效,但这似乎非常缺乏描述性,因为读取代码时我不知道我实际更新了什么,即使实体框架在图形中保留了更改对象的选项卡.

UserRepository.Update(user);
// Or
UserRepository.UpdatePhone(phone);
Run Code Online (Sandbox Code Playgroud)

最后,假设我有几个查阅表中并没有真正依赖于任何东西,如CountryCodes,ColorsCodes,SomethingElseCodes.我可能会用它们来填充下拉或其他任何原因.这些独立的存储库吗?它们可以组合成某种逻辑分组/存储库,例如CodesRepository?或者是针对最佳做法的.

c# asp.net domain-driven-design entity-framework entity-framework-4

82
推荐指数
3
解决办法
9639
查看次数

.net - 如何分析方法中有多少不同的代码路径

是否有(首选免费)工具可以分析方法中可能有多少种不同的组合?我目前正在重构一个有很多if/switch语句的方法,我很好奇这个方法有多少可能的不同执行方式.

假设我有一个简单的方法:

public void DoSomething(bool flag1, int value)
{

    if (flag1)
    {
        if (value > 0)
        {
            Console.WriteLine("Flag1 & value > 0");
            return;
        }
        else
        {
            Console.WriteLine("Flag1 & value <= 0");
            return;
        }
    }
    elseif (value > 0 and value < 10)
    {
        Console.WriteLine("Flag1 is false and value between 0 & 10");
        return;
    }

    if (value < 0)
    {
        Console.WriteLine("Flag1 = false & value <= 0");
        return;
    }
    elseif(value = 0)
    {
        Console.WriteLine("Flag1 = false & value >= 10");
        return; …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis code-coverage

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

HDR,自适应色调映射和GLSL中的MSAA

为了自学OpenGL,我正在通过第五版的Superbible工作.

我目前正在试图弄清楚如何结合HDR和MSAA(如第9章所述).

对于HDR,本书提出了一种自适应色调映射方法,该方法基于计算每个片段的5x5卷积滤波器的平均亮度.

对于MSAA,使用的方法通过从样本距离计算的权重来平均所有样本.

我尝试将两者结合起来,在下面的pastebin中,将色调映射应用于每个样本,然后平均它们以计算最终的片段颜色.

性能是(正如人们应该预期的那样?)可怕:每个样本25个查找,4xMSAA为4次,我猜测GPU花费大部分时间来查找我的FBO纹理.切换到代码中由use_HDR统一控制的代码路径,对于简单的场景,性能会下降400 + fps到10以下.

我的问题是双重的:

  • 这是一种执行色调映射的理智方法吗?如果没有,你会建议什么?

  • MSAA和基于卷积的过滤器应该如何组合?我猜我会再次遇到这个问题需要查找相邻纹素的任何滤镜,即几乎任何像绽放,模糊等等?

码:

#version 330
in Data
{
    vec4 position;
    vec4 normal;
    vec4 color;
    vec2 texCoord;
    mat4 mvp;
    mat4 mv;
} gdata;

out vec4 outputColor;
uniform sampler2DMS tex;
uniform sampler1D lum_to_exposure;
uniform samplerBuffer weights;
uniform int samplecount;
uniform bool use_HDR;

vec4 tone_map(vec4 color, float exp)
{
    return 1.0f - exp2(-color * exp);
}

const ivec2 tc_offset[25] = ivec2[](ivec2(-2, -2), ivec2(-1, -2), ivec2(0, -2), ivec2(1, -2), ivec2(2, -2),
                                    ivec2(-2, -1), …
Run Code Online (Sandbox Code Playgroud)

opengl glsl

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

我可以在SpringSource Tool Suite启动时禁用Dashboard窗口吗?

显然,仪表板本身就是一个切换开关,但是已经不见了,我在首选项中找不到任何东西.我正在使用2.5.2版.

我知道这真的不是什么大不了的事,但是如果你抓住我的漂移,一遍又一遍地关闭那扇窗户就会让杰克成为一个沉闷的男孩.

ide springsource sts-springsourcetoolsuite

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