我们已经git-lfs成功使用了几年。但是,我们会定期添加包含在git-lfs. 我们转移到的最新文件类型之一git-lfs是我们的所有*.csv文件。
问题是我们*.csv的历史记录中有几个非常大的文件在初始迁移中没有被捕获,我也需要将这些文件移动到。git-lfs(我们正在从 BitBucket 迁移到 GitHub,GitHub 对允许的最大文件大小有更严格的规则,因此我需要确保所有旧的大文件也都打开git-lfs。)
最明显的方法是这样的:
git lfs migrate import --everything --include="*.csv"
当我运行该命令时,它似乎成功了。它重写历史,输出看起来像这样:
PS E:\source\swyfft_web_ken> git lfs migrate import --everything --include="*.csv"
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (131623/131623), done.
development 1b042eeebfb346af8f7e90d1f6c7b6abfc64d014 -> 1b042eeebfb346af8f7e90d1f6c7
b6abfc64d014
feature/ks/20200205_ImsWebServicesV2 e2b5b267d5215ef48d5ef4e3f0924613c6076cd7 -> e2b5b267d5215ef48d5ef4e3f092
4613c6076cd7
master 2029338210697c795a536faa9dd4c141c6edd6c2 -> 2029338210697c795a536faa9dd4
c141c6edd6c2
1.0 752143ee1b87020e9b285886b3986703d6c74a38 -> 752143ee1b87020e9b285886b398
6703d6c74a38
1.1 5fefda3de45651107218a953e789ea5121002756 -> 5fefda3de45651107218a953e789
ea5121002756
1.2 30f87f08e672d10de0029985ad5acc1bf5a82457 -> 30f87f08e672d10de0029985ad5a
cc1bf5a82457 …Run Code Online (Sandbox Code Playgroud) 我正在尝试让TypeScript源代码调试在Chrome中运行,但我遇到了两个特定的,也许是相关的问题.
第一个是由TypeScript/WebEssentials编译器生成的用于标识源映射文件位置的注释如下所示:
//sourceMappingUrl=MySourceFile.js.map
但Chrome不会读取该文件.似乎期望评论看起来像这样:
//@ sourceMappingUrl=MySourceFile.js.map
如果我手动将评论更改为该页面,并刷新我的页面,那么奇怪的是,所有.ts文件的引用都显示为Chrome开发者工具中的来源.
但是,这导致了我的第二个问题,因为文件实际上并没有被加载.Chrome 应该尝试下载的.ts源文件是http://localhost/MySourceFile.ts,但它实际上要下载的是http://localhost/C:/source/web/MySourceFile.ts.这是有道理的,因为MySourceFile.js.map的开放属性如下所示:
{"version":3,"file":"tmp1523.tmp","sources":["C:/source/web/MySourceFile.ts"
但这显然不适用于Chrome,因为它将源映射位置解释为完全相对,而IIS(非常正确)不会提供任何看起来像的URL http://localhost/C:/source/web/MySourceFile.ts.
那么,关于这两个问题,Chrome或TypeScript源映射功能是错误的吗?这样做的推荐方法是什么?
我使用的是Chrome 25.0.1323.1 dev-m,TypeScript 0.8.1和WebEssentials 1.8.5.
由于各种原因,当建立SignalR连接时,我将ConnectionId存储在我的数据存储区中.但是,例如,如果SignalR重新启动,那些连接记录可能会变为孤立.(我也观察到行为让我怀疑OnDisconnected()是否被正确调用,尽管我对此不太确定.)
但无论出于何种原因,我会定期在我的数据库中找到孤立的记录,我希望能够修剪那些,并删除任何实际上没有连接的ConnectionID - 大概是让SignalR告诉我是否此ConnectionID仍与实时会话相关联.
我已经查看了SignalR信号源,并没有向我跳出如何最好地完成此任务.有合理的方法吗?
我正在尝试为我的WebApi控制器实现CORS支持,我在这里遵循这个例子.
我的处理程序如下所示:
/// <summary>
/// Taken from http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx
/// </summary>
public class CorsHandler : DelegatingHandler
{
private const string Origin = "Origin";
private const string AccessControlRequestMethod = "Access-Control-Request-Method";
private const string AccessControlRequestHeaders = "Access-Control-Request-Headers";
private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
private const string AccessControlAllowMethods = "Access-Control-Allow-Methods";
private const string AccessControlAllowHeaders = "Access-Control-Allow-Headers";
private const string AccessControlAllowCredentials = "Access-Control-Allow-Credentials";
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var isCorsRequest = request.Headers.Contains(Origin);
var isPreflightRequest = request.Method == HttpMethod.Options;
if …Run Code Online (Sandbox Code Playgroud) 我正在使用适用于.NET的Windows Azure存储库4.3.0版.在我的ATS存储库类中,我有几个批处理删除方法,如下所示:
public async Task DeleteAsync(IEnumerable<T> entities)
{
await ExecuteAsBatch(entities, (batch, entity) => batch.Delete(entity));
}
private async Task ExecuteAsBatch(IEnumerable<T> entities, Action<TableBatchOperation, T> batchAction)
{
var byPartition = entities.GroupBy(x => x.PartitionKey).ToList();
await byPartition.ForEachParallel(async group =>
{
// A maximum of 100 actions are allowed per batch job
var segments = group.ToList().ToSegmentedList(100);
await segments.ForEachParallel(async segment =>
{
var batch = new TableBatchOperation();
foreach (var entity in segment)
{
batchAction(batch, entity);
}
await Table.ExecuteBatchAsync(batch);
}, 10);
}, 10);
}
Run Code Online (Sandbox Code Playgroud)
在我的代码的其他地方,该DeleteAsync()方法正常工作.但是,在一个特定的地方,我在执行批处理时收到此错误消息:
Unexpected …Run Code Online (Sandbox Code Playgroud) 我正在开发一个大型Silverlight应用程序,它使用双工Net.TCP与WCF后端通信.我正在将这个应用程序从MVC方法转移到MVVM.但是,我正在努力使用正确的方法来实现我的ViewModel.我们正在为我们的模型使用WCF生成的代理,这个代理非常复杂,涉及许多类,大量集合以及各种多对多关系.例如,用户可以属于许多房间,房间可以有许多用户,用户可以有许多SharedFiles,并且每个SharedFile可以与用户当前所属的任何房间共享.诸如此类的事情.
最重要的是,由于我们在双工模式下使用WCF,因此可以由最终用户或后端的WCF服务触发对模型的更改.换句话说,我们使用的模型比您在各种MVVM书籍/文章/博客文章中看到的典型"模型"复杂几个数量级.这就是问题所在,因为保持我们的ViewModel层与底层模型层同步变得有点麻烦.
这是一个典型的问题.新的"用户"加入"房间",因此WCF服务向房间中的所有其他用户发出"SessionAdded"通知.SessionAdded通知带有一个Session对象,该对象具有链接的Room和链接的User对象.从WCF服务反序列化的Room对象与本地客户端上的Room对象基本相同,并且可能具有大部分相同的数据,但它肯定没有所有相同的数据,并且至少有一些数据(就像它的null Whiteboards集合)肯定是错误的.所以我们需要以某种方式获取这些传入的数据并将其合并到我们现有的模型中.然后我们需要在每个新对象的基础上创建ViewModel,和/或用新对象和/或它们的数据更新现有的ViewModel.
现在我们通过让各种ViewModel响应相关的WCF通知事件来处理这个问题,并尽力修复它们的底层模型和相关的视图模型.我们已经找到了一些技巧,比如一个SynchronizedObservableCollection(模糊地像这里的那个),它监视(说)Room.Sessions ObservableCollection并自动创建相应的SessionViewModels并将它们放在RoomViewModel.SessionViewModels集合中.我们还使用ViewModelFactory来缓存视图模型,并确保包装给定Session的SessionViewModel保持不变,即使底层Session对象被更改了.(如果重要的话,我们使用的是viewmodel-first方法,因为我们需要的很大一部分是为了响应由我们的WCF通知触发的ViewModel中的更改而创建新的UI元素.)
所有这一切都有效.基本上.大多数时候.你懂.但是要维护的代码很多,而且很容易出错.单元测试很方便,只要你能记住应该发生的事情,但是当你完成处理你的第20次级联CollectionChanged事件时,很难跟踪所有这些如何组合在一起以及你首先测试的是什么.换句话说,这一切都非常脆弱.
在我看来,这是许多人必须遇到的那种场景,我很好奇其他人是如何面对它的.我可以想到一些方法可能会让它变得更好:
(1)将客户端模型视为一种需要保持完全一致的数据库,并实现客户端数据访问层,其作用是保持模型的一致性.无论是来自用户还是服务器,对模型的所有更新都需要通过该层.它有点像实体框架,因为它myRoom.Users.Add(myUser)会自动设置myUser.Room = myRoom,反之亦然,等等.(这尤其是某个地方应该已经开发出来的部分,尽管我还没有找到它.)
(2)倾向于使用Truss或Obtics这样的东西来保持所有部分的同步.不太确定它是如何工作的,但它在理论上听起来应该是可能的.
还有什么?我很好奇用于解决这个问题的模式或框架.
这是我提出的另一个问题的后续行动,但有更准确的信息.
我有两个基本相同的Web页面演示WebRTC,一个使用XSockets作为后端信令层,一个使用SignalR作为后端信令层.
这两个后端基本相同,只是在它们(显然)有不同的方式将数据发送到客户端的点上有所不同.同样,两个客户端上的TypeScript/JavaScript WebRTC代码完全相同,因为我已经抽象出了信令层.
问题是XSockets站点工作一致,而SignalR站点失败(大多数是一致的,但并非完全).通常它在调用时失败peerConnection.setLocalDescription(),但它也可能无声地失败; 或者它(有时)甚至可以工作.
您可以在此处查看两个不同的页面:
XSockets网站:http://xsockets.demo.alanta.com/
SignalR网站:http://signalr.demo.alanta.com/
两者的源代码位于https://bitbucket.org/smithkl42/xsockets.webrtc,xsockets分支上有XSockets版本,分支上有SignalR版本signalr.
所以我的问题是:有没有人知道为什么使用一个信号层而不是另一个信号层会对WebRTC产生任何影响?例如,一个或另一个发回Unicode字符串而不是ANSI吗?或者我误解了这个问题,真正的区别在于其他地方?
我们一直在Windows Azure上使用混合体系结构,将大多数实体存储在SQL Azure数据库中,但是将任何可能需要大量存储空间的内容丢入Azure表存储中.
但是,使用这种架构,我们遇到了Azure桌面存储的各种问题,这让我觉得它是一个不成熟且不完整的产品.最大的限制是,出于所有实际目的,它是一个只写数据存储.大家一致认为它的写入功能非常非常好,但它的查询和索引功能是如此惊人地限制(尽管多年来用户抱怨和微软承诺),我得出结论你应该基本上只尝试检索数据在紧急情况下退出ATS.从复杂的实时交易生产应用程序中获取数据比使用它更困难.当然,有一些解决方法,比如维护多个数据副本,为每个副本分配不同的索引策略,或者拆分查询并并行运行它们,但是当云服务的整个要点最小化时,这会增加复杂性.
也就是说,我们现在已经致力于Azure,我希望对替代方案和陷阱有很好的理解,最好是那些实际上已经走上这条道路的人们.
我非常清楚那里有很多NoSQL选项(例如,这个问题中列出的所有选项:针对.NET的NoSQL解决方案是什么?)我可以在VM或其他云上运行.但我特别想知道Azure的PAAS模型是否适合.换句话说,如果我在Azure上,并且不想管理我自己的VM,并希望尽可能接近ATS承诺的几乎自动且几乎无限的可扩展性(尽管从未完全交付),有哪些选择人们发现有价值?是的MongoDB/Azure的包装器的简单和可行的替代方案?或者我应该咬紧牙关并启动我自己的VM?或切换到AWS?还是坚持使用Azure SQL?
(为了让您了解我们的尺寸要求:我们认为我们需要存储超过10亿行.不是很大,但也不可忽略不计.)
我正在尝试使用Angular JS 1.2来运行高度动画.我在这里有一个有关闭项目动画的动画:
http://plnkr.co/edit/YVtnXgjO3Evb6tz5DJOp?p=preview
关键位是这个CSS:
.accordion-body {
height: 100px;
-webkit-transition: 0.5s linear all;
transition: 0.5s linear all;
}
.accordion-body.ng-hide-add,
.animate-show.ng-hide-remove {
display: block !important;
}
.accordion-body.ng-hide-add{
}
.accordion-body.ng-hide-remove{
}
.accordion-body.ng-hide {
height:0;
}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何让它开启项目.我显然在做脑死亡 - 我错过了什么?
我正在针对Azure表存储运行一系列结构良好的查询,据我所知,这应该是亚秒级返回.实际上,如果我手动运行它们(例如,从Visual Studio中的Azure工具),它们确实会立即返回.但是当我在生产中运行它们时,它们有时会花费20-30秒来返回.
这是我用ATS调用的C#代码:
public async Task<IList<T>> FindAsync(string filter, int maxRecords = int.MaxValue, IList<string> columns = null)
{
var returnList = new List<T>();
try
{
Interlocked.Increment(ref _outstandingRequests);
var query = new TableQuery<T>().Where(filter);
if (columns != null && columns.Any())
{
query = query.Select(columns);
}
TableQuerySegment<T> querySegment = null;
var sw = new Stopwatch();
sw.Start();
while (returnList.Count < maxRecords && (querySegment == null || querySegment.ContinuationToken != null))
{
try
{
await 3.RetriesAsync(async x =>
{
querySegment = await
Table.ExecuteQuerySegmentedAsync(query,
querySegment != null ? …Run Code Online (Sandbox Code Playgroud) azure ×2
c# ×2
signalr ×2
angularjs ×1
cors ×1
git ×1
git-lfs ×1
github ×1
mvvm ×1
nosql ×1
silverlight ×1
source-maps ×1
typescript ×1
wcf ×1
webrtc ×1
xsockets.net ×1