Giter Club home page Giter Club logo

curso-dio-intro-collections's People

Contributors

cami-la avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curso-dio-intro-collections's Issues

Collections: ExemploList

Boa noite Cami, tudo bem?

Executando o exercício realizado em aula percebi que poderia substituir esta parte do código por um método pronto:

System.out.println("Remova as notas menores que 7 e exiba a lista: ");
       Iterator<Double> iterator1 = notas.iterator();
       while(iterator1.hasNext()) {
           Double next = iterator1.next();
           if(next < 7) iterator1.remove();
       }
       System.out.println(notas);

Método que utilizei:

 System.out.println("Remova as notas menores que 7 e exiba a lista: ");
        notas.removeIf(next -> next < 7);
        System.out.println(notas); 

O que deixou o método mais limpo e enxuto. Em aula você havia comentado que não existia um método pronto para este tipo de remoção. Seria uma atualização das novas versões? No caso estou utilizando a versão Java SE 17 LTS.

Duvida sobre ordenação Map

2023-01-24 (1)

Camila estou com duvida nesse exercício q vc nos deixou de ordenação Map. e não estou conseguindo resolver, fui usando outros exercícios de ordenação como modelo mas mesmo assim fiquei travado nesse ponto, estou em duvida se quando for para compara por paginas usa esse método .(compare) mesmo.

Duvida no exercicio02 de set

Gostaria de saber porque não não posso usar o LinkedHashSet sem usar o HashSet antes?
Ainda em ordem de inserção, tentei fazer do modo abaixo, porém, deu erro.

public static void main(String[] args) {
    Set<minhasLinguagensFavoritas> linguagensFavoritas = new LinkedHashSet<>(){{
       add(new minhasLinguagensFavoritas("JavaScript", 1996, "VScode"));
       add(new minhasLinguagensFavoritas("Java", 1991, "Intellij"));
       add(new minhasLinguagensFavoritas("HTML", 1991, "VScode"));
    }};
    System.out.println("Ordem de Inserção: ");
    for (String linguagens: linguagensFavoritas) {
        System.out.println(linguagens);
    }
}

Dúvida resolução ExercicioProposto01.java

Boa tarde, tudo bom ?

Esse exercício resolvi ele dessa forma, gostaria de feedback sobre ele se esta correto se tem algum ponto para ser melhorado

Scanner leitor = new Scanner(System.in);
List temperaturas = new ArrayList<>();

    String[] messes = new String[] {
            "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho"
    };

    for (int i = 0; i < messes.length; i++) {
        System.out.print("Informe a temperatura de " + messes[i] + ": ");
        temperaturas.add(leitor.nextDouble());
    }

    System.out.println("\nTodas as temperaturas: ");
    temperaturas.forEach(temp -> System.out.println(temp));

    System.out.println("\nCalculando media: ");
    Double media = temperaturas
            .stream()
            .reduce(0d, (total, element) -> total + element) / messes.length;
    System.out.println(media);

    System.out.println("\nMeses com as temperaturas acima da média: ");
    Iterator<Double> iterator = temperaturas.iterator();
    while (iterator.hasNext()) {
        Double temperatura = iterator.next();

        if (temperatura >= media) {
            System.out.println(messes[temperaturas.indexOf(temperatura)] + " - " + temperatura + "oC");
        }
    }

Pequeno erro em código: ExerciciosStreamAPI

Oiii Cami! Apenas avisando que está escrito errado no system.out.println, acredito que possa confundir algum aluno futuramente. O correto seria "pares", não "ímpares". Ou então manter "ímpares" e mudar no código para != ao invés do ==, e o nome da variável para somaDosNumerosImpares.

Localização do código:
https://github.com/cami-la/curso-dio-intro-collections/blob/master/src/br/com/dio/collection/streamAPI/ExerciciosStreamAPI.java

int somaDosNumerosPares = numerosAleatoriosInteger.stream()
                .filter(i -> (i % 2 == 0))
                .mapToInt(Integer::intValue)
                .sum();
        System.out.println("Pegue apenas os números ímpares e some: " + somaDosNumerosPares);

Erro rodar exemplo OrdenacaoList

Olá Camila,

Pode por favor me ajudar?

Ao rodar o programa ele apresenta o seguinte erro:

