full_time 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.rspec +3 -0
- data/Gemfile +4 -0
- data/README.md +318 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/fulltime +11 -0
- data/bin/rake +17 -0
- data/bin/rspec +17 -0
- data/bin/setup +7 -0
- data/example/cv.html +472 -0
- data/example/cv.rb +280 -0
- data/example/simple-grid.css +250 -0
- data/example/template.html.erb +90 -0
- data/full_time.gemspec +29 -0
- data/lib/full_time/certification.rb +27 -0
- data/lib/full_time/company.rb +25 -0
- data/lib/full_time/course.rb +7 -0
- data/lib/full_time/dsl.rb +15 -0
- data/lib/full_time/education.rb +15 -0
- data/lib/full_time/employment.rb +19 -0
- data/lib/full_time/list.rb +7 -0
- data/lib/full_time/profile.rb +55 -0
- data/lib/full_time/project.rb +30 -0
- data/lib/full_time/university.rb +9 -0
- data/lib/full_time/version.rb +3 -0
- data/lib/full_time.rb +19 -0
- metadata +131 -0
data/example/cv.rb
ADDED
@@ -0,0 +1,280 @@
|
|
1
|
+
require 'full_time'
|
2
|
+
|
3
|
+
@profile = FullTime.profile do
|
4
|
+
name 'Andrew Babichev'
|
5
|
+
email 'andrew.babichev@gmail.com'
|
6
|
+
homepage 'http://tensho.github.io'
|
7
|
+
github 'https://github.com/Tensho'
|
8
|
+
twitter 'https://twitter.com/Tensh0'
|
9
|
+
linkedin 'https://www.linkedin.com/in/andrewbabichev'
|
10
|
+
goodreads 'https://goodreads.com/tensho'
|
11
|
+
location 'Kiev, Ukraine, 08200 (open to relocate)'
|
12
|
+
extra 'Visa: Sponsorship required'
|
13
|
+
|
14
|
+
skills do
|
15
|
+
• 'Languages: Ruby, SQL, JavaScript/CoffeeScript, HTML/Slim/Haml, CSS/SASS, Elixir'
|
16
|
+
• 'Frameworks: Rails'
|
17
|
+
• 'Databases: MySQL, Postgres, DynamoDB, MongoDB, Neo4j'
|
18
|
+
• 'Queues/Message Brokers: Redis, RabbitMQ'
|
19
|
+
• 'Testing: RSpec, Capybara, FactoryBot, Jasmine'
|
20
|
+
• 'Web Standards: HTTP, JSON, XML/DTD, REST, JSON API, SOAP/WSDL, AMQP, DNS'
|
21
|
+
• 'Email Standards: SMTP, IMAP'
|
22
|
+
• 'Networking: TCP/IP'
|
23
|
+
• 'Web Servers: Nginx'
|
24
|
+
• 'IaaS: AWS (EC2, EBS, ASG, ECS, ELB, Route53, RDS, S3, VPC, IAM, CloudFront, CloudWatch, CloudTrail, DynamoDB, ElastiCache, CloudFormation, Lambda, SNS)'
|
25
|
+
• 'PaaS: Heroku'
|
26
|
+
• 'Configuration Management: Puppet, Packer'
|
27
|
+
• 'Infrastructure Management: Terraform'
|
28
|
+
• 'Task Management: Trello, JIRA, GitHub Projects'
|
29
|
+
• 'Version Source Control: Git'
|
30
|
+
• 'Collaboration: GitHub, Slack'
|
31
|
+
• 'Continuous Integration: CircleCI, TravisCI'
|
32
|
+
• 'OS/Execution Environment: MacOS, Linux, Docker'
|
33
|
+
• 'CMS: Refinery'
|
34
|
+
• 'IDE/Editor: RubyMine, Sublime Text, Vim'
|
35
|
+
• 'Methodology: Kanban, Scrum'
|
36
|
+
end
|
37
|
+
|
38
|
+
employment do
|
39
|
+
company 'Intetics' do
|
40
|
+
homepage 'http://intetics.com'
|
41
|
+
|
42
|
+
project 'Resolver', start_date: 'January 2016', end_date: 'Current' do
|
43
|
+
homepage 'https://resolver.co.uk'
|
44
|
+
description 'Free online tool for complaints and claims'
|
45
|
+
title 'Senior Software Engineer & Team Lead'
|
46
|
+
|
47
|
+
technologies do
|
48
|
+
• 'Primary Languages: Ruby, SQL'
|
49
|
+
• 'Secondary Languages: CoffeeScript/JavaScript, Slim/HAML/HTML5'
|
50
|
+
• 'Web Frontend Frameworks: AngularJS'
|
51
|
+
• 'Web Backend Frameworks: Rails, Sinatra, Grape, Rocket Pants'
|
52
|
+
• 'Background Processors: Sidekiq, Sneakers'
|
53
|
+
• 'Databases: MySQL, DynamoDB, MongoDB, Postgres, Redis, Memcached, Neo4j, AuroraDB'
|
54
|
+
• 'Queues/Message Brokers: Redis, RabbitMQ'
|
55
|
+
• 'AWS: EC2, EBS, ASG, ECS, ELB, Route53, RDS, S3, VPC, IAM, CloudFront, CloudWatch, CloudTrail, DynamoDB, ElastiCache, CloudFormation, Lambda, SNS'
|
56
|
+
• 'Configuration Management: Puppet, Packer'
|
57
|
+
• 'Infrastructure Management: Terraform'
|
58
|
+
• 'Web Servers: Nginx'
|
59
|
+
• 'OS/Execution Environment: Ubuntu, Alpine, MacOS, Docker'
|
60
|
+
• 'CMS: Refinery'
|
61
|
+
end
|
62
|
+
|
63
|
+
achievements do
|
64
|
+
• 'Setup test framework and covered with specs existing and new features'
|
65
|
+
• 'Deployment scripts support and enhancement'
|
66
|
+
• 'Setup backup model for MySQL to AWS S3 and Rackspace Cloud Files'
|
67
|
+
• 'Developed credit card number concealer'
|
68
|
+
• "Contributed filter parameters config fixes to 'rails' and 'dookeeper' gems in the sake of application"
|
69
|
+
• 'Setup and integrated web application with IBM Bluemix cognitive services AlchemyAPI, Watson and Tone Analyzer'
|
70
|
+
• 'Developed and implemented HTML email sanitizers (loofah scrubbers)'
|
71
|
+
• 'Consolidated MailChimp/Mandrill templates workflow, introduced dynamic content'
|
72
|
+
• 'Setup CDN (AWS CloudFront distributions)'
|
73
|
+
• 'Setup CI/CD (GitHub, CircleCI, Slack)'
|
74
|
+
• 'Integrated web application with secure (TLS) email server'
|
75
|
+
• 'Internationalized and localized web application'
|
76
|
+
• 'Adjusted Puppet manifests and node definitions for the existing and new services in the sake of the better reliability of infrastructure configuration'
|
77
|
+
• 'Adjusted custom Ruby scripts for AWS EC2 instances provisioning'
|
78
|
+
• "Contributed typecasted attributes to 'mongoid' gem in the sake of the application"
|
79
|
+
• 'Handled emoticons in MySQL'
|
80
|
+
• 'Introduced asynchronous event sourcing with RabbitMQ'
|
81
|
+
• 'Developed mailer microservice'
|
82
|
+
• 'Developed companies administration application'
|
83
|
+
• "Numerous contributions to 'mandrill_dm', 'capistrano', 'capistrano-sidekiq' and 'capistrano-sneakers' gems in the sake of the application"
|
84
|
+
• "Contributed URI query parameters parsing to 'amq-protocol', 'bunny', 'amqp' gems in the sake of the application"
|
85
|
+
• "Contributed unparsed mail field value to 'mail' gem in the sake of the application"
|
86
|
+
• 'Replaced Rails protected attributes with strong parameters'
|
87
|
+
• 'Introduced Docker and AWS ECS'
|
88
|
+
• 'Refactored and extended inbound emails receiving system to the multiple regions'
|
89
|
+
• 'Adopted Packer + Terraform for AutoScaling purposes and Blue/Green deployments in the multi-region environment'
|
90
|
+
• 'Interviewed and mentored other developers in the highly distributed team'
|
91
|
+
• 'Introduced new developers to the application'
|
92
|
+
• 'Spread out Agile principles and Kanban methodology to the team'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
company 'GlobalLogic' do
|
98
|
+
homepage 'http://globallogic.com'
|
99
|
+
|
100
|
+
project 'Advanced creative platform for online advertising', start_date: 'November 2014', end_date: 'January 2016' do
|
101
|
+
description 'Advanced creative platform for online advertising, which allows you to automate the processes related to creative services. It supports both platforms – desktop and mobile.'
|
102
|
+
title 'Senior Software Engineer'
|
103
|
+
|
104
|
+
technologies do
|
105
|
+
• 'Primary Languages: Ruby, SQL'
|
106
|
+
• 'Secondary Languages: CoffeeScript/JavaScript, Slim/HAML/HTML5, SASS/CSS'
|
107
|
+
• 'Web Backend Frameworks: Rails, Sinatra, Grape, Rocket Pants'
|
108
|
+
• 'Databases: MySQL, Postgres'
|
109
|
+
• 'AWS: (EC2, EBS, RDS, S3, CloudFront, IAM, CloudFormation, SES)'
|
110
|
+
• 'Configuration Management: Ansible'
|
111
|
+
• 'OS/Execution Environment: Docker'
|
112
|
+
end
|
113
|
+
|
114
|
+
achievements do
|
115
|
+
• 'Setup test framework and covered with specs existing and new features'
|
116
|
+
• 'Performed development operations – infrastructure setup, configuration and application deployment'
|
117
|
+
• 'Developed bulk import/export of the records from/to excel spreadsheet'
|
118
|
+
• 'Interviewed and mentored other developers'
|
119
|
+
• 'Introduced new developers to the application'
|
120
|
+
• "Contributed to 'cocoon' gem in the sake of application"
|
121
|
+
• 'Performed major refactoring to advertisement showing mechanics'
|
122
|
+
• 'Developed application multitenancy'
|
123
|
+
• 'Migrated from MySQL to Postgres'
|
124
|
+
• 'Researched solutions for the cross-browser issues'
|
125
|
+
• 'Refactored event tracking system for the existing advertisements'
|
126
|
+
• 'Introduced video player to the advertisements'
|
127
|
+
• 'Delivered first and launched subsequent production releases intime'
|
128
|
+
• 'Spread out Agile principles and SCRUM methodology to the team'
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
company 'DataArt' do
|
134
|
+
homepage 'http://dataart.com'
|
135
|
+
|
136
|
+
project 'Online advertising aggregator', start_date: 'July 2014', end_date: 'November 2014' do
|
137
|
+
description 'Online advertising aggregator from different services, particularly Google Adwords and Bing Ads, which provides data to the end user in the target scope. The application was divided into several parts: Rails application for the user management purposes, Ember application (frontend) for the users with dashboard/charts/statistics, Rails API application (backend) to support frontend, MapReduce cluster for the data import and analysis from advertising services.'
|
138
|
+
title 'Software Engineer'
|
139
|
+
|
140
|
+
technologies do
|
141
|
+
• 'Ruby'
|
142
|
+
• 'Rails'
|
143
|
+
• 'Postgres'
|
144
|
+
• 'MongoDB'
|
145
|
+
• 'AWS (EMR, EC2, RDS, S3)'
|
146
|
+
• 'Google Analytics'
|
147
|
+
• 'Google DFP'
|
148
|
+
• 'Bing Ads'
|
149
|
+
• 'JSON'
|
150
|
+
end
|
151
|
+
|
152
|
+
achievements do
|
153
|
+
• 'Setup test framework and covered with specs existing and new features'
|
154
|
+
• 'Figured out detailed requirements'
|
155
|
+
• 'Developed Hadoop MapReduce streaming steps'
|
156
|
+
• 'Enhanced API according to frequently changing business logic'
|
157
|
+
• 'Implemented 3rd party integrations with Google Analytics & DFP, Bing Ads'
|
158
|
+
• 'Delivered the first production releases intime'
|
159
|
+
• 'Adopted Agile principles and Kanban methodology'
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
company 'Anadea Inc' do
|
165
|
+
homepage 'http://anadea.info'
|
166
|
+
|
167
|
+
project 'NowShop', start_date: 'October 2012', end_date: 'July 2014' do
|
168
|
+
homepage 'http://nowshop.com'
|
169
|
+
description 'Online e-commerce platform, that provides integrated web-shops for the news sites. The platform includes over 1.000.000 products in all categories, full payment solution as well as 3rd party delivery solution.'
|
170
|
+
title 'Software Engineer'
|
171
|
+
|
172
|
+
technologies do
|
173
|
+
• 'Ruby'
|
174
|
+
• 'Rails'
|
175
|
+
• 'Postgres'
|
176
|
+
• 'XML'
|
177
|
+
• 'XML Scheme'
|
178
|
+
• 'HTML'
|
179
|
+
end
|
180
|
+
|
181
|
+
achievements do
|
182
|
+
• 'Developed mechanism for obtaining XML data feeds from the retailers in different countries (Denmark, Norway, Sweden, United Kingdom), validation, parsing and multithread saving to the database'
|
183
|
+
• 'Implemented XML import optimizations to speed up the process x2 times like digesting, queries reduction, ActiveRecord refusal in favor of raw SQL'
|
184
|
+
• 'Supported the time task scheduler for the periodic tasks with logging and email notification'
|
185
|
+
• 'Developed HTML scrappers for the retailer sites to grab products info'
|
186
|
+
• 'Covered with specs existing and new features in TDD style'
|
187
|
+
• 'Maintained shop UI uptodate the backend side'
|
188
|
+
• 'Adopted Agile principles and XP methodology'
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
company 'Donetskoblgaz PLC' do
|
194
|
+
# description 'Donetskoblgaz is the regional gas transfer monopolist'
|
195
|
+
|
196
|
+
project 'Internal accounting system', start_date: 'July 2008', end_date: 'October 2012' do
|
197
|
+
homepage ''
|
198
|
+
description ''
|
199
|
+
title 'Software Engineer'
|
200
|
+
|
201
|
+
technologies do
|
202
|
+
• 'Perl'
|
203
|
+
• 'MS SQL Server'
|
204
|
+
• 'Oracle'
|
205
|
+
• 'XML'
|
206
|
+
• 'DTD'
|
207
|
+
• 'DBF'
|
208
|
+
• 'HTML'
|
209
|
+
• 'Excel'
|
210
|
+
end
|
211
|
+
|
212
|
+
achievements do
|
213
|
+
• 'Figured out detailed requirements, evaluated system program needs, wrote and maintained program code to meet system requirements, system designs and technical specifications'
|
214
|
+
• 'Maintained inner accounting software package (client-server model)'
|
215
|
+
• 'Developed web-services to provide the customers ability to view the balance, edit counter values, make payments'
|
216
|
+
• 'Improved software for the data exchange between organization and banks'
|
217
|
+
• 'Administrated ERP Parus 8.2 database, wrote technical and user documentation, enterprise standards'
|
218
|
+
• 'Assumed a leadership role in cooperative work, inspired and motivated other employees'
|
219
|
+
• 'Adopted Waterfall methodology'
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
education do
|
226
|
+
university 'Donetsk National Technical University', start_date: '2003', end_date: '2008' do
|
227
|
+
title 'Specialist System Programming'
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
certification do
|
232
|
+
course do
|
233
|
+
title 'AWS Certified Solutions Architect - Associate (SAA)'
|
234
|
+
company 'Amazon Web Services'
|
235
|
+
homepage 'https://www.certmetrics.com/amazon/public/badge.aspx?i=1&t=c&d=2018-04-02&ci=AWS00435488'
|
236
|
+
end
|
237
|
+
|
238
|
+
course do
|
239
|
+
title 'AWS Certified Developer - Associate (DVA)'
|
240
|
+
company 'Amazon Web Services'
|
241
|
+
homepage 'https://www.certmetrics.com/amazon/public/badge.aspx?i=2&t=c&d=2018-03-01&ci=AWS00435488'
|
242
|
+
end
|
243
|
+
|
244
|
+
course do
|
245
|
+
title 'Web Application Architectures'
|
246
|
+
company 'Coursera'
|
247
|
+
homepage 'https://www.coursera.org/course/webapplications'
|
248
|
+
end
|
249
|
+
|
250
|
+
course do
|
251
|
+
title 'Algorithms: Design and Analysis, Part 1'
|
252
|
+
company 'Coursera'
|
253
|
+
homepage 'https://www.coursera.org/course/algo'
|
254
|
+
end
|
255
|
+
|
256
|
+
course do
|
257
|
+
title 'Gamification'
|
258
|
+
company 'Coursera'
|
259
|
+
homepage 'https://www.coursera.org/course/Gamification'
|
260
|
+
end
|
261
|
+
|
262
|
+
course do
|
263
|
+
title 'Functional Programming Principles in Scala'
|
264
|
+
company 'Coursera'
|
265
|
+
homepage 'https://www.coursera.org/course/progfun'
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
interests do
|
270
|
+
• 'Software Architecture'
|
271
|
+
• 'Web Technologies'
|
272
|
+
• 'Reading'
|
273
|
+
• 'Arduino'
|
274
|
+
• 'Cooking'
|
275
|
+
• 'Tea'
|
276
|
+
• 'Chess'
|
277
|
+
• 'Go'
|
278
|
+
• 'Japan'
|
279
|
+
end
|
280
|
+
end
|
@@ -0,0 +1,250 @@
|
|
1
|
+
/**
|
2
|
+
*** SIMPLE GRID
|
3
|
+
*** (C) ZACH COLE 2016
|
4
|
+
**/
|
5
|
+
|
6
|
+
@import url(https://fonts.googleapis.com/css?family=Lato:400,300,300italic,400italic,700,700italic);
|
7
|
+
|
8
|
+
/* UNIVERSAL */
|
9
|
+
|
10
|
+
html,
|
11
|
+
body {
|
12
|
+
height: 100%;
|
13
|
+
width: 100%;
|
14
|
+
margin: 0;
|
15
|
+
padding: 0;
|
16
|
+
left: 0;
|
17
|
+
top: 0;
|
18
|
+
font-size: 100%;
|
19
|
+
}
|
20
|
+
|
21
|
+
/* ROOT FONT STYLES */
|
22
|
+
|
23
|
+
* {
|
24
|
+
font-family: 'Lato', Helvetica, sans-serif;
|
25
|
+
color: #333447;
|
26
|
+
line-height: 1.5;
|
27
|
+
}
|
28
|
+
|
29
|
+
/* TYPOGRAPHY */
|
30
|
+
|
31
|
+
h1 {
|
32
|
+
font-size: 2.5rem;
|
33
|
+
}
|
34
|
+
|
35
|
+
h2 {
|
36
|
+
font-size: 2rem;
|
37
|
+
}
|
38
|
+
|
39
|
+
h3 {
|
40
|
+
font-size: 1.375rem;
|
41
|
+
}
|
42
|
+
|
43
|
+
h4 {
|
44
|
+
font-size: 1.125rem;
|
45
|
+
}
|
46
|
+
|
47
|
+
h5 {
|
48
|
+
font-size: 1rem;
|
49
|
+
}
|
50
|
+
|
51
|
+
h6 {
|
52
|
+
font-size: 0.875rem;
|
53
|
+
}
|
54
|
+
|
55
|
+
p {
|
56
|
+
font-size: 1.125rem;
|
57
|
+
font-weight: 200;
|
58
|
+
line-height: 1.8;
|
59
|
+
}
|
60
|
+
|
61
|
+
.font-light {
|
62
|
+
font-weight: 300;
|
63
|
+
}
|
64
|
+
|
65
|
+
.font-regular {
|
66
|
+
font-weight: 400;
|
67
|
+
}
|
68
|
+
|
69
|
+
.font-heavy {
|
70
|
+
font-weight: 700;
|
71
|
+
}
|
72
|
+
|
73
|
+
/* POSITIONING */
|
74
|
+
|
75
|
+
.left {
|
76
|
+
text-align: left;
|
77
|
+
}
|
78
|
+
|
79
|
+
.right {
|
80
|
+
text-align: right;
|
81
|
+
}
|
82
|
+
|
83
|
+
.center {
|
84
|
+
text-align: center;
|
85
|
+
margin-left: auto;
|
86
|
+
margin-right: auto;
|
87
|
+
}
|
88
|
+
|
89
|
+
.justify {
|
90
|
+
text-align: justify;
|
91
|
+
}
|
92
|
+
|
93
|
+
/* ==== GRID SYSTEM ==== */
|
94
|
+
|
95
|
+
.container {
|
96
|
+
width: 90%;
|
97
|
+
margin-left: auto;
|
98
|
+
margin-right: auto;
|
99
|
+
}
|
100
|
+
|
101
|
+
.row {
|
102
|
+
position: relative;
|
103
|
+
width: 100%;
|
104
|
+
}
|
105
|
+
|
106
|
+
.row [class^="col"] {
|
107
|
+
float: left;
|
108
|
+
margin: 0.5rem 2%;
|
109
|
+
min-height: 0.125rem;
|
110
|
+
}
|
111
|
+
|
112
|
+
.col-1,
|
113
|
+
.col-2,
|
114
|
+
.col-3,
|
115
|
+
.col-4,
|
116
|
+
.col-5,
|
117
|
+
.col-6,
|
118
|
+
.col-7,
|
119
|
+
.col-8,
|
120
|
+
.col-9,
|
121
|
+
.col-10,
|
122
|
+
.col-11,
|
123
|
+
.col-12 {
|
124
|
+
width: 96%;
|
125
|
+
}
|
126
|
+
|
127
|
+
.col-1-sm {
|
128
|
+
width: 4.33%;
|
129
|
+
}
|
130
|
+
|
131
|
+
.col-2-sm {
|
132
|
+
width: 12.66%;
|
133
|
+
}
|
134
|
+
|
135
|
+
.col-3-sm {
|
136
|
+
width: 21%;
|
137
|
+
}
|
138
|
+
|
139
|
+
.col-4-sm {
|
140
|
+
width: 29.33%;
|
141
|
+
}
|
142
|
+
|
143
|
+
.col-5-sm {
|
144
|
+
width: 37.66%;
|
145
|
+
}
|
146
|
+
|
147
|
+
.col-6-sm {
|
148
|
+
width: 46%;
|
149
|
+
}
|
150
|
+
|
151
|
+
.col-7-sm {
|
152
|
+
width: 54.33%;
|
153
|
+
}
|
154
|
+
|
155
|
+
.col-8-sm {
|
156
|
+
width: 62.66%;
|
157
|
+
}
|
158
|
+
|
159
|
+
.col-9-sm {
|
160
|
+
width: 71%;
|
161
|
+
}
|
162
|
+
|
163
|
+
.col-10-sm {
|
164
|
+
width: 79.33%;
|
165
|
+
}
|
166
|
+
|
167
|
+
.col-11-sm {
|
168
|
+
width: 87.66%;
|
169
|
+
}
|
170
|
+
|
171
|
+
.col-12-sm {
|
172
|
+
width: 96%;
|
173
|
+
}
|
174
|
+
|
175
|
+
.row::after {
|
176
|
+
content: "";
|
177
|
+
display: table;
|
178
|
+
clear: both;
|
179
|
+
}
|
180
|
+
|
181
|
+
.hidden-sm {
|
182
|
+
display: none;
|
183
|
+
}
|
184
|
+
|
185
|
+
@media only screen and (min-width: 33.75em) { /* 540px */
|
186
|
+
.container {
|
187
|
+
width: 80%;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
|
191
|
+
@media only screen and (min-width: 45em) { /* 720px */
|
192
|
+
.col-1 {
|
193
|
+
width: 4.33%;
|
194
|
+
}
|
195
|
+
|
196
|
+
.col-2 {
|
197
|
+
width: 12.66%;
|
198
|
+
}
|
199
|
+
|
200
|
+
.col-3 {
|
201
|
+
width: 21%;
|
202
|
+
}
|
203
|
+
|
204
|
+
.col-4 {
|
205
|
+
width: 29.33%;
|
206
|
+
}
|
207
|
+
|
208
|
+
.col-5 {
|
209
|
+
width: 37.66%;
|
210
|
+
}
|
211
|
+
|
212
|
+
.col-6 {
|
213
|
+
width: 46%;
|
214
|
+
}
|
215
|
+
|
216
|
+
.col-7 {
|
217
|
+
width: 54.33%;
|
218
|
+
}
|
219
|
+
|
220
|
+
.col-8 {
|
221
|
+
width: 62.66%;
|
222
|
+
}
|
223
|
+
|
224
|
+
.col-9 {
|
225
|
+
width: 71%;
|
226
|
+
}
|
227
|
+
|
228
|
+
.col-10 {
|
229
|
+
width: 79.33%;
|
230
|
+
}
|
231
|
+
|
232
|
+
.col-11 {
|
233
|
+
width: 87.66%;
|
234
|
+
}
|
235
|
+
|
236
|
+
.col-12 {
|
237
|
+
width: 96%;
|
238
|
+
}
|
239
|
+
|
240
|
+
.hidden-sm {
|
241
|
+
display: block;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
@media only screen and (min-width: 60em) { /* 960px */
|
246
|
+
.container {
|
247
|
+
width: 75%;
|
248
|
+
max-width: 60rem;
|
249
|
+
}
|
250
|
+
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Andrew Babichev CV</title>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<link rel="stylesheet" href="simple-grid.css">
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div class="container">
|
9
|
+
<header class="row">
|
10
|
+
<div class="col-4">
|
11
|
+
<h2><%= name %></h2>
|
12
|
+
</div>
|
13
|
+
<div class="col-8">
|
14
|
+
<div>Email: <%= email %></div>
|
15
|
+
<div>Homepage: <a href="<%= homepage %>"><%= homepage %></a></div>
|
16
|
+
<div>GitHub: <a href="<%= github %>"><%= github %></a></div>
|
17
|
+
<div>LinkedIn: <a href="<%= linkedin %>"><%= linkedin %></a></div>
|
18
|
+
<div>Twitter: <a href="<%= twitter %>"><%= twitter %></a></div>
|
19
|
+
<div>GoodReads: <a href="<%= goodreads %>"><%= goodreads %></a></div>
|
20
|
+
<div>Location: <%= location %></div>
|
21
|
+
<div><%= extra %></div>
|
22
|
+
</div>
|
23
|
+
</header>
|
24
|
+
|
25
|
+
<section class="row">
|
26
|
+
<div class="col-12">
|
27
|
+
<h2>Skills</h2>
|
28
|
+
<ul>
|
29
|
+
<% skills.each do |skill| %>
|
30
|
+
<li><%= skill %></li>
|
31
|
+
<% end %>
|
32
|
+
</ul>
|
33
|
+
</div>
|
34
|
+
<div class="col-12">
|
35
|
+
<h2>Employment</h2>
|
36
|
+
<% employment.companies.each do |company| %>
|
37
|
+
<!-- companies should be presented as a list (<ul>) -->
|
38
|
+
<h3><%= company.name %></h3>
|
39
|
+
<div><a href="<%= company.homepage %>"><%= company.homepage %></a></div>
|
40
|
+
|
41
|
+
<% company.projects.each do |project| %>
|
42
|
+
<!-- projects should be presented as a list (<ul>) -->
|
43
|
+
<h4><%= project.name %> ( <%= project.start_date %> – <%= project.end_date %> )</h4>
|
44
|
+
<div><a href="<%= project.homepage %>"><%= project.homepage %></a></div>
|
45
|
+
<p><%= project.description %></p>
|
46
|
+
<div><%= project.title %></div>
|
47
|
+
|
48
|
+
<h5>Technologies</h5>
|
49
|
+
<ul>
|
50
|
+
<% project.technologies.each do |technology| %>
|
51
|
+
<li><%= technology %></li>
|
52
|
+
<% end %>
|
53
|
+
</ul>
|
54
|
+
|
55
|
+
<h4>Achievements</h4>
|
56
|
+
<ul>
|
57
|
+
<% project.achievements.each do |achievement| %>
|
58
|
+
<li><%= achievement %></li>
|
59
|
+
<% end %>
|
60
|
+
</ul>
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
<hr>
|
64
|
+
<% end %>
|
65
|
+
</div>
|
66
|
+
<div class="col-12">
|
67
|
+
<h2>Education</h2>
|
68
|
+
<h2><%= education.university.name %></h2>
|
69
|
+
<h3><%= education.university.title %> ( <%= education.university.start_date %> – <%= education.university.end_date %> )</h3>
|
70
|
+
</div>
|
71
|
+
<div class="col-12">
|
72
|
+
<h2>Certification</h2>
|
73
|
+
<% certification.courses.each do |course| %>
|
74
|
+
<!-- courses should be presented as a list (<ul>) -->
|
75
|
+
<h3><%= course.title %> ( <%= course.company %> )</h3>
|
76
|
+
<div><a href="<%= course.homepage %>"><%= course.homepage %></a></div>
|
77
|
+
<% end %>
|
78
|
+
</div>
|
79
|
+
<div class="col-12">
|
80
|
+
<h2>Interests</h2>
|
81
|
+
<ul>
|
82
|
+
<% interests.each do |interest| %>
|
83
|
+
<li><%= interest %></li>
|
84
|
+
<% end %>
|
85
|
+
</ul>
|
86
|
+
</div>
|
87
|
+
</section>
|
88
|
+
</div>
|
89
|
+
</body>
|
90
|
+
</html>
|
data/full_time.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'full_time/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'full_time'
|
8
|
+
spec.version = FullTime::VERSION
|
9
|
+
spec.author = 'Andrew Babichev'
|
10
|
+
spec.email = 'andrew.babichev@gmail.com'
|
11
|
+
|
12
|
+
spec.summary = 'Simple CV DSL'
|
13
|
+
spec.description = 'Handle your CV like a pro'
|
14
|
+
spec.homepage = 'https://github.com/Tensho/full_time'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.post_install_message = "Thanks for installing full_time!"
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec|features)/}) }
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
|
22
|
+
spec.required_ruby_version = '~> 2.0'
|
23
|
+
|
24
|
+
spec.add_dependency 'tilt'
|
25
|
+
|
26
|
+
spec.add_development_dependency 'bundler'
|
27
|
+
spec.add_development_dependency 'rake'
|
28
|
+
spec.add_development_dependency 'rspec'
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module FullTime
|
2
|
+
class Certification
|
3
|
+
attr_accessor :courses
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@courses = List.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def courses(&block)
|
10
|
+
if block_given?
|
11
|
+
@courses.instance_eval(&block)
|
12
|
+
end
|
13
|
+
|
14
|
+
@courses
|
15
|
+
end
|
16
|
+
|
17
|
+
def course(&block)
|
18
|
+
if block_given?
|
19
|
+
course = Course.new
|
20
|
+
course.instance_eval(&block)
|
21
|
+
@courses << course
|
22
|
+
course
|
23
|
+
end
|
24
|
+
end
|
25
|
+
# alias :course, :certification
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module FullTime
|
2
|
+
class Company
|
3
|
+
extend FullTime::DSL
|
4
|
+
|
5
|
+
dsl_attr_accessor :homepage
|
6
|
+
|
7
|
+
attr_accessor :name, :projects
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@projects = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def project(name = nil, start_date: nil, end_date: nil, &block)
|
14
|
+
if block_given?
|
15
|
+
project = Project.new
|
16
|
+
project.name = name
|
17
|
+
project.start_date = start_date
|
18
|
+
project.end_date = end_date
|
19
|
+
project.instance_eval(&block)
|
20
|
+
@projects << project
|
21
|
+
project
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|