Skip to content

Instantly share code, notes, and snippets.

Daniel danielberndt

Block or report user

Report or block danielberndt

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
danielberndt / IsIntersecting.jsx
Created Jan 7, 2019
IsIntersecting Component using IntersectionObserver
View IsIntersecting.jsx
import React from "react";
export default class IsIntersecting extends React.Component {
state = {isIntersecting: false};
observer = null;
rootRef = React.createRef();
elementRef = React.createRef();
componentDidMount() {
danielberndt / app.ts
Last active Dec 31, 2017
This is the result of some prototyping with zeit/micro and creating type-safe handlers that progressively enhance the `req` variable via function composition
View app.ts
import * as http from "http";
interface Handler<T extends http.IncomingMessage> {
(req: T, res: http.ServerResponse): any;
type WithDB = {db: number};
function withPg<T extends http.IncomingMessage>(handler: Handler<T & WithDB>): Handler<T> {
return (req, res) => {
const newReq = req as T & WithDB;
danielberndt / Ui.js
Last active Oct 16, 2017
Glamorous Ui Library Example
View Ui.js
import React from "react";
import B from "glamorous";
import {Link} from "react-router-dom";
import col from "./colors";
const FullHeight = B.div({
display: "flex",
flexDirection: "column",
flex: "auto",
minWidth: 0,
View PausableMeasure.js
import React from "react";
import ResizeObserver from "resize-observer-polyfill";
import shallowEqual from "fbjs/lib/shallowEqual";
export default class PausableMeasure extends React.Component {
node = null;
state = {bounds: null};
componentWillMount() {
if (!this.props.dontMeasure) this.setup();
danielberndt / material-ui-tabs-react-router-4.jsx
Created Mar 23, 2017
Failed attempt at combining material UI and react-router-4
View material-ui-tabs-react-router-4.jsx
const routes = [
{label: "Home", url: "/"},
{label: "Sub Page", url: "/sub"}
const TabsElement = () => (
<Tabs value="match">{{label, url}) => (
<Route path={url} exact>{({match}) => (
<Tab label={label} value={match && "match"} containerElement={p => <Link {...p} to={url}/>}/>
danielberndt / load-from-json.js
Last active Apr 15, 2019
load pixi.js sprite sheet jsons via webpack
View load-from-json.js
this allows you to use all of webpack's goodness to load your sprites.
here's some benefits:
- saving one roundtrip since webpack's json-loader will inline the json data into the script. Thus it doesn't need to be loaded from the server first
- use a lot of the file-loader power and beyond to create cache-busting urls, and apply image-minification via e.g. image-webpack-loader
import PIXI from "pixi.js";
danielberndt / app.rb
Created Oct 27, 2015
sending exceptions straight to slack
View app.rb
require 'slack-notifier'
slack_notifier = HOOKURL, username: 'oh-noes'
rescue_from :all do |e|
attachment = {
fallback: "stacktrace",
color: "danger",
fields: {|line| {value: slack_notifier.escape(line), short: false}}
danielberndt / requests.js
Created Mar 12, 2015
Using superagent is just fine
View requests.js
// By including either of those libraries the minified code size will increase by...
var request = require("superagent"); // 9.05 kB
var request = require("qwest"); // 7.8 kB
var request = require("rest"); // 28.8 kB
var request = require("browser-request"); // 6.37 kB
var request = require("reqwest"); // 10.1 kB
public abstract class CrudController<T extends Model> {
protected Form<T> form;
private Template1<Form<T>,Html> composeTemplate;
private Template1<T,Html> showTemplate;
private Template2<T,Form<T>,Html> editTemplate;
private Template1<List<T>,Html> listTemplate;
private Finder<Long,T> finder;
public CrudController(Class<T> clazz,
package controllers;
import models.Model;
import models.User;
import play.api.templates.Html;
import play.mvc.Controller;
import play.mvc.Result;
public abstract class ControllerAgent<T extends Model, F1, F2> {
You can’t perform that action at this time.