Code Monkey home page Code Monkey logo

astlog's Introduction

Install

$ yum install virtualenv
$ virtualenv env/astlog
$ source env/astlog/bin/activate
$ python setup.py develop

If setup.py fails because of SSL error:

$ pip install pip==1.2.1      # downgrade to older version of pip which works over http
$ pip install urwid
$ python setup.py develop

Install as global script

$ ln -s /opt/slsolucije/astlog/env/astlog/bin/astlog /usr/local/bin/astlog

Usage

Save asterisk log with sip debug messages, and use astlog

usage: astlog [-h] [--cdr-file CDR_FILE] [--from-when FROM_WHEN]
              [--to-when TO_WHEN] [--tail-minutes TAIL_MINUTES]
              [--log-output LOG_OUTPUT] [--use-memory-pct USE_MEMORY_PCT]
              log_file

Viewing a call - 1

Viewing a call - 2

astlog's People

Contributors

goranskular 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

Watchers

 avatar  avatar  avatar  avatar  avatar

astlog's Issues

astlog not working in MacOS environments

Hello!

First of all thanks for your amazing tool, it has made my life way easier :)

I recently switched to a MacOS environment and when I try to use the tool I get an error about a file missing:

(astlog) gonzalo@XXXX ~ % astlog $PWD/sip.log
Traceback (most recent call last):
  File "/Users/gonzalo/astlog/astlog/app.py", line 1112, in run
    self.loop.run()
  File "/Users/gonzalo/.virtualenvs/astlog/lib/python3.9/site-packages/urwid-2.6.10-py3.9.egg/urwid/event_loop/main_loop.py", line 337, in run
    self._run()
  File "/Users/gonzalo/.virtualenvs/astlog/lib/python3.9/site-packages/urwid-2.6.10-py3.9.egg/urwid/event_loop/main_loop.py", line 439, in _run
    self.event_loop.run()
  File "/Users/gonzalo/.virtualenvs/astlog/lib/python3.9/site-packages/urwid-2.6.10-py3.9.egg/urwid/event_loop/select_loop.py", line 182, in run
    self._loop()
  File "/Users/gonzalo/.virtualenvs/astlog/lib/python3.9/site-packages/urwid-2.6.10-py3.9.egg/urwid/event_loop/select_loop.py", line 224, in _loop
    alarm_callback()
  File "/Users/gonzalo/.virtualenvs/astlog/lib/python3.9/site-packages/urwid-2.6.10-py3.9.egg/urwid/event_loop/main_loop.py", line 218, in cb
    callback(self, user_data)
  File "/Users/gonzalo/astlog/astlog/app.py", line 1110, in <lambda>
    self.loop.set_alarm_in(0, lambda loop, data: self.reload_file())
  File "/Users/gonzalo/astlog/astlog/app.py", line 1035, in reload_file
    self.parser.load_file(progress)
  File "/Users/gonzalo/astlog/astlog/reader.py", line 559, in load_file
    data = self.read_data()
  File "/Users/gonzalo/astlog/astlog/reader.py", line 548, in read_data
    mem_size = get_memory_size()
  File "/Users/gonzalo/astlog/astlog/reader.py", line 1449, in get_memory_size
    with open('/proc/meminfo') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/proc/meminfo'

I suspect this has to do with the get_memory_size method:

Given that MacOS does not use /proc/ :

  • is there any way to circumvent this memory size check?
  • Alternatively, can we add support for it? -> Do you accept external PRs? I would not mind to try to fix it myself!

Best,

grubio

TypeError: strptime() argument 1 must be string, not None

Hi,

I've install astlog and when i trie to test this with asterisk log, i've got an error:
""TypeError: strptime() argument 1 must be string, not None""

I've got several result in left panel, This error come when i select a result with space.
I've try whithout any argument exept logfile.
I've trie to set start time with format show in help (--from-when "2018-12-22 00:00:00"), but he sais "No data after 2018-12-22 00:00:00

