Awesome List Updates on Feb 16 - Feb 22, 2015
13 awesome lists updated this week.
🏠 Home · 🔍 Search · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor
1. Scalable Css Reading List
CSS Styleguides
2. Awesome Swift
Events
- SwiftEventBus (⭐1.1k) - A publish/subscribe event bus optimized for iOS.
3. Awesome Groovy
Language Utilities
- groovy-common-extensions (⭐71) - Lets you add things commonly useful to the Groovy language via the extension system
4. Android Security Awesome
Tools / App Repackaging Detectors
- FSquaDRA (⭐71) - a tool for the detection of repackaged Android applications based on app resources hash comparison.
5. Awesome Android Ui
List / Grid
Name: AndroidTreeView (⭐2.9k)
License: Apache License V2
Demo:
ViewPager
Name: freepager (⭐461)
License: Apache License V2
Demo:
Animation
Name: ViewRevealAnimator (⭐339)
License: Apache License V2
Demo:
Other
Name: DrawableView (⭐581)
License: Apache License V2
Demo:
6. Awesome Machine Learning
Python / Natural Language Processing
- PyStanfordDependencies (⭐68) - Python interface for converting Penn Treebank trees to Stanford Dependencies.
7. Awesome Javascript
Loaders
- ESL (⭐843) - Module loader browser first, support lazy define and AMD.
8. Awesome Remote Job
Articles & Posts
9. Awesome Ruby
Natural Language Processing
- Pragmatic Segmenter (⭐540) - Pragmatic Segmenter is a rule-based sentence boundary detection gem that works out-of-the-box across many languages.
10. Awesome Talks
Functional Programming
- Extreme Cleverness: Functional Data Structures in Scala by Daniel Spiewak [39:24]
Cognitive Development
- Becoming an Outlier: Career Reboot for the Developer Mind by Cory House [59:12]
11. Awesome Elixir
Eventhandling
- reaxive (⭐281) - Reaxive is a reactive event handling library, inspired by Elm and Reactive Extensions.
Examples and funny stuff
- dice (⭐15) - Roll the dice, in Elixir.
HTTP
- http (⭐12) - HTTP server for Elixir.
12. Htaccess
Rewrite and Redirection / Force non-www in a Generic Way
Force non-www in a Generic Way
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
Rewrite and Redirection / Force HTTPS Behind a Proxy
Force HTTPS Behind a Proxy
Useful if you have a proxy in front of your server performing TLS termination.
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Rewrite and Redirection / Alias a Single Directory
Alias a Single Directory
RewriteEngine On
RewriteRule ^source-directory/(.*) /target-directory/$1 [R=301,L]
Rewrite and Redirection / Alias “Clean” URLs
Alias “Clean” URLs
This snippet lets you use “clean” URLs -- those without a PHP extension, e.g. example.com/users
instead of example.com/users.php
.
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]
Security / Deny Access to Hidden Files and Directories
Deny Access to Hidden Files and Directories
Hidden files and directories (those whose names start with a dot .
) should most, if not all, of the time be secured. For example: .htaccess
, .htpasswd
, .git
, .hg
...
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
Alternatively, you can just raise a “Not Found” error, giving the attacker no clue:
RedirectMatch 404 /\..*$
Miscellaneous / Auto UTF-8 Encode
Auto UTF-8 Encode
Your text content should always be UTF-8 encoded, no?
# Use UTF-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8
# Force UTF-8 for a number of file formats
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml
Miscellaneous / Force Downloading
Force Downloading
Sometimes you want to force the browser to download some content instead of displaying it.
<Files *.md>
ForceType application/octet-stream
Header set Content-Disposition attachment
</Files>
Now there is a yang to this yin:
Miscellaneous / Prevent Downloading
Prevent Downloading
Sometimes you want to force the browser to display some content instead of downloading it.
<FilesMatch "\.(tex|log|aux)$">
Header set Content-Type text/plain
</FilesMatch>
Miscellaneous / Switch to Another PHP Version
Switch to Another PHP Version
If you’re on a shared host, chances are there are more than one version of PHP installed, and sometimes you want a specific version for your website. The following snippet should switch the PHP version for you.
AddHandler application/x-httpd-php56 .php
# Alternatively, you can use AddType
AddType application/x-httpd-php56 .php
13. Awesome Courses
Courses / Systems
- CS 2043 Unix Tools & Scripting Cornell University
- UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course provides an intensive training to develop skills in Unix command line tools and scripting that enable the accomplishment and automation of large and challenging computing tasks. The syllabus takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python.
- Syllabus
- Lectures
- Assignments
- CS 3410 Computer System Organization and Programming Cornell University
- CS3410 provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor.
- Lectures
- Assignments
- CS 4410 Operating Systems Cornell University
- CS 4410 covers systems programming and introductory operating system design and implementation. We will cover the basics of operating systems, namely structure, concurrency, scheduling, synchronization, memory management, filesystems, security and networking. The course is open to any undergraduate who has mastered the material in CS3410/ECE3140.
- Syllabus
- Lectures
Courses / Programming Languages / Compilers
- CS 3110 Data Structures and Functional Programming Cornell University
- Another course that uses OCaml to teach alternative programming paradigms, especially functional and concurrent programming.
- Lecture Slides
- Assignments
- CS 4120 Introduction to Compilers Cornell University
- An introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to optimization, and compile-time and run-time support for modern programming languages. As part of the course, students build a working compiler for an object-oriented language.
- Syllabus
- Lectures
- Assignments
- CS 5114 Network Programming Languages Cornell University
- This course provides an introduction to the languages used to program computer networks. It will examine recent proposals based on logic, functional, and distributed languages, as well as tools for establishing correctness using automatic solvers, model checkers, and proof assistants.
- Syllabus
- Lectures
- CS 5142 Scripting Languages Cornell University
- Perl, PHP, JavaScript, VisualBasic -- they are often-requested skills for employment, but most of us do not have the time to find out what they are all about. In this course, you learn how to use scripting languages for rapid prototyping, web programming, data processing, and application extension. Besides covering traditional programming languages concepts as they apply to scripting (e.g., dynamic typing and scoping), this course looks at new concepts rarely found in traditional languages (e.g., string interpolation, hashes, and polylingual code). Through a series of small projects, you use different languages to achieve programming tasks that highlight the strengths and weaknesses of scripting. As a side effect, you practice teaching yourself new languages.
- Syllabus
- Lectures
- Assignments
- CS 6118 Types and Semantics Cornell University
- Types and Semantics is about designing and understand programming languages, whether they be domain specific or general purpose. The goal of this class is to provide a variety of tools for designing custom (programming) languages for whatever task is at hand. Part of that will be a variety of insights on how languages work along with experiences from working with academics and industry on creating new languages such as Ceylon and Kotlin. The class focuses on types and semantics and the interplay between them. This means category theory and constructive type theory (e.g. Coq and richer variations) are ancillary topics of the class. The class also covers unconventional semantic domains such as classical linear type theory in order to both break students from conventional thinking and to provide powerful targets capable of formalizing thinks like networking protocols, resource-sensitive computation, and concurrency constructs. The class project is to design and formalize a (programming) language for a purpose of the student's choosing, and assignments are designed to ensure students have had a chance to practice applying the techniques learned in class before culminating these skills in the class project.
- Syllabus
- Lectures
Courses / CS Theory
- CS 3110 Data Structures and Functional Programming Cornell University
- CS 3110 (formerly CS 312) is the third programming course in the Computer Science curriculum, following CS 1110/1112 and CS 2110. The goal of the course is to help students become excellent programmers and software designers who can design and implement software that is elegant, efficient, and correct, and whose code can be maintained and reused.
- Syllabus
- Lectures
- Assignments
Courses / Introduction to CS
- CS 1109 Fundamental Programming Concepts Cornell University
- This course provides an introduction to programming and problem solving using a high-level programming language. It is designed to increase your knowledge level to comfortably continue to courses CS111x. Our focus will be on generic programming concepts: variables, expressions, control structures, loops, arrays, functions, pseudocode and algorithms. You will learn how to analyze problems and convert your ideas into solutions interpretable by computers. We will use MATLAB; because it provides a productive environment, and it is widely used by all engineering communities.
- Syllabus
- Lectures
- Assignments
- CS 1110 Introduction to Computing Using Python Cornell University
- Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming, and GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.
- Syllabus
- Lectures
- Assignments
- CS 1112 Introduction to Computing Using Matlab Cornell University
- Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
- Syllabus
- Lectures
- Assignments
- Projects
- CS 1115 Introduction to Computational Science and Engineering Using Matlab Graphical User Interfaces Cornell University
- Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
- Syllabus
- Lectures
- Projects
- CS 1130 Transition to OO Programming Cornell University
- Introduction to object-oriented concepts using Java. Assumes programming knowledge in a language like MATLAB, C, C++, or Fortran. Students who have learned Java but were not exposed heavily to OO programming are welcome.
- Syllabus
- Lectures
- Assignments
- CS 1133 Transition to Python Cornell University
- Introduction to the Python programming language. Covers the basic programming constructs of Python, including assignment, conditionals, iteration, functions, object-oriented design, arrays, and vectorized computation. Assumes programming knowledge in a language like Java, Matlab, C, C++, or Fortran.
- Syllabus
- Lectures
- Assignments
- CS 2110 Object-Oriented Programming and Data Structures Cornell University
- CS 2110 is an intermediate-level programming course and an introduction to computer science. Topics include program design and development, debugging and testing, object-oriented programming, proofs of correctness, complexity analysis, recursion, commonly used data structures, graph algorithms, and abstract data types. Java is the principal programming language. The course syllabus can easily be extracted by looking at the link to lectures.
- Syllabus
- Lectures
- Assignments
- CS 4302 Web Information Systems Cornell University
- This course will introduce you to technologies for building data-centric information systems on the World Wide Web, show the practical applications of such systems, and discuss their design and their social and policy context by examining cross-cutting issues such as citizen science, data journalism and open government. Course work involves lectures and readings as well as weekly homework assignments, and a semester-long project in which the students demonstrate their expertise in building data-centric Web information systems.
- Syllabus
- Lectures
- Assignments
Courses / Machine Learning
- CS 231n Convolutional Neural Networks for Visual Recognition Stanford University
- Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision.
- Lecture Notes
- Lecture Videos
- Github Page
Courses / Misc
- CS 3152 Introduction to Computer Game Development Cornell University
- A project-based course in which programmers and designers collaborate to make a computer game. This course investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives. Technical aspects of game architecture include software engineering, artificial intelligence, game physics, computer graphics, and networking. Aesthetic and cultural include art and modeling, sound and music, game balance, and player experience.
- Syllabus
- Lectures
- Assignments
- CS 4152 Advanced Topics in Computer Game Development Cornell University
- Project-based follow-up course to CS/INFO 3152. Students work in a multidisciplinary team to develop a game that incorporates innovative game technology. Advanced topics include 3D game development, mobile platforms, multiplayer gaming, and nontraditional input devices. There is a special emphasis on developing games that can be submitted to festivals and competitions, or that can be commercialized.
- Syllabus
- Lectures
- Assignments
- CS 4154 Analytics-driven Game Design Cornell University
- A project-based course in which programmers and designers collaborate to design, implement, and release a video game online through popular game portals. In this course, students will use the internet to gather data anonymously from players. Students will analyze this data in order to improve their game over multiple iterations. Technical aspects of this course include programming, database architecture, and statistical analysis.
- Syllabus
- Lectures
- Assignments
- CS 4860 Applied Logic Cornell University
- In addition to basic first-order logic, when taught by Computer Science this course involves elements of Formal Methods and Automated Reasoning. Formal Methods is concerned with proving properties of algorithms, specifying programming tasks and synthesizing programs from proofs. We will use formal methods tools such as interactive proof assistants (see www.nuprl.org). We will also spend two weeks on constructive type theory, the language used by the Coq and Nuprl proof assistants.
- Syllabus
- Lectures
- Assignments
- CS 5150 Software Engineering Cornell University
- Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems
- Lectures
- Assignments
- CS 5220 Applications of Parallel Computers Cornell University
- How do we solve the large-scale problems of science quickly on modern computers? How do we measure the performance of new or existing simulation codes, and what things can we do to make them run faster? How can we best take advantage of features like multicore processors, vector units, and graphics co-processors? These are the types of questions we will address in CS 5220, Applications of Parallel Computers. Topics include:
- Single-processor architecture, caches, and serial performance tuning
- Basics of parallel machine organization
- Distributed memory programming with MPI
- Shared memory programming with OpenMP
- Parallel patterns: data partitioning, synchronization, and load balancing
- Examples of parallel numerical algorithms
- Applications from science and engineering
- Lectures
- Assignments
- How do we solve the large-scale problems of science quickly on modern computers? How do we measure the performance of new or existing simulation codes, and what things can we do to make them run faster? How can we best take advantage of features like multicore processors, vector units, and graphics co-processors? These are the types of questions we will address in CS 5220, Applications of Parallel Computers. Topics include:
- CS 5540 Computational Techniques for Analyzing Clinical Data Cornell University
- CS5540 is a masters-level course that covers a wide range of clinical problems and their associated computational challenges. The practice of medicine is filled with digitally accessible information about patients, ranging from EKG readings to MRI images to electronic health records. This poses a huge opportunity for computer tools that make sense out of this data. Computation tools can be used to answer seemingly straightforward questions about a single patient's test results (“Does this patient have a normal heart rhythm?”), or to address vital questions about large populations (“Is there any clinical condition that affects the risks of Alzheimer”). In CS5540 we will look at many of the most important sources of clinical data and discuss the basic computational techniques used for their analysis, ranging in sophistication from current clinical practice to state-of-the-art research projects.
- Syllabus
- Lectures
- Assignments
- CS 5724 Evolutionary Computation Cornell University
- This course will cover advanced topics in evolutionary algorithms and their application to open-ended computational design. The field of evolutionary computation tries to address large-scale optimization and planning problems through stochastic population-based methods. It draws inspiration from evolutionary processes in nature and in engineering, and also serves as abstract models for these phenomena. Evolutionary processes are generally weak methods that require little information about the problem domain and hence can be applied across a wide variety of applications. They are especially useful for open-ended problem domains for which little formal knowledge exists and the number of parameters is undefined, such as for the general engineering design process. This course will provide insight to a variety of evolutionary computation paradigms, such as genetic algorithms, genetic programming, and evolutionary strategies, as well as governing dynamics of co-evolution, arms races and mediocre stable states. New methods involving symbiosis models and pattern recognition will also be presented. The material will be intertwined with discussions of representations and results for design problems in a variety of problem domains including software, electronics, and mechanics.
- Syllabus
- Lectures
- Assignments
- CS 6452 Datacenter Networks and Services Cornell University
- CS6452 focuses on datacenter networks and services. The emerging demand for web services and cloud computing have created need for large scale data centers. The hardware and software infrastructure for datacenters critically determines the functionality, performance, cost and failure tolerance of applications running on that datacenter. This course will examine design alternatives for both the hardware (networking) infrastructure, and the software infrastructure for datacenters.
- Syllabus
- Lectures
- CS 6630 Realistic Image Synthesis Cornell University
- CS6630 is an introduction to physics-based rendering at the graduate level. Starting from the fundamentals of light transport we will look at formulations of the Rendering Equation, and a series of Monte Carlo methods, from sequential sampling to multiple importance sampling to Markov Chains, for solving the equation to make pictures. We'll look at light reflection from surfaces and scattering in volumes, illumination from luminaries and environments, and diffusion models for translucent materials. We will build working implementations of many of the algorithms we study, and learn how to make sure they are actually working correctly. It's fun to watch integrals and probability distributions transform into photographs of a slightly too perfect synthetic world.
- Syllabus
- Lectures
- Assignments
- Readings
- CS 6640 Computational Photography Cornell University
- A course on the emerging applications of computation in photography. Likely topics include digital photography, unconventional cameras and optics, light field cameras, image processing for photography, techniques for combining multiple images, advanced image editing algorithms, and projector-camera systems.cornell.edu/courses/CS6630/2012sp/about.stm)
- Lectures
- Assignments
- CS 6650 Computational Motion Cornell University
- Covers computational aspects of motion, broadly construed. Topics include the computer representation, modeling, analysis, and simulation of motion, and its relationship to various areas, including computational geometry, mesh generation, physical simulation, computer animation, robotics, biology, computer vision, acoustics, and spatio-temporal databases. Students implement several of the algorithms covered in the course and complete a final project. This offering will also explore the special role of motion processing in physically based sound rendering.
- CS 6840 Algorithmic Game Theory Cornell University
- Algorithmic Game Theory combines algorithmic thinking with game-theoretic, or, more generally, economic concepts. The course will study a range of topics at this interface
- Syllabus
- Lectures
- Assignments
- Readings
- Prev: Feb 23 - Mar 01, 2015
- Next: Feb 09 - Feb 15, 2015