Skip to content

Commit 5e00a09

Browse files
committed
Revert "Deploy BohdanOrlov/iOS-Developer-Roadmap to github.com/BohdanOrlov/iOS-Developer-Roadmap.git:master"
This reverts commit 52a47c8.
1 parent 52a47c8 commit 5e00a09

File tree

104 files changed

+4495
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+4495
-0
lines changed

.gitattributes

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
RoadmapProject/Script/plantuml.jar linguist-vendored
2+
RoadmapProject/cocoapods-rome/* linguist-vendored
3+
4+
RoadmapProject/Script/Generated/* linguist-generated

.gitignore

+213
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
#########################
2+
# .gitignore file for Xcode4 and Xcode5 Source projects
3+
#
4+
# Apple bugs, waiting for Apple to fix/respond:
5+
#
6+
# 15564624 - what does the xccheckout file in Xcode5 do? Where's the documentation?
7+
#
8+
# Version 2.6
9+
# For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
10+
#
11+
# 2015 updates:
12+
# - Fixed typo in "xccheckout" line - thanks to @lyck for pointing it out!
13+
# - Fixed the .idea optional ignore. Thanks to @hashier for pointing this out
14+
# - Finally added "xccheckout" to the ignore. Apple still refuses to answer support requests about this, but in practice it seems you should ignore it.
15+
# - minor tweaks from Jona and Coeur (slightly more precise xc* filtering/names)
16+
# 2014 updates:
17+
# - appended non-standard items DISABLED by default (uncomment if you use those tools)
18+
# - removed the edit that an SO.com moderator made without bothering to ask me
19+
# - researched CocoaPods .lock more carefully, thanks to Gokhan Celiker
20+
# 2013 updates:
21+
# - fixed the broken "save personal Schemes"
22+
# - added line-by-line explanations for EVERYTHING (some were missing)
23+
#
24+
# NB: if you are storing "built" products, this WILL NOT WORK,
25+
# and you should use a different .gitignore (or none at all)
26+
# This file is for SOURCE projects, where there are many extra
27+
# files that we want to exclude
28+
#
29+
#########################
30+
31+
#####
32+
# OS X temporary files that should never be committed
33+
#
34+
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
35+
36+
.DS_Store
37+
38+
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
39+
40+
.Trashes
41+
42+
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
43+
44+
*.swp
45+
46+
#
47+
# *.lock - this is used and abused by many editors for many different things.
48+
# For the main ones I use (e.g. Eclipse), it should be excluded
49+
# from source-control, but YMMV.
50+
# (lock files are usually local-only file-synchronization on the local FS that should NOT go in git)
51+
# c.f. the "OPTIONAL" section at bottom though, for tool-specific variations!
52+
#
53+
# In particular, if you're using CocoaPods, you'll want to comment-out this line:
54+
#*.lock
55+
56+
57+
#
58+
# profile - REMOVED temporarily (on double-checking, I can't find it in OS X docs?)
59+
#profile
60+
61+
62+
####
63+
# Xcode temporary files that should never be committed
64+
#
65+
# NB: NIB/XIB files still exist even on Storyboard projects, so we want this...
66+
67+
*~.nib
68+
69+
70+
####
71+
# Xcode build files -
72+
#
73+
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"
74+
75+
DerivedData/
76+
77+
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"
78+
79+
build/
80+
81+
82+
#####
83+
# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
84+
#
85+
# This is complicated:
86+
#
87+
# SOMETIMES you need to put this file in version control.
88+
# Apple designed it poorly - if you use "custom executables", they are
89+
# saved in this file.
90+
# 99% of projects do NOT use those, so they do NOT want to version control this file.
91+
# ..but if you're in the 1%, comment out the line "*.pbxuser"
92+
93+
# .pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html
94+
95+
*.pbxuser
96+
97+
# .mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
98+
99+
*.mode1v3
100+
101+
# .mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
102+
103+
*.mode2v3
104+
105+
# .perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file
106+
107+
*.perspectivev3
108+
109+
# NB: also, whitelist the default ones, some projects need to use these
110+
!default.pbxuser
111+
!default.mode1v3
112+
!default.mode2v3
113+
!default.perspectivev3
114+
115+
116+
####
117+
# Xcode 4 - semi-personal settings
118+
#
119+
# Apple Shared data that Apple put in the wrong folder
120+
# c.f. http://stackoverflow.com/a/19260712/153422
121+
# FROM ANSWER: Apple says "don't ignore it"
122+
# FROM COMMENTS: Apple is wrong; Apple code is too buggy to trust; there are no known negative side-effects to ignoring Apple's unofficial advice and instead doing the thing that actively fixes bugs in Xcode
123+
# Up to you, but ... current advice: ignore it.
124+
*.xccheckout
125+
126+
#
127+
#
128+
# OPTION 1: ---------------------------------
129+
# throw away ALL personal settings (including custom schemes!
130+
# - unless they are "shared")
131+
# As per build/ and DerivedData/, this ought to have a trailing slash
132+
#
133+
# NB: this is exclusive with OPTION 2 below
134+
xcuserdata/
135+
136+
# OPTION 2: ---------------------------------
137+
# get rid of ALL personal settings, but KEEP SOME OF THEM
138+
# - NB: you must manually uncomment the bits you want to keep
139+
#
140+
# NB: this *requires* git v1.8.2 or above; you may need to upgrade to latest OS X,
141+
# or manually install git over the top of the OS X version
142+
# NB: this is exclusive with OPTION 1 above
143+
#
144+
#xcuserdata/**/*
145+
146+
# (requires option 2 above): Personal Schemes
147+
#
148+
#!xcuserdata/**/xcschemes/*
149+
150+
####
151+
# XCode 4 workspaces - more detailed
152+
#
153+
# Workspaces are important! They are a core feature of Xcode - don't exclude them :)
154+
#
155+
# Workspace layout is quite spammy. For reference:
156+
#
157+
# /(root)/
158+
# /(project-name).xcodeproj/
159+
# project.pbxproj
160+
# /project.xcworkspace/
161+
# contents.xcworkspacedata
162+
# /xcuserdata/
163+
# /(your name)/xcuserdatad/
164+
# UserInterfaceState.xcuserstate
165+
# /xcshareddata/
166+
# /xcschemes/
167+
# (shared scheme name).xcscheme
168+
# /xcuserdata/
169+
# /(your name)/xcuserdatad/
170+
# (private scheme).xcscheme
171+
# xcschememanagement.plist
172+
#
173+
#
174+
175+
####
176+
# Xcode 4 - Deprecated classes
177+
#
178+
# Allegedly, if you manually "deprecate" your classes, they get moved here.
179+
#
180+
# We're using source-control, so this is a "feature" that we do not want!
181+
182+
*.moved-aside
183+
184+
####
185+
# OPTIONAL: Some well-known tools that people use side-by-side with Xcode / iOS development
186+
#
187+
# NB: I'd rather not include these here, but gitignore's design is weak and doesn't allow
188+
# modular gitignore: you have to put EVERYTHING in one file.
189+
#
190+
# COCOAPODS:
191+
#
192+
# c.f. http://guides.cocoapods.org/using/using-cocoapods.html#what-is-a-podfilelock
193+
# c.f. http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
194+
#
195+
#!Podfile.lock
196+
#
197+
# RUBY:
198+
#
199+
# c.f. http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
200+
#
201+
#!Gemfile.lock
202+
#
203+
# IDEA:
204+
#
205+
# c.f. https://www.jetbrains.com/objc/help/managing-projects-under-version-control.html?search=workspace.xml
206+
#
207+
#.idea/workspace.xml
208+
#
209+
# TEXTMATE:
210+
#
211+
# -- UNVERIFIED: c.f. http://stackoverflow.com/a/50283/153422
212+
#
213+
#tm_build_errors