Traceback (most recent call last):
File "/home/jam/astlog/astlog/app.py", line 1112, in run
self.loop.run()
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/main_loop.py", line 286, in run
self._run()
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/main_loop.py", line 384, in _run
self.event_loop.run()
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/main_loop.py", line 788, in run
self._loop()
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/main_loop.py", line 825, in _loop
self._watch_filesfd
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/raw_display.py", line 404, in
event_loop, callback, self.get_available_raw_input())
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/raw_display.py", line 502, in parse_input
callback(processed, processed_codes)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/main_loop.py", line 411, in _update
self.process_input(keys)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/main_loop.py", line 511, in process_input
k = self._topmost_widget.keypress(self.screen_size, k)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/container.py", line 1131, in keypress
return self.body.keypress( (maxcol, remaining), key )
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/container.py", line 2271, in keypress
key = w.keypress((mc,) + size[1:], key)
File "/home/jam/astlog/astlog/app.py", line 480, in keypress
return self.frame.keypress(size, key)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/container.py", line 1131, in keypress
return self.body.keypress( (maxcol, remaining), key )
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/listbox.py", line 999, in keypress
key = focus_widget.keypress((maxcol,),key)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/wimp.py", line 275, in keypress
self.toggle_state()
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/wimp.py", line 438, in toggle_state
self.set_state(True)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/wimp.py", line 408, in set_state
self.__super.set_state(state, do_callback)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/wimp.py", line 240, in set_state
self._emit('change', state)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/widget.py", line 460, in _emit
signals.emit_signal(self, name, self, *args)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/signals.py", line 265, in emit
result |= self._call_callback(callback, user_arg, user_args, args)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/signals.py", line 295, in _call_callback
return bool(callback(*args_to_pass))
File "/home/jam/astlog/astlog/app.py", line 485, in on_select_phone
self._emit('select', call_id)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/widget.py", line 460, in _emit
signals.emit_signal(self, name, self, *args)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/signals.py", line 265, in emit
result |= self._call_callback(callback, user_arg, user_args, args)
File "/home/jam/astlog/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7.egg/urwid/signals.py", line 295, in _call_callback
return bool(callback(*args_to_pass))
File "/home/jam/astlog/astlog/app.py", line 1008, in on_result_selected
self.log_display.load_result(ref)
File "/home/jam/astlog/astlog/app.py", line 675, in load_result
self.refresh_log()
File "/home/jam/astlog/astlog/app.py", line 904, in refresh_log
('elapsed', '(ela: %s) ' % sip.elapsed_sec)]
File "/home/jam/astlog/astlog/reader.py", line 179, in elapsed_sec
elapsed = self.elapsed
File "/home/jam/astlog/astlog/reader.py", line 173, in elapsed
and self.dialog.start_sip.timestamp
File "/home/jam/astlog/astlog/reader.py", line 166, in timestamp
self._timestamp = parse_when(self.when)
File "/home/jam/astlog/astlog/reader.py", line 28, in parse_when
return datetime.strptime(when, fmt)
TypeError: strptime() argument 1 must be string, not None

Have you got any ideas ?

Thanks for your helping !

Crash because of UnicodeDecodeError

Hello,

I've followed the setup guide, ran astlog fine.
Trigger a search through F3 with a channel ID
Go to result list, try to tick the matching result with space => Crash with below exception :

