Giter Site home page Giter Site logo

elixirschool / elixirschool Goto Github PK

View Code? Open in Web Editor NEW
3.5K 95.0 1.0K 22.24 MB

The content behind Elixir School

Home Page: https://elixirschool.com

License: Apache License 2.0

learning elixir programming educational elixir-lang lesson translated-lessons hacktoberfest translation

elixirschool's Introduction

Elixir School

Elixir School is the premier destination for people seeking to learn and master the Elixir programming language.

You can access lessons at ElixirSchool.com.

Feedback and participation are strongly encouraged! Please see Contributing for more details on how to get involved.

Running Locally

This repository only contains the lessons and blog posts hosted on Elixir School. To run the Elixir School website locally, find the code and setup instructions in the school_house repository.

Translating a Lesson

  1. Each of the languages has a folder in lessons/ directory of this repo. To start translating you need to copy a file from the English language to the corresponding folder in your language and start translating it.

  2. Check the translation report for pages that haven't been translated yet, or for pages which need to have their translations updated in the corresponding language you want to work with.

  3. Translated lessons must include page metadata.

    • title should be a translation of the original lesson's title.
    • version should be set to the original English version.

    For example lessons/ja/basics/basics.md:

---
title: 基本
version: 1.0.0
---
  1. Submit a PR with the new translated lesson 🎉

Posting an Article

Elixir School is powered by Phoenix and NimblePublisher, a publishing engine that supports Markdown formatting. If you're familiar with Phoenix & NimblePublisher then you're ready to go, if you aren't don't fret we're here to help!

  1. We need to create the file for our article. Blog posts live in the posts/ directory. Our filename will need to confirm to the YYYY-MM-DD-name-separated-with-hyphens.md pattern.

  2. After opening the new file in our favorite editor we need to add some metadata to the top of it:

%{
  author: "Author Name",
  author_link: "https://github.com/author_github_account",
  tags: ["phoenix"],
  date: ~D[YYYY-MM-DD],
  title: "Full Article Title",
  excerpt: """
  Article short preview text
  """
}
---
  1. Once we've completed writing our post submit a pull request to have it reviewed before it is published.

elixirschool's People

Contributors

3100 avatar adamgavlak avatar brain-geek avatar doomspork avatar eksperimental avatar erickgnavar avatar fabon-f avatar gemantzu avatar herminiotorres avatar igorpolyakov avatar jangromko avatar kenspirit avatar kosmas avatar koziolek avatar lex111 avatar lithiumpie avatar marocchino avatar michalvalasek avatar nscyclone avatar pjhampton avatar pragmaticivan avatar rezaprima avatar riseshia avatar sophiedebenedetto avatar starfish719 avatar stompy-bot avatar thiamsantos avatar vbrazo avatar yosangwon avatar zillou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elixirschool's Issues

Chinese Translation: Basic Lessons

Hey, I want to translate this wonderful tutorial into Chinese, following is my progress right now.

  • index.md
  • Basics
    • basics.md
    • collections.md
    • enum.md
    • pattern-matching.md
    • control structures.md
    • functions.md
    • composition.md
    • mix.md
    • testing.md

Liquid template variables {{ }} conflict with code blocks

Liquid assumes all uses of {{ }} are for variables, even inside code blocks. This became apparent when the ETS lesson was deployed:

Liquid Exception: Liquid syntax error: Variable '{{:"$1", :"_", :"$3"}' was not properly terminated with regexp: /\}\}/ in lessons/specifics/ets.md

