Giter Club home page Giter Club logo

cedr-n3's People

Contributors

kokes avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jirihelmich

cedr-n3's Issues

Download : MMR ciselnik - 404 not found

Ahoj, nemáš ciselnikMmrCinnostTypev01.n3 někde v záloze? Díky!

Download output:

> ./download.sh
http://cedropendata.mfcr.cz/c3lod/ciselnikMmrCinnostTypev01.n3.7z:
2017-03-12 10:08:19 ERROR 404: Not Found.

download.sh

#!/bin/bash

# http://cedropendata.mfcr.cz/c3lod/cedr/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/Adresa.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrCinnostTypev01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrGrantoveSchemav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrOpatreniv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrOperacniProgramv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrPodOpatreniv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrPodprogramv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrPrioritav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikCedrProgramPodporav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikDotacePoskytovatelv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikDotaceTitulv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikFinancniProstredekCleneniv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikFinancniZdrojv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikRozpoctovaSkladbaParagrafv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikRozpoctovaSkladbaPolozkav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikStatniRozpocetKapitolav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikStatniRozpocetUkazatelv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikUcelZnakv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/Dotace.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/Etapa.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/PrijemcePomoci.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/Rozhodnuti.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/RozhodnutiSmlouva.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/RozpoctoveObdobi.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/SplatkaKalendar.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/UzemniRealizace.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/mmr/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrCinnostTypev01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrGrantoveSchemav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrOpatreniv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrOperacniProgramv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrPodOpatreniv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrPodprogramv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrPrioritav01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMmrProgramPodporav01.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/ares/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/EkonomikaSubjekt.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/ruian/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikKrajv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikMestskyObvodMestskaCastv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikObecv01.n3.7z"
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikVuscv01.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/rob/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/Osoba.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/csu/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikStatv01.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/szcr/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikPravniFormav01.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/edssmvs/void
wget -c -nv "http://cedropendata.mfcr.cz/c3lod/ciselnikProgramv01.n3.7z"
# http://cedropendata.mfcr.cz/c3lod/isdp/void
# isdp no dataDump

Extract everything

Ahoj, nemáš lepší nápad než je tohle, k extrakci všeho co je v dotacích? Případně aplikováno na ostatní N3 exporty z CEDR-III

Konverze jde N3 -> RDF -> XML -> MYSQL

$> 7z x Dotace.n3.7z
$> ./rapper.sh Dotace.n3 Dotace.rdf
$> ./rdf_to_xml.py

mysql> LOAD XML LOCAL INFILE '/tmp/Dotace.xml' INTO TABLE cedr.dotace ROWS IDENTIFIED BY '<Dotace>' SET id=NULL, modified=NOW();

mysql > cedr.dotace

