Skip to content

Instantly share code, notes, and snippets.


Luc Perkins lucperkins

View GitHub Profile
lucperkins / objectMerge.js
Last active Dec 29, 2015
Is this really the only way to do this???
View objectMerge.js
var object1 = { firstName: 'Luc', lastName: 'Perkins' };
var object2 = { age: 31, hobbies: ['singing', 'guitar', 'history', 'philosophy', 'programming']};
for (key in object2) {
object1[key] = object2[key];
// The result
{ firstName: 'Luc',
lastName: 'Perkins',
lucperkins / compatible_json.dart
Last active Dec 30, 2015
I was looking for a good way to make sure that an object is properly constructed on the basis of a `fromJson` method. The only way to ensure this is to first ensure that the JSON object from which the object is being constructed has the same keys as required by the object's class. I've chosen to do this by constructing an abstract `CompatibleWit…
View compatible_json.dart
import 'dart:convert';
abstract class CompatibleJson {
Map<String, dynamic> get attributes;
bool jsonCompatible(Map<String, dynamic> json) {
return (json.keys.length == attributes.keys.length) &&
(json.keys.every((String key) => key.runtimeType == String)) &&
(json.keys.every((String key) => attributes.keys.contains(key)) &&
(json.values.every((dynamic value) => attributes.values.runtimeType == value.runtimeType));
lucperkins / hegel.dart
Created Dec 9, 2013
Some Hegel-flavored musings. In #dartlang, of course.
View hegel.dart
abstract class Being {}
abstract class Nothing {}
abstract class Becoming extends Being with Nothing {}
abstract class Nature extends Becoming {}
abstract class Lack extends Nature {}
abstract class LivingThing extends Lack {}
class Person extends LivingThing {
String name;
lucperkins / floatingMenu.css
Last active Dec 30, 2015
Here's a Gist for HTML/CSS/JS for a menu bar that is both draggable and resizable AND stores the height/width and position of the bar in local storage, so that the dimensions and position persist through refresh. There is a <p> element inside of the floating bar that is the only element that can be clicked on to drag the bar. This can be disable…
View floatingMenu.css
#floatingMenu {
border: 1px solid black;
lucperkins / components.dart
Created Jan 27, 2014
Making data types iterable in Dart
View components.dart
class NoteElement extends LIElement with Polymer, Observable {
@published Note note;
NoteElement.created() : super.created();
class NotebookElement extends PolymerElement {
@published Notebook notebook = new Notebook(new List<Note>());
NotebookElement.created() : super.created();
lucperkins /
Last active Aug 16, 2016
Blog article on Riak 2.0 security

Riak Security 2.0: Not Just a Firewall Anymore

If you wanted to use Riak in a secure fashion in versions prior to 2.0, your only option was to do so at the network level, using a firewall or similar protective layer. While this is sufficient for a lot of use cases, the problem with this form of security is that if someone can penetrate the firewall, they essentially have unrestricted access to a Riak cluster. They can perform reads and writes, run MapReduce jobs, you name it.

In Riak version 2.0, this is changing in dramatic fashion. While you can still apply a network security layer if you wish, Riak now comes with security features that protect Riak itself and not just to the network in which it's housed. Most importantly, in Riak 2.0 you can both authorize users to perform specific tasks (from standard read/write/delete operations to search queries to managing bucket types) and authenticate users and clients using a variety of security mechanisms.


View riak-conf-params
Here is the master list of all currently available `riak.conf` params:
### Homeless
### Search

Proposed new docs

Topic Y or N Assignee
Rolling restart
package basho.riak;
import com.basho.riak.client.RiakClient;
import com.basho.riak.client.operations.FetchDatatype;
import com.basho.riak.client.operations.FetchSet;
import com.basho.riak.client.operations.UpdateSet;
import com.basho.riak.client.operations.datatypes.SetUpdate;
import com.basho.riak.client.operations.indexes.BinIndexQuery;
import com.basho.riak.client.operations.kv.DeleteValue;
import com.basho.riak.client.operations.kv.FetchValue;
lucperkins /
Last active Nov 7, 2016
Migrate SQL table to Riak
import psycopg2
from riak import RiakClient, RiakObject
from riak.datatypes import Set
import datetime
# Riak connection and set
client = RiakClient(pb_port=8087)
SETS_BUCKET = client.bucket_type('sets').bucket('key_sets')
# Get columns for table
You can’t perform that action at this time.