Giter Site home page Giter Site logo

Comments (9)

bastibl avatar bastibl commented on September 12, 2024

Maybe you didn't build the hierarchical block, i.e., open wifi_phy_hier.grc, click build, and reopen GRC?

from gr-ieee802-11.

ptef avatar ptef commented on September 12, 2024

It's not possible to build because the gadgets are not found.

Anyway I reconfigured distro python and removed the local python managed by asdf (I think it was conflicting since gnuradio use /usr/bin/python3):
$ sudo apt install --reinstall python3 python3-minimal --fix-broken

But now I have another problem that maybe is easier to catch:

$ python3 
Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> import ieee802_11
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/ieee802_11/__init__.py", line 18, in <module>
    from .ieee802_11_python import *
ImportError: generic_type: type "chunks_to_symbols" referenced unknown base type "gr::tagged_stream_block"
>>> import foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/foo/__init__.py", line 18, in <module>
    from .foo_python import *
ImportError: generic_type: type "burst_tagger" referenced unknown base type "gr::sync_block"
>>> 

Both gr-foo and gr-ieee802_11 were configured with cmake ../ -DCMAKE_INSTALL_PREFIX=/usr

The environment is also configured:

$ echo $LD_LIBRARY_PATH 
/lib:/usr/lib:/usr/local/lib:/home/dukpt/.local/lib
$ echo $PYTHONPATH 
/usr/lib/python3/dist-packages:/usr/lib/python3.10/site-packages
$ find /usr -type d -name ieee802_11
/usr/include/ieee802_11
/usr/lib/cmake/ieee802_11
/usr/lib/python3.10/site-packages/ieee802_11
$ find /usr -type d -name foo
/usr/local/include/foo
/usr/include/foo
/usr/lib/cmake/foo
/usr/lib/python3.10/site-packages/foo
$ find /usr -type d -name gnuradio
/usr/share/gnuradio
/usr/share/gnuradio/modtool/templates/gr-newmod/include/gnuradio
/usr/share/doc/gnuradio
/usr/include/gnuradio
/usr/lib/x86_64-linux-gnu/cmake/gnuradio
/usr/lib/python3/dist-packages/gnuradio

Any ideas?

from gr-ieee802-11.

bastibl avatar bastibl commented on September 12, 2024

That looks like a PyBind version conflict. Can you please try the one that comes with your distro.

from gr-ieee802-11.

ptef avatar ptef commented on September 12, 2024

This is done already, but not working:

$ find /usr -type d -name pybind11
/usr/include/pybind11
/usr/lib/cmake/pybind11
/usr/lib/python3/dist-packages/pybind11
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11
/usr/lib/python3/dist-packages/pybind11/include/pybind11
$ python3
Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> import pybind11
>>> import foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.10/site-packages/foo/__init__.py", line 18, in <module>
    from .foo_python import *
ImportError: generic_type: type "burst_tagger" referenced unknown base type "gr::sync_block"
>>> import ieee802_11
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.10/site-packages/ieee802_11/__init__.py", line 18, in <module>
    from .ieee802_11_python import *
ImportError: generic_type: type "chunks_to_symbols" referenced unknown base type "gr::tagged_stream_block"
>>> 
$ echo $PYTHONPATH 
/usr/lib/python3/dist-packages:/usr/lib/python3.10/site-packages:/home/dukpt/.local/lib/python3.10/site-packages
$ echo $LD_LIBRARY_PATH 
/lib:/usr/lib:/usr/local/lib:/home/dukpt/.local/lib