Traceback (most recent call last):
  File "/data/python/env/astlog/astlog/astlog/app.py", line 1107, in run
    self.loop.run()
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/main_loop.py", line 286, in run
    self._run()
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/main_loop.py", line 384, in _run
    self.event_loop.run()
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/main_loop.py", line 788, in run
    self._loop()
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/main_loop.py", line 825, in _loop
    self._watch_files[fd]()
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/raw_display.py", line 404, in <lambda>
    event_loop, callback, self.get_available_raw_input())
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/raw_display.py", line 502, in parse_input
    callback(processed, processed_codes)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/main_loop.py", line 411, in _update
    self.process_input(keys)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/main_loop.py", line 511, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/container.py", line 2271, in keypress
    key = w.keypress((mc,) + size[1:], key)
  File "/data/python/env/astlog/astlog/astlog/app.py", line 479, in keypress
    return self.frame.keypress(size, key)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/container.py", line 1131, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/listbox.py", line 999, in keypress
    key = focus_widget.keypress((maxcol,),key)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/wimp.py", line 275, in keypress
    self.toggle_state()
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/wimp.py", line 438, in toggle_state
    self.set_state(True)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/wimp.py", line 408, in set_state
    self.__super.set_state(state, do_callback)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/wimp.py", line 240, in set_state
    self._emit('change', state)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/widget.py", line 460, in _emit
    signals.emit_signal(self, name, self, *args)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/signals.py", line 265, in emit
    result |= self._call_callback(callback, user_arg, user_args, args)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/signals.py", line 295, in _call_callback
    return bool(callback(*args_to_pass))
  File "/data/python/env/astlog/astlog/astlog/app.py", line 484, in on_select_phone
    self._emit('select', call_id)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/widget.py", line 460, in _emit
    signals.emit_signal(self, name, self, *args)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/signals.py", line 265, in emit
    result |= self._call_callback(callback, user_arg, user_args, args)
  File "/data/python/env/astlog/local/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg/urwid/signals.py", line 295, in _call_callback
    return bool(callback(*args_to_pass))
  File "/data/python/env/astlog/astlog/astlog/app.py", line 1003, in on_result_selected
    self.log_display.load_result(ref)
  File "/data/python/env/astlog/astlog/astlog/app.py", line 673, in load_result
    self.refresh_log()
  File "/data/python/env/astlog/astlog/astlog/app.py", line 932, in refresh_log
    'Queue': 'asterisk-app',
  File "/data/python/env/astlog/astlog/astlog/app.py", line 326, in add
    found=found)
  File "/data/python/env/astlog/astlog/astlog/app.py", line 398, in _search
    level + 1, max_depth, found)
  File "/data/python/env/astlog/astlog/astlog/app.py", line 372, in _search
    start, end = finder(text)
  File "/data/python/env/astlog/astlog/astlog/app.py", line 420, in string_finder
    index = text.find(needle)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 184: ordinal not in range(128)

These were the installation messages:

running develop
running egg_info
creating astlog.egg-info
writing requirements to astlog.egg-info/requires.txt
writing astlog.egg-info/PKG-INFO
writing top-level names to astlog.egg-info/top_level.txt
writing dependency_links to astlog.egg-info/dependency_links.txt
writing entry points to astlog.egg-info/entry_points.txt
writing manifest file 'astlog.egg-info/SOURCES.txt'
reading manifest file 'astlog.egg-info/SOURCES.txt'
writing manifest file 'astlog.egg-info/SOURCES.txt'
running build_ext
Creating /data/python/env/astlog/lib/python2.7/site-packages/astlog.egg-link (link to .)
Adding astlog 0.5 to easy-install.pth file
Installing astlog script to /data/python/env/astlog/bin

Installed /data/python/env/astlog/astlog
Processing dependencies for astlog==0.5
Searching for urwid
Reading https://pypi.org/simple/urwid/
Downloading https://files.pythonhosted.org/packages/c7/90/415728875c230fafd13d118512bde3184d810d7bf798a631abc05fac09d0/urwid-2.0.1.tar.gz#sha256=644d3e3900867161a2fc9287a9762753d66bd194754679adb26aede559bcccbc
Best match: urwid 2.0.1
Processing urwid-2.0.1.tar.gz
Writing /tmp/easy_install-k3xuId/urwid-2.0.1/setup.cfg
Running urwid-2.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-k3xuId/urwid-2.0.1/egg-dist-tmp-D856HM
warning: no files found matching 'CHANGELOG'
creating /data/python/env/astlog/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg
Extracting urwid-2.0.1-py2.7-linux-x86_64.egg to /data/python/env/astlog/lib/python2.7/site-packages
Adding urwid 2.0.1 to easy-install.pth file