Erro: Não foi possível localizar nem carregar a classe principal com.exercicioordenacaolist.ExemploOrdenacaoList
Causada por: java.lang.ClassNotFoundException: com.exercicioordenacaolist.ExemploOrdenacaoList

Abaixo o código

package com.exercicioordenacaolist;

/*Dadas as seguintes informações sobre meus gatos, crie uma lista
e ordene esa lista exibindo:
(nome - idade - cor);

Gato 1 = nome: Jon, idade: 18, cor: preto
Gato 2 = nome: Simba, idade: 6, cor: tigrado]
Gato 3 = nome: Jon, idade: 12, cor: amarelo
*/

import java.util.Collections;
import java.util.List;
import java.util.ArrayList;

public class ExemploOrdenacaoList {

public static void main(String[] args) {

    List<Gato> meusGatos = new ArrayList<>(){{
        add(new Gato("Jon", 12, "preto"));
        add(new Gato("Simba", 6, "tigrado"));
        add(new Gato("Jon", 18, "amarelo"));
    }};


    System.out.println("--\tOrdem de Inserção\t--");
    System.out.println(meusGatos);

    System.out.println("--\tOrdem de aleatória\t--");
    Collections.shuffle(meusGatos);
    System.out.println(meusGatos);

    System.out.println("--\tOrdem Natural (Nome)\t--");


}

}

class Gato {

private String nome;
private Integer idade;
private String cor;

public Gato(String nome, Integer idade, String cor) {
    this.nome = nome;
    this.idade = idade;
    this.cor = cor;
}

public String getNome() {
    return nome;
}

public Integer getIdade() {
    return idade;
}

public String getCor() {
    return cor;
}

@Override
public String toString() {
    return "{" +
            "nome='" + nome + '\'' +
            ", idade=" + idade +
            ", cor='" + cor + '\'' +
            '}';
}

}

Map - Exercício Proposto 2

Camila, boa tarde! Eu não consegui assimilar este exercício, mesmo refazendo baseado na sua solução. Tu poderias me explicar tua lógica, mostrando ao menos outra opção no uso de métodos e funções, principalmente a partir do uso do Map em diante?

duvida no uso do iterator

Por qual motivo, isso acontece?

Estava tentado usar o iterator já criado e percebi que não dar.

image

e quando coloco antes da soma, ela não funciona.
image

Problema no exercicio temperaturas

Professora, observei que default do switch ele nunca vai ser executado, pq ele só sera executado se entrar na condição de verificar se a temperatura é maior que a media e o count ser diferente dos casos mencionados. Quando o count for = 6 , o laço não executa novamente.

Duvida

Bom dia, estou tentando fazer um sorteador de itens (coisa de rpg rsrsrs)
consegui fazer o Intellij ler o arquivo .txt, ele fez o sorteio e mostrou o numero, porem eu queria que ele mostrasse oq esta escrito naquele numero(naquela linha) e não estou conseguindo fazer isso pois o numero é um int e a leitura necessita de uma String.
poderia me ajudar???

aqui esta o código.
obs: o arquivo txt que ele esta lendo esta no final do codigo é o itens.txt

package ItensMagicos;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Random;

public class Main {

public static void main(String[] args) throws IOException {

    int item;


    Path path = Path.of("C:\\Users\\Bruno\\Downloads\\itens.txt");


    Random random = new Random();
    item = random.nextInt(919);

    List<String> strings = Files.readAllLines(path);
    for (String ItensMagicos : strings) {
        System.out.println(ItensMagicos);


    }

        System.out.println("Voce encontrou um item, veja o item " + item);


    }
}

itens.txt

Duvida no Stream API

2023-01-25
Camila meu sistema não esta reconhecendo o o código "Arrays" e por causa disso não consigo desenvolver o resto do exercício.

Exercício 1 - Collections

Oi Camila, tudo bem? estou fazendo o exercício 1 da aula de collections, e me bateu uma dúvida quando utilizo classe para criar o arraylist, eu consigo trocar a string do mes: "1" para mes: "janeiro" utilizando o camparator?
Se puder me dar uma luz agradeço muito!

