我有一个GitHub仓库,有两个分支 - 主和发布.
发布分支包含二进制分发文件,这些文件导致了非常大的repo大小(> 250MB),所以我决定清理一下.
首先,我删除了远程发布分支 git push origin :release
然后我删除了本地发布分支.首先我试过git branch -d release,但是git说"错误:分支'释放'不是你当前HEAD的祖先." 这是真的,所以我git branch -D release强迫它被删除.
但是我在本地和GitHub上的存储库大小仍然很大.所以然后我浏览了通常的git命令列表,比如git gc --prune=today --aggressive没有运气.
按照Charles Bailey在SO 1029969的指示,我得到了最大blob的SHA1列表.然后我使用来自SO 460331的脚本 来找到blob ......并且五个最大的不存在,虽然找到了较小的blob,所以我知道脚本正在工作.
我认为这些博客是发布分支中的二进制文件,它们在删除该分支后不知何故.什么是摆脱它们的正确方法?
我有一张照片的灰度图像.我已经确定图像的某些部分是欠发光的,并且亮度Y = 0.8的像素实际上应该调整为90%灰度,即该像素应该被赋予亮度0.9.我的问题是如何缩放附近的其他像素? 我很确定将所有亮度乘以9/8是错误的,因为我依稀记得听说为了看起来一致,缩放必须是非线性的.但我很难找到一个可以让我取得进步的等式.(当然,我实际上正在编写一个程序来对很多照片进行调整.)
我的像素来源是pbmplus PGM格式,手册页的内容如下:
每个灰度值是与像素强度成比例的数字,由CIE Rec调整.709伽马传递函数.(该传递函数指定的伽玛数为2.2,并且对于小强度具有线性部分).因此,零值为黑色.Maxval的值表示CIE D65白色和图像中可能与之比较的任何其他图像中最强的值.
如果我更好地理解这一点,我可能会更好地了解如何继续.
我发现了一个关于制作均匀亮度图像的相关问题.
感谢Shmoopty让我走上正轨.我接受了你的回答然后添加了一些信息.
我有两种相互重载的方法
public class Car
{
public int GetPrice(string vinNumber)
{
string make = Database.GetMake(vinNumber); // expensive operation
string model = Database.GetModel(vinNumber); // expensive operation
int year = Database.GetYear(vinNumber); // expensive operation
return this.GetPrice(make, model, year);
}
public int GetPrice(string make, string model, int year)
{
// Calculate value and return
}
}
Run Code Online (Sandbox Code Playgroud)
在我的示例中,GetPrice(make,model,year)重载执行起来很便宜,但GetPrice(vinNumber)方法很昂贵.问题是昂贵的方法具有最少的参数,它首先出现在C#intellisense中.
这两种方法都是有效的,但我想鼓励人们称之为便宜的方法.但是在选择要调用的方法之前,人们往往不会查看Intellisense中的所有重载,并且在我公司的代码库中经常调用昂贵的重载.
有没有办法告诉Visual Studio为特定方法提供"intellisense优先级",以便它首先显示?
我想知道为什么或(为什么不)应该(或不应该)使用这个陈述的想法.
由于这是一个小主观,这是我的标准:由于具体原因(与无理的意见相对)给出的Upvotes.接受的最终答案将是最全面的答案.
奇怪的问题.也许有人可以提供一些见解.
场景1.我在内存中有一个写入的TBitmap,同时进行复杂的计算以计算每个像素的颜色.每隔一段时间(通常在填充位图的每条水平线之后)TBitmap都会被绘制到窗体上的图像(image1.Canvas.Draw(0,0,TBitmap).大部分时间这都工作正常,但我注意到了如果每个位图行有很多缓慢的复杂计算(比如计算时间超过30秒或一分钟),那么主表单会有一个瞬间"闪烁",以某种方式擦除位图,因此image.draw调用只绘制最新计算的行和前y行在位图中被消隐.我通过在计算之前锁定位图来解决这个问题.
情景2. 这是主要的麻烦.我写的是TMemoryStream而不是位图.同样的交易.进行计算以计算每个像素值,然后在处理过程中使用memstream.Write(bytevalue,1)将每个像素值写入TMemoryStream.在所有计算结束时,我使用memstream.SaveToFile('whatever.bmp')将流保存到位图,然后使用memstream.Free释放流.如果计算速度很快,那么无论大小如何,流都会保存(我正在使用10000x10000尺寸进行测试).
我甚至可以判断生成的文件是否会损坏,因为主应用程序窗口/窗体确实有轻微的闪烁,就像它被重新绘制一样.当发生这种情况时,就好像每个位图和TMemoryStream句柄都被杀死/刷新,因此现有数据已损坏.
有任何想法吗?这真的很糟糕.特别是当每个单个图像可能需要一个小时来创建时才发现它在后台发生了某些事情并且损坏了位图或TMemoryStream.
我有没有办法像位图一样锁定TMemoryStream句柄?这可能有所帮助.或者一些声明告诉Delphi"不要弄乱我的对象,即使看起来应用程序花了太长时间"
或者有没有人知道Delphi中导致这种情况发生的后端原因.
TMemoryStream是在执行所有计算的过程内创建的,因此是本地对象.对于位图问题,位图是程序之外的全局变量,它发生了,所以我不认为这是原因.
这也是在Windows 7下,但我注意到Vista下的原始位图问题.
更新1:
很抱歉没有使用评论,但有文字大小的重新提交...
回复雷米(和其他读这篇文章的人)......
单线程.对于内存流,如果计算速度很快,它可以在5000x5000分辨率下正常工作,但如果cals很慢则会失败.
作为一个基本框架,代码是沿着的
SetupMemorystream;
for y:=0 to height do
for x:=0 to width do
DoCalcs;
SetByteValue;
end;
end;
SaveStream;
Run Code Online (Sandbox Code Playgroud)
如果DoCalcs相对快速,那么一切都按计划进行.如果它很慢,那么我得到了TMemoryStream损坏,并且流保存到的结果位图已损坏.
这与使用内存TBitmap相同,直到我发现我可以锁定位图,这会阻止Delphi和/或Windows在"想要"时重新分配新句柄,从而破坏位图内的数据.
考虑到TMemoryStream及其句柄没有发生同样的问题,这太巧合了.
更新2:
还有一点可能是有用的信息.
当TMemoryStream保存OK时,生成的文件(对于5000x5000位图)的大小为75,000,054字节.
当保存的流损坏时,它似乎是一个随机值(从句柄损坏到保存流的大小).示例大小为22 MB和9 MB.
当我查看生成的文件是一个十六进制编辑器时,它显示文件的开头是正确的标题块,但尾部以某种方式被截断.
这太离奇了.无论如何,我可以绝对确保在SaveToFile调用之后和释放它之前刷新TMemoryStream?
在Windows窗体中,我会去BackgroundImage,只需从comboBox中选择它.但这里没有这样的财产.
我该怎么做?
所以我一直在寻找所有其他Stack Overflow帖子和谷歌周围关于如何在iFrame上自动设置高度/宽度.到目前为止,我已经完成了大约15-20个,但没有一个对我有效.让我试着解释一下我的情况:
我正在我的页面上动态设置iFrame的主体.我需要iFrame相应地自动设置其高度和宽度,以便所有文本都可见.
我需要这个在IE(7和8),FireFox 3和Chrome中工作.
以下是进入该问题的其他问题:
我在同一个域上写所有内容,所以这不是问题.
我觉得我现在拥有的只是一个装备,随时都会崩溃.它在IE中显示正确但在FireFox中具有巨大的底部边距,并且在Chrome中根本不显示(doc始终为null).
这是(我试着尽可能详细,如果我需要解释更多,请告诉我):
<script type="text/javascript">
function WriteIFrame()
{
// get the text i need to put in the iFrame (this is set from the server)
var iFrameContent = document.getElementById("<%= hiddenIFrameContent.ClientID %>").value;
var iFrameContainer = document.getElementById("divIFrameContainer");
// create the new iFrame object
var iFrame = document.createElement("iframe");
iFrame.setAttribute("id", "myIFrame");
iFrame.setAttribute("scrolling", "no");
iFrame.setAttribute("frameborder", "0");
// add the new iFrame object to the container div
iFrameContainer.appendChild(iFrame);
// find the correct inner document of the …Run Code Online (Sandbox Code Playgroud) 我一直在寻找中文的开源OCR.但没有任何运气,似乎很少有一些可用的开源OCR(中文).
所以我在这里想知道:
是否有可用于生产环境的中文开源OCR?
实施拉丁语言和中文OCR的主要区别是什么?我知道一些好的OCR,如Tesseract或Ocropus,如果我想让它支持中文,我该怎么办?
任何帮助表示赞赏,并提前感谢〜
private void HeroMouseEnter(object sender, MouseEventArgs e)
{
((Image)sender).Source = GetGlowingImage(((Image)sender).Name);
}
public ImageSource GetGlowingImage(string name)
{
switch (name)
{
case "Andromeda":
return "HeroGlowIcons/64px-Andromeda.gif";
default:
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我只是想根据鼠标输入的位置创建一个更改图像的事件.但我无法做到这一点.
编辑:我在Windows窗体中执行此操作,它100%像我想要的那样工作.我怎么能在WPF中翻译这样的东西?
void HeroMouseEnter(object sender, EventArgs e)
{
((PictureBox)sender).Image = GetGlowingImage(((PictureBox)sender).Name);
}
public Image GetGlowingImage(string name)
{
switch (name)
{
case "Andromeda":
return Properties.Resources._64px_Andromedahero___copia;
case "Engineer":
return Properties.Resources._64px_Engineerhero___copia;
default:
return null;
}
}
Run Code Online (Sandbox Code Playgroud) 使用Visual Studio 2008通过远程桌面连接进行编辑是一种耐心的疯狂练习,因为屏幕会像疯了一样重新绘制和重新绘制和重新绘制和闪烁.
这有什么简单的解决方法吗?
双方都在运行Windows 7. Vanilla Visual Studio,没有安装任何东西.从字面上看,每次按键都会导致整个窗口重新绘制,通常会重复多次.
c# ×3
wpf ×2
coding-style ×1
delphi ×1
dynamic ×1
forms ×1
gamma ×1
git ×1
handles ×1
iframe ×1
image ×1
intellisense ×1
mouseevent ×1
ocr ×1
open-source ×1
overloading ×1
pbmplus ×1
resize ×1
tesseract ×1
vb6 ×1