Comments (27)
Please try a private browser tab, delete cache and disable add-ons, they try it again. there is no known issue with the web ui
from pixelit.
I tried it with Chrome and Safari.
see attachment (Screenshots, Fotos)
IP: ...235: ESP8266
IP: ...234: ESP32: "SAVE CONFIG" not possible
https://drive.google.com/drive/folders/1W878EsqUMwiDXferPK8ozZJezjIms3Ja?usp=sharing
from pixelit.
The ESP32 WebUI doenst load settings. Save is only possible, if there anything you can save. Please show me the browser console log.
from pixelit.
[2023-06-19T11:52:14] CheckUpdate: No new FW available
[2023-06-19T11:52:13] CheckUpdate: Checking...
[2023-06-19T11:52:13] SendTelemetry: Sending...
[2023-06-19T11:52:10] WebSocketEvent: [0] Disconnected!
[2023-06-19T11:52:01] WebSocketEvent: [2] Connected from 192.168.178.10 url: /
[2023-06-19T11:51:49] WebSocketEvent: [1] Connected from 192.168.178.10 url: /
from pixelit.
after activating NodeRedFlow:
[2023-06-19T11:53:21] CreateFrames: JSON contains Text (Length: 199)
[2023-06-19T11:53:21] HandleScreen: Incoming JSON length: 199
[2023-06-19T11:53:18] CreateFrames: JSON contains Text (Length: 199)
[2023-06-19T11:53:18] HandleScreen: Incoming JSON length: 199
[2023-06-19T11:53:14] CreateFrames: JSON contains Text (Length: 196)
[2023-06-19T11:53:14] HandleScreen: Incoming JSON length: 196
[2023-06-19T11:53:12] CreateFrames: JSON contains Text (Length: 199)
[2023-06-19T11:53:11] HandleScreen: Incoming JSON length: 199
[2023-06-19T11:53:09] CreateFrames: JSON contains Text (Length: 199)
[2023-06-19T11:53:09] HandleScreen: Incoming JSON length: 199
[2023-06-19T11:52:14] CheckUpdate: No new FW available
[2023-06-19T11:52:13] CheckUpdate: Checking...
[2023-06-19T11:52:13] SendTelemetry: Sending...
[2023-06-19T11:52:10] WebSocketEvent: [0] Disconnected!
[2023-06-19T11:52:01] WebSocketEvent: [2] Connected from 192.168.178.10 url: /
[2023-06-19T11:51:49] WebSocketEvent: [1] Connected from 192.168.178.10 url: /
from pixelit.
browser console means the F12-Key or similar console of the desktop web browser, not the log inside the website.
from pixelit.
oh... ;-)
what should i look for?
=> screenshot of an issue: https://drive.google.com/file/d/1wrFQHLPl--SESFctqUjPpgnfLyWJGLpo/view?usp=drive_link
from pixelit.
_off | @ | leaflet-src.js:590 | |
---|---|---|---|
off | @ | leaflet-src.js:499 | |
_spiderfierOnRemove | @ | leaflet.markercluster-src.js:2537 | |
onRemove | @ | leaflet.markercluster-src.js:661 | |
removeLayer | @ | leaflet-src.js:6663 | |
removeFrom | @ | leaflet-src.js:6548 | |
remove | @ | leaflet-src.js:6537 | |
remove | @ | leaflet-src.js:3755 | |
beforeDestroy | @ | LMap.js:305 | |
Ge | @ | vue.runtime.esm.js:2988 | |
En | @ | vue.runtime.esm.js:3987 | |
Cn.t.$destroy | @ | vue.runtime.esm.js:3758 | |
destroy | @ | vue.runtime.esm.js:4398 | |
C | @ | vue.runtime.esm.js:6641 | |
(anonymous) | @ | vue.runtime.esm.js:7004 | |
Cn.t.$destroy | @ | vue.runtime.esm.js:3776 | |
destroy | @ | vue.runtime.esm.js:4398 | |
C | @ | vue.runtime.esm.js:6641 | |
C | @ | vue.runtime.esm.js:6647 | |
(anonymous) | @ | vue.runtime.esm.js:7004 | |
Cn.t.$destroy | @ | vue.runtime.esm.js:3776 | |
destroy | @ | vue.runtime.esm.js:4398 | |
C | @ | vue.runtime.esm.js:6641 | |
C | @ | vue.runtime.esm.js:6647 | |
C | @ | vue.runtime.esm.js:6647 | |
C | @ | vue.runtime.esm.js:6647 | |
(anonymous) | @ | vue.runtime.esm.js:7004 | |
Cn.t.$destroy | @ | vue.runtime.esm.js:3776 | |
destroy | @ | vue.runtime.esm.js:4398 | |
C | @ | vue.runtime.esm.js:6641 | |
L | @ | vue.runtime.esm.js:6657 | |
k | @ | vue.runtime.esm.js:6780 | |
A | @ | vue.runtime.esm.js:6850 | |
k | @ | vue.runtime.esm.js:6724 | |
A | @ | vue.runtime.esm.js:6850 | |
(anonymous) | @ | vue.runtime.esm.js:7018 | |
Cn.t._update | @ | vue.runtime.esm.js:3730 | |
i | @ | vue.runtime.esm.js:3831 | |
t.get | @ | vue.runtime.esm.js:3407 | |
t.run | @ | vue.runtime.esm.js:3483 | |
Zn | @ | vue.runtime.esm.js:4077 | |
(anonymous) | @ | vue.runtime.esm.js:3114 | |
tn | @ | vue.runtime.esm.js:3036 | |
Promise.then (async) | |||
Xe | @ | vue.runtime.esm.js:3061 | |
an | @ | vue.runtime.esm.js:3126 | |
Gn | @ | vue.runtime.esm.js:4162 | |
t.update | @ | vue.runtime.esm.js:3474 | |
t.notify | @ | vue.runtime.esm.js:695 | |
set | @ | vue.runtime.esm.js:941 | |
(anonymous) | @ | vue-router.esm.js:3003 | |
(anonymous) | @ | vue-router.esm.js:3002 | |
te.updateRoute | @ | vue-router.esm.js:2414 | |
(anonymous) | @ | vue-router.esm.js:2263 | |
(anonymous) | @ | vue-router.esm.js:2402 | |
i | @ | vue-router.esm.js:2001 | |
i | @ | vue-router.esm.js:2008 | |
Nt | @ | vue-router.esm.js:2012 | |
(anonymous) | @ | vue-router.esm.js:2397 | |
i | @ | vue-router.esm.js:2001 | |
(anonymous) | @ | vue-router.esm.js:2005 | |
(anonymous) | @ | vue-router.esm.js:2384 | |
(anonymous) | @ | vue-router.esm.js:2162 | |
f | @ | vue-router.esm.js:2362 | |
i | @ | vue-router.esm.js:2004 | |
i | @ | vue-router.esm.js:2008 | |
i | @ | vue-router.esm.js:2008 | |
Nt | @ | vue-router.esm.js:2012 | |
te.confirmTransition | @ | vue-router.esm.js:2392 | |
te.transitionTo | @ | vue-router.esm.js:2260 | |
e.push | @ | vue-router.esm.js:2715 | |
_e.push | @ | vue-router.esm.js:3037 | |
_ | @ | vue-router.esm.js:1139 | |
Ge | @ | vue.runtime.esm.js:2988 | |
n | @ | vue.runtime.esm.js:1786 | |
Co.o._wrapper | @ | vue.runtime.esm.js:7405 |
from pixelit.
There is a problem with the config file. please erase the complete flash: https://randomnerdtutorials.com/esp32-erase-flash-memory/
from pixelit.
Is it ok to do this with "ESP32 Download Tool" V 3.9.2?
What do I have to consider while flashing? SPI-Mode: QIO or DIO / QOUT or DOUT?!
Adress?! @0 or @1000?!?
from pixelit.
esptool.py v4.6.2
Found 1 serial ports
Serial port COM7
Connecting.....
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: e0:5a:1b:a0:1a:98
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 14.3s
Hard resetting via RTS pin...
from pixelit.
[1970-01-01T00:01:00] Setup: Starting UDP
[1970-01-01T00:01:00] Setup: Webserver started
[1970-01-01T00:01:00] DFPlayer: DFPlayer started
[1970-01-01T00:01:00] CheckUpdate: Checking...
[1970-01-01T00:01:01] CheckUpdate: New FW available
[1970-01-01T00:01:01] SendTelemetry: Sending...
[1970-01-01T00:01:01] Sync TimeServer: de.pool.ntp.org waiting for sync
[2023-06-19T13:07:03] Auto Brightness: Lux: 0.00 set brightness to 20
[2023-06-19T13:07:04] HandleScreen: Incoming JSON length: 197
[2023-06-19T13:07:04] CreateFrames: JSON contains Text (Length: 197)
[2023-06-19T13:07:05] WebSocketEvent: [0] Connected from 192.168.178.10 url: /
[ 64061][E][vfs_api.cpp:24] open(): File system is not mounted
from pixelit.
I'll try a new ESP32 d1_mini :-)
from pixelit.
I tried with a new one... the same...
in serial monitoring:
[ 51412][E][vfs_api.cpp:24] open(): File system is not mounted
from pixelit.
Maybe @rliegmann can help, he fixed the ESP32 support. My PixelIts runs fine with ESP8266
from pixelit.
OK. It will be great. Yes, on ESP8266 it works fine...
from pixelit.
Hi foorschtbar,
i can try to help you What board do you have exactly? The "ESP32 d1_mini" or, From which board manufacturer.
Another idea is to flash the Arduino IDE example sketch after deleting it. That solved the problem for me.
LG Ralf
from pixelit.
Esp32 d1 mini (MH-ET).
from pixelit.
OK, Try to lash the following code. It tests the file system. Then again the Pixelit am over it.
#include "FS.h"
#include "SPIFFS.h"
/* You only need to format SPIFFS the first time you run a
test or else use the SPIFFS plugin to create a partition
https://github.com/me-no-dev/arduino-esp32fs-plugin */
#define FORMAT_SPIFFS_IF_FAILED true
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
Serial.printf("Listing directory: %s\r\n", dirname);
File root = fs.open(dirname);
if(!root){
Serial.println("- failed to open directory");
return;
}
if(!root.isDirectory()){
Serial.println(" - not a directory");
return;
}
File file = root.openNextFile();
while(file){
if(file.isDirectory()){
Serial.print(" DIR : ");
Serial.println(file.name());
if(levels){
listDir(fs, file.path(), levels -1);
}
} else {
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print("\tSIZE: ");
Serial.println(file.size());
}
file = root.openNextFile();
}
}
void readFile(fs::FS &fs, const char * path){
Serial.printf("Reading file: %s\r\n", path);
File file = fs.open(path);
if(!file || file.isDirectory()){
Serial.println("- failed to open file for reading");
return;
}
Serial.println("- read from file:");
while(file.available()){
Serial.write(file.read());
}
file.close();
}
void writeFile(fs::FS &fs, const char * path, const char * message){
Serial.printf("Writing file: %s\r\n", path);
File file = fs.open(path, FILE_WRITE);
if(!file){
Serial.println("- failed to open file for writing");
return;
}
if(file.print(message)){
Serial.println("- file written");
} else {
Serial.println("- write failed");
}
file.close();
}
void appendFile(fs::FS &fs, const char * path, const char * message){
Serial.printf("Appending to file: %s\r\n", path);
File file = fs.open(path, FILE_APPEND);
if(!file){
Serial.println("- failed to open file for appending");
return;
}
if(file.print(message)){
Serial.println("- message appended");
} else {
Serial.println("- append failed");
}
file.close();
}
void renameFile(fs::FS &fs, const char * path1, const char * path2){
Serial.printf("Renaming file %s to %s\r\n", path1, path2);
if (fs.rename(path1, path2)) {
Serial.println("- file renamed");
} else {
Serial.println("- rename failed");
}
}
void deleteFile(fs::FS &fs, const char * path){
Serial.printf("Deleting file: %s\r\n", path);
if(fs.remove(path)){
Serial.println("- file deleted");
} else {
Serial.println("- delete failed");
}
}
void testFileIO(fs::FS &fs, const char * path){
Serial.printf("Testing file I/O with %s\r\n", path);
static uint8_t buf[512];
size_t len = 0;
File file = fs.open(path, FILE_WRITE);
if(!file){
Serial.println("- failed to open file for writing");
return;
}
size_t i;
Serial.print("- writing" );
uint32_t start = millis();
for(i=0; i<2048; i++){
if ((i & 0x001F) == 0x001F){
Serial.print(".");
}
file.write(buf, 512);
}
Serial.println("");
uint32_t end = millis() - start;
Serial.printf(" - %u bytes written in %u ms\r\n", 2048 * 512, end);
file.close();
file = fs.open(path);
start = millis();
end = start;
i = 0;
if(file && !file.isDirectory()){
len = file.size();
size_t flen = len;
start = millis();
Serial.print("- reading" );
while(len){
size_t toRead = len;
if(toRead > 512){
toRead = 512;
}
file.read(buf, toRead);
if ((i++ & 0x001F) == 0x001F){
Serial.print(".");
}
len -= toRead;
}
Serial.println("");
end = millis() - start;
Serial.printf("- %u bytes read in %u ms\r\n", flen, end);
file.close();
} else {
Serial.println("- failed to open file for reading");
}
}
void setup(){
Serial.begin(115200);
if(!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)){
Serial.println("SPIFFS Mount Failed");
return;
}
listDir(SPIFFS, "/", 0);
writeFile(SPIFFS, "/hello.txt", "Hello ");
appendFile(SPIFFS, "/hello.txt", "World!\r\n");
readFile(SPIFFS, "/hello.txt");
renameFile(SPIFFS, "/hello.txt", "/foo.txt");
readFile(SPIFFS, "/foo.txt");
deleteFile(SPIFFS, "/foo.txt");
testFileIO(SPIFFS, "/test.txt");
deleteFile(SPIFFS, "/test.txt");
Serial.println( "Test complete" );
}
void loop(){
}
from pixelit.
how to do it?
from pixelit.
Hi,
I've compiled it. Try this:
sketch_aug2a.ino.bin.zip
from pixelit.
after flashing:
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
invalid header: 0x29294346
invalid header: 0x29294346
invalid header: 0x29294346
invalid header: 0x29294346
invalid header: 0x29294346
invalid header: 0x29294346
invalid header: 0x29294346
invalid header: 0x29294346
from pixelit.
Using 'COM7' as serial port.
Connecting......
Detecting chip type... ESP32
Connecting....
Chip Info:
- Chip Family: ESP32
- Chip Model: ESP32-D0WDQ5-V3 (revision 3)
- Number of Cores: 2
- Max CPU Frequency: 240MHz
- Has Bluetooth: YES
- Has Embedded Flash: NO
- Has Factory-Calibrated ADC: YES
- MAC Address: E0:5A:1B:A0:1A:98
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed. - Flash Size: 4MB
- Flash Mode: dio
- Flash Frequency: 80MHz
Erasing flash (this may take a while)...
Chip erase completed successfully in 13.6s
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00058fff...
Compressed 17120 bytes to 11164...
Writing at 0x00001000... (100 %)
Wrote 17120 bytes (11164 compressed) at 0x00001000 in 0.5 seconds (effective 297.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 129...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (129 compressed) at 0x00008000 in 0.0 seconds (effective 573.1 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 811.3 kbit/s)...
Hash of data verified.
Compressed 297584 bytes to 170400...
Writing at 0x00010000... (9 %)
Writing at 0x0001b7c8... (18 %)
Writing at 0x00024791... (27 %)
Writing at 0x00029c80... (36 %)
Writing at 0x0002f0e3... (45 %)
Writing at 0x000341e9... (54 %)
Writing at 0x0003987c... (63 %)
Writing at 0x00041e3a... (72 %)
Writing at 0x0004ba6a... (81 %)
Writing at 0x00050e81... (90 %)
Writing at 0x00056737... (100 %)
Wrote 297584 bytes (170400 compressed) at 0x00010000 in 4.0 seconds (effective 595.4 kbit/s)...
Hash of data verified.
Leaving...
Hard Resetting...
Hard resetting via RTS pin...
Done! Flashing is complete!
Showing logs:
[07:44:20]E (141) esp_core_dump_flash�rcore dump partition found!
[07:44:20]E (141) esp_core_dump_flash: No core dump partition found!
[07:44:20]E (10) SPIFFS: mount failed, -10025
[07:44:25]Listing directory: /
[07:44:25]Writing file: /hello.txt
[07:44:25]- file written
[07:44:25]Appending to file: /hello.txt
[07:44:25]- message appended
[07:44:25]Reading file: /hello.txt
[07:44:25]- read from file:
[07:44:25]Hello World!
[07:44:25]Renaming file /hello.txt to /foo.txt
[07:44:25]- file renamed
[07:44:25]Reading file: /foo.txt
[07:44:25]- read from file:
[07:44:25]Hello World!
[07:44:25]Deleting file: /foo.txt
[07:44:25]- file deleted
[07:44:25]Testing file I/O with /test.txt
from pixelit.
flashing pixelit.bin V2.2.0
Using 'COM7' as serial port.
Connecting......
Detecting chip type... ESP32
Connecting....
Chip Info:
- Chip Family: ESP32
- Chip Model: ESP32-D0WDQ5-V3 (revision 3)
- Number of Cores: 2
- Max CPU Frequency: 240MHz
- Has Bluetooth: YES
- Has Embedded Flash: NO
- Has Factory-Calibrated ADC: YES
- MAC Address: E0:5A:1B:A0:1A:98
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed. - Flash Size: 4MB
- Flash Mode: dio
- Flash Frequency: 40MHz
Erasing flash (this may take a while)...
Chip erase completed successfully in 13.3s
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00119fff...
Compressed 17104 bytes to 11191...
Writing at 0x00001000... (100 %)
Wrote 17104 bytes (11191 compressed) at 0x00001000 in 0.5 seconds (effective 301.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 129...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (129 compressed) at 0x00008000 in 0.0 seconds (effective 601.0 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 821.4 kbit/s)...
Hash of data verified.
Compressed 1088448 bytes to 676531...
Writing at 0x00010000... (2 %)
Writing at 0x0001a3d2... (4 %)
Writing at 0x00026d9e... (7 %)
Writing at 0x000304a3... (9 %)
Writing at 0x0003b9d4... (11 %)
Writing at 0x00044cf4... (14 %)
Writing at 0x0004bbfb... (16 %)
Writing at 0x000526d2... (19 %)
Writing at 0x00057e09... (21 %)
Writing at 0x0005d572... (23 %)
Writing at 0x00064073... (26 %)
Writing at 0x0006b196... (28 %)
Writing at 0x00070a0c... (30 %)
Writing at 0x00076852... (33 %)
Writing at 0x0007c0cc... (35 %)
Writing at 0x00081eb5... (38 %)
Writing at 0x00087398... (40 %)
Writing at 0x0008c6a9... (42 %)
Writing at 0x00091915... (45 %)
Writing at 0x00096c7b... (47 %)
Writing at 0x0009beda... (50 %)
Writing at 0x000a113c... (52 %)
Writing at 0x000a63e8... (54 %)
Writing at 0x000ab6a2... (57 %)
Writing at 0x000b0bd1... (59 %)
Writing at 0x000b6847... (61 %)
Writing at 0x000bbd9b... (64 %)
Writing at 0x000c0fd4... (66 %)
Writing at 0x000c63de... (69 %)
Writing at 0x000cb939... (71 %)
Writing at 0x000d0f78... (73 %)
Writing at 0x000d6732... (76 %)
Writing at 0x000dc4d3... (78 %)
Writing at 0x000e1e63... (80 %)
Writing at 0x000e7942... (83 %)
Writing at 0x000f02de... (85 %)
Writing at 0x000f88c5... (88 %)
Writing at 0x000fd91d... (90 %)
Writing at 0x00107c33... (92 %)
Writing at 0x0010d15b... (95 %)
Writing at 0x0011268a... (97 %)
Writing at 0x00117fcb... (100 %)
Wrote 1088448 bytes (676531 compressed) at 0x00010000 in 15.7 seconds (effective 555.8 kbit/s)...
Hash of data verified.
Leaving...
Hard Resetting...
Hard resetting via RTS pin...
Done! Flashing is complete!
Showing logs:
[07:47:37]E (445) esp_core_dump_flash: No core dump partition found!
[07:47:37]E (445) esp_core_dump_flash: No core dump partition found!
[07:47:37]Mounting file system...
[07:47:37]E (22) SPIFFS: mount failed, -10025
[07:47:37][ 31][E][SPIFFS.cpp:89] begin(): Mounting SPIFFS failed! Error: -1
[07:47:37]Failed to mount FS
[07:47:37][BH1750] ERROR: received NACK on transmit of address
[07:47:37][1970-00-00T00:00:00] Setup: BMP280 Trying
[07:47:37][1970-00-00T00:00:00] Setup: No BMP280, BME280 or BME 680 sensor found
[07:47:38][1970-00-00T00:00:00] Setup: No DHT Sensor found
[07:47:38]Framebuffer_GFX::begin Width: 32 Height: 8 Num Pixels: 256
[07:47:38][1970-00-00T00:00:00] Setup: Software Serial started
[07:47:40]*wm:AutoConnect
[07:47:41]*wm:No wifi saved, skipping
[07:47:41]*wm:AutoConnect: FAILED
[07:47:41]*wm:StartAP with SSID: PIXELIT
[07:47:41]*wm:AP IP address: 192.168.4.1
[07:47:41][1970-01-01T00:00:03] Hotspot: Waiting for WiFi configuration
[07:47:42]*wm:Starting Web Portal
from pixelit.
I have now tried it with various ESP32 boards.
Has always worked. I suspect that this is a specific problem with this board.
The way I read it, you have now taken a different ESP.
Does that work for you then? If so, we can close the Issus.
LG
from pixelit.
I tried it with the same Version of the Board; don't work :-/
I don't know why.
If you like you can close this issue. I have to find the reason for this issue by my self.
Thanks
from pixelit.
Thx
from pixelit.
Related Issues (20)
- Color picker doesn't work HOT 1
- ESP32 d1_mini reconnection every few minutes HOT 1
- ESP32 d1_mini loose all settings after reboot HOT 1
- bme680 Reading Backwards? HOT 3
- Pixel HOT 1
- MQTT setScreen only works if the master topic ends with "/" HOT 1
- Is that correct? "Pin-Zuordnung: Unbekannter Pin" HOT 4
- Question/Discussion: Reduce MQTT "noise" HOT 5
- Black screen after update new firmware. 2.4.3 HOT 24
- Feature request: config backup/restore HOT 3
- MQTT message is to long HOT 15
- Unable to turn off LEDs HOT 18
- Feature request: Ulanzi TC001 buzzer support HOT 1
- Ulanzi TC001: Add option to disable battery screen on boot HOT 8
- Feature request: 64x32 LED matrix support HOT 1
- [FEATURE REQUEST] Cyrillic font (ready-made font and code) HOT 10
- Node-red Warnung HOT 3
- Android Support ? HOT 1
- Display switches automatically on HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pixelit.