Skip to content

Instantly share code, notes, and snippets.

@moustafasamir
moustafasamir / gist:4250738
Created December 10, 2012 14:05
get facebook friends with picture using Koala
def get_facebook_friends(access_token)
@graph = Koala::Facebook::API.new(access_token)
friends = @graph.get_connections("me", "friends?fields=id,name,picture.type(large)")
return friends
end
@moustafasamir
moustafasamir / Association Extensions.rb
Last active December 11, 2015 09:19
You’re not limited to the functionality that Rails automatically builds into association proxy objects. You can also extend these objects through anonymous modules, adding new finders, creators, or other methods. For example:
class Customer < ActiveRecord::Base
has_many :orders do
def find_by_order_prefix(order_number)
find_by_region_id(order_number[0..2])
end
end
end
@moustafasamir
moustafasamir / Association Extensions.rb
Last active December 11, 2015 09:18
If you have an extension that should be shared by many associations, you can use a named extension module. For example:
module FindRecentExtension
def find_recent
where("created_at > ?", 5.days.ago)
end
end
class Customer < ActiveRecord::Base
has_many :orders, :extend => FindRecentExtension
end
@moustafasamir
moustafasamir / user.rb
Created March 5, 2013 13:27
Select nth element only(not all elements) sorted by a specific column
last_post = Post.limit(1).offset(2999).order("created_at desc")
def Document < ActiveRecord::Base
belongs_to :user , :counter_cache => true
belongs_to :user , :inverse_of => :draft_docs , :counter_cache => true
belongs_to :user , :inverse_of => :published_docs, :counter_cache => true
belongs_to :user , :inverse_of => :private_docs , :counter_cache => true
end
@moustafasamir
moustafasamir / DropdownView.js.coffee
Created March 12, 2013 21:52
backbone view, Dropdown on hover
class DropdownView extends BaseView
# el: ".header"
events:()=>
events_hash = {}
events_hash["mouseover #{@link_selector}"] ="showMenu"
events_hash["mouseleave #{@link_selector}"] ="btnLeave"
events_hash["mouseleave #{@menu_selector}"] ="hideMenu"
events_hash["mouseover #{@menu_selector}"] ="insideMenu"
@moustafasamir
moustafasamir / user.sublime-keymap
Created April 11, 2013 14:51
My sublime shortcuts Mac
[
{ "keys": ["super+d"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },
{ "keys": ["alt+shift+tab"], "command": "prev_view" },
{ "keys": ["alt+tab"], "command": "next_view" },
{ "keys": ["super+h"], "command": "show_panel", "args": {"panel": "find_in_files"} },
{ "keys": ["super+shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line Before.sublime-macro"} },
{ "keys": ["super+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line.sublime-macro"} },
{ "keys": ["alt+up"], "command": "swap_line_up" },
{ "keys": ["alt+down"], "command": "swap_line_down" }
]
@moustafasamir
moustafasamir / rails_resources.md
Last active August 29, 2015 14:10 — forked from jookyboi/rails_resources.md
Rails-related Gems and guides to accelerate your web project.

Gems

  • Bundler - Bundler maintains a consistent environment for ruby applications. It tracks an application's code and the rubygems it needs to run, so that an application will always have the exact gems (and versions) that it needs to run.
  • rabl - General ruby templating with json, bson, xml, plist and msgpack support
  • Thin - Very fast and lightweight Ruby web server
  • Unicorn - Unicorn is an HTTP server for Rack applications designed to only serve fast clients on low-latency, high-bandwidth connections and take advantage of features in Unix/Unix-like kernels.
  • SimpleCov - SimpleCov is a code coverage analysis tool for Ruby 1.9.
  • Zeus - Zeus preloads your Rails app so that your normal development tasks such as console, server, generate, and specs/tests take less than one second.
  • [factory_girl](h
@moustafasamir
moustafasamir / javascript_resources.md
Last active August 29, 2015 14:10 — forked from jookyboi/javascript_resources.md
Here are a set of libraries, plugins and guides which may be useful to your Javascript coding.

Libraries

  • jQuery - The de-facto library for the modern age. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.
  • Backbone - Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
  • AngularJS - Conventions based MVC framework for HTML5 apps.
  • Underscore - Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects.
  • lawnchair - Key/value store adapter for indexdb, localStorage
@moustafasamir
moustafasamir / css_resources.md
Last active August 29, 2015 14:10 — forked from jookyboi/css_resources.md
CSS libraries and guides to bring some order to the chaos.

Libraries

  • 960 Grid System - An effort to streamline web development workflow by providing commonly used dimensions, based on a width of 960 pixels. There are two variants: 12 and 16 columns, which can be used separately or in tandem.
  • Compass - Open source CSS Authoring Framework.
  • Bootstrap - Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.
  • Font Awesome - The iconic font designed for Bootstrap.
  • Zurb Foundation - Framework for writing responsive web sites.
  • SASS - CSS extension language which allows variables, mixins and rules nesting.
  • Skeleton - Boilerplate for responsive, mobile-friendly development.

Guides