CREATE TABLE `dotace` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `about` varchar(255) COLLATE utf8_bin NOT NULL,
  `byloRozhodnuto` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `podaniDatum` datetime DEFAULT NULL,
  `projektKod` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `smlouvaPodpisDatum` datetime DEFAULT NULL,
  `zaznamAktualizaceDatumCas` datetime DEFAULT NULL,
  `zaznamIdentifikator` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `zaznamPlatnostDatum` datetime DEFAULT NULL,
  `zmenaSmlouvaIdikator` varchar(5) COLLATE utf8_bin DEFAULT NULL,
  `projektIdentifikator` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `title` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `podprogram` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `operacniProgramCEDR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `subjektRozliseniKod` int(11) DEFAULT NULL,
  `operacniProgramMMR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `prioritaMMR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `opatreniMMR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `podOpatreni` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `grantoveSchemaMMR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `ukonceniSkutecneDatum` datetime DEFAULT NULL,
  `zahajeniSkutecneDatum` datetime DEFAULT NULL,
  `ukonceniPlanovaneDatum` datetime DEFAULT NULL,
  `clenenNaEtapu` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `realizovanNaUzemi` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `prioritaCEDR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `projektNadrizenyIdentifikator` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `podOpatreniCEDR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `opatreniCEDR` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `poznamkaCEDR` text COLLATE utf8_bin,
  `modified` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `about` (`about`),
  UNIQUE KEY `zaznamIdentifikator` (`zaznamIdentifikator`),
  KEY `opatreniCEDR` (`opatreniCEDR`),
  KEY `byloRozhodnuto` (`byloRozhodnuto`),
  KEY `podaniDatum` (`podaniDatum`),
  KEY `projektKod` (`projektKod`),
  KEY `smlouvaPodpisDatum` (`smlouvaPodpisDatum`),
  KEY `zaznamAktualizaceDatumCas` (`zaznamAktualizaceDatumCas`),
  KEY `zaznamPlatnostDatum` (`zaznamPlatnostDatum`),
  KEY `projektIdentifikator` (`projektIdentifikator`),
  KEY `title` (`title`),
  KEY `podprogram` (`podprogram`),
  KEY `operacniProgramCEDR` (`operacniProgramCEDR`),
  KEY `subjektRozliseniKod` (`subjektRozliseniKod`),
  KEY `operacniProgramMMR` (`operacniProgramMMR`),
  KEY `prioritaMMR` (`prioritaMMR`),
  KEY `opatreniMMR` (`opatreniMMR`),
  KEY `podOpatreni` (`podOpatreni`),
  KEY `grantoveSchemaMMR` (`grantoveSchemaMMR`),
  KEY `ukonceniSkutecneDatum` (`ukonceniSkutecneDatum`),
  KEY `zahajeniSkutecneDatum` (`zahajeniSkutecneDatum`),
  KEY `ukonceniPlanovaneDatum` (`ukonceniPlanovaneDatum`),
  KEY `clenenNaEtapu` (`clenenNaEtapu`),
  KEY `realizovanNaUzemi` (`realizovanNaUzemi`),
  KEY `prioritaCEDR` (`prioritaCEDR`),
  KEY `projektNadrizenyIdentifikator` (`projektNadrizenyIdentifikator`),
  KEY `podOpatreniCEDR` (`podOpatreniCEDR`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_bin 

rdf_to_xml.py

#!/usr/bin/env python3

from lxml import etree
import sys
import re

_xslt = etree.parse('Dotace.xslt')
_dom = etree.iterparse('Dotace.rdf')
transform = etree.XSLT(_xslt)
results = open('Dotace.xml','w+')

for elem in _dom:
    if (re.search("Dotace", elem[1].tag)):
        newElem = transform(elem[1])
        #print(etree.tostring(newElem,xml_declaration = False))
        results.write(etree.tostring(newElem,xml_declaration = False))

rapper.sh

#!/bin/bash

date

echo "from:" $1 " to: " $2

echo "" > $2

rapper \
 -f 'xmlns:ns1="http://cedropendata.mfcr.cz/c3lod/isdp/vocabIsdp/space/v1#"' \
 -f 'xmlns:ns2="http://cedropendata.mfcr.cz/c3lod/csu/vocabCSU#"' \
 -f 'xmlns:ns3="http://www.w3.org/2004/02/skos/core#"' \
 -f 'xmlns:ns4="http://cedropendata.mfcr.cz/c3lod/isdp/vocabIsdp/dataElements/v1#"' \
 -f 'xmlns:ns5="http://purl.org/dc/terms/"' \
 -f 'xmlns:ns6="http://cedropendata.mfcr.cz/c3lod/isdp/vocabIsdp/fkis/v1#"' \
 -f 'xmlns:ns7="http://cedropendata.mfcr.cz/c3lod/cedr/vocabCEDR#"' \
 -f 'xmlns:ns8="http://cedropendata.mfcr.cz/c3lod/ruian/vocabRUIAN#"' \
 -f 'xmlns:ns9="http://cedropendata.mfcr.cz/c3lod/isdp/vocabIsdp/business/v2#"' \
 -f 'xmlns:ns10="http://cedropendata.mfcr.cz/c3lod/isdp/vocabIsdp/person/v2#"' \
 -f 'xmlns:ns11="http://cedropendata.mfcr.cz/c3lod/rob/vocabROB#"' \
 -f 'xmlns:ns12="http://purl.org/goodrelations/v1#"' \
 -f 'xmlns:ns13="http://xmlns.com/foaf/0.1/"' \
 -f 'xmlns:ns14="http://cedropendata.mfcr.cz/c3lod/isdp/vocabIsdp/common/v1#"' \
 -f 'xmlns:ns15="http://cedropendata.mfcr.cz/c3lod/mmr/vocabMMR#"' \
 -f 'xmlns:ns16="http://cedropendata.mfcr.cz/c3lod/edssmvs/vocabEDSSMVS#"' \
 -i ntriples \
 -o rdfxml-abbrev \
 $1 > $2

date

Updated - Python3 usage, raw N3 instead of TAR.GZ

Review pls? Nejsem primárně python programátor, ale po všech úprávach (viz diff) mi funguje parsování a export/import do CSV z nekomprimovaných N3 souborů (složka N3 v rootu git repa, viz. gitignore)

Především mě překvapilo že musím dělat list(dict.values()) aby to prolezlo csv.writer.writerow

A přidal jsem exportování číselníku do samostatného CSV csv/_ciselniky.csv
k tomu je pak vhodná tabulka a import SQL příkaz (MySQL)

tabulka

CREATE TABLE `ciselniky` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ai id field',
 `cedr_id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'unique cedropendata id',
 `name` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'name',
 `modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'date of item last modified',
 PRIMARY KEY (`id`),
 UNIQUE KEY `cedr_id` (`cedr_id`),
 FULLTEXT KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

import _ciselniky.csv into mysql

LOAD DATA LOCAL INFILE '/tmp/csv/_ciselniky.csv' INTO TABLE ciselniky FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 0 LINES (cedr_id, name) SET id=NULL, modified=NOW();

diff repozitare

diff --git a/.gitignore b/.gitignore
index ed6cf7e..3549076 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 archive/*
 *.swp
-
+/csv
+/N3
diff --git a/extrahuj.csv b/extrahuj.csv
index 83c31fa..e7dbbca 100644
--- a/extrahuj.csv
+++ b/extrahuj.csv
@@ -1,5 +1,5 @@
 targz,soubor,chcem,cil
-data/Dotace.n3.tar.gz,./cedr/Dotace.n3,"zmenaSmlouvaIndikator, zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, smlouvaPodpisDatum, projektIdentifikator, projektNazev",csv/dotace.csv
-./data/PrijemcePomoci.n3.tar.gz,./cedr/PrijemcePomoci.n3,"zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, jeRegistrovanSPravniFormou, jePrislusnikStatu, obchodniJmeno, ico, jmeno, prijmeni, dic",csv/prijemce.csv
-./data/Rozhodnuti.n3.tar.gz,./cedr/Rozhodnuti.n3,"zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, rokRozhodnuti, navratnostIndikator, menaKod, investiceIndikator, financovanoZeZdroje, financniProstredekCleneni, dotaciPoskytl, castkaRozhodnuta",csv/rozhodnuti.csv
-./data/RozpoctoveObdobi.n3.tar.gz,./cedr/RozpoctoveObdobi.n3,"zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, rozpocetObdobi, refRozpoctoveObdobi, menaKod, castkaUvolnena, castkaCerpana, castkaSpotrebovana, dotaceTitul",csv/rozpoctove_obdobi.csv
\ No newline at end of file
+./N3/Dotace.n3,./N3/Dotace.n3,"zmenaSmlouvaIndikator, zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, smlouvaPodpisDatum, projektIdentifikator, projektNazev",csv/dotace.csv
+./N3/PrijemcePomoci.n3,./N3/PrijemcePomoci.n3,"zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, jeRegistrovanSPravniFormou, jePrislusnikStatu, obchodniJmeno, ico, jmeno, prijmeni, dic",csv/prijemce.csv
+./N3/Rozhodnuti.n3,./N3/Rozhodnuti.n3,"zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, rokRozhodnuti, navratnostIndikator, menaKod, investiceIndikator, financovanoZeZdroje, financniProstredekCleneni, dotaciPoskytl, castkaRozhodnuta",csv/rozhodnuti.csv
+./N3/RozpoctoveObdobi.n3,./N3/RozpoctoveObdobi.n3,"zaznamPlatnostDatum, zaznamIdentifikator, zaznamAktualizaceDatumCas, rozpocetObdobi, refRozpoctoveObdobi, menaKod, castkaUvolnena, castkaCerpana, castkaSpotrebovana, dotaceTitul",csv/rozpoctove_obdobi.csv
diff --git a/extrahuj.py b/extrahuj.py
old mode 100644
new mode 100755
index 83361a9..1250b75
--- a/extrahuj.py
+++ b/extrahuj.py
@@ -1,37 +1,35 @@
+#!/usr/bin/env python3
+
 from glob import glob
 import csv
 import tarfile
 import os
-import gzip
 from collections import defaultdict, OrderedDict

-
 # ## Číselníky
 # Napřed načteme číselníky, které budeme používat jako slovníky pro údaje v samotném CEDRu.
 # Tohle budem držet v paměti a pak za chodu nahrazovat.

 print('Načítám číselníky')
-gfn = glob('data/ciselnik*.tar.gz')
+gfn = glob('./N3/ciselnik*.n3')
 cdt = dict()

 for gf in gfn:
-    tf = tarfile.open(gf, 'r:gz')
-    for fnm in tf.getmembers():
-        if '/ciselnik' not in fnm.name: continue
-        if not fnm.name.endswith('.n3'): continue
-    #     print(fnm)
-
-        ff = tf.extractfile(fnm.name)
-        
-        for j in ff:
-            if b'/title>' not in j: continue
-            d = j.split()
-            key = d[0][1:-1].decode('ascii')
-            val = (b' '.join(d[2:-1])).decode('unicode-escape')
-            if val.startswith('"'):
-                val = val[1:val.rindex('"')]
-
-            cdt[key] = val
+    ff = open(gf, 'rb')
+    for j in ff:
+        if b'/title>' not in j: continue
+        d = j.split()
+        key = d[0][1:-1].decode('ascii')
+        val = (b' '.join(d[2:-1]))
+        if val.startswith(b'"'):
+            val = val[1:val.rindex(b'"')].decode('unicode-escape')
+        cdt[key] = val
+
+# zapis ciselniky do CSV
+with open('csv/_ciselniky.csv', 'w') as csv_file:
+    writer = csv.writer(csv_file)
+    for key, value in cdt.items():
+       writer.writerow([key, value])

 def extrahuj(ff, chces, tfn):
     """
@@ -63,7 +61,8 @@ def extrahuj(ff, chces, tfn):
             kc = list(counts.keys()) # protoze budem menit
             for k in kc:
                 if counts[k] != lc: continue # jeste nemame vse
-                w.writerow(ret[k].values())
+#                print((ret[k].values()))
+                w.writerow(list(ret[k].values()))
                 del ret[k]
                 del counts[k]

@@ -105,7 +104,7 @@ def extrahuj(ff, chces, tfn):

     # vypsat zbyvajici
     for j,k in ret.items():
-        w.writerow(k.values())
+        w.writerow(list(k.values()))

     fb.close()

@@ -163,24 +162,15 @@ with open('extrahuj.csv') as cf:

 for j, ee in enumerate(ex):
     print('\nProcesuju %s (%d/%d)' % (ee['targz'], j+1, len(ex)))
-    with tarfile.open(ee['targz'], 'r:gz') as tf:
-        ff = tf.extractfile(ee['soubor'])
-        extrahuj(ff, ee['chcem'].split(', '), ee['cil'])
+    ff = open(ee['soubor'],'rb')
+    extrahuj(ff, ee['chcem'].split(', '), ee['cil'])


 # Vazby
 # =====

-print('Načítám vazby')
-
-with tarfile.open('./data/Rozhodnuti.n3.tar.gz', 'r:gz') as tf:
-    ff = tf.extractfile('./cedr/Rozhodnuti.n3')
-    cti_vazby(ff, 'rozpoctoveObdobi', 'csv/_rozpoctoveObdobi.csv')
-
-with tarfile.open('./data/PrijemcePomoci.n3.tar.gz', 'r:gz') as tf:
-    ff = tf.extractfile('./cedr/PrijemcePomoci.n3')
-    cti_vazby(ff, 'obdrzelDotaci', 'csv/_obdrzelDotaci.csv')
+print('\nNačítám vazby')

-with tarfile.open('./data/Dotace.n3.tar.gz', 'r:gz') as tf:
-    ff = tf.extractfile('./cedr/Dotace.n3')
-    cti_vazby(ff, 'byloRozhodnuto', 'csv/_byloRozhodnuto.csv')
+cti_vazby(open("./N3/Rozhodnuti.n3", "rb"), "rozpoctoveObdobi", "csv/_rozpoctoveObdobi.csv")
+cti_vazby(open("./N3/PrijemcePomoci.n3", "rb"), "obdrzelDotaci", "csv/_obdrzelDotaci.csv")
+cti_vazby(open("./N3/Dotace.n3", "rb"), "byloRozhodnuto", "csv/_byloRozhodnuto.csv")

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.