The Odin Project, fundando em 2013 por Erik Trautman, disponibiliza um currículo de codificação de open source de forma gratuita e totalmente online, auxiliando usuários a serem contratados como desenvolvedores e ajudando muitos outros no aprendizado de programação para a realização de projetos próprios.
O projeto é voltado para iniciantes em desenvolvimento web, sendo também para qualquer pessoa que queria trabalhar como desenvolvedor, seja realizando trabalho de freelance, construindo uma startup ou uma página inicial para si.
The Odin Project possui três faixas dispostas a escolha do aluno:
Fullstack Ruby on Rails: Essa faixa providencia uma visão geral de fullstack, que consiste em agir em todos os campos de um projeto. Sendo assim, é a trilha padrão para a grande parte dos inciantes.
Fullstack Javascript: Essa trilha tem seu foco na interação entre a página da web e os dados de Javascript e NodeJS.
Frontend: Tem a abordagem principal em HTML, CSS e Javascript, sem ser Ruby on Rails.
Abaixo estão alguns cursos incluídos nesses currículos:
Web Development 101: Oferece a chance de explorar variadas linguagens e tecnologias presentes no caminho de um desenvolvedor web. Apresenta HTML, CSS, Javascript, Ruby, Rails, Git e banco de dados.
Ruby/Ruby on Rails: É ensinado como se utilizar Ruby, uma linguagem open source focada em simplicidade e produtividade, e também um entendimento sobre bancos de dados. Posteriormente é apresentado o Ruby on Rails, sendo essa uma estrutura que possui Ruby em sua construção.
HTML e CSS: Junto com Javascript, The Odin Project se aprofunda em HTML e CSS e fornece todas as ferramentas para que os sites sejam fluídos, carreguem rapidamente e terem uma boa aparência. Também será apresentado sobre Git e implantação para a criação de um portfólio próprio, trabalhar com outras pessoas e ver seus trabalhos na web.
Database: The Odin Project apresenta a oportunidade de se trabalhar com database e projetos de open source.
Seja empregado: São oferecidas também auxílios na hora de se procurar um emprego.
Desenvolvedores da web tem o principal objetivo de criar e manter sites. Em geral, trabalham para cliantes esperando anunciar um produto ou serviço na web. Foco no projeto é algo normal e trabalhar em equipe para que as necessidades do cliente sejam atendidas também é.
Para quem gosta de construir utildades, experimentar novidades tecnológicas e resolver problemas de forma lógica, trabalhar como desenvolvedor da web é pedida certa. A procura por desenvolvedores é grande e o salário é confortável.
Tipos de desenvolvedores da web:
Front-end: É a cara do site, o que é visto pelo navegador, estando incluso a apresentação de conteúdos e elementos de interface. As ferramentas dos desenvolvedores de front-end são HTML, CSS, JavaScript e suas estruturas que auxiliem em uma apresentação eficaz e de boa experiência para os usuários.
Back-end: São as partes internas do aplicativo, que se encontram no servidor. O back-end fornece e armazena os dados necessários para que o front-end tenha sucesso. O número de usuários influencia na dificuldade do processo. Java, Phyton e Ruby são as ferramentas de um desenvolvedor back-end.
Full-stack: Desenvolvedores full-stack se sentem confortáveis trabalhando tanto como front-end quanto back-end, assim podendo exercer as duas funções.
Opções de sistema operacional
Em geral, os sistemas operacionais são desenvolvidas por pessoas não técnicas, então eles podem esconder ou dificultar a utilização de muitas linguagens e estruturas necessárias para desenvolver. Esse é o primeiro obstáculo que faz com que muitos desenvolvedores desistam antes mesmo de começar.
Fazer modificações ou dual booting em um computador para poder utillizar as ferramentas necessárias pode deixar o início da programação muito mais fácil.
Mac
É utilizado pela maioria dos desenvolvedores profissionais, visto que a maioria confia em sistemas baseados em Unix. Após a instalação de alguns programas, tudo estará pronto para iniciar.
Linux
O Linux é um sistema operacional gratuito e um open source, que funciona bem com todas as liguagens de programação. Nativamente, as maioria das ferramentas já é criada pensando no Linux, assim terão mais atualizações e informações.
Máquinas Virtuais e Dual Boots
Máquina virtual é uma emulação de computador executado seu sistema operacional existente. Ela permite usar um sistema operacional dentro de outro, por exemplo, executar um Linux dentro de um Windows. Máquinas virtuais são simples e sem riscos na instalação. São ótimas escolhas para um iniciar rápido para novos desenvolvedores.
Dual Boot é o nome para a instalação de dois sistemas operacionais em um mesmo computador, dando ao desenvolvedor a opção de iniciar com Linux ou Windows. A vantagem é que o dual boot pode usar todos os recursos presentes no computador, sendo assim, uma operação mais rápida. O risco do dual boot existe pois as partições do disco rígido são acessadas na inicialização mas esse risco é baixo.
Editores de Texto
É a ferramenta mais utilizada por desenvolvedores. Um bom editor de texto pode auxiliar e muito na criação de códigos, tendo verificaçao de código em tempo real, destaque de sintaxe e formatação automática.
Editores de texto como Microsoft Word e Libre-Office Writer possuem informaçãoes de como exibir o texto na tela, dados de como exibir gráficos. Já editores de textos simples como VSCode e Sublime, não salvam informações adicionais, o que permite que programas como o Ruby possam ler e executar o arquivo como código.
Editores de código
São ferramentas de desenvolvimento web especializadas. São personalizáveis e oferecem recursos para facilitar a vida de um desenvolvedor. Plug-ins, realce de sintaxe, fechamento automático de colchetes e chaves e linting são apenas alguns dos benefícios de usar um editor de código.
VSCode é um editor de código gratuito. Tem excelentes suportes de add-on e integração Git. É a escolha mais popular, sendo assim, possui um suporte fácil na comunidade.
Front-end
Introdução
As “linguagens front-end” ficam no navegador. Quando se pretende digitar o endereço de um site e se aperta o ENTER, um arquivo HTML é enviado do servidor web para o navegador, provavelmente pedindo um arqivo CSS e JavaScript.
O papel do HTML é estruturar a página na web, CSS tem a missão de determinar como ela vai se aparecer e JavaScript irá fazer com que a página funcione.
O dever do front-end é transformar o trabalho de designers em código. Aquele que trabalha com front-end tem seu lugar entre os designers e os programadores back-end. Trabalha em transformar as imagens dos designers em código e, então, conecta os dados com o desenvolvedor back-end para que os lugares certos. Também é dever de um desenvolver front-end alterar a página quando for necessitado pelo usuário.
O usuário é uma parte importante do front-end, pois é para ele que o trabalho é destinado. Quanto maior o entendimento com o usuário maior o sucesso da página.
Back-end
Introdução
Diferenciando do front-end, no back-end é possível executar qualquer coisa pois o não terá a interferência do navegador do usuário para entender o que está acontecendo. Sua única preocupção é enviar os arquivos de maneira correta e por causa disso, existe muitas opções de linguagens back-end.
Algumas linguagens são mais populares se comparadas a outras. Ao utilizar o seu próprio servidor, a escolha da linguagem se torna mais livre, porém se usar a nuvem, tavez a linguagem fique restrita ao que o provedor escolher.
As linguagens mais populares são PHP, ASP, NET, Ruby, Phyton e Java que é diferente de JavaScript.
Framework
Introdução
É um código JS que torna a escrita de um aplicativo da web interativo mais rápido e fácil.
Frameworks fornecem uma ótima organização. Eles forçam a organização de códigos e arquivos de forma que fiquem modulares e limpos. Cada lingugem possui diversas estruturas, como Embem, Rails, Meteor, entre outros.
Sobre licenciamento, em geral, os frameworks são open sources e isso torna possível usar, modificar e lucrar com eles, sem precisar pagar taxas aos criadores originais.
Introdução
É uma linguagem orientada ao objeto, ou seja, tudo em Ruby é objeto, desde os tipos básicos de dados.
Os dados básicos de Ruby são: números (inteiros e flutuantes), strings, símbolos e booleanos (verdadeiro, falso e nulo).
Números
Ruby possui todos os operadores matemáticos esperados. Inteiros são todos os números e os flutuantes serão aqueles que apresentam vírgula decimal. O resultado de uma operação aritmética com dois inteiros em Ruby sempre irá resultar em um número inteiro.
String
As strings podem ser formadas com aspas duplas "" ou simples ''. Eles são muito semelhantes, mas existem algumas diferenças. Especificamente, a interpolação de string e os caracteres de escape que discutiremos em breve funcionam apenas entre aspas duplas, não entre aspas simples.
Símbolos
Enquanto strings precisam ser armazenadas na memória mesmo que já exista uma com o mesmo valor, símbolos são armazenados somente uma vez na memória.
Booleanos
Verdadeiro e falso
Valores booleanos de verdadeiro e falso representam exatamente o que o nome diz. Retornam verdadeiro e falso, respectivamente.
Nill
Em Ruby, sempre um valor é retornado. Quando não existe nada para retornar, ele retornará nulo (nill).
Variáveis
Variáveis são uma forma de atribuir dados a nomes em seus programas. E é assim que se declara uma variável:
age = 18 #=> 18
Comandos de saída e entrada
Para enviar informações, como em seu ambiente irb ou REPL ou na linha de comando, podemos usar o comando print.
Para aceitar a entrada de um usuário, podemos usar o comando gets. Quando usamos gets, a execução do programa para e espera pela entrada do usuário. Depois que o usuário pressiona Enter, o programa continuará sua execução.
Loop
É um loop infinito que continuará, a menos que você peça especificamente para ele parar, usando o comando break.
While Loop
Um loop while é semelhante ao loop loop, exceto que você declara a condição que sairá do loop na frente.
Until Loop
O loop until é o oposto do loop while. Um loop while continua enquanto a condição for verdadeira, enquanto um loop until continua enquanto a condição for falsa. Esses dois loops podem, portanto, ser usados de forma bastante intercambiável.
Intervalos
Ruby nos permite definir um intervalo. Só é preciso fornecer a Ruby o valor inicial, o valor final e se o intervalo será inclusivo ou exclusivo.
For Loop
Um loop for é usado para iterar por meio de uma coleção de informações, como um array ou intervalo. Esses loops são utilizados se for necessário fazer algo um determinado número de vezes enquanto usa um iterador.
Times Loop
Ele funciona iterando através de um loop um número especificado de vezes e até mesmo oferece o bônus de acessar o número através do qual está iterando no momento.
Loops Upto e Downto
Os métodos Ruby upto e downto fazem exatamente o que o nome indica. Você pode usar esses métodos para iterar de um número inicial para cima ou para baixo para outro número, respectivamente.
Métodos integrados de Ruby
Uma das grandes vantagens do Ruby para novos programadores é seu grande número de métodos integrados. Os loops times e upto são ambos métodos incluídos como parte da classe Integer do Ruby.
Ruby é uma das poucas linguagens que oferece retorno implícito para métodos, o que significa que um método Ruby retornará a última expressão que foi avaliada mesmo sem a palavra-chave return.
Métodos de encadeamento
Uma das propriedades dos métodos que permite escrever código muito conciso é poder encadear métodos. Isso pode ser feito usando métodos integrados de Ruby ou com métodos criados pelo usuário.
Git
Git é um sistema de controle de versão que auxilia na hora de salvar arquivos e diretórios. Um salvamento em um editor de texto pode registrar todas as palavras em um documento como um único arquivo.
As diferenças nos arquivos é registrado quando se salva no Gi, assim como também é registrado o histórico do salvamento. O Git auxilia o desenvolver ao permitir revisar o projeto e ver as alterações, assim sendo possível restaurar o arquivo para uma versão passada.
Quando se tem acesso a uma rede, é possível acessar o GitHub, um lugar onde os desenvolvedores podem compartilhar seus projetos e interagir com outros desenvolvedores.
Git trabalha na máquina local e o GitHub funcina na web, onde pode armazenar projetos. A grande maioria das empresas de software avaliam as habilidades de um desenvolvedor com o Git e GitHub.
HTTP
HTTP é apenas uma forma de estruturar a conversa de solicitação e resposta entre o navegador e o servidor. O protocolo descreve como esse breve diálogo deve ocorrer.
Um componente importante a se prestar atenção é o fato de que a solicitação e a resposta têm componentes de cabeçalho e (geralmente) de corpo. O cabeçalho contém informações sobre a solicitação ou resposta em si (metadados), incluindo para qual site enviar ou retornar e qual é o status da resposta. O corpo da solicitação pode conter dados enviados por um formulário ou cookies ou tokens de autenticação, enquanto a resposta geralmente contém a página HTML que você está tentando acessar.
O outro componente principal é que cada solicitação usa um dos quatro “verbos” principais - GET, POST, PUT e DELETE.
REST
REST (abreviação de Representational state transfer), diz que existem apenas 7 tipos diferentes de ações que geralmente se deseja fazer para um recurso individual através da web.
MVC
Quando se cria um Rail, uma enorme quantidade de pastas e arquivos que são organizados pelo Método, Vizualização e Controle.
APIs
Uma API é apenas uma interface. Nosso navegador da web vai pela porta da frente para exibir um monte de informações do Facebook, e nosso servidor da web vai pela porta lateral para os mesmos dados por meio da API.
Coockies
Os cookies são basicamente uma forma de os sites se lembrarem de quem você é de uma solicitação para outra.
Cookies são pequenos pedaços de dados que seu navegador envia ao site toda vez que você faz uma solicitação. Da perspectiva do servidor da web, permite que o servidor identifique você como a mesma pessoa que fez qualquer uma de uma série de solicitações anteriores. Ele preserva o estado da sua sessão.
Sessões
Os cookies são importantes porque permitem que você tenha uma única “sessão” contínua enquanto está interagindo com um site. Isso significa que você só precisa fazer login uma vez, em vez de para cada solicitação.
Seu navegador inclui todos os cookies que um determinado site da Web definiu junto com sua solicitação normal e o servidor usa essas cadeias de caracteres para descobrir qual usuário você é e se está conectado, quais são suas configurações.
Autenticação
Você recuperará o cookie que o usuário envia para você, usa-o para encontrar esse usuário em seu banco de dados e (se o usuário existir), pode exibir a página da web personalizada para esse usuário.
Autorização
A autenticação permite determinar QUEM é o usuário, mas também pode limitar o que a pessoa pode ver com base em seu nível de permissão.
Roteador
O roteador é basicamente apenas um serviço correspondente. Ele examina o verbo HTTP (GET, POST, PUT, DELETE) e a URL que está sendo solicitada e a combina com a ação do controlador apropriada a ser executada. É uma função muito simples, mas essencial. Se não conseguir encontrar uma rota que corresponda à solicitação, seu aplicativo gerará um erro.
Renderizando e redirecionando
Embora Rails irá renderizar implicitamente um arquivo de visão que tem o mesmo nome da ação do seu controlador, existem várias situações em que você pode querer sobrescrevê-lo. Um caso principal para isso é quando você realmente deseja redirecionar completamente o usuário para uma nova página em vez de renderizar o resultado da ação do controlador.
Ativos
Ativos em seu aplicativo são arquivos adicionais que são chamados pelo navegador após o recebimento inicial de HTML. Eles incluem coisas como folhas de estilo CSS, arquivos Javascript, imagens, vídeos.
Active Record
Ele fornece uma interface semelhante a Ruby para fazer quase tudo que você pode fazer com instruções SQL bare-metal.
HTML
HTML é a marcação de tudo real em um site, como todo o texto presente nele. O texto está dentro de uma tag HTML que informa ao navegador como ordenar as informações.
Formulários
Os formulários são uma das partes mais importantes do seu site. Eles são a porta de entrada do usuário em seu back end - o usuário fornece dados em um formulário e as informações podem ser utilizadas.
CSS
CSS diz ao navegador se o usuário tem o interesse de ver alguma tag de HTML para alterar algo no site, como a disposição do texto ou a cor de fundo.
Os navegadores modernos possuem ferramentas que auxiliam ao desenvolver um site. Os chamados “inspetor da web” permitem inspecionar elementos HTML, CSS e JavaScript.
É um dever do desenvolvedor web aprender como usar todas as ferramentas em seu poder. Quando maior o conhecimento no manuseio dessas ferramentas mais rápido será para encontrar um bug em um site, mais rápido será para contornar problemas de CSS com layout.
Modelo de caixa
O modelo de caixa define como cada elemento na página é colocado e como eles se relacionam entre si.
Grid
As limitações das técnicas de layout de css mais tradicionais se tornaram mais aparentes com o enorme crescimento das telas de dispositivos móveis e tablets, uma nova maneira foi necessária para reduzir a complexidade atual da criação de layouts de sites responsivos. O Grid foi introduzido para atender a essa necessidade.
O layout de grid apresenta um sistema de grade bidimensional que funciona com colunas e linhas. O resultado é a capacidade de criar layouts complexos de uma maneira simples e limpa.
Design e Experiência do Usuário
A experiência do usuário se concentra em três coisas - o usuário pode fazer o que está tentando fazer de forma eficaz, eficiente e com satisfação.
Web design é mais do que apenas construir coisas “bonitas”; trata-se de criar experiências úteis e eficazes para seus usuários.
Design Responsável
O design responsável é a criação de sites que respondem ao contexto do usuário, seja o dispositivo em que estão visualizando, o tamanho do navegador ou as necessidades de acessibilidade.
Introdução
Todo aplicativo da web possui uma camada inferior, e essa camada recebe o nome banco de dados ou database. A complexidade pode variar dependendo do arquivo guardado, sendo simples o de uma planilhas mas complexo como o de uma rede social.
SQL, que é utilizado para o acesso de database, possui uma sintaxe mais simples se em comparação com uma liguagem de programção.
Dados são o núcleo de qualquer aplicativo na web e o conhecemento de SQL pode ajudar, como saber o que está acontecendo na ferramenta ORM, como Active Record. E essa é uma das funções do SQL, consultar no database e também adicionar e alterar dados.
Um exemplo simples é conferir o nome de todos os usuários que se inscreveram em determinada data com determinado código. Sendo possível ordenar a lista por tópicos.
Um exemplo complexo, mostrar uma lista com os pedidos enviados para estados com mais de 1000 usuários por quantidade e valor total dos pedidos.
Ou ainda outro exemplo, É possível fazer perguntas de análise de marketing, como quais canais produzem usuários que atendem a um critério de engajamento.
Nesses três exemplos, o database é utilizado. E geralmente, os databases falam SQL e o ele possui algumas palavras usadas de forma consistente, ou seja, não é uma linguagem grande.
No início, as perguntas feitas serão como as de cima. Mas em seguida, será preciso descobrir como faze-lás de uma forma adequada ao database.
Afirmações:
SELECT
CREATE TABLE
DROP TABLE
CREATE INDEX
DROP INDEX
UPDATE
DELETE
INSERT INTO
CREATE DATABASE
DROP DATABASE
COMMIT (conceito)
ROLLBACK (conceito)
Cláusulas:
DISTINCT
WHERE
IN
AND
OR
BETWEEN
LIKE
ORDER BY
COUNT
Funções
GROUP BY
HAVING
AVG
COUNT
MIN
MAX
SUM
SQL é uma linguagem usada para se comunicar com muitos databases que utilizam muitas tabelas para armanezar os mais diferentes conteúdos. Essas tabelas apresentam uma longa extensão de linhas, sendo cada uma dessas linhas um registro diferente e cada coluna um atributo diferente. Todas as tabelas possuem uma coluna de “ID”, que fornece os números de linhas exclusivos, a chamada “chave primária” do registro.
SQL te permite fazer de tudo tendo como os primeiros comandos a opção de criar um database ou uma tabela (CREATE DATABASE e CREATE TABLE), assim como a opção de destruir ou alterar esses dados. Sempre que uma atualização é realizada, ela fornece uma informação que se armazena em um espaço chamado “Schema”.
Uma opção de algo para se fazer em um database é CREATE INDEX que consiste em indexar uma coluna para pesquisas ou também dizer ao database o tipo único de valor permitido.
Criar índices auxilia no trabalho no futuro, pois será função desse índice classificar as tabelas com certa antecedência. Então, ao criar esses índices o trabalho fica muito mais rápido.
SQL usa ponto e vírgula ao final das linhas e aspas simples (‘) no lugar das aspas duplas (“).
Mexendo com os dados
Após o término da configuração do database e tabelas vazias estarem à disposição, é hora de usar as instruções para SQL para iniciar. As ações principais são as pertencentes ao CRUD (Create, Read, Uptade e Destroy) ,ou seja, Criar, Ler, Atualizar e Destruir. Ler será o comando com o maior número de utilização pois ler dados será muito comum. Usar comandos sem especificar uma condição poderá causar erros pois a aplicaçao será para todo o database. Essas condições também podem receber o nome de cláusula, Ao usar o comando “Destroy”, é um erro comum usar DELETE * FROM users sem ter uma condição WHERE pois pode ocorrer um erro, visto que usúarios errados seriam apagados. É possível usar >,< e <= para especificar o que se procura. Ou ainda operadores lógicos como AND, OR, NOT para mais de uma cláusula.
Ao usar “CREATE” é necessário usar “INSERT INTO” e determinar em que colunas o dado será inserido e, posteriormente, qual o valor desses dados. Visto que essa ação cria linhas, não é necessário o cuidado em escolher as linhas certas.
Quando usar UPDATE é necessário especificar quais as linhas e os valores que sofrerão a atualização.
Ao usar WHERE é necessário ter cuidado para decidir a linha correta pois caso não seja muito específico, todas as linhas encontradas serão atualizadas.
Consultar READ com SELECT é considerado o mais padrão. Como por exemplo: SELECT * FROM users WHERE created_at <'2013-12-11 15:35:59 -0800'. O * significa que todoas as colunas foram selecionadas. É sempre indicado especificar o que se procura.
Usar o SELECT DISTINCT é uma boa forma de procurar por valores únicos, como nomes distintos de uma lista.
Mesclando tabelas
Usar o JOIN irá unir todas as postagens criadas se assim você desejar. Existem ao todo quatro possibilidades diferentes de ocorrer esse JOIN.
INNER JOIN, também conhecido como JOIN: Mantém as linhas das duas tabelas correspondentes a pesquisa.
Um exemplo:
(SELECT * FROM usuários JOIN posts ON users.id = posts.user_id).
Esse comando seria equivalente a pedir as postagens de todos os usúarios. No fim, apareceria apenas os usúarios que escreveram algo e apenas os autores que tivessem o seu user_id compatível com a pesquisa. Quanto mais o autor escrever, mais linhas retornarão.
LEFT OUTER JOIN: Todas as linhas da esquerda serão mantidas e serão adicionadas as linhas da direita que correspondam com a pesquisa. Todas as células que ficarem vazias serão definidas como NULL.
RIGHT OUTER JOIN : É o oposto do LEFT OUTER JOIN. Mantendo as linhas da direita e acrescenta as linhas da esquerda que correspondem a pesquisa.
FULL OUTER JOIN: Todas as linhas são mantidas, sendo incompatíveis ou não. Se uma linha for incompátivel será definida como NULL.
É possível especificar as condições para a junção, como: (SELECT * FROM usuários JOIN posts ON users.id = posts.user_id WHERE users.id = 42).
Usando funções para agregar seus dados
Quando uma consulta SQL simples é realizada, geralmente uma enorme quantidade de linhas é retornada. Porém, às vezes, se espera no retorno apenas um valor. Como quando se usa o COUNT para realizar a contagem do número de postagens de um único usúario. Quando esse for o objetivo, poderá ser usado uma das funções de “agregação” que são oferecidas pelo SQL, como SUM, MIN e MAX)
Um exemplo: SELECT MAX (user.age) FROM users.
Essa função irá operar em apenas uma única coluna, a menos que se use o *, que funciona em apenas algumas funções como COUNT.
É realmente útil agrupar todos os dados em blocos específicos de seus dados e depois agrupá-los. Um exemplos é exibir COUNT de postagens para EACH usuário. Seria algo como:
SELECT users.id, users.name, COUNT (posts. *) AS posts_written
FROM usuários
JOIN postS ON users.id = posts.user_id
GROUP BY users.id;
Aprender como usar essas coisas é útil para fazer pesquisas de forma inteligente.
Introdução
JavaScript é considerado o futuro. A lógica está cada vez chegando mais ao lado do cliente, facilitando assim as experiências do usuário.
Diferente das outras linguagens, JavaScript não impõe padrões e estruturas de dados. Essa liberdade em casos simples podem até ser boa mas com o passo da complexidade do programa, pode causar dor de cabeça.
Objetos e Construção de Objeto
Usar a sintaxe literal do objeto é a melhor maneira de o definir. Como no exemplo:
const myObject = {
property: 'Value!',
otherProperty: 77,
"obnoxious property": function() {
}
}
Objetos como padrão de projeto
Uma das maneiras de organizar um código é simplesmente agrupar as coisas em objetos.
// examplo um
const playerOneName = "tim"
const playerTwoName = "jenn"
const playerOneMarker = "X"
const playerTwoMarker = "O"
// example dois
const playerOne = {
name: "tim",
marker: "X"
}
const playerTwo = {
name: "jenn",
marker: "O"
}
O exemplo um pode parece mais fácil mas o exemplo dois possui algumas vantagens. Por exemplo, se for necessário checar um estoque com inúmeros produtos e encontrar um específico utilizando seu nome, preço e descrição, será complicado fazer manualmente.
Construtores de objetos
Quando se precisa duplicar um objeto como um intem em um inventário, usar um construtor de objeto é a melhor escolha. É semelhante a isso:
function Player(name, marker) {
this.name = name
this.marker = marker
}
Usa-se a função "new"
const player = new Player('steve', 'X')
console.log(player.name) // 'steve'
Também é possível atribuir funções ao objeto
function Player(name, marker) {
this.name = name
this.marker = marker
this.sayName = function() {
console.log(name)
}
}
const player1 = new Player('steve', 'X')
const player2 = new Player('also steve', 'O')
player1.sayName() // logs 'steve'
player2.sayName() // logs 'also steve'
Protótipo
Todos os objetos em JavaScript possuem um protótipo. O objeto original possui acesso a todos os métodos e propriedades de seu protótipo.
Construtor
Um dos problemas dos construtores é que apesar de se parecerem com funções regulares, eles não são. E se tentar usar uma função construtora sem a nova palavra-chave, o programa não irá funcionar.
Função de Fábrica
É semelhante ao consrutor, mas no lugar de “new” para criar um objeto, simplesmente configuram e retornam o novo objeto quando a função é chamada.
const personFactory = (name, age) => {
const sayHello = () => console.log('hello!');
return { name, age, sayHello };
};
const jeff = personFactory('jeff', 27);
console.log(jeff.name); // 'jeff'
jeff.sayHello(); // calls the function and logs 'hello!'
Abreviatura de objeto
Ao se criar um objeto, quando está se referindo a uma variável que possui o mesmo nome da propriedade do objeto que está criado, poderá ser escrito assim:
return {name, age, sayHello}
Escopo e Encerramento
Escopo é o local onde variáveis e funções podem ser usadas em códigos.
Encerramento é a ideia de que as funções retêm seu escopo mesmo se forem passadas e chamadas fora do escopo.
O Padrão do Módulo
São essencialmente uma sintaxe para importar e exportar código entre diferentes arquivos JavaScript. Os módulos são semelhantes às funções de fábrica.
Classes
JavaScript não possui classes no mesmo sentido de outras liguagens orientadas a objetos. Mas ES6 introduziu uma sintaxe para a criação de objetos que usa a palavra-chave “class”.
Módulos ES6
Os módulos ES6 estão começando a aparecer em muitas bases de códigos na rede e ao serem colocados em funcionamento, será possível explorar novas partes do JavaScript.
npm
O gerenciador de pacotes do nó (node package manager) é uma ferramenta de linha de comando que dá acesso a um gigantesco repositório de plug-ins, bibliotecas e ferramentas.
Webpack
Webpack é simplesmente uma ferramenta para agrupar módulos.
Linters
Linters são ferramentas que irão escanear seu código com um conjunto de regras de estilo e relatar qualquer erro que encontrarem. Em alguns casos, eles podem até corrigir os erros automaticamente
Prettier
Prettier pega um código JS e o formata automaticamente de acordo com um conjunto de regras.
Angular
Foi o primeiro grande lançador em frameworks. Um grande atrativo era a sua abordagem discreta, pois podia-se controlar quais partes da página iriam interagir com o AngularJS.
Tipos de Carreiras:
Desenvolvedores da web podem trabalhar em empresas de tecnologia, como Google, Facebook e Amazon, se conseguirem passar nos requisitos.
Outra opção são as startups, onde o ritmo de desenvolvimento pode ser um desafio para iniciantes.
Freelancers, tem a vantagem de poder projetar seus próprios produtos, em contra partida, o trabalho seria completamente individual.
Consultor de empresa de consultoria web se concentra mais no desenvolvimento do código em detrimento de parte do salário de um freelancer.
Por fim, empresas grandes e antigas precisam de desenvolvedores da web, apesar de avançaram mais vagarosamente se em comparação com uma empresa com foco em tecnologia, ocorre a oferta de um bom equilíbrio entre trabalho e vida pessoal, remuneração e benefícios.
Primeiramente, é necessário ter uma estratégia. Uma possível é seguir esses passos.
1. Descobrir quais as suas necessidades e quais as suas habilidades.
2. Descobrir quais os perfis que as empresas precisam e para quais desses perfis elas oferecem emprego.
3. Se prepare trabalhando as suas bases desde cedo.
4. Se prepare também coletando oportunidades de emprego.
5. Qualificar essas oportunidades de emprego também é uma grande ajuda.
6. Ajudar e se aplicar é algo útil para quem procura emprego.
7. Faça entrevistas.
8. Saiba lidar com as ofertas que aparecerem.
Descobrir quais as suas necessidades é o primeiro passo para conseguir um emprego. Algumas perguntas que podem ajudar são:
1. Por que preciso desse emprego?
2. Qual o valor de salário para sustentar a mim e minha família?
3. Qual o nível de segurança de trabalho é preciso para sustentar a mim e minha família?
4. O quão desesperado estou para conseguir um emprego?
A pergunta seguinte é onde gostaria de trabalhar e o que gostaria para o futuro.
1. Por que quero trabalhar em desenvolvimento web?
2. Qual a carreira quero ter?
3. Quero trabalhar onde há a liderança de desenvolvedores?
4. Quero trabalhar com equipes ou remotamente?
5. Quero trabalhar em períodos longos ou curtos?
6. Devo me preocupar com o que estou criando ou com o que estou usando para criar?
7. Prefiro um local de trabalho fácil ou que me pressiona?
Saber quais itens você não abre mão ao trabalhar pode ajudar a manter o foco em qual proposta de emprego aceitar.
Se estiver no início da carreira será preciso descobrir seus pontos fortes e fracos, pois assim terá uma ideia de caminho para se destacar no meio de outros candidatos.
Na hora de contratar gerentes procuram alguém que agregue ao time, tornando o trabalho mais rápido e eficiente. Se apresentar como alguém que pode evoluir, pode ajudar bastante. Outro fator que influencia é se o candidato consegue se adaptar ao time onde vai trabalhar.
Estágio
Estágio é uma boa maneira de mostrar que tem potencial para ser contratado em definitivo. É útil fazer com que as pessoas valorizem seus esforços e percebam que você está interessado em ajudar.
É útil criar um roteiro contando sua história. Contando quem é você, o que fez para chegar no lugar onde está e como pode evoluir ainda mais.
Ter um portfólio pode mostrar o que já realizou e onde já trabalhou. É importante mostrar que pode realizar um código quando necessário e ao já trabalhar com uma equipe, é sinal que pode trabalhar com outra. O melhor portfólio de um desenvolvedor é o GitHub.
Organização é algo muito importante. Usar uma planilha é sempre bem vinda, pois é onde você pode organizar suas possibilidades de emprego. Também é útil acompanhar os sites e qualquer conexão que se possa ter com a empresa.
A tabela pode ajudar a classificar quais empresas atendem os seus objetivos e também qual a probabilidade de conseguir o emprego.
Algumas questões a se pensar são:
1. É possível evoluir nesse emprego?
2. É possível ter acesso a mentores e cursos nesse emprego?
3. A equipe é boa para se trabalhar?
4. Ir ao trabalho é algo prazeroso?
5. Existe algum risco nesse emprego?
6. Posso me sustentar com esse emprego?
7. A localização é boa?
8. Quanto tempo eu quero ficar aqui?
Uma forma de praticar com seus trabalhos e enviá-los para as empresas no final da lista de escolhas e pensar em uma estratégia para as empresas do topo da lista. Use as empresas com as quais tem menor interesse de trabalhar para praticar entrevistas também. Conchecer a empresa e suas necessidades é algo fundamental.
Enviar um email para a empresa é uma parte importante. Condense bem suas informações e escolha as que possam te colocar em um local mais perto da aprovação.
A seguir, poderão ser vistos alguns exemplos dos conteúdos apresentados.
Um exemplo de uma estrutura condicional em Ruby.
Exemplo de código em JavaScript usando as estruturas if e else.
Exemplo de estrutura básica de HTML.
Linha 1: DOCTYPE indica ao browser a versão da linguagem usada.
Linha 2 e 10: Abertura e fechamento da tag html que delimita o documento.
Linha 3 e 6: Abertura e fechamento da tag head que define o cabeçalho do documento.
Linha 4: A tag meta define o tipo de variável usada para renderizar o texto da página.
Linha 5: a tag title define o título da página.
Linhas 7 e 9: abertura e fechamento da tag body que demarca onde deve ficar o contúdo visual da página.
Linha 8: Sintaxe para a adição de comentários em HTML.
Um exemplo básico de CSS, para deixar todos os elementos de um parágrafo na cor vermelha.
Exemplo de um database. Nesse exemplo é necessário criar um database para uma companhia de seguro de automóveis. Os dados dos clientes são código, nome, RG, CPF, endereço e telefone. Os dados dos automóveis são placa, código RENAVAM. fabricante, modelo e ano. Para cada automóvel há um histórico de ocorrência. Cada ocorrência possui um número de ocorrência único, uma data, um local e uma descrição.