Skip to content

Instantly share code, notes, and snippets.

View op1ekun's full-sized avatar

Lukasz Piatkowski op1ekun

View GitHub Profile
@davatron5000
davatron5000 / Sublime Text Setup.md
Last active April 15, 2023 15:39
A new user's guide to SublimeText 2. Estimated reading time: 2 mins. Estimated workthrough time: 12 minutes.

Make it useful

  • Install Package Control. For SublimeText 2, paste the following in Terminal:
import urllib2,os; pf='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read()); print( 'Please restart Sublime Text to finish installation')

From here on out, use Package Control to install everything. +Shift+P, then type Install to get a list of installable packages you can 'livesearch through. After installing plugins, they should be running.

@op1ekun
op1ekun / config.js
Created October 20, 2013 15:14
YUI jquery + jquery plugins loader
// LOAD 3rd party libraries as commonJS modules
var module = {
exports : {}
};
var exports = {};
var config = (function() {
var BASE = '//localhost:8888/';
return {
@op1ekun
op1ekun / jasmine_yui_ajax_mock.js
Created October 1, 2013 08:15
How to easily mock ajax calls using Jasmine's spies. Binds on success callback to the custom object to simulate get('responseData') method.
it('test AJAX mock', function() {
spyOn(Y.io, 'request')
.andCallFake(function(url, config) {
console.log('fake ajax', arguments);
var bound = config.on.success.bind({
'get' : function(name) {
if (name === 'responseData') {
return {
@op1ekun
op1ekun / fancy_ prompt.sh
Created August 23, 2013 21:24
Git branch + git status in prompt
function _fancy_prompt {
local RED="\[\033[01;31m\]"
local GREEN="\[\033[01;32m\]"
local YELLOW="\[\033[01;33m\]"
local BLUE="\[\033[01;34m\]"
local WHITE="\[\033[00m\]"
local PROMPT=""
# Working directory
@op1ekun
op1ekun / 3rd_party_loader.js
Created June 25, 2013 07:27
Using YUI Loader's onProgress callback to load 3rd party libraries as custom modules. Still needs a little bit of tweaking...
var module = {
exports : {}
};
var exports = {};
YUI({
modules : {
'jquery' : {
fullpath : 'http://code.jquery.com/jquery-1.10.1.min.js'
},
@bomsy
bomsy / Comments
Created December 7, 2012 15:34
Sharing data between tasks
In the scenario below task2 depends on the result from task1 which is stored
in value property of the meta object(this is just an example) which does not initially exist but is created from within
task1. task2 can later have access to the value using <%= meta.value %> at a later time.
This way two tasks can share data..
There may be better ways of doing this, if you have come across please share
@gschema
gschema / intro.md
Last active November 27, 2023 04:35
Basic JavaScript MVC Implementation

Basic JavaScript MVC Implementation

Despite being derived from classical MVC pattern JavaScript and the environment it runs in makes Javascript MVC implementation have its own twists. Lets see how typical web MVC functions and then dive into simple, concrete JavaScript MVC implementation.

How Web MVC typically works

Typical server-side MVC implementation has one MVC stack layered behind the singe point of entry. This single point of entry means that all HTTP requests, e.g. http://www.example.com or http://www.example.com/whichever-page/ etc., are routed, by a server configuration, through one point or, to be bold, one file, e.g. index.php.

At that point, there would be an implementation of Front Controller pattern which analyzes HTTP request (URI at first place) and based on it decides which class (Controller) and its method (Action) are to be invoked as a response to the request (method is name for function and member is name for a variable when part of the class/object).

@domenic
domenic / promises.md
Last active May 13, 2026 13:10
You're Missing the Point of Promises

This article has been given a more permanent home on my blog. Also, since it was first written, the development of the Promises/A+ specification has made the original emphasis on Promises/A seem somewhat outdated.

You're Missing the Point of Promises

Promises are a software abstraction that makes working with asynchronous operations much more pleasant. In the most basic definition, your code will move from continuation-passing style:

getTweetsFor("domenic", function (err, results) {
 // the rest of your code goes here.
@leostratus
leostratus / webkit-pseudo-elements.md
Created September 21, 2012 01:44
Webkit Pseudo-Element Selectors (Shadow DOM Elements)

An ongoing project to catalogue all of these sneaky, hidden, bleeding edge selectors as I prepare my JSConf EU 2012 talk.

Everything is broken up by tag, but within each the selectors aren't particularly ordered.

I have not tested/verified all of these. Have I missed some or got it wrong? Let me know. - A

A friendly reminder that you may need to set this property on your target/selected element to get the styling results you want:

-webkit-appearance:none;

@domenic
domenic / promise-retryer.js
Last active September 16, 2023 02:43
Generalized promise retryer
"use strict";
// `f` is assumed to sporadically fail with `TemporaryNetworkError` instances.
// If one of those happens, we want to retry until it doesn't.
// If `f` fails with something else, then we should re-throw: we don't know how to handle that, and it's a
// sign something went wrong. Since `f` is a good promise-returning function, it only ever fulfills or rejects;
// it has no synchronous behavior (e.g. throwing).
function dontGiveUp(f) {
return f().then(
undefined, // pass through success