public class Temperatura {
public static void main(String[] args){
List tempo = new ArrayList<>(){{
add(new ListaTempo("1",12.0));
add(new ListaTempo("2",23.0));
add(new ListaTempo("3",3.0));
add(new ListaTempo("4",21.0));
add(new ListaTempo("5",10.0));
add(new ListaTempo("6",30.0));
}};
System.out.println("Temperaturas 6 primeiros meses: " + tempo);

    //Somar temperaturas e fazer média dos 6 meses
    System.out.print("Média das temperaturas dos últimos 6 meses: ");
    Iterator<ListaTempo> iterator = tempo.iterator();
    Double soma = 0d;
    while(iterator.hasNext()){
        Double next = iterator.next().getTemperatura();
        soma += next;
    }
    Double media = soma / tempo.size();
    System.out.print(media);

    //Mostra temperaturas acima da média
    System.out.println("\nTemperaturas acima da média " + media + " são: " );
    Iterator<ListaTempo> iterator1 = tempo.iterator();
    while(iterator1.hasNext()){
        Double next = iterator1.next().getTemperatura();
        if(next < media) iterator1.remove();
    }
    System.out.println(tempo);

    //Mostrar Meses por extenso em que temperaturas ocorreram
    gostaria de fazer aqui uma troca de mês 1 para janeiro...mas não sei se da forma que optei por fazer o exercício, é possível...



}

}

Collections - Exemplo Ordenação Set

Oi Camila, boa tarde! Estou com dúvidas no Exemplo que resolveu sobre Set. Antes de dizer a dúvida, percebi que na linha 49 do seu código, você pede algo que já resolveu (Ordem natural por Tempo Episódio, o que é o mesmo que nos pediu, rsrs), e por isto achei interessante tentar executar a ordem por Nome.

A minha solução está colocada entre as linhas 44 e 54 (comentadas), no código https://github.com/natan20200679/Java/blob/master/Collections/src/Set/Exemplo_Ordenacao.java, e que não estão resolvidas porque não consegui resolver, rsrs. Tu podes me fornecer pelo menos alguma dica de solução?! Tentei resolver aproveitando as estruturas prontas no restante do código.

Dúvida sobre Comparable e Comparator em List

Olá Camila, tudo bem? Obrigada pelas aulas ❤️

Na aula de Lists - Ordenação de elementos em uma coleção List - exemplos dos Gatos:

Você criou um "Comparable Nome" e depois criou "Comparator para Cor e Idade".
Você dizia na aula que: "como criou um Comparable para Nome, para os outros tinha que ser Comparator".
Significa que, só pode haver 1 Comparable enquanto pode haver vários Comparators num mesmo programa?

Agradeço

Map - Exiba o terceiro modelo adicionado: (Feito em foreach)

        System.out.println("\nExiba o terceiro modelo adicionado: ");
        System.out.println(carrosPopulares);
        int cont = 0;
        for (String key : carrosPopulares.keySet()) {
            cont++;
            if (cont == 3) System.out.println(key+ " -> "+carrosPopulares.get(key));
        }

Não poderia ser assim?

Erro na execução da collection

Boa noite, clonei o repositorio só que está gerando erro, minha verão do java é a jdk 8.
Até tentei resolver mas tenho pouco conhecimento.
Fazendo o curso pelo bootcamp GFT Quality Assurance #1

