Skip to content

Instantly share code, notes, and snippets.

Tim Strehle tistre

Block or report user

Report or block tistre

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@tistre
tistre / asset-ingestion.bpmn
Last active Aug 16, 2019
Simple Camunda example: Handling external tasks with PHP
View asset-ingestion.bpmn
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0w41w6f" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.2">
<bpmn:process id="asset-ingestion" name="Asset Ingestion" isExecutable="true">
<bpmn:startEvent id="StartEvent_1" name="Asset to be ingested">
<bpmn:outgoing>SequenceFlow_16kf6eb</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_16kf6eb" sourceRef="StartEvent_1" targetRef="extract-metadata" />
<bpmn:serviceTask id="extract-metadata" name="Extract metadata" camunda:type="external" camunda:topic="asset-extract-metadata">
<bpmn:incoming>SequenceFlow_16kf6eb</bpmn:incoming>
@tistre
tistre / js-component-demo-dcc-components.js
Created Feb 16, 2017
Simplistic JavaScript component architecture demo
View js-component-demo-dcc-components.js
/* A sample "Die" component using the "library" */
/**
* Create a "Die" component instance
*
* Creates an anonymous object you can only interact with using events.
*
* @param object config componentConfig.config object from the component JSON data
* @constructor
@tistre
tistre / intldateformatter_error_handling.php
Last active Dec 7, 2015
Lack of error handling in IntlDateFormatter::localtime()
View intldateformatter_error_handling.php
<?php
// Correct input value:
// $value = 'Wednesday, December 18, 2014 4:05:06 PM PT';
// Wrong input value that I suppose should rather return false:
$value = 'XXX';
$formatter = new IntlDateFormatter
(
@tistre
tistre / planetdam_easyrdf_demo.php
Created Jul 10, 2015
Minimal example for parsing planetdam.org RDF/XML using EasyRDF
View planetdam_easyrdf_demo.php
<?php
/*
Minimal example for parsing http://planetdam.org article list RDF/XML
using http://www.easyrdf.org
1) Install Composer, see http://www.easyrdf.org/docs/getting-started :
curl -s https://getcomposer.org/installer | php
@tistre
tistre / charcheck.php
Created May 29, 2015
Check files for Unicode U+00A0 No-Break Space
View charcheck.php
<?php
// Find invisible non-breaking spaces in source code
// which can cause errors in PHP and JavaScript.
//
// see: http://www.strehle.de/tim/weblog/archives/2013/02/26/1563
//
// Usage:
// php charcheck.php path/to/*.php
// or:
@tistre
tistre / test.js
Last active Aug 29, 2015
How I do private and public in JavaScript. No “this”, no “new”! Drawback compared to .prototype: Objects hold copies of functions.
View test.js
// Factory function
var Greeter = function(config)
{
// Hold public and private variables and functions in two objects:
var _public = { };
var _private = { };
// Storing "constructor" parameters in a private variable
@tistre
tistre / ie_upload.php
Last active Aug 29, 2015
Internet Explorer 9 and 10 do not submit the form if a file input click has been triggered
View ie_upload.php
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<?php
if ($_SERVER[ 'REQUEST_METHOD' ] === 'POST')
{
if (isset($_FILES[ 'file' ]) && isset($_FILES[ 'file' ][ 'tmp_name' ]) && is_uploaded_file($_FILES[ 'file' ][ 'tmp_name' ]))
@tistre
tistre / gist:575ef1f0220097c7a585
Last active Aug 29, 2015
jQuery.Deferred(): If an array contains promises, replace them with the real value once resolved
View gist:575ef1f0220097c7a585
// Usage:
// resolvePromisesInArray(values_with_promises).then(function(values_resolved)
// { console.log(values_resolved); });
function resolvePromisesInArray(values)
{
var deferred, deferred_values;
if (! $.isArray(values))
{
@tistre
tistre / cookies_from_raw_http_response.php
Created Apr 7, 2014
Parse cookies from raw HTTP response using PHP’s pecl_http
View cookies_from_raw_http_response.php
<?php
$msg = <<<EOT
HTTP/1.1 200 OK
Date: Mon, 07 Apr 2014 08:29:07 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.20
Set-Cookie: dcx_app_trunk=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/dcx_trunk/
Set-Cookie: dcx_app_trunk=33mnkpiau2s80uhrtb7a105l23; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
@tistre
tistre / gist:9239838
Last active Aug 29, 2015
Bookmarklet to open the dialog for creating a Google Calendar event from a MantisBT issue detail page. Quick & dirty, works for me.
View gist:9239838
javascript: var title = 'Mantis #' + document.title.substring(2, (document.title.length - 11)); var url = 'https://www.google.com/calendar/render?action=TEMPLATE&sf=true&output=xml&text=' + encodeURIComponent(title) + '&details=' + encodeURIComponent('Details in Mantis: ' + location.href); window.open(url, 'mantisgcal', 'scrollbars=yes,width=1200,height=800,top=175,left=75,status=no,resizable=yes'); if (!document.all) T = (setTimeout('popw.focus()',50)); void(0);
You can’t perform that action at this time.