Skip to content

Instantly share code, notes, and snippets.

@arcesino
arcesino / SkuProfilesController.groovy
Last active May 3, 2017 16:39
Grails: Split & bind comma separated string to List<String>
class SkuProfilesController {
def skuProfileService
def show() {
paramsSplit(['ids', 'fields'])
def cmd = bindData(new ListSkuProfilesCommand(), params)
if (!cmd.validate()) {
throw new EntityValidationException(cmd.errors)
}
@arcesino
arcesino / gist:5775620
Last active December 18, 2015 11:29
Projections + join with HQL query
/* Why HQL?
Cause:
* Criteria + projections + join = "joins are ignored"
* Criteria + projections + forced join = "joins not ignored but joined tables are fetched lazy"
* HQL do not need explicit join clauses; joins are inferred automatically for one-to-one & many-to-one associations
* GORM criteria is buggy
*/
@arcesino
arcesino / subime-text-3-settings
Last active August 29, 2015 13:57
My own Sublime Text settings
{
"color_scheme": "Packages/User/Solarized (Dark) (SL).tmTheme",
"ensure_newline_at_eof_on_save": true,
"ignored_packages":
[
"Vintage"
],
"save_on_focus_lost": true,
"tab_size": 2,
"translate_tabs_to_spaces": true,
@arcesino
arcesino / sublime-text-3-key-bindings
Last active August 29, 2015 13:57
My own Sublime Text key bindings
[
{ "keys": ["super+shift+k"], "command": "reveal_in_side_bar"}
]
@arcesino
arcesino / Grails-withOptimisticLocking
Created March 22, 2014 22:16
A dynamic method for deal with Optimistic Locking in Grails with retries & timeout. Please consider the following for a correct usage: 1) Call withOptimisticLocking outside any transaction, 2) Ensure only one transaction is created inside withOptimisticLocking
grailsClass.metaClass.withOptimisticLocking = { Long timeout = 3000L, Closure cls ->
def startTime = new Date().time
def duration = 0
def attempts = 0
while (true) {
try {
attempts++
cls.call()
break
} catch (OptimisticLockingFailureException e) {
# Chai assert extensions
###
Check an object is rendered.
Expects @_obj to be a jQuery object.
###
chai.Assertion.addProperty 'rendered', ->
selector = @_obj.selector
@assert @_obj.length > 0
, "expected #{selector} is not rendered"
@arcesino
arcesino / load-script-file-cross-browser
Created April 3, 2014 17:46
To load a script file with great cross-browser support
loadScript = (src, callback) ->
script = document.createElement("script")
loaded = undefined
script.setAttribute "type", "text/javascript"
script.setAttribute "src", src
if script.readyState
script.onreadystatechange = -> # For old versions of IE
callback() if @readyState is "complete" or @readyState is "loaded"
return
else # Other browsers
@arcesino
arcesino / CrackingTheCode1.java
Created July 22, 2014 21:35
Check unique ASCII chars using bit flags
public class CrackingTheCode1 {
public static void main(String[] args) {
CrackingTheCode1 app = new CrackingTheCode1();
String[] tests = new String[] {
"abc123", "abc12a", "abc122", "s3cr3t0", "!#%&/()", "#abc123#"
};
for (int i = 0; i < tests.length; i++) {
String s = tests[i];
System.out.printf("%s : %b\n", s, app.isUniqueChars(s));
}
@arcesino
arcesino / braces-balancer.js
Last active August 29, 2015 14:24
Braces balancer
var isBalanced = function(str) {
var openers = '{[(<';
var closers = '}])>';
var stack = [];
str = str.split('');
for (var i = 0; str.length; i++) {
var index;
if (openers.indexOf(str[i]) != -1) stack.push(str[i]);
else if ((index = closers.indexOf(str[i])) != -1) {
@arcesino
arcesino / consecutive-array.js
Created July 3, 2015 20:08
Given an array of non-repeated numbers check whether the numbers are consecutive.
var isConsecutiveArray = function(numbers) {
var min = numbers[0],
max = numbers[0]
n = numbers.length;
for (var i = 1; i < n; i++) {
if (numbers[i] < min) min = numbers[i];
if (numbers[i] > max) max = numbers[i];
}