-
Notifications
You must be signed in to change notification settings - Fork 121
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from marlonbernardes/master
Merge upstream
- Loading branch information
Showing
5 changed files
with
178 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
|