Code Monkey home page Code Monkey logo

davinci-docker's People

Contributors

cabbage89 avatar fumiwork 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  avatar  avatar  avatar  avatar

davinci-docker's Issues

部署过程有两个地方需要注意一下

1.配置邮箱的密码是授权码,不是登陆密码,否则无法创建账户。日志中会报错:javax.mail.AuthenticationFailedException。以QQ邮箱为例,授权码在邮箱设置界面中获取。
2.注册后,会收到激活邮件,这个激活的URL使用的0.0.0开头的地址。需要将地址修改为发布的地址,来完成激活

本地镜像无法启动

| \ __ _ __ _() _ _ __ ()
| |) |/ ` |\ V /| || ' \ / || |
|
/ _,| _/ ||||||_||_|

Davinci version: 0.3
Spring Boot version: 2.0.4.RELEASE

2020-05-12 04:47:41.006 INFO 16 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2020-05-12 04:47:41.158 INFO 16 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2020-05-12 04:47:41.158 INFO 16 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.32
2020-05-12 04:47:44.298 INFO 16 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
2020-05-12 04:47:44.602 INFO 16 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
ich allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
2020-05-12 04:47:44.602 INFO 16 --- [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-05-12 04:47:45.798 INFO 16 --- [main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
2020-05-12 04:47:49.091 WARN 16 --- [main] org.thymeleaf.templatemode.TemplateMode : [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead.
2020-05-12 04:47:49.333 INFO 16 --- [main] o.s.l.c.support.AbstractContextSource : Property 'userDn' not set - anonymous context will be used for read-write operations
FO 16 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.0 created.
2020-05-12 04:47:50.030 INFO 16 --- [ main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized.
2020-05-12 04:47:50.035 INFO 16 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.0) 'schedulerFactoryBean' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

2020-05-12 04:47:50.038 INFO 16 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'schedulerFactoryBean' initialized from an externally provided properties instance.
2020-05-12 04:47:50.038 INFO 16 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.0
2020-05-12 04:47:50.039 INFO 16 --- [ main] org.quartz.core.QuartzScheduler : JobFactory set to: edp.core.config.AutowireSpringBeanJobFactory@4438938e
is not clustered.

2020-05-12 04:47:50.038 INFO 16 --- [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'schedulerFactoryBean' initialized from an externally provided properties instance.
2020-05-12 04:47:50.038 INFO 16 --- [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.0
2020-05-12 04:47:50.039 INFO 16 --- [main] org.quartz.core.QuartzScheduler : JobFactory set to: edp.core.config.AutowireSpringBeanJobFactory@4438938e
2020-05-12 04:47:55.661 INFO 16 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2020-05-12 04:47:55.707 INFO 16 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2020-05-12 04:47:55.779 INFO 16 --- [main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
tarUsingPOST_1
7:58.794 INFO 16 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteProjectUsingDELETE_1
2020-05-12 04:47:58.881 INFO 16 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getRoleUsingGET_1
2020-05-12 04:47:59.527 INFO 16 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadAvatarUsingPOST_1
stom datasource finish
2020-05-12 04:48:00.141 INFO 16 --- [ main] edp.davinci.runner.CronJobRunner : Load cron job finish
gPOST_1
2020-05-12 04:47:59.857 INFO 16 --- [main] org.quartz.core.QuartzScheduler : Scheduler schedulerFactoryBean_$_NON_CLUSTERED started.
2020-05-12 04:48:00.039 INFO 16 --- [main] e.davinci.runner.CustomDataSourceRunner : Load custom datasource finish
2020-05-12 04:48:00.141 INFO 16 --- [main] edp.davinci.runner.CronJobRunner : Load cron job finish

docker版本的行级权限控制失败

请问,我安装docker后,按照说明教程设置了‘city’字段的行级权限,但是用另外一个账号登录时,发现控制不了权限,而且报“Internal Server Error”错误,请问是否是docker 版本的问题呢?

Bean method 'clientRegistrationRepository' not loaded

使用docker-compose启动镜像,报错:
Method springSecurityFilterChain in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' that could not be found.
Bean method 'clientRegistrationRepository' not loaded because OAuth2 Clients Configured Condition registered clients is not available

登录界面无法创建账户

试用docker-compose 方式启动了程序,创建了davinci和mysql容器实例,在58080端口UI界面,注册用户后,在登录时,报无用户错误,无法登录

k8s部署yaml,需要的小伙伴拿去

apiVersion: v1
kind: ConfigMap
metadata:
  name: davinci-configmap
  namespace: davinci
data:
  application.yml: |
    server:
      protocol: http
      address: 0.0.0.0
      port: 8080

      servlet:
        context-path: /

    ## jwt is one of the important configuration of the application
    ## jwt config cannot be null or empty
    jwtToken:
      secret: secret
      timeout: 1800000
      algorithm: HS512


    ## your datasource config
    source:
      initial-size: 1
      min-idle: 1
      max-wait: 30000
      max-active: 10
      break-after-acquire-failure: true
      connection-error-retry-attempts: 1
      time-between-eviction-runs-millis: 2000
      min-evictable-idle-time-millis: 600000
      max-evictable-idle-time-millis: 900000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      validation-query: select 1
      validation-query-timeout: 10
      keep-alive: false
      filters: stat
      enable-query-log: false
      result-limit: 1000000

    spring:
      mvc:
        async:
          request-timeout: 30s
      rest:
        proxy-host:
        proxy-port:
        proxy-ignore:

      ## davinci datasource config
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://mysql:3306/davinci?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
        initial-size: 1
        min-idle: 1
        max-wait: 30000
        max-active: 10
        break-after-acquire-failure: true
        connection-error-retry-attempts: 1
        time-between-eviction-runs-millis: 2000
        min-evictable-idle-time-millis: 600000
        max-evictable-idle-time-millis: 900000
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        validation-query: select 1
        validation-query-timeout: 10
        keep-alive: false
        filters: stat


      ## redis config
      ## please choose either of the two ways
      redis:
        isEnable: false

        ## standalone config
        host: 127.0.0.1
        port: 6379

        ## cluster config
        #  cluster:
        #       nodes:

        password:
        database: 0
        timeout: 1000
        jedis:
          pool:
            max-active: 8
            max-wait: 1
            max-idle: 8
            min-idle: 0

      ## mail is one of the important configuration of the application
      ## mail config cannot be null or empty
      ## some mailboxes need to be set separately password for the SMTP service)
      mail:
        host: smtp.163.com
        port: 465
        username: [email protected]
        fromAddress: xxxxxxxx
        password: xxxxxxxx
        nickname: davinci

        properties:
          smtp:
            starttls:
              enable: true
              required: true
            auth: true
          mail:
            smtp:
              ssl:
                enable: false

      ldap:
        urls:
        username:
        password:
        base:
        domainName:    # domainName 指 企业邮箱后缀,如企业邮箱为:[email protected],这里值为 '@example.com'

      security:
        oauth2:
          enable: false

    screenshot:
      default_browser: CHROME
      timeout_second: 600
      chromedriver_path: $your_chromedriver_path$
      remote_webdriver_url: $your_remote_webdriver_url$

    data-auth-center:
      channels:
        - name:
          base-url:
          auth-code:

    statistic:
      enable: false

      # You can use external elasticsearch storage [127.0.0.1:9300]
      elastic_urls:
      elastic_user:
      elastic_index_prefix:

      # You can also use external mysql storage
      mysql_url:
      mysql_username:
      mysql_password:

      # You can also use external kafka
      kafka.bootstrap.servers:
      kafka.topic:
      java.security.krb5.conf:
      java.security.keytab:
      java.security.principal:

    encryption:
      maxEncryptSize: 1024
      type: Off # Off is to turn off encryption, to enable encryption, please select AES or RSA
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: davinci
  namespace: davinci
spec:
  replicas: 1
  selector:
    matchLabels:
      app: davinci
  template:
    metadata:
      labels:
        app: davinci
    spec:
      containers:
      - name: davinci
        image: davinci:v0.3.0-rc
        env:
        - name: TZ
          value: Asia/Shanghai
        ports:
          - containerPort: 8080
            name: davinci-svc
            protocol: TCP
        volumeMounts:
          - name: davinci-configmap
            mountPath: /opt/davinci/config/application.yml
            subPath: application.yml
      volumes:
      - name: davinci-configmap
        configMap:
          name: davinci-configmap
      - name: davselenium
        emptyDir:
          medium: Memory
---
apiVersion: v1
kind: Service
metadata:
  name: davinci-service
  namespace: davinci
spec:
  type: NodePort
  ports:
    - port: 8080
      protocol: TCP
      targetPort: davinci-svc
      nodePort: 32202
  selector:
    app: davinci

docker-compose --verbose up

[root@localhost davini]# docker-compose --verbose up
compose.config.config.find: Using configuration files: ./docker-compose.yml
ERROR: compose.cli.main.main: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the services key, or omit the version key and place your service definitions at the root of the file to use version 1.

使用windows平台下的docker能部署但是在注册时一直报internal server error

报错信息如下:
davinci_1 | Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
davinci_1 | at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
davinci_1 | at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
davinci_1 | at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
davinci_1 | at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
davinci_1 | ... 84 more
davinci_1 | 2019-06-10 14:00:22.344 ERROR 25 --- [0.0-8080-exec-3] e.d.core.config.RestExceptionHandler : Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465;
davinci_1 | nested exception is:
davinci_1 | javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465;
davinci_1 | nested exception is:
davinci_1 | javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
davinci_1 | 2019-06-10 14:00:22.344 ERROR 25 --- [http-nio-0.0.0.0-8080-exec-3] e.d.core.config.RestExceptionHandler : Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465;
davinci_1 | nested exception is:
davinci_1 | javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465;
davinci_1 | nested exception is:
davinci_1 | javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我猜测是因为 win10 的 SSL 密钥库路径不匹配的问题,但是无法确定。

Stopping service [Tomcat]

docker-compose --verbose up
Fail:
INFO 30 --- [main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]

SERVER_ADDRESS: ERROR

add: SERVER_ADDRESS: d.b.x
show error:

Caused by: java.net.BindException: Cannot assign requested addres

how to config SERVER_ADDRESS in k8s?

组织成员无法创建项目

创建了两个用户,用户a和用户b;分别属于组织a和组织b;将用户b加入组织a;组织a设置成员可以创建项目,登录用户b创建项目时选择组织b,提示没有权限

解压phantomjs-2.1.1-linux-x86_64.tar.bz2失败

Archive: phantomjs-2.1.1-linux-x86_64.tar.bz2
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of phantomjs-2.1.1-linux-x86_64.tar.bz2 or
phantomjs-2.1.1-linux-x86_64.tar.bz2.zip, and cannot find phantomjs-2.1.1-linux-x86_64.tar.bz2.ZIP, period.

配置PostgreSQL数据源

我这里尝试将PostgreSQL做为数据源。
按说明文档下载了JDBC驱动(https://jdbc.postgresql.org/download.html )并放置到 /opt/davinci/lib/
Screenshot from 2020-06-10 20-40-18

但PostgreSQL没有可支持的数据库列表中。并且提示:
Not supported data type: jdbcUrl=jdbc:postgresql://..../...

请问,我可能在那个步骤出错?

使用“local.Dockerfile”本地构建Docker镜像失败,提示“chmod: /opt/phantomjs-2.1.1/phantomjs: Not a directory”!

local.Dokcerfile文件中的命令ADD phantomjs /opt/phantomjs-2.1.1会以/opt/phantomjs-2.1.1作为文件名将phantomjs添加到镜像中,所以构建过程中会提示chmod: /opt/phantomjs-2.1.1/phantomjs: Not a directory错误,因为在目录/opt/phantomjs-2.1.1中并不存在文件phantomjs

添加文件分隔符/后可以跑通。 ADD phantomjs /opt/phantomjs-2.1.1 => ADD phantomjs /opt/phantomjs-2.1.1/

win2016RUN 之后一闪而过

08:42.547 [background-preinit] DEBUG org.hibernate.validator.internal.engine.resolver.TraversableResolvers - Found javax.persistence.Persistence on classpath containing 'getPersistenceUtil'. Assuming JPA 2 environment. Trying to instantiate JPA aware TraversableResolver
15:08:42.547 [background-preinit] DEBUG org.hibernate.validator.internal.engine.resolver.TraversableResolvers - Instantiated JPA aware TraversableResolver of type org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.
15:08:42.547 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ValidationXmlParser - Trying to load META-INF/validation.xml for XML based Validator configuration.
15:08:42.547 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ResourceLoaderHelper - Trying to load META-INF/validation.xml via TCCL
15:08:42.562 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ResourceLoaderHelper - Trying to load META-INF/validation.xml via Hibernate Validator's class loader
15:08:42.562 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ValidationXmlParser - No META-INF/validation.xml found. Using annotation based configuration only.
15:08:42.875 [background-preinit] DEBUG org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator - Loaded expression factory via original TCCL
15:08:42.890 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator as ValidatorFactory-scoped message interpolator.
15:08:42.890 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.resolver.JPATraversableResolver as ValidatorFactory-scoped traversable resolver.
15:08:42.890 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.util.ExecutableParameterNameProvider as ValidatorFactory-scoped parameter name provider.
15:08:42.890 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.DefaultClockProvider as ValidatorFactory-scoped clock provider.
15:08:42.890 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.scripting.DefaultScriptEvaluatorFactory as ValidatorFactory-scoped script evaluator factory.

升级最新版

目前主版本已经更新,修改docker配置和发布最新镜像文件到最新版本。

docker build 失败

unzip: cannot find zipfile directory in one of phantomjs-2.1.1-linux-x86_64.tar.bz2 or
phantomjs-2.1.1-linux-x86_64.tar.bz2.zip, and cannot find phantomjs-2.1.1-linux-x86_64.tar.bz2.ZIP, period.
The command '/bin/sh -c mkdir -p /opt/phantomjs-2.1.1 && wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 && unzip phantomjs-2.1.1-linux-x86_64.tar.bz2 && rm -rf phantomjs-2.1.1-linux-x86_64.tar.bz2 && mv phantomjs-2.1.1-linux-x86_64/bin/phantomjs /opt/phantomjs-2.1.1/phantomjs && rm -rf phantomjs-2.1.1-linux-x86_64' returned a non-zero code: 9

貌似解压 tar.bz2 不能用 unzip

求助。。镜像构建成功,但是docker启动的时候报错

启动命令:
docker run -p 58081:8080 -e SPRING_DATASOURCE_URL="jdbc:mysql://:3306/davinci0.3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true"
-e SPRING_DATASOURCE_USERNAME="root" -e SPRING_DATASOURCE_PASSWORD="root"
-e SPRING_MAIL_HOST="smtp.qq.com" -e SPRING_MAIL_PORT="465" -e SPRING_MAIL_PROPERTIES_MAIL_SMTP_SSL_ENABLE="true"
-e SPRING_MAIL_USERNAME="[email protected]" -e SPRING_MAIL_PASSWORD="
"
-e SPRING_MAIL_NICKNAME="davinci_sys"
edp963/davinci:v0.3.0-beta.9

报错信息:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "./bin/start-server.sh": stat ./bin/start-server.sh: no such file or directory": unknown.
ERRO[0000] error waiting for container: context canceled

生产环境部署tomcat控制台闪退

你好 我部署到生产环境后 控制台闪退 且找不到任何有用的日志
1663249829272

我非常想深入使用davinci 但是找不到人交流请教,有这样的QQ 或者微信群吗

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.