Skip to content

Commit

Permalink
Merge pull request #1 from marlonbernardes/master
Browse files Browse the repository at this point in the history
Merge upstream
  • Loading branch information
ehkenne authored May 12, 2017
2 parents f5c04a0 + c0337c5 commit af98b91
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 0 deletions.
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,16 @@ Contributions are welcome and are greatly appreciated!
Every little bit helps. Pull-requests are always welcome!

See [CONTRIBUTING](./CONTRIBUTING.md)

# Contributors

Special thanks to everyone who contributed!

<!-- contributors:start -->
| [<img src="https://avatars2.githubusercontent.com/u/2975955?v=3" width="100px" /><br /><sub>marlonbernardes</sub>](https://github.com/marlonbernardes) | [<img src="https://avatars3.githubusercontent.com/u/4949000?v=3" width="100px" /><br /><sub>gregdeane</sub>](https://github.com/gregdeane) | [<img src="https://avatars1.githubusercontent.com/u/739913?v=3" width="100px" /><br /><sub>rubenspgcavalcante</sub>](https://github.com/rubenspgcavalcante) | [<img src="https://avatars2.githubusercontent.com/u/551895?v=3" width="100px" /><br /><sub>acidio</sub>](https://github.com/acidio) | [<img src="https://avatars3.githubusercontent.com/u/1775157?v=3" width="100px" /><br /><sub>LeonardoCardoso</sub>](https://github.com/LeonardoCardoso)
|---|---|---|---|---|
| [<img src="https://avatars0.githubusercontent.com/u/446112?v=3" width="100px" /><br /><sub>pedrovitti</sub>](https://github.com/pedrovitti) | [<img src="https://avatars0.githubusercontent.com/u/6086?v=3" width="100px" /><br /><sub>laguiar</sub>](https://github.com/laguiar) | [<img src="https://avatars1.githubusercontent.com/u/450069?v=3" width="100px" /><br /><sub>mathiasgrimm</sub>](https://github.com/mathiasgrimm) | [<img src="https://avatars1.githubusercontent.com/u/1649432?v=3" width="100px" /><br /><sub>frontendherodk</sub>](https://github.com/frontendherodk)
<!-- contributors:end -->

... and many [others](https://github.com/marlonbernardes/awesome-berlin/graphs/contributors)!

7 changes: 7 additions & 0 deletions en/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,11 @@
1. [Tax Id number](/pages/working.md#getting-your-tax-id-number)
1. [Changing your Tax Class](/pages/changing-tax-category.md#changing-your-tax-category)
1. [How to fill out the form](/pages/changing-tax-category.md#how-to-fill-out-the-form)
1. [Obtaining a Drivers License](/pages/obtaining-a-drivers-license.md#obtaining-a-drivers-license)
1. [Drivers license tests](/pages/obtaining-a-drivers-license.md#drivers-license-tests)
1. [Translation of your current drivers license](/pages/obtaining-a-drivers-license.md#translation-of-your-current-drivers-license)
1. [Prior to submitting your application at the Bürgeramt](/pages/obtaining-a-drivers-license.md#prior-to-submitting-your-application-at-the-bürgeramt)
1. [Bürgeramt application notes](/pages/obtaining-a-drivers-license.md#bürgeramt-application-notes)
1. [Approximate costs](/pages/obtaining-a-drivers-license.md#approximate-costs)
1. [Resources](/pages/obtaining-a-drivers-license.md#resources)
1. [Social Networks](/pages/social-networks.md#social-networks)
89 changes: 89 additions & 0 deletions en/pages/obtaining-a-drivers-license.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Obtaining a drivers license

Like most official processes in Germany, obtaining a drivers license takes time and patience. There are
many steps involved and the process can be affected by a number of factors:
- Do you already have a drivers license?
- In which country (and possibly, which state) was your license issued?
- Is your previous drivers license still valid?

## Drivers license tests

There are two tests you will have to take (depending on your current drivers license status/country/state):
- Theorie (i.e. written test)
- Practical (i.e. driving test)

The theorie test requires that you learn 1000 questions. 30 questions will be randomly selected for the test. There are 2-5 points associated with each question, depending on the importance of
the question. When you miss a question, the points associated with the question are tallied. **To pass the test, you must miss 10 points or less.**

Here is a [sample driving test](http://osterberger.org/test.html). It's an old paper test. You will be taking a digital test. The questions shown on the paper test are similar to the questions you will face
on the digital test.

When you sign up for a driving school (Fahrschule), you will almost certainly be given access to a smartphone app that will allow you to study the required 1000 questions. The questions will
appear identically (or near-identically) to the way they will appear on the theorie test. There may be minor differences depending on the app you are using to study.

The theorie questions are updated every three months so it's best to study fast so you don't have to learn new questions.

## Translation of your current drivers license
Depending on where your current drivers license was issued, you may have to get it translated to German.

| Location | Approx. Cost | Waiting Period | Other Information
| ------------- |------------- |------------- |------------- |
| [ADAC](https://www.adac.de/adac_vor_ort/berlin_brandenburg/verkehr_und_technik/fuehrerscheinfragen/default.aspx?ComponentId=67578&SourcePageId=61898) | €35 | approx. 10 days **(ADAC will keep your drivers license during this time)** | If you pick up the license for someone else, you will need their passport

## Prior to submitting your application at the Bürgeramt:
You need to complete the following tasks before going to the Bürgeramt. Note that the links below are a mere sampling and do not constitute an endorsement.
It is recommended to research any company before signing up to determine their validity and English-speaking capabilities:

- **Translation** / See [above](#translation-of-your-current-drivers-license)
- **Eye test** / Any eye glasses store (e.g. [Fielmann](https://www.fielmann.de))
- **Photo** / Any photo store that takes passport photos
- **First-aid course (Erste Hilfe)**:
- [M-A-U-S](https://www.erstehilfe.de/)
- [Ersthelfer.tv](https://www.ersthelfer.tv/reservieren/reservation/)
- [Erste Hilfe Kurs](http://www.ersthelferkurs.de/)
- and others
- **Fahrschule** / You need to sign up with a driving school prior to going to the Bürgeramt
- [Fahrschule R.E.X.](http://www.rexdrive.de/)
- [Fahrschule Verkehr Human](http://www.verkehrhuman.de/)
- [Fit-For-Drive](http://www.fit-for-drive.cc/)
- [AS Driving Schools](http://www.as-fahrschule.de/)
- [Fahrschule Prenzlauer Berg](http://www.fahrschule-berlin-prenzlauer-berg.de/german%20driving%20license%20home.html)
- [Asphalt-Profis](http://www.asphalt-profis.de/)

## Bürgeramt application notes
- Make sure you specify "Manual Transmission" on the application if you want to drive/rent manual transmission cars. If you specify "Automatic Transmission", you will only be allowed to
drive/rent automatic transmission cars. You will also take your practical driving lessons/test using a manual transmission.


## Approximate costs

| Task | Approx. Cost |
| ------------- |------------- |
| Eye test | €7
| Photo for drivers license | €10
| First-aid course (Erste Hilfe) | €35
| Bürgeramt Application | €43
| Theorie Test | €23
| Driving Test | €92
| Fahrschule (Driving School) | Depends on school and what materials/classes you need

## Resources

### Berlin.de (German language)
- [Bürgeramt Locations](https://service.berlin.de/buergerberatung-aemter/)
- [Umstellung der Fahrerlaubnis / Change of Driving License](https://www.berlin.de/ba-mitte/service/dienstleistungen/service.89637.php/dienstleistung/124556/)
- [Fahrerlaubnis / Driving license](https://www.berlin.de/labo/mobilitaet/fahrerlaubnisse-personen-und-gueterbefoerderung/fahrerlaubnis-fuehrerschein/)
- [More about changing a drivers license](http://www.berlin.de/labo/mobilitaet/fahrerlaubnisse-personen-und-gueterbefoerderung/fahrerlaubnis-fuehrerschein/artikel.232531.php)
- [Sample Photograph (Downloadable PDF)](https://www.berlin.de/labo/_assets/kraftfahrzeugwesen/foto-mustertafel.pdf)
- [Bürgeramt location in Mitte](https://service.berlin.de/standort/123202/)

### German Way
- [Getting a German Drivers License](https://www.german-way.com/for-expats/living-in-germany/german-drivers-license-reciprocity/getting-a-german-drivers-license/)
- [German Drivers License Reciprocity (US/Canada)](https://www.german-way.com/for-expats/living-in-germany/german-drivers-license-reciprocity/)

### Wikipedia
- [German Road Signs](https://en.wikipedia.org/wiki/Road_signs_in_Germany)
- [European Drivers License Categories](https://en.wikipedia.org/wiki/European_driving_licence#Categories_valid_in_all_EEA_member_states)

### U.S. citizens only
- [Driving in Germany](https://de.usembassy.gov/u-s-citizen-services/driving-in-germany/)
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"homepage": "https://github.com/marlonbernardes/awesome-berlin#readme",
"scripts": {
"clean": "rimraf _book",
"contributors:update": "node tasks/generate-contributors.js",
"prepare": "gitbook install",
"build": "npm run prepare && gitbook build",
"start": "npm run prepare && gitbook serve",
Expand Down
68 changes: 68 additions & 0 deletions tasks/generate-contributors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const request = require('request');
const fs = require('fs');
const options = {
url: 'https://api.github.com/repos/marlonbernardes/awesome-berlin/stats/contributors',
headers: {
'User-Agent': 'request'
}
};

request(options, (error, response, body) => {
if (error || response.statusCode >= 400) {
handleHttpError(error, response, body);
}

const contributors = JSON.parse(body);
const filteredContributors = contributors
.sort(additionsComparator)
.filter(meetsMinimumContributionCriteria);

filteredContributors.forEach(c => console.log(`[${c.author.login}] ${computeContributorAdditions(c)}`))
const markdown = generateMarkdownTable(filteredContributors);
replaceContributorsBlock('./README.md', markdown);
});

function handleHttpError(error, response, body) {
throw `[${response && response.statusCode}] Error while performing http request: ${error}\n${body}`;
}

function meetsMinimumContributionCriteria(contributor, index) {
return computeContributorAdditions(contributor) > 5;
}

function computeContributorAdditions(contributor) {
return contributor.weeks.reduce((acc, w) => acc + w.a, 0);
}

function additionsComparator(c1, c2) {
return computeContributorAdditions(c2) - computeContributorAdditions(c1);
}

function generateMarkdownTable(contributors) {
const perRow = 5;
let currentRow;
let markdown = [];
for (let i = 0, j = contributors.length; i < j; i += perRow) {
currentRow = contributors.slice(i, i + perRow);
markdown.push(currentRow.map(c => (
` | [<img src="${c.author.avatar_url}" width="100px" /><br /><sub>${c.author.login}</sub>](https://github.com/${c.author.login})`
)).join(''));
}
return [
markdown[0],
'|' + range(perRow).map(() => '---').join('|') + '|',
...markdown.slice(1)
].join('\n');
}

function range(size) {
return Array.apply(null, Array(size));
}

function replaceContributorsBlock(filePath, content) {
const contents = fs.readFileSync(filePath, 'utf8');
const newContents = contents.replace(/(?:(<!-- contributors:start -->))([^]+?)(?:(<!-- contributors:end -->))/, '$1\n' + content + '\n$3');

fs.writeFileSync(filePath, newContents);
}

0 comments on commit af98b91

Please sign in to comment.