-
Notifications
You must be signed in to change notification settings - Fork 0
/
database-data.json
580 lines (580 loc) · 33.5 KB
/
database-data.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
{
"codelabs" : {
"android-1" : {
"desc" : "Getting your app ready for Android Nougat",
"questions" : {
"-KSv9JwHda3WMe92CZsE" : {
"choices" : "Android Studio@#@Eclipse@#@IntelliJ Idea@#@Visual Studio",
"question" : "It is the official IDE for Android development."
},
"-KSv9JwHda3WMe92CZsF" : {
"choices" : "resizeableActivity@#@resizeable@#@multiWindowable@#@resizeableApp",
"question" : "Visual StudioThis attribute sets the activity / app to be resizable for multi-window feature or not."
},
"-KSv9JwIZ8knwDhXdL6A" : {
"choices" : "multi-window@#@split-screen@#@dual-window@#@multi-display",
"question" : "This feature of Android N adds support for displaying more than one app at the same time."
},
"-KSv9JwJ8KFsiUzHe8hp" : {
"choices" : "windowBackgroundFallback@#@windowBackgroundPriority@#@windowOriginalBackground@#@windowBackgroundOverride",
"question" : "The windowBackground property can be overridden by this property."
},
"-KSv9JwLWxWty5IxNLXt" : {
"choices" : "FLAG_ACTIVITY_LAUNCH_ADJACENT@#@FLAG_ACTIVITY_SPLIT_SCREEN@#@FLAG_ACTIVITY_SIDE_BY_SIDE@#@FLAG_ACTIVITY_LAUNCH_DOCUMENT",
"question" : "This is flag tells the app to open the new activity in an adjacent window, when the user is in split-window mode."
},
"-KSv9JwOZWq9EfIxBbZp" : {
"choices" : "Doze@#@Sleep@#@Greenify@#@Idle",
"question" : "A system mode that defers apps' CPU and network activities when the device is idle, such as when it's sitting on a table or in a drawer."
},
"-KSv9JwP8sPcAUWkneOS" : {
"choices" : "setPersisted()@#@setActive()@#@startOnBoot()@#@reschedcule()",
"question" : "Which method ensures that jobs are scheduled after a restart?"
},
"-KSv9JwQQAGzprt4IzGh" : {
"choices" : "GcmNetworkManager@#@GcmJobScheduler@#@SchedulerCompat@#@JobSchedulerWrapper",
"question" : "It is a wrapper around JobScheduler that provides backwards compatibility for devices older than API 21."
},
"-KSv9JwQQAGzprt4IzGi" : {
"choices" : "setGroup()@#@group()@#@ddToGroup()@#@groupNotifs()",
"question" : "This method of the NotificationCompat.Builder class groups notifications with similar keys."
},
"-KSv9JwQQAGzprt4IzGj" : {
"choices" : "RemoteInput@#@InstantReply@#@InstantResponse@#@QuickReply",
"question" : "This class enables support the for text input responses directly from notifications."
}
},
"tech" : "android",
"time" : 2700,
"url" : "https://codelabs.developers.google.com/codelabs/getting-ready-for-android-n/index.html#0"
},
"android-2" : {
"desc" : "Using ConstraintLayout to design your views",
"questions" : {
"-KSv9JwBflmfDIWSsBPg" : {
"choices" : "ConstraintLayout@#@AdvancedRelativeLayout@#@FlexiLayout@#@NewRelativeLayout",
"question" : "It is a new type of layout available in the Android Support repository built on top of a flexible constraint system."
},
"-KSv9JwBflmfDIWSsBPh" : {
"choices" : "Constraints@#@Anchors@#@Aligners@#@Handles",
"question" : "It keeps widgets aligned using anchors or handles."
},
"-KSv9JwCryLddWFcvfOB" : {
"choices" : "Resize Handle@#@Size Handle@#@Height Handle@#@Width Handle",
"question" : "This handle allows you to resize the widgets, represented by squares on the corners."
},
"-KSv9JwCryLddWFcvfOC" : {
"choices" : "Side Constraint Handle@#@Circular Handle@#@Location Handle@#@Proximity Handle",
"question" : "This handle specifies the location of the widget, represented by circles on the sides."
},
"-KSv9JwCryLddWFcvfOD" : {
"choices" : "Baseline Constraint Handle@#@Text Align Handle@#@Text Handle@#@Level Handle",
"question" : "This handle aligns text fields of any two or more widgets, irrespective of widget sizes."
},
"-KSv9JwCryLddWFcvfOE" : {
"choices" : "Android 2.3 Gingerbread@#@Android 2.2 Froyo@#@Android 3.0 Honeycomb@#@Android 2.0 Eclair",
"question" : "Until what version constraint-layout is backwards compatible?"
},
"-KSv9JwCryLddWFcvfOF" : {
"choices" : "Click, Hold and Drag the handle.@#@Right-click and drag the handle.@#@Double-click the handle.@#@You cannot create a constraint manually.",
"question" : "How do you manually create a constraint?"
},
"-KSv9JwD0gStW6wAOFMt" : {
"choices" : "Inspector@#@Constraint Editor@#@Blueprint@#@UI Manager",
"question" : "The goal of this tool is to let you edit all properties and constraints without leaving the UI Builder."
},
"-KSv9JwD0gStW6wAOFMu" : {
"choices" : "Autoconnect@#@Autoconstraint@#@Autocreate@#@AutoConstraintCreate",
"question" : "This option lets you automatically create constraints between widgets and their neighbors."
},
"-KSv9JwGLxLNVrVMC6xQ" : {
"choices" : "Inference Engine@#@Constraint Creator@#@Layout Manager@#@UI Builder",
"question" : "It aids developers by creating constraints among elements added in the layout. The constraints created through this depend on the types of elements added to the layout and their sizes."
}
},
"tech" : "android",
"time" : 2700,
"url" : "https://codelabs.developers.google.com/codelabs/constraint-layout/index.html#0"
},
"cardboard-1" : {
"desc" : "Getting started with VR view for HTML",
"questions" : {
"-KSv9Jw8JqGLQHLAu2Uq" : {
"choices" : "VR View@#@Daydream@#@VR Embedder@#@Cardboard",
"question" : "It allows you to embed 360 degree VR media into websites on desktop and mobile."
},
"-KSv9Jw8JqGLQHLAu2Ur" : {
"choices" : "Windows Phone@#@Web pages@#@Android@#@iOS",
"question" : "VR View is available to all of the following except one. "
},
"-KSv9Jw9IJjd9oeXx4FI" : {
"choices" : "DCIM/CardboardCamera@#@DCIM/Cardboard@#@Google/CardboardCamera@#@Google/CardboardPhotos",
"question" : "Default location where Cardboard Camera images are stored."
},
"-KSv9Jw9IJjd9oeXx4FJ" : {
"choices" : "<iframe>@#@<div>@#@<img>@#@<video>",
"question" : "HTML element where the VR image or video is loaded or rendered."
},
"-KSv9Jw9IJjd9oeXx4FK" : {
"choices" : "scrolling=\"no\"@#@scrollbars=\"none\"@#@fullscreen@#@scrollable=\"false\"",
"question" : "The attribute and its value of iframe which removes the scrollbars, and allows moving around your POV allowing 360 degree viewing."
},
"-KSv9Jw9IJjd9oeXx4FL" : {
"choices" : "image / video@#@media@#@content@#@src",
"question" : "A required control parameter specifies the image or video to load."
},
"-KSv9Jw9IJjd9oeXx4FM" : {
"choices" : "start_yaw@#@initial_yaw@#@yaw_degrees@#@yaw_view",
"question" : "An optional control parameter that sets the initial yaw of the viewer, in degrees."
},
"-KSv9JwA7SsbiYPR6wXD" : {
"choices" : "is_stereo@#@is_stacked_stereo@#@is_content_stereo@#@is_format_stereo",
"question" : "An optional control parameter that identifies if content is in stacked stereo format or not."
},
"-KSv9JwA7SsbiYPR6wXE" : {
"choices" : "preview@#@sneakpeek@#@thumbnail@#@imageicon",
"question" : "Another optional parameter that sets the sneak peek of the content. "
},
"-KSv9JwBflmfDIWSsBPf" : {
"choices" : "is_yaw_only@#@is_motion_restricted@#@is_moveable@#@is_yaw_or_not",
"question" : "An optional control parameter that identifies if motion is restricted to yaw only or not."
}
},
"tech" : "vr",
"time" : 2400,
"url" : "https://codelabs.developers.google.com/codelabs/vr_view_101/index.html#0"
},
"cardboard-2" : {
"desc" : "Getting started with VR View for Android",
"questions" : {
"-KSv9Jw2UBpXytTWIADm" : {
"choices" : "VR View@#@Daydream@#@VR Embedder@#@Cardboard",
"question" : "It allows you to embed 360 degree VR media into websites on desktop and mobile."
},
"-KSv9Jw3I8gp5pRvnOQZ" : {
"choices" : "Windows Phone@#@Web pages@#@Android@#@iOS",
"question" : "VR View is available to all of the following except one."
},
"-KSv9Jw4yaJkZwh4Cebw" : {
"choices" : "DCIM/CardboardCamera@#@DCIM/Cardboard@#@Google/CardboardCamera@#@Google/CardboardPhotos",
"question" : "Default location where Cardboard Camera images are stored."
},
"-KSv9Jw5AqmYeGVe8Odz" : {
"choices" : "Google VR SDK@#@Android SDK@#@Daydream SDK@#@Java SDK",
"question" : "The software development kit (SDK) required to fully use the VR View for Android."
},
"-KSv9Jw5AqmYeGVe8Oe-" : {
"choices" : "VrPanoramaView@#@StereoView@#@PanoramicView@#@VrImageView",
"question" : "Widget from the Google VR SDK that renders the panoramic and stereo images on the application."
},
"-KSv9Jw6ZFkwUbwq0g4d" : {
"choices" : "import com.google.vr.sdk.widgets.pano.VrPanoramaView;@#@import com.google.vr.sdk.widgets.VrPanoramaView;@#@import com.google.vr.sdk.pano.widgets.VrPanoramaView;@#@import com.google.vr.sdk.VrPanoramaView;",
"question" : "What is the import statement for you to be able to use the VrPanoramaView class?"
},
"-KSv9Jw6ZFkwUbwq0g4e" : {
"choices" : "To load the image in a background thread.@#@To load the image on a later time@#@To load selected images from the gallery@#@To download the image currently shown",
"question" : "What is the purpose of our ImageLoaderTask that extends the AsyncTask class?"
},
"-KSv9Jw6ZFkwUbwq0g4f" : {
"choices" : "VrVideoView@#@VrVideoLoader@#@VrVideoWidget@#@VrViewerVideo",
"question" : "Widget from the Google VR SDK that renders the panoramic and stereo videos on the application."
},
"-KSv9Jw8JqGLQHLAu2Uo" : {
"choices" : "import com.google.vr.sdk.widgets.video.VrVideoView;@#@import com.google.vr.sdk.widgets.VrVideoView;@#@import com.google.vr.sdk.video.widgets.VrVideoView;@#@import com.google.vr.sdk.VrVideoView;",
"question" : "What is the import statement for you to be able to use the VrVideoView class?"
},
"-KSv9Jw8JqGLQHLAu2Up" : {
"choices" : "VrVideoEventListener@#@VrVideoEventHandler@#@VrVideoEventPerformed@#@VrVideoEventOccured",
"question" : "It handles the events performed or occurred on the VrVideoView."
}
},
"tech" : "vr",
"time" : 2400,
"url" : "https://codelabs.developers.google.com/codelabs/vr_view_app_101/index.html#0"
},
"cloud-1" : {
"desc" : "Speech to Text Transcription with the Cloud Speech API",
"questions" : {
"-KSv9Jvu875xdD86uah1" : {
"choices" : "Enable API via API Manager@#@Download API Manager@#@Download Google Cloud@#@Enable Google Cloud API",
"question" : "It is the prior step before using APIs such as Google Cloud Speech API."
},
"-KSv9JvvFm-BOHnTIuv8" : {
"choices" : "Google Cloud Shell@#@Google Cloud Bash@#@Google Cloud CLI@#@Google Cloud CMD",
"question" : "It is a command line environment running in the Cloud."
},
"-KSv9JvwUhBX0evwqONU" : {
"choices" : "API Key@#@License Key@#@Serial Key@#@Speech Key",
"question" : "What do we need on our requests to use the Speech API?"
},
"-KSv9JvwUhBX0evwqONV" : {
"choices" : "touch request.json@#@create request.json@#@request request.json@#@create request -json",
"question" : "Command used to create the JSON file that will be used for the request."
},
"-KSv9Jvxf4ZV3yYhjmou" : {
"choices" : "config@#@process@#@options@#@settings",
"question" : "In this part of the request body, we tell the Speech APi how to process the request."
},
"-KSv9JvygdsrMfdFwi7L" : {
"choices" : "audio@#@uri@#@audioUri@#@file",
"question" : "In this part of the request body, we pass the uri of our audio file."
},
"-KSv9Jvz1i_530WZTlou" : {
"choices" : "transcript@#@text@#@message@#@textResult",
"question" : "This part of the result shows the transcription of the audio file."
},
"-KSv9Jw0cw5xCLhNWlHw" : {
"choices" : "confidence@#@sureness@#@accuracy@#@percentSure",
"question" : "This value indicates how sure the API of its transcription."
},
"-KSv9Jw0cw5xCLhNWlHx" : {
"choices" : "syncrecognize@#@livetranscribe@#@realtimerecognize@#@liverecognize",
"question" : "This method can be used to transcribe text while the user is still speaking."
},
"-KSv9Jw1bQxW7uxdp1Ir" : {
"choices" : "language_code@#@language_used@#@language_config@#@language_spoken",
"question" : " A parameter of the config where we specify the language spoken in the audio."
}
},
"tech" : "cloud",
"time" : 1200,
"url" : "https://codelabs.developers.google.com/codelabs/cloud-speech-intro/index.html#0"
},
"cloud-2" : {
"desc" : "Using Cloud Vision with Node.js",
"questions" : {
"-KSv9JvqAkffYkHfVKON" : {
"choices" : "Google Cloud Shell@#@Google Cloud Bash@#@Google Cloud CLI@#@Google Cloud CMD",
"question" : "It is a command line environment running in the Cloud."
},
"-KSv9JvqAkffYkHfVKOO" : {
"choices" : "gcloud@#@gcp@#@gcli@#@gtool",
"question" : "It is a powerful and unified command-line tool for Google Cloud Platform."
},
"-KSv9JvruJ7HWMQMxh36" : {
"choices" : "gcloud auth list@#@gcloud acc list@#@gcloud list@#@gcloud list accounts",
"question" : "This command lists the authenticated accounts."
},
"-KSv9JvruJ7HWMQMxh37" : {
"choices" : "googleapis@#@googleapipackage@#@googleapipack@#@googleapilib",
"question" : "This node package is Google's officially supported node.js client library for using Google APIs."
},
"-KSv9JvspFRqlxYZIICT" : {
"choices" : "cookie-session@#@cookiejs@#@jscookie@#@session-cookies",
"question" : "It is a node.js middleware for providing signed cookie-based sessions."
},
"-KSv9JvspFRqlxYZIICU" : {
"choices" : "config.secret@#@cookie.secret@#@cookie.security@#@cookie.code",
"question" : "Cookies are signed with the value of this object to protect against forgery."
},
"-KSv9JvtS1TBkzuChqn9" : {
"choices" : "oauth2.aware@#@oauth2.template@#@oauth2.account@#@oauth2.router",
"question" : "It is the middleware that makes the user's credentials available in the request as ``req.oauth2client``."
},
"-KSv9JvtS1TBkzuChqnA" : {
"choices" : "gsutil mb gs://<your-bucket-name>.appspot.com@#@gsutil defacl set public-read gs://<your-project-id>.appspot.com@#@gsutil create bucket <your-bucket-name>@#@gsutil bucket new <your-bucket-name>",
"question" : "The command to create buckets which hold your data in the Google Cloud Storage."
},
"-KSv9JvtS1TBkzuChqnB" : {
"choices" : "post()@#@upload()@#@put()@#@addToBucket()",
"question" : "This function is needed in lib/routes.js to upload the image to Cloud Storage and return a publicly accessible URL to display image and URI used for the Cloud Vision API."
},
"-KSv9Jvu875xdD86uah0" : {
"choices" : "Cloud Vision Client@#@Cloud Storage Client@#@Google Cloud Client@#@Google Images Client",
"question" : "This client exposes the different feature types available in the API, run detection on images and adds the call to the API to send the Google Cloud Storage URI."
}
},
"tech" : "cloud",
"time" : 3000,
"url" : "https://codelabs.developers.google.com/codelabs/cloud-vision-nodejs/index.html#0"
},
"cloud-3" : {
"desc" : "Getting Started with App Engine (Python)",
"questions" : {
"-KSv9JvjyoX2D5uxCZp8" : {
"choices" : "Google App Engine applications@#@Firebase Applications@#@Google Cloud Applications@#@Python applications",
"question" : "They are easy to create, easy to maintain, and easy to scale as your traffic and data storage needs change."
},
"-KSv9Jvk-Lklv9uZunmp" : {
"choices" : "incoming traffic@#@none of the above@#@both incoming and outgoing traffic@#@outgoing traffic",
"question" : "On what are App Engine applications based for automatically scaling?"
},
"-KSv9Jvk-Lklv9uZunmq" : {
"choices" : "Standard Environment and Flexible Environment@#@Simple Environment and Complex Environment@#@Easy Environment and Hard Environment@#@Normal Environment and Advanced Environment",
"question" : "The two App Engine’s environments that support a host of programming languages, including Java, Python, PHP, NodeJS, Go, etc.."
},
"-KSv9Jvk-Lklv9uZunmr" : {
"choices" : "Google Cloud Shell@#@Google Cloud CMD@#@Google Cloud CLI@#@Google Cloud Bash",
"question" : "It is a command line environment running in the Cloud."
},
"-KSv9JvldIF3sWDZd7fi" : {
"choices" : "gcloud@#@gcp@#@gcli@#@gtool",
"question" : "It is a powerful and unified command-line tool for Google Cloud Platform. gcloud"
},
"-KSv9JvldIF3sWDZd7fj" : {
"choices" : "Simple Request Handler@#@Response and Request Handler@#@Complex Request Handler@#@Simple Response Handler",
"question" : "What is the purpose of the helloworld.py that we created?"
},
"-KSv9JvnFWT_vVibk254" : {
"choices" : "threadsafe@#@runnable@#@concurrent@#@real-time",
"question" : "This attribute or characteristic means that the same instance of the application can handle several simultaneous requests."
},
"-KSv9JvoQj0tOJeV6mst" : {
"choices" : "app.yaml@#@manifest.json@#@yaml.app@#@app.xml",
"question" : "This configuration file, among other things, describes which handler scripts should be used for which URLs."
},
"-KSv9JvoQj0tOJeV6msu" : {
"choices" : "dev_appserver.py ./ @#@host_appserver.py ./@#@upload_appserver.py ./@#@deploy_app.py ./",
"question" : "The command to start a deployment instance of the application server so we can test the application."
},
"-KSv9JvpQJv83YjZ5Wk0" : {
"choices" : "gcloud app deploy app.yaml@#@gcloud host app helloworld@#@dev_appserver.py ./ --upload@#@gcloud app upload helloworld.py",
"question" : "The complete command to deploy or upload the Hello World server to the App Engine environment."
}
},
"tech" : "cloud",
"time" : 1200,
"url" : "https://codelabs.developers.google.com/codelabs/cloud-app-engine-python/index.html#0"
},
"firebase-1" : {
"desc" : "Firebase: Build a Real Time Web Chat App",
"questions" : {
"-KSv9JwSaqOnQhBLFIqL" : {
"choices" : "Firebase CLI@#@Firebase Server@#@Firebase Host@#@Firebase Deployer",
"question" : "This will allow you to serve your web apps locally and deploy your web app to Firebase hosting."
},
"-KSv9JwSaqOnQhBLFIqM" : {
"choices" : "npm -g install firebase-tools@#@npm -g install firebase-cli@#@npm -g install firebase@#@pm -g download firebase-tools",
"question" : "What is the complete command to install the Firebase CLI?"
},
"-KSv9JwTE0Wc8ubcD9UH" : {
"choices" : "initFirebase@#@startFirebase@#@configFirebase@#@loadFirebase",
"question" : "This function in our project initializes the Firebase of your app where we can set some shortcuts and initiate the authentication."
},
"-KSv9JwTE0Wc8ubcD9UI" : {
"choices" : "GoogleAuthProvider()@#@GoogleAccountLogin()@#@GoogleLogin()@#@GoogleAccountProvider()",
"question" : "This method allows you to sign in with your Google account. "
},
"-KSv9JwTE0Wc8ubcD9UJ" : {
"choices" : "off()@#@dispose()@#@remove()@#@clear()",
"question" : "This function removes all previous listeners."
},
"-KSv9JwTE0Wc8ubcD9UK" : {
"choices" : "auth@#@permit@#@allow@#@valid",
"question" : "This rule variable is a special variable containing information about the user if authenticated."
},
"-KSv9JwTE0Wc8ubcD9UL" : {
"choices" : "push()@#@pull()@#@new()@#@add()",
"question" : "This function adds a new entry to the Firebase Database."
},
"-KSv9JwUWxheqNWGZfuf" : {
"choices" : "Firebase Storage@#@Firebase Data Store@#@Firebase Blob@#@Firebase File Server",
"question" : "It is a file/blob database service of Firebase."
},
"-KSv9JwUWxheqNWGZfug" : {
"choices" : "put()@#@pload()@#@copyTo()@#@save()",
"question" : "This function saves the file to the Firebase Storage."
},
"-KSv9JwUWxheqNWGZfuh" : {
"choices" : "firebase deploy@#@firebase server@#@firebase host@#@firebase upload",
"question" : "This command deploys or uploads your app to the Firebase hosting service."
}
},
"tech" : "firebase",
"time" : 3600,
"url" : "https://codelabs.developers.google.com/codelabs/firebase-web/index.html#0"
},
"firebase-2" : {
"desc" : "Firebase Android Codelab",
"questions" : {
"-KSv9JwQQAGzprt4IzGk" : {
"choices" : "google-services.json@#@firebase.json@#@firebase-services.json@#@metadata.json",
"question" : "It is a configuration file that contains all the necessary Firebase metadata for your app."
},
"-KSv9JwQQAGzprt4IzGl" : {
"choices" : "FirebaseAuth.getInstance();@#@FirebaseAuthInstance.get();@#@FirebaseAuth.instance();@#@FirebaseAuth.currentInstance();",
"question" : "This method gets the current instance of Firebase Authentication."
},
"-KSv9JwQQAGzprt4IzGm" : {
"choices" : "getCurrentUser();@#@getUser();@#@getAuthUser();@#@getLoggedInUser();",
"question" : "This method returns the logged in user of the Firebase Auth."
},
"-KSv9JwRg2vXykrCvRQf" : {
"choices" : "compile 'com.google.firebase:firebase-database:9.2.1'@#@compile 'com.google.firebase:firebase-data:9.2.1'@#@compile 'com.google.firebase:firebase-db:9.2.1'@#@compile 'com.google.firebase:database:9.2.1'",
"question" : "Which line adds the Firebase Database dependency to your app?"
},
"-KSv9JwRg2vXykrCvRQg" : {
"choices" : "firebase-messaging / Firebase Cloud Messaging@#@firebase-broadcasts@#@firebase-reports@#@firebase-notifications",
"question" : "It can be used to send notifications to users of your app. It provides the ability to send and receive FCM messages."
},
"-KSv9JwRg2vXykrCvRQh" : {
"choices" : "firebase-config / Firebase Remote Config@#@firebase-app-update@#@firebase-remote@#@firebase-code",
"question" : "This dependency provides the ability to remotely configure applications without having to deploy and new code."
},
"-KSv9JwRg2vXykrCvRQi" : {
"choices" : "firebase-appinvites / Firebase App Invites@#@firebase-appfriends@#@firebase-appshare@#@firebase-messaging",
"question" : "This dependency provides a simple way for your users to share your application with their friends through Email or SMS."
},
"-KSv9JwRg2vXykrCvRQj" : {
"choices" : "firebase-analytics / Firebase Analytics@#@firebase-appstats@#@firebase-usage-data@#@firebase-statistics",
"question" : "It provides a way for you to understand the way users move through your application, where they succeed and where they get stuck. It can also be used to understand the most used parts of your application."
},
"-KSv9JwSaqOnQhBLFIqJ" : {
"choices" : "play-services-ads / AdMob@#@firebase-services-ads@#@play-services-adwords@#@google-firebase-commercials",
"question" : "It gives you a way to easily monetize your application, you simply add the AdView placeholder and Google handles the ad delivery for you."
},
"-KSv9JwSaqOnQhBLFIqK" : {
"choices" : "firebase-crash / Firebase Crash@#@firebase-logger@#@firebase-exception@#@firebase-error",
"question" : "It allows your application to report when crashes occur and log the events leading up to the crash."
}
},
"tech" : "firebase",
"time" : 2400,
"url" : "https://codelabs.developers.google.com/codelabs/firebase-android/index.html#0"
},
"polymer-1" : {
"desc" : "Build Google Maps Using Web Components & No Code!",
"questions" : {
"-KSv9JwaMOQo3316kXcV" : {
"choices" : "Bower@#@Bowler@#@Power@#@Dower",
"question" : "It is a client-side package management tool that can be used with any web app."
},
"-KSv9JwbcqesUYYZZPu3" : {
"choices" : "bower install GoogleWebComponents/google-map –save@#@bower download GoogleWebComponents/google-map –save@#@bower install googlemap –save@#@bower install GoogleWebComponents/map –save",
"question" : "What is the complete command to install the <google-map> element using the command line?"
},
"-KSv9JwbcqesUYYZZPu4" : {
"choices" : "bower.json@#@dependency.json@#@google-map.json@#@derulo.json",
"question" : "In which file can we find the project dependencies where we would add the google-map dependency?"
},
"-KSv9JwcI8cMfpAgZ-Gd" : {
"choices" : "disable-default-ui@#@disable-map-controls@#@disable-controls@#@disable-map-ui",
"question" : "This disable the map’s controls."
},
"-KSv9JwcI8cMfpAgZ-Ge" : {
"choices" : "<google-map-marker>@#@<map-marker>@#@<google-marker>@#@<marker>",
"question" : "This element adds a marker on the map."
},
"-KSv9JwdM-2XcyKPcIF9" : {
"choices" : "<google-map-directions>@#@<google-driving-directions>@#@<google-directions>@#@<google-directions-map>",
"question" : "It provides driving direction information using the Google Maps API. "
},
"-KSv9JwdM-2XcyKPcIFA" : {
"choices" : "<paper-input>@#@<polymer-field>@#@<text-field>@#@<paper-text>",
"question" : "An element of Polymer which provides a text field."
},
"-KSv9JwdM-2XcyKPcIFB" : {
"choices" : "<iron-icon>@#@<paper-icon>@#@<icon>@#@<polymer-icon>",
"question" : "It is an element of Polymer useful for displaying an icon."
},
"-KSv9JwdM-2XcyKPcIFC" : {
"choices" : "dom-bind@#@template-bind@#@polymer-sugar@#@bind-dom",
"question" : "It is a type-extension version of the <template>. It allows you to use Polymer sugaring features outside of Polymer."
},
"-KSv9JwdM-2XcyKPcIFD" : {
"choices" : "{ { } }@#@[ [ ] ]@#@< >@#@( ( ) )",
"question" : "Symbols used in data-bindings for Polymer."
}
},
"tech" : "web",
"time" : 1200,
"url" : "https://codelabs.developers.google.com/codelabs/polymer-maps/index.html#0"
},
"polymer-2" : {
"desc" : "Build your first Polymer element",
"questions" : {
"-KSv9JwUWxheqNWGZfui" : {
"choices" : "Bower@#@Dower@#@Power@#@Bowler",
"question" : "It is a client-side package management tool that can be used with any web app. "
},
"-KSv9JwUWxheqNWGZfuj" : {
"choices" : "Local DOM@#@Tree DOM@#@Element DOM@#@Local Tree",
"question" : "It lets you add a scoped DOM tree inside an element, with local styles and markup that are decoupled from the rest of the web page."
},
"-KSv9JwVvi2bzhsMyyVo" : {
"choices" : "Host element@#@Child element@#@Parent element@#@Sibling element",
"question" : "It is the element containing the Local DOM."
},
"-KSv9JwVvi2bzhsMyyVp" : {
"choices" : "<dom-module>@#@<internal-dom>@#@<local-dom>@#@<dom-structure>",
"question" : "It defines the element's internal DOM structure, or local DOM as well as the element's local styling."
},
"-KSv9JwVvi2bzhsMyyVq" : {
"choices" : "<template>@#@<body>@#@<pattern>@#@<structure>",
"question" : "It defines the element's local DOM structure. This is where you'll add markup for your custom element. "
},
"-KSv9JwVvi2bzhsMyyVr" : {
"choices" : "notify@#@valueChanged@#@upgrade@#@update",
"question" : "This property tells Polymer to generate property change events when the property value changes. This lets the change be observed by other nodes."
},
"-KSv9JwWg2rRYGr-JvB4" : {
"choices" : "reflectToAttribute@#@polymerUpdate@#@propertyChanged@#@updateAttribute",
"question" : "This property tells Polymer to update the corresponding attribute when the property changes. This lets you style the element using an attribute selector."
},
"-KSv9JwWg2rRYGr-JvB5" : {
"choices" : "toggleIcon@#@buttonIcon@#@elementIcon@#@tapIcon",
"question" : "It is a property you'll define on the toggle button element."
},
"-KSv9JwWg2rRYGr-JvB6" : {
"choices" : "listeners@#@event maps@#@action event@#@action handlers",
"question" : "This object maps event names to handler names."
},
"-KSv9JwYg-jgFaRimoMF" : {
"choices" : "tap@#@onrelease@#@ondown@#@click",
"question" : "This event is generated by Polymer's gesture system when the user clicks or taps on a target with a mouse or finger."
}
},
"tech" : "web",
"time" : 2400,
"url" : "https://codelabs.developers.google.com/codelabs/polymer-first-elements/index.html#0"
},
"pwa-1" : {
"desc" : "Your First Progressive Web App",
"questions" : {
"-KSv9JwdM-2XcyKPcIFE" : {
"choices" : "Installable@#@App-Like@#@Linkable@#@Discoverable",
"question" : "It is a property of a PWA which allows user to “keep” apps they find most useful on their home screen without the hassle of an app store."
},
"-KSv9JwevXS338e6CH3m" : {
"choices" : "Progressive@#@Safe@#@Fresh@#@Connectivity independent",
"question" : "It is a property of a PWA which makes it work for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet."
},
"-KSv9JwevXS338e6CH3n" : {
"choices" : "App Shell@#@App UI@#@App Menu@#@App Options",
"question" : "It is the minimal HTML, CSS, and JavaScript that is required to power the user interface of a progressive web app and is one of the components that ensures reliably good performance."
},
"-KSv9JwevXS338e6CH3o" : {
"choices" : "Cached@#@Saved@#@Stored@#@Downloaded",
"question" : "It means that the shell files are loaded once over the network and then saved to the local device."
},
"-KSv9Jwfc3_8SfIWvquQ" : {
"choices" : "Cache-then-network@#@Network-then-cache@#@Cache-only@#@Network-only",
"question" : "A caching strategy where it gets data on screen as quickly as possible, then updates that once the network has returned the latest data."
},
"-KSv9JwiDmQxR13GyT8n" : {
"choices" : "web app manifest / manifest.json@#@web app control / control.json@#@web app config / config.json@#@web app settings / settings.json",
"question" : "It is a simple JSON file that gives you, the developer, the ability to control how your app appears to the user in the areas that they would expect to see apps, direct what the user can launch and more importantly how they can launch it."
},
"-KSv9JwjbBQ97uB1u21I" : {
"choices" : "Service Worker@#@Service Cacher@#@Service Loader@#@Service Saver",
"question" : "It is a script that is run by your browser in the background, separate from a web page, opening the door to features which don’t need a web page or user interaction. It can be used to pre-cache the app shell."
},
"-KSv9JwjbBQ97uB1u21J" : {
"choices" : "Network-then-cache@#@Cache-only@#@Network-only@#@Cache-then-network",
"question" : "A caching strategy where it gets the latest data first, but offline users get an older cached version."
},
"-KSv9JwjbBQ97uB1u21K" : {
"choices" : "Discoverable@#@App-like@#@Installable@#@Linkable",
"question" : "It is a property of a PWA which make it identifiable as an \"application\" thanks to W3C manifest and service worker registration scope, allowing search engines to find it. "
},
"-KSv9JwjbBQ97uB1u21L" : {
"choices" : "Two@#@Three@#@One@#@Four and above",
"question" : "How many asynchronous requests does the service worker perform?"
}
},
"tech" : "web",
"time" : 1200,
"url" : "https://codelabs.developers.google.com/codelabs/your-first-pwapp/index.html#0"
}
}
}