jack8daniels2 / adns-python Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/adns-python
Automatically exported from code.google.com/p/adns-python
In Fedora there is a initiative driven by Dave Malcolm to scan C python
modules. While scanning a adns-python his tool found some possible errors.
The log with found errors can be found here:
http://fedorapeople.org/~dmalcolm/gcc-python-plugin/2012-04-02/python-adns-1.2.1
-9.fc17/
The Fedora Bug can be found here:
https://bugzilla.redhat.com/show_bug.cgi?id=809288
If you have any questions feel free to contact me (thozza at redhat dot com),
Dave
Malcolm or add a comment into the Fedora Bug.
Thanks!
Original issue reported on code.google.com by [email protected]
on 14 Aug 2013 at 1:33
http://groups.google.com/group/adns-python/browse_thread/thread/7d9ee0a1e3e842da
Patch doesn't apply due to reformatting problems, but is logically correct.
Original issue reported on code.google.com by [email protected]
on 27 Jan 2007 at 6:37
Originally submitted by [email protected]
hi,
On 2006-05-31 11:15:27 +0100, Ian Jackson wrote:
> > Marcus Rueckert writes ("adns 1.2 api breakage"):
>> > > i just updated the adns package and it broke adns-python.
>> > > in adns.h you renamed adns__rrt_typemask to adns_rrt_typemask.
>> > > was this intentionally? if so i will mail my patch to the adns-python
>> > > author.
> >
> > Yes. This isn't written down anywhere, but the identifiers with `__'
> > in them are intended for private use inside adns and should probably
> > not be used by adns-python. I made this change when I found that
> > software outside the adns library needed it to deal properly with the
> > new `unknown-by-adns rr type' feature; by renaming this identifier I
> > was declaring it public.
> >
> > Are there other names with `__' that you're using ?
(i just see my editor fscked the pasting :| sorry for that. I will repaste it.)
[[[
$ grep adns__ *c
adnsmodule.c: { "internalmask", adns__qf_internalmask },
adnsmodule.c: { "deref", adns__qtf_deref },
adnsmodule.c: { "mail822", adns__qtf_mail822 },
adnsmodule.c: adns_rrtype td = answer->type & adns__qtf_deref;
]]]
On 2006-05-31 13:14:13 +0100, Ian Jackson wrote:
> > This doesn't look good. In particular, it looks like this attempts to
> > compose query type codes from pieces. This isn't supported by adns;
> > query codes other than the ones set up in adns.h may not work properly
> > and may even cause assertion failures, etc.
atm i build the python bindings with a small patch that renamed the 2
occurences of the adns__rrt_typemask. (patch attached and CC'ed the
author of the python bindings.)
thanks for your help so far.
darix
Original issue reported on code.google.com by [email protected]
on 2 Dec 2006 at 5:54
Attachments:
Hi
The front page of this say's there are docstrings... I couldn't find any?
Original issue reported on code.google.com by [email protected]
on 15 Dec 2009 at 2:29
Originally submitted by [email protected]
On Mon, May 08, 2006 at 04:18:39PM -0400, Mihai Ibanescu wrote:
> > Hi Andy,
> >
> > I was looking at adns-python - is there a way you can retrieve SRV records
> > with it? As of version 1.2, adns does support srv records. If it's not
there
> > just yet, I can provide a patch if it helps.
Patch to enable srv records for adns-python. I have a .src.rpm too if want it
- planning to push it in Fedora Extras as soon as possible. Please let me know
what you think.
Cheers,
Misa
Original issue reported on code.google.com by [email protected]
on 2 Dec 2006 at 5:56
Attachments:
adns-1.5.0 supports ipv6. The appended pathc extends adns-python to query for
AAAA records. I guess ipv6 reverse lookups should also be added.
Original issue reported on code.google.com by [email protected]
on 22 Nov 2014 at 9:11
What steps will reproduce the problem?
>>> import adns
>>> adns.exception(100)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
adns.QueryError: (100, 'Inconsistent resource records in DNS')
What is the expected output? What do you see instead?
There is nothing wrong with the query, it should return a RemoteConfigError.
What version of the product are you using? On what operating system?
1.2.1 on Fedora Linux x86_64, but will happen on any OS.
Please provide any additional information below.
It's just a missing break statement in the C module.
No, Andy, I'm not stalking you.
Original issue reported on code.google.com by [email protected]
on 30 Jul 2009 at 12:17
Attachments:
I looked for an option to pass user defined name server (via adns.init) and it
took to me some time to understand following:
1. debugfileobj is file handler like: open('/tmp/adns.log', 'a'). This was hard
to figure out, as python interpreter return some bullshit like: 'TypeError:
must be (unspecified), not str'.
Only looking at module sources made to understand to pass file handler.
2. configtext is text in resolv.conf format like: 'nameserver 8.8.8.8'
3. Also there is a typo in doc string, as arguments wrapped in a list...
Incorrect (current) - s.adns.init([initflags,debugfileobj=stderr,configtext=''])
Correct - adns.init(initflags,debugfileobj=stderr,configtext='')
Original issue reported on code.google.com by [email protected]
on 15 Nov 2014 at 1:28
I've been using your adns python module for some long-running processes
that do a lot of DNS lookups (several million per day). When doing NS
record lookups, I ran into a memory leak issue -- after a couple days the
processes would be eating GBs of RAM. It looks like the same problem
affects lookups whenever you wish to retrieve the records in the
"additional" section of the response (such as the IP addresses
associated
with the NS/MX records). After a bit of digging, I noticed that the module
was leaking huge numbers of tuples... the following simple patch seems to
do the trick:
--- adnsmodule.c.orig Sat Jan 29 13:12:06 2005
+++ adnsmodule.c Wed Aug 30 18:50:27 2006
@@ -174,6 +174,7 @@
}
o = Py_BuildValue("siO", hostaddr->host,
hostaddr->astatus,
addrs);
+ Py_DECREF(addrs);
return o;
}
If you don't see a problem with this, inclusion in the next release
(assuming there will be one) would be most convenient. Thanks!
Originally submitted by [email protected]
Original issue reported on code.google.com by [email protected]
on 2 Dec 2006 at 5:51
What steps will reproduce the problem?
$ sudo pip install adns-python
[sudo] password for yohann:
Downloading/unpacking adns-python
Downloading adns-python-1.2.1.tar.gz
Running setup.py egg_info for package adns-python
Installing collected packages: adns-python
Running setup.py install for adns-python
building 'adns' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c adnsmodule.c -o build/temp.linux-i686-2.7/adnsmodule.o
adnsmodule.c:10:18: fatal error: adns.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
Complete output from command /usr/bin/python -c "import setuptools;__file__='/tmp/pip-build-root/adns-python/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-GDmtcj-record/install-record.txt --single-version-externally-managed:
running install
running build
running build_py
creating build
creating build/lib.linux-i686-2.7
copying DNSBL.py -> build/lib.linux-i686-2.7
copying ADNS.py -> build/lib.linux-i686-2.7
running build_ext
building 'adns' extension
creating build/temp.linux-i686-2.7
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall
-Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c adnsmodule.c -o
build/temp.linux-i686-2.7/adnsmodule.o
adnsmodule.c:10:18: fatal error: adns.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
----------------------------------------
Command /usr/bin/python -c "import
setuptools;__file__='/tmp/pip-build-root/adns-python/setup.py';exec(compile(open
(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record
/tmp/pip-GDmtcj-record/install-record.txt --single-version-externally-managed
failed with error code 1 in /tmp/pip-build-root/adns-python
Storing complete log in /home/yohann/.pip/pip.log
What version of the product are you using? On what operating system?
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.10
Release: 12.10
Codename: quantal
$ uname -a
Linux yo 3.5.0-27-generic #46-Ubuntu SMP Mon Mar 25 20:00:05 UTC 2013 i686 i686
i686 GNU/Linux
$ pip --version
pip 1.3.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
$ python --version
Python 2.7.3
$ gcc --version
gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Original issue reported on code.google.com by [email protected]
on 11 Apr 2013 at 1:37
ADNS_State_completed should return Yield like a generator function to
allow callbacks to happen as quick as the DNS reply comes in. This should
be sufficient to deprecate run_max function call as it doesn't add any value.
http://www.python.org/doc/2.5.2/api/gen-objects.html
The deprecated "apply" call in ADNS.py can be replaced by a direct function
call.
http://docs.python.org/library/functions.html#apply
Original issue reported on code.google.com by [email protected]
on 7 Oct 2008 at 9:36
PTR lookups won't work always:
>>> import adns
>>> c=ands.init()
>>> c.synchronous("29.7.198.88.in-addr.arpa", adns.rr.PTR)
(100, None, 1434591304, ())
If I do reverse lookup:
$ dig -x 88.198.7.29 +short
server7.seinternal.com.
I'm using the latest adns-python.
Original issue reported on code.google.com by [email protected]
on 17 Jun 2015 at 11:05
Try this script:
#!/usr/bin/python
import sys
import adns
class DNS:
def __init__(self, domain, ns1, ns1_ip, ns2, ns2_ip):
soa1 = self.find_soa(domain, ns1_ip)
if soa1 == False:
raise NameError, "DNS_SOA_Query1"
soa2 = self.find_soa(domain, ns2_ip)
if soa2 == False:
raise NameError("DNS_SOA_Query2")
(ns_primary1, email1, serial1, ref1, ret1, exp1, min1) = soa1
(ns_primary2, email2, serial2, ref2, ret2, exp2, min2) = soa2
if ns_primary1 != ns_primary2 or email1 != email2 or serial1 !=
serial2 or ref1 != ref2 or exp1 != exp2 or min1 != min2:
raise NameError, "DNS_SOA_Different: ns1 %s, ns2 %s, %s vs %s" %
(ns1, ns2, ns_primary1, ns_primary2)
if ns1 != ns_primary1 and ns1 != ns_primary2 and ns2 !=
ns_primary1 and ns2 != ns_primary2:
raise NameError, "DNS_SOA_PrimaryNS_Different: whois: (%s, %s)
dns (%s, %s)" % (ns1, ns2, ns_primary1, ns_primary2)
def find_soa(self, domain, ip):
if ip == '':
ip = "213.25.186.11"
cfg = "clearnameservers\nnameserver %s\n" % ip
s = adns.init(0, sys.stderr, cfg)
status, cname, expires, answer = s.synchronous(domain,
adns.rr.SOAraw)
if len(answer):
return answer[0]
else:
return False
def fetch_ns_list(self, domain, ip):
pass
DNS("dns.pl", "fsdf.pl", "1.1.1.1", "sdfd.pl", "2.2.2.2")
it fails:
(gdb) r
Starting program: /home/users/arekm/python-test/bin/python2.5 adns-check.py
*** glibc detected *** /home/users/arekm/python-test/bin/python2.5:
munmap_chunk(): invalid pointer: 0x00002ba1ffa390d8 ***
======= Backtrace: =========
/lib64/libc.so.6[0x2ba2004c6cdd]
/home/users/arekm/python-test/lib/python2.5/site-packages/
adns.so[0x2ba204a2976a]
/home/users/arekm/python-test/bin/python2.5[0x4e48fc]
/home/users/arekm/python-test/bin/python2.5[0x48dc44]
/home/users/arekm/python-test/bin/python2.5[0x48da06]
/home/users/arekm/python-test/bin/
python2.5(PyEval_EvalFrameEx+0x5df3)[0x489faa]
/home/users/arekm/python-test/bin/
python2.5(PyEval_EvalCodeEx+0xd61)[0x48bcc4]
/home/users/arekm/python-test/bin/python2.5[0x4e739d]
/home/users/arekm/python-test/bin/python2.5(PyObject_Call+0x40)[0x41a74a]
/home/users/arekm/python-test/bin/python2.5[0x422bfe]
/home/users/arekm/python-test/bin/python2.5(PyObject_Call+0x40)[0x41a74a]
/home/users/arekm/python-test/bin/
python2.5(PyEval_CallObjectWithKeywords+0x11c)[0x48d1c6]
/home/users/arekm/python-test/bin/python2.5(PyInstance_New+0x1b3)[0x41d868]
/home/users/arekm/python-test/bin/python2.5(PyObject_Call+0x40)[0x41a74a]
/home/users/arekm/python-test/bin/python2.5[0x48e16e]
/home/users/arekm/python-test/bin/python2.5[0x48da1f]
/home/users/arekm/python-test/bin/
python2.5(PyEval_EvalFrameEx+0x5df3)[0x489faa]
/home/users/arekm/python-test/bin/
python2.5(PyEval_EvalCodeEx+0xd61)[0x48bcc4]
/home/users/arekm/python-test/bin/python2.5(PyEval_EvalCode+0x57)[0x484199]
/home/users/arekm/python-test/bin/python2.5[0x4b3ea1]
/home/users/arekm/python-test/bin/python2.5(PyRun_FileExFlags+0xb9)[0x4b3e2b]
/home/users/arekm/python-test/bin/
python2.5(PyRun_SimpleFileExFlags+0x1f0)[0x4b2d90]
/home/users/arekm/python-test/bin/
python2.5(PyRun_AnyFileExFlags+0x76)[0x4b2682]
/home/users/arekm/python-test/bin/python2.5(Py_Main+0x897)[0x41243c]
/home/users/arekm/python-test/bin/python2.5(main+0x1b)[0x411703]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x2ba200478af4]
/home/users/arekm/python-test/bin/python2.5[0x411659]
======= Memory map: ========
00400000-00539000 r-xp 00000000 08:03 1044358336 /
home/users/arekm/python-test/bin/python2.5
00738000-00770000 rw-p 00138000 08:03 1044358336 /
home/users/arekm/python-test/bin/python2.5
00770000-00801000 rw-p 00770000 00:00 0
[heap]
2ba1ff99a000-2ba1ff9b4000 r-xp 00000000 08:01 20994846 /
lib64/ld-2.5.so
2ba1ff9b4000-2ba1ff9b5000 rw-p 2ba1ff9b4000 00:00 0
2ba1ff9de000-2ba1ffa61000 rw-p 2ba1ff9de000 00:00 0
2ba1ffbb4000-2ba1ffbb6000 rw-p 0001a000 08:01 20994846 /
lib64/ld-2.5.so
2ba1ffbb6000-2ba1ffbcc000 r-xp 00000000 08:01 20972644 /
lib64/libpthread-2.5.so
2ba1ffbcc000-2ba1ffdcb000 ---p 00016000 08:01 20972644 /
lib64/libpthread-2.5.so
2ba1ffdcb000-2ba1ffdcd000 rw-p 00015000 08:01 20972644 /
lib64/libpthread-2.5.so
2ba1ffdcd000-2ba1ffdd1000 rw-p 2ba1ffdcd000 00:00 0
2ba1ffdd1000-2ba1ffdd3000 r-xp 00000000 08:01 21016208 /
lib64/libdl-2.5.so
2ba1ffdd3000-2ba1fffd3000 ---p 00002000 08:01 21016208 /
lib64/libdl-2.5.so
2ba1fffd3000-2ba1fffd5000 rw-p 00002000 08:01 21016208 /
lib64/libdl-2.5.so
2ba1fffd5000-2ba1fffd7000 r-xp 00000000 08:01 20972652 /
lib64/libutil-2.5.so
2ba1fffd7000-2ba2001d6000 ---p 00002000 08:01 20972652 /
lib64/libutil-2.5.so
2ba2001d6000-2ba2001d8000 rw-p 00001000 08:01 20972652 /
lib64/libutil-2.5.so
2ba2001d8000-2ba2001d9000 rw-p 2ba2001d8000 00:00 0
2ba2001d9000-2ba200259000 r-xp 00000000 08:01 21016210 /
lib64/libm-2.5.so
2ba200259000-2ba200459000 ---p 00080000 08:01 21016210 /
lib64/libm-2.5.so
2ba200459000-2ba20045b000 rw-p 00080000 08:01 21016210 /
lib64/libm-2.5.so
2ba20045b000-2ba20058f000 r-xp 00000000 08:01 21016203 /
lib64/libc-2.5.so
2ba20058f000-2ba20078f000 ---p 00134000 08:01 21016203 /
lib64/libc-2.5.so
2ba20078f000-2ba200792000 r--p 00134000 08:01 21016203 /
lib64/libc-2.5.so
2ba200792000-2ba200794000 rw-p 00137000 08:01 2
Program received signal SIGABRT, Aborted.
0x00002ba20048b145 in raise () from /lib64/libc.so.6
(gdb) bt
#0 0x00002ba20048b145 in raise () from /lib64/libc.so.6
#1 0x00002ba20048c4ce in abort () from /lib64/libc.so.6
#2 0x00002ba2004c1b36 in ?? () from /lib64/libc.so.6
#3 0x00002ba2004c6cdd in ?? () from /lib64/libc.so.6
#4 0x00002ba204a2976a in ADNS_State_dealloc (self=0x2ba1ffa390d8) at
adnsmodule.c:722
#5 0x00000000004e48fc in frame_dealloc (f=0x7e54d0) at Objects/
frameobject.c:416
#6 0x000000000048dc44 in fast_function (func=0x2ba1ffa56320,
pp_stack=0x7fffff8a8618, n=3, na=3, nk=0) at Python/ceval.c:3654
#7 0x000000000048da06 in call_function (pp_stack=0x7fffff8a8618, oparg=2)
at Python/ceval.c:3587
#8 0x0000000000489faa in PyEval_EvalFrameEx (f=0x7e9da0, throwflag=0) at
Python/ceval.c:2269
#9 0x000000000048bcc4 in PyEval_EvalCodeEx (co=0x2ba1ffa47378,
globals=0x79b360, locals=0x0, args=0x2ba1ffa5b1a0, argcount=6, kws=0x0,
kwcount=0, defs=0x0,
defcount=0, closure=0x0) at Python/ceval.c:2833
#10 0x00000000004e739d in function_call (func=0x2ba1ffa562a8,
arg=0x2ba1ffa5b188, kw=0x0) at Objects/funcobject.c:517
#11 0x000000000041a74a in PyObject_Call (func=0x2ba1ffa562a8,
arg=0x2ba1ffa5b188, kw=0x0) at Objects/abstract.c:1858
#12 0x0000000000422bfe in instancemethod_call (func=0x2ba1ffa562a8,
arg=0x2ba1ffa5b188, kw=0x0) at Objects/classobject.c:2497
#13 0x000000000041a74a in PyObject_Call (func=0x2ba1ffa34190,
arg=0x2ba1ffa06f50, kw=0x0) at Objects/abstract.c:1858
#14 0x000000000048d1c6 in PyEval_CallObjectWithKeywords
(func=0x2ba1ffa34190, arg=0x2ba1ffa06f50, kw=0x0) at Python/ceval.c:3435
#15 0x000000000041d868 in PyInstance_New (klass=0x2ba1ffa06a70,
arg=0x2ba1ffa06f50, kw=0x0) at Objects/classobject.c:560
#16 0x000000000041a74a in PyObject_Call (func=0x2ba1ffa06a70,
arg=0x2ba1ffa06f50, kw=0x0) at Objects/abstract.c:1858
#17 0x000000000048e16e in do_call (func=0x2ba1ffa06a70,
pp_stack=0x7fffff8a8f28, na=5, nk=0) at Python/ceval.c:3777
#18 0x000000000048da1f in call_function (pp_stack=0x7fffff8a8f28, oparg=5)
at Python/ceval.c:3589
#19 0x0000000000489faa in PyEval_EvalFrameEx (f=0x7901b0, throwflag=0) at
Python/ceval.c:2269
#20 0x000000000048bcc4 in PyEval_EvalCodeEx (co=0x2ba1ffa40e40,
globals=0x79b360, locals=0x79b360, args=0x0, argcount=0, kws=0x0,
kwcount=0, defs=0x0, defcount=0,
closure=0x0) at Python/ceval.c:2833
#21 0x0000000000484199 in PyEval_EvalCode (co=0x2ba1ffa40e40,
globals=0x79b360, locals=0x79b360) at Python/ceval.c:494
#22 0x00000000004b3ea1 in run_mod (mod=0x796520, filename=0x7fffff8aa740
"adns-check.py", globals=0x79b360, locals=0x79b360, flags=0x7fffff8a9470,
arena=0x784340)
at Python/pythonrun.c:1264
#23 0x00000000004b3e2b in PyRun_FileExFlags (fp=0x778010,
filename=0x7fffff8aa740 "adns-check.py", start=257, globals=0x79b360,
locals=0x79b360, closeit=1,
flags=0x7fffff8a9470) at Python/pythonrun.c:1250
#24 0x00000000004b2d90 in PyRun_SimpleFileExFlags (fp=0x778010,
filename=0x7fffff8aa740 "adns-check.py", closeit=1, flags=0x7fffff8a9470)
at Python/pythonrun.c:870
#25 0x00000000004b2682 in PyRun_AnyFileExFlags (fp=0x778010,
filename=0x7fffff8aa740 "adns-check.py", closeit=1, flags=0x7fffff8a9470)
at Python/pythonrun.c:689
#26 0x000000000041243c in Py_Main (argc=2, argv=0x7fffff8a95f8) at Modules/
main.c:523
#27 0x0000000000411703 in main (argc=2, argv=0x7fffff8a95f8) at ./Modules/
python.c:23
(gdb) quit
The program is running. Exit anyway? (y or n) y
[arekm@arm ~/dns-verify]$ ef ~/python-test/bin/python2.5 adns-check.py
Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens
<[email protected]>
ElectricFence Aborting: free(2b0a1a7ab0d8): address not from malloc().
Illegal instruction
segfaults in PyMem_DEL(self); in ADNS_State_dealloc()
Linux 2.6, glibc 2.5, python 2.5, adns 1.4, python-adns 1.2.0
Original issue reported on code.google.com by [email protected]
on 8 Jan 2007 at 11:30
What steps will reproduce the problem?
Under high load ands.completed() method return query object which how i
think refer on not existing object in C library.
so when i try do something with query object after i got it from
ands.completed() server goes down with Segmentation fault.
What is the expected output? What do you see instead?
I get Segmentation Fault which drop my server.
What version of the product are you using? On what operating system?
Tried 1.1.1.0 and 1.2.1.0 same shit in both ways.
Please provide any additional information below.
Original issue reported on code.google.com by creotiv
on 26 Mar 2010 at 10:29
I got the following error while using adns:
python2.5: ../src/event.c:708: adns_wait: Assertion `tvp' failed.
My script dies right after the error. My python code is
DNS = adns.init()
status, _cname, expires, answer = DNS.synchronous(netloc, adns.rr.CNAME)
The code is running inside different threads. I am using adns-1.2 and
adns-python-1.2.1 on Ubuntu Dapper with a custom-built python2.5.
Original issue reported on code.google.com by [email protected]
on 4 Sep 2007 at 2:27
Try this in a python console:
>>> import adns
>>> c=adns.init()
>>> c.submit('www.google.com',adns.rr.A) # note we're losing the reference
<ADNS_Query object at 0xb784e2c0>
>>> c.allqueries()
[<ADNS_Query object at 0xb784e2c0>]
>>> c.completed(0)
[]
>>> c.allqueries() # now we'll see the bug
['<stdin>']
In my tests I usually see the string "stdin" for some reason, but after messing
around a bit I get it to show arbitrary data, and/or crash the process with a
segmentation fault. Apparently an object was freed before all references to it
were removed.
I'm using Ubuntu 10.4 32 bits, using the python-adns package.
Original issue reported on code.google.com by [email protected]
on 24 Jun 2011 at 3:49
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.