Skip to content

Instantly share code, notes, and snippets.

@emedvedev
emedvedev / gist:6015742
Created July 16, 2013 22:24
Brackets image preview extension
/*jslint vars: true, plusplus: true, devel: true, nomen: true, regexp: true, indent: 4, maxerr: 50 */
/*global define, $, brackets, window */
/* Simple extension that opens images for preview instead of showing the error modal. */
define(function (require, exports, module) {
"use strict";
/* Sadly enough, this is the only line of code utilizing
* Brackets' architecture in the right way. */
var Strings = brackets.getModule("strings");
/VBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAAD9aXH9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5cf1lPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i/yIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTU3NzIsIDIwMTQvMDEvMTMtMTk6NDQ6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQzNBQzhFMDNFN0MxMUU1OTFGMjhGRjIxNjJGQTAyRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDU2RTI1QzNFN0QxMUU1OTFGMjhGRjIxNjJGQTAyRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFDM0FDOERFM0U3QzExRTU5MUYyOEZGMjE2MkZBMDJGIiBzdFJlZjpkb2N1
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgTWFjaW50b3NoIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFDM0FDOEUwM0U3QzExRTU5MUYyOEZGMjE2MkZBMDJGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU0NTZFMjVDM0U3RDExRTU5MUYyOEZGMjE2MkZBMDJGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUMzQUM4REUzRTdDMTFFNTkxRjI4RkYyMTYyRkEwMkYiIHN0UmVmOmRv
@emedvedev
emedvedev / index.cgi
Created September 5, 2015 19:51
MMA CTF
#!/usr/bin/ruby
require 'cgi'
cgi = CGI::new
program = cgi['program']
result = ""
message = ""
unless program != ""
message = ""
import re
def parse(template, string):
result = {}
# getting a full list of params with their default values if present
params_list = re.findall(r'{{\s*(.+?)\s*(?:=(.+?))?\s*}}', template)
import string
class BaseNumber():
def __init__(self, number=None, numerator=None, denominator=None):
if numerator and denominator:
self.numerator = int(numerator)
self.denominator = int(denominator)
elif number:
self.num = float(number)
description "Dropbox"
author "emedvedev"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid root
env LANG="en_US.UTF-8"
@emedvedev
emedvedev / 1.2.0.md
Last active December 10, 2015 10:48
StackStorm 1.2.0 release notes draft

StackStorm 1.2.0: the new ChatOps

ChatOps — a concept where a chat bot acts as a control plane for your operations — has always been a core part of StackStorm. It adds context to your actions, automates routine tasks nobody likes, helps team members communicate better and learn from each other, and sometimes it's just plain fun. If you're new to this, check out the DevOps Next Steps talk by James Fryman, and if you've been writing Eggdrop scripts in IRC since you were five but never used it in your daily operations, you might also get inspired from the ChatOps at GitHub talk by Jesse Newland.

Today, we're all excited to introduce — as a part of our 1.2.0 release — a completely revamped ChatOps feature list. If you're already using our Hubot integration to execute StackStorm actions from chat, stop doing whatever it is you're doi

@emedvedev
emedvedev / ack.js
Last active November 30, 2015 07:28
ChatOps acknowledgement context in StackStorm
{
"actionalias": {
"uid": "action:chatops:get",
"ack": {
"format": "Got {{ execution.parameters.thing }}"
},
"enabled": true,
"name": "get",
"result": {
"enabled": false