Skip to content

Instantly share code, notes, and snippets.

@cairey
cairey / gist:975ea7ab2ccdab48af95
Created Feb 7, 2016
Grab an UTC timecode from an offset in seconds on a Unified Streaming Server. Takes it to account encoder reconnects / restarts.
View gist:975ea7ab2ccdab48af95
def timecode_from_offset (nokogiri_doc, pos_in_secs, in_point_utc)
utc_result = in_point_utc
video_el = nokogiri_doc.search('video').first
c_els = video_el.css('c')
final_c_els = []
total_seconds = pos_in_secs
c_els.each do |c_el|
end_of_c_utc = DateTime.parse(c_el['end'])
if end_of_c_utc > in_point_utc
@cairey
cairey / OffsetFromTimecode.cs
Created Feb 7, 2016
Grab an offset in seconds from a UTC timecode on a Unified Streaming Server. Takes it to account encoder reconnects / restarts. This is the C# version.
View OffsetFromTimecode.cs
public double GetOffsetFromTimecode(Guid eventId, DateTime startPos, DateTime inPoint)
{
startPos = startPos.ToUniversalTime();
inPoint = inPoint.ToUniversalTime();
var ismUrl = _configuration.GenerateIsmStreamUrl(eventId);
var streamUrl = ismUrl + "/archive";
var doc = XDocument.Load(streamUrl);
var videoEl = doc.Descendants().First(x => x.Name.LocalName == "video");
@cairey
cairey / offset_from_timecode.rb
Created Feb 7, 2016
Grab an offset in seconds from a UTC timecode on a Unified Streaming Server. Takes it to account encoder reconnects / restarts. This is the Ruby version.
View offset_from_timecode.rb
def offset_from_timecode (nokogiri_doc, start_pos_utc, in_point_utc)
video_el = nokogiri_doc.search('video').first
c_els = video_el.css('c')
final_c_els = []
total_seconds = 0
start_pos_time = Time.parse(start_pos_utc.to_s)
c_els.each do |c_el|
end_of_c_utc = DateTime.parse(c_el['end'])
final_c_els << c_el if end_of_c_utc > in_point_utc
@cairey
cairey / unfollow.js
Created Feb 7, 2016
Unfollow people that do not follow you on Twitter
View unfollow.js
/* Scroll to the bottom of https://twitter.com/following
Open the Console and run the following
*/
$('.ProfileCard-content').each(function(){var status = $(this).find('.FollowStatus').text();var unfollowButton = $(this).find('.user-actions-follow-button');if(status != 'follows you'){unfollowButton.click();}});
View gist:fb5dd88838b57ca27107
public class HashedUrl
{
private readonly string _secretKey;
private readonly string _urlToHash;
private readonly DateTime _startDate;
private readonly DateTime _endDate;
/// <summary>
/// Hash a url
/// </summary>
@cairey
cairey / gist:5501024
Last active Apr 15, 2019
Programmatically start IIS Express from code.
View gist:5501024
public static class IISExpress
{
private static readonly List<string> sites = new List<string>();
private static readonly List<string> paths = new List<string>();
public static void StartIISExpress(string site, int port = 7329)
{
if(!sites.Contains(site.ToLower()))
sites.Add(site.ToLower());
else return;
@cairey
cairey / VSSolutionInspection.tt
Created May 1, 2013
Inspect the Visual Studio solution and project settings using T4 template code gen.
View VSSolutionInspection.tt
<#@ template language="C#" debug="true" hostSpecific="true" #>
<#@ output extension=".cs" #>
<#@ Assembly Name="System.Core.dll" #>
<#@ assembly name="EnvDTE" #>
<#@ Assembly Name="System.Windows.Forms.dll" #>
<#@ Assembly name="System.Configuration"#>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>
<#@ import namespace="System.Linq" #>
@cairey
cairey / gist:4563456
Created Jan 18, 2013
iTextSharp PdfStamper stream to MVC File Result
View gist:4563456
public virtual ActionResult PdfDownloadTravel()
{
var reader = new PdfReader(Server.MapPath("~/pdf/travel_insurance_card.pdf"));
var outputPdfStream = new MemoryStream();
var stamper = new PdfStamper(reader, outputPdfStream) { FormFlattening = true, FreeTextFlattening=true };
var form = stamper.AcroFields;
form.SetField("Name", "");
form.SetField("number", "500-0000324");
@cairey
cairey / gist:3917111
Created Oct 19, 2012
MSTestContrib BDD Extensions
View gist:3917111
namespace MSTestContrib.Specifications
{
public static class BDDExtensions
{
public static ThenGrammar Then(this WhenGrammar whenGrammar, string description, Action<SpecificationContext> implementation)
{
Func<SpecificationContext, bool> implementationWithReturnTrue = (x) =>
{
implementation(x);
return true;
View UnitOfWorkBehaviorAttribute.cs
public class UnitOfWorkBehaviorAttribute : Attribute, IContractBehavior, IContractBehaviorAttribute
{
public void Validate(ContractDescription contractDescription, ServiceEndpoint endpoint)
{ }
public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime)
{
foreach(var operation in dispatchRuntime.EndpointDispatcher.DispatchRuntime.Operations)
{
operation.CallContextInitializers.Add(new PCMUnitOfWorkCallContextInitializer());
You can’t perform that action at this time.