mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-05-28 18:26:54 +00:00
feat(client): add coming soon module intros (#60863)
This commit is contained in:
@@ -1761,7 +1761,7 @@
|
||||
"relational-databases": "Relational Databases",
|
||||
"backend-javascript": "Backend JavaScript",
|
||||
"python": "Python",
|
||||
"exam-certified-full-stack-developer": "Certified Full Stack Developer Exam"
|
||||
"career": "Career"
|
||||
},
|
||||
"modules": {
|
||||
"basic-html": "Basic HTML",
|
||||
@@ -1815,14 +1815,11 @@
|
||||
"react-fundamentals": "React Fundamentals",
|
||||
"react-state-hooks-and-routing": "React State, Hooks, and Routing",
|
||||
"performance": "Performance",
|
||||
"css-libraries-and-frameworks": "CSS Libraries and Frameworks",
|
||||
"testing": "Testing",
|
||||
"css-libraries-and-frameworks": "CSS Libraries and Frameworks",
|
||||
"typescript-fundamentals": "TypeScript Fundamentals",
|
||||
"review-front-end-libraries": "Front End Libraries Review",
|
||||
"exam-front-end-libraries": "Front End Libraries Exam",
|
||||
"sql-and-bash": "SQL and Bash",
|
||||
"git": "Git",
|
||||
"security-and-privacy": "Security and Privacy",
|
||||
"python-basics": "Python Basics",
|
||||
"python-loops-and-sequences": "Loops and Sequences",
|
||||
"python-dictionaries-and-sets": "Dictionaries and Sets",
|
||||
@@ -1834,7 +1831,228 @@
|
||||
"python-graphs-and-trees": "Graphs and Trees",
|
||||
"python-dynamic-programming": "Dynamic Programming",
|
||||
"review-python": "Python Review",
|
||||
"exam-python": "Python Exam"
|
||||
"exam-python": "Python Exam",
|
||||
"bash-fundamentals": "Bash Fundamentals",
|
||||
"relational-databases": "Relational Databases",
|
||||
"bash-scripting": "Bash Scripting",
|
||||
"sql-and-bash": "SQL and Bash",
|
||||
"git": "Git",
|
||||
"introduction-to-nodejs": "Introduction to Node.js",
|
||||
"nodejs-core-libraries": "Node.js Core Libraries",
|
||||
"node-package-manager": "Node Package Manager",
|
||||
"http-and-the-web-standards-model": "HTTP and the Web Standards Model",
|
||||
"rest-api-and-web-services": "REST API and Web Services",
|
||||
"introduction-to-express": "Introduction to Express",
|
||||
"express-middleware": "Express Middleware",
|
||||
"error-handling-in-express": "Error Handling in Express",
|
||||
"websockets": "WebSockets",
|
||||
"node-and-sql": "Node and SQL",
|
||||
"security-and-privacy": "Security and Privacy",
|
||||
"authentication": "Authentication",
|
||||
"tooling-and-deployment": "Tooling and Deployment",
|
||||
"how-to-get-a-developer-job": "How to Get a Developer Job",
|
||||
"capstone-project": "Capstone Project",
|
||||
"certified-full-stack-developer-exam": "Certified Full Stack Developer Exam"
|
||||
},
|
||||
"module-intros": {
|
||||
"css-libraries-and-frameworks": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to CSS libraries, frameworks, and preprocessors, including Tailwind CSS, Bootstrap, and Sass. You will build out various components using Tailwind CSS and test your knowledge of these tools with a short quiz."
|
||||
]
|
||||
},
|
||||
"typescript-fundamentals": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to TypeScript, which is a superset of JavaScript that allows you to add static typing to your JavaScript code. You will build several workshops and labs that will give you practice in working with generics, type narrowing, TSX, and more. Then you will test your knowledge of TypeScript fundamentals with a short quiz."
|
||||
]
|
||||
},
|
||||
"python-basics": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to Python, which is used in many fields like data science, machine learning, web development, scripting and automation, embedded systems, IoT, and more. You will build out a workshop and lab to practice Python basics and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-loops-and-sequences": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn how to work with lists, tuples, lambda functions, loops, and more. You will build out workshops and labs to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-dictionaries-and-sets": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to dictionaries, sets, and the Python standard library. You will build out workshops and labs to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-error-handling": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will talk about common error messages, good debugging techniques, and exception handling. You will build a lab to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-classes-and-objects": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn how to work with classes, methods, attributes and properties. Then, you will build out workshops and labs to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-object-oriented-programming": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about Object-oriented programming concepts like encapsulation, inheritance, polymorphism, and more. You will build out workshops and labs to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-linear-data-structures": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about data structures including stacks, queues, linked lists, and more. You will build out a workshop and lab to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-algorithms": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about common algorithms including binary search, merge sort, selection sort, and more. You will build workshops and labs to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-graphs-and-trees": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about graphs in computer science as well as adjacency lists, trees, tries, and more. You will build workshops and labs to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"python-dynamic-programming": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about dynamic programming and practice these concepts by building a fibonacci sequence lab. Then you will take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"bash-fundamentals": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about the command line and common Bash commands. Then you will practice your skills with a workshop and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"relational-databases": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn how to work with relational databases which store data as collections in tables. Some of the concepts you will learn about include inserting and viewing table data, primary and foreign keys in SQL, and more. Then you will build out a workshop and lab to practice these concepts and take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"bash-scripting": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about bash scripting and practice those skills by building five programs. Then you will be able to test your knowledge of these concepts by taking a short quiz."
|
||||
]
|
||||
},
|
||||
"sql-and-bash": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about normalization, SQL injection, and the N+1 problem. Then you will get to practice working with SQL and Bash by building several workshops and labs. Then you will be able to test your knowledge of these concepts by taking a short quiz."
|
||||
]
|
||||
},
|
||||
"git": {
|
||||
"note": "Coming Winter 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn how to use Git, Nano, and GitHub. Then you will get to practice working with Git by building several workshops and labs. You will be able to test your knowledge of these concepts by taking a short quiz."
|
||||
]
|
||||
},
|
||||
"introduction-to-nodejs": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to Node.js, which is a JavaScript runtime environment that allows you to build backend applications using JavaScript. You will get to practice fundamental concepts by building a small workshop and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"nodejs-core-libraries": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about common Node.js core libraries including the fs, os, path and more. Then you will get to practice what you have learned through workshops and labs and test your knowledge through a short quiz."
|
||||
]
|
||||
},
|
||||
"node-package-manager": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to the Node Package Manager, which developers use to manage project dependencies and scripts. Then you will get to practice what you have learned through workshops and labs and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"http-and-the-web-standards-model": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about HTTP (Hypertext Transfer Protocol) and other important concepts including the request-response model, common response codes, DNS, TCP/IP, and more. Then you will get to practice what you have learned through a build your own web server workshop and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"rest-api-and-web-services": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about the REST API (Representational State Transfer Application Programming Interface) and how microservices work. Then you will take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"introduction-to-express": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to Express.js, which is a framework used to build RESTful APIs. Then you will practice your skills through workshops and labs and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"express-middleware": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about middleware in Express.js, which is used to handle requests and responses between the client and server. You will then practice your skills through a workshop and lab and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"error-handling-in-express": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about how error handling, debugging, and health checks work in Express.js. You will then practice what you have learned in a lab and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"websockets": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will be introduced to websockets, which is a protocol used for real time communication with the client and server. You will then practice what you have learned in labs and workshops and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"node-and-sql": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will practice building applications with Node and SQL. Then you will take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"security-and-privacy": {
|
||||
"note": "Coming Fall 2025",
|
||||
"intro": [
|
||||
"In this module, you will learn about the differences between security and privacy as well as other concepts including CSPs, Permissions-Policies, PII, working with CORS, and more. Then you will take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"authentication": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about how authentication works in web applications along with other important concepts including JWTs, CSRFs, Passport, Helmet, cryptography and encryption, and more. You will then practice what you have learned in labs and workshops and test your knowledge with a short quiz."
|
||||
]
|
||||
},
|
||||
"tooling-and-deployment": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, you will learn about common tools used in the industry for deploying your full stack applications. Then you will take a short quiz to test your knowledge."
|
||||
]
|
||||
},
|
||||
"how-to-get-a-developer-job": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"In this module, Quincy Larson (Founder and teacher of freeCodeCamp) will talk about strategies you can use to prepare for getting a developer job. Quincy will cover key subjects including résumés, portfolios, researching the market, preparing for technical interviews, and more."
|
||||
]
|
||||
},
|
||||
"capstone-project": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"This will be your opportunity to build out a full stack application encompassing what you have learned throughout this certification."
|
||||
]
|
||||
},
|
||||
"certified-full-stack-developer-exam": {
|
||||
"note": "Coming Late 2026",
|
||||
"intro": [
|
||||
"This will be a 90 question exam testing what you have learned throughout this certification."
|
||||
]
|
||||
}
|
||||
},
|
||||
"blocks": {
|
||||
"workshop-curriculum-outline": {
|
||||
@@ -4205,14 +4423,6 @@
|
||||
"In this 40-lesson workshop, you will learn how to edit files in the terminal with Nano while building a castle."
|
||||
]
|
||||
},
|
||||
"review-nano": {
|
||||
"title": "Nano Review",
|
||||
"intro": ["Review the Nano concepts to prepare for the upcoming quiz."]
|
||||
},
|
||||
"quiz-nano": {
|
||||
"title": "Nano Quiz",
|
||||
"intro": ["Test what you've learned on Nano with this quiz ."]
|
||||
},
|
||||
"rhhl": { "title": "328", "intro": [] },
|
||||
"workshop-sql-reference-object": {
|
||||
"title": "Build an SQL Reference Object",
|
||||
|
||||
@@ -9,6 +9,7 @@ import Html from './icons/html';
|
||||
import Css from './icons/css';
|
||||
import NodeIcon from './icons/node';
|
||||
import Python from './icons/python';
|
||||
import Graduation from './icons/graduation';
|
||||
|
||||
const iconMap = {
|
||||
[FsdChapters.Welcome]: FreeCodeCampIcon,
|
||||
@@ -18,7 +19,8 @@ const iconMap = {
|
||||
[FsdChapters.FrontendLibraries]: ReactIcon,
|
||||
[FsdChapters.RelationalDatabases]: DatabaseIcon,
|
||||
[FsdChapters.BackendJavascript]: NodeIcon,
|
||||
[FsdChapters.Python]: Python
|
||||
[FsdChapters.Python]: Python,
|
||||
[FsdChapters.Career]: Graduation
|
||||
};
|
||||
|
||||
type ChapterIconProps = {
|
||||
|
||||
@@ -126,20 +126,15 @@
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
.super-block-accordion .coming-soon {
|
||||
background-color: var(--primary-background);
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 20px;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.super-block-accordion .coming-soon-module {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.super-block-accordion .module-intro {
|
||||
margin-left: 17px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.full-width-container {
|
||||
position: relative;
|
||||
left: 50%;
|
||||
|
||||
@@ -23,6 +23,7 @@ const { showUpcomingChanges } = envData;
|
||||
interface ChapterProps {
|
||||
dashedName: string;
|
||||
children: ReactNode;
|
||||
comingSoon?: boolean;
|
||||
isExpanded: boolean;
|
||||
totalSteps: number;
|
||||
completedSteps: number;
|
||||
@@ -66,12 +67,6 @@ const isLinkModule = (name: string) => {
|
||||
return module?.moduleType === 'review';
|
||||
};
|
||||
|
||||
const isLinkChapter = (name: string) => {
|
||||
const chapter = chapters.find(chapter => chapter.dashedName === name);
|
||||
|
||||
return chapter?.chapterType === 'exam';
|
||||
};
|
||||
|
||||
const getBlockToChapterMap = () => {
|
||||
const blockToChapterMap = new Map<string, string>();
|
||||
chapters.forEach(chapter => {
|
||||
@@ -103,6 +98,7 @@ const Chapter = ({
|
||||
dashedName,
|
||||
children,
|
||||
isExpanded,
|
||||
comingSoon,
|
||||
totalSteps,
|
||||
completedSteps
|
||||
}: ChapterProps) => {
|
||||
@@ -123,15 +119,19 @@ const Chapter = ({
|
||||
{t(`intro:full-stack-developer.chapters.${dashedName}`)}
|
||||
</div>
|
||||
<div className='chapter-button-right'>
|
||||
<span className='chapter-steps'>
|
||||
{t('learn.steps-completed', {
|
||||
totalSteps,
|
||||
completedSteps
|
||||
})}
|
||||
</span>
|
||||
<span className='checkmark-wrap chapter-checkmark-wrap'>
|
||||
<CheckMark isCompleted={isComplete} />
|
||||
</span>
|
||||
{!comingSoon && (
|
||||
<>
|
||||
<span className='chapter-steps'>
|
||||
{t('learn.steps-completed', {
|
||||
totalSteps,
|
||||
completedSteps
|
||||
})}
|
||||
</span>
|
||||
<span className='checkmark-wrap chapter-checkmark-wrap'>
|
||||
<CheckMark isCompleted={isComplete} />
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
<span className='dropdown-wrap'>
|
||||
<DropDown />
|
||||
</span>
|
||||
@@ -182,15 +182,6 @@ const Module = ({
|
||||
);
|
||||
};
|
||||
|
||||
const ComingSoon = ({ children }: { children: ReactNode }) => {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<li className='coming-soon'>
|
||||
{children} <span className='badge'>{t('misc.coming-soon')}</span>
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
const LinkBlock = ({
|
||||
superBlock,
|
||||
challenges
|
||||
@@ -236,6 +227,7 @@ export const SuperBlockAccordion = ({
|
||||
modules: chapter.modules.map((module: Module) => ({
|
||||
name: module.dashedName,
|
||||
comingSoon: module.comingSoon,
|
||||
moduleType: module.moduleType,
|
||||
blocks: populateBlocks(module.blocks)
|
||||
}))
|
||||
}));
|
||||
@@ -250,31 +242,6 @@ export const SuperBlockAccordion = ({
|
||||
return (
|
||||
<ul className='super-block-accordion'>
|
||||
{allChapters.map(chapter => {
|
||||
// show coming soon on production, and all the challenges in dev
|
||||
if (chapter.comingSoon && !showUpcomingChanges) {
|
||||
return (
|
||||
<ComingSoon key={chapter.name}>
|
||||
{Object.values(FsdChapters).includes(chapter.name) && (
|
||||
<ChapterIcon
|
||||
className='map-icon'
|
||||
chapter={chapter.name as FsdChapters}
|
||||
/>
|
||||
)}
|
||||
{t(`intro:full-stack-developer.chapters.${chapter.name}`)}
|
||||
</ComingSoon>
|
||||
);
|
||||
}
|
||||
|
||||
if (isLinkChapter(chapter.name)) {
|
||||
return (
|
||||
<LinkBlock
|
||||
key={chapter.name}
|
||||
superBlock={superBlock}
|
||||
challenges={chapter.modules[0]?.blocks[0]?.challenges}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
const chapterStepIds: string[] = [];
|
||||
chapter.modules.forEach(module => {
|
||||
const { blocks } = module;
|
||||
@@ -293,18 +260,51 @@ export const SuperBlockAccordion = ({
|
||||
key={chapter.name}
|
||||
dashedName={chapter.name}
|
||||
isExpanded={expandedChapter === chapter.name}
|
||||
comingSoon={chapter.comingSoon}
|
||||
totalSteps={chapterStepIds.length}
|
||||
completedSteps={completedStepsInChapter}
|
||||
>
|
||||
{chapter.modules.map(module => {
|
||||
// show coming soon on production, and all the challenges in dev
|
||||
if (module.comingSoon && !showUpcomingChanges) {
|
||||
if (module.moduleType === 'review') {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { note, intro } = t(
|
||||
`intro:full-stack-developer.module-intros.${module.name}`,
|
||||
{ returnObjects: true }
|
||||
) as {
|
||||
note: string;
|
||||
intro: string[];
|
||||
};
|
||||
|
||||
return (
|
||||
<ComingSoon key={chapter.name}>
|
||||
<span className='coming-soon-module'>
|
||||
{t(`intro:full-stack-developer.modules.${module.name}`)}
|
||||
</span>
|
||||
</ComingSoon>
|
||||
<Disclosure
|
||||
key={module.name}
|
||||
as='li'
|
||||
defaultOpen={expandedModule === module.name}
|
||||
>
|
||||
<Disclosure.Button className='module-button'>
|
||||
<div className='module-button-left'>
|
||||
<span className='dropdown-wrap'>
|
||||
<DropDown />
|
||||
</span>
|
||||
{t(`intro:full-stack-developer.modules.${module.name}`)}
|
||||
</div>
|
||||
</Disclosure.Button>
|
||||
<Disclosure.Panel as='ul' className='module-panel'>
|
||||
<div className='module-intro'>
|
||||
{note && (
|
||||
<p>
|
||||
<b>{note}</b>
|
||||
</p>
|
||||
)}
|
||||
{intro &&
|
||||
intro.length > 0 &&
|
||||
intro.map(ntro => <p key={ntro}>{ntro}</p>)}
|
||||
</div>
|
||||
</Disclosure.Panel>
|
||||
</Disclosure>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"name": "Nano Quiz",
|
||||
"blockType": "quiz",
|
||||
"blockLayout": "link",
|
||||
"isUpcomingChange": true,
|
||||
"dashedName": "quiz-nano",
|
||||
"superBlock": "full-stack-developer",
|
||||
"challengeOrder": [
|
||||
{ "id": "66f1b03b922a53cb231e1c0d", "title": "Nano Quiz" }
|
||||
],
|
||||
"helpCategory": "Backend Development"
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"name": "Nano Review",
|
||||
"blockType": "review",
|
||||
"blockLayout": "link",
|
||||
"isUpcomingChange": true,
|
||||
"dashedName": "review-nano",
|
||||
"superBlock": "full-stack-developer",
|
||||
"challengeOrder": [
|
||||
{ "id": "6724e49b3e568c23436db428", "title": "Nano Review" }
|
||||
],
|
||||
"helpCategory": "Backend Development"
|
||||
}
|
||||
-455
@@ -1,455 +0,0 @@
|
||||
---
|
||||
id: 66f1b03b922a53cb231e1c0d
|
||||
title: Nano Quiz
|
||||
challengeType: 8
|
||||
dashedName: quiz-nano
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
To pass the quiz, you must correctly answer at least 18 of the 20 questions below.
|
||||
|
||||
# --quizzes--
|
||||
|
||||
## --quiz--
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
A word processor.
|
||||
|
||||
---
|
||||
|
||||
A program that makes text smaller.
|
||||
|
||||
---
|
||||
|
||||
A prefix that means small, tiny.
|
||||
|
||||
#### --answer--
|
||||
|
||||
Nano is a small, easy-to-use text editor that runs in a terminal.
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
How do you run or start nano from a terminal?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Type `run nano`, then press the **Enter** key.
|
||||
|
||||
---
|
||||
|
||||
Type `start nano`, then press the **Enter** key.
|
||||
|
||||
---
|
||||
|
||||
Type `nano.exe`, then press the **Enter** key.
|
||||
|
||||
#### --answer--
|
||||
|
||||
Type `nano`, then press the **Enter** key.
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
How do you open a text file using nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Type `nano.exe [FILE]`, then press the **Enter** key.
|
||||
|
||||
---
|
||||
|
||||
Type `emacs [FILE]`, then press the **Enter** key.
|
||||
|
||||
---
|
||||
|
||||
Type `vim [FILE]`, then press the **Enter** key.
|
||||
|
||||
#### --answer--
|
||||
|
||||
Type `nano [FILE]`, then press the **Enter** key.
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What type of files is nano capable of creating and modifying?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
PDF files.
|
||||
|
||||
---
|
||||
|
||||
Word documents.
|
||||
|
||||
---
|
||||
|
||||
Excel spreadsheets.
|
||||
|
||||
#### --answer--
|
||||
|
||||
Plain text files.
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
With nano already running, what is the command or sequence of keystrokes to save the current file?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Alt + E**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + T**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + U**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Ctrl + S**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
While running nano, how can you find help about using nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Type `nano -?`
|
||||
|
||||
---
|
||||
|
||||
Type `nano --help`
|
||||
|
||||
---
|
||||
|
||||
Perform a web search.
|
||||
|
||||
#### --answer--
|
||||
|
||||
Press **Ctrl + G**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
Where can you find the official documentation for nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
GNU.org
|
||||
|
||||
---
|
||||
|
||||
SuperUser.com
|
||||
|
||||
---
|
||||
|
||||
StackOverflow.com
|
||||
|
||||
#### --answer--
|
||||
|
||||
https://www.nano-editor.org/dist/latest/nano.html
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is/are the keystroke(s) to exit nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Press **Ctrl + Alt + Del**
|
||||
|
||||
---
|
||||
|
||||
Type `exit`
|
||||
|
||||
---
|
||||
|
||||
Press **Esc**
|
||||
|
||||
#### --answer--
|
||||
|
||||
Press **Ctrl + X**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What keystrokes allow you to begin a search of the current file?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Press **Alt + E**
|
||||
|
||||
---
|
||||
|
||||
Press **Ctrl + U**
|
||||
|
||||
---
|
||||
|
||||
Press **Ctrl + K**
|
||||
|
||||
#### --answer--
|
||||
|
||||
Press **Ctrl + B** or **Ctrl + F**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What keystrokes allow you to begin a spell check of the current file?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Press **Ctrl + D**
|
||||
|
||||
---
|
||||
|
||||
Press **Ctrl + T Ctrl + O**
|
||||
|
||||
---
|
||||
|
||||
Press **Ctrl + G**
|
||||
|
||||
#### --answer--
|
||||
|
||||
Press **Ctrl + T Ctrl + S**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
How can you comment or uncomment a line of text?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Press **Ctrl + U**
|
||||
|
||||
---
|
||||
|
||||
Press **Alt + C**
|
||||
|
||||
---
|
||||
|
||||
Press **Alt + 2**
|
||||
|
||||
#### --answer--
|
||||
|
||||
Press **Alt + 3**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
How can you display/hide line numbers while using nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
Press **Alt + H**
|
||||
|
||||
---
|
||||
|
||||
Press **Ctrl + 1**
|
||||
|
||||
---
|
||||
|
||||
Press **Alt + 3**
|
||||
|
||||
#### --answer--
|
||||
|
||||
Press **Alt + N**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
How do you undo a previous action in nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Ctrl + Shift + U**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + Y**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + Z**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Alt + U**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
How do you move the cursor to the beginning of the file in nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Ctrl + Y**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + PgUp**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + Home**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Alt + \\**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is the command to paste a cut line in nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Alt + V**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + Y**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + V**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Ctrl + U**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is the command to a cut line in nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Ctrl + S**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + R**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + C**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Ctrl + K**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is the command to go to a specific line number?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Alt + 2**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + 1**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + G**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Alt + G**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is the command to justify text in nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Ctrl + T**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + B**
|
||||
|
||||
---
|
||||
|
||||
**Alt + J**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Ctrl + J**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is the command to run a syntax check in nano?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Alt + /**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + L**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + T Ctrl + O**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Ctrl + T Ctrl + Y**
|
||||
|
||||
### --question--
|
||||
|
||||
#### --text--
|
||||
|
||||
What is the command to move the cursor to the beginning of a line?
|
||||
|
||||
#### --distractors--
|
||||
|
||||
**Ctrl + B**
|
||||
|
||||
---
|
||||
|
||||
**Ctrl + E**
|
||||
|
||||
---
|
||||
|
||||
**Alt + A**
|
||||
|
||||
#### --answer--
|
||||
|
||||
**Ctrl + A**
|
||||
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
---
|
||||
id: 6724e49b3e568c23436db428
|
||||
title: Nano Review
|
||||
challengeType: 24
|
||||
dashedName: review-nano
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
Description placeholder
|
||||
|
||||
# --assignment--
|
||||
|
||||
Review the Nano topics and concepts.
|
||||
@@ -1145,7 +1145,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"dashedName": "typescript-fundamentals",
|
||||
"comingSoon": true,
|
||||
@@ -1179,6 +1178,7 @@
|
||||
"modules": [
|
||||
{
|
||||
"dashedName": "python-basics",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-introduction-to-python" },
|
||||
{ "dashedName": "workshop-caesar-cipher" },
|
||||
@@ -1189,6 +1189,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-loops-and-sequences",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-working-with-loops-and-sequences" },
|
||||
{ "dashedName": "workshop-placeholder-loops-and-sequences" },
|
||||
@@ -1199,6 +1200,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-dictionaries-and-sets",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-working-with-dictionaries-and-sets" },
|
||||
{ "dashedName": "lecture-working-with-modules" },
|
||||
@@ -1210,6 +1212,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-error-handling",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-understanding-error-handling" },
|
||||
{ "dashedName": "lab-isbn-validator" },
|
||||
@@ -1219,6 +1222,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-classes-and-objects",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-classes-and-objects" },
|
||||
{ "dashedName": "workshop-placeholder-classes-and-objects" },
|
||||
@@ -1229,6 +1233,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-object-oriented-programming",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "lecture-understanding-object-oriented-programming-and-encapsulation"
|
||||
@@ -1249,6 +1254,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-linear-data-structures",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-working-with-common-data-structures" },
|
||||
{ "dashedName": "workshop-linked-list-class" },
|
||||
@@ -1259,6 +1265,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-algorithms",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-searching-and-sorting-algorithms" },
|
||||
{ "dashedName": "workshop-binary-search" },
|
||||
@@ -1273,6 +1280,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-graphs-and-trees",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-understanding-graphs-and-trees" },
|
||||
{ "dashedName": "workshop-shortest-path-algorithm" },
|
||||
@@ -1285,6 +1293,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "python-dynamic-programming",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{ "dashedName": "lecture-understanding-dynamic-programming" },
|
||||
{ "dashedName": "lab-nth-fibonacci-number" },
|
||||
@@ -1293,6 +1302,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"comingSoon": true,
|
||||
"moduleType": "review",
|
||||
"dashedName": "review-python",
|
||||
"blocks": [{ "dashedName": "review-python" }]
|
||||
@@ -1305,6 +1315,7 @@
|
||||
"modules": [
|
||||
{
|
||||
"dashedName": "bash-fundamentals",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "workshop-bash-boilerplate"
|
||||
@@ -1319,6 +1330,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "relational-databases",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "workshop-database-of-video-game-characters"
|
||||
@@ -1336,6 +1348,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "bash-scripting",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "workshop-bash-five-programs"
|
||||
@@ -1350,6 +1363,7 @@
|
||||
},
|
||||
{
|
||||
"dashedName": "sql-and-bash",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "workshop-sql-student-database-part-1"
|
||||
@@ -1378,22 +1392,12 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"dashedName": "nano",
|
||||
"dashedName": "git",
|
||||
"comingSoon": true,
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "workshop-castle"
|
||||
},
|
||||
{
|
||||
"dashedName": "review-nano"
|
||||
},
|
||||
{
|
||||
"dashedName": "quiz-nano"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dashedName": "git",
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "workshop-sql-reference-object"
|
||||
},
|
||||
@@ -1413,6 +1417,7 @@
|
||||
},
|
||||
{
|
||||
"moduleType": "review",
|
||||
"comingSoon": true,
|
||||
"dashedName": "review-relational-databases",
|
||||
"blocks": [
|
||||
{
|
||||
@@ -1425,21 +1430,87 @@
|
||||
{
|
||||
"dashedName": "backend-javascript",
|
||||
"comingSoon": true,
|
||||
"modules": []
|
||||
},
|
||||
{
|
||||
"chapterType": "exam",
|
||||
"comingSoon": true,
|
||||
"dashedName": "exam-certified-full-stack-developer",
|
||||
"modules": [
|
||||
{
|
||||
"moduleType": "exam",
|
||||
"dashedName": "exam-certified-full-stack-developer",
|
||||
"blocks": [
|
||||
{
|
||||
"dashedName": "exam-certified-full-stack-developer"
|
||||
}
|
||||
]
|
||||
"dashedName": "nodejs-core-libraries",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "node-package-manager",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "http-and-the-web-standards-model",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "rest-api-and-web-services",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "introduction-to-express",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "express-middleware",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "error-handling-in-express",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "websockets",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "node-and-sql",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "security-and-privacy",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "authentication",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "tooling-and-deployment",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"dashedName": "career",
|
||||
"comingSoon": true,
|
||||
"modules": [
|
||||
{
|
||||
"dashedName": "how-to-get-a-developer-job",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "capstone-project",
|
||||
"comingSoon": true,
|
||||
"blocks": []
|
||||
},
|
||||
{
|
||||
"dashedName": "certified-full-stack-developer-exam",
|
||||
"comingSoon": true,
|
||||
"blocks": [{ "dashedName": "exam-certified-full-stack-developer" }]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,9 +7,10 @@ export enum FsdChapters {
|
||||
Css = 'css',
|
||||
Javascript = 'javascript',
|
||||
FrontendLibraries = 'frontend-libraries',
|
||||
Python = 'python',
|
||||
RelationalDatabases = 'relational-databases',
|
||||
BackendJavascript = 'backend-javascript',
|
||||
Python = 'python'
|
||||
Career = 'career'
|
||||
}
|
||||
|
||||
export interface Chapter {
|
||||
|
||||
Reference in New Issue
Block a user