.travis.yml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
language: swift
2+
osx_image: xcode9.2
3+
4+
script: ./generateAll.sh
5+
6+
deploy:
7+
provider: pages
8+
skip-cleanup: true
9+
github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure
10+
keep-history: true
11+
on:
12+
branch: master
13+
target-branch: master
14+
local-dir: RoadmapProject/Script/Generated

HowTo/CONTENTSCREENSHOT.png

102 KB
Loading

HowTo/HOWTOCHECKBOX.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# How to tick a checkbox
2+
3+
Markdown checkboxes are readonly, this meas if you want to tick a checkbox you have to make own copy of the repository (fork it) and then edit a particular checkbox.
4+
5+
# Prerequisites
6+
You must undesrstand basics of Git to be able to follow the instruction below.
7+
8+
# Instruction
9+
10+
1. Fork the repository on Github (once)
11+
1. Checkout your repository (once)
12+
1. Change checkbox from `[ ]` to `[x]` next to the topic you've finished.
13+
- [ ] before
14+
- [x] after
15+
1. Commit and push changes.
16+
1. Periodicaly pull changes from original repository to get new topics and materials.

HowTo/HOWTOPR.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
## How to add new topics or materials
2+
3+
#### Steps
4+
5+
![Content screenshot](CONTENTSCREENSHOT.png)
6+
7+
1. Go to `RoadmapProject/Script`
8+
1. Open `Content.yml`, add topics or links to materials
9+
1. Run `main.swift`
10+
1. Commit and push all generated files and changes
11+
1. Submit a pull request
12+
13+
Note. I've used Sublime text for editing YAML.
14+
15+
#### Prerequisites
16+
17+
1. Git
18+
1. Latest Swift/Xcode
19+
1. Fork of the repository
20+
1. Prepare PlantUML:
21+
1. Install [JDK](http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html)
22+
1. Install Homebrew:
23+
- `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
24+
1. Install GraphViz:
25+
- `brew install libtool`
26+
- `brew link libtool`
27+
- `brew install graphviz`
28+
- `brew link --overwrite graphviz`
29+
1. Go to `Roadmap Project/Script/`
30+
1. Run `java -jar plantuml.jar -testdot` to check if installed correctly.
31+
32+
#### How to debug script
33+
Use `Roadmap Project/Roadmap.xcodeproj` to run and debug script.
34+
35+
Xcode runs and debugs an executable binary, thus generated output will be put next to the binary.
36+
37+
Always run script via terminal before submitting a PR.

README.md

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
![Header image](headerImage.png)
2+
# 🚀 iOS Developer Roadmap
3+
Roadmap to becoming an iOS developer in 2018
4+
5+
## ☝️ What is it?
6+
This is a tree-like compilation of topics highly relevant to iOS development. Both image and text version are generated from human readable content file.
7+
8+
## ✌️ Who is it for?
9+
The roadmap will be helpul for:
10+
11+
- anyone who wants to become an iOS developer
12+
- iOS developers who desire to become experts
13+
- iOS developers who are preparing for interviews and need to brush up knowledge
14+
- iOS developers who need to compile own set of interview questions
15+
16+
17+
## 👌 Why these topics?
18+
See [this article](https://medium.com/@borlov/c9a24f413457) explainig selection of topics.
19+
20+
## 👨‍🎓 How to use this roadmap
21+
1. Find a topic you want to study.
22+
2. Go to corresponding resources section.
23+
3. Study untill you can confidently explain the topic to your cat.
24+
4. (Optional) tick the checkbox next to the topic. [How to tick a checkbox](HowTo/HOWTOCHECKBOX.md).
25+
4. Go to step 1.
26+
27+
`Essential topics` are topics which significantly contribute to understanding of iOS development. Consequently, it is a good idea to study them first as they are often encountered on interviews.
28+
29+
Start from `Getting started` section if you haven't done any iOS development yet.
30+
31+
## 🗺 Image version
32+
Roadmap of essential topics. Roadmap for all topics is [here.](RoadmapProject/Script/Generated/ROADMAP.png)
33+
![Header image](RoadmapProject/Script/Generated/ESSENTIALROADMAP.png)
34+
35+
## 📝 Text version
36+
[Text version with materials to study.](RoadmapProject/Script/Generated/ROADMAP.md)
37+
38+
## 🤝 How to contribute
39+
40+
- add additional topics
41+
- add missing study materials
42+
- throw ideas at me on Twitter [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/kamranahmedse.svg?style=social&label=@bohdan_orlov)](https://twitter.com/bohdan_orlov)
43+
44+
[Adding new topics or materials can't be easier.](HowTo/HOWTOPR.md)
45+
46+
47+
## ☑️ TODO
48+
- [x] content file with topics and materials
49+
- [x] ability to generate README.md from the content file
50+
- [x] ability to generate Roadmap tree image from the content file
51+
- [ ] make generation script less miserable:
52+
- [x] make it readable 🤦
53+
- [ ] output Yaml format violation errors
54+
- [ ] handle errors of parsing Yaml into Topics and Resources
55+
- [ ] handle file read/write errors
56+
- [ ] handle image generation errors
57+
- [ ] run the script automaticaly on PRs if the content file is changed
58+
## License
59+
60+
[![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/)

0 commit comments

Comments
 (0)