小编Gle*_*eno的帖子

如何删除一些Mathematica图周围的白边

我正在尝试使用mathematica创建矩阵图.使用ArrayPlot []我得到一个非常好的数字,除了它被白色边缘包围的事实.在下面的例子中,我已经找到了问题的根源.

http://img689.imageshack.us/img689/8427/badmargin.png

如果我尝试导出生成的图形,它也会导出边距.我希望我的数组内容填充一定大小的矩形,以便它可以叠加在另一个图像上,但ArrayPlot函数会产生干扰的边距.

做什么?

QuickEdit:ImageCrop在我的情况下不起作用,因为a)我希望我的结果图像具有一定的大小,并且b)没有指定我想要移除自动版本的宽边距可能会弄乱我的图形(第一行可能很好例如,是白色的.

wolfram-mathematica

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

Mathematica的MemberQ

我有点不知道如何在Mathematica中有效地执行以下操作:

a = { 1, 2, 3, 4, 5 };  (* list of integers *)
b = { 2, 4, 6, 8 };     (* another list of integers *)
filter = Table[MemberQ[b, element], {element,a}]
Run Code Online (Sandbox Code Playgroud)

预期产出是:

{False, True, False, True, False}
Run Code Online (Sandbox Code Playgroud)

我的名单a,并b都大了,所以数学是线性搜索,通过做kazillion b.我希望它使用哈希表进行更快的查找.但似乎没有这样的结构.我能找到的最接近的是SparseArray,但是

sa = SparseArray[{1 -> True, 2 -> True}];
MemberQ[sa, 1]
Run Code Online (Sandbox Code Playgroud)

False.

我确信在一行代码或更少的代码中,这在Mathematica中一定是可能的,我只是看不到树木或其他东西.

救援的任何英雄?同时,我打算用C#做这件事.

wolfram-mathematica hashtable

8
推荐指数
2
解决办法
693
查看次数

html重置后javascript事件丢失

我有一种情况,在某种程度上,div的html内容被更改为其他东西,然后被更改回来.一些jquery ui控件是行为不端的.我已将问题简化为以下代码段,它基本上显示与该按钮关联的事件处理程序不再触发.我假设当它们消失时,这些都是垃圾收集的.所以我的问题是 -

如何防止事件处理程序从DOM中丢失时被垃圾回收

我知道我可以重新分配click()函数,但由于我使用的是外部库(jquery ui),我真的不知道它对我的控件做了什么.我只是希望他们的事件恢复原样.

<div id="container">
    <p>This container has a button, which will forget its click()...</p>
    <input id="testbutton" type="button" value="Click Me!"/>
</div>

<script type="text/javascript">
    $(function(){ 
        $("#testbutton").click(
            function(){
                alert("Button has been clicked!");
        })
    });
</script>

<div>
    <p>... when this button reseats html</p>
    <input id="actionbutton" type="button" value="Toggle"/>
</div>

<script type="text/javascript">
    var toggle = false;
    var html;
    $(function(){ 
        $("#actionbutton").click(
            function(){
                toggle = !toggle;
                if(toggle){
                    html = $("#container").html();
                    $("#container").html("");
                } else  $("#container").html(html);
        })
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这个小伙子展示了我所遇到的问题.

javascript jquery

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

拒绝外围触摸输入

给定嵌套视图结构,例如:

嵌套的应用布局

如何禁用灰色边缘上的输入,这样即使用户手指握住它,但触摸黄色视图,触摸事件也会无dispatchTouchEvent()阻碍地注册该视图?

编辑:为了进一步解释,我需要灰色区域的某种手掌剔除系统.在黄色区域中,用户可以用他的手指绘制.所有这些都可以正常工作,但在某些带无边框显示屏的手机上,您可能会意外触摸灰色区域,灰色区域会记录为输入并且图形会被破坏.

仅当用户同时在多个位置触摸屏幕时才会发生这种情况.在这一点上,人们可能会责怪用户购买噱头,但我自己也尝试过,并且很容易意外碰到边缘,并防止事件正常流动.

在我发布这个问题之后,我想出了一个使用多点触控事件的有点hacky解决方案.它比以前工作得更好,但因为它不是真正的多点触摸事件,有时它会过时并停止完全注册输入.此外,最终能够在黄色框中捕获真实的多点触摸事件(例如,进行放大 - 绘制手势)将会很棒.

到目前为止,我的解决方案的基本前提是:

  1. 设置视图.在这个测试用例中,我只有一个View,它绘制了它的所有区域onDraw().
  2. 捕获MotionEventdispatchTouchEvent()
  3. 用黄色区域内的x,y挑出事件的一部分:

然后:

// ... event:MotionEvent, pointerCoordsOut:MotionEvent.PointerCoords
for (pidx in 0 until event.pointerCount) {
    event.getPointerCoords(pidx, pointerCoordsOut)
    if (inYellowArea(pointerCoordsOut.x, pointerCoordsOut.y)) {
         //pointerCoordsOut now has (x,y) that I need
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,调整代码以接受ACTION_*ACTION_POINTER_*事件,并让他们做一些合理的事情.这在演示案例中很容易,但我认为这是解决方案最终会失败的地方.

因此,我仍然希望有一个适当的解决方案,以便在边界上进行手掌拒绝 - 如果该事件根本不存在,而不是在我的情况下,我试图破译的复杂手势的一部分.

编辑:

仍然愿意接受建议.

android android-layout

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

读取文件特定行号的有效方法.(奖金:Python手册错误打印)

我有一个100 GB的文本文件,这是一个来自数据库的BCP转储.当我尝试导入它时BULK INSERT,我在行号219506324上得到了一个神秘的错误.在解决这个问题之前我想看看这行,但是我最喜欢的方法是

import linecache
print linecache.getline(filename, linenumber)
Run Code Online (Sandbox Code Playgroud)

扔了一个MemoryError.有趣的是手册上说的是"此功能将永远不会抛出异常." 在这个大文件中,当我尝试读取第1行时,它会抛出一个,我有大约6GB的可用RAM ...

我想知道到达那条无法到达的线路最优雅的方法是什么.可用的工具是Python 2,Python 3和C#4(Visual Studio 2010).是的,我明白我总能做点什么

var line = 0;
using (var stream = new StreamReader(File.OpenRead(@"s:\source\transactions.dat")))
{
     while (++line < 219506324) stream.ReadLine(); //waste some cycles
     Console.WriteLine(stream.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)

哪个会奏效,但我怀疑这是优雅的方式.

编辑:我正在等待关闭此线程,因为包含该文件的硬盘驱动器现在正由另一个进程使用.我将测试建议的方法和报告时间.谢谢大家的建议和意见.

结果是我实施了Gabes和Alexes方法,看看哪一个更快.如果我做错了什么,请告诉我.我正在使用Gabe建议的方法在我的100GB文件中使用第10百万行,然后使用Alex建议的方法,我将其松散地翻译成C#...我自己添加的唯一内容是,首先阅读300 MB文件到内存只是为了清除硬盘缓存.

const string file = @"x:\....dat"; // 100 GB file
const string otherFile = @"x:\....dat"; // 300 MB file
const int linenumber = 10000000;

ClearHDDCache(otherFile);
GabeMethod(file, linenumber); …
Run Code Online (Sandbox Code Playgroud)

.net c# python file

6
推荐指数
2
解决办法
6382
查看次数

Asp.NET MVC应用程序中的静态类

我想知道如果一个静态类ASP.NET MVC应用程序可以初始化一次以上.我最初设计我的应用程序,以便静态组件从数据库中获取一些东西并充当缓存,我向从构造函数调用的类添加了一个刷新方法.刷新方法也通过应用程序的管理部分提供.在某些时候,我注意到数据已更新,无需手动触发,这意味着静态构造函数不止一次运行.

有几种情况我可以合理地看到这种情况发生,例如未处理Exception导致重新初始化.但我很难复制这个,所以我想肯定.

c# asp.net-mvc

6
推荐指数
2
解决办法
3208
查看次数

延迟执行中的数组子字符串

在LINQ中是否有任何方法可以在延迟执行中获取数组的子集(意味着在枚举时复制,而不是构建时)?

c# linq

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

为什么我的WPF突然反叛?

我最近完成了一个相当大的(一个人)WPF项目,并开始编写一些有趣的东西.我几乎完成了一个值得向朋友和同事展示的应用程序,我开始玩窗口大小 - 手动调整窗口大小 - 只是为了看看各种屏幕上会发生什么.

发生了什么 - 我的窗口因某些窗口大小而损坏,特别是在大约100x100范围内.我很困惑,并开始从XAML,我的代码,一切中删除部件.但问题仍然存在.

最后,我创建了一个全新的WPF项目 - 我甚至没有更改名称 - 它被称为WpfApplication1.当然,会出现相同的文物.它们比应用程序更精细,但仍然清晰可见.

这个窗口故意留空

发生什么了?

我意识到最明显的答案是检查我的显卡驱动程序,我会尝试降级到早期版本; 但同时请注意,我对一个人的项目相当大 -项目完美无缺,它甚至使用DirectX着色器!而且我在前一周安装了最新的驱动程序,当时我还重新安装了Windows.

我正在运行带有所有补丁的Windows Server 2008 R2,带有SP1的 vanilla Visual Studio - 没有实验编译器或任何东西.

编辑

  • 问题只发生在我的机器上,如果我在我的机器上编译并在另一台机器上运行,问题就不明显了.

  • Bran新项目的XAML很简单:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

编辑2

似乎最新的Catalyst驱动程序存在某种问题- 11.8.安装11.7修复了问题作为一种解决方法,因为,预期.神秘有点解决了,除了为什么 ......

那么有谁知道为什么最新的催化剂会对WPF造成严重破坏?

wpf

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

一般的OOP和特别的C# - 构造函数应该快速返回吗?

我正在为我的工作重构一些旧代码.一些白痴(我,2年前)写了一些我觉得很臭的东西.我有这种感觉(我可能会在某处阅读并忘记源代码)C#中的构造函数应该快速返回,因为有一些技术细节,可能与垃圾收集有关.即以下

class A
{
     public object Result {get; private set;}
     private object RunLongOperation(){/* ... */}
     public A(){
         Result = RunLongOperation();
     }
}
Run Code Online (Sandbox Code Playgroud)

是不好的做法.所以我的问题是双重的 - 它真的很糟糕,如果是这样,为什么呢?以上可以改写为

class A
{
     public object Result {get; private set;}
     private static object RunLongOperation(){/* ... */}
     private A() { }
     public static A Make(){
        return  new A { Result = RunLongOperation() };
     }
}
Run Code Online (Sandbox Code Playgroud)

通过一种工厂静态方法.这对我来说似乎代码不是必要的,但实际的对象很快就构建了.

为了照亮光线,构造函数会获取一些参数并渲染图像RunLonOperation(),并根据输入参数执行其他一些操作.然后该类缩减为不可变结果容器.根据参数,操作大约需要10到20秒.

c# oop

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

是否有可以将功能作为任务运行的visual studio扩展?

我经常会有一些我想要执行的代码,例如种子数据库,删除数据库,从数据库下载一些数据并以一些有趣的方式整理它.所有这些任务都可以表示为C#中的独立函数.

Ala控制台应用程序:

class Program{
      static void Task1(){}
      static void Task2(){}
      static void Main(){
          //Task1();
          //Task2();
      }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我注释掉了我不想调用的函数,并运行我想要调用的函数.编译并等待结果.

我正在寻找一种简化这一过程的方法.例如,在单元测试中,您可以右键单击一个函数,并通过一些魔术直接从Visual Studio执行该函数.

也许有一个扩展可以做到这一点,但我一直无法找到它.到目前为止,我知道清理这个的最好方法是在LinqPad中制作片段.但我觉得我应该能够直接从Visual Studio中完成这项工作.

c# visual-studio visual-studio-extensions

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