Skip to content

Instantly share code, notes, and snippets.

View cjohansen's full-sized avatar

Christian Johansen cjohansen

View GitHub Profile
@cjohansen
cjohansen / vdom.html
Created March 11, 2024 15:00
En liten virtuell DOM-implementasjon
<!DOCTYPE html>
<html>
<head>
<title>Virtuell DOM fra bunnen av</title>
<meta charset="utf-8">
</head>
<body>
<script src="vdom.js"></script>
</body>
</html>
@cjohansen
cjohansen / pliable-search.js
Created October 9, 2023 20:45
En bitteliten søkemotor i JavaScript
function groupBy(xs, f) {
var res = {};
(xs || []).forEach(x => {
var k = f ? f(x) : x;
if (!res[k]) {
res[k] = [];
}
res[k].push(x);
});
@cjohansen
cjohansen / float.html
Last active September 24, 2020 11:23
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.container {
width: 500px;
height: 500px;
border: 1px solid red;
overflow: hidden;
}
(defprotocol ExtMetaProtocol
:extend-via-metadata true
(ext-meta-protocol [x]))
(ext-meta-protocol (with-meta {} {`ext-meta-protocol (fn [_] 1)})) ;;=> 1
(extend-type clojure.lang.PersistentArrayMap
ExtMetaProtocol
(ext-meta-protocol [m]
2))

Beskrivelse av oppdraget

NRK utvikler nye løsninger for forvaltning av arkivinnhold for radio og TV. Et av målene er å tilrettelegge innhold og metadata for enklere og raskere publisering gjennom flere kanaler (lineær, nett, mobil) enn før. I tillegg skal løsningene levere infrastruktur for selvbetjening av publikum og «content-on-demand» gjennom bla. programspilleren (tv.nrk.no / radio.nrk.no).

Det er besluttet at tjenestene i størst mulig grad skal utvikles eller tilpasses i nært samarbeid med NRKs eksisterende utviklingsmiljø og at kunnskapsoverføring og kompetanseheving er viktige mål. Pedagogiske evner, evne til å kommunisere og

import {createComponent} from 'origo-react';
import {DOM, createFactory} from 'react';
import {findDOMNode} from 'react-dom';
const {div} = DOM;
export const Drawer = createComponent({
componentWillAppear(callback) {
this.componentWillEnter(callback);
},
@cjohansen
cjohansen / main.js
Created January 6, 2016 08:11
Some people call this "dependency injection", I call it "passing arguments"
var connect = require('my-connector');
var dep1 = require('dep1');
var dep2 = require('dep2')
exports.default = function (config) {
var connection = connect(config);
var myDep1 = dep1.init(connection);
var myDep2 = dep2.init(connection);
return {
setTimeout(function () {
throw new Error('Oh my');
}, 2000);
function createComponent(render) {
var def = typeof render === 'function' ? {render: render} : render;
render = def.render;
def.displayName = render.name;
def.render = function () {
return render.call(this, this.props.data, this.props.children);
};
if (!def.getInitialState) {
import {createFactory, createClass} from 'react';
export function createComponent(render) {
var def = typeof render === 'function' ? {render: render} : render;
render = def.render;
def.displayName = render.name;
def.render = function () {
const {data, children} = this.props;
return render.call(this, data, children);