Attention: the list was moved to
https://github.com/dypsilon/frontend-dev-bookmarks
This page is not maintained anymore, please update your bookmarks.
| require "benchmark" | |
| require "set" | |
| require_relative "segment_search" | |
| strings = ('a'..'z').map do |letter| | |
| Array.new(50_000) { |number| "#{letter}bba#{number}" } | |
| end.flatten | |
| Benchmark.bm do |b| | |
| segment = SegmentSearch.new(strings) |
| code delimiters: <% %> | |
| # keynote | |
| - your business logic will live longer than your interface | |
| - stateless | |
| - no "spaghetti state" | |
| - application should be able to reflect any combination of data | |
| - views should transparently reflect models | |
| - backbone patterns | |
| - custom model methods |
| // Kudos to Grumdrig | |
| // http://stackoverflow.com/questions/1207008/how-do-i-lock-the-orientation-to-portrait-mode-in-a-iphone-web-application | |
| $(document).ready(function () { | |
| function reorient(e) { | |
| var portrait = (window.orientation % 180 == 0); | |
| $("body > div").css("-webkit-transform", !portrait ? "rotate(-90deg)" : ""); | |
| } | |
| window.onorientationchange = reorient; | |
| window.setTimeout(reorient, 0); |
| #!/usr/bin/env ruby | |
| require 'tempfile' | |
| require 'fileutils' | |
| # Signals | |
| trap("SIGINT") { exit } | |
| # Setup | |
| TARGET_FOLDER = ARGV[0] | |
| TARGET_URL = ARGV[1] |
Attention: the list was moved to
https://github.com/dypsilon/frontend-dev-bookmarks
This page is not maintained anymore, please update your bookmarks.
One-way data synchronisation is trivial. Forward all mutating operations to your slave store to also perform them. Master-Slave replication complete.
Two-way data synchronisation - on the other hand - is hard. It involves conflict resolution, varying of complexity, from choosing the newest operation, most relavant operation, or using operational transforms. All of these require vaguely accurate time synchronisation which then produce another set of problems, solvable with comparing timers, using a shared time server, or using [atomic clocks][1].
Currently, I'm trying to synchronise session data across multiple authentication servers. I've added to the complexity of the problem by assuming that each node is transient and may only exist for a limited amount of time (i.e. AWS deciding they need to unplug my instance). Also, the connections between each node may fail.
| $ = jQuery | |
| queues = {} | |
| running = false | |
| queue = (name) -> | |
| name = 'default' if name is true | |
| queues[name] or= [] | |
| next = (name) -> |
| body { | |
| background: #333333; | |
| color: #ddd; | |
| white-space: pre; | |
| font-family: monospace; | |
| } | |
| a { | |
| color: #ff9000; | |
| } |
| /* | |
| A (very) WIP collection of optimized/recommended jQuery plugin patterns | |
| from @addyosmani, @cowboy, @ajpiano and others. | |
| Disclaimer: | |
| ----------------------- | |
| Whilst the end-goal of this gist is to provide a list of recommended patterns, this | |
| is still very much a work-in-progress. I am not advocating the use of anything here | |
| until we've had sufficient time to tweak and weed out what the most useful patterns |
| function keepTrying(otherArgs, promise) { | |
| promise = promise||new Promise(); | |
| // try doing the important thing | |
| if(success) { | |
| promise.resolve(result); | |
| } else { | |
| setTimeout(function() { | |
| keepTrying(otherArgs, promise); |