$ sudo ldconfig -v | grep ieee802
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
(from /etc/ld.so.conf.d/x86_64-linux-gnu.conf:4 and /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Path `/usr/lib32' given more than once
(from /etc/ld.so.conf.d/zz_i386-biarch-compat.conf:3 and /etc/ld.so.conf.d/zz_i386-biarch-compat.conf:2)
/sbin/ldconfig.real: Path `/usr/libx32' given more than once
(from /etc/ld.so.conf.d/zz_x32-biarch-compat.conf:3 and /etc/ld.so.conf.d/zz_x32-biarch-compat.conf:2)
/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu' given more than once
(from <builtin>:0 and /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
(from <builtin>:0 and /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Path `/usr/lib' given more than once
(from <builtin>:0 and <builtin>:0)
	libgnuradio-ieee802_11.so.1.1.0git -> libgnuradio-ieee802_11.so.g56d8c5c
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 is the dynamic linker, ignoring

/sbin/ldconfig.real: /lib32/ld-linux.so.2 is the dynamic linker, ignoring

$ sudo ldconfig -v | grep foo
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
(from /etc/ld.so.conf.d/x86_64-linux-gnu.conf:4 and /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Path `/usr/lib32' given more than once
(from /etc/ld.so.conf.d/zz_i386-biarch-compat.conf:3 and /etc/ld.so.conf.d/zz_i386-biarch-compat.conf:2)
/sbin/ldconfig.real: Path `/usr/libx32' given more than once
(from /etc/ld.so.conf.d/zz_x32-biarch-compat.conf:3 and /etc/ld.so.conf.d/zz_x32-biarch-compat.conf:2)
/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu' given more than once
(from <builtin>:0 and /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
(from <builtin>:0 and /etc/ld.so.conf.d/x86_64-linux-gnu.conf:3)
/sbin/ldconfig.real: Path `/usr/lib' given more than once
(from <builtin>:0 and <builtin>:0)
	libgnuradio-foo.so.1.1.0git -> libgnuradio-foo.so.gcc8bfc6
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 is the dynamic linker, ignoring

/sbin/ldconfig.real: /lib32/ld-linux.so.2 is the dynamic linker, ignoring

Both gr-foo and gr-ieee802_11 were compiled with -DCMAKE_INSTALL_PREFIX=/usr

from gr-ieee802-11.

bastibl avatar bastibl commented on September 12, 2024

This shows that you have pybind11 from you package manager installed. Please also make sure that there is no other version in your user environment or some other Python package manager that may be picked up during the compilation of GNU Radio or the OOT module.

from gr-ieee802-11.

ptef avatar ptef commented on September 12, 2024

Unfortunately this is not working for me.
Do you see my PYTHONPATH and LD_LIBRARY_PATH, am I forgetting something?

from gr-ieee802-11.

bastibl avatar bastibl commented on September 12, 2024

Again, your output shows that you have pybind from your package manager installed. It does not show that there is not other version from asdf (or whatever you used) or pip or virtualenv or ... I'm pretty sure either GNU Radio or the OOT or both were not compiled with the correct pybind version.

from gr-ieee802-11.

ptef avatar ptef commented on September 12, 2024

Regarding pybind I already showed that it was installed from package manager and there is not other version installed:

$ find ~/ /usr -type d -name pybind\*
/usr/share/doc/pybind11-dev
/usr/include/pybind11
/usr/lib/cmake/pybind11
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info
/usr/lib/python3/dist-packages/pybind11
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11
/usr/lib/python3/dist-packages/pybind11/include/pybind11
/usr/lib/python3/dist-packages/pybindgen

$ dpkg-query -L python3-pybind11
/.
/usr
/usr/bin
/usr/bin/pybind11-config
/usr/lib
/usr/lib/python3
/usr/lib/python3/dist-packages
/usr/lib/python3/dist-packages/pybind11
/usr/lib/python3/dist-packages/pybind11/__init__.py
/usr/lib/python3/dist-packages/pybind11/__main__.py
/usr/lib/python3/dist-packages/pybind11/_version.py
/usr/lib/python3/dist-packages/pybind11/_version.pyi
/usr/lib/python3/dist-packages/pybind11/commands.py
/usr/lib/python3/dist-packages/pybind11/include
/usr/lib/python3/dist-packages/pybind11/include/pybind11
/usr/lib/python3/dist-packages/pybind11/include/pybind11/attr.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/buffer_info.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/cast.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/chrono.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/common.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/complex.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/class.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/common.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/descr.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/init.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/internals.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/type_caster_base.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/detail/typeid.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/eigen.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/embed.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/eval.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/functional.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/gil.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/iostream.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/numpy.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/operators.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/options.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/pybind11.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/pytypes.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/stl
/usr/lib/python3/dist-packages/pybind11/include/pybind11/stl/filesystem.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/stl.h
/usr/lib/python3/dist-packages/pybind11/include/pybind11/stl_bind.h
/usr/lib/python3/dist-packages/pybind11/py.typed
/usr/lib/python3/dist-packages/pybind11/setup_helpers.py
/usr/lib/python3/dist-packages/pybind11/setup_helpers.pyi
/usr/lib/python3/dist-packages/pybind11/share
/usr/lib/python3/dist-packages/pybind11/share/cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/FindPythonLibsNew.cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/pybind11Common.cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/pybind11Config.cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/pybind11ConfigVersion.cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/pybind11NewTools.cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/pybind11Targets.cmake
/usr/lib/python3/dist-packages/pybind11/share/cmake/pybind11/pybind11Tools.cmake
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info/PKG-INFO
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info/dependency_links.txt
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info/entry_points.txt
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info/not-zip-safe
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info/requires.txt
/usr/lib/python3/dist-packages/pybind11-2.9.1.egg-info/top_level.txt
/usr/share
/usr/share/doc
/usr/share/doc/python3-pybind11
/usr/share/doc/python3-pybind11/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/pybind11-config.1.gz
/usr/share/doc/python3-pybind11/changelog.Debian.gz

I unalias and unsourced every asdf python reference, so both pybind and gnuradio are from package manager. I did not compile gnuradio, but installed from Ubuntu repository.

$ strace python3 -s -c 'import foo' 2>&1 | grep foo_python
newfstatat(AT_FDCWD, "/usr/lib/python3.10/site-packages/foo/foo_python.cpython-310-x86_64-linux-gnu.so", {st_mode=S_IFREG|0644, st_size=282456, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/python3.10/site-packages/foo/foo_python.cpython-310-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 3
write(2, "    from .foo_python import *\n", 30    from .foo_python import *

$ python3
Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.10/site-packages/foo/__init__.py", line 18, in <module>
    from .foo_python import *
ImportError: generic_type: type "burst_tagger" referenced unknown base type "gr::sync_block"
>>> 

$ echo $PYTHONPATH 
/usr/lib/python3/dist-packages:/usr/lib/python3/dist-packages:/usr/lib/python3.10/site-packages

$ echo $LD_LIBRARY_PATH 
/lib64:/lib:/usr/lib:/usr/lib/x86_64-linux-gnu:/usr/local/lib

In case of gr-ieee802_11 I compiled as:

$  cmake ../ -DCMAKE_INSTALL_PREFIX=/usr # gr-ieee802_11
-- The CXX compiler identification is GNU 12.1.0
-- The C compiler identification is GNU 12.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Build type not specified: defaulting to release.
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2") 
-- Found Volk: Volk::volk  
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Checking for module 'gmp'
--   Found gmp, version 6.2.1
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Using GMP.
-- Found MPLIB: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.74.0") found components: date_time program_options system regex thread unit_test_framework 
-- User set python executable /usr/bin/python3
-- Found PythonInterp: /usr/bin/python3 (found version "3.10.6") 
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.10.so (found suitable exact version "3.10.6") 
-- Found Git: /usr/bin/git  
-- Extracting version information from git describe...
fatal: No names found, cannot describe anything.
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Looking for xmmintrin.h
-- Looking for xmmintrin.h - found
-- Using install prefix: /usr
-- Building for version: g56d8c5c / 1.1.0git
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- PYTHON and GRC components are enabled
-- Python checking for pygccxml - found
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.10.so
-- Performing Test HAS_FLTO
-- Performing Test HAS_FLTO - Success
-- Found pybind11: /usr/include (found version "2.9.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dukpt/Downloads/gr-ieee802-11/build

And then:

$  sudo make install
[sudo] password for dukpt: 
Consolidate compiler generated dependencies of target gnuradio-ieee802_11
[ 55%] Built target gnuradio-ieee802_11
[ 55%] Built target pygen_apps_9a6dd283c3de653fbca500f9721f634f
[ 60%] Built target pygen_python_e5b31959bf762a590b6f6572ea91d788
[ 63%] Built target ieee802_11_docstrings
Consolidate compiler generated dependencies of target ieee802_11_python
[100%] Built target ieee802_11_python
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/lib/cmake/ieee802_11/ieee802_11Config.cmake
-- Installing: /usr/include/ieee802_11/api.h
-- Installing: /usr/include/ieee802_11/chunks_to_symbols.h
-- Installing: /usr/include/ieee802_11/constellations.h
-- Installing: /usr/include/ieee802_11/decode_mac.h
-- Installing: /usr/include/ieee802_11/ether_encap.h
-- Installing: /usr/include/ieee802_11/extract_csi.h
-- Installing: /usr/include/ieee802_11/frame_equalizer.h
-- Installing: /usr/include/ieee802_11/mac.h
-- Installing: /usr/include/ieee802_11/mapper.h
-- Installing: /usr/include/ieee802_11/parse_mac.h
-- Installing: /usr/include/ieee802_11/signal_field.h
-- Installing: /usr/include/ieee802_11/sync_long.h
-- Installing: /usr/include/ieee802_11/sync_short.h
-- Installing: /usr/lib/x86_64-linux-gnu/libgnuradio-ieee802_11.so.g56d8c5c
-- Up-to-date: /usr/lib/x86_64-linux-gnu/libgnuradio-ieee802_11.so.1.1.0git
-- Up-to-date: /usr/lib/x86_64-linux-gnu/libgnuradio-ieee802_11.so
-- Installing: /usr/lib/cmake/ieee802_11/gnuradio-ieee802_11Targets.cmake
-- Installing: /usr/lib/cmake/ieee802_11/gnuradio-ieee802_11Targets-release.cmake
-- Installing: /usr/lib/cmake/ieee802_11/gnuradio-ieee802_11Config.cmake
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/__init__.py
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/utils.py
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/__init__.pyc
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/utils.pyc
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/__init__.pyo
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/utils.pyo
-- Installing: /usr/lib/python3.10/site-packages/ieee802_11/ieee802_11_python.cpython-310-x86_64-linux-gnu.so
-- Set runtime path of "/usr/lib/python3.10/site-packages/ieee802_11/ieee802_11_python.cpython-310-x86_64-linux-gnu.so" to ""
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_chunks_to_symbols.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_decode_mac.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_ether_encap.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_extract_csi.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_frame_equalizer.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_mac.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_mapper.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_parse_mac.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_sync_long.block.yml
-- Up-to-date: /usr/share/gnuradio/grc/blocks/ieee802_11_sync_short.block.yml

Regarding the line
-- Set runtime path of "/usr/lib/python3.10/site-packages/ieee802_11/ieee802_11_python.cpython-310-x86_64-linux-gnu.so" to ""
do you think this could indicate some reference problem?

$ python3 -c 'import foo' 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.10/site-packages/foo/__init__.py", line 18, in <module>
    from .foo_python import *
ImportError: generic_type: type "burst_tagger" referenced unknown base type "gr::sync_block"

$ python3 -c 'import ieee802_11' 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.10/site-packages/ieee802_11/__init__.py", line 18, in <module>
    from .ieee802_11_python import *
ImportError: generic_type: type "chunks_to_symbols" referenced unknown base type "gr::tagged_stream_block"

from gr-ieee802-11.

bastibl avatar bastibl commented on September 12, 2024

All I can say is that I had this exact problem and it turned out to be a pybind issue.

The exact same problem is also identified as a pybind issue here: https://lists.gnu.org/archive/html/discuss-gnuradio/2021-05/msg00056.html

Please try to compile any other GNU Radio module. If other modules work, let me know. Otherwise, please write to the GNU Radio mailing list.

from gr-ieee802-11.

Related Issues (20)

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.