Skip to content

Instantly share code, notes, and snippets.

View mkhatib's full-sized avatar

Mohammad Khatib mkhatib

View GitHub Profile
@mkhatib
mkhatib / randommodel.py
Created May 3, 2013 03:23
Abstract Random AppEngine ndb.Model. Extend this class and use .random method to get random entities/records.
import random
from google.appengine.ext import ndb
class RandomIndexedModel(ndb.Model):
"""Abstracts how we do randomness in the other models."""
random_index = ndb.FloatProperty('ri')
@classmethod
def random(cls, count=1, exclude=None, ancestor=None, filters=None):
@mkhatib
mkhatib / geo.js
Created May 24, 2013 02:55
A Javascript utility function to generate number of random Geolocations around a center location and in a defined radius.
/**
* Generates number of random geolocation points given a center and a radius.
* @param {Object} center A JS object with lat and lng attributes.
* @param {number} radius Radius in meters.
* @param {number} count Number of points to generate.
* @return {array} Array of Objects with lat and lng attributes.
*/
function generateRandomPoints(center, radius, count) {
var points = [];
for (var i=0; i<count; i++) {
@mkhatib
mkhatib / geopoint.py
Last active March 28, 2023 08:15
A small class that represents a basic geolocation point and have a method to generate random points around that point given a radius and count.
"""A simple GeoPoint object to generate random points nearby."""
import math
import random
class GeoPoint(object):
"""Represents a geolocation point with latitude and longitude."""
@mkhatib
mkhatib / ag-mk-shortcut.js
Created June 18, 2013 04:41
Adds an AngularJS directive to add keyboard shortcuts for elements with ng-click directive.
var app = angular.module('app');
app.directive('mkShortcut', function($document) {
// Ref: http://goo.gl/7XDys
function fireEvent(element, event) {
if (document.createEvent) {
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
<link rel="import" href="../components/polymer/polymer.html">
<polymer-element name="my-element">
<template>
<style>
#core_scaffold {
position: absolute;
top: 0px;
right: 0px;
@mkhatib
mkhatib / designer.html
Created August 1, 2014 03:22
designer
<link rel="import" href="../components/polymer/polymer.html">
<polymer-element name="my-element">
<template>
<style>
#core_drawer_panel {
position: absolute;
top: 420px;
right: 0px;
@mkhatib
mkhatib / designer.html
Created August 17, 2014 09:12
designer
<link rel="import" href="../core-icon-button/core-icon-button.html">
<link rel="import" href="../core-toolbar/core-toolbar.html">
<link rel="import" href="../core-scroll-header-panel/core-scroll-header-panel.html">
<link rel="import" href="../paper-tabs/paper-tabs.html">
<link rel="import" href="../paper-tabs/paper-tab.html">
<polymer-element name="my-element">
<template>
<style>
@mkhatib
mkhatib / app.js
Created January 14, 2016 07:29
Carbon Usage
var element = document.getElementById('editor');
var editor = new carbon.Editor(element, {
rtl: true,
modules: [carbon.EmbeddedComponent]
});
editor.install(carbon.EmbeddingExtension, {
embedProviders: {
embedly: new carbon.EmbedlyProvider({
apiKey: EMBEDLY_API_KEY
@mkhatib
mkhatib / app.js
Created January 14, 2016 07:31
Carbon Usage
var element = document.getElementById('editor');
var editor = new carbon.Editor(element, {
rtl: true,
modules: [carbon.EmbeddedComponent]
});
editor.install(carbon.EmbeddingExtension, {
embedProviders: {
embedly: new carbon.EmbedlyProvider({
apiKey: EMBEDLY_API_KEY
@mkhatib
mkhatib / manshar.com-service-worker.js
Created February 25, 2016 03:11
Service Worker with a problem of same hash with two different cache content on two different browsers.
'use strict';
importScripts("workers/sw-toolbox-workers.js");
var PrecacheConfig = [
["404.html", "85f3907148cdb68254687c3de7f89a25"],
["bower_components/angular-file-upload/dist/angular-file-upload-shim.min.js", "026ef609992ad0f8d1b02dae399a764b"],
["favicon.ico", "b2eb3d352ea4e8f74b160b46ccc881b9"],
["https://ajax.googleapis.com/ajax/libs/angularjs/1.3.17/angular.min.js", "cd13a2e1aad01b347ad15d5e201f39ee"],
["https://fonts.googleapis.com/earlyaccess/droidarabicnaskh.css", "0d94281129940b9c1a522545882c8293"],
["https://fonts.gstatic.com/ea/droidarabicnaskh/v7/DroidNaskh-Bold.ttf", "aedd83523a65f2c0dc4e2bad69b94534"],
["https://fonts.gstatic.com/ea/droidarabicnaskh/v7/DroidNaskh-Bold.woff", "78aa34ad512567cf0b5e7fc611ff3099"],