diff options
| -rw-r--r-- | erlang.html.markdown | 2 | ||||
| -rw-r--r-- | fr-fr/python-fr.html.markdown | 2 | ||||
| -rw-r--r-- | git.html.markdown | 96 | ||||
| -rw-r--r-- | groovy.html.markdown | 13 | ||||
| -rw-r--r-- | java.html.markdown | 27 | ||||
| -rw-r--r-- | pt-br/brainfuck-pt.html.markdown | 5 | ||||
| -rw-r--r-- | pt-br/swift-pt.html.markdown | 2 | ||||
| -rw-r--r-- | ruby-ecosystem.html.markdown | 2 | ||||
| -rw-r--r-- | rust.html.markdown | 2 | ||||
| -rw-r--r-- | tcl.html.markdown | 2 | 
10 files changed, 103 insertions, 50 deletions
| diff --git a/erlang.html.markdown b/erlang.html.markdown index 48cee6ec..4e2f1d84 100644 --- a/erlang.html.markdown +++ b/erlang.html.markdown @@ -35,7 +35,7 @@ Num = 43. % ** exception error: no match of right hand side value 43  % In most languages, `=` denotes an assignment statement. In Erlang, however,  % `=` denotes a pattern-matching operation. When an empty variable is used on the  % left hand side of the `=` operator to is bound (assigned), but when a bound -% varaible is used on the left hand side the following behaviour is observed. +% variable is used on the left hand side the following behaviour is observed.  % `Lhs = Rhs` really means this: evaluate the right side (`Rhs`), and then  % match the result against the pattern on the left side (`Lhs`).  Num = 7 * 6. diff --git a/fr-fr/python-fr.html.markdown b/fr-fr/python-fr.html.markdown index 5a03ecfc..3f6dcabb 100644 --- a/fr-fr/python-fr.html.markdown +++ b/fr-fr/python-fr.html.markdown @@ -19,7 +19,7 @@ Vous pourrez bientôt trouver un article pour Python 3 en Français. Pour le mom  ```python  # Une ligne simple de commentaire commence par un dièse -""" Les lignes de commenatires multipes peuvent être écrites +""" Les lignes de commentaires multipes peuvent être écrites      en utilisant 3 guillemets ("), et sont souvent utilisées      pour les commentaires  """ diff --git a/git.html.markdown b/git.html.markdown index bf8fce0c..b1347309 100644 --- a/git.html.markdown +++ b/git.html.markdown @@ -8,17 +8,17 @@ contributors:  filename: LearnGit.txt  --- -Git is a distributed version control and source code management system.  +Git is a distributed version control and source code management system. -It does this through a series of snapshots of your project, and it works  -with those snapshots to provide you with functionality to version and  +It does this through a series of snapshots of your project, and it works +with those snapshots to provide you with functionality to version and  manage your source code.  ## Versioning Concepts  ### What is version control? -Version control is a system that records changes to a file, or set of files, over time. +Version control is a system that records changes to a file(s), over time.  ### Centralized Versioning VS Distributed Versioning @@ -42,8 +42,9 @@ Version control is a system that records changes to a file, or set of files, ove  ### Repository -A set of files, directories, historical records, commits, and heads. Imagine it as a source code data structure, -with the attribute that each source code "element" gives you access to its revision history, among other things. +A set of files, directories, historical records, commits, and heads. Imagine it +as a source code data structure, with the attribute that each source code +"element" gives you access to its revision history, among other things.  A git repository is comprised of the .git directory & working tree. @@ -54,32 +55,33 @@ The .git directory contains all the configurations, logs, branches, HEAD, and mo  ### Working Tree (component of repository) -This is basically the directories and files in your repository. It is often referred to -as your working directory. +This is basically the directories and files in your repository. It is often +referred to as your working directory.  ### Index (component of .git dir)  The Index is the staging area in git. It's basically a layer that separates your working tree -from the Git repository. This gives developers more power over what gets sent to the Git -repository. +from the Git repository. This gives developers more power over what gets sent +to the Git repository.  ### Commit -A git commit is a snapshot of a set of changes, or manipulations to your Working Tree. -For example, if you added 5 files, and removed 2 others, these changes will be contained -in a commit (or snapshot). This commit can then be pushed to other repositories, or not! +A git commit is a snapshot of a set of changes, or manipulations to your Working +Tree. For example, if you added 5 files, and removed 2 others, these changes +will be contained in a commit (or snapshot). This commit can then be pushed to +other repositories, or not!  ### Branch -A branch is essentially a pointer that points to the last commit you made. As you commit, -this pointer will automatically update and point to the latest commit. +A branch is essentially a pointer to the last commit you made. As you go on +committing, this pointer will automatically update to point the latest commit.  ### HEAD and head (component of .git dir)  HEAD is a pointer that points to the current branch. A repository only has 1 *active* HEAD.  head is a pointer that points to any commit. A repository can have any number of heads. -###Stages of Git +### Stages of Git  * Modified - Changes have been made to a file but file has not been committed to Git Database yet  * Staged - Marks a modified file to go into your next commit snapshot  * Committed - Files have been committed to the Git Database @@ -95,7 +97,7 @@ head is a pointer that points to any commit. A repository can have any number of  ### init -Create an empty Git repository. The Git repository's settings, stored information,  +Create an empty Git repository. The Git repository's settings, stored information,  and more is stored in a directory (a folder) named ".git".  ```bash @@ -104,15 +106,12 @@ $ git init  ### config -To configure settings. Whether it be for the repository, the system itself, or global -configurations. +To configure settings. Whether it be for the repository, the system itself, +or global configurations ( global config file is `~/.gitconfig` ).  ```bash  # Print & Set Some Basic Config Variables (Global) -$ git config --global user.email -$ git config --global user.name -  $ git config --global user.email "MyEmail@Zoho.com"  $ git config --global user.name "My Name"  ``` @@ -142,10 +141,20 @@ $ git commit --help  $ git init --help  ``` +### ignore files + +To intentionally untrack file(s) & folder(s) from git. Typically meant for +private & temp files which would otherwise be shared in the repository. +```bash +$ echo "temp/" >> .gitignore +$ echo "private_key" >> .gitignore +``` + +  ### status -To show differences between the index file (basically your working copy/repo) and the current -HEAD commit. +To show differences between the index file (basically your working copy/repo) +and the current HEAD commit.  ```bash @@ -172,7 +181,8 @@ $ git add /path/to/file/HelloWorld.c  $ git add ./*.java  ``` -This only adds a file to the staging area/index, it doesn't commit it to the working directory/repo. +This only adds a file to the staging area/index, it doesn't commit it to the +working directory/repo.  ### branch @@ -205,7 +215,8 @@ Updates all files in the working tree to match the version in the index, or spec  $ git checkout  # Checkout a specified branch  $ git checkout branchName -# Create a new branch & switch to it, like: "git branch <name>; git checkout <name>" +# Create a new branch & switch to it +# equivalent to "git branch <name>; git checkout <name>"  $ git checkout -b newBranch  ``` @@ -218,6 +229,10 @@ to a remote branch.  ```bash  # Clone learnxinyminutes-docs  $ git clone https://github.com/adambard/learnxinyminutes-docs.git +# shallow clone - faster cloning that pulls only latest snapshot +$ git clone --depth 1 https://github.com/adambard/learnxinyminutes-docs.git +# clone only a specific branch +$ git clone -b master-cn https://github.com/adambard/learnxinyminutes-docs.git --single-branch  ```  ### commit @@ -231,6 +246,9 @@ $ git commit -m "Added multiplyNumbers() function to HelloWorld.c"  # automatically stage modified or deleted files, except new files, and then commit  $ git commit -a -m "Modified foo.php and removed bar.php" + +# change last commit (this deletes previous commit with a fresh commit) +$ git commit --amend -m "Correct message"  ```  ### diff @@ -268,7 +286,7 @@ $ git config --global alias.g "grep --break --heading --line-number"  $ git grep 'variableName' -- '*.java'  # Search for a line that contains "arrayListName" and, "add" or "remove" -$ git grep -e 'arrayListName' --and \( -e add -e remove \)  +$ git grep -e 'arrayListName' --and \( -e add -e remove \)  ```  Google is your friend; for more examples @@ -282,8 +300,8 @@ Display commits to the repository.  # Show all commits  $ git log -# Show X number of commits -$ git log -n 10 +# Show only commit message & ref +$ git log --oneline  # Show merge commits only  $ git log --merges @@ -303,7 +321,7 @@ $ git merge --no-ff branchName  ### mv -Rename or move a file	 +Rename or move a file  ```bash  # Renaming a file @@ -338,7 +356,7 @@ $ git pull origin master --rebase  Push and merge changes from a branch to a remote & branch.  ```bash -# Push and merge changes from a local repo to a  +# Push and merge changes from a local repo to a  # remote named "origin" and "master" branch.  # git push <remote> <branch>  # git push => implicitly defaults to => git push origin master @@ -347,23 +365,25 @@ $ git push origin master  # To link up current local branch with a remote branch, add -u flag:  $ git push -u origin master  # Now, anytime you want to push from that same local branch, use shortcut: -$ git push  +$ git push  ```  ### stash -Stashing takes the dirty state of your working directory and saves it on a stack of unfinished changes that you can reapply at any time. +Stashing takes the dirty state of your working directory and saves it on a stack +of unfinished changes that you can reapply at any time. -Let's say you've been doing some work in your git repo, but you want to pull from the remote. -Since you have dirty (uncommited) changes to some files, you are not able to run `git pull`. -Instead, you can run `git stash` to save your changes onto a stack! +Let's say you've been doing some work in your git repo, but you want to pull +from the remote. Since you have dirty (uncommited) changes to some files, you +are not able to run `git pull`. Instead, you can run `git stash` to save your +changes onto a stack!  ```bash  $ git stash  Saved working directory and index state \    "WIP on master: 049d078 added the index file"    HEAD is now at 049d078 added the index file -  (To restore them type "git stash apply")  +  (To restore them type "git stash apply")  ```  Now you can pull! @@ -410,7 +430,7 @@ Now you're ready to get back to work on your stuff!  [Additional Reading.](http://git-scm.com/book/en/v1/Git-Tools-Stashing) -### rebase (caution)  +### rebase (caution)  Take all changes that were committed on one branch, and replay them onto another branch.  *Do not rebase commits that you have pushed to a public repo*. diff --git a/groovy.html.markdown b/groovy.html.markdown index 519f36ce..492c1ba2 100644 --- a/groovy.html.markdown +++ b/groovy.html.markdown @@ -99,7 +99,7 @@ technologies.sort()  // To sort without mutating original, you can do:  sortedTechnologies = technologies.sort( false ) -/*** Manipulating Lists ***/ +/*** Manipulating Lists ***/e  //Replace all elements in the list  Collections.replaceAll(technologies, 'Gradle', 'gradle') @@ -200,6 +200,14 @@ def y = 10  def x = (y > 1) ? "worked" : "failed"  assert x == "worked" +//Groovy supports 'The Elvis Operator' too! +//Instead of using the ternary operator: + +displayName = user.name ? user.name : 'Anonymous' + +//We can write it: +displayName = user.name ?: 'Anonymous' +  //For loop  //Iterate over a range  def x = 0 @@ -422,6 +430,3 @@ Join a [Groovy user group](http://www.groovy-lang.org/usergroups.html)  [1] http://roshandawrani.wordpress.com/2010/10/18/groovy-new-feature-closures-can-now-memorize-their-results/  [2] http://www.solutionsiq.com/resources/agileiq-blog/bid/72880/Programming-with-Groovy-Trampoline-and-Memoize  [3] http://mrhaki.blogspot.mx/2011/05/groovy-goodness-cache-closure-results.html - - - diff --git a/java.html.markdown b/java.html.markdown index e4234a39..478ec683 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -325,6 +325,33 @@ public class LearnJava {          // toString returns this Object's string representation.          System.out.println("trek info: " + trek.toString()); +         +        // Double Brace Initialization +        // The Java Language has no syntax for how to create static Collections +        // in an easy way. Usually you end up in the following way: +         +        private static final Set<String> COUNTRIES = new HashSet<String>(); +        static { +	       validCodes.add("DENMARK"); +	       validCodes.add("SWEDEN"); +	       validCodes.add("FINLAND"); +        } +         +        // But there's a nifty way to achive the same thing in an +        // easier way, by using something that is called Double Brace +        // Initialization. +         +        private static final Set<String> COUNTRIES = HashSet<String>() {{ +            add("DENMARK"); +            add("SWEDEN"); +            add("FINLAND");             +        }} +         +        // The first brace is creating an new AnonymousInnerClass and the  +        // second one declares and instance initializer block. This block +        // is called with the anonymous inner class is created. +        // This does not only work for Collections, it works for all +        // non-final classes.      } // End main method  } // End LearnJava class diff --git a/pt-br/brainfuck-pt.html.markdown b/pt-br/brainfuck-pt.html.markdown index c7ce55ee..9e4b458d 100644 --- a/pt-br/brainfuck-pt.html.markdown +++ b/pt-br/brainfuck-pt.html.markdown @@ -5,10 +5,11 @@ contributors:      - ["Mathias Bynens", "http://mathiasbynens.be/"]  translators:      - ["Suzane Sant Ana", "http://github.com/suuuzi"] +    - ["Rodrigo Muniz", "http://github.com/muniz95"]  lang: pt-br  --- -Brainfuck (em letras minúsculas, eceto no início de frases) é uma linguagem de +Brainfuck (em letras minúsculas, exceto no início de frases) é uma linguagem de  programação Turing-completa extremamente simples com apenas 8 comandos.  ``` @@ -18,7 +19,7 @@ Brainfuck é representado por um vetor com 30 000 células inicializadas em zero  e um ponteiro de dados que aponta para a célula atual.  Existem 8 comandos: -+ : Incrementa o vaor da célula atual em 1. ++ : Incrementa o valor da célula atual em 1.  - : Decrementa o valor da célula atual em 1.  > : Move o ponteiro de dados para a célula seguinte (célula à direita).  < : Move o ponteiro de dados para a célula anterior (célula à esquerda). diff --git a/pt-br/swift-pt.html.markdown b/pt-br/swift-pt.html.markdown index 72a57e4a..e840b8cf 100644 --- a/pt-br/swift-pt.html.markdown +++ b/pt-br/swift-pt.html.markdown @@ -221,7 +221,7 @@ println("Gas price: \(price)")  // Número variável de argumentos  func setup(numbers: Int...) { -    // its an array +    // é um array      let number = numbers[0]      let argCount = numbers.count  } diff --git a/ruby-ecosystem.html.markdown b/ruby-ecosystem.html.markdown index d8a02d36..1fbcc752 100644 --- a/ruby-ecosystem.html.markdown +++ b/ruby-ecosystem.html.markdown @@ -42,7 +42,7 @@ The three major version of Ruby in use are:  * 2.0.0 - Released in February 2013. Most major libraries and frameworks support    2.0.0.  * 1.9.3 - Released in October 2011. This is the version most rubyists use -  currently. +  currently. Also [retired](https://www.ruby-lang.org/en/news/2015/02/23/support-for-ruby-1-9-3-has-ended/)  * 1.8.7 - Ruby 1.8.7 has been    [retired](http://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/). diff --git a/rust.html.markdown b/rust.html.markdown index 4fbd6144..3157fcf4 100644 --- a/rust.html.markdown +++ b/rust.html.markdown @@ -14,7 +14,7 @@ it possible to use Rust libraries as a "drop-in replacement" for C.  Rust’s first release, 0.1, occurred in January 2012, and for 3 years development   moved so quickly that until recently the use of stable releases was discouraged -and instead the general advise was to use nightly builds.  +and instead the general advice was to use nightly builds.   On May 15th 2015, Rust 1.0 was released with a complete guarantee of backward   compatibility. Improvements to compile times and other aspects of the compiler are diff --git a/tcl.html.markdown b/tcl.html.markdown index af2911c9..3982807f 100644 --- a/tcl.html.markdown +++ b/tcl.html.markdown @@ -356,7 +356,7 @@ eval $command ;# There is an error here, because there are too many arguments \  set replacement {Archibald Sorbisol}  set command {set name $replacement}  set command [subst $command]  -eval $command ;# The same error as before:  to many arguments to "set" in \ +eval $command ;# The same error as before: too many arguments to "set" in \      {set name Archibald Sorbisol} | 
