├── .gitignore ├── Business ├── Entrepreneurship │ └── README.md └── Investing │ └── README.md ├── CONTRIBUTING.md ├── Design ├── README.md ├── informationdesign.md ├── interactiondesign.md ├── mobiledesign.md ├── motiondesign.md ├── prototyping.md ├── sketch.md ├── usercentereddesign.md ├── userinterfacedesign.md ├── userresearch.md ├── uxdesign.md ├── visualdesign.md └── webdesign.md ├── Hackathons ├── CodeofConduct.md ├── EventList.md ├── HHgroups.md └── HackathonHackers.md ├── LICENSE.md ├── Programming ├── ChromeExt.md ├── Functional │ └── haskell.md ├── Game Dev │ └── GameDev.md ├── Mobile Dev │ ├── Android.md │ ├── IOS.md │ ├── README.md │ ├── Swift.md │ └── Windows.md ├── Object Oriented │ ├── c-cpp.md │ ├── java.md │ ├── python.md │ └── ruby.md ├── Text Editors - IDEs │ └── vim.md ├── Web Development │ ├── Backend │ │ ├── PHP.md │ │ ├── RailsNotes.md │ │ ├── RubyOnRails.md │ │ └── backend.md │ ├── Frontend │ │ ├── D3.md │ │ ├── README.md │ │ ├── famous.md │ │ ├── frontend-frameworks.md │ │ ├── javascript-frameworks.md │ │ └── javascript.md │ └── README.md ├── courses.md ├── elixir.md ├── mac-environment.md ├── r-notes.md ├── r.md ├── unix.md └── web-scraping.md ├── README.md ├── School ├── Scholarships │ ├── README.md │ └── scholarships.md ├── classhelp.md └── edu.md └── checklinks.py /.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /Business/Entrepreneurship/README.md: -------------------------------------------------------------------------------- 1 | Resources 2 | ========= 3 | 4 | Personal dump of resources. I've had a lot of fun these past two years, and through that I've had a lot of time to learn and think. Here is my personal collection of resources, ranging from engineering, to programming, and scholarships. 5 | 6 | [![forthebadge](http://forthebadge.com/badges/oooo-kill-em.svg)](http://forthebadge.com) [![forthebadge](http://forthebadge.com/badges/certified-cousin-terio.svg)](http://forthebadge.com) 7 | 8 | ##### Topics So Far 9 | 10 | | Hackathons | Scholarships | General | Business | Web Development | Mobile Development | Gen. Programming | 11 | | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | 12 | | Hackathons list | High School |Chrome Extensions| Entrepreneurship| Frontend | iOS | Haskell | 13 | | HH Wiki | College | | Startups | Backend | Android | Java | 14 | | Code of Conduct | Merit | | Investing | Ruby on Rails | Windows | Python | 15 | | | Need Based | | | Javascript | | Ruby | 16 | | | Loans | | | | | | 17 | | | FAFSA / WASFA | | | | | | 18 | | | Dreamers | | | | | | 19 | | | General Guide | | | | | | 20 | 21 | 22 | 23 | 24 | ### Contributing 25 | Please refer to our [Contributing Doc](https://github.com/mrcoven94/resources/blob/gh-pages/CONTRIBUTING.md), before anything so that we can have consistency, and high quality content. Feel free to open up issues, send pull request, etc. 26 | 27 | License: [MIT License](https://github.com/mrcoven94/resources/blob/gh-pages/LICENSE.md) 28 | 29 | Inspired by [Jennifer Apacible - Res](https://github.com/japacible/res), the original gangsta, and [Alexander Bayandin's Awesome-Awesome](https://github.com/bayandin/awesome-awesomeness). 30 | -------------------------------------------------------------------------------- /Business/Investing/README.md: -------------------------------------------------------------------------------- 1 | Resources 2 | ========= 3 | 4 | Personal dump of resources. I've had a lot of fun these past two years, and through that I've had a lot of time to learn and think. Here is my personal collection of resources, ranging from engineering, to programming, and scholarships. 5 | 6 | [![forthebadge](http://forthebadge.com/badges/oooo-kill-em.svg)](http://forthebadge.com) [![forthebadge](http://forthebadge.com/badges/certified-cousin-terio.svg)](http://forthebadge.com) 7 | 8 | ##### Topics So Far 9 | 10 | | Hackathons | Scholarships | General | Business | Web Development | Mobile Development | Gen. Programming | 11 | | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | 12 | | Hackathons list | High School |Chrome Extensions| Entrepreneurship| Frontend | iOS | Haskell | 13 | | HH Wiki | College | | Startups | Backend | Android | Java | 14 | | Code of Conduct | Merit | | Investing | Ruby on Rails | Windows | Python | 15 | | | Need Based | | | Javascript | | Ruby | 16 | | | Loans | | | | | | 17 | | | FAFSA / WASFA | | | | | | 18 | | | Dreamers | | | | | | 19 | | | General Guide | | | | | | 20 | 21 | 22 | 23 | 24 | ### Contributing 25 | Please refer to our [Contributing Doc](https://github.com/mrcoven94/resources/blob/gh-pages/CONTRIBUTING.md), before anything so that we can have consistency, and high quality content. Feel free to open up issues, send pull request, etc. 26 | 27 | License: [MIT License](https://github.com/mrcoven94/resources/blob/gh-pages/LICENSE.md) 28 | 29 | Inspired by [Jennifer Apacible - Res](https://github.com/japacible/res), the original gangsta, and [Alexander Bayandin's Awesome-Awesome](https://github.com/bayandin/awesome-awesomeness). 30 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please ensure your pull request adheres to the following guidelines: 4 | 5 | - Search previous suggestions before making a new one, as yours may be a duplicate. 6 | - Suggested packages should be tested and documented. 7 | - Make an individual pull request for each suggestion. 8 | - Use the following format: `[PACKAGE](LINK) | DESCRIPTION.` 9 | - New categories, or improvements to the existing categorization are welcome. 10 | - Keep descriptions short and simple, but descriptive. 11 | - End all descriptions with a full stop/period. 12 | - Check your spelling and grammar. 13 | - Make sure your text editor is set to remove trailing whitespace. 14 | - Add a little of your own personality, we really want your flavor to enhance the reading of these guides. 15 | - Please see [IOS Dev](https://github.com/HackathonHackers/resources/blob/gh-pages/Programming/MobileDev/IOS.md) or [Android Dev](https://github.com/HackathonHackers/resources/blob/gh-pages/Programming/MobileDev/Android.md) for example of the flow, and [Python](https://github.com/HackathonHackers/resources/blob/gh-pages/Programming/python.md) for an example of the content. 16 | 17 | Thank you for your suggestions! 18 | -------------------------------------------------------------------------------- /Design/README.md: -------------------------------------------------------------------------------- 1 | All Things Design 2 | =========================== 3 | We are starting from scratch here friends. Please see [Contributing Doc](https://github.com/HackathonHackers/resources/blob/gh-pages/CONTRIBUTING.md) to get a feeling for how you should shape the design tutorials / guides. And with that, lets go! :) 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Design/informationdesign.md: -------------------------------------------------------------------------------- 1 | Information Design 2 | ==================== 3 | Interaction Design is ... design for information. 4 | ## Table of Contents 5 | 6 | 1. [Content Strategy](#contentstrat) 7 | 2. [Information Architecture](#infoarch) 8 | 9 | ## [[⬆]](#toc) Content Strategy 10 | ## [[⬆]](#toc) Information Architecture 11 | 12 | -------------------------------------------------------------------------------- /Design/interactiondesign.md: -------------------------------------------------------------------------------- 1 | Interaction Design 2 | ==================== 3 | Interaction Design is ... design for interactions. 4 | ## Table of Contents 5 | 6 | 1. [Usability heuristics](#usabilityheur) 7 | 2. [Human factors](#humanfactors) 8 | 3. [Image](#userflows) 9 | 10 | ## [[⬆]](#toc) Usability heuristics 11 | ## [[⬆]](#toc) Human factors 12 | ## [[⬆]](#toc) User flows 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Design/mobiledesign.md: -------------------------------------------------------------------------------- 1 | Mobile Design 2 | =============== -------------------------------------------------------------------------------- /Design/motiondesign.md: -------------------------------------------------------------------------------- 1 | Motion Design 2 | =============== 3 | -------------------------------------------------------------------------------- /Design/prototyping.md: -------------------------------------------------------------------------------- 1 | Prototyping 2 | =============== -------------------------------------------------------------------------------- /Design/sketch.md: -------------------------------------------------------------------------------- 1 | Learning [Sketch](https://www.sketchapp.com/) 2 | ===== 3 | [![forthebadge](http://forthebadge.com/badges/certified-cousin-terio.svg)](http://forthebadge.com) 4 | 5 | These are my notes, take em' or leave em. These are not *approved* specifications but rather my intrepretation of how to leverage the Sketch framework, based on tutorials, searching, asking questions, and implementation. 6 | ## Awesome Plugins 7 | 8 | These plugins are easily managed if you download [Sketch Toolbox](sketchtoolbox.com) 9 | 1. [Effortless Placeholder Images in Sketch](https://www.youtube.com/watch?v=oQnggDiV1vA&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9&index=1) 10 | 2. [Easy Content Generation In Sketch](https://www.youtube.com/watch?v=EPljMDOjeuo&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9&index=2) 11 | 3. [Annotations For Your Designs With Sketch Measure](https://www.youtube.com/watch?v=lHKt491yqls&index=3&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9) This actually measures all of the objects on your page and adds labels. One of my **favorite** tools. Provides all of the values for margins in layouts, fonts, etc. 12 | 4. [Better Distributing With Sketch Distributor](https://www.youtube.com/watch?v=BzZKMQe1qQk&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9&index=4) This allows you to select some items and distribute these layers, and specify the distance between these layers. Instead of simply equally distributing them it will distribute them at a given distance apart. For instance, if you're making a list and want the item each to be 20px a part, distributor allows you to do it easily! 13 | 5. [Better Pasting In Sketch](https://www.youtube.com/watch?v=xv511oaJo0g&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9&index=5) Fixes some of the inherent issues with Sketch's copy and pasting. ```ctrl + v``` 14 | 6. [CSS Layouts In Sketch](https://www.youtube.com/watch?v=EmXXzvrz_vs&index=6&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9) Allows you to use CSS rules including flexboxe properties to control your layouts. See the [rules](https://github.com/hrescak/Sketch-Flex-Layout) 15 | 7. [Dynamic Artboard Mirroring With Magic Mirror](https://www.youtube.com/watch?v=Gm5wPXOgVtM&list=PLLnpHn493BHHUZe9bihv37Z6CyXBTyb-9&index=9). Shift your artboard into different perspectives 16 | 17 | 18 | ### Fonts 19 | Paste the following code to download all of the google fonts onto your computer (~500mb) 20 | 21 | ```curl https://raw.githubusercontent.com/qrpike/Web-Font-Load/master/install.sh | sh``` 22 | 23 | #### Using Sketch Measure 24 | - Measuring circles. Create overlay over your element that is measured using ```ctrl + shift + 1``` Particularly if you are measuring the distance between circles, as they take up squares in the DOM. 25 | - Dimensions of an element: select your layer, and press ```ctrl + shift + 2``` , this will initiate a resolution box. Once you pick your size you will get the measurement of any elements you select. 26 | - Measurement between two objects: ```ctrl + shift + 3``` 27 | - Typography information: After selecting text, ```ctrl + shift + 4``` will present information such as size, font, color (hex and rgb). 28 | - Element Properties: Select your element and press ```ctrl + shift + 5```, this will then open a pop up asking which properties you'd like; **Fill / Color / Gradient, Border Color, Layer Opacity, Shadow, Inner Shadow** 29 | - Labels: Maybe you have multiple elements overlayed, like a play button. Play buttons often have a circle and a triangle, which may have different properties. If you want to turn text into a label so you can easily differentiate your measures, first create some text, select that text and then press ```ctrl + shift + 5``` 30 | - Hide measures: Maybe you want to go back into design mode. ```ctrl + shift + H``` to toggle the measures into hidden. 31 | - Lock Measures in place: ```ctrl + shift + L``` to lock your measures where they are on the page so that you don't accidently select and move them. 32 | 33 | #### CSS Layouts In Sketch 34 | - to activate press ``` ctrl + cmd + L``` 35 | 36 | 37 | ### [Shortcuts](http://sketchshortcuts.com/) 38 | - Create Artboard ``` a``` 39 | - Duplicate: ``` CMD +D ``` 40 | - Turn element into folder: ``` CMD +g ``` 41 | - Text Box: ``` t``` 42 | - Oval: ```o``` 43 | -------------------------------------------------------------------------------- /Design/usercentereddesign.md: -------------------------------------------------------------------------------- 1 | User Centered Design 2 | ======================== -------------------------------------------------------------------------------- /Design/userinterfacedesign.md: -------------------------------------------------------------------------------- 1 | User Interface Design 2 | ==================== 3 | User Interface Design is ... design for user interfaces. 4 | ## Table of Contents 5 | 6 | 1. [Design Patterns](#designpatterns) 7 | 8 | 9 | ## [[⬆]](#toc) Design Patterns 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Design/userresearch.md: -------------------------------------------------------------------------------- 1 | User Research 2 | ================ -------------------------------------------------------------------------------- /Design/uxdesign.md: -------------------------------------------------------------------------------- 1 | UX Design 2 | ============ -------------------------------------------------------------------------------- /Design/visualdesign.md: -------------------------------------------------------------------------------- 1 | Visual Design 2 | ==================== 3 | Visual Design is ... design for things you see. 4 | ## Table of Contents 5 | 6 | 1. [Layout (grid)](#grid) 7 | 2. [Typography](#typography) 8 | 3. [Image](#image) 9 | 3. [Color](#color) 10 | 11 | ## [[⬆]](#toc) Layout (grid) 12 | ## [[⬆]](#toc) Typography 13 | ## [[⬆]](#toc) Image 14 | ## [[⬆]](#toc) Color 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Design/webdesign.md: -------------------------------------------------------------------------------- 1 | Web Design 2 | =============== -------------------------------------------------------------------------------- /Hackathons/CodeofConduct.md: -------------------------------------------------------------------------------- 1 | ##Rules of the Game: The Hackathon Code of Conduct 2 | 3 | ######Our brothers and sisters across the organizing teams of the hackathon circuit worked with us to establish clear guidelines for the hackathon playing field. 4 | 5 | If you're a new hacker, give this a read first: http://blog.mlh.io/your-first-hackathon-10-07-2013/ 6 | 7 | After viewing Major League Hacking's official code of conduct (http://static.mlh.io/docs/mlh-code-of-conduct.pdf), we ask you to please adhere to these rules (some content sourced from http://hackathon.launch.co/rules). 8 | 9 | 1.) __Treat all other hackers with utmost respect.__ Be kind to others. Do not insult or put down other attendees. Behave professionally. Remember that harassment and racist, sexist, or exclusionary jokes are not appropriate for this event. If at any point you see a fellow hacker being harassed, it’s your responsibility to talk to the nearest hackathon organizer. 10 | 11 | 2.) __Treat our sponsors with the utmost respect.__ Without them, nothing would be possible. Take some time out of your work to go meet and speak with them. If they come over to talk to you, look up from your work and give them a bit of your time. They're here for you! Show them you appreciate it. 12 | 13 | 3.) __Teams can be anywhere from one to four members (unless otherwise specified).__ All teams retain full ownership of what they have created during the hackathon. 14 | 15 | 4.) __The hackathon is a walled garden. To ensure a level playing field for all contestants, all code, design, art, music, SFX, and assets must be created during the duration of the hackathon.__ We want to ensure that all participants start off on the same footing and we also want to preserve the true nature of a hackathon. You are, however, free to make plans, create wireframes, and brainstorm prior to the event. 16 | 17 | The only exception to this rule would include material that is freely available to the public. Some examples of this would be: public domain images, Creative Commons music, open source libraries, existing APIs and platforms, and the like. Failure to comply may result in the offending team's disqualification. 18 | 19 | _TL;DR: Bring your blueprints, build at the hackathon. It’s the only way we can compare hacks on a level playing field and fairly award prizes. It’s also what lets you say “I built this at a hackathon."_ 20 | 21 | 5.) __Have fun.__ Hackathons are amazing, and so are you. We’re so happy you’re able to hack with us and be a part of our amazing community. 22 | 23 | 6.) __Open your mind.__ Hacking unites people from across the world from different cultural norms, nationalities, and backgrounds. Be prepared not only to learn something new from your hack, but also from the amazing people around you. Be mindful of the fact that certain content and actions can make the people around you uncomfortable. __If your hack contains material that might cross that boundary, talk to a member of the organizing team for a second or third opinion.__ We'll let you know if you should consider rethinking your hack. 24 | 25 | 7.) __Be the change you want to see in your local community.__ Never be afraid of competing based on where you come from or have preconceptions of grandeur because you come from a great school. At any time one can achieve greatness. You simply have to see it and seize it. 26 | 27 | By typing your full name here, you agree to abide by these rules at `hackathon_name`. 28 | -------------------------------------------------------------------------------- /Hackathons/EventList.md: -------------------------------------------------------------------------------- 1 | Lists of Hackathons 2 | ================== 3 | 4 | The following resources provide lists of upcoming hackthons: 5 | 6 | * [Official MLH List](http://mlh.io/) 7 | * [Hackalist](http://www.hackalist.org/) 8 | * [Hackathon IO](http://www.hackathon.io/events) 9 | * [Hacker League](https://www.hackerleague.org/hackathons) 10 | * [Hackathon Calender](https://github.com/japacible/Hackathon-Calendar) (GitHub repo) 11 | * [Hacklist](http://xasos.github.io/HackList/) | Map of US w/ Hackathons 12 | -------------------------------------------------------------------------------- /Hackathons/HHgroups.md: -------------------------------------------------------------------------------- 1 | Hackathon Hackers: all the subgroups 2 | ==================================== 3 | 4 | New subgroups are also listed; these can be hard to find because they're not in the sidebar. If any of these interest you please join, once they reach 100 members they can be official subgroups. 5 | 6 | Official subgroups are listed in **bold** 7 | 8 | Feel free to add to the list: clone, edit, then send a pull request. 9 | 10 | RTFM: http://hh.gd/etiquette 11 | 12 | main() 13 | ------ 14 | Only post job/internship ads in **HH Job Listings** (http://hh.gd/jobs) 15 | 16 | Giveaways should be posted in **HH Free Stuff** (http://hh.gd/freestuff). 17 | 18 | **HH Welcome**: https://www.facebook.com/groups/hhwelcome/ 19 | 20 | **HH Blog Posts**: http://hh.gd/blogposts 21 | 22 | **HH Book Club**: http://hh.gd/bookclub 23 | 24 | **HH Code Reviews**: http://hh.gd/codereview 25 | 26 | **HH Coding**: http://hh.gd/coding 27 | 28 | **HH Connect**: http://hh.gd/connect 29 | 30 | **HH Constructive Debates**: http://hh.gd/debate 31 | 32 | **HH Data Hackers**: http://hh.gd/data 33 | 34 | **HH Design**: http://hh.gd/design 35 | 36 | **HH Freelance**: http://hh.gd/freelance 37 | 38 | **HH Free Stuff**: http://hh.gd/freestuff 39 | 40 | **HH Hardware**: http://hh.gd/hardware 41 | 42 | **HH Housing**: http://hh.gd/housing 43 | 44 | **HH Interview Prep**: http://hh.gd/interviewprep 45 | 46 | **HH Meta**: http://hh.gd/meta 47 | 48 | **HH Product Launch**: http://hh.gd/launch 49 | 50 | **HH Skillshare**: http://hh.gd/skillshare 51 | 52 | **HH Share Your Projects**: http://hh.gd/shareyourproject 53 | 54 | **HH Throw a Hackathon**: http://hh.gd/throwahack 55 | 56 | **HH Virtual Reality**: http://hh.gd/vr 57 | 58 | **HH Websites & Resumes**: http://hh.gd/resumes 59 | 60 | **HH What Are You Working On?**: http://hh.gd/waywo 61 | 62 | Regional 63 | -------- 64 | **HH Canada Eh?**: http://hh.gd/canada 65 | 66 | **HH California**: http://hh.gd/cali 67 | 68 | **HH European Union**: http://hh.gd/europe 69 | 70 | **HH Midwest**: http://hh.gd/midwest 71 | 72 | **HH Seattle**: http://hh.gd/seattle 73 | 74 | Language Specific 75 | ------------------- 76 | HH λ: (functional programming) https://www.facebook.com/groups/hhlambda/ 77 | 78 | HH Lisp: https://www.facebook.com/groups/760851353987620/ 79 | 80 | HH Logic programming: https://www.facebook.com/groups/hhlogic/ 81 | 82 | HH JavaScript: https://www.facebook.com/groups/719335188115212/ 83 | 84 | HH PHP: https://www.facebook.com/groups/389297074552662/ 85 | 86 | HH C: https://www.facebook.com/groups/hhcprog/ 87 | 88 | HH Perl: https://www.facebook.com/groups/hhperl/ 89 | 90 | **HH Python**: http://hh.gd/python 91 | 92 | **HH Ruby**: http://hh.gd/ruby 93 | 94 | HH Rust: https://www.facebook.com/groups/hhrust/ 95 | 96 | HH Gophers: https://www.facebook.com/groups/hhgophers/ 97 | 98 | HH Matlab/GNU Octave: https://www.facebook.com/groups/hhmatlab/ 99 | 100 | HH R: https://www.facebook.com/groups/hhrprog/ 101 | 102 | HH Tcl: https://www.facebook.com/groups/hhtcl/ 103 | 104 | Platform Specific 105 | ----------------- 106 | 107 | **HH Webdev**: http://hh.gd/webdev 108 | 109 | HH Linux Users: https://www.facebook.com/groups/582691025194939/ 110 | 111 | Code and Hacker culture 112 | ----------------------- 113 | HH FSF/GNU: https://www.facebook.com/groups/530926930377277/ 114 | 115 | HH Church of Emacs: https://www.facebook.com/groups/hhemacs/ 116 | 117 | HH Vim: https://www.facebook.com/groups/hhvim/ 118 | 119 | HH Networking: https://www.facebook.com/groups/hhnetworking/ 120 | 121 | HH Semantic Web https://www.facebook.com/groups/hhsemantic/ 122 | 123 | HH InfoSec: https://www.facebook.com/groups/773334272725281/ 124 | 125 | Misc 126 | ----- 127 | HH Seeking Collaborators: https://www.facebook.com/groups/517926818351073/ 128 | 129 | HH Hack Sleep: https://www.facebook.com/groups/283617808512688/ 130 | 131 | HH Futurism: https://www.facebook.com/groups/568175936642925/ 132 | 133 | HH Stocks: https://www.facebook.com/groups/1571495513082515/ 134 | 135 | HH Couch Surfing: https://www.facebook.com/groups/726089960809105/ 136 | 137 | HH Hacking Hackathons: https://www.facebook.com/groups/857498367601915/ 138 | 139 | HH Find Teammates: https://www.facebook.com/groups/454867721317036/ 140 | 141 | Joke/Parody 142 | ------------ 143 | **HH Circletwerk**: http://hh.gd/circle 144 | 145 | **HH Snackathon Snackers**: http://hh.gd/snackers 146 | 147 | **HH Stackathon Stackers**: http://hh.gd/stackers 148 | 149 | **HH Hacker Problems**: http://http://hh.gd/problems 150 | 151 | **Real Singles of HHCT**: http://hh.gd/singles 152 | 153 | HH Jokes: https://www.facebook.com/groups/hhjokes/ 154 | 155 | HH: What Are You Twerking On?: https://www.facebook.com/groups/hhtwerk/ 156 | 157 | HH Bæsed Andy: https://www.facebook.com/groups/346246492209784/ 158 | 159 | Wankathon Wankers: https://www.facebook.com/groups/WankWank/ 160 | 161 | WW What Are You Wanking On?: https://www.facebook.com/groups/wwwaywo/ 162 | 163 | Related 164 | ------- 165 | **High School Hackers**: http://hh.gd/highschool 166 | 167 | **HS Offers**: http://hh.gd/hsoffers 168 | 169 | **Ladies Storm Hackathons**: http://hh.gd/ladies 170 | 171 | **Latino Hackers**: http://hh.gd/latino 172 | 173 | **Upcoming Hackathons**: http://hh.gd/events 174 | 175 | Moderation 176 | ---------- 177 | http://hh.gd/etiquette 178 | 179 | If you have a question or concern about a person or post in HH, please send a private message to the HH moderators: http://hh.gd/mods 180 | 181 | Coda 182 | ---- 183 | Here’s to the hackers. The tinkerers. The makers. The ones who create things quickly. While some may see them as sleep-deprived loons, we see dedication. Because the students who are crazy enough to think they can make something awesome in just 36 hours, are the ones who do. 184 | -------------------------------------------------------------------------------- /Hackathons/HackathonHackers.md: -------------------------------------------------------------------------------- 1 | Hackathon Hackers 2 | ================== 3 | 4 | #Hackathon Season is going to be #STACKED 5 | 6 | This is the all-inclusive hackathons group. 7 | 8 | With a community of 8,000+ individuals, Hackathon Hackers (HH), is a dynamic and diverse programming focused on making dope shit, and changing the world. 9 | 10 | # Table of Contents 11 | 12 | 1. [Geeting Started](#start) 13 | 2. [Subgroups](#subgroups) 14 | 15 | 16 | ####[[⬆]](#toc) 17 | 18 | ### [[⬆]](#toc) ::: Geeting Started::: 19 | 20 | ### [[⬆]](#toc) ::: SUBGROUPS ::: 21 | - [HH Blog Posts:](http://bit.ly/hhblogposts) 22 | - [HH Code Reviews:](http://bit.ly/hhcodereview) 23 | - [HH Coding:]( http://bit.ly/hhcoding) 24 | - [HH Connect:]( http://bit.ly/hhconnect) 25 | - [HH Constructive Debates:]( http://bit.ly/hhdebates) 26 | - [HH Data Hackers:]( http://bit.ly/hhdata) 27 | - [HH Design:]( http://bit.ly/hhdesigners) 28 | - [HH Freelance:]( http://bit.ly/hhfreelance) 29 | - [HH Free Stuff:]( http://bit.ly/hhfreestuff) 30 | - [HH Hardware:]( http://bit.ly/HHHardware) 31 | - [HH Housing:]( http://bit.ly/hhhousing) 32 | - [HH Meta:]( http://bit.ly/hhmeta) 33 | - [HS Offers:]( http://bit.ly/hsoffers) 34 | - [HH Product Launch:]( http://bit.ly/hhproductlaunch) 35 | - [HH Skillshare: ](http://bit.ly/hhskillshare) 36 | - [HH Share Your Projects:]( http://bit.ly/hhshareyourproj) 37 | - [HH Throw a Hackathon:]( http://bit.ly/hhthrowahack) 38 | - [HH Virtual Reality:]( http://bit.ly/hhvirtual) 39 | - [HH Websites & Resumes:]( http://bit.ly/hhresumes) 40 | - [HH What Are You Working On?:]( http://bit.ly/hhwaywo) 41 | 42 | /** LANGUAGE SUBGROUPS **/ 43 | - [HH Python:]( hh.gd/python) 44 | - [HH Ruby:]( hh.gd/ruby) 45 | - [HH λ:]( hh.gd/lambda) 46 | 47 | /** REGIONAL SUBGROUPS **/ 48 | - [HH Canada:]( hh.gd/canada) 49 | - [HH California:]( hh.gd/cali) 50 | - [HH European Union:]( hh.gd/europe) 51 | - [HH Midwest:]( hh.gd/midwest) 52 | - [HH Seattle:]( hh.gd/seattle) 53 | 54 | /** HUMOR SUBGROUPS **/ 55 | - [HH Circletwerk:]( hh.gd/circle) 56 | - [HH Snackathon Snackers:]( hh.gd/snackers) 57 | - [HH Stackathon Stackers:]( hh.gd/stackers) 58 | - [HH Hacker Problems:]( hh.gd/problems) 59 | - [Real Singles of HHCT:]( hh.gd/singles) 60 | 61 | /** RELATED **/ 62 | - [High School Hackers:]( hh.gd/highschool) 63 | - [HS Offers:]( hh.gd/hsoffers) 64 | - [Ladies Storm Hackathons](: hh.gd/ladies) 65 | - [Latino Hackers:]( hh.gd/latino) 66 | - [Upcoming Hackathons:]( hh.gd/events) 67 | 68 | 69 | If you have a question or concern about a person or post in HH, please send a private message to the HH moderators: hh.gd/mods 70 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 David Coven 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Programming/ChromeExt.md: -------------------------------------------------------------------------------- 1 | Chrome Extensions 2 | =================== 3 | 4 | - [Adblock](https://chrome.google.com/webstore/detail/adblock-for-youtube/cmedhionkhpnakcndndgjdbohmhepckk) - self explanatory 5 | 6 | - [Adblock for YouTube](https://chrome.google.com/webstore/detail/adblock-for-youtube/cmedhionkhpnakcndndgjdbohmhepckk) - self explanatory 7 | 8 | - [AirDroid Notifier](https://chrome.google.com/webstore/detail/airdroid-notifier/imlonnilcaednlloaadgddbjfliioklh) - mirrors my android notifications to Chrome 9 | 10 | - [AngularJs Batarang](https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk) - use to debug my Angular apps, built by the official Angular team @ Google 11 | 12 | - [Boysenberry](https://chrome.google.com/webstore/detail/boysenberry/odddjldlndamcgopdfcnioipkbpcdphh) - inspector for CSS, built by someone in the HH group! 13 | 14 | - [Chrome extension source viewer](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin) - lets you view and download the source for any Chrome extension 15 | 16 | - [Chrome Touch](https://chrome.google.com/webstore/detail/chrometouch/ncegfehgjifmmpnjaihnjpbpddjjebme) - fixes scrolling on Chrome for touch devices 17 | 18 | - [Clear Cache](https://chrome.google.com/webstore/detail/clear-cache/cppjkneekbjaeellbfkmgnhonkkjfpdn) - clear your cache with a button, web devs rejoice! 19 | 20 | 21 | - [Cloud to Butt](https://chrome.google.com/webstore/detail/cloud-to-butt-plus/apmlngnhgbnjpajelfkmabhkfapgnoai) - replaces every instance of "cloud" with "butt" on every page you visit: 22 | 23 | 24 | - [ColorPick Eyedropper](https://chrome.google.com/webstore/detail/colorpick-eyedropper/ohcpnigalekghcmgcdcenkpelffpdolg) - colorpicker for Chrome, lets you get the hex codes for colors and images on any page: 25 | 26 | 27 | - [Download Master](https://chrome.google.com/webstore/detail/download-master/mcceagdollnkjlogmdckgjakjapmkdjf) - downloads all links, images, videos etc on a web page: 28 | 29 | 30 | - [HTTPS Everywhere](https://www.eff.org/https-everywhere) - encrypt the web, enables HTTPS on many sites 31 | 32 | - [Imagus](https://97e572bee9692acbd88571f49c074e24ffd9c03b.googledrive.com/host/0Bx8fnUCX4W2IUTNPT0s2eUFDQms/) - enlarges images on hover 33 | 34 | - [JSONView](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc) - validate and inspect JSON 35 | 36 | - [Linkclump](https://chrome.google.com/webstore/detail/linkclump/lfpjkncokllnfokkgpkobnkbkmelfefj) - open, copy, or bookmark multiple links at the same time 37 | 38 | - [MightyText](https://chrome.google.com/webstore/detail/mightytext-sms-text-messa/dkfhfaphfkopdgpbfkebjfcblcafcmpi) - receive and send texts from Chrome 39 | 40 | - [Momentum](https://chrome.google.com/webstore/detail/laookkfknpbbblfpciffpaejjkokdgca) - replaces new tab page with dope dashboard 41 | 42 | - [Postman](https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm) - REST client for testing APIs 43 | 44 | - [Save as PDF](https://chrome.google.com/webstore/detail/save-as-pdf/kpdjmbiefanbdgnkcikhllpmjnnllbbc) - save a web page as a PDF in one click 45 | 46 | - [Save to Pocket](https://chrome.google.com/webstore/detail/save-to-pocket/niloccemoadcdkdjlinkgdfekeahmflj) - save articles and pages for reading later 47 | 48 | - [Screencastify](https://chrome.google.com/webstore/detail/mmeijimgabbpbgpdklnllpncmdofkcpn) - video capturing for chrome, has full screen capabilities 49 | 50 | - [tabShare](https://chrome.google.com/webstore/detail/tabshare/ikcecmegnphddcdkcdghpbkdjamadccp) - save & share all your tabs with 1 click. 51 | 52 | - [Temporary Site Blocker](https://chrome.google.com/webstore/detail/kabepcbdhcianpnociimdhjhohkedacg) - helps to stay motivated, blocks selected pages 53 | 54 | - [TooManyTabs](https://chrome.google.com/webstore/detail/amigcgbheognjmfkaieeeadojiibgbdp) - tab management 55 | 56 | - [Video Downloader](https://chrome.google.com/webstore/detail/elicpjhcidhpjomhibiffojpinpmmpil) - finds and downloads videos on a page 57 | 58 | - [Window Resizer](https://chrome.google.com/webstore/detail/kkelicaakdanhinjdeammmilcgefonfh) - resize browser window, good for testing responsiveness for web dev 59 | 60 | Contributors: [Samuel Philip](https://github.com/ishmaelthedestroyer) 61 | -------------------------------------------------------------------------------- /Programming/Mobile Dev/Android.md: -------------------------------------------------------------------------------- 1 | Getting Started With Android Dev 2 | ================================= 3 | **What is Android?** 4 | Android powers hundreds of millions of mobile devices in more than 190 countries around the world. It's the largest installed base of any mobile platform and growing fast. 5 | 6 | _**-** Google Android Team_ 7 | 8 | > **Note:** You can find more about Android Development on their [website](http://developer.android.com) from the SDK to design and distribution guidelines. 9 | 10 | #### Simple Links 11 | * [Developer Training with various builds](http://developer.android.com/training/index.html) 12 | * [UML for developing an app](http://developer.android.com/tools/workflow/index.html) 13 | * [Android Developer Blog](http://android-developers.blogspot.com/) 14 | 15 | #### What to use to create the apps 16 | * [Eclipse IDE + ADT Plugin](http://dl.google.com/android/installer_r23.0.2-windows.exe): If you already use the Eclipse IDE, this is a plugin which can be downloaded for **Windows** and can be used to create android apps. 17 | **Verdict: Pretty Slow** 18 | * [Eclipse ADT](http://developer.android.com/sdk/index.html#win-bundle): It includes the essential Android SDK components and a version of the Eclipse IDE with built-in ADT (Android Developer Tools) to streamline your Android app development. 19 | **Verdict: Slow** 20 | * [Android Studio](http://developer.android.com/sdk/installing/studio.html): Android Studio is a new Android development environment based on IntelliJ IDEA. **Verdict: Beta but Efficient** 21 | 22 | #### Online Sources: 23 | * [XDA-Developer Notes](http://www.xda-developers.com/android/want-to-learn-how-to-program-for-android-start-here/) 24 | * [UDemy](https://www.udemy.com/learn-android-programming-from-scratch-beta/) 25 | * [TreeHouse](http://teamtreehouse.com/join/android-development/) 26 | * [General Online Source List](http://www.ideatoappster.com/10-best-online-resources-learn-android-development/) 27 | 28 | > **What are you creating?**: Essentially you are coding in [Java](https://github.com/HackerCollective/resources/blob/gh-pages/Programming/java.md "Hacker Collective Resource Page") which then gets published into a package. This package is called an APK file, which is a compression format similar to JAR and ZIP. 29 | 30 | There are three steps for the perfect app: **[Design](http://developer.android.com/design/index.html "Android Dev. Design Home")** --> **[Develop](http://developer.android.com/develop/index.html "Android Dev. Develop Home")** --> **[Distribute](http://developer.android.com/distribute/index.html "Android Dev. Distribute Home")** 31 | 32 | *** 33 | Design 34 | ----------- 35 | 36 | 1. [Android Dev. Creative Vision](http://developer.android.com/design/get-started/creative-vision.html): This contains the creative vision for developing android apps, a quick glance would help non-designers or new designers get an idea as to how to plan the design. 37 | 2. [Design Principles](http://developer.android.com/design/get-started/principles.html): Similar to the above it helps new designers get an idea as to how to plan the design and how to go about actually doing it. 38 | 3. [Measurement Cheat Sheet - I](http://www.doubleencore.com/wp-content/uploads/2014/01/Android-Design-Cheat-Sheet-highres.png): A simple relational guide for sizes of various design aspects for different screen sizes and pixel densities. 39 | 4. [Measurement Cheat Sheet - II](http://petrnohejl.github.io/Android-Cheatsheet-For-Graphic-Designers/): A complex guide, similar to the one above, with easier reading, naming conventions as well as UI Design and Icon Templates. 40 | 5. [Android Dev. Design Presets](http://developer.android.com/design/downloads/index.html): Materials provided by the Android Design team, which can be used without restriction. It includes Photoshop Stencils, Illustrator tool kits, Icon Kit and Color Swatches. 41 | 6. [Design UI Research](https://www.youtube.com/watch?v=6MOeVNbh9cY): A discussion how the team applied ""Pulse Studies"" (iterative research sessions) in order to put new ideas, designs, and concepts in front of users on a regular basis; it requires minimal advance planning, it can have an immediate product impact, and it can meet urgent needs. 42 | 43 | Develop 44 | --------- 45 | 46 | 1. [API Guide](http://developer.android.com/guide/index.html): A guide provided by Google for the entire Android flavor for control over various hardware on the devices + best practices. 47 | 2. [Developement Cheat Sheet - I](http://treehouse-cheatsheets.s3.amazonaws.com/android_island1_cheat_sheet.html): A cheat sheet provided by Tree House. Slightly complicated. Good for reference after designing the first few apps. 48 | 3. [Development Cheat Sheet - II](http://intelfinity.com/Android Dev CHeat Sheet.pdf): Code Gems Cheat Sheet with definitions for each section of Android Development 49 | 4. [Google Services](http://developer.android.com/google/index.html): A list of Google Services which could be used for the apps and how to use them 50 | 5. [Samples](http://developer.android.com/samples/index.html): Samples for developed apps with different components from Background Apps to UI-based apps 51 | 52 | Distribution 53 | -------------- 54 | 55 | 1. [Upload your app to Google Play](https://play.google.com/apps/publish/signup/): So the most important part of distribution is uploading the app to the Play Store. There is a $25 fee. (If you do not want to upload it on play, simply publish it, and distribute the apk) 56 | 2. [Distrbution Essentials](http://developer.android.com/distribute/essentials/index.html): A focus on quality should be part of your entire app delivery process: from initial concept through app and UI design, coding and testing and onto a process of monitoring feedback and making improvement after launch. 57 | 3. [Building Buzz](http://developer.android.com/distribute/users/build-buzz.html): Distribution can usually be a piece of cake, but if you want to give it your all 58 | 59 | *** 60 | 61 | > **TIP:** If you know Web Dev Languages really well and want to push a webapp to an Android app fast, you can use the various sources for the same. 62 | * [HTML 5 - Mobile App Framework](http://www.sitepoint.com/creating-mobile-html5-application-app-framework/) 63 | * [Phone Gap](http://phonegap.com/): Personal preference 64 | 65 | 66 | Contributors: [Mahir Kothary](https://github.com/mahirk) 67 | 68 | 69 | -------------------------------------------------------------------------------- /Programming/Mobile Dev/IOS.md: -------------------------------------------------------------------------------- 1 | Getting Started with IOS 2 | ========================= 3 | **What is iOS?** _iOS is the world's most advanced mobile operating system, continually redefining what people can do with a mobile device. Together, the iOS SDK and Xcode IDE make it easy for developers to create revolutionary mobile apps._ - Apple 4 | 5 | 1. Xcode is the tool we use to develop apps. They are written in Objective-C and recently a new language introduced back in June called [Swift.](https://itunes.apple.com/us/app/xcode/id497799835?mt=12) 6 | 7 | 2. Sketch is a mockup tool that I and many startups like Foursquare and Medium use. It's really easy to get started and it has a ton of inbuilt tools for mocking up your apps. [Link](https://itunes.apple.com/us/app/sketch-3/id852320343?mt=12) 8 | 9 | 3. If you want to go from an idea in your head to getting an app on the app store, this book: [Beginning iOS 7 Development: Exploring the iOS SDK](http://www.amazon.com/Beginning-iOS-Development-Exploring-SDK/dp/143026022X/ref=sr_1_4?ie=UTF8&qid=undefined&sr=8-4&keywords=iOS+development) is one of the best things out there. It will run you through the process of getting your app into people's hands. 10 | 11 | 4. A great online tutorial for free (usually 500$) is being provided by BitFountain, using this [Link](http://bitfountain.io/course/the-complete-ios-7-course-learn-by-building-14-apps/?couponCode=COUPON111677) , they also have an iOS 8 course. 12 | 13 | 5. Stanford University has published all their CS193p Lectures online. If you've done programming before, but not Objective-C, these lectures are a great thing to do. [Link](https://www.youtube.com/watch?v=vXY2EbfAreE&list=PLBcBXZRCvzo2pnU0DVMjaZQfob3JYiQhf) 14 | 15 | 6. A tool called Git is what most major companies use to Version Control their apps. Tools like git allow teams to collaborate on projects and review code more easily. Github.com more specifically is "social coding." It lets you store your code in repositories so other people can build and learn from your code. https://github.com/kylry 16 | 17 | 7. To see sample projects, [Coco Controls](https://www.cocoacontrols.com) is a library of very high quality sample projects. If you ever want to reverse engineer what other people do, take their sample projects and hack around with them. 18 | 19 | 8. If you need a backend for your app but don't have experience, a tool called [parse](https://www.parse.com) allows you to easily integrate a backend with your app so you can focus on the client-side. It handles login, signup and data storage. It's pretty awesome. 20 | 21 | ## Objective-C 22 | - [Ry's Objective-C Tutorial] (http://rypress.com/tutorials/objective-c/index) Good place to learn more about the various aspects of Objective-C language. 23 | 24 | ## Swift 25 | - [Program in Swift, w/o a Mac](http://swiftstub.com/) 26 | - [The swift blog via Apple](https://developer.apple.com/swift/blog/?id=1) 27 | 28 | ### Awesome Github Examples 29 | 1. [Learning iOS development by creating 100 apps in 100 days](https://github.com/grant/100-Apps): Grant Timmerman 30 | 2. [Code for the Swift Tutorial on jamesonquave.com](https://github.com/grant/Swift-Tutorial): Grant Timmerman 31 | 3. [Swift implementation of flappy bird. ](https://github.com/fullstackio/FlappySwift): FullStackio 32 | 4. [OpenStack Object Storage (Swift)](https://github.com/openstack/swift): OpenStack 33 | 34 | 35 | #### Online Resources 36 | 1. [Code School](https://www.codeschool.com/paths/ios) 37 | 2. [Team Treehouse](http://teamtreehouse.com/tracks/ios-development) 38 | 39 | Contributors: [Kyle Ryan](https://github.com/kylry), [David Coven](http://github.com/mrcoven94) 40 | 41 | -------------------------------------------------------------------------------- /Programming/Mobile Dev/README.md: -------------------------------------------------------------------------------- 1 | Mobile Development 2 | =========================== 3 | Learn about iOS, Swift, Android, and Windows Development 4 | -------------------------------------------------------------------------------- /Programming/Mobile Dev/Swift.md: -------------------------------------------------------------------------------- 1 | Awesome Swift 2 | ============= 3 | 4 | 5 | 6 | - [Awesome Swift](#awesome-swift) 7 | - [Demo](#demo) 8 | - [iOS](#ios) 9 | - [OSX](#osx) 10 | - [Dependency Manager](#dependency-manager) 11 | - [Guides](#guides) 12 | - [Libs](#libs) 13 | - [Auto Layout](#auto-layout) 14 | - [Colors](#colors) 15 | - [Cryptography](#cryptography) 16 | - [Data Management](#data-management) 17 | - [Core Data](#core-data) 18 | - [JSON](#json) 19 | - [SQLite](#sqlite) 20 | - [Date](#date) 21 | - [Editor Support](#editor-support) 22 | - [Vim](#vim) 23 | - [Fonts](#fonts) 24 | - [Framework](#framework) 25 | - [iBeacon](#ibeacon) 26 | - [Images](#images) 27 | - [Keyboard](#keyboard) 28 | - [Math](#math) 29 | - [Network](#network) 30 | - [Testing](#testing) 31 | - [UI](#ui) 32 | - [Utility](#utility) 33 | - [Webserver](#webserver) 34 | - [System](#system) 35 | 36 | 37 | 38 | ## Demo App 39 | *Some interesting demo/poc apps written in swift.* 40 | 41 | ### iOS 42 | *A list of iOS swift demo apps* 43 | 44 | * [2048](https://github.com/austinzheng/swift-2048) - 2048 demo game in swift. 45 | * [Alarm](https://github.com/ChrisChares/swift-alarm) - an alarm app in swift. 46 | * [Chat](https://github.com/acani/Chats) - chat like app implementation in swift. 47 | * [CloudKit-To-Do-List](https://github.com/anthonygeranio/CloudKit-To-Do-List) - a cloudkit based to do list. 48 | * [DeckRocket](https://github.com/jpsim/DeckRocket) - deckrocket porting in swift. 49 | * [FlappySwift](https://github.com/fullstackio/FlappySwift) - flappy bird clone in swift. 50 | * [HackerNews](https://github.com/amitburst/HackerNews) - hackernews reader app written in swift. 51 | * [HausClock](https://github.com/nottombrown/HausClock) - chess stile clock app in swift. 52 | * [KeychainDemo](https://github.com/dasdom/KeychainDemo) - keychain sharing between an App and it's share extension 53 | * [MyAwesomeChecklist](https://github.com/imod/MyAwesomeChecklist) - checklist app in swift. 54 | * [ReactiveSwiftFlickrSearch](https://github.com/ColinEberhardt/ReactiveSwiftFlickrSearch) - an MVVM & ReactiveCocoa Flickr search app in swift. 55 | * [SwiftDemo](https://github.com/Lax/iOS-Swift-Demos) - a collection of demo for swift. 56 | * [SwiftFlickrApp](https://github.com/synboo/SwiftFlickrApp) - flickr app written in swift. 57 | * [SwiftHN](https://github.com/Dimillian/SwiftHN) - hacker news app in swift. 58 | * [SwiftWeather](https://github.com/JakeLin/SwiftWeather) - a nice weather app written in swift. 59 | * [Valio](https://github.com/soffes/valio) - event time table app in swift. 60 | 61 | ### OSX 62 | *A list of OSX swift demo apps* 63 | 64 | * [clock-saver](https://github.com/soffes/clock-saver) - a clock screen saver for osx written in swift. 65 | 66 | 67 | ## Dependency Manager 68 | 69 | *Dependency manager software for swift.* 70 | 71 | * [cocoapods](https://github.com/CocoaPods/CocoaPods) - the most used dependency manager for Objective-C and now Swift projects. 72 | 73 | 74 | ## Guides 75 | *An awesome list of swift related guides.* 76 | 77 | * [Apple eBook](https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11) - Official Apple eBook for swift beginners. 78 | * [Learn Swift](https://github.com/nettlep/learn-swift) - a collection of tuts that will help you learning swift via playground. 79 | * [Practice Swift](https://github.com/domenicosolazzo/practice-swift) - an interesting guide to learn swift. 80 | * [SwiftGuide CN](https://github.com/ipader/SwiftGuide) - A chinese written guide for swift. 81 | * [SwiftInFlux](https://github.com/ksm/SwiftInFlux) - A well explained list of feature in flux for swift 82 | * [Swift Style Guide](https://github.com/raywenderlich/swift-style-guide) - Raywenderlich swift guide, a must read. 83 | * [Stanford iOS 8 course](https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099) - Stanford's next iteration of its popular iOS development course, in Swift. 84 | 85 | 86 | 87 | ## Libs 88 | *Here you can find a list of snippets and libs for your swift projects.* 89 | 90 | ### Auto Layout 91 | *Bored of using storyboard? Give a try to declarative auto layout libs.* 92 | 93 | * [Cartography](https://github.com/robb/Cartography) - declarative auto layout lib for your project. 94 | * [Snappy](https://github.com/Masonry/Snappy) - a light-weight layout framework which wraps AutoLayout with nicer syntax. 95 | * [SwiftAutoLayout](https://github.com/indragiek/SwiftAutoLayout) - a small DSL for autolayout. 96 | * [Tails](https://github.com/nickynick/Tails) - declarative autolayout for ios app written in swift. 97 | * [VFLToolbox](https://github.com/0xc010d/VFLToolbox) - fancy Swift implementation of the Visual Format Language 98 | 99 | ### Colors 100 | 101 | *Interesting snippets related to color management and utilty.* 102 | 103 | * [UIColor-Hex-Swift](https://github.com/yeahdongcn/UIColor-Hex-Swift) - an hex to uicolor converter. 104 | 105 | 106 | 107 | ### Cryptography 108 | *Deal with cryptography method easily in swift* 109 | * [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift) - add crypto lib support to swift. 110 | 111 | 112 | ### Data Management 113 | #### Core Data 114 | *No more pain with Core Data, here listed some interesting lib to handle data management.* 115 | 116 | * [QueryKit](https://github.com/kylef/QueryKit) - an easy way to play with coredata filtering within your swift projects. 117 | 118 | #### JSON 119 | *Struggling using json data? Here you are some interesting way to handle it.* 120 | 121 | * [json-swift](https://github.com/owensd/json-swift) - A basic library for working with JSON in swift. 122 | * [SwiftyJSON](https://github.com/lingoer/SwiftyJSON) - A lib for JSON in swift with error handling. 123 | * [SwiftMapper](https://github.com/kam800/SwiftMapper) - JSON Mapper. 124 | 125 | #### SQLite 126 | *Are you interested in storing your app data using SQLite? Here some interesting resources.* 127 | 128 | * [SQLiteDB](https://github.com/FahimF/SQLiteDB) - sqlite wrapper for swift. 129 | 130 | 131 | ### Date 132 | *Handle data formatting easily.* 133 | * [AFDateHelper](https://github.com/melvitax/AFDateHelper) - Simple date helper. 134 | 135 | 136 | ### Editor Support 137 | 138 | *Support for your favorite editors.* 139 | 140 | #### Vim 141 | 142 | * [swift-vim](https://github.com/Keithbsmiley/swift.vim) - play swift with vim editor. 143 | * [vim-swift](https://github.com/toyamarinyon/vim-swift) - adds swift support to vim. It covers syntax, indenting, and more. 144 | * [vim-polyglot](https://github.com/sheerun/vim-polyglot) - language pack for vim that includes vim-swift. 145 | 146 | 147 | ### Fonts 148 | 149 | *A collection of font related snippets.* 150 | 151 | * [MCFontAwesome](https://github.com/matteocrippa/MCFontAwesome) - fontawesome porting for swift. 152 | * [SwiftFonts](https://github.com/roadfire/SwiftFonts) - render all the supported fonts in swift. 153 | 154 | ### Framework 155 | *Do you need any framework?* 156 | 157 | * [Swifter Twitter](https://github.com/mattdonnelly/Swifter) - Swifter Twitter framework for swift. 158 | 159 | 160 | ### iBeacon 161 | *Interested in using iBeacon in your swift project? Here some interesting resources.* 162 | 163 | * [iBeacon](https://github.com/gemtot/iBeacon) - iBeacon implementation in swift. 164 | 165 | 166 | ### Images 167 | *An interesting list of image related libs..* 168 | 169 | * [CYFastImage](https://github.com/lihei12345/CYFastImage) - display images from web. 170 | * [PASImageView](https://github.com/abiaad/PASImageView) - async remote download your image and round them. automatically. 171 | * [SwiftGif](https://github.com/bahlo/SwiftGif) - A small UIImage extension with gif support 172 | * [UIImageView-BetterFace-Swift](https://github.com/croath/UIImageView-BetterFace-Swift) - autoresize images and if any face discovered refine the position of the image. 173 | 174 | 175 | ### Keyboard 176 | *Do you want to create your own customized keyboard? Here some interesting resources* 177 | 178 | * [Hodor Keyboard](https://github.com/jonomuller/Hodor-Keyboard) - poc for custom keyboard implementation. 179 | 180 | 181 | ### Math 182 | * [Surge](https://github.com/mattt/Surge) - Accelerate framework for swift. 183 | * [swix](https://github.com/scottsievert/swix) - A general matrix language. 184 | 185 | 186 | ### Network 187 | *A list of libs that allow you to decrease the amount of time spent to deal with http requests.* 188 | 189 | * [agent](https://github.com/hallas/agent) - http request agent. 190 | * [Alamofire](https://github.com/Alamofire/Alamofire) - elegant networking in swift. 191 | * [GRequest](https://github.com/lingoer/GRequest) - http request handler. 192 | * [Moya](https://github.com/AshFurrow/Moya) - network abstraction layer. 193 | * [Net](https://github.com/nghialv/Net) - an httprequest wrapper. 194 | * [OAuth2](https://github.com/p2/OAuth2) - oauth2 auth lib. 195 | * [YYHRequest-Swift](https://github.com/yayuhh/YYHRequest-Swift) - http request in async. 196 | 197 | 198 | ### Testing 199 | *A collection of testing frameworks.* 200 | 201 | * [Sleipnir](https://github.com/railsware/Sleipnir) - BDD-style framework for Swift. 202 | * [Swiftest](https://github.com/Swiftest/Swiftest) - experimental BDD-style framework. 203 | * [Quick](https://github.com/Quick/Quick) - Quick is a behavior-driven development framework for Swift and Objective-C. 204 | 205 | 206 | ### UI 207 | 208 | *A collection of pre-packaged transitions & cool ui stuffs.* 209 | 210 | * [CharacterText](https://github.com/android1989/CharacterText) - perform fx on UILabel. 211 | * [hamburger button transition](https://github.com/robb/hamburger-button) - Hamburger button transition. 212 | * [GoogleWearAlert](https://github.com/AshRobinson/GoogleWearAlert) - Google Wear Alert style. 213 | * [pinterest transition](https://github.com/demon1105/PinterestSwift) - Pinterest style transition. 214 | * [SCLAlertView](https://github.com/vikmeup/SCLAlertView-Swift) - Animated Alert view. 215 | * [JTToast](https://github.com/devxoul/JLToast) - Toast for swift. 216 | * [PKHUD](https://github.com/pkluz/PKHUD) - Reimplementation of the Apple HUD. 217 | * [ZFRippleButton](https://github.com/zoonooz/ZFRippleButton) - A ripple button animation. 218 | 219 | 220 | ### Utility 221 | 222 | *Some interesting utilities that help you in your projects* 223 | 224 | * [__](https://github.com/lotz84/__.swift) - Underscore.js power in your swift projects. 225 | * [Async](https://github.com/duemunk/Async) – Syntactic swift sugar for Grand Central Dispatch 226 | * [AwesomeCache](https://github.com/aschuch/AwesomeCache) - manage cache easy in your swift project. 227 | * [BrightFutures](https://github.com/Thomvis/BrightFutures) - promise and future lib for swift. 228 | * [CLKit](https://github.com/kylef/CLIKit) - a way to create cli with swift. 229 | * [Collection Each](https://github.com/oarrabi/Collection-Each) - add each func to collections. 230 | * [Dollar](https://github.com/ankurp/Dollar.swift) - a lib similar to Lo-Dash or Underscore in Javascript. 231 | * [ExSwift](https://github.com/pNre/ExSwift) - a set of swift extensions for standard types and classes. 232 | * [PromiseKit](https://github.com/mxcl/PromiseKit) - async promise programming lib. 233 | * [Pythonic.swift](https://github.com/practicalswift/Pythonic.swift) - Pythonic tool-belt for Swift: a Swift implementation of selected parts of Python standard library. 234 | * [SpecificationPattern](https://github.com/neoneye/SpecificationPattern) - chainable rules useful for form validation. 235 | * [Swiftz](https://github.com/maxpow4h/swiftz) - a lib for functional programming. 236 | * [Swift Sugar](https://github.com/RuiAAPeres/Swift-Sugar) - objsugar ported to swift. 237 | * [Wyrd](https://github.com/explicitcall/Wyrd) - Asynchronous programming in Swift made easy. Wyrd is inspired by Promises/A+. 238 | * [XCGLogger](https://github.com/DaveWoodCom/XCGLogger) - a lib that help you handling better debug logging. 239 | 240 | ### Webserver 241 | *Do you wanna host a webserver in your device? Here you can find some tricks to do it.* 242 | 243 | * [swifter](https://github.com/glock45/swifter) - Http server written in Swift with routing handler. 244 | 245 | 246 | ### System 247 | 248 | *System related libs.* 249 | 250 | #### OS X 251 | 252 | - [swift-smc](https://github.com/beltex/swift-smc) - Read temperature sensors, fan RPM, etc. 253 | -------------------------------------------------------------------------------- /Programming/Mobile Dev/Windows.md: -------------------------------------------------------------------------------- 1 | Getting Started With Windows Dev 2 | ================================= 3 | 4 | 1. Need Windows 8.0/further to develop. 5 | 2. Visual Studio 6 | 3. WPsdk 7 | 4. ADsdk 8 | 9 | Languages: VS supports around 14 development languages and comes packed with plugins 10 | 11 | 1. Built-in languages include C,[5] C++ and C++/CLI (via Visual C++), VB.NET (via Visual Basic .NET), C# (via Visual C#), and F# (as of Visual Studio 2010[6]). 12 | 2. Support for other languages such as M, Python, and Ruby among others is available via language services installed separately. It also supports XML/XSLT, HTML/XHTML, JavaScript and CSS. 13 | 3. Also supports the following languages; Chinese, English, French, Portuguese, German, Italian, Japanese, Korean, Spanish and Russian 14 | 15 | ### Mobile Dev 16 | 17 | ### Windows OS Dev 18 | 19 | -------------------------------------------------------------------------------- /Programming/Object Oriented/python.md: -------------------------------------------------------------------------------- 1 | Getting Started with Python 2 | ============================ 3 | 4 | So you wanna learn python eh? Well, what is python? Python is a general purpose programming language that is able to be used on any modern computer operating system. It may easily be used for processing text, numbers, images, scientific data, or anything else which one might save on a computer. It is used daily in the operations of the Google search engine, the video sharing web site YouTube, SpaceX, NASA, and the New York Stock Exchange. These are but a few of the places where Python plays important roles in the success of business, government, and non-profit organisations; there are many others. 5 | 6 | Python is also an interpreted language. This means that it is not converted to computer-readable code before the program is run but at runtime. In days gone by, this type of language was called a scripting language, intimating its use for trivial or banal tasks. However, programming languages such as Python have forced a change in that nomenclature. Increasingly, large applications are written almost exclusively in Python. As mentioned above, in addition to being used by Google and NASA to complement other languages, Python is used almost exclusively for such applications as YouTube and the web-based transaction system of the New York Stock Exchance (NYSE). 7 | 8 | **You have the option of learning from front to back or jumping straight into a pretty damn good tutorial, made by [Al Lukaszewski](http://python.about.com/bio/Al-Lukaszewski.htm) to get down and dirty. The choice is yours.** 9 | 10 | ## Table of Contents 11 | 12 | 1. [An Introduction to Python](#intro) 13 | 2. [Tutorial It Up ](#tutorial) 14 | 3. [The Pythonic Way](#zen) 15 | 16 | ####[[⬆]](#toc) 17 | 18 | If you wanna dive straight into the programming and get your feet wet, dive into #1 [Team Tree House's](http://teamtreehouse.com/library/python-basics) online interactive tool for learning. If you wanna start from scratch and work through the entire thing begin with #4 [Learning Python from Scratch](http://code.tutsplus.com/series/python-from-scratch--net-20566). If you're really a rebel, jump into #3, and do it like a boss, [the hard way.](http://learnpythonthehardway.org/) 19 | 20 | ## [[⬆]](#toc) An Introduction to Python 21 | 1. [Python By Team Tree House](http://teamtreehouse.com/library/python-basics/upcoming) | If you're new to Python, this is the place to start. In this course, you'll take a look at some of the most common and important bits of the language, how to use them, and then put them together into several different handy scripts. Finally, you'll build a small console game using all of the stuff you've learned! 22 | 2. [Code Academy](http://www.codecademy.com/en/tracks/python) | In this Codecademy course you will learn how to work with files, how to use loops and how they work, what are functions and what they’re good for. It’s all very basic, and very beginner friendly. There is community forums available for those who need help, but usually everything can be understood from within the dashboard you’re working with. 23 | 3. [Learn Python The Hard Way](http://learnpythonthehardway.org/) | The absolute easiest way of learning Python is by completing this book. You’ll be amazed at how easy it is to pickup the basics, and you get that sense of real learning process, acquiring new knowledge as you move forward. 24 | 4. [Learning Python from Scratch](http://code.tutsplus.com/series/python-from-scratch--net-20566) | This is going to teach you the ins and outs of Python development... from scratch. There's no need to worry if you don't have any ounce of Python experience. 25 | 5. [A Byte of Python](http://www.swaroopch.com/notes/python/) | Very similar to Learn Python The Hard Way, but offers a slightly more in-depth introduction on how to get your perfect setup up and running, and how to take the first steps so you don’t overwhelm yourself. It has been recognized as one of the best beginner guides for those who want to learn Python, definitely check it out and see the first few chapters to figure out whether you like the style of writing. 26 | 6. [The New Boston](https://buckysroom.org/videos.php?cat=98) | If you’re more like someone who likes to learn from video tutorials, I’m not sure there is anything as comprehensive as The New Boston video tutorial series for learning Python, and many other programming languages as can be seen on their YouTube channel. If you want some of their older python videos after you're done, check [here](https://buckysroom.org/videos.php?cat=36) 27 | 7. [Python + Coursera](https://www.coursera.org/course/programming1) | This course is intended for people who have never programmed before. A knowledge of grade school mathematics is necessary: you need to be comfortable with simple mathematical equations, including operator precedence. You should also be comfortable working with simple functions, such as f(x) = x + 5. 28 | 8. [The Python Challenge](http://www.pythonchallenge.com/) | It might be a little tricky to get this one going, if you’ve never in your life programmed before, but it goes together well with the above book, and you should definitely give it a go. There are 33 levels (puzzles), which can be solved by using your Python programming skills. 29 | 9. [Google's Python Class](https://developers.google.com/edu/python/) | Google itself is powered by a lot of Python code, and so it only makes sense that they support the community and want to help others learn the language. This is one of my favorite guides / classes I’ve ever viewed, it’s really detailed and the videos are very beginner friendly and also entertaining to watch. 30 | 10. [Think Python](http://www.greenteapress.com/thinkpython/) | Think Python is an introduction to Python programming for beginners. It starts with basic concepts of programming, and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression. Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps and introduced over the course of several chapters. You can even find some example code [here](http://www.greenteapress.com/thinkpython/code/) 31 | 11. [Learning from the docs](https://www.python.org/about/gettingstarted/) | This right here is the source. The official docs of the open source community that make up python. 32 | 33 | ## [[⬆]](#toc) Straight Up Tutorial 34 | This series of tutorials is intended to help anyone learn to program in Python. If you are new to computers, however, you may benefit from the absolute beginner's tutorial: [How a Computer Looks at Your Program.](http://python.about.com/od/throughacomputerseye/ss/begprogramming.htm) 35 | 36 | Once you have [downloaded and installed](https://www.python.org/download/) Python for your platform or operating system, you will probably want to jump right into programming. Before you do, you should ensure that you are equipped with an editor you can live with and familiarize yourself with the basics of Python programming. 37 | 38 | 1. [Executing a Python Program: Shell or File?](http://python.about.com/od/gettingstarted/ss/beg_executing.htm) | Programming is pointless if you cannot run, or execute, the program you write. Executing a Python program tells the Python interpreter to convert the Python program into something the computer can read and act upon. There are two ways to do this: using a Python shell and calling the Python interpreter with a "bang" line. 39 | 2. [Choosing a Text Editor for Python Programming](http://python.about.com/od/gettingstarted/ss/text_editors.htm) | To program Python, most any text editor will do. A text editor is a program that saves your files without formatting. 40 | 3. [Data Types](http://python.about.com/od/tutorial1/ss/begin_python.htm) | In order to program, you need to know the types of containers your program uses to hold your data. This tutorial will help you know when to use which kind. 41 | 4. [Operators](http://python.about.com/od/tutorial1/ss/begpyops.htm) | Before you can calculate anything, you should read this tutorial and learn which symbols mean what operation to Python. 42 | 5. [Controlling the Flow](http://python.about.com/od/tutorial1/ss/begpyctrl.htm) | Computer programs are all about choices: if low, buy; if high, sell. This tutorial covers the several ways of expressing decisions in Python. 43 | 6. [Putting it All Together With Syntax](http://python.about.com/od/tutorial1/ss/pytutsyntax.htm) | In order for your commands to make any sense to the computer, they must follow a certain protocol, put certain pieces of information in certain places. This "putting together" is what syntax is all about (in fact, syntax comes from the Greek word which means 'put together'). This tutorial will teach you what should be put together with what. 44 | 7. [Exceptions, Errors, and Warnings](http://python.about.com/od/gettingstarted/ss/begpyexceptions.htm) | If your programs are going to live in the real world, they had better be able to crash softly. This tutorial tells you how to ensure that. 45 | 8. [Python's Encodings for Unicode and ASCII](http://python.about.com/od/gettingstarted/ss/begpyencodings.htm) | Python's encoding functions offer a means of encoding ASCII in Unicode and vice versa. Any program that might be used on the internet someday will need to work with multiple character sets. Here is how. 46 | 47 | 48 | ### Framework it up! 49 | 1. [Flask](http://flask.pocoo.org/) | A lightweight Python web framework based on Werkzeug and Jinja 2. Code, documentation, and community links are provided. 50 | 2. [Django](https://www.djangoproject.com) | Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. 51 | 3. [CherryPy](http://cherrypy.org/) | CherryPy allows developers to build web applications in much the same way they would build any other object-oriented Python program. This results in smaller source code developed in less time. 52 | 53 | ### Examples 54 | [Great Examples from Think Python](http://www.greenteapress.com/thinkpython/code/) 55 | 56 | ## [[⬆]](#toc) The Zen of Python 57 | The Zen of Python is a guidline on how to write Pythonically. It was authored by Tim Peters. You can see this by running IDLE/ Python in your terminal and typing `import this`. 58 | 59 | ``` 60 | Beautiful is better than ugly. 61 | Explicit is better than implicit. 62 | Simple is better than complex. 63 | Complex is better than complicated. 64 | Flat is better than nested. 65 | Sparse is better than dense. 66 | Readability counts. 67 | Special cases aren't special enough to break the rules. 68 | Although practicality beats purity. 69 | Errors should never pass silently. 70 | Unless explicitly silenced. 71 | In the face of ambiguity, refuse the temptation to guess. 72 | There should be one-- and preferably only one --obvious way to do it. 73 | Although that way may not be obvious at first unless you're Dutch. 74 | Now is better than never. 75 | Although never is often better than *right* now. 76 | If the implementation is hard to explain, it's a bad idea. 77 | If the implementation is easy to explain, it may be a good idea. 78 | Namespaces are one honking great idea -- let's do more of those! 79 | ``` 80 | 81 | Contributors: [Al Lukaszewski](http://python.about.com/bio/Al-Lukaszewski.htm), [David Coven](), [Frank Cash](http://hackerqueue.io) 82 | -------------------------------------------------------------------------------- /Programming/Text Editors - IDEs/vim.md: -------------------------------------------------------------------------------- 1 | Vim 2 | ============= 3 | 4 | Plugins are organized by section and ordered alphabetically. 5 | 6 | ## Plugin Management 7 | 8 | * [Neobundle](https://github.com/Shougo/neobundle.vim) 9 | * [Pathogen](https://github.com/tpope/vim-pathogen) 10 | * [VAM](https://github.com/MarcWeber/vim-addon-manager) 11 | * [Vundle](https://github.com/gmarik/Vundle.vim) 12 | 13 | 14 | ## Colors 15 | 16 | * [Base16](https://github.com/chriskempson/base16-vim/) 17 | * [Molokai](https://github.com/tomasr/molokai) 18 | * [Solarized](https://github.com/altercation/vim-colors-solarized) 19 | 20 | 21 | ## Tools 22 | 23 | ### Editing 24 | 25 | * [Abolish](https://github.com/tpope/vim-abolish) 26 | * [Align](https://github.com/vim-scripts/Align) 27 | * [DelimitMate](https://github.com/Raimondi/delimitMate) 28 | * [ExpandRegion](https://github.com/terryma/vim-expand-region) 29 | * [Gundo](https://github.com/sjl/gundo.vim) 30 | * [IndentGuides](https://github.com/nathanaelkane/vim-indent-guides) 31 | * [NerdCommenter](https://github.com/scrooloose/nerdcommenter) 32 | * [Repeat](https://github.com/tpope/vim-repeat) 33 | * [Sneak](https://github.com/justinmk/vim-sneak) 34 | * [Surround](https://github.com/tpope/vim-surround) 35 | * [Tabular](https://github.com/godlygeek/tabular) 36 | * [TComment](https://github.com/tomtom/tcomment_vim) 37 | * [TextobjIndent](https://github.com/kana/vim-textobj-indent) 38 | * [TextobjUser](https://github.com/kana/vim-textobj-user) 39 | * [TextobjWordColumn](https://github.com/coderifous/textobj-word-column.vim) 40 | * [Unimpaired](https://github.com/tpope/vim-unimpaired) 41 | * [YankStack](https://github.com/maxbrunsfeld/vim-yankstack) 42 | 43 | ### File Management 44 | 45 | * [NERDTree](https://github.com/scrooloose/nerdtree) 46 | 47 | ### Git 48 | 49 | * [Fugitive](https://github.com/tpope/vim-fugitive) 50 | * [Signify](https://github.com/mhinz/vim-signify) 51 | 52 | ### Interface 53 | 54 | * [Airline](https://github.com/bling/vim-airline) 55 | 56 | ### Searching 57 | 58 | * [Ag](https://github.com/rking/ag.vim) 59 | * [CtrlP](https://github.com/kien/ctrlp.vim) 60 | 61 | ### Task Running 62 | 63 | * [Dispatch](https://github.com/tpope/vim-dispatch) 64 | 65 | ### Snippets 66 | 67 | * [Snippets](https://github.com/honza/vim-snippets) 68 | * [UltiSnips](https://github.com/sirver/UltiSnips) 69 | 70 | ### Syntax/Completion 71 | 72 | * [Syntastic](https://github.com/scrooloose/syntastic) 73 | * [YouCompleteMe](https://github.com/Valloric/YouCompleteMe) 74 | 75 | 76 | ## Language Specific 77 | 78 | ### CSS/SCSS/LESS 79 | 80 | * [CSS3Syntax](https://github.com/hail2u/vim-css3-syntax) 81 | * [Less](https://github.com/groenewege/vim-less) 82 | * [SCSSSyntax](https://github.com/cakebaker/scss-syntax.vim) 83 | 84 | ### Go 85 | 86 | * [Go](https://github.com/fatih/vim-go) 87 | 88 | ### HTML 89 | 90 | * [HTML5](https://github.com/othree/html5.vim) 91 | * [MatchTagAlways](https://github.com/valloric/MatchTagAlways) 92 | 93 | ### Java 94 | 95 | * [Eclim](http://eclim.org/) 96 | 97 | ### Javascript 98 | 99 | * [Handlebars](https://github.com/nono/vim-handlebars) 100 | * [Jade](https://github.com/digitaltoad/vim-jade) 101 | * [Javascript](https://github.com/pangloss/vim-javascript) 102 | * [JavascriptLibrariesSyntax](https://github.com/othree/javascript-libraries-syntax.vim) 103 | * [TernForVim](https://github.com/marijnh/tern_for_vim) 104 | 105 | ### Python 106 | 107 | * [PythonMode](https://github.com/klen/python-mode) 108 | 109 | ### Ruby 110 | 111 | * [Endwise](https://github.com/tpope/vim-endwise) 112 | * [Ruby](https://github.com/vim-ruby/vim-ruby) 113 | 114 | 115 | ## Framework Specific 116 | 117 | ### Django 118 | 119 | * [Pony](https://github.com/jmcomets/vim-pony/) 120 | 121 | ### Rails 122 | 123 | * [Rails](https://github.com/tpope/vim-rails) 124 | -------------------------------------------------------------------------------- /Programming/Web Development/Backend/RailsNotes.md: -------------------------------------------------------------------------------- 1 | These are [David Coven's](github.com/mrcoven94) person notes as derived from Michael Hartl's awesome tutorial. The context is developing Ruby on Rails web applications using the [c9.io](c9.io) cloud based editor. 2 | 3 | #### Running c9.io server 4 | ```ruby 5 | rails s -p $PORT -b $IP 6 | ``` 7 | #### Running Jekyll on c9.io server 8 | ```ruby 9 | jekyll serve --host $IP --port $PORT --baseurl '' 10 | ``` 11 | #### Adding admin permission via rails console 12 | ```ruby 13 | U = User.find(1) 14 | U.update_attribute :status, "admin" 15 | ``` 16 | 17 | #### Adding Image with Paperclip 18 | After you fill in the paperclip gem, and run bundle install, make sure ImageMagick is installed via 19 | 20 | ```git 21 | sudo apt-get install imagemagick 22 | ``` 23 | 24 | #### Configure Git 25 | ```git 26 | $ git config --global user.name "Your Name" 27 | $ git config --global user.email your.email@example.com 28 | $ git config --global push.default matching 29 | $ git config --global alias.co checkout 30 | ``` 31 | #### Configure BitBucket 32 | 1. Sign up for a Bitbucket account if you don’t already have one. 33 | 2. Copy your public key to your clipboard. As indicated in Listing 1.11, users of the cloud IDE can view their public key using the cat command, which can then be selected and copied. If you’re using your own system and see no output when running the command in Listing 1.11, follow the instructions on how to install a public key on your Bitbucket account. 34 | 3. Add your public key to Bitbucket by clicking on the avatar image in the upper right and selecting “Manage account” and then “SSH keys” 35 | 4. Create” to create a new repository 36 | 5. Leave the box next to “This is a private repository.” checked. 37 | 6. After clicking “Create repository”, follow the instructions under “Command line > I have an existing project” 38 | 7. When pushing up the repository, answer yes if you see the question “Are you sure you want to continue connecting (yes/no)?” 39 | 40 | Listing 1.11 41 | ```git 42 | $ cat ~/.ssh/id_rsa.pub 43 | ``` 44 | Adding Bitbucket and pushing up the repository. 45 | ```git 46 | $ git remote add origin git@bitbucket.org:/hello_app.git 47 | $ git push -u origin --all # pushes up the repo and its refs for the first time 48 | ``` 49 | 50 | #### Configure Heroku 51 | ```git 52 | $ heroku version 53 | $ heroku login 54 | $ heroku keys:add 55 | ``` 56 | Creating a new application at Heroku. 57 | ``` 58 | $ heroku create 59 | $ git push heroku master 60 | ``` 61 | 62 | Rename Heroku App 63 | 64 | ``` 65 | $ heroku apps:rename newname 66 | ``` 67 | And then you should see the following in your command line 68 | 69 | ``` 70 | Renaming oldname to newname... done 71 | http://newname.herokuapp.com/ | git@herokuapp.com:newname.git 72 | Git remote heroku updated 73 | ``` 74 | 75 | Sometimes you may get an error saying that it cannot find the app, and that you have to specify. In this case run ```--app APP```. For example I want to rename my app from **whispering-peak-4146** to **recommend-coven**. To do this I run the following. 76 | ``` 77 | $ heroku apps:rename recommend-coven --app whispering-peak-4146 78 | ``` 79 | 80 | #### initialize & Push to Git repo 81 | ```git 82 | $ git init 83 | $ git add -A 84 | $ git commit -m "Initialize repository" 85 | $ git remote add origin git@bitbucket.org:/sample_app.git 86 | $ git push -u origin --all # pushes up the repo and its refs for the first time 87 | ``` 88 | #### Push to Heroku repo 89 | ```git 90 | $ git commit -am "Add hello" 91 | $ heroku create 92 | $ git push heroku master 93 | ``` 94 | 95 |
96 | #### Undoing things 97 | Even when you’re very careful, things can sometimes go wrong when developing Rails applications. One common scenario is wanting to undo code generation—for example, when you change your mind on the name of a controller and want to eliminate the generated files. Because Rails creates a substantial number of auxiliary files along with the controller, this isn’t as easy as removing the controller file itself; undoing the generation means removing not only the principal generated file, but all the ancillary files as well. In particular, these two commands cancel each other out: 98 | ```ruby 99 | $ rails generate controller StaticPages home help 100 | $ rails destroy controller StaticPages home help 101 | ``` 102 | 103 | Generating a model can be undone by: 104 | ```ruby 105 | $ rails generate model User name:string email:string 106 | $ rails destroy model User 107 | 108 | ``` 109 | 110 | Undoing migrations. Migrations change the state of the database using the command 111 | ```ruby 112 | $ bundle exec rake db:migrate 113 | $ bundle exec rake db:rollback 114 | ``` 115 | To go all the way back to the beginning, we can use 116 | ```ruby 117 | $ bundle exec rake db:migrate VERSION=0 118 | ``` 119 | Substituting any other number for 0 migrates to that version number, where the version numbers come from listing the migrations sequentially. 120 | 121 | #### Error Handling 122 | ##### MiniTest reporters 123 | Makes default Rails tests show red and green at the appropriate times. You can find the file in ```test/test_helper.rb``` 124 | ```ruby 125 | ENV['RAILS_ENV'] ||= 'test' 126 | require File.expand_path('../../config/environment', __FILE__) 127 | require 'rails/test_help' 128 | require "minitest/reporters" 129 | Minitest::Reporters.use! 130 | 131 | class ActiveSupport::TestCase 132 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical 133 | # order. 134 | fixtures :all 135 | 136 | # Add more helper methods to be used by all tests here... 137 | end 138 | ``` 139 | ##### Backtrace silencer 140 | Add this to the file ```config/initializers/backtrace_silencers.rb``` 141 | ```ruby 142 | # Be sure to restart your server when you modify this file. 143 | 144 | # You can add backtrace silencers for libraries that you're using but don't 145 | # wish to see in your backtraces. 146 | Rails.backtrace_cleaner.add_silencer { |line| line =~ /rvm/ } 147 | 148 | # You can also remove all the silencers if you're trying to debug a problem 149 | # that might stem from framework code. 150 | # Rails.backtrace_cleaner.remove_silencers! 151 | ``` 152 | 153 | ##### Automated tests with Guard 154 | For this we need to build the actual Guard file. We can do that by running the following code. 155 | ```git 156 | $ bundle exec guard init 157 | ``` 158 | We then edit the resulting Guardfile so that Guard will run the right tests when the integration tests and views are updated 159 | 160 | ```ruby 161 | # Defines the matching rules for Guard. 162 | guard :minitest, spring: true, all_on_start: false do 163 | watch(%r{^test/(.*)/?(.*)_test\.rb$}) 164 | watch('test/test_helper.rb') { 'test' } 165 | watch('config/routes.rb') { integration_tests } 166 | watch(%r{^app/models/(.*?)\.rb$}) do |matches| 167 | "test/models/#{matches[1]}_test.rb" 168 | end 169 | watch(%r{^app/controllers/(.*?)_controller\.rb$}) do |matches| 170 | resource_tests(matches[1]) 171 | end 172 | watch(%r{^app/views/([^/]*?)/.*\.html\.erb$}) do |matches| 173 | ["test/controllers/#{matches[1]}_controller_test.rb"] + 174 | integration_tests(matches[1]) 175 | end 176 | watch(%r{^app/helpers/(.*?)_helper\.rb$}) do |matches| 177 | integration_tests(matches[1]) 178 | end 179 | watch('app/views/layouts/application.html.erb') do 180 | 'test/integration/site_layout_test.rb' 181 | end 182 | watch('app/helpers/sessions_helper.rb') do 183 | integration_tests << 'test/helpers/sessions_helper_test.rb' 184 | end 185 | watch('app/controllers/sessions_controller.rb') do 186 | ['test/controllers/sessions_controller_test.rb', 187 | 'test/integration/users_login_test.rb'] 188 | end 189 | watch('app/controllers/account_activations_controller.rb') do 190 | 'test/integration/users_signup_test.rb' 191 | end 192 | watch(%r{app/views/users/*}) do 193 | resource_tests('users') + 194 | ['test/integration/microposts_interface_test.rb'] 195 | end 196 | end 197 | 198 | # Returns the integration tests corresponding to the given resource. 199 | def integration_tests(resource = :all) 200 | if resource == :all 201 | Dir["test/integration/*"] 202 | else 203 | Dir["test/integration/#{resource}_*.rb"] 204 | end 205 | end 206 | 207 | # Returns the controller tests corresponding to the given resource. 208 | def controller_test(resource) 209 | "test/controllers/#{resource}_controller_test.rb" 210 | end 211 | 212 | # Returns all tests for the given resource. 213 | def resource_tests(resource) 214 | integration_tests(resource) << controller_test(resource) 215 | end 216 | ``` 217 | 218 | Guard can get buggy and still slow down processes. So we may have to manually clear them. 219 | 220 | ##### Unix processes 221 | On Unix-like systems such as Linux and OS X, user and system tasks each take place within a well-defined container called a process. To see all the processes on your system, you can use the ps command with the aux options: 222 | 223 | ``` 224 | $ ps aux 225 | ``` 226 | To filter the processes by type, you can run the results of ps through the grep pattern-matcher using a Unix pipe |: 227 | 228 | ``` 229 | $ ps aux | grep spring 230 | ``` 231 | ubuntu 12241 0.3 0.5 589960 178416 ? Ssl Sep20 1:46 232 | spring app | sample_app | started 7 hours ago 233 | The result shown gives some details about the process, but the most important thing is the first number, which is the process id, or pid. To eliminate an unwanted process, use the kill command to issue the Unix kill code (which happens to be 9) to the pid: 234 | 235 | ``` 236 | $ kill -9 12241 237 | ``` 238 | This is the technique I recommend for killing individual processes, such as a rogue Rails server (with the pid found via ps aux | grep server), but sometimes it’s convenient to kill all the processes matching a particular process name, such as when you want to kill all the spring processes gunking up your system. In this particular case, you should first try stopping the processes with the spring command itself: 239 | 240 | ``` 241 | $ spring stop 242 | ``` 243 | Sometimes this doesn’t work, though, and you can kill all the processes with name spring using the pkill command as follows: 244 | 245 | ``` 246 | $ pkill -9 -f spring 247 | ``` 248 | Any time something isn’t behaving as expected or a process appears to be frozen, it’s a good idea to run ps aux to see what’s going on, and then run kill -9 or pkill -9 -f to clear things up. 249 | 250 | -------------------------------------------------------------------------------- /Programming/Web Development/Backend/RubyOnRails.md: -------------------------------------------------------------------------------- 1 | Getting Started With Ruby On Rails (RoR or Rails) 2 | =============================================== 3 | The first question we must always ask is, what and why? What the hell is Rails, and who do people use it? _Rails, is an open source web application framework written in Ruby. Rails is a full-stack framework that emphasizes the use of well-known software engineering patterns and paradigms, including convention over configuration (CoC), don't repeat yourself (DRY), the active record pattern, and model–view–controller (MVC)._ 4 | ### Learning Ruby First 5 | 6 | 1. [Codecademy](http://www.codecademy.com/tracks/ruby) | The Ruby Track consists of 10 main chapters, teaching would-be Rubyists the basic concepts from the comfort of their own browser. It takes approximately 9 hours to complete the full course and, although the CA guidelines recommend having some basic programming background before, it looks more like a great introduction for non-programmers 7 | 8 | 2. [Try Ruby](http://tryruby.org/levels/1/challenges/0) | Try Ruby is a clean, beginner-friendly, online tutorial that lets you dip into the world of Ruby straight from your browser. Equipped with an online code editor, (no need to set up a test environment on your machine!) you can get your feet wet immediately 9 | 10 | 3. [Ruby Warrior](https://www.bloc.io/ruby-warrior/#/) | Ruby Warrior (by Bloc.io) is based on Ryan Bates’ command line version of the game and apart from Ruby knowledge, includes the 90’s nostalgia of pixel art. You play as a warrior climbing a tall tower to reach the precious Ruby at the top level. On each floor you need to write a Ruby script to instruct the warrior to battle enemies, rescue captives, and reach the stairs. 11 | 12 | 4. [Poignant Guide to Ruby](http://mislav.uniqpath.com/poignant-guide/) | 13 | 14 | 5. [Learn to Program](https://pine.fm/LearnToProgram/) | If you’re a beginner wanting an introduction to the language and you prefer a more direct approach - try Learn to Program. This very basic, ground-level tutorial is organized according to a very simple rule: each chapter describes a particular concept and is followed by a series of exercises which build upon previously acquired knowledge. 15 | 16 | 6. [Learn Ruby Hard Way](http://ruby.learncodethehardway.org/book/) | Learn Ruby the Hard Way is a mirror resource for Learn Python the Hard Way. T No interactive code editors here! The tutorial includes plenty of examples, additional resources and goes far beyond the basics. 17 | 18 | 7. [Ruby Monk](https://rubymonk.com/) | Ruby Monk is an interactive platform that helps you master programming in Ruby, recommended by Yukihiro Matsumoto himself. It consists of several ‘do it in the browser’ courses, from beginner to advanced level. It’s geared towards those who already have some previous programming experience under their belt (and definitely less visual in comparison to Codecademy or TryRuby). 19 | 20 | 8. [Ruby Koans](http://rubykoans.com/) | The goal of the Ruby Koans is to learn the Ruby language, syntax, structure, and some common functions and libraries. The tutorial is structured around a set of files (unit tests) that need to be fixed before you can move to the next level. 21 | 22 | 23 | ### Time For Rails 24 | 25 | 1. [Rails for Zombies](http://railsforzombies.org/levels/1) 26 | 2. [Ruby on Rails Tutorial - Michael Hartl](https://www.railstutorial.org/book/frontmatter) | Free online book, SUPER Recommended 27 | 3. [Official Rails Guides](http://guides.rubyonrails.org/) 28 | 4. [Best Way To Learn Rails Tuts +](http://code.tutsplus.com/tutorials/the-best-way-to-learn-ruby-on-rails--net-21820) 29 | 5. [University of Texas Rails Course](http://www.schneems.com/ut-rails/) 30 | 6. [University of Reddit - Rails](http://ureddit.com/class/40250/web-programming-with-ruby-on-rails) 31 | 7. [Rich On Rails](http://richonrails.com/) 32 | 33 | ### Rails Books 34 | 1. [Agile Web Development with Rails ](https://pragprog.com/book/rails4/agile-web-development-with-rails-4) 35 | 36 | Need to incorporate 37 | 38 | 1. http://jocellyn.cz/2014/07/09/ruby-on-rails-crossroad.html 39 | 2. http://yhagio.github.io/ruby-and-rails/ 40 | 3. Integrating with API to send out email: https://github.com/prathamalag1994/mailgun, https://github.com/prathamalag1994/ap, https://github.com/prathamalag1994/dir 41 | -------------------------------------------------------------------------------- /Programming/Web Development/Backend/backend.md: -------------------------------------------------------------------------------- 1 | Backend Web Dev Resources 2 | ========================== 3 | 4 | 5 | ## Languages 6 | 1. Unit/Functional Testing for Chosen Technology 7 | 2. .net(C#) 8 | 3. Python 9 | 1. [Django](https://www.djangoproject.com/) 10 | 2. [Flask](http://flask.pocoo.org/) 11 | 3. [Pyramid](http://www.pylonsproject.org/) 12 | 4. [CherryPy](http://www.cherrypy.org/) 13 | 4. PHP 14 | 1. [Larval](http://laravel.com/) 15 | 5. Node.js (Javascript / Express.js) 16 | 1. [sailsjs](http://sailsjs.org/#/) 17 | 2. [mean.io](http://mean.io/#!/) 18 | 3. [passportjs](http://passportjs.org/) 19 | 6. Ruby on Rails 20 | 1. [Get Started Learning](https://github.com/mrcoven94/resources/blob/gh-pages/Programming/WebDev/RubyOnRails.md) 21 | 7. Java 22 | 1. [Spring Framework](http://projects.spring.io/spring-framework/) 23 | 24 | ## Databases 25 | 1. MySQL 26 | 2. MongoDB 27 | 3. Redis 28 | 4. Caching 29 | 1. Squid 30 | 2. Memcached 31 | 3. Nginx 32 | 4. Varnish 33 | 34 | ## Things To Learn 35 | 1. API’s / RESTful Services 36 | 2. Security 37 | 3. OAUTH 2 38 | 4. Authorization / Authentication 39 | 40 | ## Dev Ops 41 | 1. Web Platforms 42 | 1. Build your own data center 43 | 2. Rackspace 44 | 3. Amazon Web Services 45 | 4. Heroku 46 | 5. Azure 47 | 2. Server Management 48 | 1. Salt 49 | 2. Pupper 50 | 3. Chef 51 | 4. Ansible 52 | 5. Linux 53 | 3. Dev Ops Workflows 54 | 1. Vagrant (local environment development) 55 | 2. Capistrano (deployment) 56 | 3. Deployment Strategies 57 | -------------------------------------------------------------------------------- /Programming/Web Development/Frontend/D3.md: -------------------------------------------------------------------------------- 1 | #Getting Started With D3js 2 | 3 | So, you wanna learn data visualization eh? -------------------------------------------------------------------------------- /Programming/Web Development/Frontend/README.md: -------------------------------------------------------------------------------- 1 | Frontend Web Dev 2 | =============================== 3 | 4 | Web Development, "is a mix of programming and layout that powers the visuals and interactions of the web."--[Nick Schaden](https://blog.generalassemb.ly/what-is-front-end-web-development/) 5 | 6 | Frontend web development is all about client side interaction. Thankfully thare are a ton of tools to help us build beautiful web pages, validate, and much more. 7 | 8 | ## Intro 9 | 10 | ## Table of Contents 11 | 12 | 1. [HTML](#html) 13 | 2. [CSS ](#css) 14 | 3. [Javascript ](#js) 15 | 4. [Concept](#concept) 16 | 5. [Design ](#design) 17 | 6. [Unit Testing ](#ut) 18 | 7. [Frontend Build Tools](#fbt) 19 | 8. [Resources For Learning](#resources4learn) 20 | 9. [Getting your website online](#online) 21 | - [Domain Name Registration: + Hosting:](#dnrh) 22 | - [FTP:](#ftp) 23 | 10. [Using Github](#github) 24 | - [Learning Git](#git) 25 | 11. [Getting The Job](#job) 26 | 27 | ####[[⬆]](#toc) 28 | 29 | [Code Database](https://docs.google.com/spreadsheet/ccc?key=0Au-8f__TLXEddGlHSFFhZG1TcnIwaFdxZVVVcXhxN3c&usp=sharing): Used to reference different things you can implement in your code, so that you don’t have to google how to do everything. (Please feel free to edit, revise, and add as well) 30 | 31 | 32 | 33 | 1. First things first, what are you going to code in? Before coding, you must download a **text editor**! This allows you to write code that will then be readable by browsers. (_The following text editors are ordered in my preference_) 34 | 35 | 1. [Brackets](http://brackets.io/) | a text editor made for web developers, in javascript. I think its awesome. 36 | 2. [Sublime Text](http://www.sublimetext.com/) | I love the colors, and the vast amount of languages it works for | works for all the following web dev. languages *RECOMMENDED FOR BEGINNERS* If you do decide to pick sublime, I recommend downloading two important packages that will streamline your coding: Emmet and SFTP. 37 | 3. [Atom](https://atom.io/) | Made by GitHub, an open source text editor, there is a lot of potential for customizibility 38 | 4. [Vim](http://www.vim.org/) | Vim, is a very old but highly robust editor. 39 | 5. Text Wrangler (Mac App) 40 | 6. Notepad / Notepad ++ 41 | 42 | --- 43 | 44 | 45 | 46 | 47 | ## The Break Down 48 | ### [[⬆]](#toc) HTML: 49 | HTML, is essentially the skeleton of your webpage, it is what builds the structure of your site / app. 50 | Tutorials / Guides 51 | 52 | 1. [MDN](https://developer.mozilla.org/) Documentation and reference for HTML, CSS, and Javascript. 53 | 54 | 55 | ### [[⬆]](#toc) CSS: 56 | CSS, can be thought of as the skin, the appearance, the beauty of your webpage. Its where the design comes in, and where your UI/UX comes into play. 57 | 58 | 1. Precompilers 59 | 1. [Sass](http://sass-lang.com/) 60 | 2. [Less](http://lesscss.org/) 61 | 3. [Stylus](http://learnboost.github.io/stylus/) 62 | 2. Frameworks 63 | 1. [Bootstrap](http://getbootstrap.com/) 64 | 2. [Foundation](http://foundation.zurb.com/) 65 | 3. [Animate.css](https://github.com/daneden/animate.css) 66 | 4. [Typeplate](http://typeplate.com/) 67 | 5. [Pure](http://purecss.io/) 68 | 6. [Odometer](http://github.hubspot.com/odometer/docs/welcome/) (JS + CSS) 69 | 70 | ### [[⬆]](#toc) Javascript: 71 | JavaScript provides interaction, functionality, and dynamic ability of your site/app. 72 | 73 | 1. MV* Javascript 74 | 1. [Knockout.js](http://knockoutjs.com/) 75 | 2. [Angular.js](https://angularjs.org/) 76 | 3. [Meteor.js](https://www.meteor.com/) 77 | 4. [Passport.js](http://passportjs.org/) 78 | 5. [Ember.js](http://emberjs.com/) 79 | 6. [Ampersand.js](http://ampersandjs.com/), A highly modular, loosely coupled, non-frameworky framework for building advanced JavaScript apps. 80 | 7. [Backbone.js](http://backbonejs.org/) 81 | 8. [UI-Lang](http://uilang.com/) 82 | 9. [Famous](https://famo.us/), native mobile feel with the power of js. #TheJQueryKiller 83 | 10. [React](http://facebook.github.io/react/) 84 | 2. Gen Frameworks 85 | 1. [Unheap](http://www.unheap.com/) 86 | 2. [Transit](http://ricostacruz.com/jquery.transit/) (JS + jQuery) 87 | 3. [Mousetrap](http://craig.is/killing/mice) 88 | 4. [Coffin](http://fat.github.io/coffin/) 89 | 5. [Two.js](http://jonobr1.github.io/two.js/) 90 | 6. [Odometer](http://github.hubspot.com/odometer/docs/welcome/) (JS + CSS) 91 | 7. [cheet.js](http://namuol.github.io/cheet.js/) 92 | 8. [Headroom.js](http://wicky.nillia.ms/headroom.js/) 93 | 94 | ### [[⬆]](#toc) Concept: 95 | Useful sites for getting inspiration and ideas. 96 | 97 | 1. [TheBestDesigns](http://www.thebestdesigns.com/) 98 | 2. [MinimalSites](http://www.minimalsites.com/) 99 | 3. [Httpster](http://httpster.net/) 100 | 4. [Dribbble](https://dribbble.com/) 101 | 102 | ### [[⬆]](#toc) Design: 103 | 1. Color 104 | 1. [0to255](http://0to255.com/) 105 | 2. [Adobe Color](www.color.adobe.com) 106 | 3. [Spectral](http://jxnblk.com/Spectral/) | Emphasizes HSB 107 | 2. Fonts 108 | 1. [Beautiful web type](http://hellohappy.org/beautiful-web-type/) 109 | 2. [Font Awesome](http://fortawesome.github.io/Font-Awesome/#) 110 | 3. [Fontello](http://fontello.com/) 111 | 4. [Typewolf](http://www.typewolf.com/open-source-web-fonts) | Open-source fonts. 112 | 3. [CSSFlow](http://www.cssflow.com/) 113 | 4. [Subtle Patterns](http://subtlepatterns.com/) 114 | 6. [UICloud](http://ui-cloud.com/) 115 | 7. [PixelsDaily](http://pixelsdaily.com/) 116 | 8. [Fribbble](http://fribbble.com/) 117 | 9. [Flat UI](http://designmodo.github.io/Flat-UI/) 118 | 12. [Ionicons](http://ionicons.com/) 119 | 13. [Canva](https://www.canva.com/) 120 | 121 | ### [[⬆]](#toc) Unit Testing: 122 | 1. [Jasmine](http://jasmine.github.io/) 123 | 2. [Karma](http://karma-runner.github.io/0.12/index.html) 124 | 3. [Mocha](http://mochajs.org/) 125 | 4. [Chai](http://chaijs.com/) 126 | 5. [PhantomJS](http://phantomjs.org/) 127 | 6. [QUnit](http://qunitjs.com/) 128 | 7. [Sinon](http://sinonjs.org/) 129 | 8. [Coveralls](https://coveralls.io/) 130 | 131 | ### [[⬆]](#toc) Frontend Build Tools: 132 | 1. [Bower/Package management](http://bower.io/) | Bower works by fetching and installing packages from all over, taking care of hunting, finding, downloading, and saving the stuff you’re looking for. Bower keeps track of these packages in a manifest file, bower.json. How you use packages is up to you. Bower provides hooks to facilitate using packages in your tools and workflows. 133 | 2. [Yeoman.io](http://yeoman.io/) | Yeoman helps you kickstart new projects, prescribing best practices and tools to help you stay productive. 134 | 3. [Grunt](http://gruntjs.com/) | Grunt in one word: automation. The less work you have to do when performing repetitive tasks like minification, compilation, unit testing, linting, etc, the easier your job becomes. After you've configured it, a task runner can do most of that mundane work for you—and your team—with basically zero effort. 135 | 4. [Gulp](http://gulpjs.com/) | Gulp is a streaming build system, very similar to Grunt. 136 | 5. [Browserify](http://browserify.org/) | Browserify lets you require('modules') in the browser by bundling up all of your dependencies. 137 | 6. [Require.js](http://requirejs.org/) | RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. 138 | 139 | ### [[⬆]](#toc) Great Resources For Learning : 140 | 1. [Code Academy](http://www.codecademy.com/) | This is a great FREE resource for alot of the web dev. languages both frontend and backend, and what I found super helpful! 141 | 2. [Dash](https://dash.generalassemb.ly/) | This is a great FREE resource for HTML, CSS, JS. 142 | 3. [Code School](https://www.codeschool.com/) | Only has some free resources, but the free ones are pretty nice 143 | 4. [Tinkernut Web Dev](http://www.youtube.com/watch?v=6Ct6emxVR9w ) | Youtube guide for a very nitty gritty website, very easy to follow, and very light 144 | 5. [UW CSE 154 (Web Programming Step By Step)]() 145 | 6. [Tut+](http://tutsplus.com/) 146 | 7. [Stack Overflow](http://stackoverflow.com/) 147 | 8. [HTML5 and CSS3 For Dummies by Andy Harris:](http://www.amazon.com/HTML5-CSS3-All-One-Dummies/dp/1118289382) 148 | 9. [JavaScript is sexy] (http://www.javascriptissexy.com/) | Complete resource for programming in Javascript. 149 | 150 | ### [[⬆]](#toc) Getting Your Website Online: 151 | ##### [[⬆]](#toc) Domain Name Registration + Hosting: (D + H) 152 | 1. [NameCheap](http://www.namecheap.com/) (D+H) | They are the best to our hackers! :) 153 | 2. [Go Daddy](http://www.godaddy.com/) (D+H) | 154 | 3. [Blue Host](http://www.bluehost.com/) (D+H) | 155 | 4. [Award Space](http://www.awardspace.com/) (D+H) | 156 | 5. [HostGator](http://www.hostgator.com/) (D+H) | 157 | 6. [Just Host](http://www.justhost.com/) (D+H) 158 | 7. [GitHub Pages](https://pages.github.com/) (H) | This is what I use for the majority of my hosting, and I’m cool + it’s free, but only for static sites, check [backend resources](https://github.com/mrcoven94/resources/blob/gh-pages/backend-webdev.md) (H) | for the more dynamic free options. 159 | 8. [BitBucket](https://bitbucket.org/) 160 | 9. [NodeJitsu](https://www.nodejitsu.com/) (H) | Primarily for Node.JS Applications 161 | 10. [PythonAnyWhere](https://www.pythonanywhere.com/) (H) | Primarily for Python Applications 162 | 11. [DigitalOcean](https://www.digitalocean.com/) (H) | Deploy a server in 60 seconds or less! 163 | 164 | ##### [[⬆]](#toc) FTP : 165 | 1. [CyberDuck](https://cyberduck.io/?l=en) 166 | 2. [Firezilla](https://filezilla-project.org/) 167 | 3. [FTP on Terminal](http://www.tldp.org/HOWTO/FTP-3.html) 168 | 169 | ### [[⬆]](#toc) Using Github: 170 | 1. [Read This Article First (Programming Way of Setting Up Your Site, using Git)](http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1#awesm=~ozMC4gq6eTfUby) 171 | 3. [Hosting Personal]() 172 | 4. [Hosting Multiple Project Sites Tutorials: Video](http://www.youtube.com/watch?v=J8RLq9LXFXk) 173 | 5. [Github markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) 174 | 6. [Github Markdown #2](http://assemble.io/docs/Cheatsheet-Markdown.html) 175 | 7. [Mastering Github - Code School](https://www.codeschool.com/courses/mastering-github) 176 | 177 | ##### [[⬆]](#toc) Learning Git : 178 | 1. [Code School - Try Git](https://try.github.io/levels/1/challenges/1) 179 | 2. [10 Git Tutorials for Beginners Git Immersion](http://gitimmersion.com/) 180 | 3. [Book: Version Control with Git](http://www.amazon.com/Version-Control-Git-collaborative-development/dp/1449316387/ref=pd_sim_b_1) 181 | 4. [Git Basics](http://git-scm.com/book/en/Getting-Started-Git-Basics) 182 | 183 | ### [[⬆]](#toc) Getting The Job: 184 | 1. [Amazing list of Front-end Job Interview Questions](https://github.com/darcyclarke/Front-end-Developer-Interview-Questions) 185 | 186 | 187 | 188 | Contributors: [Amit Burstein](https://github.com/amitburst), [Frank Cash](https://github.com/frankcash), [David Coven](https://github.com/mrcoven94) 189 | 190 | -------------------------------------------------------------------------------- /Programming/Web Development/Frontend/famous.md: -------------------------------------------------------------------------------- 1 | Learning [Famo.Us](http://famo.us/) 2 | ===== 3 | [![forthebadge](http://forthebadge.com/badges/certified-cousin-terio.svg)](http://forthebadge.com) 4 | 5 | ## [FamoUs University](http://famo.us/university/) - Famo.us 101 6 | 7 | These are my notes, take em' or leave em. These are not *approved* specifications but rather my intrepretation of how to leverage the famous framework, based on tutorials, searching, asking questions, and implementation. The learning curve is pretty shallow compared to your typical MVC js framework, so I think its great for beginners. It does a lot of content rendering with JS which I also think is very cool. I also decided to dive in because of its native mobile approach, and 3D engine. They are just superb. And with that lets begin! :) 8 | 9 | ## Table of Contents 10 | 11 | 1. [Developing Content](#intro) 12 | 2. [Styling](#tutorial) 13 | - [Surface Sizing]() 14 | - [Positioning]() 15 | 3. [Creating Animations](#zen) 16 | 4. [Handling Events]() 17 | 18 | ### [[⬆]](#toc) Developing Content 19 | 20 | #### Developing Content 21 | Famous has a rendering engine that displays content to the DOM. One of the type of rendering is called **surface**, which maps to a ```
``` element in the DOM 22 | 23 | Renderings live in, **Contexts**, which themselves are not displayed. They are isolated rendering environments that tell the Engine where renderables live. 24 | 25 | Call dependecies for **surfaces** and **Contects** 26 | ```javascript 27 | var Engine = require('famous/core/Engine'); 28 | var Surface = require('famous/core/Surface'); 29 | 30 | var mainContext = Engine.createContext(); 31 | ``` 32 | 33 | Content that exist in the **surface**, rendered by **Contexts** can be a string, HTML, or a DOM element. The content can be set when you initialize your surface or by the ```.setContent()``` method. 34 | 35 | Push your **surface** to the DOM via 36 | ```javascript 37 | mainContext.add(firstSurface); 38 | ``` 39 | The **Hello, World!** example below is a basic **surface**. 40 | ```javascript 41 | var Engine = require('famous/core/Engine'); 42 | var Surface = require('famous/core/Surface'); 43 | 44 | var mainContext = Engine.createContext(); 45 | var firstSurface = new Surface({ 46 | content: 'hello world', 47 | }); 48 | 49 | mainContext.add(firstSurface); 50 | ``` 51 | 52 | 53 | #### Styling 54 | 55 | You begin styling a surface with adding a **properties** section in your instantiation. Styling a **surface** is pretty much the same as CSS, but you replace your dashes with camelCase. So instead of ``` text-align``` its now ```textAlign``` For example: 56 | 57 | ```javascript 58 | var firstSurface = new Surface({ 59 | content: 'hello world', 60 | properties: { 61 | color: 'white', 62 | textAlign: 'center', 63 | backgroundColor: '#FA5C4F' 64 | } 65 | }); 66 | 67 | mainContext.add(firstSurface); 68 | ``` 69 | 70 | To make your surface a particular **size** you must add it to your surface object. If you do not specify, the surface inherits the size of its parent--the context. 71 | ```javascript 72 | var firstSurface = new Surface({ 73 | size: [200, 400], 74 | content: 'hello world', 75 | properties: { 76 | color: 'white', 77 | textAlign: 'center', 78 | backgroundColor: '#FA5C4F' 79 | } 80 | }); 81 | 82 | mainContext.add(firstSurface); 83 | ``` 84 | ##### Surface Size: 85 | - In pixels with [x, y] 86 | - In only one dimension with [undefined, y] or [x, undefined]. For example, [undefined, 200] will span the entire length of the x-direction, while only 200 pixles in the y direction. [, ] also works. 87 | - Have the surface auto-size according to the content with [true, true]. You can put in any statement that evaluates to [true, true]. For example, [1>3, 1>3], [false, false], and [null, null] all work. 88 | 89 | ##### Positioning 90 | With positioning we add two more requirements; **Transform** and **State Modifier**. The **State Modifier** is an object that is used to translate or move a surface. **Transform** on the other hand is a little more implicit. Instead of traditional positioning surfaces are styled with position:absolute and their positions are defined by matrix3d webkit transforms. More on [Transforms Expanded](https://famo.us/guides/layout). 91 | 92 | This means we now have to add more to our method call. Which now looks like this ```mainContext.add(stateModifier).add(surface);```, to push our newly positioned surface to the DOM. 93 | 94 | Example of a positioned **surface** using **Transform** and **State Modifier** 95 | ```javascript 96 | var Engine = require('famous/core/Engine'); 97 | var Surface = require('famous/core/Surface'); 98 | var Transform = require('famous/core/Transform'); 99 | var StateModifier = require('famous/modifiers/StateModifier'); 100 | 101 | var mainContext = Engine.createContext(); 102 | 103 | createModifiedSurface(); 104 | 105 | function createModifiedSurface() { 106 | var modifiedSurface = new Surface({ 107 | size: [100, 100], 108 | content: 'modified surface', 109 | properties: { 110 | color: 'white', 111 | textAlign: 'center', 112 | backgroundColor: '#FA5C4F' 113 | } 114 | }); 115 | 116 | var stateModifier = new StateModifier({ 117 | transform: Transform.translate(150, 100, 0) 118 | }); 119 | 120 | mainContext.add(stateModifier).add(modifiedSurface); 121 | } 122 | ``` 123 | Now on to rotation! This part is pretty dense, so I'll separate it into sections. 124 | ```javascript 125 | var Engine = require('famous/core/Engine'); 126 | var Surface = require('famous/core/Surface'); 127 | var StateModifier = require('famous/modifiers/StateModifier'); 128 | var Transform = require('famous/core/Transform'); 129 | 130 | var mainContext = Engine.createContext(); 131 | ``` 132 | Here we're making sure we have the correct dependencies, and everything we need to create **surfaces**, **Context** s, **Transform** s, and **State Modifiers**. This example involves 2 **Context** s and 2 **surfaces**. 133 | 134 | --- 135 | 136 | ```javascript 137 | var translateModifierOne = new StateModifier({ 138 | transform: Transform.translate(200, 0, 0) 139 | }); 140 | 141 | var translateModifierTwo = new StateModifier({ 142 | transform: Transform.translate(200, 0, 0) 143 | }); 144 | 145 | var rotateModifierOne = new StateModifier({ 146 | transform: Transform.rotateZ(Math.PI/4) 147 | }); 148 | 149 | var rotateModifierTwo = new StateModifier({ 150 | transform: Transform.rotateZ(Math.PI/4) 151 | }); 152 | ``` 153 | Here we are doing four things. 154 | 1. Making a **State Modifier** that will use **Transform** to *TRANSLATE* our surface by 200 pixles in the x direction. This will be applied our first **Context** 155 | 2. Making a **State Modifier** that will use **Transform** to *TRANSLATE* our surface by 200 pixles in the x direction. This will be applied our second **Context** 156 | 3. Making a **State Modifier** that will use **Transform** to *ROTATE* our surface by PI/4 degrees over the z-axis. This will be applied our first **Context** 157 | 4. Making a **State Modifier** that will use **Transform** to *ROTATE* our surface by PI/4 degrees over the z-axis. This will be applied our second **Context** 158 | 159 | --- 160 | 161 | 162 | ```javascript 163 | var redSurface = new Surface({ 164 | size: [100, 100], 165 | classes: ['red-bg'] 166 | }); 167 | 168 | var greySurface = new Surface({ 169 | size: [100, 100], 170 | classes: ['grey-bg'] 171 | }); 172 | ``` 173 | Now we are creating our **surfaces**, in this case we are making one for each **Context** 174 | 175 | --- 176 | 177 | ```javascript 178 | mainContext 179 | .add(translateModifierOne) 180 | .add(rotateModifierOne) 181 | .add(redSurface); 182 | 183 | mainContext 184 | .add(rotateModifierTwo) 185 | .add(translateModifierTwo) 186 | .add(greySurface); 187 | ``` 188 | 189 | Finally we are assigning the **surfaces**, **State Modifiers**, and **Transforms** to the **Context** s we made earlier. 190 | 191 | --- 192 | 193 | **Note**: Order that you chain modifiers matters! The red surface has its translation applied before the rotation which causes it to be moved and THEN rotated about its origin. However the grey surface is rotated and THEN translated, which because it is rotated PI/4 translated. Because it was rotated first, it is now translated along that angle, instead of linearly like the red square. Causing it to be both below, and further to the left than the red square. 194 | 195 | More positioning! 196 | 197 | ```javascript 198 | var downMod = new StateModifier({ 199 | transform: Transform.translate(0, 100, 0) 200 | }); 201 | 202 | var rightMod = new StateModifier({ 203 | transform: Transform.translate(150, 0, 0) 204 | }); 205 | 206 | var node = mainContext.add(downMod); 207 | node.add(leftSurface); 208 | node.add(rightMod).add(rightSurface); 209 | ``` 210 | The important component is that you can add ```.add(downMod);``` to all the surfaces simultaneously. By setting our **Context** as a a variable, and then method chaining it with our surfaces and our **State Modifier** s 211 | 212 | ```javascript 213 | var alignOriginModifier = new StateModifier({ 214 | align: [0.5, 0.5], 215 | origin: [1, 1] 216 | }); 217 | ``` 218 | **Align** sets the anchor point on the parent element, while **Origin** sets the anchor point on the child element. **Origin** is also the point about which transforms get applied. By default, **origin** is set to [0, 0], a rotation **transform** defaults to rotating about the top left corner. 219 | 220 | ##### Opacity 221 | Opacity is added to a **State Modifier** just like everything else, ```opacity: 0.5 ```. Everything that gets added to the render tree after that modifier gets that opacity value multiplied to its current opacity. 222 | 223 | ```javascript 224 | var modifier = new StateModifier({ 225 | opacity: 0.5, 226 | transform: Transform.scale(1, 3, 1), 227 | align: [0.5, 0.5], 228 | origin: [0.5, 0.5] 229 | }); 230 | ``` 231 | #### Creating Animations 232 | Now we introduce the ```.setTransform()``` method. ```.setTransform()``` takes in a **transform** argument and can also be passed two additional arguments: a **transition object** which defines the animation. This the transition from **transform**'s current value to its new value. The second argument is the **callback function**. 233 | 234 | In addition, we also need to add another dependency ```var Easing = require('famous/transitions/Easing');``` 235 | 236 | ```javascript 237 | stateModifier.setTransform( 238 | Transform.translate(100, 300, 0), 239 | { duration : 1000, curve: 'easeInOut' } 240 | ); 241 | ``` 242 | To chain animations, simply call your wanted stateModifier.setTransform's back to back. 243 | **Note**: that this method only works for chaining .setTransform() on the same state modifier. If you want to chain animations between modifiers, use a completion callback. 244 | 245 | You can interrupt an animation before it's over by calling .halt() on the state modifier. 246 | 247 | ```javascript 248 | surface.on('click', function() { 249 | stateModifier.halt(); 250 | surface.setContent('halted'); 251 | }); 252 | ``` 253 | 254 | Physics transitions can give animations a more realistic feel and can be tuned more precisely. (I like these better). For this, we need to add a few more dependecies, but we can take out the easing one. 255 | 256 | ```javascript 257 | var Transitionable = require('famous/transitions/Transitionable'); 258 | var SpringTransition = require('famous/transitions/SpringTransition'); 259 | Transitionable.registerMethod('spring', SpringTransition); 260 | ``` 261 | There difference is the last part, where instead of bringing in a dependency, we register the spring transition to the transition object with method 'spring'. 262 | 263 | Our last steps are to specify the parameters and apply the transition. Which looks like: 264 | 265 | ```javascript 266 | var spring = { 267 | method: 'spring', 268 | period: 1000, 269 | dampingRatio: 0.3 270 | }; 271 | 272 | stateModifier.setTransform( 273 | Transform.translate(0, 300, 0), spring 274 | ); 275 | ``` 276 | 277 | #### Handling Events 278 | 1. Surface events 279 | 2. Engine events 280 | 3. Program events 281 | 282 | For the use of events we must include the dependency ```var EventHandler = require('famous/core/EventHandler');``` 283 | 284 | **surfaces**capture all the falling DOM events listed, and can be registered with a callback function using the .on() method; click, mousedown, mousemove, mouseup, mouseover, mouseout, touchstart, touchmove, touchend, touchcancel, keydown, keyup, keypress. 285 | 286 | Example of a **surface** event, that when click changes the text 'click me' to 'Gennevi is sexy!' : 287 | 288 | ```javscript 289 | var surface = new Surface({ 290 | size: [undefined, 100], 291 | content: 'click me', 292 | properties: { 293 | color: 'white', 294 | textAlign: 'center', 295 | backgroundColor: '#FA5C4F' 296 | } 297 | }); 298 | 299 | mainContext.add(surface); 300 | 301 | surface.on('click', function() { 302 | surface.setContent('Gennevi, is Sexy!'); 303 | }); 304 | ``` 305 | Document events interact first with the surface that involved, then using the ```.on()``` method they can interact the **Context** containing the **surface**, and then as a default the engine itself. 306 | 307 | We can emit, transmit, and listen to program events using Event Handler objects. This is our second case, the Engine handlers. 308 | ```javascript 309 | var eventHandler = new EventHandler(); 310 | 311 | surface.on('click', function() { 312 | eventHandler.emit('hello'); 313 | }); 314 | 315 | eventHandler.on('hello', function() { 316 | surface.setContent('heard hello'); 317 | }); 318 | ``` 319 | 320 | We have a surface that one clicked emits an event as a string ```'hello'```, and once that string is emitted it is captured with our eventHandler which then switches whatever initial content to 'heard hello'. 321 | 322 | We also have Program Events. 323 | Example: Program Event - Event Handler 324 | ```javascript 325 | var eventHandlerA = new EventHandler(); 326 | var eventHandlerB = new EventHandler(); 327 | 328 | surfaceA.on('click', function() { 329 | eventHandlerA.emit('hello'); 330 | surfaceA.setContent('said hello'); 331 | }); 332 | 333 | eventHandlerB.subscribe(eventHandlerA); 334 | 335 | eventHandlerB.on('hello', function() { 336 | surfaceB.setContent('heard hello'); 337 | }); 338 | ``` 339 | 340 | Event handler A emits 'hello' when surface A is clicked. Event handler B listens for the 'hello' event and calls surface B to set its content when the event is triggered. 341 | 342 | This logic alone does not produce any results when surface A is clicked because the two event handlers are not transmitting to each other. To do so, event handler B has to subscribe to event handler A using ```.subscribe()``` When event handler B subscribes to event handler A, all events emitted from event handler A will be heard by event handler B. 343 | 344 | Now we have Program Events - Pipe & Subscribe 345 | 346 | An alternative to ```.subscribe()``` is ```.pipe()```, which directly sends the emmited events from one handler to another. 347 | 348 | ```javascript 349 | surfaceA.on('click', function() { 350 | eventHandlerA.emit('hello'); 351 | surfaceA.setContent('said hello'); 352 | }); 353 | 354 | eventHandlerA.pipe(eventHandlerB); 355 | 356 | eventHandlerB.on('hello', function() { 357 | surfaceB.setContent('heard hello'); 358 | }); 359 | ``` 360 | Pipe VS. Subscribe, from your friendly stackoverflow. 361 | 362 | >If you do widgetA.pipe(widgetB) then all events from widgetA are sent to widgetB regardless whether widgetB is listening to them. Pipe is like a firehose. 363 | 364 | >Subscribe on the other hand, is more performant. WidgetB.subscribe(widgetA) says "of the things you emit, I want to subscribe to a particular subset." Other events are then completely ignored. 365 | 366 | >This is especially important when interacting with the DOM, which outputs a lot of events (mousedown, mouseup, touchmove, resize, etc...), and it's preferred to use Subscribe when listening to a DOM element. 367 | 368 | Program Events - Views 369 | 370 | When you pipe into a view or subscribe from a view, you're actually piping into or subscribing from the input event handler of a view, called ```view._eventInput```. 371 | 372 | a view's input handler is the aggregation point of all the events coming into that view. The view can then decide what to do with those events by listening on it's ```_eventInput ```. For views you also need to include the view dependency, ```var View = require('famous/core/View');```. 373 | 374 | View Example: 375 | ```javascript 376 | var myView = new View(); 377 | mainContext.add(myView); 378 | 379 | var surface = new Surface({ 380 | size: [100, 100], 381 | content: 'click me', 382 | properties: { 383 | color: 'white', 384 | textAlign: 'center', 385 | backgroundColor: '#FA5C4F' 386 | } 387 | }); 388 | 389 | myView.add(surface); 390 | 391 | surface.pipe(myView); 392 | // alternatively, myView.subscribe(surface); 393 | // normally inside view module's code 394 | myView._eventInput.on('click', function() { 395 | surface.setContent('hello'); 396 | }); 397 | ``` 398 | 399 | Views can broadcasts an event to the outside world from its output handler. Outside of the view, we use ```.on()``` to listen for those events. 400 | ```javascript 401 | myView._eventInput.on('click', function() { 402 | myView._eventOutput.emit('hello'); 403 | }); 404 | ``` 405 | 406 | ###### Best Practices 407 | - A Famo.us app can have more than one context, but a mobile app or full-page web app usually just uses one. 408 | - The order that you chain modifiers matters! 409 | - Listening on Engine events is a catch-all but in most applications, you'll want to capture the events at a lower level. 410 | 411 | # [FamoUs University 102](http://famo.us/university/lessons/#/famous-102/) 412 | 413 | #Layouts 414 | 415 | ## Header & Footer 416 | 417 | ```javascript 418 | var Engine = require('famous/core/Engine'); 419 | var Surface = require('famous/core/Surface'); 420 | var HeaderFooterLayout = require("famous/views/HeaderFooterLayout"); 421 | 422 | var mainContext = Engine.createContext(); 423 | ``` 424 | As always, make sure that you include your propper dependencies so that you can use all the features you want. The only new one in this case is the **Header** and **Footer** which van both be found in the views folder. 425 | 426 | ```javascript 427 | var layout = new HeaderFooterLayout({ 428 | headerSize: 100, 429 | footerSize: 50 430 | }); 431 | ``` 432 | 433 | ```javascript 434 | layout.header.add(new Surface({ 435 | content: "Header", 436 | properties: { 437 | backgroundColor: 'gray', 438 | lineHeight: "100px", 439 | textAlign: "center" 440 | } 441 | })); 442 | ``` 443 | 444 | ```javascript 445 | layout.content.add(new Surface({ 446 | content: "Content", 447 | properties: { 448 | backgroundColor: '#fa5c4f', 449 | lineHeight: '400px', 450 | textAlign: "center" 451 | } 452 | })); 453 | ``` 454 | 455 | ```javascript 456 | layout.footer.add(new Surface({ 457 | content: "Footer", 458 | properties: { 459 | backgroundColor: 'gray', 460 | lineHeight: "50px", 461 | textAlign: "center" 462 | } 463 | })); 464 | ``` 465 | 466 | Layouts will fill the size of its parent modifier or context. In our example it fills the size of our main context. 467 | 468 | 469 | #### [Demos](http://famous.org/) 470 | #### [Guides](https://github.com/Famous/famous/tree/master/guides) 471 | * animations 472 | * events 473 | * layout 474 | * migrating-0.2-to-0.3 475 | * pitfalls 476 | * render-tree 477 | 478 | #### [Projects]() 479 | -------------------------------------------------------------------------------- /Programming/Web Development/Frontend/frontend-frameworks.md: -------------------------------------------------------------------------------- 1 | Front-end Frameworks 2 | ==================== 3 | 4 | A collection of best front-end frameworks for faster and easier web development. 5 | 6 | You can **Compare** all front-end frameworks here: http://usablica.github.com/front-end-frameworks/compare.html 7 | 8 | ## IceCream 9 | 10 | > Simple and light responsive grid system 11 | 12 | **Responsive:** Yes 13 | 14 | **Website:** http://html5-ninja.com/icecream 15 | 16 | ## Formee Framework for forms 17 | > Formee is nothing but a framework to help you develop and customize web based forms. 18 | > Crossbrowser: Don't worry about having your form being rendered differently in the major browsers. 19 | > Flexible:It fits into your project, it's flexible enough to adapt to the width you have available for the form. 20 | > Customizable:You can easily change between a stylish form or a minimalist one. It comes with the basic needed for you to put your touch in it. 21 | 22 | **Responsive:** No 23 | 24 | **Website:** http://www.formee.org/ 25 | 26 | 27 | ## 1kb grid 28 | 29 | Other CSS frameworks try to do everything—grid system, style reset, basic typography, form styles. But complex systems are, well, complex. Looking for a simple, lightweight approach that doesn't require a PhD? Meet The 1KB CSS Grid. 30 | 31 | **Responsive:** No 32 | 33 | **Website:** http://www.1kbgrid.com/ 34 | 35 | ## 52framework 36 | 37 | With HTML5 support coming so fast, with the tiniest of hacks we are able to use it today in virtually al browsers. Using HTML5 makes for much cleaner mark up. This framework fully uses all the great advantages of HTML5. 38 | 39 | **Responsive:** No 40 | 41 | **Website:** http://52framework.com/ 42 | 43 | ## Concise 44 | 45 | > Lightweight, highly customizable, scalable, Sass-based, OOCSS framework. LESS and Stylus ports also available. 46 | 47 | **Responsive:** Yes 48 | 49 | **Website:** http://concisecss.com/ 50 | 51 | ## Bootstrap 52 | 53 | > Sleek, intuitive, and powerful front-end framework for faster and easier web development. 54 | 55 | **Responsive:** Yes 56 | 57 | **Website:** http://getbootstrap.com/ 58 | 59 | ## 960 Grid System 60 | 61 | > Simple grid system 62 | 63 | The 960 Grid System is 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. 64 | 65 | **Responsive:** Yes 66 | 67 | **Website:** http://960.gs/ 68 | 69 | ## 99lime HTML KickStart 70 | 71 | > Ultra–Lean HTML Building Blocks for Rapid Website Production. 72 | 73 | HTML KickStart is an ultra–lean set of HTML5, CSS, and jQuery (javascript) files, layouts, and elements designed to give you a headstart and save you 10's of hours on your next web project. 74 | 75 | **Responsive:** Yes 76 | 77 | **Website:** http://www.99lime.com/ 78 | 79 | ## Baseline 80 | 81 | > Baseline is a framework built around the idea of a “real” baseline grid. 82 | 83 | Built with typographic standards in mind, Baseline makes it easy to develop a website with a pleasing grid and good typography. Baseline starts with several files to reset the browser’s default behavior, build a basic typographic layout — including style for HTML forms and new HTML 5 elements — and build a simple grid system. 84 | 85 | **Responsive:** No 86 | 87 | **Website:** http://www.baselinecss.com/ 88 | 89 | ## Blueprint 90 | 91 | Blueprint is a CSS framework, which aims to cut down on your development time. It gives you a solid foundation to build your project on top of, with an easy-to-use grid, sensible typography, useful plugins, and even a stylesheet for printing. 92 | 93 | **Responsive:** No 94 | 95 | **Website:** http://www.blueprintcss.org/ 96 | 97 | ## BlueTrip 98 | 99 | A full featured and beautiful CSS framework which originally combined the best of Blueprint, Tripoli (hence the name), Hartija, 960.gs, and Elements, but has now found a life of its own. 100 | 101 | **Responsive:** No 102 | 103 | **Website:** http://bluetrip.org/ 104 | 105 | ## Boilerplate 106 | 107 | > noun standardized pieces of text for use as clauses in contracts or as part of a computer program. 108 | 109 | As one of the original authors of Blueprint CSS I’ve decided to re-factor my ideas into a stripped down framework which provides the bare essentials to begin any project. This framework will be lite and strive not to suggest un-semantic naming conventions. You’re the designer and your craft is important. 110 | 111 | **Responsive:** No 112 | 113 | **Website:** http://code.google.com/p/css-boilerplate/ 114 | 115 | ## Cascade Framework 116 | 117 | > Powerful OOCSS front-end framework optimised for performance and flexibility. 118 | 119 | **Responsive:** Yes 120 | 121 | **Website:** http://cascade-framework.com/ 122 | 123 | ## Cascade Framework Light 124 | 125 | > An even more lightweight version of Cascade Framework, containing just the bare essentials. 126 | 127 | **Responsive:** Yes 128 | 129 | **Website:** https://github.com/jslegers/cascadeframeworklight/ 130 | 131 | ## Easy Framework 132 | 133 | > Your new starting point for every front-end projects! 134 | 135 | Easy is a CSS/HTML/JavaScript framework started as a personal project and then grew into something more. The idea behind it is to reduce the amount of time spent on setting up the basic master HTML template by reusing the same coding techniques. 136 | 137 | **Responsive:** No 138 | 139 | **Website:** http://easyframework.com/ 140 | 141 | ## elastiCSS 142 | 143 | A simple css framework to layout web-based interfaces, based on the printed layout techniques of 4 columns but with capabilities to unlimited column combinations. and capacity to make elastic, fixed and liquid layout easily 144 | 145 | **Responsive:** No 146 | 147 | **Website:** http://elasticss.com/ 148 | 149 | ## Elements 150 | 151 | > Elements is a down to earth CSS framework. 152 | 153 | It was built to help designers write CSS faster and more efficient. Elements goes beyond being just a framework, it’s its own project workflow.It has everything you need to complete your project, which makes you and your clients happy. 154 | 155 | **Responsive:** No 156 | 157 | **Website:** http://elements.projectdesigns.org/ 158 | 159 | ## Emastic 160 | 161 | Emastic is a CSS Framework, it’s continuing mission: to explore a strange new world, to seek out new life and new web spaces, to boldly go where no CSS Framework has gone before. 162 | 163 | **Responsive:** No 164 | 165 | **Website:** http://code.google.com/p/emastic/ 166 | 167 | ## FEM CSS Framework 168 | 169 | FEM CSS Framework is a 960px width + 12 column grid system + CSS common styles, to easy and fast develop web layouts. It is based in the 960 Grid System, but with a twist in the philosophy to make it more flexible and faster to play with boxes. 170 | 171 | **Responsive:** No 172 | 173 | **Website:** http://www.frontendmatters.com/projects/fem-css-framework/ 174 | 175 | ## Flaminwork 176 | 177 | > The tiny front-end framework for lazy developers. 178 | 179 | **Responsive:** No 180 | 181 | **Website:** http://flaminwork.com/ 182 | 183 | ## Fluid 184 | 185 | The Fluid 960 Grid System templates have been built upon the work of Nathan Smith and his 960 Grid System using effects from the MooTools and jQuery JavaScript libraries. 186 | 187 | **Responsive:** No 188 | 189 | **Website:** http://www.designinfluences.com/fluid960gs/ 190 | 191 | ## Foundation 192 | 193 | > The most advanced responsive front-end framework in the world. 194 | 195 | Foundation is built with Sass, a powerful CSS preprocessor, which allows us to much more quickly develop Foundation itself and gives you new tools to quickly customize and build on top of Foundation. 196 | 197 | **Responsive:** Yes 198 | 199 | **Website:** http://foundation.zurb.com/ 200 | 201 | ## G5 Framework 202 | 203 | > (X)HTML5, CSS3, PHP & jQuery Front End Framework. 204 | 205 | G5 Framework started as a personal project. In an attempt to speed up workflow, reuse the best coding practices & similar coding techniques, the framework serves as a starter file for new websites. 206 | 207 | **Responsive:** No 208 | 209 | **Website:** http://framework.gregbabula.info/ 210 | 211 | ## GroundworkCSS 212 | 213 | A responsive framework with a fractional, semantic grid system built with Sass & Compass. 214 | 215 | **Responsive:** Yes 216 | 217 | **Website:** http://groundwork.sidereel.com/ 218 | 219 | ## Gumby 220 | 221 | Gumby is a responsive 960 grid CSS framework. The grid lets you lay out pages quickly and easily in a natural, logical way. The framework is packaged with tons of styles and common interface elements to help you quickly put together functional prototypes. 222 | 223 | **Responsive:** Yes 224 | 225 | **Website:** http://gumbyframework.com 226 | 227 | ## Helium 228 | 229 | Helium is a framework for rapid prototyping and production-ready development. In many ways it's similar to both Twitter Bootstrap and ZURB Foundation - in fact, it uses bits of their code. Unlike either of these two frameworks, however, Helium is designed to be much more lightweight and easier to tinker with. 230 | 231 | **Responsive:** Yes 232 | 233 | **Website:** https://github.com/cbrauckmuller/helium 234 | 235 | ## Ink 236 | 237 | > Ink is a set of tools for quick development of web interfaces. 238 | 239 | It offers a fluid and responsive grid, common interface elements, interactive components, a design-first approach with ease of use and simplicity at its core. Start integrating Ink in your projects and remove the hassle of building the basics, staying free to focus on what's important. 240 | 241 | **Responsive:** Yes 242 | 243 | **Website:** http://ink.sapo.pt/ 244 | 245 | **Github:** http://github.com/sapo/ink/ 246 | 247 | ## Kickoff 248 | 249 | > A lightweight front-end framework for creating scalable, responsive sites 250 | 251 | Kickoff is an actively maintained front-end framework, created by Zander Martineau and Ashley Nolan. 252 | 253 | The framework is not meant to be too prescriptive - we don't want to force developers into a certain coding style - and so can be used as a starting point for any type of project. 254 | 255 | **Responsive:** Yes 256 | 257 | **Website:** http://tmwagency.github.io/kickoff/ 258 | 259 | **Github:** https://github.com/tmwagency/kickoff 260 | 261 | ## Kube 262 | 263 | > CSS-framework for professional developers. 264 | 265 | Minimal and enough. Adaptive and responsive. Revolution grid and beautiful typography. No imposed styles and freedom. 266 | 267 | **Responsive:** Yes 268 | 269 | **Website:** http://imperavi.com/kube/ 270 | 271 | ## Layers 272 | 273 | > Lightweight. Unobtrusive. Style-agnostic. Build your look on the web, not Twitter's – and build it fluid. 274 | 275 | Layers CSS is aimed for practical use and comes with zero bullshit. 276 | 277 | **Responsive:** Yes 278 | 279 | **Website:** http://eiskis.net/layers/ 280 | 281 | **Bitbucket:** https://bitbucket.org/Eiskis/layers-css/src/tip/source/layers/ 282 | 283 | ## Less Framework 284 | 285 | > An adaptive CSS grid system. 286 | 287 | Less Framework is a CSS grid system for designing adaptive web­sites. It contains 4 layouts and 3 sets of typography presets, all based on a single grid. 288 | 289 | **Responsive:** Yes 290 | 291 | **Website:** http://lessframework.com/ 292 | 293 | ## Lovely CSS Framework 294 | 295 | > The Lovely CSS Framework is a simple and straight forward way to easily deploy an XHTML/CSS site. 296 | 297 | Based on a simple 960px wide grid system, featuring multiple column layouts, and various pluggable add-ons. 298 | 299 | **Responsive:** No 300 | 301 | **Website:** http://code.google.com/p/lovely-css/ 302 | 303 | ## Malo 304 | 305 | > Malo is ultra small css library for building web sites. 306 | 307 | Malo is ultra small css library for building web sites. It is meant to be structural base for small or medium web sites. Malo derives from it’s bigger brother Emastic CSS Framework. 308 | 309 | **Responsive:** No 310 | 311 | **Website:** http://code.google.com/p/malo/ 312 | 313 | ## PureCSS 314 | 315 | > A set of small, responsive CSS modules that you can use in every web project, built by the YUI team at Yahoo!. 316 | 317 | PureCSS is a collection of responsive 'drop-ins' built with - you guessed it! - pure CSS! The PureCSS website also has a skin builder on their website, so you're restricted by default colors no more. 318 | 319 | **Responsive:** Yes 320 | 321 | **Website:** http://purecss.io/ 322 | 323 | ## Ribs 324 | 325 | > The evolution of Skeleton: A Beautiful Boilerplate for Responsive, Mobile-Friendly Development. 326 | 327 | Ribs is a modernised, maintained and feature rich fork of the original Skeleton framework. 328 | 329 | **Responsive:** Yes 330 | 331 | **Website:** https://github.com/nickpack/Ribs 332 | 333 | ## RÖCSSTI 334 | 335 | RÖCSSTI is a CSS micro-framework which includes accessibility notions, typo settings, IE fixes, reusable classes, ect. It is the little brother of [KNACSS](http://www.knacss.com/). It also has LESS and Sass versions. 336 | 337 | **Responsive:** Yes 338 | 339 | **Website:** http://rocssti.nicolas-hoffmann.net/ & https://github.com/nico3333fr/ROCSSTI 340 | 341 | ## Semantic UI 342 | 343 | > UI is the vocabulary of the web. 344 | 345 | Semantic empowers designers and developers by creating a language for sharing UI. 346 | 347 | Pure is ridiculously tiny. The entire set of modules clocks in at 4.5KB* minified and gzipped. Crafted with mobile devices in mind, it was important to us to keep our file sizes small, and every line of CSS was carefully considered. If you decide to only use a subset of these modules, you'll save even more bytes. 348 | 349 | **Responsive:** Yes 350 | 351 | **Website:** http://semantic-ui.com/ 352 | 353 | **Github:** https://github.com/jlukic/Semantic-UI 354 | 355 | ## Crumpet 356 | 357 | > A Deliciously Simple SASS/SCSS Responsive Framework 358 | 359 | Everything is straight forward, all of the code is commented and gives you instructions on how to use Crumpet, so you can spend all your time in the code editor. 360 | 361 | **Responsive:** Yes 362 | 363 | **Website:** https://github.com/AdamMarsBar/Crumpet 364 | 365 | 366 | ## Jeet 367 | 368 | > A CSS Grid System for Humans 369 | 370 | Jeet allows you to express your page grid the same way a human would describe it. No more needlessly nesting elements. No more rigid twelve column rules. Enjoy building faster with less code, and more flexibility with Jeet. 371 | 372 | **Responsive:** Yes 373 | 374 | **Website:** http://jeet.gs/ 375 | 376 | ## Skeleton 377 | 378 | > A Beautiful Boilerplate for Responsive, Mobile-Friendly Development. 379 | 380 | Skeleton is a small collection of CSS files that can help you rapidly develop sites that look beautiful at any size, be it a 17" laptop screen or an iPhone. 381 | 382 | **Responsive:** Yes 383 | 384 | **Website:** http://www.getskeleton.com/ 385 | 386 | ## The Golden Grid 387 | 388 | The Golden Grid is a web grid system. It 's a product of the search for the perfect modern grid system. It 's meant to be a CSS tool for grid based web sites. 389 | 390 | **Responsive:** No 391 | 392 | **Website:** http://code.google.com/p/the-golden-grid/ 393 | 394 | ## Unsemantic 395 | 396 | Unsemantic is a fluid grid system that is the successor to the [960 Grid System](http://960.gs/). It works in a similar way, but instead of being a set number of columns, it's entirely based on percentages. 397 | 398 | **Responsive:** Yes 399 | 400 | **Website:** http://unsemantic.com/ 401 | 402 | ## xCSS 403 | 404 | > Object-Oriented CSS Framework 405 | 406 | xCSS bases on CSS and empowers a straightforward and object-oriented workflow when developing complex style cascades. Using xCSS means a dramatic cut down to your development time by: having a intuitive overview of the overall CSS structure, using variables, re-using existing style cascades and many other handy features. 407 | 408 | **Responsive:** No 409 | 410 | **Website:** http://xcss.antpaw.org/ 411 | 412 | ## YAML 413 | 414 | > “Yet Another Multicolumn Layout” (YAML) 415 | 416 | YAML is an (X)HTML/CSS framework for creating modern and flexible floated layouts. The structure is extremely versatile in its programming and absolutely accessible for end users. 417 | 418 | **Responsive:** Yes 419 | 420 | **Website:** http://www.yaml.de/ 421 | 422 | ## YUI CSS 423 | 424 | > Simple CSS for the web 425 | 426 | The foundational YUI CSS is an extremely lightweight layer of responsive CSS for your projects. It offers a customizable responsive grid , along with styling for forms, tables, menus, popovers, notifications, images and more. Plays nice with YUI's JavaScript Framework. 427 | 428 | **Responsive:** Yes 429 | 430 | **Website:** http://yuilibrary.com/ 431 | 432 | ## Susy 433 | 434 | > Your markup. Your design. Our math. 435 | 436 | The web is a responsive place, from your lithe & lively development process to your end-user's super-tablet-multi-magic-lap-phone. You need grids that are powerful yet custom, reliable yet responsive. 437 | 438 | **Responsive:** Yes 439 | 440 | **Website:** http://susy.oddbird.net/ 441 | 442 | **Github:** https://github.com/ericam/susy/ 443 | 444 | ## inuit.css 445 | 446 | > A powerful, scalable, Sass-based, [BEM](http://bem.info/), OOCSS framework. 447 | 448 | inuit.css is a Sass based, Object Oriented framework that is full of objects and abstractions. inuit.css provides little-to-no design which means no undoing things, no deleting CSS and no adhering to other peoples’ design decisions. 449 | 450 | **Responsive:** Yes 451 | 452 | **Website:** http://inuitcss.com/ 453 | 454 | **Github:** https://github.com/csswizardry/inuit.css/ 455 | 456 | ## Bijou 457 | 458 | > A beautiful CSS framework under 2kb 459 | 460 | A small, yet beautiful CSS framework that weighs in under 2kb. 461 | 462 | **Responsive:** Yes 463 | 464 | **Website:** http://andhart.github.io/bijou 465 | 466 | **Github:** https://github.com/andhart/bijou 467 | 468 | ## bootmetro 469 | 470 | > metro style web framework 471 | 472 | simple and flexible web framework to create elegant and modern web applications with the same look & feel of Windows 8. 473 | 474 | **Responsive:** Yes 475 | 476 | **Website:** http://aozora.github.io/bootmetro/ 477 | 478 | **Github:** https://github.com/aozora/bootmetro 479 | 480 | ## StackLayout 481 | 482 | > A flexible width, component based CSS layout system 483 | 484 | StackLayout makes it incredibly easy to use semantic class names for particular areas of your site, such as the main navigation or a thumbnail gallery, or for the entire site as part of your deployment process. 485 | 486 | **Responsive:** Yes 487 | 488 | **Website:** http://www.stacklayout.com/ 489 | 490 | **Github:** https://github.com/camslice/StackLayout 491 | 492 | ## IVORY Framework 493 | 494 | > imple, Flexible, Powerful 495 | 496 | Responsive front-end web framework. Makes your front-end development faster and easier. Takes you all theway from 1200PX on down to 320PX. 497 | 498 | **Responsive:** Yes 499 | 500 | **Website:** http://weice.in/ivory/ 501 | 502 | **Github:** https://github.com/kanthvallampati/IVORY 503 | -------------------------------------------------------------------------------- /Programming/Web Development/Frontend/javascript-frameworks.md: -------------------------------------------------------------------------------- 1 | Javascript Frameworks 2 | ==================== 3 | 4 | A collection of best front-end frameworks for faster and easier web development. 5 | 6 | You can **Compare** all front-end frameworks here: http://usablica.github.com/front-end-frameworks/compare.html 7 | 8 | ## IceCream 9 | 10 | > Simple and light responsive grid system 11 | 12 | **Responsive:** Yes 13 | 14 | **Website:** http://html5-ninja.com/icecream 15 | 16 | ## Formee Framework for forms 17 | > Formee is nothing but a framework to help you develop and customize web based forms. 18 | > Crossbrowser: Don't worry about having your form being rendered differently in the major browsers. 19 | > Flexible:It fits into your project, it's flexible enough to adapt to the width you have available for the form. 20 | > Customizable:You can easily change between a stylish form or a minimalist one. It comes with the basic needed for you to put your touch in it. 21 | 22 | **Responsive:** No 23 | 24 | **Website:** http://www.formee.org/ 25 | 26 | 27 | ## 1kb grid 28 | 29 | Other CSS frameworks try to do everything—grid system, style reset, basic typography, form styles. But complex systems are, well, complex. Looking for a simple, lightweight approach that doesn't require a PhD? Meet The 1KB CSS Grid. 30 | 31 | **Responsive:** No 32 | 33 | **Website:** http://www.1kbgrid.com/ 34 | 35 | ## 52framework 36 | 37 | With HTML5 support coming so fast, with the tiniest of hacks we are able to use it today in virtually al browsers. Using HTML5 makes for much cleaner mark up. This framework fully uses all the great advantages of HTML5. 38 | 39 | **Responsive:** No 40 | 41 | **Website:** http://52framework.com/ 42 | 43 | ## Concise 44 | 45 | > Lightweight, highly customizable, scalable, Sass-based, OOCSS framework. LESS and Stylus ports also available. 46 | 47 | **Responsive:** Yes 48 | 49 | **Website:** http://concisecss.com/ 50 | 51 | ## Bootstrap 52 | 53 | > Sleek, intuitive, and powerful front-end framework for faster and easier web development. 54 | 55 | **Responsive:** Yes 56 | 57 | **Website:** http://getbootstrap.com/ 58 | 59 | ## 960 Grid System 60 | 61 | > Simple grid system 62 | 63 | The 960 Grid System is 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. 64 | 65 | **Responsive:** Yes 66 | 67 | **Website:** http://960.gs/ 68 | 69 | ## 99lime HTML KickStart 70 | 71 | > Ultra–Lean HTML Building Blocks for Rapid Website Production. 72 | 73 | HTML KickStart is an ultra–lean set of HTML5, CSS, and jQuery (javascript) files, layouts, and elements designed to give you a headstart and save you 10's of hours on your next web project. 74 | 75 | **Responsive:** Yes 76 | 77 | **Website:** http://www.99lime.com/ 78 | 79 | ## Baseline 80 | 81 | > Baseline is a framework built around the idea of a “real” baseline grid. 82 | 83 | Built with typographic standards in mind, Baseline makes it easy to develop a website with a pleasing grid and good typography. Baseline starts with several files to reset the browser’s default behavior, build a basic typographic layout — including style for HTML forms and new HTML 5 elements — and build a simple grid system. 84 | 85 | **Responsive:** No 86 | 87 | **Website:** http://www.baselinecss.com/ 88 | 89 | ## Blueprint 90 | 91 | Blueprint is a CSS framework, which aims to cut down on your development time. It gives you a solid foundation to build your project on top of, with an easy-to-use grid, sensible typography, useful plugins, and even a stylesheet for printing. 92 | 93 | **Responsive:** No 94 | 95 | **Website:** http://www.blueprintcss.org/ 96 | 97 | ## BlueTrip 98 | 99 | A full featured and beautiful CSS framework which originally combined the best of Blueprint, Tripoli (hence the name), Hartija, 960.gs, and Elements, but has now found a life of its own. 100 | 101 | **Responsive:** No 102 | 103 | **Website:** http://bluetrip.org/ 104 | 105 | ## Boilerplate 106 | 107 | > noun standardized pieces of text for use as clauses in contracts or as part of a computer program. 108 | 109 | As one of the original authors of Blueprint CSS I’ve decided to re-factor my ideas into a stripped down framework which provides the bare essentials to begin any project. This framework will be lite and strive not to suggest un-semantic naming conventions. You’re the designer and your craft is important. 110 | 111 | **Responsive:** No 112 | 113 | **Website:** http://code.google.com/p/css-boilerplate/ 114 | 115 | ## Cascade Framework 116 | 117 | > Powerful OOCSS front-end framework optimised for performance and flexibility. 118 | 119 | **Responsive:** Yes 120 | 121 | **Website:** http://cascade-framework.com/ 122 | 123 | ## Cascade Framework Light 124 | 125 | > An even more lightweight version of Cascade Framework, containing just the bare essentials. 126 | 127 | **Responsive:** Yes 128 | 129 | **Website:** https://github.com/jslegers/cascadeframeworklight/ 130 | 131 | ## Easy Framework 132 | 133 | > Your new starting point for every front-end projects! 134 | 135 | Easy is a CSS/HTML/JavaScript framework started as a personal project and then grew into something more. The idea behind it is to reduce the amount of time spent on setting up the basic master HTML template by reusing the same coding techniques. 136 | 137 | **Responsive:** No 138 | 139 | **Website:** http://easyframework.com/ 140 | 141 | ## elastiCSS 142 | 143 | A simple css framework to layout web-based interfaces, based on the printed layout techniques of 4 columns but with capabilities to unlimited column combinations. and capacity to make elastic, fixed and liquid layout easily 144 | 145 | **Responsive:** No 146 | 147 | **Website:** http://elasticss.com/ 148 | 149 | ## Elements 150 | 151 | > Elements is a down to earth CSS framework. 152 | 153 | It was built to help designers write CSS faster and more efficient. Elements goes beyond being just a framework, it’s its own project workflow.It has everything you need to complete your project, which makes you and your clients happy. 154 | 155 | **Responsive:** No 156 | 157 | **Website:** http://elements.projectdesigns.org/ 158 | 159 | ## Emastic 160 | 161 | Emastic is a CSS Framework, it’s continuing mission: to explore a strange new world, to seek out new life and new web spaces, to boldly go where no CSS Framework has gone before. 162 | 163 | **Responsive:** No 164 | 165 | **Website:** http://code.google.com/p/emastic/ 166 | 167 | ## FEM CSS Framework 168 | 169 | FEM CSS Framework is a 960px width + 12 column grid system + CSS common styles, to easy and fast develop web layouts. It is based in the 960 Grid System, but with a twist in the philosophy to make it more flexible and faster to play with boxes. 170 | 171 | **Responsive:** No 172 | 173 | **Website:** http://www.frontendmatters.com/projects/fem-css-framework/ 174 | 175 | ## Flaminwork 176 | 177 | > The tiny front-end framework for lazy developers. 178 | 179 | **Responsive:** No 180 | 181 | **Website:** http://flaminwork.com/ 182 | 183 | ## Fluid 184 | 185 | The Fluid 960 Grid System templates have been built upon the work of Nathan Smith and his 960 Grid System using effects from the MooTools and jQuery JavaScript libraries. 186 | 187 | **Responsive:** No 188 | 189 | **Website:** http://www.designinfluences.com/fluid960gs/ 190 | 191 | ## Foundation 192 | 193 | > The most advanced responsive front-end framework in the world. 194 | 195 | Foundation is built with Sass, a powerful CSS preprocessor, which allows us to much more quickly develop Foundation itself and gives you new tools to quickly customize and build on top of Foundation. 196 | 197 | **Responsive:** Yes 198 | 199 | **Website:** http://foundation.zurb.com/ 200 | 201 | ## G5 Framework 202 | 203 | > (X)HTML5, CSS3, PHP & jQuery Front End Framework. 204 | 205 | G5 Framework started as a personal project. In an attempt to speed up workflow, reuse the best coding practices & similar coding techniques, the framework serves as a starter file for new websites. 206 | 207 | **Responsive:** No 208 | 209 | **Website:** http://framework.gregbabula.info/ 210 | 211 | ## GroundworkCSS 212 | 213 | A responsive framework with a fractional, semantic grid system built with Sass & Compass. 214 | 215 | **Responsive:** Yes 216 | 217 | **Website:** http://groundwork.sidereel.com/ 218 | 219 | ## Gumby 220 | 221 | Gumby is a responsive 960 grid CSS framework. The grid lets you lay out pages quickly and easily in a natural, logical way. The framework is packaged with tons of styles and common interface elements to help you quickly put together functional prototypes. 222 | 223 | **Responsive:** Yes 224 | 225 | **Website:** http://gumbyframework.com 226 | 227 | ## Helium 228 | 229 | Helium is a framework for rapid prototyping and production-ready development. In many ways it's similar to both Twitter Bootstrap and ZURB Foundation - in fact, it uses bits of their code. Unlike either of these two frameworks, however, Helium is designed to be much more lightweight and easier to tinker with. 230 | 231 | **Responsive:** Yes 232 | 233 | **Website:** https://github.com/cbrauckmuller/helium 234 | 235 | ## Ink 236 | 237 | > Ink is a set of tools for quick development of web interfaces. 238 | 239 | It offers a fluid and responsive grid, common interface elements, interactive components, a design-first approach with ease of use and simplicity at its core. Start integrating Ink in your projects and remove the hassle of building the basics, staying free to focus on what's important. 240 | 241 | **Responsive:** Yes 242 | 243 | **Website:** http://ink.sapo.pt/ 244 | 245 | **Github:** http://github.com/sapo/ink/ 246 | 247 | ## Kickoff 248 | 249 | > A lightweight front-end framework for creating scalable, responsive sites 250 | 251 | Kickoff is an actively maintained front-end framework, created by Zander Martineau and Ashley Nolan. 252 | 253 | The framework is not meant to be too prescriptive - we don't want to force developers into a certain coding style - and so can be used as a starting point for any type of project. 254 | 255 | **Responsive:** Yes 256 | 257 | **Website:** http://tmwagency.github.io/kickoff/ 258 | 259 | **Github:** https://github.com/tmwagency/kickoff 260 | 261 | ## Kube 262 | 263 | > CSS-framework for professional developers. 264 | 265 | Minimal and enough. Adaptive and responsive. Revolution grid and beautiful typography. No imposed styles and freedom. 266 | 267 | **Responsive:** Yes 268 | 269 | **Website:** http://imperavi.com/kube/ 270 | 271 | ## Layers 272 | 273 | > Lightweight. Unobtrusive. Style-agnostic. Build your look on the web, not Twitter's – and build it fluid. 274 | 275 | Layers CSS is aimed for practical use and comes with zero bullshit. 276 | 277 | **Responsive:** Yes 278 | 279 | **Website:** http://eiskis.net/layers/ 280 | 281 | **Bitbucket:** https://bitbucket.org/Eiskis/layers-css/src/tip/source/layers/ 282 | 283 | ## Less Framework 284 | 285 | > An adaptive CSS grid system. 286 | 287 | Less Framework is a CSS grid system for designing adaptive web­sites. It contains 4 layouts and 3 sets of typography presets, all based on a single grid. 288 | 289 | **Responsive:** Yes 290 | 291 | **Website:** http://lessframework.com/ 292 | 293 | ## Lovely CSS Framework 294 | 295 | > The Lovely CSS Framework is a simple and straight forward way to easily deploy an XHTML/CSS site. 296 | 297 | Based on a simple 960px wide grid system, featuring multiple column layouts, and various pluggable add-ons. 298 | 299 | **Responsive:** No 300 | 301 | **Website:** http://code.google.com/p/lovely-css/ 302 | 303 | ## Malo 304 | 305 | > Malo is ultra small css library for building web sites. 306 | 307 | Malo is ultra small css library for building web sites. It is meant to be structural base for small or medium web sites. Malo derives from it’s bigger brother Emastic CSS Framework. 308 | 309 | **Responsive:** No 310 | 311 | **Website:** http://code.google.com/p/malo/ 312 | 313 | ## PureCSS 314 | 315 | > A set of small, responsive CSS modules that you can use in every web project, built by the YUI team at Yahoo!. 316 | 317 | PureCSS is a collection of responsive 'drop-ins' built with - you guessed it! - pure CSS! The PureCSS website also has a skin builder on their website, so you're restricted by default colors no more. 318 | 319 | **Responsive:** Yes 320 | 321 | **Website:** http://purecss.io/ 322 | 323 | ## Ribs 324 | 325 | > The evolution of Skeleton: A Beautiful Boilerplate for Responsive, Mobile-Friendly Development. 326 | 327 | Ribs is a modernised, maintained and feature rich fork of the original Skeleton framework. 328 | 329 | **Responsive:** Yes 330 | 331 | **Website:** https://github.com/nickpack/Ribs 332 | 333 | ## RÖCSSTI 334 | 335 | RÖCSSTI is a CSS micro-framework which includes accessibility notions, typo settings, IE fixes, reusable classes, ect. It is the little brother of [KNACSS](http://www.knacss.com/). It also has LESS and Sass versions. 336 | 337 | **Responsive:** Yes 338 | 339 | **Website:** http://rocssti.nicolas-hoffmann.net/ & https://github.com/nico3333fr/ROCSSTI 340 | 341 | ## Semantic UI 342 | 343 | > UI is the vocabulary of the web. 344 | 345 | Semantic empowers designers and developers by creating a language for sharing UI. 346 | 347 | Pure is ridiculously tiny. The entire set of modules clocks in at 4.5KB* minified and gzipped. Crafted with mobile devices in mind, it was important to us to keep our file sizes small, and every line of CSS was carefully considered. If you decide to only use a subset of these modules, you'll save even more bytes. 348 | 349 | **Responsive:** Yes 350 | 351 | **Website:** http://semantic-ui.com/ 352 | 353 | **Github:** https://github.com/jlukic/Semantic-UI 354 | 355 | ## Crumpet 356 | 357 | > A Deliciously Simple SASS/SCSS Responsive Framework 358 | 359 | Everything is straight forward, all of the code is commented and gives you instructions on how to use Crumpet, so you can spend all your time in the code editor. 360 | 361 | **Responsive:** Yes 362 | 363 | **Website:** https://github.com/AdamMarsBar/Crumpet 364 | 365 | 366 | ## Jeet 367 | 368 | > A CSS Grid System for Humans 369 | 370 | Jeet allows you to express your page grid the same way a human would describe it. No more needlessly nesting elements. No more rigid twelve column rules. Enjoy building faster with less code, and more flexibility with Jeet. 371 | 372 | **Responsive:** Yes 373 | 374 | **Website:** http://jeet.gs/ 375 | 376 | ## Skeleton 377 | 378 | > A Beautiful Boilerplate for Responsive, Mobile-Friendly Development. 379 | 380 | Skeleton is a small collection of CSS files that can help you rapidly develop sites that look beautiful at any size, be it a 17" laptop screen or an iPhone. 381 | 382 | **Responsive:** Yes 383 | 384 | **Website:** http://www.getskeleton.com/ 385 | 386 | ## The Golden Grid 387 | 388 | The Golden Grid is a web grid system. It 's a product of the search for the perfect modern grid system. It 's meant to be a CSS tool for grid based web sites. 389 | 390 | **Responsive:** No 391 | 392 | **Website:** http://code.google.com/p/the-golden-grid/ 393 | 394 | ## Unsemantic 395 | 396 | Unsemantic is a fluid grid system that is the successor to the [960 Grid System](http://960.gs/). It works in a similar way, but instead of being a set number of columns, it's entirely based on percentages. 397 | 398 | **Responsive:** Yes 399 | 400 | **Website:** http://unsemantic.com/ 401 | 402 | ## xCSS 403 | 404 | > Object-Oriented CSS Framework 405 | 406 | xCSS bases on CSS and empowers a straightforward and object-oriented workflow when developing complex style cascades. Using xCSS means a dramatic cut down to your development time by: having a intuitive overview of the overall CSS structure, using variables, re-using existing style cascades and many other handy features. 407 | 408 | **Responsive:** No 409 | 410 | **Website:** http://xcss.antpaw.org/ 411 | 412 | ## YAML 413 | 414 | > “Yet Another Multicolumn Layout” (YAML) 415 | 416 | YAML is an (X)HTML/CSS framework for creating modern and flexible floated layouts. The structure is extremely versatile in its programming and absolutely accessible for end users. 417 | 418 | **Responsive:** Yes 419 | 420 | **Website:** http://www.yaml.de/ 421 | 422 | ## YUI CSS 423 | 424 | > Simple CSS for the web 425 | 426 | The foundational YUI CSS is an extremely lightweight layer of responsive CSS for your projects. It offers a customizable responsive grid , along with styling for forms, tables, menus, popovers, notifications, images and more. Plays nice with YUI's JavaScript Framework. 427 | 428 | **Responsive:** Yes 429 | 430 | **Website:** http://yuilibrary.com/ 431 | 432 | ## Susy 433 | 434 | > Your markup. Your design. Our math. 435 | 436 | The web is a responsive place, from your lithe & lively development process to your end-user's super-tablet-multi-magic-lap-phone. You need grids that are powerful yet custom, reliable yet responsive. 437 | 438 | **Responsive:** Yes 439 | 440 | **Website:** http://susy.oddbird.net/ 441 | 442 | **Github:** https://github.com/ericam/susy/ 443 | 444 | ## inuit.css 445 | 446 | > A powerful, scalable, Sass-based, [BEM](http://bem.info/), OOCSS framework. 447 | 448 | inuit.css is a Sass based, Object Oriented framework that is full of objects and abstractions. inuit.css provides little-to-no design which means no undoing things, no deleting CSS and no adhering to other peoples’ design decisions. 449 | 450 | **Responsive:** Yes 451 | 452 | **Website:** http://inuitcss.com/ 453 | 454 | **Github:** https://github.com/csswizardry/inuit.css/ 455 | 456 | ## Bijou 457 | 458 | > A beautiful CSS framework under 2kb 459 | 460 | A small, yet beautiful CSS framework that weighs in under 2kb. 461 | 462 | **Responsive:** Yes 463 | 464 | **Website:** http://andhart.github.io/bijou 465 | 466 | **Github:** https://github.com/andhart/bijou 467 | 468 | ## bootmetro 469 | 470 | > metro style web framework 471 | 472 | simple and flexible web framework to create elegant and modern web applications with the same look & feel of Windows 8. 473 | 474 | **Responsive:** Yes 475 | 476 | **Website:** http://aozora.github.io/bootmetro/ 477 | 478 | **Github:** https://github.com/aozora/bootmetro 479 | 480 | ## StackLayout 481 | 482 | > A flexible width, component based CSS layout system 483 | 484 | StackLayout makes it incredibly easy to use semantic class names for particular areas of your site, such as the main navigation or a thumbnail gallery, or for the entire site as part of your deployment process. 485 | 486 | **Responsive:** Yes 487 | 488 | **Website:** http://www.stacklayout.com/ 489 | 490 | **Github:** https://github.com/camslice/StackLayout 491 | 492 | ## IVORY Framework 493 | 494 | > imple, Flexible, Powerful 495 | 496 | Responsive front-end web framework. Makes your front-end development faster and easier. Takes you all theway from 1200PX on down to 320PX. 497 | 498 | **Responsive:** Yes 499 | 500 | **Website:** http://weice.in/ivory/ 501 | 502 | **Github:** https://github.com/kanthvallampati/IVORY 503 | -------------------------------------------------------------------------------- /Programming/Web Development/README.md: -------------------------------------------------------------------------------- 1 | Learning Web Development 2 | ============================ 3 | -------------------------------------------------------------------------------- /Programming/courses.md: -------------------------------------------------------------------------------- 1 | CS-Courses 2 | ========== 3 | 4 | Template for learning CS online which would approximately equal to a Bachelors in CS. Forked from http://blog.agupieware.com/2014/06/online-learning-intensive-bachelors.html 5 | 6 | This template consists of intro courses, core courses and advanced courses, all freely available from some of the world's best universities. 7 | 8 | Template for learning CS online which would approximately equal to a Bachelors in CS. Forked from http://blog.agupieware.com/2014/06/online-learning-intensive-bachelors.html 9 | 10 | 11 | There are essentially four major parts to any bachelor’s level course of study, in any given field: pre-requisites, core requirements, concentration requirements and electives. 12 | 13 | Pre-requisites are what you need to know before you even begin. For many courses of study, there are no pre-requisites, and no specialized prior knowledge is required or presumed on the part of the student, since the introductory core requirements themselves provide students with the requisite knowledge and skills. 14 | 15 | Core requirements are courses that anyone in a given field is required to take, no matter what their specialization or specific areas of interest within the field may be. These sorts of classes provide a general base-level knowledge of the field that can then be built upon in the study of more advanced and specialized topics. 16 | 17 | Concentration requirements are classes that are required as part of a given concentration, focus or specialization within an overall curriculum. For example, all students who major in computer science at a given university may be required to take two general introductory courses in the field, but students who decide to concentrate on cryptography may be required to take more math classes, while students interested in electrical engineering may take required courses on robotics, while others interested in software development may be required to study programming methodologies and so on. 18 | 19 | Finally, electives are courses within the overall curriculum that individuals may decide to take at will, in accordance with their own particular interests. Some people may prefer to take electives which reenforce sub-fields related to their concentration, while others may elect to sign on for courses that may only be tangentially related to their concentration. 20 | 21 | Our hypothetical curriculum will simplify this model. We will assume no prerequisites are necessary other than an interest in learning the material and a basic high school education. Our curriculum will also not offer any concentration tracks in the traditional sense, as that would require specialized resources that are not within the scope of our current domain. Instead, our planned curriculum shall provide for introductory courses, general core requirements, and a choice of electives that may also serve as a basis for further concentration studies. 22 | 23 | For Coursera courses, you don't have to sign up to view the lectures. 24 | 25 | 26 | ###Intro Courses 27 | 28 | 29 | * Intro to CS 30 | * [Introduction to Computer Science and Programming](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/): MIT OCW 31 | * [Intensive Introduction to Computer Science](http://www.extension.harvard.edu/open-learning-initiative/intensive-introduction-computer-science): Harvard 32 | * [Introduction to Computer Science and Programming Methodology](http://see.stanford.edu/see/courseInfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111): Stanford 33 | * [Programming Abstractions (Second Course in Unit)](http://www.youtube.com/view_play_list?p=FE6E58F856038C69): Stanford 34 | 35 | * Mathematics for CS 36 | * Mathematics for Computer Science: MIT 37 | * Discrete Mathematics: ArsDigita 38 | 39 | * Programming: 40 | * Programming 1: University of Toronto 41 | * Programming 2: University of Toronto 42 | 43 | * Theory of Computation (Intro): 44 | * Introduction to the Theory of Computation: Stonehill 45 | * Principles of Computing: Rice 46 | 47 | * Data Structures and Algorithms: 48 | * Introduction to Data Structures and Algorithms: UNSW 49 | * Introduction to Algorithms: MIT OCW 50 | 51 | ###Core Courses 52 | 53 | 54 | * Theory of Computation (Core): 55 | * Theory of Computation: UC Davis 56 | * Theory of Computation: IIT Kanpur 57 | * Algorithms and Data Structures: 58 | * Efficient Algorithms and Intractable Problems: Berkeley 59 | * Data Structures: Berkeley 60 | * Mathematics: 61 | * Linear Algebra through Computer Science Applications: Brown 62 | * Discrete Math and Probability Theory: Berkeley 63 | * Operating Systems: 64 | * Operating Systems and Systems Programming: Berkeley 65 | * Introduction to Linux: edX 66 | * Computer Programming: 67 | * Programming Paradigms: Stanford 68 | * Object Oriented Programming: MIT 69 | * Object Oriented Programming in C++: ITU 70 | * Software Engineering: 71 | * Software Engineering: Berkeley 72 | * Elements of Software Construction: MIT 73 | * Computer Architecture: 74 | * Computer Architecture: Carnegie Mellon 75 | * Computer Architecture: Princeton 76 | * Data Management: 77 | * Introduction to Databases: Stanford 78 | * Introduction to Modern Database Systems: Saylor 79 | * Networking and Data Communications: 80 | * Fundamentals of Computer Networking: Manhattan College 81 | * Introduction to Data Communications: Thammasat University 82 | * Cryptography and Security: 83 | * Introduction to Cryptography: Ruhr University 84 | * Introduction to IT Security: Thammasat University 85 | * Artificial Intelligence: 86 | * Introduction to Artificial Intelligence: Berkeley 87 | 88 | ###Intermediate and Advanced Courses 89 | 90 | 91 | * Algorithms and Data Structures: 92 | * Advanced Data Structures: MIT 93 | * Analytic Combinatorics: Princeton 94 | * Systems: 95 | * Computer System Engineering: MIT 96 | * The Hardware/Software Interface: University of Washington 97 | * Programming: 98 | * Design in Computing: UNSW 99 | * Principles of Programming Languages: IIT 100 | * C++ for C Programmers: UC Santa Cruz 101 | * Heterogeneous Parallel Programming: University of Illinois 102 | * Compilers: Stanford 103 | * Software Engineering: 104 | * Mobile Software Engineering: Harvard 105 | * Software Engineering for Scientific Computing: Berkeley 106 | * [Engineering Software as a Service Part 1](https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs169-1x-engineering-1377#.VBcVCcERbdk): UC Berkeley 107 | * [Engineering Software as a Service Part 2](https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs169-2x-engineering-1379#.VBcU5MERbdk): UC Berkeley 108 | * Mobile App Development: 109 | * Building Mobile Applications: Harvard 110 | * iPhone Application Development: ITU 111 | * Android Application Development: ITU 112 | * Web Development: 113 | * Building Dynamic Websites: Harvard 114 | * Databases and Data Management: 115 | * Introduction to Database Management Systems: KU Leuven University 116 | * Database Management Systems: Ars Digita 117 | * Advanced Databases: Saylor 118 | * Security: 119 | * Security and Cryptography: Thammasat University 120 | * Designing and Executing Information Security Strategies: University of Washington 121 | * Information Security and Risk Management in Context: University of Washington 122 | * Cryptography: 123 | * Cryptography 1: Stanford 124 | * Cryptography 2: Stanford 125 | * Bilinear Pairings in Cryptography: BIU 126 | * Artificial Intelligence and Machine Learning: 127 | * [Learning From Data](https://www.edx.org/course/caltechx/caltechx-cs1156x-learning-data-2516#.VBcWDcERbdk): Caltech 128 | * Artificial Intelligence: HRW 129 | * Artificial Intelligence: Berkeley 130 | * Machine Learning: Stanford 131 | * [Social Network Analysis](https://www.coursera.org/course/sna): University of Michigan 132 | * Natural Language Processing: 133 | * Natural Language Processing: Columbia 134 | * Natural Language Processing: Stanford 135 | * Digital Media: 136 | * Digital Image Processing: Purdue 137 | * Computer Graphics: Berkeley 138 | * Computer Graphics: ITU 139 | * Networking and Communications: 140 | * Computer Networks: University of Washington 141 | * Internet Technologies and Applications: Thammasat University 142 | * Statistics and Probability: 143 | * Statistics and Probability: Harvard 144 | * Probabilistic Systems Analysis and Applied Probability: MIT 145 | * Statistical Inference: Johns Hopkins 146 | * Data Analysis and Statistical Inference: Duke 147 | * Data Sciences: 148 | * [Introduction to Data Sciences](https://www.coursera.org/course/datasci): University of Washington 149 | * [Web Intelligence and Big Data](https://www.coursera.org/course/bigdata): IIT Delhi 150 | 151 | -------------------------------------------------------------------------------- /Programming/elixir.md: -------------------------------------------------------------------------------- 1 | #Elixir 2 | wont run out of stack levels unless you run out of memory 3 | 4 | works with OTP 5 | ##Elixir 6 | elixir built on erlang vm 7 | compiles to BEAM bytecode 8 | Erlang has fault-tolerant ("let it crash" error) 9 | Pattern matching 10 | Recursion 11 | Immutable Data Structures 12 | Adds more data types to erlang 13 | All data is immutable 14 | 15 | ##Atoms 16 | atms are just Sybmols in Ruby 17 | `:hello_world` 18 | `:a` 19 | `true #booleans are also atoms` 20 | 21 | ##Tuples 22 | Ordered collection of elements 23 | 24 | ``` 25 | #tuple 26 | {:one, :two, :three} 27 | 28 | 29 | elem({1, 2, 3}, 0) # => 1 30 | 31 | ``` 32 | 33 | ##Lists 34 | No array type, only linked lists 35 | Each item in the list contains value, along with pointer 36 | 37 | ``` 38 | letters = [:a, :b, :c] 39 | 40 | [:d | letters] #=> [:d, :a, :b, c:] 41 | ``` 42 | ##String(ish) Types 43 | No true string type 44 | represents strings as binaries 45 | Lists can be used to represent string data 46 | ``` 47 | "" # = utf-8 binary 48 | '' # = char list 49 | ?a # = character code 50 | ``` 51 | 52 | ##Modules 53 | everything is stored in modules 54 | 55 | ``` 56 | def moduleping do 57 | #todo 58 | end 59 | ``` 60 | 61 | ##Functions 62 | In elixir function are identified by name and arity 63 | 64 | ``` 65 | #add/2 has two clauses 66 | def add(0, 0) do: 0 67 | def add(x, y) do: x + y 68 | 69 | #add/3 has one clause 70 | def add(x, y, z) do 71 | x +y +z 72 | end 73 | ``` 74 | 75 | ##Pattern Matching 76 | The equal sign isn't assignment, it's a challenge to make both sides equal 77 | 78 | ``` 79 | :a = :a #=> a 80 | :a = :b #=> ** (MethError) match of right hand side value: :b 81 | 82 | letter = :a #=> :a 83 | letter #=> :a 84 | ``` 85 | 86 | matching tuples 87 | 88 | ``` 89 | {:ok, foo} = {:ok, "foo bar baz"} 90 | foo #=> "foo bar baz" 91 | 92 | {:ok, foo} = {:error, :crashed} #=> ** (MatchError) no match of right hand side value: {:error, crashed} 93 | ``` 94 | 95 | matching lists 96 | ``` 97 | [head|tail] = [1,2,3] 98 | head #=> 1 99 | tail #=>[2,3] 100 | 101 | [first, second, third] = [1,2,3] 102 | second #=> 2 103 | 104 | [one, two] = [1,2,3] #=> ** (MatchError) no match of right hand side value: [1,2,3] 105 | 106 | [first, second |rest] = [1, 2, 3] 107 | second #=> 2 108 | ``` 109 | 110 | ###functions 111 | ``` 112 | def fib(0) do 0 end 113 | def fib(1) do 1 end 114 | def fib(n) do fib(n-1) + fib(n-2) end 115 | ``` 116 | 117 | ##Variables 118 | variables cannot be re-bound to new values during a match 119 | 120 | ``` 121 | {num, num} = {1, 1} 122 | {num, num} = {1, 2} #=> ** No match of right hand value 123 | ``` 124 | 125 | ###underscore variable can be used in place of a normal variable in a pattern 126 | 127 | ``` 128 | {_, _} = {1, 1} 129 | {_, _} = {1, 2} 130 | {num, num} = {1, 2} 131 | ``` 132 | 133 | ###the ^ Variable prefix 134 | ``` 135 | username = "Jose" 136 | 137 | {:name, ^username} = {:name, "Joe"} #forces it to retain Jose and not be re-assigned, throws error 138 | {:name, ^username} {:name, "Jose"} 139 | ``` 140 | 141 | ##First Class Functions 142 | Two Types 143 | - Names -- does not inherit scope 144 | - Anonymous -- inherits the scope of wherever it was defined functions 145 | Both can be referenced and passed around 146 | 147 | ####Named 148 | ``` 149 | defmodule Hello 150 | def greet("SunJug") do "hello everyone!" end 151 | def greet(name) do "hello " <> name end 152 | end 153 | 154 | #references the function 155 | hello = &hello.greet/1 #=> #function<6.90072147/1 in :erl_eval.expr/5> 156 | 157 | hello.("SunJUG") #=> hello everyone! 158 | Hello.greet("Jose") #=> hello Jose 159 | ``` 160 | 161 | ####Anonymous 162 | ``` 163 | special_greetings = "Hello everyone!" 164 | 165 | #inherits scope creating closure 166 | 167 | greet = fn 168 | "SunJug" -> special_greeting 169 | name -> "hello " <> name 170 | end 171 | 172 | greet #=> #Function... 173 | 174 | greet.("SunJug") 175 | ``` 176 | 177 | ##Recursion 178 | No iteration so use recursion 179 | 180 | ####Recursion Step by Step in Elixir 181 | 182 | ``` 183 | def sum_list([head | tai;], acc) do 184 | sum_list( tail, acc+head) 185 | end 186 | 187 | def sum_list([], acc) do 188 | acc 189 | end 190 | ``` 191 | 192 | ##Concurrency 193 | Each instance of the Erlang VM is called a node 194 | You can have one or more nodes on a physical machine 195 | Can spread nodes through a network 196 | Can rate limit the VM on amount of threads 197 | Erlang processes are not OS processes 198 | Within the VM you can have multiple Erlang processes 199 | There is no "main" process, everything is a process and there are not special types of processes 200 | No shared data amongst processes - Make a copy and work on their own 201 | Processing done via message passing 202 | Can pass a message to another VM 203 | Lazy copying 204 | Processes can be linked together, processes can also be monitored by other processes 205 | #####Processes are Actors 206 | Implements the actor model 207 | Processes encapsulate state 208 | Elixir's processes are more object-oriented than objects in object-oriented languages 209 | 210 | ######Processes Example 211 | Messages are stored in the mailbox 212 | All messages are async, if it receives messages during work it gets next message 213 | Can put limitations on the mailbox 214 | ``` 215 | #Message being sent to a process 216 | #pid is a process 217 | message = {:add, 1, 2} 218 | send pid, message 219 | 220 | #process receiving 221 | #listens for message 222 | receive do 223 | {:add, x, y} -> 224 | x +y 225 | {:subtract, x, y} -> 226 | x -y 227 | _-> 228 | :error 229 | end # would call this again to implement a server 230 | ``` 231 | -------------------------------------------------------------------------------- /Programming/r.md: -------------------------------------------------------------------------------- 1 | 2 | Getting Started with R for Statistical Programming 3 | ============================ 4 | [![forthebadge](http://forthebadge.com/images/badges/powered-by-electricity.svg)](http://forthebadge.com) 5 | [![forthebadge](http://forthebadge.com/images/badges/ages-12.svg)](http://forthebadge.com) 6 | 7 | So you wanna learn R eh? Well, what is R? 8 | 9 | "R is a tool for statistics and data modeling. The R programming language is elegant, versatile, and has a highly expressive syntax designed around working with data. R is more than that, though — it also includes extremely powerful graphics capabilities. If you want to easily manipulate your data and present it in compelling ways, R is the tool for you." -- Code School 10 | 11 | Feel free to share this guide! [http://bit.ly/learn-r](http://bit.ly/learn-r) 12 | Get my notes that go in depth on ways to do things here: [Da Notes](https://github.com/HackerCollective/resources/edit/gh-pages/Programming/r-notes.md) 13 | 14 | 15 | ## Table of Contents 16 | 1. [An Introduction to R](#intro) 17 | 2. [Notes](#notes) 18 | 19 | 20 | 21 | ## [[⬆]](#toc) An Introduction to R 22 | 1. [Try R -- Code School](http://tryr.codeschool.com/) | If you're new to R, this is the place to start. In this course, you'll take a look at some of the most common and important bits of the language, how to use them, and then put them together into several different handy functions, and analysis patterns. 23 | 24 | ## [[⬆]](#toc) Notes 25 | ### Notes TOC 26 | 1. [R Syntax: A gentle introduction to R expressions, variables, and functions](#syntax) 27 | 2. [Vectors: Grouping values into vectors, then doing arithmetic and graphs with them](#vectors) 28 | 3. [Matrices: Creating and graphing two-dimensional data sets](#matrices) 29 | 4. [Summary Statistics: Calculating and plotting some basic statistics: mean, median, and standard deviation](#summaryStat) 30 | 5. [Factors: Creating and plotting categorized data](#factors) 31 | 6. [Data Frames: Organizing values into data frames, loading frames from files and merging them](#dataFrames) 32 | 33 | ### [[⬆]](#toc) R Syntax 34 | A gentle introduction to R expressions, variables, and functions 35 | 36 | 37 | ### [[⬆]](#toc) Vectors 38 | Grouping values into vectors, then doing arithmetic and graphs with them 39 | 40 | 41 | ### [[⬆]](#toc) Matricies 42 | Matrices: Creating and graphing two-dimensional data sets 43 | 44 | #### Matrix Plotting 45 | 46 | Generate a 10 by 10 matrix named elevation with all its values initialized to 1: 47 | 48 | ```R 49 | > elevation <- matrix(1, 10, 10) 50 | ``` 51 | 52 | You can now do a contour map of the values simply by passing the matrix to the contour function: 53 | ```R 54 | > contour(elevation) 55 | ``` 56 | Or you can create a 3D perspective plot with the persp function: 57 | 58 | ```R 59 | persp(elevation) 60 | ``` 61 | The perspective plot will look a little odd, though. This is because persp automatically expands the view so that your highest value (the beach surface) is at the very top. 62 | ```R 63 | persp(elevation, expand=.2) 64 | ``` 65 | 66 | 67 | To make your surface a particular **size** you must add it to your surface object. If you do not specify, the surface inherits the size of its parent--the context. 68 | ```javascript 69 | var firstSurface = new Surface({ 70 | size: [200, 400], 71 | content: 'hello world', 72 | properties: { 73 | color: 'white', 74 | textAlign: 'center', 75 | backgroundColor: '#FA5C4F' 76 | } 77 | }); 78 | 79 | mainContext.add(firstSurface); 80 | ``` 81 | ##### Surface Size: 82 | - In pixels with [x, y] 83 | - In only one dimension with [undefined, y] or [x, undefined]. For example, [undefined, 200] will span the entire length of the x-direction, while only 200 pixles in the y direction. [, ] also works. 84 | - Have the surface auto-size according to the content with [true, true]. You can put in any statement that evaluates to [true, true]. For example, [1>3, 1>3], [false, false], and [null, null] all work. 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | ### [[⬆]](#toc) Summary Statistics 98 | Calculating and plotting some basic statistics: mean, median, and standard deviation 99 | 100 | Simply throwing a bunch of numbers at your audience will only confuse them. Part of a statistician's job is to explain their data. In this chapter, we'll show you some of the tools R offers to let you do so, with minimum fuss. 101 | 102 | #### Mean 103 | *** 104 | Determining the health of the crew is an important part of any inventory of the ship. Here's a vector containing the number of limbs each member has left, along with their names. 105 | ```R 106 | limbs <- c(4, 3, 4, 3, 2, 4, 4, 4) 107 | names(limbs) <- c('One-Eye', 'Peg-Leg', 'Smitty', 'Hook', 'Scooter', 'Dan', 'Mikey', 'Blackbeard') 108 | ``` 109 | 110 | A quick way to assess our battle-readiness would be to get the average of the crew's appendage counts. Statisticians call this the "mean". Call the mean function with the ```limbs``` vector. To do this we employ our call function ```mean(limbs)```. The mean of the aformentioned data would be **3.5** 111 | 112 | Now, to visually represent this data we can pull it into a bar chart via ```barplot(limbs)```. 113 | 114 | To make our data set clearer we can we draw a line on the plot representing the mean. The **abline** function can take an *h* parameter with a value at which to draw a horizontal line, or a v parameter for a vertical line. When it's called, it updates the previous plot. 115 | 116 | Draw a horizontal line 117 | ```R 118 | abline(h = mean(limbs)) 119 | ``` 120 | 121 | #### Median 122 | *** 123 | The median is calculated by sorting the values and choosing the middle one (for sets with an even number of values, the middle two values are averaged). This can help if we're intrepreting data that hold outliers that may skew our data set. 124 | 125 | For example, Let's say we gain a crew member that completely skews the mean. 126 | ```R 127 | > limbs <- c(4, 3, 4, 3, 2, 4, 4, 14) 128 | > names(limbs) <- c('One-Eye', 'Peg-Leg', 'Smitty', 'Hook', 129 | 'Scooter', 'Dan', 'Mikey', 'Davy Jones') 130 | > mean(limbs) 131 | [1] 4.75 132 | ``` 133 | While we can say we have our crew has a mean of 4.75 limbs, it's not entirely accurate. For this, median to the rescue. 134 | 135 | Call the median function on the vector: 136 | ```R 137 | median(limbs) 138 | ``` 139 | This gives us a median of 4, which is a much more realistic view our our data set. 140 | 141 | #### Standard Deviation 142 | *** 143 | Statisticians use the concept of **"standard deviation"** from the mean to describe the range of typical values for a data set. For a group of numbers, it shows how much they typically vary from the average value. To calculate the standard deviation, you calculate the mean of the values, then subtract the mean from each number and square the result, then average those squares, and take the square root of that average. 144 | 145 | If that sounds like a lot of work, don't worry. You're using R, and all you have to do is pass a vector to the sd function. Try calling sd on the pounds vector now, and assign the result to the deviation variable: 146 | 147 | Now to the example! 148 | Some of the plunder from our recent raids has been worth less than what we're used to. Here's a vector with the values of our latest hauls: 149 | 150 | ```R 151 | > pounds <- c(45000, 50000, 35000, 40000, 35000, 45000, 10000, 15000) 152 | > barplot(pounds) 153 | > meanValue <- mean(pounds) 154 | ``` 155 | 156 | Creating the deviation variable: 157 | ```R 158 | deviation <- sd(pounds) 159 | ``` 160 | ### [[⬆]](#toc) Factors 161 | #### Creating and plotting categorized data 162 | 163 | Often your data needs to be grouped by category: blood pressure by age range, accidents by auto manufacturer, and so forth. R has a special collection type called a factor to track these categorized values. 164 | 165 | #### Creating Factors 166 | *** 167 | It's time to take inventory of the ship's hold. We'll make a vector for you with the type of booty in each chest. 168 | 169 | To categorize the values, simply pass the vector to the factor function: 170 | 171 | RedoComplete 172 | ```R 173 | > chests <- c('gold', 'silver', 'gems', 'gold', 'gems') 174 | > types <- factor(chests) 175 | ``` 176 | There are a couple differences between the original vector and the new factor that are worth noting. Print the chests vector: 177 | 178 | ```R 179 | > print(chests) 180 | [1] "gold" "silver" "gems" "gold" "gems" 181 | ``` 182 | You see the raw list of strings, repeated values and all. Now print the types factor: 183 | 184 | ```R 185 | > print(types) 186 | [1] gold silver gems gold gems 187 | Levels: gems gold silver 188 | ``` 189 | Printed at the bottom, you'll see the factor's "levels" - groups of unique values. Notice also that there are no quotes around the values. That's because they're not strings; they're actually integer references to one of the factor's levels. 190 | 191 | Let's take a look at the underlying integers. Pass the factor to the ```as.integer``` function: 192 | ```R 193 | > as.integer(types) 194 | [1] 2 3 1 2 1 195 | ``` 196 | You can get only the factor levels with the **levels** function: 197 | 198 | #### Plots With Factors 199 | *** 200 | You can use a factor to separate plots into categories. Let's graph our five chests by weight and value, and show their type as well. We'll create two vectors for you; weights will contain the weight of each chest, and prices will track how much the chests are worth. 201 | 202 | Now, try calling plot to graph the chests by weight and value. 203 | ```R 204 | > weights <- c(300, 200, 100, 250, 150) 205 | > prices <- c(9000, 5000, 12000, 7500, 18000) 206 | > plot(weights, prices) 207 | ``` 208 | We can't tell which chest is which, though. Fortunately, we can use different plot characters for each type by converting the factor to integers, and passing it to the **pch** argument of **plot**. 209 | 210 | ```R 211 | plot(weights, prices, pch=as.integer(types)) 212 | ``` 213 | 214 | "Circle", "Triangle", and "Plus Sign" still aren't great descriptions for treasure, though. Let's add a legend to show what the symbols mean. 215 | 216 | 217 | 218 | 219 | 220 | ### [[⬆]](#toc) Data Frames 221 | Data Frames: Organizing values into data frames, loading frames from files and merging them 222 | 223 | The **weights**, **prices**, and **types** data structures are all deeply tied together, if you think about it. If you add a new weight sample, you need to remember to add a new price and type, or risk everything falling out of sync. To avoid trouble, it would be nice if we could tie all these variables together in a single data structure. 224 | 225 | Fortunately, R has a structure for just this purpose: the data frame. You can think of a data frame as something akin to a database table or an Excel spreadsheet. It has a specific number of columns, each of which is expected to contain values of a particular type. It also has an indeterminate number of rows - sets of related values for each column. 226 | 227 | #### Data Frame Access 228 | 229 | Just like matrices, it's easy to access individual portions of a data frame. 230 | 231 | You can get individual columns by providing their index number in double-brackets. Try getting the second column (prices) of treasure: 232 | ```R 233 | treasure[[2]] 234 | ``` 235 | You could instead provide a column name as a string in double-brackets. (This is often more readable.) Retrieve the "weights" column: 236 | 237 | ```R 238 | > treasure[["weights"]] 239 | [1] 300 200 100 250 150 240 | ``` 241 | **Shorthand for Dataframes** 242 | Typing all those brackets can get tedious, so there's also a shorthand notation: the data frame name, a dollar sign, and the column name (without quotes). Try using it to get the "prices" column: 243 | 244 | ```R 245 | treasure$prices 246 | ``` 247 | 248 | #### Loading Data Frames 249 | 250 | Typing in all your data by hand only works up to a point, obviously, which is why R was given the capability to easily load data in from external files. 251 | 252 | You can load a CSV file's content into a data frame by passing the file name to the read.csv function. Try it with the "targets.csv" file: 253 | ```R 254 | read.csv("targets.csv") 255 | ``` 256 | 257 | For files that use separator strings other than commas, you can use the ```read.table``` function. The **sep** argument defines the separator character, and you can specify a tab character with **"\t"**. 258 | 259 | Call ```read.table``` on "infantry.txt", using tab separators: 260 | 261 | ```R 262 | read.table("infantry.txt", sep="\t") 263 | ``` 264 | 265 | In this case you'll get "V1" and "V2" column headers. The first line is not automatically treated as column headers with ```read.table```. This behavior is controlled by the header argument. To fix this, you can call ```read.table``` and set the header to TRUE: 266 | ```R 267 | read.table("infantry.txt", sep="\t", header=TRUE) 268 | ``` 269 | #### Merging Data Frames 270 | We want to loot the city with the most treasure and the fewest guards. Right now, though, we have to look at both files and match up the rows. It would be nice if all the data for a port were in one place... 271 | 272 | R's merge function can accomplish precisely that. It joins two data frames together, using the contents of one or more columns. First, we're going to store those file contents in two data frames for you, **targets** and **infantry**. 273 | 274 | The merge function takes arguments with an **x** frame (**targets**) and a **y** frame (**infantry**). By default, it joins the frames on columns with the same name (the two Port columns). See if you can merge the two frames: 275 | 276 | ```R 277 | merge(x = targets, y = infantry) 278 | ``` 279 | 280 | ### Notes 281 | R can test for correlation between two vectors with the ```cor.test``` function. 282 | 283 | ```R 284 | cor.test(countries$GDP, countries$Piracy) 285 | ``` 286 | ```R 287 | > cor.test(countries$GDP, countries$Piracy) 288 | 289 | Pearson's product-moment correlation 290 | 291 | data: countries$GDP and countries$Piracy 292 | t = -14.8371, df = 107, p-value < 2.2e-16 293 | alternative hypothesis: true correlation is not equal to 0 294 | 95 percent confidence interval: 295 | -0.8736179 -0.7475690 296 | sample estimates: 297 | cor 298 | -0.8203183 299 | ``` 300 | The key result we're interested in is the **"p-value"**. Conventionally, any correlation with a p-value less than **0.05** is considered statistically significant, and this sample data's p-value is definitely below that threshold. In other words, yes, these data do show a statistically significant negative correlation between GDP and software piracy. 301 | 302 | We have more countries represented in our GDP data than we do our piracy rate data. If we know a country's GDP, can we use that to estimate its piracy rate? 303 | 304 | We can, if we calculate the linear model that best represents all our data points (with a certain degree of error). The **lm** function takes a model formula, which is represented by a response variable (piracy rate), a tilde character (**~**), and a predictor variable (GDP). (Note that the response variable comes first.) 305 | 306 | Try calculating the linear model for piracy rate by GDP, and assign it to the line variable: 307 | 308 | ```R 309 | line <- lm(countries$Piracy ~ countries$GDP) 310 | ``` 311 | Sort of like a trend line! We can now plot it by calling our handy dandy abline! 312 | ```R 313 | abline(line) 314 | ``` 315 | 316 | #### 317 | The functionality we've shown you so far is all included with R by default. (And it's pretty powerful, isn't it?) But in case the default installation doesn't include that function you need, there are still more libraries available on the servers of the Comprehensive R Archive Network, or CRAN. They can add anything from new statistical functions to better graphics capabilities. Better yet, installing any of them is just a command away. 318 | 319 | Let's install the popular ggplot2 graphics package. Call the install.packages function with the package name in a string: 320 | 321 | ```R 322 | > install.packages("ggplot2") 323 | ```R 324 | You can get help for a package by calling the help function and passing the package name in the package argument. Try displaying help for the "ggplot2" package: 325 | 326 | ```R 327 | help(package = "ggplot2") 328 | ``` 329 | -------------------------------------------------------------------------------- /Programming/unix.md: -------------------------------------------------------------------------------- 1 | Getting Started with UNIX 2 | ========================= 3 | 4 | ## Table of Contents 5 | 6 | 1. [An Introduction to UNIX](#intro) 7 | 2. [Bash Tutorials](#tutorial) 8 | 3. [The UNIX Philosophy](#laws) 9 | 10 | ## (#toc) So what is UNIX anyways? 11 | 12 | Originally, Unix was meant to be a programmer's workbench to be used for developing software to be run on multiple platforms more than to be used to run application software. The system grew larger as the operating system started spreading in the academic circle, as users added their own tools to the system and shared them with colleagues. 13 | 14 | Unix was designed to be portable, multi-tasking and multi-user in a time-sharing configuration. Unix systems are characterized by various concepts: the use of plain text for storing data; a hierarchical file system; treating devices and certain types of inter-process communication (IPC) as files; and the use of a large number of software tools, small programs that can be strung together through a command line interpreter using pipes, as opposed to using a single monolithic program that includes all of the same functionality. These concepts are collectively known as the "Unix philosophy." Brian Kernighan and Rob Pike summarize this in The Unix Programming Environment as "the idea that the power of a system comes more from the relationships among programs than from the programs themselves." 15 | 16 | ####TLDR: 17 | UNIX, unlike other systems, is meant to be modular, many small programs that do one thing well. All the config files are plaintext and there is no registry (thank god) which means easy editing and customizing. 18 | 19 | http://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond.E2.80.99s_17_Unix_Rules 20 | 21 | There are many "brands" of UNIX including Linux, FreeBSD, OS X, etc... These are mostly separated by Kernels. The kernel is a computer "program" that manages input/output requests from software, and translates them into data processing instructions for the central processing unit and other electronic components of a computer. The kernel is a fundamental part of a modern computer's operating system. Linux is any UNIX system that uses the Linux kernel. Android using the Linux kernel is most of their deployments and OS X used the FreeBSD kernel named Darwin. 22 | 23 | ##When someone says "Do you know NIX?" what do they mean? 24 | 25 | NIX is what many people call the family of UNIX and UNIX-like systems. "Knowing" a system is more then just knowing the language of the system, it is also about knowing the software architecture of the system and why it works like it does. We learn all of this in the framework of BASH. 26 | 27 | ##Why do I use it? 28 | 1. It is free as in freedom. (In price as well) 29 | 30 | 2. I can put my faith behind millions of coders and hackers on the internet rather than one company in the united states who can be manipulated by the government. 31 | 32 | 3. UNIX package managers are badass. 33 | 34 | 4. Incredibly hackable (in a good way). 35 | 36 | 5. Window managers and desktop environments options. 37 | 38 | 6. To be part of a powerful, very knowledgable community. 39 | 40 | 7. Just by learning linux I am on the path to being a sysadmin and eventually makes lots of money to make sure servers don’t' crash. (Sounds like hell to some but sounds awesome to me) 41 | 42 | 8. I am addicted to distro hopping. 43 | 44 | 9. I hate windows, its registry, powershell, and its anti-UNIX philosophy. 45 | 46 | 10. Its Fun! 47 | 48 | ##Before we go any farther into NIX itself, lets get to know BASH. 49 | 50 | Bash is a Unix shell written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell (sh). Released in 1989, it has been distributed widely as the shell for the GNU operating system and as a default shell most NIX systems, including Linux and Mac OS X. 51 | 52 | The name itself is an acronym, a pun, and a description. As an acronym, it stands for Bourne-again shell, referring to its objective as a free replacement for the Bourne shell. As a pun, it expressed that objective in a phrase that sounds similar to born again, a term for spiritual rebirth. The name is also descriptive of what it did, bashing together the features of sh, csh, and ksh. 53 | 54 | Terminal Time! 55 | ============== 56 | 57 | You are encouraged to open up a terminal and follow along. 58 | Learn though practice not memorization! 59 | 60 | ####Navigation 61 | 62 | Lets start with 3 basic but very important BASH commands: `ls`, `cd `, and `pwd`. 63 | 64 | Both `cd` and `ls` are fundamental in navigating the file structure of your system. 65 | 66 | `ls` lists all things in your current directory and cd, followed by a path, will take you into that directory. 67 | 68 | If you need to know where you are just enter pwd to print your current working directory (The one you are in right now). 69 | 70 | To go up one level in the file tree just enter `cd ..` . 71 | 72 | The `~` character, called a tilde, is a default variable in most UNIX shells and it represents the users home directory. 73 | To go home from anywhere, enter `cd ~` . On many systems the `cd` command with no path after it defaults to `cd ~` so the tilde is not always needed. I would recommend always using it as a beginner so that you get use to it, you will be using it in scripts later. If you want to see what your home path is you can just `echo ~`. 74 | 75 | ####Flags 76 | In BASH there are also flags that ago along with commands. These flag go after commands to adjust what the commands does and often effects it in very robust ways. For example lets look at the command `ls` and then `ls -l`: 77 | 78 | ![](http://i.imgur.com/08vtwHH.png) 79 | 80 | Above you can see I have executed two commands, both `ls`, but one with flag `l`. `-l` stands for 'long' and it lists much more information than the regular `ls` including (from left to right): 81 | 82 | * files permissions, 83 | * number of links 84 | * owner's name 85 | * owner's group 86 | * file size 87 | * time of last modification 88 | * items name 89 | 90 | ####MAN PAGES! 91 | RTFM is a common expression heard in this kind of field and it stands for READ THE F**KING MANUAL. People in this community hate people who don't help themselves, they learned the hard way, why shouldn't you? Its okay to ask questions but not stupid ones that could be easily googled. To read the man page on any command just enter `man ` and then tap 'q' to the man page that is now open. 92 | 93 | _____________________________________________________________________________ 94 | 95 | 96 | Create an alias super easy, in this example we create an alias 'subl' for opening Sublime Text 2. This assumes that you have sublime text 2 in your applications folder. (OS X) 97 | 98 | ``` 99 | $ echo "alias subl='/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl'" >> ~/.profile 100 | source ~/.profile 101 | ``` 102 | -------------------------------------------------------------------------------- /Programming/web-scraping.md: -------------------------------------------------------------------------------- 1 | Web Scraping 2 | =============================== 3 | 4 | ## Intro 5 | Web Scraping is some crazy shit that allows you can use for many reasons. A good way to use it is to create your own version of an API, or if a site/serice doesn't supply a good enough API of their own. 6 | 7 | ## Table of Contents 8 | 9 | 1. [Resources](#resources) 10 | 2. [Parsers](#parsers) 11 | 3. [Robots.txt](#robots) 12 | 13 | 14 | ### [[⬆]](#toc) Scraping Libraries: 15 | 1. Python 16 | 1. [Urllib](https://docs.python.org/2/library/urllib.html) | This is a stdlib option and definitely not suggested! 17 | 2. [Requests](http://docs.python-requests.org/en/latest/) | By far the best option available. 18 | 3. [Scrapy](http://scrapy.org/) 19 | 2. Node.js (Javascript) 20 | 1. [Requestjs](https://github.com/mikeal/request) 21 | 3. Ruby 22 | 4. Java 23 | 24 | 25 | 26 | ### [[⬆]](#toc) Parsers: 27 | 1. Python 28 | 1. [BeautifulSoup](http://beautiful-soup-4.readthedocs.org/en/latest/) | Community accepted best Python tool for parsing HTML/XML 29 | 2. Node.js (JavaScript) 30 | 1. [Cheerio](https://github.com/cheeriojs/cheerio) | Server sided jQuery tool that allows you to manipulate scraped pages with jQuery like features (has other uses too!) 31 | 3. Ruby 32 | 4. Java 33 | 34 | ### [[⬆]](#toc) Robots.txt: 35 | The Robots.txt is a publically viewable file that most (any site worth it's weight) will have. It tells a viewer/robot which type of robots/crawlers are allowed and to which parts of the site. Example: 36 | ``` 37 | User-Agent: * 38 | Disallow: / 39 | ``` 40 | This script would tell all user's `*` that they cannot crawl any part of the site `/`. But if you were to check out GitHub's [Robot.txt](https://github.com/robots.txt) you would see that they allow specific bots, and disallow ones that they are not aware of. Many websites will be like this. But as a writer of a web crawler you have the ability to not follow these guidlines, just like it isn't necessary to color between the lines of a coloring book. The author will probably never know (unless your crawler is doing an extensive amount of traffic/ malicious things), but you will. 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Resources 2 | ========= 3 | 4 | Personal dump of resources. I've had a lot of fun these past two years, and through that I've had a lot of time to learn and think. Here is my personal collection of resources, ranging from engineering, to programming, and scholarships. 5 | 6 | [![forthebadge](http://forthebadge.com/badges/oooo-kill-em.svg)](http://forthebadge.com) [![forthebadge](http://forthebadge.com/badges/certified-cousin-terio.svg)](http://forthebadge.com) 7 | 8 | #### Topics So Far 9 | 10 | * **Business**: [Entrepreneurship](https://github.com/HackerCollective/resources/blob/gh-pages/Business/Entrepreneurship/README.md), [Startups](), [Investing](https://github.com/HackerCollective/resources/blob/gh-pages/Business/Investing/README.md) 11 | 12 | * **Design**: [Information Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/informationdesign.md),[Interaction Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/interactiondesign.md), [Mobile Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/mobiledesign.md), [Motion Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/motiondesign.md), [Prototyping](https://github.com/HackerCollective/resources/blob/gh-pages/Design/prototyping.md), [User Centered Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/usercentereddesign.md), [User Interface Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/userinterfacedesign.md), [User Research](https://github.com/HackerCollective/resources/blob/gh-pages/Design/userresearch.md), [UX Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/uxdesign.md), [Visual Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/visualdesign.md), [Web Design](https://github.com/HackerCollective/resources/blob/gh-pages/Design/webdesign.md) 13 | 14 | * **Hackathons**: [Event List](https://github.com/HackerCollective/resources/blob/gh-pages/Hackathons/EventList.md), [Wiki](), [Code of Conduct](https://github.com/HackerCollective/resources/blob/gh-pages/Hackathons/CodeofConduct.md) 15 | 16 | * **Programming**: 17 | - [Functional Programming](https://github.com/HackerCollective/resources/tree/gh-pages/Programming/Functional): []() 18 | - [Game Development](https://github.com/HackerCollective/resources/blob/gh-pages/Programming/Game%20Dev/GameDev.md): 19 | - [Mobile Development](https://github.com/HackerCollective/resources/tree/gh-pages/Programming/Mobile%20Dev): 20 | - [Object Oriented Programming](https://github.com/HackerCollective/resources/tree/gh-pages/Programming/Object%20Oriented): 21 | - [Web Development](https://github.com/HackerCollective/resources/tree/gh-pages/Programming/Web%20Development): 22 | 23 | * **Misc**: [Cool Chrome Extensions](https://github.com/HackerCollective/resources/blob/gh-pages/Programming/ChromeExt.md), [Mac Environment Setup](https://github.com/HackerCollective/resources/blob/gh-pages/Programming/mac-environment.md) 24 | 25 | * **Scholarships**: [ High School ](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships), [College ](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships), [Merit](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships), [Need Based](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships), [Loans](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships), [ FAFSA/WASFA](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships), [Dreamers](https://github.com/HackerCollective/resources/tree/gh-pages/School/Scholarships) 26 | *** 27 | 28 | 29 | 41 | 42 | 43 | ### Checking for Broken Links 44 | 45 | To check for invalid links, run `./checklinks.py`. This will then provide a list of files, and the URLs that *may* be invalid. Note that there may be false positives - please double check any reported URLs before removing them! 46 | 47 | Note: while testing, the script ran for ~100s, but depending on connection speed YMMV. Please bear with it. 48 | 49 | You will need `python2` and `git` to run this script, as well as the python packages `python2-termcolor`, `python2-regex` and `python2-pycurl`, which can be installed via `pip install termcolor regex pycurl`. 50 | 51 | ### Contributing 52 | Please refer to our [Contributing Doc](https://github.com/mrcoven94/resources/blob/gh-pages/CONTRIBUTING.md), before anything so that we can have consistency, and high quality content. Feel free to open up issues, send pull request, etc. 53 | 54 | License: [MIT License](https://github.com/mrcoven94/resources/blob/gh-pages/LICENSE.md) 55 | 56 | Inspired by [Jennifer Apacible - Res](https://github.com/japacible/res), the original gangsta, and [Alexander Bayandin's Awesome-Awesome](https://github.com/bayandin/awesome-awesomeness). 57 | -------------------------------------------------------------------------------- /School/Scholarships/README.md: -------------------------------------------------------------------------------- 1 | Resources 2 | ========= 3 | 4 | Personal dump of resources. I've had a lot of fun these past two years, and through that I've had a lot of time to learn and think. Here is my personal collection of resources, ranging from engineering, to programming, and scholarships. 5 | 6 | [![forthebadge](http://forthebadge.com/badges/oooo-kill-em.svg)](http://forthebadge.com) [![forthebadge](http://forthebadge.com/badges/certified-cousin-terio.svg)](http://forthebadge.com) 7 | 8 | ##### Topics So Far 9 | 10 | | Hackathons | Scholarships | General | Business | Web Development | Mobile Development | Gen. Programming | 11 | | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | :-------------: | 12 | | Hackathons list | High School |Chrome Extensions| Entrepreneurship| Frontend | iOS | Haskell | 13 | | HH Wiki | College | | Startups | Backend | Android | Java | 14 | | Code of Conduct | Merit | | Investing | Ruby on Rails | Windows | Python | 15 | | | Need Based | | | Javascript | | Ruby | 16 | | | Loans | | | | | | 17 | | | FAFSA / WASFA | | | | | | 18 | | | Dreamers | | | | | | 19 | | | General Guide | | | | | | 20 | 21 | 22 | 23 | 24 | ### Contributing 25 | Please refer to our [Contributing Doc](https://github.com/mrcoven94/resources/blob/gh-pages/CONTRIBUTING.md), before anything so that we can have consistency, and high quality content. Feel free to open up issues, send pull request, etc. 26 | 27 | License: [MIT License](https://github.com/mrcoven94/resources/blob/gh-pages/LICENSE.md) 28 | 29 | Inspired by [Jennifer Apacible - Res](https://github.com/japacible/res), the original gangsta, and [Alexander Bayandin's Awesome-Awesome](https://github.com/bayandin/awesome-awesomeness). 30 | -------------------------------------------------------------------------------- /School/Scholarships/scholarships.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HackerCollective/resources/e1646d1fe4d26f472d2231afca6a9ff15960e8d7/School/Scholarships/scholarships.md -------------------------------------------------------------------------------- /School/classhelp.md: -------------------------------------------------------------------------------- 1 | [Clutch Prep](https://www.clutchprep.com/) | Help on your College classes that follow your college book 2 | -------------------------------------------------------------------------------- /School/edu.md: -------------------------------------------------------------------------------- 1 | Dat Email Doe 2 | ================ 3 | 4 | A list of all the things you can get for free (or discounted) with a .edu email address 5 | 6 | ## Free Thangs 7 | 8 | - [Amazon Prime](http://www.amazon.com/gp/help/customer/display.html?nodeId=201133670) 9 | - [Autodesk](http://www.autodesk.com/education/free-software/all) 10 | - [BitBucket](https://www.atlassian.com/software/views/bitbucket-academic-license.jsp) 11 | - [GitHub](https://education.github.com/) 12 | - [Student Developer Pack](https://education.github.com/pack) 13 | - Bitnami (Business 3 plan for one year) 14 | - CrowdFlower (Access and $50 credit) 15 | - DigitalOcean ($100 credit) 16 | - dnsimple (Two year plan) 17 | - GitHub (Micro account plan) 18 | - HackHands ($25 credit) 19 | - Namecheap (One year SSL certificate) 20 | - Orchestrate (Developer account) 21 | - Screenhero (Individual account) 22 | - SendGrid (Student plan with 15k emails/month) 23 | - stripe (Waived transaction fees on first $1000) 24 | - Travis CI (Private builds) 25 | - Unreal Engine 26 | - [Jet Brains](http://www.jetbrains.com/student/) 27 | - ReSharper | Productivity tool for .NET devs 28 | - dotTrace | .NET Performance Profiler 29 | - dotCover | .NET Code Coverage Tool 30 | - dotMemory | .NET Memory Profiler 31 | - IntelliJ IDEA | The most intelligent IDE for Java 32 | - RubyMine | IDE for Ruby and Rails 33 | - PyCharm | Powerful Python & Django IDE 34 | - CLion | Cross-platform C/C++ IDE 35 | - PhpStorm | IDE for Web & PHP 36 | - WebStorm | Smart JavaScript IDE 37 | - AppCode | Objective-C IDE 38 | - [Lynda](http://www.lynda.com) (Press 'Log In' and type your .edu account into the appropriate areas) 39 | - Online training resource in software and business skills through video tutorials 40 | - [Microsoft DreamSpark](https://www.dreamspark.com/) (Free Microsoft software) 41 | - [Namecheap Education Program](https://www.nc.me/) (Free .me domain for a year) 42 | - [Prezi](http://prezi.com/pricing/edu/) 43 | 44 | ## Discounted Thangs 45 | 46 | - [Rdio](https://www.rdio.com/account/discount/) 47 | - [Spotify](https://www.spotify.com/us/student/) 48 | - [SurveyMonkey](http://help.surveymonkey.com/articles/en_US/kb/Discounts) 49 | -------------------------------------------------------------------------------- /checklinks.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | from __future__ import print_function 3 | 4 | import threading 5 | import Queue 6 | 7 | import StringIO 8 | 9 | # determine the best number of threads to run with 10 | import multiprocessing 11 | 12 | # needed to print to sys.stderr 13 | import sys 14 | 15 | # so we can get the output of `git grep ...` 16 | import subprocess 17 | 18 | # sanitise links so we don't get issues with checking URLs with spaces in them 19 | import urllib 20 | 21 | # NOTE: will require the `pycurl` package: `pip install pycurl` 22 | import pycurl 23 | 24 | # so we don't have to pipe to `sed`. used over `re` so we have slightly more 25 | # powerful regexes, as per http://stackoverflow.com/a/25109573 26 | # NOTE: will require the `regex` package: `pip install regex` 27 | import regex 28 | 29 | # may as well have nicely formatted output 30 | # NOTE: will require the `termcolor` package: `pip install termcolor` 31 | from termcolor import colored 32 | 33 | 34 | # Adapted from http://stackoverflow.com/a/25109573; why hand write our own, 35 | # less efficient regex? 36 | # replace the `\S` with `[^\r\n\t\f )]` so we don't match the badge URLs 37 | URL_REGEX = '(?|(?(?(?:ht|f)tps?://[^\r\n\t\f )]+(?<=\P{P})))' + \ 38 | '|\(([^)]+)\)\[(\g)\])' 39 | 40 | NUM_WORKER_THREADS = multiprocessing.cpu_count() * 2 41 | # do we want to follow redirects from websites? 42 | FOLLOW_REDIRECTS = 1 43 | # spoof our UA to be Chrome so we don't get false positives from sites who 44 | # don't like webscraping. UA taken from 45 | # http://www.useragentstring.com/Chrome41.0.2228.0_id_19841.php 46 | USERAGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like " + \ 47 | "Gecko) Chrome/41.0.2228.0 Safari/537.36" 48 | # limit the time we're just sitting around waiting for the script to run by 49 | # default, it's running at 300 seconds, which is a bit painful to wait for 50 | TIMEOUT = 30 51 | 52 | # global Queue object to manage our URLs to crawl 53 | gQueue = Queue.Queue() 54 | # global dict to hold [file]->[[URLs to be changed]] 55 | gProcessed = dict() 56 | # use a lock to ensure that we can't overwrite our dict, or global error flag, 57 | # by multiple threads accessing it at once 58 | gProcessedLock = threading.Lock() 59 | 60 | # a flag we can use to determine whether we've found any errors, be they an 61 | # exception, or just a normal site error 62 | gEncounteredErrors = False 63 | 64 | 65 | # Nicely formatted error messages are always better than ones that merge in 66 | # with the rest of them, and that we can't distinguish. We also get them to 67 | # stderr, which is way better. 68 | def error(errorMessage): 69 | """ 70 | Produce a red-coloured error message to stderr. 71 | 72 | Format our messages so they're much more readily distinguishable from 73 | normal output. Also write them to stderr so if we're piping output we 74 | get them on the right stream. 75 | """ 76 | print(colored(errorMessage, 'red'), file=sys.stderr) 77 | 78 | 79 | def getStatusCode(url): 80 | """Given a URL, get the status code when trying to access it""" 81 | 82 | # escape the URL so we don't get 404s on URLs with spaces in them 83 | url = urllib.quote(url, safe=':&?/=#-+') 84 | 85 | curl = pycurl.Curl() 86 | buff = StringIO.StringIO() 87 | 88 | curl.setopt(pycurl.URL, url) 89 | # make sure we don't dump the page content to stdout 90 | curl.setopt(pycurl.WRITEFUNCTION, buff.write) 91 | curl.setopt(pycurl.FOLLOWLOCATION, FOLLOW_REDIRECTS) 92 | curl.setopt(pycurl.USERAGENT, USERAGENT) 93 | curl.setopt(pycurl.CONNECTTIMEOUT, TIMEOUT) 94 | 95 | try: 96 | curl.perform() 97 | except pycurl.error as pycurl_error: 98 | error("Received pycurl error %s while processing %s" % ( 99 | pycurl_error, 100 | url) 101 | ) 102 | 103 | # not being able to access the host is basically a 404 104 | if pycurl_error.args[0] == pycurl.E_COULDNT_RESOLVE_HOST: 105 | return 404 106 | else: 107 | # if we haven't got a default case, still throw our error 108 | raise pycurl_error 109 | 110 | return int(curl.getinfo(pycurl.HTTP_CODE)) 111 | 112 | 113 | # a central way to update our dict of files with the broken URLs 114 | def addToDict(url, matchedFiles): 115 | """ 116 | Retain a URL and any files it appears in. 117 | 118 | Store inside our global dictionary files and URLs that appear in them that 119 | need to be fixed. Thread-safe. 120 | """ 121 | 122 | with gProcessedLock: 123 | global gEncounteredErrors 124 | gEncounteredErrors = True 125 | for matchedFile in matchedFiles: 126 | if matchedFile not in gProcessed: 127 | gProcessed[matchedFile] = [] 128 | 129 | # stop us getting duplicates 130 | if url not in gProcessed[matchedFile]: 131 | gProcessed[matchedFile].append(url) 132 | 133 | 134 | def worker(): 135 | """Worker for Threads to process URLs""" 136 | 137 | # always be ready to take a new job 138 | while True: 139 | # default an empty string, so if we hit the generic catch, we don't 140 | # have an unset variable 141 | url = "" 142 | try: 143 | url = gQueue.get() 144 | statusCode = getStatusCode(url) 145 | didValidate = (statusCode < 400 or statusCode >= 500) 146 | if not didValidate: 147 | # work out what files are affected by the broken URL 148 | filesWithUrl = subprocess.check_output(["git", "grep", "-l", 149 | url]) 150 | addToDict(url, filesWithUrl.splitlines()) 151 | gQueue.task_done() 152 | except: 153 | with gProcessedLock: 154 | global gEncounteredErrors 155 | gEncounteredErrors = True 156 | 157 | error("An exception occured while processing %s" % url) 158 | # make sure we mark our task as done, otherwise our threads 159 | # will just hang 160 | gQueue.task_done() 161 | gQueue.task_done() 162 | 163 | 164 | def main(): 165 | gitGrep = subprocess.Popen(["git", "grep", "(\s*http.*)"], 166 | stdout=subprocess.PIPE) 167 | for line in gitGrep.stdout: 168 | urls = regex.findall(URL_REGEX, line) 169 | for url in urls: 170 | gQueue.put(url[1]) 171 | 172 | for i in range(NUM_WORKER_THREADS): 173 | t = threading.Thread(target=worker) 174 | t.daemon = True 175 | t.start() 176 | 177 | # block until we've finished all our jobs 178 | gQueue.join() 179 | 180 | # finally output each file and the corresponding URLs to fix/remove 181 | for key in gProcessed: 182 | print("%s has the following changes needed:" % ( 183 | colored(key, 'yellow'))) 184 | 185 | for url in gProcessed[key]: 186 | print("- %s" % url) 187 | 188 | # an empty dict evaluates as False, so we can take advantage of that to 189 | # return 0 when we have no matches, and 1 when there are matches 190 | sys.exit(gEncounteredErrors) 191 | 192 | 193 | if __name__ == "__main__": 194 | main() 195 | --------------------------------------------------------------------------------