Installed /data/python/env/astlog/lib/python2.7/site-packages/urwid-2.0.1-py2.7-linux-x86_64.egg
Finished processing dependencies for astlog==0.5

Installer not working, setup.py not found

I'm trying to install your application for use as a debugging tool, but the installation procedure is failing, unable to find setup.py. The installation was performed on Raspbian (Debian stretch-based), on a freshly updated system. See below.

Connect: 2019-02-25 21:06
Linux servpi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 25 15:19:30 2019 from 192.168.0.244
pi@servpi:~$ sudo apt-get install virtualenv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  lxkeymap python-cairo python-gobject python-gobject-2 python-gtk2 python-xklavier realpath
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  python3-virtualenv
The following NEW packages will be installed:
  python3-virtualenv virtualenv
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 77.4 kB of archives.
After this operation, 171 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.ocf.berkeley.edu/raspbian/raspbian stretch/main armhf python3-virtualenv all 15.1.0+ds-1 [57.7 kB]
Get:2 http://mirrors.ocf.berkeley.edu/raspbian/raspbian stretch/main armhf virtualenv all 15.1.0+ds-1 [19.7 kB]
Fetched 77.4 kB in 31s (2,441 B/s)   
Selecting previously unselected package python3-virtualenv.
(Reading database ... 128120 files and directories currently installed.)
Preparing to unpack .../python3-virtualenv_15.1.0+ds-1_all.deb ...
Unpacking python3-virtualenv (15.1.0+ds-1) ...
Selecting previously unselected package virtualenv.
Preparing to unpack .../virtualenv_15.1.0+ds-1_all.deb ...
Unpacking virtualenv (15.1.0+ds-1) ...
Setting up python3-virtualenv (15.1.0+ds-1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up virtualenv (15.1.0+ds-1) ...
pi@servpi:~$ 
pi@servpi:~$ virtualenv env/astlog
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/pi/env/astlog/bin/python2
Also creating executable in /home/pi/env/astlog/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
pi@servpi:~$ 
pi@servpi:~$ source env/astlog/bin/activate
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ python setup.py develop
python: can't open file 'setup.py': [Errno 2] No such file or directory
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ echo $PATH
/home/pi/env/astlog/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ find /home/pi/env/astlog/bin -name "setup.py"
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ ls /home/pi/env/astlog/bin -l
total 3140
-rw-r--r-- 1 pi pi    2078 Feb 25 21:17 activate
-rw-r--r-- 1 pi pi    1020 Feb 25 21:17 activate.csh
-rw-r--r-- 1 pi pi    2174 Feb 25 21:17 activate.fish
-rw-r--r-- 1 pi pi    1137 Feb 25 21:17 activate_this.py
-rwxr-xr-x 1 pi pi     249 Feb 25 21:17 easy_install
-rwxr-xr-x 1 pi pi     249 Feb 25 21:17 easy_install-2.7
-rwxr-xr-x 1 pi pi     231 Feb 25 21:17 pip
-rwxr-xr-x 1 pi pi     231 Feb 25 21:17 pip2
-rwxr-xr-x 1 pi pi     231 Feb 25 21:17 pip2.7
lrwxrwxrwx 1 pi pi       7 Feb 25 21:16 python -> python2
-rwxr-xr-x 1 pi pi 3166320 Feb 25 21:16 python2
lrwxrwxrwx 1 pi pi       7 Feb 25 21:16 python2.7 -> python2
-rwxr-xr-x 1 pi pi    2337 Feb 25 21:17 python-config
-rwxr-xr-x 1 pi pi     227 Feb 25 21:17 wheel
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ uname -a
Linux servpi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
(astlog) pi@servpi:~$ 
(astlog) pi@servpi:~$ python --version
Python 2.7.13
(astlog) pi@servpi:~$

Please take a look and report back, as your screenshots look very promising.

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.