Skip to content

Instantly share code, notes, and snippets.

View oliverfernandez's full-sized avatar

Oliver Fernandez oliverfernandez

View GitHub Profile
const FIRST_MONTH_OF_THE_YEAR = 0;
const FIRST_DAY_OF_THE_MONTH = 1;
const DAYS_IN_A_WEEK = 7;
const THURSDAY_DAY_OF_THE_WEEK = 4;
const SUNDAY_DAY_OF_THE_WEEK = 7;
const TEN_DAYS_MILISECONDS = 86400000;
export type WeekOfYear = {
week: number;
year: number;
@oliverfernandez
oliverfernandez / amp-shadows-fixed-container.html
Created March 23, 2021 11:24
Example where a bug of AMP shadows with fixed positioned containers can be reproduced
<html lang="en">
<head>
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/shadow-v0.js"></script>
<title>Hello, AMP Shadow</title>
<meta name="viewport" content="width=device-width">
<style>
div, article {
box-sizing: border-box;
import React from "react";
import ReactDOM from "react-dom";
class MarfeelAdserverProvider extends React.Component {
render() {
const adserverHtml = document
.createRange()
.createContextualFragment(
'<ins class="adsense" slot="mySlot" clientId="myClientId"><h1>Adserver Type</h1>Adsense</ins>'
<!doctype html>
<html amp lang="en">
<head>
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<title>Hello, AMPs</title>
<link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<script type="application/ld+json">
{
@oliverfernandez
oliverfernandez / gist:c56f833d058fcae53a1b
Created February 17, 2015 20:53
A proposal implementation
public boolean hasPermission(UserDetails userDetails, Object target, Object permission) {
RunAsUserToken asUserToken = new RunAsUserToken(
"key",
userDetails,
userDetails.getPassword(),
userDetails.getAuthorities(),
authentication.getClass());
return permissionEvaluator.hasPermission(asUserToken, target, permission);
}
@oliverfernandez
oliverfernandez / gist:36846fcdc03696a7b829
Last active August 29, 2015 14:08
Simple bit-wise PermissionGrantingStrategy for Spring Security ACLs
/**
* A small modification from Spring's
* org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy
* that performs bit-wise permmission comparison.
* Useful if you want to be able to assign multiple permissions to a SID using a single ACE
*/
package com.marfeel.secure.permission;
import org.springframework.security.acls.domain.AuditLogger;
<bean id="lookupStrategy" class="org.springframework.security.acls.jdbc.BasicLookupStrategy">
<constructor-arg ref="dataSource"/>
<constructor-arg ref="aclCache"/>
<constructor-arg ref="aclAuthorizationStrategy"/>
<constructor-arg ref="permissionGrantingStrategy"/>
</bean>
<bean id="permissionGrantingStrategy" class="org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy">
<constructor-arg>
<bean class="org.springframework.security.acls.domain.ConsoleAuditLogger"/>
<!-- Declare an acl authorization strategy-->
<bean id="aclAuthorizationStrategy" class="org.springframework.security.acls.domain.AclAuthorizationStrategyImpl">
<constructor-arg>
<list>
<bean class="org.springframework.security.core.authority.SimpleGrantedAuthority">
<constructor-arg value="ROLE_ADMIN"/>
</bean>
<bean class="org.springframework.security.core.authority.SimpleGrantedAuthority">
<constructor-arg value="ROLE_ADMIN"/>
</bean>
([\w\.\-]+)(?:@|\[at\]| \[at\] )([\w\-]+)(?:\.|\[dot\]| \[dot\] )(?!png|gif|jpg|jpeg)([\w\-\.]+)
@oliverfernandez
oliverfernandez / gist:5619180
Created May 21, 2013 11:31
The operation consists to append 12 nodes to an existing parent node with 1000 children Three ways to do it: 1. Use parentNode.innerHTML += 2. User parentNode.innerHTML = 3. Use a parentNode.appendChild inside a loop. The method with the best performance is the last one. The last method doesn't need to read the current DOM or parse it.
var mainNodeInner = document.createElement('div'),
mainNodeInnerPlus = document.createElement('div'),
mainNodeAppend = document.createElement('div'),
sampleHTML = '<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>',
testHTML = '',
numSamples = 1000,
before = null,
after = null;
//SET UP