Giter Club home page Giter Club logo

gnokii's People

Contributors

3x380v avatar carstengrohmann avatar dimstar77 avatar fabzzap avatar madpilot78 avatar pkot avatar sjtoik avatar vuntz 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gnokii's Issues

Modernize the Xgnokii desktop files

Consider modernizing the Xgnokii desktop files. This should include:

  1. Using a standard PNG (or SVG) icon of correct size and installing it into */share/icons (instead of */share/pixmaps).
  2. Adding AppStream metadata to allow easy installation of Xgnokii using GUI Software stores on modern Linux distributions.

gnokii dont dont read sms (getsms) reported via showsmsfolderstatus

When I run showsmsfolderstatus, I receive information about how much sms has any folder. For expample:

$ gnokii --showsmsfolderstatus
GNOKII Version 0.6.31
No. Name                                         Id #Msg
========================================================
  0 SIM card                                     SM   27
  1 Internal memory                              ME    0

Like you see, I have 27 msg on SMS folder. But, when you run

$ gnokii --config gnokiirc-ttyUSB1 --getsms SM 0 150
GNOKII Version 0.6.31
Getting SMS failed (location 0 from SM memory)! (Command called isn't implemented in model.)
Getting SMS failed (location 1 from SM memory)! (Command called isn't implemented in model.)
Getting SMS failed (location 2 from SM memory)! (Command called isn't implemented in model.)
[...]
Getting SMS failed (location 22 from SM memory)! (Command called isn't implemented in model.)
Getting SMS failed (location 23 from SM memory)! (The given location is empty.)
Getting SMS failed (location 24 from SM memory)! (Command called isn't implemented in model.)
Getting SMS failed (location 25 from SM memory)! (Problem occurred internal to model specific code.)
Getting SMS failed (location 26 from SM memory)! (Command called isn't implemented in model.)
Getting SMS failed (location 27 from SM memory)! (The given location is empty.)
Getting SMS failed (location 28 from SM memory)! (The given location is empty.)
Getting SMS failed (location 29 from SM memory)! (The given location is empty.)
Getting SMS failed (location 30 from SM memory)! (Unknown error - well better than nothing!!)
Getting SMS failed (location 31 from SM memory)! (Unknown error - well better than nothing!!)
[...]
Getting SMS failed (location 150 from SM memory)! (Unknown error - well better than nothing!!)

I don't get anything...

How can I read the 27 reported by showsmsfolderstatus?

This is a simplified example. If you like a complete results and commands, please see this.

smsd uses 100% CPU when SMS sending is not configured

Is it possible to stop smsd from using 100% CPU when it's running? I'm not sure why it does this, as strace reports it sitting at a futex call. Perhaps this is a libgnokii issue?

I am running with a Huawei USB device on /dev/ttyUSB0. Everything works, I can receive SMS messages, it just slows the machine down quite a bit with top reporting smsd using 100% CPU continuously.

Is this problem unique to me or do other people also see very high CPU use?

gnokii-smsd not INSERTing SMS INTO inbox table

Hello,

I have a problem and need help (googling a lot and tried various things, but without success).

Using modem Huawei E3131, gnokii --getsms / --sendsms, retrieving delivery reports, is working, but I have problem with smsd.

Running this as system user smsd:

smsd --host localhost --user smsd --db db_test --schema smsd --module pq --logfile /tmp/smsd.log --inbox SM

It reads SMS and display them on screen, but does not insert them into database table inbox (tables inbox and outbox are created - in schemas smsd and also public for sure) nor delete them from the device.

Program output is attached below.

Maybe AT+CMGF=1 should be used instead of AT+CMGF=0, to use SMS text mode instead of SMS PDU mode as stated here: http://www.developershome.com/sms/cmgrCommand2.asp, but I am not sure if this is the case and I don't know how to achieve that.

Please, advice... Thanks in advance!

Jan Ostrochovsky

[smsd@veles ostry]$ smsd --host localhost --user smsd --db minepro_db_test --schema smsd --module pq --logfile /tmp/smsd.log --inbox SM --maxsms 5
smsd - version 1.5.2 from gnokii 0.6.31
LOG: debug mask is 0x1
Config read from file /etc/gnokiirc.
phone instance config:
model = AT
port = /dev/ttyUSB0
connection = serial
initlength = default
serial_baudrate = 19200
serial_write_usleep = -1
handshake = software
require_dcd = 0
smsc_timeout = 10
rfcomm_channel = 0
sm_retry = 0
Initializing AT capable mobile phone ...
Serial device: opening device /dev/ttyUSB0
Serial device: setting RTS to high and DTR to high
Message sent: 0x00 / 0x0004
41 54 5a 0d                                     | ATZ             
write: [ATZ<cr>]
read : [ATZ<cr><cr><lf>OK<cr><lf>]
Message received: 0x00 / 0x000a
02 41 54 5a 0d 0d 0a 4f 4b 0d                   |  ATZ   OK       
Received message type 00
Message sent: 0x00 / 0x0005
41 54 45 31 0d                                  | ATE1            
write: [ATE1<cr>]
read : [ATE1<cr><cr><lf>OK<cr><lf>]
Message received: 0x00 / 0x000b
02 41 54 45 31 0d 0d 0a 4f 4b 0d                |  ATE1   OK      
Received message type 00
Message sent: 0x00 / 0x000a
41 54 2b 43 4d 45 45 3d 31 0d                   | AT+CMEE=1       
write: [AT+CMEE=1<cr>]
read : [AT+CMEE=1<cr><cr><lf>OK<cr><lf>]
Message received: 0x00 / 0x0010
02 41 54 2b 43 4d 45 45 3d 31 0d 0d 0a 4f 4b 0d |  AT+CMEE=1   OK 
Received message type 00
Message sent: 0x06 / 0x0007
41 54 2b 47 4d 4d 0d                            | AT+GMM          
write: [AT+GMM<cr>]
read : [AT+GMM<cr><cr><lf>E3131<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x06 / 0x0016
02 41 54 2b 47 4d 4d 0d 0d 0a 45 33 31 33 31 0d |  AT+GMM   E3131 
0a 0d 0a 4f 4b 0d                               |    OK           
Received message type 06
Message sent: 0x06 / 0x0008
41 54 2b 43 47 4d 49 0d                         | AT+CGMI         
write: [AT+CGMI<cr>]
read : [AT+CGMI<cr><cr><lf>huawei<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x06 / 0x0018
02 41 54 2b 43 47 4d 49 0d 0d 0a 68 75 61 77 65 |  AT+CGMI   huawe
69 0d 0a 0d 0a 4f 4b 0d                         | i    OK         
Received message type 06
Message sent: 0x63 / 0x0009
41 54 2b 43 53 43 53 3f 0d                      | AT+CSCS?        
write: [AT+CSCS?<cr>]
read : [AT+CSCS?<cr><cr><lf>+CSCS: "GSM"<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x63 / 0x001f
02 41 54 2b 43 53 43 53 3f 0d 0d 0a 2b 43 53 43 |  AT+CSCS?   +CSC
53 3a 20 22 47 53 4d 22 0d 0a 0d 0a 4f 4b 0d    | S: "GSM"    OK  
Received message type 63
Initialisation completed
Message sent: 0x06 / 0x0007
41 54 2b 47 4d 4d 0d                            | AT+GMM          
write: [AT+GMM<cr>]
read : [AT+GMM<cr><cr><lf>E3131<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x06 / 0x0016
02 41 54 2b 47 4d 4d 0d 0d 0a 45 33 31 33 31 0d |  AT+GMM   E3131 
0a 0d 0a 4f 4b 0d                               |    OK           
Received message type 06
Message sent: 0x06 / 0x0008
41 54 2b 43 47 4d 49 0d                         | AT+CGMI         
write: [AT+CGMI<cr>]
read : [AT+CGMI<cr><cr><lf>huawei<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x06 / 0x0018
02 41 54 2b 43 47 4d 49 0d 0d 0a 68 75 61 77 65 |  AT+CGMI   huawe
69 0d 0a 0d 0a 4f 4b 0d                         | i    OK         
Received message type 06
Message sent: 0x06 / 0x0008
41 54 2b 43 47 4d 52 0d                         | AT+CGMR         
write: [AT+CGMR<cr>]
read : [AT+CGMR<cr><cr><lf>21.157.31.00.111<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x06 / 0x0022
02 41 54 2b 43 47 4d 52 0d 0d 0a 32 31 2e 31 35 |  AT+CGMR   21.15
37 2e 33 31 2e 30 30 2e 31 31 31 0d 0a 0d 0a 4f | 7.31.00.111    O
4b 0d                                           | K               
Received message type 06
Message sent: 0x06 / 0x0008
41 54 2b 43 47 53 4e 0d                         | AT+CGSN         
write: [AT+CGSN<cr>]
read : [AT+CGSN<cr><cr><lf>862732016292117<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x06 / 0x0021
02 41 54 2b 43 47 53 4e 0d 0d 0a 38 36 32 37 33 |  AT+CGSN   86273
32 30 31 36 32 39 32 31 31 37 0d 0a 0d 0a 4f 4b | 2016292117    OK
0d                                              |                 
Received message type 06
Message sent: 0x00 / 0x000d
41 54 2b 43 50 4d 53 3d 22 4d 45 22 0d          | AT+CPMS="ME"    
write: [AT+CPMS="ME"<cr>]
read : [AT+CPMS="ME"<cr><cr><lf>+CPMS: 2,20,2,10,2,10<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x00 / 0x002c
02 41 54 2b 43 50 4d 53 3d 22 4d 45 22 0d 0d 0a |  AT+CPMS="ME"   
2b 43 50 4d 53 3a 20 32 2c 32 30 2c 32 2c 31 30 | +CPMS: 2,20,2,10
2c 32 2c 31 30 0d 0a 0d 0a 4f 4b 0d             | ,2,10    OK     
Received message type 00
Message sent: 0x12 / 0x0009
41 54 2b 43 50 4d 53 3f 0d                      | AT+CPMS?        
write: [AT+CPMS?<cr>]
read : [AT+CPMS?<cr><cr><lf>+CPMS: "ME",2,20,"SM",2,10,"SM",2,10<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x12 / 0x0037
02 41 54 2b 43 50 4d 53 3f 0d 0d 0a 2b 43 50 4d |  AT+CPMS?   +CPM
53 3a 20 22 4d 45 22 2c 32 2c 32 30 2c 22 53 4d | S: "ME",2,20,"SM
22 2c 32 2c 31 30 2c 22 53 4d 22 2c 32 2c 31 30 | ",2,10,"SM",2,10
0d 0a 0d 0a 4f 4b 0d                            |     OK          
Received message type 12
Message sent: 0x00 / 0x000d
41 54 2b 43 50 4d 53 3d 22 53 4d 22 0d          | AT+CPMS="SM"    
write: [AT+CPMS="SM"<cr>]
read : [AT+CPMS="SM"<cr><cr><lf>+CPMS: 2,10,2,10,2,10<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x00 / 0x002c
02 41 54 2b 43 50 4d 53 3d 22 53 4d 22 0d 0d 0a |  AT+CPMS="SM"   
2b 43 50 4d 53 3a 20 32 2c 31 30 2c 32 2c 31 30 | +CPMS: 2,10,2,10
2c 32 2c 31 30 0d 0a 0d 0a 4f 4b 0d             | ,2,10    OK     
Received message type 00
Message sent: 0x12 / 0x0009
41 54 2b 43 50 4d 53 3f 0d                      | AT+CPMS?        
write: [AT+CPMS?<cr>]
read : [AT+CPMS?<cr><cr><lf>+CPMS: "SM",2,10,"SM",2,10,"SM",2,10<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x12 / 0x0037
02 41 54 2b 43 50 4d 53 3f 0d 0d 0a 2b 43 50 4d |  AT+CPMS?   +CPM
53 3a 20 22 53 4d 22 2c 32 2c 31 30 2c 22 53 4d | S: "SM",2,10,"SM
22 2c 32 2c 31 30 2c 22 53 4d 22 2c 32 2c 31 30 | ",2,10,"SM",2,10
0d 0a 0d 0a 4f 4b 0d                            |     OK          
Received message type 12
Message sent: 0x65 / 0x000a
41 54 2b 43 4d 47 46 3d 30 0d                   | AT+CMGF=0       
write: [AT+CMGF=0<cr>]
read : [AT+CMGF=0<cr><cr><lf>OK<cr><lf>]
Message received: 0x65 / 0x0010
02 41 54 2b 43 4d 47 46 3d 30 0d 0d 0a 4f 4b 0d |  AT+CMGF=0   OK 
Received message type 65
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 31 0d                   | AT+CMGR=1       
write: [AT+CMGR=1<cr>]
read : [AT+CMGR=1<cr><cr><lf>+CMGR: 1,,56<cr><lf>0791249194099990240C912491116615260000518010325082802AD168341A8D46A3D168341A8D46A3D168341A8D46A3D1EBF57ABD0683D76B341A8D46A3D128<cr><lf><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x00a2
02 41 54 2b 43 4d 47 52 3d 31 0d 0d 0a 2b 43 4d |  AT+CMGR=1   +CM
47 52 3a 20 31 2c 2c 35 36 0d 0a 30 37 39 31 32 | GR: 1,,56  07912
34 39 31 39 34 30 39 39 39 39 30 32 34 30 43 39 | 49194099990240C9
31 32 34 39 31 31 31 36 36 31 35 32 36 30 30 30 | 1249111661526000
30 35 31 38 30 31 30 33 32 35 30 38 32 38 30 32 | 0518010325082802
41 44 31 36 38 33 34 31 41 38 44 34 36 41 33 44 | AD168341A8D46A3D
31 36 38 33 34 31 41 38 44 34 36 41 33 44 31 36 | 168341A8D46A3D16
38 33 34 31 41 38 44 34 36 41 33 44 31 45 42 46 | 8341A8D46A3D1EBF
35 37 41 42 44 30 36 38 33 44 37 36 42 33 34 31 | 57ABD0683D76B341
41 38 44 34 36 41 33 44 31 32 38 0d 0a 0d 0a 4f | A8D46A3D128    O
4b 0d                                           | K               
Received message type 18
0791249194099990240C912491116615260000518010325082802AD168341A8D46A3D168341A8D46A3D168341A8D46A3D1EBF57ABD0683D76B341A8D46A3D128
SMS-DELIVER found
Mobile Terminated message:
    Date: 2015-08-01 23:05:28 +0200
    Remote number (recipient or sender): +421911XXXXXX
    SMS center number: +421949909909
Default Alphabet
QQQQQQQQQQQQQQQQQQQQQQQQQWWWWWAAWWQQQQQQQQ
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 32 0d                   | AT+CMGR=2       
write: [AT+CMGR=2<cr>]
read : [AT+CMGR=2<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 32 0d 0d 0a 4f 4b 0d |  AT+CMGR=2   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 33 0d                   | AT+CMGR=3       
write: [AT+CMGR=3<cr>]
read : [AT+CMGR=3<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 33 0d 0d 0a 4f 4b 0d |  AT+CMGR=3   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 34 0d                   | AT+CMGR=4       
write: [AT+CMGR=4<cr>]
read : [AT+CMGR=4<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 34 0d 0d 0a 4f 4b 0d |  AT+CMGR=4   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 35 0d                   | AT+CMGR=5       
write: [AT+CMGR=5<cr>]
read : [AT+CMGR=5<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 35 0d 0d 0a 4f 4b 0d |  AT+CMGR=5   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 36 0d                   | AT+CMGR=6       
write: [AT+CMGR=6<cr>]
read : [AT+CMGR=6<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 36 0d 0d 0a 4f 4b 0d |  AT+CMGR=6   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 37 0d                   | AT+CMGR=7       
write: [AT+CMGR=7<cr>]
read : [AT+CMGR=7<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 37 0d 0d 0a 4f 4b 0d |  AT+CMGR=7   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 38 0d                   | AT+CMGR=8       
write: [AT+CMGR=8<cr>]
read : [AT+CMGR=8<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 38 0d 0d 0a 4f 4b 0d |  AT+CMGR=8   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000a
41 54 2b 43 4d 47 52 3d 39 0d                   | AT+CMGR=9       
write: [AT+CMGR=9<cr>]
read : [AT+CMGR=9<cr><cr><lf>OK<cr><lf>]
Message received: 0x18 / 0x0010
02 41 54 2b 43 4d 47 52 3d 39 0d 0d 0a 4f 4b 0d |  AT+CMGR=9   OK 
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 30 0d                | AT+CMGR=10      
write: [AT+CMGR=10<cr>]
read : [^A^4+CMGR=10<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 30 0d 0d 0a 2b 43 |    +CMGR=10   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 31 0d                | AT+CMGR=11      
write: [AT+CMGR=11<cr>]
read : [^A^4+CMGR=11<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 31 0d 0d 0a 2b 43 |    +CMGR=11   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
^CPDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 32 0d                | AT+CMGR=12      
write: [AT+CMGR=12<cr>]
read : [^A^4+CMGR=12<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 32 0d 0d 0a 2b 43 |    +CMGR=12   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 33 0d                | AT+CMGR=13      
write: [AT+CMGR=13<cr>]
read : [^A^4+CMGR=13<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 33 0d 0d 0a 2b 43 |    +CMGR=13   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 34 0d                | AT+CMGR=14      
write: [AT+CMGR=14<cr>]
read : [^A^4+CMGR=14<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 34 0d 0d 0a 2b 43 |    +CMGR=14   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 35 0d                | AT+CMGR=15      
write: [AT+CMGR=15<cr>]
read : [^A^4+CMGR=15<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 35 0d 0d 0a 2b 43 |    +CMGR=15   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 36 0d                | AT+CMGR=16      
write: [AT+CMGR=16<cr>]
read : [^A^4+CMGR=16<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 36 0d 0d 0a 2b 43 |    +CMGR=16   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
PDU mode set
Message sent: 0x18 / 0x000b
41 54 2b 43 4d 47 52 3d 31 37 0d                | AT+CMGR=17      
write: [AT+CMGR=17<cr>]
read : [^A^4+CMGR=17<cr><cr><lf>+CMS ERROR: 500<cr><lf>]
Message received: 0x18 / 0x001e
04 01 f4 2b 43 4d 47 52 3d 31 37 0d 0d 0a 2b 43 |    +CMGR=17   +C
4d 53 20 45 52 52 4f 52 3a 20 35 30 30 0d       | MS ERROR: 500   
Received message type 18
Serial device: closing device

(interrupted by CTRL+C and killall smsd)

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.