Temporary workaround is to add a space: { {:"$1", :"_", :"$3"}. Gotta find a better solution.

Update README.md & INDEX.md

Get Involved!

The README.md & INDEX.md of this project need to be updated. This task can be split into two separate PRs if desired.

README.md
There is duplicate information here because this information was moved to the projects wiki. These should be referenced. The readme should also be captivating and engaging giving an overview. A couple of cool examples:

https://github.com/atom/atom
https://github.com/babel/babel
https://github.com/gulpjs/gulp

We also have our own channel on Elixir Slack @ *#elixirschool * and a couple of social media accounts that need to be mentioned.

INDEX.md
The first page of the https://elixirschool.com/ needs to be brought up to scratch with the rest of the site. It should be quite captivating like https://caferati.me/labs/github-fork

Discussion on where to take this can be held on Slack...

Create a lesson about Strings

Suggesting to create a lesson about Strings in Elixir, starting from:

  1. how do they work
  2. simple operations and manipulation
  3. how are they handled inside the BEAM
  4. Etc.

If you need some help with that, please let me know! 😄

Spanish translation

Hi, I would like to contribute to translate the repo to spanish, could you guide me how to proceed?

Thanks

Lesson Suggestions

This can serve as a place for folks to suggest new lessons.

Suggested lessons:

Advanced:

  • OTP Architecture
  • Distribution
  • GenStage

Specifics:

  • Creating a DSL
  • Leex & Yecc
  • Dialyzer / Debugging (created #566 )
  • Hex Docs

Libraries:

  • Guardian (in-progress #431)
  • exrm
  • Bamboo

French Translations

Get Involved!

We are seeking French translators for this project. If you would like to get involved with translating a lesson. Please folk the project and start translating.

  • Set up
    • _config.yml
    • index.md
  • Basics
  • Advanced
    • concurrency.md
    • errors.md
    • erlang.md
    • escripts.md
    • otp-concurrency.md
    • otp-supervisors.md
    • metaprogramming.md
  • Specifics
    • ecto.md
    • eex.md
    • ets.md
    • mnesia.md
    • plug.md

Note
Those new to Elixir and / or Github are encouraged to get involved 😄. 1 Pull Request per lesson.

Italian Translations

Get Involved!

We are seeking Italian translators for this project. If you would like to get involved with translating a lesson. Please folk the project and start translating.

  • Set up
    • _config.yml (@apeacox)
    • index.md (@apeacox)
  • Basics
    • Basics
    • Collections
    • Enum
    • Pattern Matching
    • Control Structures
    • Pipe Operator
    • Functions
    • Composition
    • Mix
    • Sigils
    • Documentation
    • Testing
    • Custom Mix Tasks
  • Advanced
    • concurrency.md
    • errors.md
    • erlang.md
    • escripts.md
    • otp-concurrency.md
    • otp-supervisors.md
    • metaprogramming.md
  • Specifics
    • ecto.md
    • eex.md
    • ets.md
    • mnesia.md
    • plug.md

Note
Those new to Elixir and / or Github are encouraged to get involved 😄. 1 Pull Request per lesson.

Glossary proposal

The problem: right now there are some wording issues related to Elixir-specific (or other non-widely used) terms when translating. Also, there is a problem whether some things should be translated at all. And I'm not the only one having this problem:

There are many English terms that could not be 1:1 translated to Vietnamese. Most of the cases, translated terms make no senses whatsoever.

And there's even small discussion in this topic.

Note: I couldn't find a good translation for callback, so I leave as it is but in italic.
Note 2: The word handler is not easy to translate, so I used the word "processador" which is something similar.

Source

Also, for all terms, we should have stable translations in one language to improve reading experience.

A possible solution for this problem is having some kind of glossary per language. Example I made for Russian language

This will improve translation quality and simplify terminology translation lookups.

Let's discuss this.

Hindi Translations

Get Involved!

We are seeking Hindi translators for this project. If you would like to get involved with translating a lesson. Please folk the project and start translating.

  • Set up
    • _config.yml
    • index.md
  • Basics
    • Collections
    • Enum
    • Pattern Matching
    • Control Structures
    • Pipe Operator
    • Functions
    • Composition
    • Mix
    • Sigils
    • Documentation
    • Testing
    • Custom Mix Tasks
  • Advanced
    • concurrency.md
    • errors.md
    • erlang.md
    • escripts.md
    • otp-concurrency.md
    • otp-supervisors.md
    • metaprogramming.md
  • Specifics
    • ecto.md
    • eex.md
    • ets.md
    • mnesia.md
    • plug.md

Note
Those new to Elixir and / or Github are encouraged to get involved 😄. 1 Pull Request per lesson.

Translation version control

Right now I am translating into tutorial into Chinese, and find out a issue: How to keep translation up to date?

There are updates on previous lessons, which makes my translation out of date. The obvious way to solve this is to go through commit logs and find out the updated content, then add another patch.

Do you guys have a better way to work on this one?

Advanced section, lesson 1 - Strings

The section says that Erlang strings are represented with single quotes. This is unfortunately incorrect. Strings in Erlang are represented with double quotes, the same as in Elixir.

As for single quotes, they are used to represent atoms that contain spaces, uppercase letters or any other characters that are "unconventional" for atoms.

You can find the documentation for it here.

This part needs be updated.

Moving through lessons at bottom of page

In mobile view it's frustrating to scroll all the way back to the top to get to the next or prev lesson, would be awesome to have links at the bottom of the page to continue the lesson.

Update translation of description for all the languages.

Currently we just have:

description:
  en: Lessons about the Elixir programming language
  jp: Lessons about the Elixir programming language
  cn: Lessons about the Elixir programming language
  es: Lessons about the Elixir programming language
  pt: Lições sobre a linguagem de programação Elixir
  vi: Lessons about the Elixir programming language
  ru: Lessons about the Elixir programming language

Roadmap:

  • en
  • jp
  • cn
  • es
  • pt
  • vi
  • ru
  • sk

Chinese Translation

Hey, I plan to translate the final section into Chinese:

  • basics
    • documentation.md
    • sigils.md
    • Custom Mix Tasks
  • advanced
    • errors.md
  • specifics
    • etco.md
    • plug.md
    • ets.md
    • eex.md

Japanese translation

Here I will create translated files; any advice, reviews and/or tips are welcome:

  • index.md
  • Basic
    • basics.md
    • collections.md
    • composition.md
    • control-structures.md
    • enum.md
    • functions.md
    • mix.md
    • pattern-matching.md
    • testing.md
  • Advanced
    • concurrency.md
    • erlang.md
    • escripts.md
    • otp-concurrency.md
    • otp-supervisors.md
  • Specifics
    • ecto.md
    • plug.md
  • Modify internal links of each TOB

Spanish Translation: Basic Lessons

  • index.md
  • Basics
    • basics.md
    • collections.md
    • enum.md
    • pattern-matching.md
    • control structures.md
    • functions.md
    • composition.md
    • mix.md
    • testing.md

Improve Elixir School's SEO

Not my area of expertise. Going to use this issue as a place to gather information and plan out a strategy.

Best Practices in Testing

If there's no Best Practices content, why are we keeping this area in testing.md ? should we remove until someone send this data?

Content in sidebar is hidden

Looks like you've got a lot of lessons now! The sidebar hides the content for me and I'm not able to scroll. I'm sending along a pull request to fix the issue.

sidebar content hidden

Add Style Guide.

It seems that the number of contributors of this project is growing. In my opinion it would be good to have a rough style guide in which all authors should work to. This is drawn from my experience with the documentation lesson. Examples could include:

  • Omit IEx numbers.
iex(1)> # bad
iex> # good
  • Using $ to denote terminal prompt
$ man cd # etc etc

This could be added as a separate file, to the contributor file, or even to the README depending on how concise it is.

What do you guys think about this?

Rearrange 'Basic' lessons

It it possible we could rearrange the lessons from:

...
9. Testing
10. Documentation
11. Sigils

to

...
9. Sigils
10. Documentation
11. Testing

This is so it logically flows better when talking about doc testing (which doesn't exist yet, I believe). I wanted to bring this up here first just incase it breaks anyones workflow.

Be able to see Diff

image

I'm not even sure how this would work, but it would be nice to highlight the diff in between code:

image

or even maybe an arrow that points to what is different in the code.

Urdu Translations

Get Involved!

We are seeking Urdu translators for this project. If you would like to get involved with translating a lesson. Please folk the project and start translating.

  • Set up
    • _config.yml
    • index.md
  • Basics
    • Collections
    • Enum
    • Pattern Matching
    • Control Structures
    • Pipe Operator
    • Functions
    • Composition
    • Mix
    • Sigils
    • Documentation
    • Testing
  • Advanced
    • concurrency.md
    • errors.md
    • erlang.md
    • escripts.md
    • otp-concurrency.md
    • otp-supervisors.md
    • metaprogramming.md
  • Specifics
    • ecto.md
    • eex.md
    • ets.md
    • mnesia.md
    • plug.md

Note
Those new to Elixir and / or Github are encouraged to get involved 😄. 1 Pull Request per lesson.

Add share buttons to lessons footer.

It would be great to introduce a new feature which allows a user to share a lesson over different social networks from the bottom of a lesson. It would maybe look like something like the attached image but horizontal.

screen shot 2016-03-23 at 17 29 49

Add some exercises at the end of each lesson!

Another suggestion is to add some exercises at the end of the modules, so ElixirSchool can turn into a real school where people (or maybe a machine) is evaluating the students work c: I'd also be glad to help you on that.

There could be many ways to accomplish this:

  1. We put an exercise and the answer is sent via email to someone to check it.
  2. We (somehow) evaluate the code inside an interpreter and check the result.

The easiest way in my opinion to put some exercises is to create some mix projects inside an exercises repo, make some tests inside the mix projects and make the students to make the tests pass writing the answer code into the lib folder.

What do you think fellas? :shipit:

Posssible Typo in Sigils

Under the regular expressions part it says "Because Elixir supports Perl Compatible Regular Expressions (PCRE), we can append i to the end of our sigil to turn on case sensitivity."
however the example shows this turns off case sensitivity, and makes the regular expression insensitive to case

New Logo Proposal

  • Just creating this issue here because the designers are new with github, so they have a place to comment.

Incorporate Elixir 1.2 changes into lessons

Elixir 1.2 introduced a number of changes we should incorporate into lessons:

  • The addition of multi aliases/imports/require:

    alias MyApp.{Foo, Bar, Baz}
    
  • Support for variables in map keys:

    %{key => value}
    
  • Support for the pin operator in map keys and function clauses:

    %{^key => value} = %{key => value}
    fn ^key -> :ok end
    
  • Addition of the with special form to match on multiple expressions:

    with {:ok, contents} <- File.read("my_file.ex"),
         {res, binding} <- Code.eval_string(contents),
         do: {:ok, res}
    

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.