List meusGatos = new ArrayList<>(){{ ( Replace ' <>' with explicit type arguments )
add(new Gato("Jon", 12, "preto"));
add(new Gato("Simba", 6, "tigrado"));
add(new Gato("Jon", 18, "amarelo"))

erro:
C:\IdeaProjects\curso-dio-intro-collections\src\br\com\dio\collection\list\ExemploOrdenacaoList.java:20:45
java: cannot infer type arguments for java.util.ArrayList
reason: cannot use '<>' with anonymous inner classes

Reference Method

Olá!!!

Muito Obrigado por sua disponibilidade em ensinar.
Estou aprendendo muito com duas aulas.
Estou entendendo melhor o Lambda e Refecence Method, e fiz de outra forma.

       List<Gato> meusGatos = new ArrayList<>() {{
            add(new Gato("Joh", 12, "amarelo"));
            add(new Gato("Joh", 18, "preto"));
            add(new Gato("Simba", 6, "tigrado"));
        }};

        // uso da classe Anônima
        /*meusGatos.sort(
                new Comparator<Gato>() {
                    @Override
                    public int compare(Gato g1, Gato g2) {
                        return Integer.compare(g1.getIdade(),g2.getIdade());
                    }
                }
        );*/
        //usando Labda
       // meusGatos.sort((g1, g2) -> Integer.compare(g1.getIdade(), g2.getIdade()));

        //Referencia do Método (Reference Method)
        meusGatos.sort(Comparator.comparingInt(Gato::getIdade));

        for (Gato gato : meusGatos) {//exibe a lista
            System.out.println(gato.getNome() + " " + gato.getIdade() + " " + gato.getCor());
        }

Muito Grato.

exercicios de List

Boa noite camila não achei aqui no seu repositório os exercícios de List o exercicio1 que fala sobre os meses e media e tal ,
e o exercicio2 que fala das 5 perguntas sobre um crime? Se você resolveu poderia me informar aonde encontro sua solução?
Obrigado

Duvida quanto ao uso de variável - Integer ou int?

Boa noite Camila! Tenho dúvida quanto ao uso do tipo de variável, ou seja, quando usar, por exemplo:
int teste; ou Integer teste;

Percebi que em alguns exemplos o tipo era Double e não double. Assim, fiquei confuso de quando usar o tipo primitivo ou a versão Class dele.

Desde já, obrigado pela atenção!

Vilson da Costa de Sousa

Stream API - Exercício Proposto

image

Oi Camila, olha eu de novo! kkkk. Querida, como faço pra utilizar Função Lambda no lugar de Método de Referência, utilizado na linha 15?

ExercicioProposto01, eu não entendi que era para usar método "Scanner" e fiz assim.

Oi Camila, tudo bem? fiz muito diferente do seu exercício.
Obs: fiz antes de ver o seu código.
Mas o código funciona rsrsrs

package br.com.dio.collection.list;

// Minha interpretação do exercício proposto, eu não entendi que era para usar o Scanner para interação,
// inserir as temperaturas dos meses

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Ex_Proposto_temp_meses {
    public static void main(String[] args) {
        List<Double> mesesTemperatura = new ArrayList<Double>();

        mesesTemperatura.add(30d);
        mesesTemperatura.add(28d);
        mesesTemperatura.add(27d);
        mesesTemperatura.add(25d);
        mesesTemperatura.add(23d);
        mesesTemperatura.add(18d);

        System.out.println("Temperatura dos seis primeiros meses do ano: ");
        System.out.println(mesesTemperatura.toString());

        Iterator<Double> iterator = mesesTemperatura.iterator();
        Double soma = 0d;
        while(iterator.hasNext()){
            Double next = iterator.next();
            soma += next;
        }

        System.out.println(" ");
        System.out.println("Média semestral das temperaturas: " + Math.round(soma/mesesTemperatura.size()));
        System.out.println(" ");

        Iterator<Double> iterator1 = mesesTemperatura.iterator();
        while(iterator1.hasNext()) {
            Double next = iterator1.next();
            if(next <= 25) iterator1.remove();
        }
        System.out.println("Temperaturas acima da média: " + mesesTemperatura);
        System.out.println(" ");
        System.out.println("Meses com temperatura acima da média: ");
        System.out.println("1 Janeiro: " + mesesTemperatura.get(0));
        System.out.println("2 Fevereiro: " + mesesTemperatura.get(1));
        System.out.println("3 Março: " + mesesTemperatura.get(2));

    }
}

Primeiro Exercício proposto dos SET´S

Boa noite Camila, acredito ter um leve desacerto quando ao que foi pedido é o que foi codado, na questão de "Remova todas as cores que não começam com a letra “v”: " no caso, acredito você tenha removido as que começavam a letra em questão. Só um pequeno detalhe mesmo, muito obrigado pelo curso está show de bola.

Dúvida no ExemploOrdenacaoSet

Boa tarde Camila, tudo bem?
Meu código está dando alguns erros que eu não estou entendendo. Coloquei-os comentados aqui na parte de cima. Você poderia dar uma olhada ou então me disponibilizar o código completo? Eu dei uma olhada aqui no seu Git, mas o exercício está em vários arquivos, e eu não consegui encontrar o erro. Desde já agradeço.
package br.com.dio.estudos;

import javax.sql.rowset.serial.SerialException;
import java.util.*;

/*Mensagem de erro

  • "C:\Program Files\Java\jdk-11.0.8\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.3\lib\idea_rt.jar=64376:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Usuário\Documents\Cris\DIO\Projetos IntelliJ\desafio-dio-POO\out\production\desafio-dio-POO" br.com.dio.estudos.ExemploOrdenacaoSetEstudos
    Exception in thread "main" java.lang.NoClassDefFoundError: br/com/dio/estudos/serie (wrong name: br/com/dio/estudos/Serie)
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at br.com.dio.estudos.ExemploOrdenacaoSetEstudos$1.(ExemploOrdenacaoSetEstudos.java:12)
    at br.com.dio.estudos.ExemploOrdenacaoSetEstudos.main(ExemploOrdenacaoSetEstudos.java:11)
    Ordem Aleatoria*/
    public class ExemploOrdenacaoSetEstudos {
    public static void main(String[] args) {

      System.out.println("Ordem Aleatoria");
      Set<Serie> minhasSeries = new HashSet<>(){{
          add(new Serie("E o vento levou", "drama", 120));
          add(new Serie("Em algum lugar do passado","drama", 180));
          add(new Serie("A lagoa Azul", "romance", 60));
    
    
      }};
    
          for (Serie serie: minhasSeries)System.out.println(serie.getNome() + "-"
          + serie.getGenero() + "-" + serie.getTempoEpisodio());
    
      System.out.println("Ordem de Inserção");
      Set<Serie>minhasSeries1 = new LinkedHashSet<>(){{
          add(new Serie("E o vento levou","drama",120));
          add(new Serie("Em algum lugar do passado", "drama", 180));
          add(new Serie("A lagoa Azul", "romance", 60));
          add(new Serie("A lagoa Azul", "romance", 120));
                  }};
      for (Serie serie: minhasSeries1) {
          System.out.println(serie.getNome() + "-"
                  + serie.getGenero() + "-" + serie.getTempoEpisodio());
    
    
          System.out.println("Ordem Nome/ Gênero/TempoEpisodio");
          Set<Serie>minhasSeries3 = new TreeSet<>(new ComparatorNomeGeneroTempoEpisodio());
    
              for (Serie serie3: minhasSeries3) System.out.println(serie.getNome() + "-" + serie.getGenero() + "-" + serie.getTempoEpisodio());
              minhasSeries3.addAll(minhasSeries);
    
    
    
      }
    
      }
    

    }

class Serie implements Comparable{
private String nome;
private String genero;
private Integer tempoEpisodio;

public Serie(String nome, String genero, Integer tempoEpisodio) {
    this.nome = nome;
    this.genero = genero;
    this.tempoEpisodio = tempoEpisodio;
}

public String getNome() {
    return nome;
}

public String getGenero() {
    return genero;
}

public Integer getTempoEpisodio() {
    return tempoEpisodio;
}

@Override
public String toString() {
    return "{" +
            "nome='" + nome + '\'' +
            ", genero='" + genero + '\'' +
            ", tempoEpisodio=" + tempoEpisodio +
            '}';
}

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Serie serie = (Serie) o;
    return nome.equals(serie.nome) && genero.equals(serie.genero) && tempoEpisodio.equals(serie.tempoEpisodio);
}

@Override
public int hashCode() {
    return Objects.hash(nome, genero, tempoEpisodio);
}

@Override
public int compareTo(Serie serie) {
    int tempoEpisodio = Integer.compare(this.getTempoEpisodio(), serie.getTempoEpisodio());
    if (tempoEpisodio!=0) return tempoEpisodio;
    return this.getGenero().compareTo(serie.getGenero());
}

}

class ComparatorNomeGeneroTempoEpisodio implements Comparator{

@Override
public int compare(Serie s1, Serie s2) {
    int nome = s1.getNome().compareTo(s2.getNome());
    if(nome !=0) return nome;

    int genero = s1.getGenero().compareTo(s2.getGenero());
    if (genero !=0) return genero;

    return Integer.compare(s1.getTempoEpisodio(),s2.getTempoEpisodio());
}

}

Soma de valores do SET incorreta

Camili,

Nos exercícios de SET mostrados por você, a soma dos valores: 0.0
8.5
3.6
5.0
9.3
7.0

apresenta o resultado 33.400000000000006!

De onde surgiu esse 6 nessa soma?
Captura de tela 2022-01-08 115006

Utilizacao da JDK

Duvida sobre os pre-requisitos do curso , no curso voce esta utilizando a versão do JDK 17 e nos pre-requistos está a 11 , não teria nenhum problema quanto a isso ?
Acredito que não , mas seria so uma dúvida mesmo . Obrigada

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.