Δημιουργία ιστολογίου Jekyll στο Ubuntu 16.04
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Jekyll είναι μια εξαιρετική εναλλακτική λύση στο WordPress για blogging ή κοινή χρήση περιεχομένου. Δεν απαιτεί βάσεις δεδομένων και είναι πολύ εύκολο
Το HTTP Live Streaming (HLS) είναι ένα πολύ ισχυρό πρωτόκολλο βίντεο ροής που εφαρμόζεται από την Apple Inc. Το HLS χρησιμοποιεί συναλλαγές HTTP που διασχίζουν τείχη προστασίας, διακομιστή μεσολάβησης και μπορούν να διανεμηθούν μέσω CDN με ευκολία. Επομένως, αυτή η τεχνολογία είναι σε θέση να προσεγγίσει ένα πολύ μεγαλύτερο κοινό προβολής από το RTP ή άλλα πρωτόκολλα που βασίζονται σε UDP. Μεγάλο μέρος της ζωντανής ροής βίντεο στο διαδίκτυο σήμερα φιλοξενείται από ακριβά συστήματα που χρησιμοποιούν HLS, αλλά είναι γενικά ακριβά και απαιτούν πολλούς πόρους διακομιστή. Αυτό το σεμινάριο θα σας δείξει πώς να ρυθμίσετε ένα πολύ προσιτό Ubuntu 14.04 VULTR VPS για να πραγματοποιείτε εκδηλώσεις ζωντανής ροής HLS χρησιμοποιώντας μόνο λογισμικό ανοιχτού κώδικα.
Το πρώτο βήμα είναι να διαβάσετε και να ρυθμίσετε τον διακομιστή σας σύμφωνα με το Vultr Doc " Setup Nginx-RTMP στο Ubuntu 14.04 ". Οι οδηγίες σε αυτό το έγγραφο ήταν οι πιο περιεκτικές για το στάδιο της εγκατάστασης, τη στιγμή που γραφόταν το κείμενο. Θα ήθελα να αναφέρω ότι μπορεί να θέλετε να αντικαταστήσετε το "nginx-1.7.5" με το "nginx-1.9.4" ή οποιαδήποτε άλλη είναι διαθέσιμη η πιο πρόσφατη έκδοση του Nginx. Η άλλη πρόταση είναι να μεταγλωττίσετε το Nginx με τη μονάδα κατάστασης στελέχους HTTP, προκειμένου να δώσετε στον εαυτό σας τη δυνατότητα να παρακολουθεί πόσους ζωντανούς θεατές HLS έχετε αργότερα.
Αντί να γίνει μεταγλώττιση με:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Χρησιμοποιήστε αυτήν τη συμβολοσειρά στη διαδικασία που περιγράφεται στο προαπαιτούμενο έγγραφο:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Το παράδειγμα σε αυτό το σεμινάριο θα δημιουργήσει τόσο "ζωντανές" και "κινητές" (βελτιστοποιημένες) ροές και θα χρησιμοποιήσει το ffmpeg (εγκατεστημένο στο προηγούμενο σεμινάριο) για τη δημιουργία της προσαρμοσμένης σε ρυθμό μετάδοσης bit, βελτιστοποιημένης για κινητά ροής HLS. Το παράδειγμα θα δείξει επίσης πώς μπορείτε να κάνετε τον διακομιστή να καταγράφει αυτόματα τις ζωντανές ροές σας και να σας επιτρέψει να αναπαράγετε τις εγγραφές ως υπηρεσία επανάληψης βίντεο κατ' απαίτηση (VOD).
Αρχικά, δημιουργήστε τις δομές φακέλων που είναι απαραίτητες για τη διατήρηση των ζωντανών και κινητών εκδηλώσεων HLS και θραυσμάτων βίντεο:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Είναι πιθανώς καλή ιδέα να ενεργοποιήσετε το τείχος προστασίας σας εάν δεν το έχετε κάνει ήδη. Εάν ναι, πρέπει να επιτρέψετε την κυκλοφορία στις θύρες που χρησιμοποιούνται από το Nginx και το HLS. Εάν θέλετε να τρέξετε χωρίς το τείχος προστασίας προς το παρόν, αγνοήστε την παρακάτω ενότητα ufw.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
Η ροή HLS απαιτεί μια σημαντικά διαφορετική διαμόρφωση Nginx από τη διαμόρφωση RTMP στο πρώτο άρθρο. Επεξεργαστείτε το nginx.conf
αρχείο σας για να χρησιμοποιήσετε τα ακόλουθα, αντικαθιστώντας τα στοιχεία "my-ip" και "my-stream-key" με τα στοιχεία σας. Μπορείτε να χρησιμοποιήσετε οτιδήποτε θέλετε για το "my-stream-key" είναι απλώς μια λέξη που είναι μοναδική και χρήσιμη για εσάς. Ίσως θελήσετε πρώτα να δημιουργήσετε αντίγραφα ασφαλείας του αρχικού αρχείου διαμόρφωσης και, στη συνέχεια, να επικολλήσετε τις παρεχόμενες πληροφορίες διαμόρφωσης στο πρόγραμμα επεξεργασίας, αντικαθιστώντας όλα όσα υπήρχαν εκεί:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Νέο nginx.conf:
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
allow play all;
#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
application live {
allow play all;
live on;
record all;
record_path /video_recordings;
record_unique on;
hls on;
hls_nested on;
hls_path /HLS/live;
hls_fragment 10s;
#creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
exec ffmpeg -i rtmp://192.168.254.178:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.254.178:1935/mobile/$;
}
#creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /HLS/mobile;
hls_fragment 10s;
}
#allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv"
application vod {
play /video_recordings;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name 192.168.254.178;
#creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
location /live {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/live;
add_header Cache-Control no-cache;
}
#creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8"
location /mobile {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/mobile;
add_header Cache-Control no-cache;
}
#allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
location /stats {
stub_status;
}
#allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
location / {
root html;
index index.html index.htm;
}
}
}
Πατήστε Ctrl + X για έξοδο. Πείτε "ναι" για να αποθηκεύσετε τις αλλαγές.
Μπορείτε να βρείτε σαφείς οδηγίες και παραδείγματα των δυνατών μεταβλητών σε αυτό το nginx.conf
αρχείο, εάν ρωτήσετε την αγαπημένη σας μηχανή αναζήτησης για "οδηγίες nginx-rtmp". Χρησιμοποιώ το nginx-rtmp με το HLS εδώ και μερικά χρόνια, χωρίς να χρησιμοποιώ τις οδηγίες "να επιτρέπεται δημοσίευση" και "άρνηση δημοσίευσης" και έχω δει μηδενικές περιπτώσεις ατόμων που χρησιμοποιούν/εισβάλλουν στους διακομιστές βίντεο μου. Επομένως, δεν συμπεριέλαβα αυτές τις οδηγίες εδώ. Διαβάστε και προσθέστε αυτές τις οδηγίες εάν θέλετε.
Αφού αλλάξετε το nginx.conf
αρχείο, πρέπει να επανεκκινήσετε το Nginx για να χρησιμοποιήσετε τη νέα διαμόρφωση:
sudo service nginx restart
Παρακολουθήστε προσεκτικά για τυχόν μηνύματα σφάλματος Nginx και αντιμετωπίστε τυχόν σφάλματα που μπορεί να έχουν προκληθεί από προβλήματα ορθογραφίας, ιδιοκτησίας φακέλου ή αδειών. Εάν δεν έχετε μηνύματα σφάλματος, τότε είστε έτοιμοι να δημιουργήσετε τη ροή κωδικοποίησης.
Πρέπει να έχετε έναν κωδικοποιητή βίντεο για να δημιουργήσετε τη ροή. Χρησιμοποιώ OBS (Λογισμικό Open Broadcaster) - το οποίο είναι ανοιχτού κώδικα και λειτουργεί καλά για μένα. Υπάρχουν και άλλες λύσεις από τις οποίες μπορείτε να επιλέξετε, οι οποίες βρίσκονται εκτός του πεδίου αυτού του σεμιναρίου. Δεν θα καλύψω τα πάντα σχετικά με τη διαμόρφωση ενός κωδικοποιητή βίντεο RTMP. Ωστόσο, όλα απαιτούν περίπου τις ίδιες μεταβλητές εισόδου. Οι βασικές ρυθμίσεις που θα χρειαστεί να εισαγάγετε για να χρησιμοποιήσετε την ακριβή μου nginx.conf
διαμόρφωση και να λειτουργήσετε καλά στα περισσότερα προγράμματα αναπαραγωγής/προγράμματα περιήγησης/πλατφόρμες είναι οι εξής:
Συνιστώ να δοκιμάσετε διαφορετικούς κωδικοποιητές και να πειραματιστείτε μαζί τους. Μπορεί να επιθυμείτε μια ευρεία αναλογία εικόνας - ή το υλικό της κάμερας (ή άλλων εκπομπών) μπορεί να το απαιτεί. Εάν ναι, φροντίστε να αλλάξετε αυτές τις πληροφορίες στον κωδικοποιητή σας και επίσης την αναλογία διαστάσεων που αναφέρεται στην ενότητα exec-ffmpeg του nginx.conf
αρχείου που παρείχα. Διαφορετικά, θα έχετε κάποιες ανόητες ροές βίντεο.
Μόλις ρυθμιστεί ο κωδικοποιητής σας, μπορείτε να τα δοκιμάσετε όλα. Ξεκινήστε τον κωδικοποιητή με την κάμερα web ή κάποιο είδος δοκιμαστικής τροφοδοσίας που τρέχει σε αυτόν. Μπορείτε να δείτε τη μετάδοσή σας σε αυτό το σημείο με τη συσκευή αναπαραγωγής VLC χρησιμοποιώντας διευθύνσεις URL όπως:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Αυτά είναι για τις κύριες και τις ροές βίντεο για κινητά, αντίστοιχα. Αντικαταστήστε το IP και το κλειδί ροής ανάλογα.
Αφού μεταδώσετε με επιτυχία την πρώτη σας ροή, ελέγξτε (μέσω ssh ή ftp) ότι η ζωντανή μετάδοσή σας καταγράφηκε στο /video_recordings
φάκελο του Vultr VPS. Μπορείτε επίσης να δοκιμάσετε να παίξετε αυτό το εγγεγραμμένο αρχείο σε VLC με μια διεύθυνση URL όπως:
rtmp://my-ip/vod/filename.flv
Τα στατιστικά Nginx είναι επίσης διαθέσιμα (με Nginx stub_status). Για να δείτε τα στατιστικά των επισκεπτών/θεατών, αποκτήστε πρόσβαση:
http://my-ip/stats
Για να δείτε το βίντεό σας σε μια ιστοσελίδα, θα χρειαστείτε ένα πρόγραμμα αναπαραγωγής με δυνατότητα ενσωμάτωσης. Υπάρχουν πολλές διαθέσιμες ενσωματωμένες συσκευές αναπαραγωγής που θα αναπαράγουν βίντεο HLS. Χρησιμοποιώ το JW Player εδώ και μερικά χρόνια, αλλά η δωρεάν έκδοση δεν θα παίζει HLS. Το Flowplayer και το Bitdash της Bitmovin (μεταξύ άλλων λύσεων) είναι αρκετά γενναιόδωρα ώστε να προσφέρουν μια μη εμπορική έκδοση των παικτών τους δωρεάν, η οποία θα καταστήσει τη ροή HLS σας ενσωματωμένη σε μια ιστοσελίδα. Για αυτό το άρθρο, τα δοκίμασα και τα δύο και βρήκα ότι και τα δύο λειτουργούν αρκετά καλά με τον διακομιστή βίντεο που βασίζεται σε Vultr/Nginx. Θα δείξω εν συντομία πώς έφτιαξα το Flowplayer με το μηχάνημα δοκιμαστικής κλίνης μου.
Εάν πρόκειται να χρησιμοποιήσετε τη ζωντανή ροή HLS με οποιονδήποτε κανονικό, διαρκή ή εμπορικό τρόπο, θα σας συνιστούσα να αγοράσετε μια άδεια από το Flowplayer ή όποιον παίκτη αποφασίσετε να χρησιμοποιήσετε. Θα λάβετε ένα πρόγραμμα αναπαραγωγής που έχει λιγότερους περιορισμούς, περισσότερες δυνατότητες και μπορεί να χαρακτηριστεί για τον οργανισμό σας. Θα λάβετε επίσης υποστήριξη - κάτι που μπορεί να είναι πολύ σημαντικό. Εκτός από το Vultr VPS, αυτό είναι πραγματικά το μόνο κόστος που σχετίζεται με το έργο.
Προτού κάνετε οτιδήποτε άλλο, είναι σημαντικό να φροντίσετε τους λεγόμενους περιορισμούς "διατομής", οι οποίοι διαφορετικά θα απέκλειαν τη δυνατότητά σας να μεταδίδετε ροή σε μια ιστοσελίδα/ιστότοπο. Δημιουργήστε ένα crossdomain.xml
αρχείο στο nginx/html
φάκελό σας και βάλτε οδηγίες σε αυτό για να επιτρέψετε τη ροή δεδομένων μεταξύ των τομέων:
sudo nano /usr/local/nginx/html/crossdomain.xml
Πρώτα αντιγράψτε (από αυτήν τη σελίδα) και, στη συνέχεια, επικολλήστε (κάντε δεξί κλικ) στο πεδίο επεξεργασίας nano τα ακόλουθα δεδομένα XML:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
Πατήστε Ctrl + O για να γράψετε έξω και μετά Ctrl + X για να αποθηκεύσετε το αρχείο στο δίσκο και να βγείτε.
Έπιασα την HTML5 (έκδοση 6.0.3) του Flowplayer που μου έδωσε έναν αριθμό αρχείων και έναν φάκελο όταν αποσυμπιέστηκε. Ανέβασα όλα τα αρχεία και τον φάκελο σε έναν υποφάκελο του ριζικού φακέλου Nginx/HTML τον οποίο ονόμασα "flowplayer". Η ακριβής διαδρομή ήταν /usr/local/nginx/html/flowplayer
.
Για να δοκιμάσετε το βίντεό μας όταν είναι ενσωματωμένο σε μια ιστοσελίδα, δημιουργήστε μερικά αρχεία HTML στη ρίζα του φακέλου Nginx/HTML χρησιμοποιώντας το nano και συμπληρώστε τα με τα ακόλουθα περιεχόμενα.
Αρχείο:
sudo nano /usr/local/nginx/html/hls.html
Κώδικας HTML:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
</head>
<body>
640x480 664kbps (live) Desktop Browsers<br>
<div style="width:640px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
<br><br>
480x360 464kbps (mobile) Mobile Browsers <br>
<div style="width:480px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
</body>
Αρχείο:
sudo nano /usr/local/nginx/html/hls_progressive.html
Κώδικας HTML:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
<style> .flowplayer { width: 640px; } </style>
</head>
<body>
<div class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
<source type="application/x-mpegurl" src="">
</video>
</div>
<br>
</body>
Φροντίστε να αντικαταστήσετε τα "my-ip" και "my-stream-key" με τα δεδομένα σας.
Πρέπει να αντικαταστήσετε τη διαδρομή flowplayer/skin/functional.css
για το σύμβολο "#" στο φύλλο στυλ href="#"
. Το λογισμικό εκμάθησης αφαιρεί τη διαδρομή. Πρέπει να συμπληρώσετε μια διεύθυνση URL στο src=""
τμήμα - αφαιρείται από το λογισμικό εκμάθησης, χρήση http://my-ip/live/my-stream-key/index.m3u8
και http://my-ip/mobile/my-stream-key/index.m3u8
, αντίστοιχα. Πρέπει επίσης να προσθέσετε src
ετικέτες σεναρίου στο κεφάλι και για τα δύο jquery-1.11.2.min.js
και για το flowplayer.min.js
. Οι ετικέτες αφαιρούνται από το λογισμικό εκμάθησης. Μπορείτε να βρείτε πώς να δημιουργήσετε αυτές τις ετικέτες κοιτάζοντας το example html
αρχείο που περιλαμβάνεται στο κιτ Flowplayer.
Ξεκινήστε τον κωδικοποιητή με την κάμερα web ή κάποιο είδος δοκιμαστικής τροφοδοσίας που τρέχει σε αυτόν. Μπορείτε να δείτε τη μετάδοσή σας σε ένα πρόγραμμα περιήγησης χρησιμοποιώντας τις ακόλουθες διευθύνσεις URL:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Η πρώτη σελίδα δείχνει απλώς κάθε ροή σας - την κύρια και την πλατφόρμα για κινητά. Θα μπορείτε να τα ξεκινήσετε και τα δύο και να τα δείτε. Θα παρατηρήσετε ότι η ροή της πλατφόρμας για κινητά είναι μικρότερη σε μέγεθος. Αυτά τα βήματα είναι απλώς για να βεβαιωθείτε ότι όλα λειτουργούν.
Η δεύτερη σελίδα δείχνει μια ενιαία ροή. Αλλά έχει στηθεί με έναν τρόπο που ονομάζεται "προοδευτική ροή". Αυτό σημαίνει ότι όταν ένας θεατής παίζει το βίντεο, τόσο ο διακομιστής όσο και το πρόγραμμα αναπαραγωγής προσπαθούν να δώσουν στον θεατή τη ροή υψηλής ταχύτητας bit και υψηλής ποιότητας, εάν η σύνδεση των θεατών μπορεί να τη διατηρήσει. Εάν η σύνδεσή τους είναι κακή και δεν μπορεί να διατηρήσει τη σύνδεση, μεταβαίνει προς τα κάτω για να εμφανίσει τη ροή χαμηλότερου bitrate (κινητό) που είναι 200 kbps χαμηλότερο σε εύρος ζώνης. Εάν το επιθυμείτε, θα μπορούσατε να δημιουργήσετε πιο διαβαθμισμένες, προοδευτικές ροές με το ffmpeg και να τις διαμορφώσετε χρησιμοποιώντας το παράδειγμά μου.
Δοκίμασα αυτήν τη διαμόρφωση σε έναν πυρήνα, 1 GB Vultr VPS και διαπίστωσα ότι με μία μόνο ζωντανή ροή, συν τη ροή κινητής τηλεφωνίας με trans-rated που δημιουργεί με το ffmpeg, η χρήση της CPU ήταν μικρότερη από 35% και είχε καταναλώσει μόνο 100 MB το 1 GB της ram μου. Τώρα αυτό είναι μια πολύ αποτελεσματική ρύθμιση.
Εάν σκοπεύετε να κάνετε ροή βίντεο που είναι πολύ μεγαλύτερο σε διαστάσεις pixel από το SD, μπορεί να διαπιστώσετε ότι πρέπει να χρησιμοποιήσετε ένα πιο ισχυρό VPS. Ήμουν περίεργος για αυτό και έτρεξα την κύρια ροή μου έως και 1280x960 pixel και 2Mbps - επιβαρύνοντας επιπλέον τα πράγματα. Αλλά το VPS εξακολουθούσε να χρησιμοποιεί μόνο 50% CPU και η χρήση μνήμης παρέμεινε στα 100 MB. Πρόσθεσα μια ντουζίνα θεατές/προγράμματα περιήγησης και δεν είχε σχεδόν καμία διαφορά στο φόρτο στο VPS—μόνο το εύρος ζώνης που χρησιμοποιήθηκε αυξήθηκε. Είμαι βέβαιος ότι η δημιουργία πρόσθετων ροών μεταφρασμένης αξιολόγησης με το ffmpeg θα συνεχίσει να επιβαρύνει επιπλέον το σύστημα.
Έχω χρησιμοποιήσει αυτόν τον τύπο διακομιστή σε περιβάλλοντα παραγωγής με μεταξύ 50 και 100 ταυτόχρονους χρήστες και διαπίστωσα ότι η χρήση των πόρων αυξήθηκε πολύ λίγο με την αύξηση των συνδέσεων θεατών. Πειραματιστείτε με αυτό. Αλλά νομίζω ότι οι περισσότεροι χρήστες θα ήταν ευχαριστημένοι χρησιμοποιώντας ένα μονοπύρηνο VPS 1 GB. Απολαύστε τον νέο σας διακομιστή ροής HLS!
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Jekyll είναι μια εξαιρετική εναλλακτική λύση στο WordPress για blogging ή κοινή χρήση περιεχομένου. Δεν απαιτεί βάσεις δεδομένων και είναι πολύ εύκολο
Το Squid είναι ένα δημοφιλές, δωρεάν πρόγραμμα Linux που σας επιτρέπει να δημιουργήσετε έναν διακομιστή μεσολάβησης web προώθησης. Σε αυτόν τον οδηγό, θα δείτε πώς να εγκαταστήσετε το Squid στο CentOS για να σας μετατρέψει
Το Memcached είναι ένα σύστημα βάσης δεδομένων υψηλής απόδοσης που μπορεί να βοηθήσει στην υπερφόρτιση της εφαρμογής σας. Είναι πολύ γρήγορο καθώς δεν γράφει στο δίσκο, αλλά αντίθετα t
Εισαγωγή Το InfluxDB είναι μια βάση δεδομένων ανοιχτού κώδικα, κατανεμημένης χρονολογικής σειράς, χωρίς εξωτερικές εξαρτήσεις. Ναι, διαβάσατε την παρ. χωρίς εξωτερικές εξαρτήσεις
Το Fail2ban είναι ένα πρόγραμμα που παρακολουθεί τη δραστηριότητα σύνδεσης στον διακομιστή σας και αποκλείει τις προσβλητικές διευθύνσεις IP. Από προεπιλογή, θα μπλοκάρει τις διευθύνσεις IP για 10 λεπτά
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Red5 είναι ένας διακομιστής πολυμέσων ανοιχτού κώδικα που υλοποιείται σε Java που σας επιτρέπει να εκτελείτε εφαρμογές Flash πολλών χρηστών, όπως η ζωντανή ροή
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Vanilla forum είναι μια εφαρμογή φόρουμ ανοιχτού κώδικα γραμμένη σε PHP. Είναι πλήρως προσαρμόσιμο, εύκολο στη χρήση και υποστηρίζει εξωτερικά
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εισαγωγή Το Kanboard είναι ένα δωρεάν και ανοιχτού κώδικα πρόγραμμα λογισμικού διαχείρισης έργων που έχει σχεδιαστεί για να διευκολύνει και να οπτικοποιήσει
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εισαγωγή Το Kanboard είναι ένα δωρεάν και ανοιχτού κώδικα πρόγραμμα λογισμικού διαχείρισης έργων που έχει σχεδιαστεί για να διευκολύνει και να οπτικοποιήσει
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Tiny Tiny RSS Reader είναι ένα δωρεάν και ανοιχτού κώδικα πρόγραμμα ανάγνωσης και συγκέντρωσης ειδήσεων (RSS/Atom) που φιλοξενείται από τον εαυτό του και έχει σχεδιαστεί για
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Gitea είναι ένα εναλλακτικό ανοιχτού κώδικα, αυτο-φιλοξενούμενο σύστημα ελέγχου έκδοσης που υποστηρίζεται από το Git. Το Gitea είναι γραμμένο στα Golang και είναι
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Wiki.js είναι μια δωρεάν και ανοιχτού κώδικα, σύγχρονη εφαρμογή wiki που βασίζεται σε Node.js, MongoDB, Git και Markdown. Ο πηγαίος κώδικας του Wiki.js είναι δημόσιος
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Gitea είναι ένα εναλλακτικό ανοιχτού κώδικα, αυτο-φιλοξενούμενο σύστημα ελέγχου έκδοσης που τροφοδοτείται από το git. Το Gitea είναι γραμμένο στα Golang και είναι
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Thelia είναι ένα εργαλείο ανοιχτού κώδικα για τη δημιουργία ιστοσελίδων ηλεκτρονικού επιχειρείν και τη διαχείριση διαδικτυακού περιεχομένου γραμμένου σε PHP. Πηγαίος κώδικας Thelia i
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Microweber είναι ένα ανοικτού κώδικα μεταφοράς και απόθεσης CMS και ηλεκτρονικό κατάστημα. Ο πηγαίος κώδικας Microweber φιλοξενείται στο GitHub. Αυτός ο οδηγός θα σας δείξει
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το MODX Revolution είναι ένα γρήγορο, ευέλικτο, επεκτάσιμο, δωρεάν και ανοιχτού κώδικα, εταιρικό Σύστημα Διαχείρισης Περιεχομένου (CMS) γραμμένο i
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Vanilla forum είναι μια εφαρμογή φόρουμ ανοιχτού κώδικα γραμμένη σε PHP. Είναι πλήρως προσαρμόσιμο, εύκολο στη χρήση και υποστηρίζει εξωτερικά
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Mattermost είναι μια εναλλακτική λύση ανοιχτού κώδικα, που φιλοξενείται από τον εαυτό της στην υπηρεσία ανταλλαγής μηνυμάτων Slack SAAS. Με άλλα λόγια, με το Mattermost, μπορείτε περίπου
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το DotCMS είναι ένα ανοιχτού κώδικα, εταιρικό σύστημα διαχείρισης περιεχομένου γραμμένο σε Java. Περιέχει σχεδόν κάθε χαρακτηριστικό που απαιτείται
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Pagekit 1.0 CMS είναι ένα όμορφο, αρθρωτό, επεκτάσιμο και ελαφρύ, δωρεάν και ανοιχτού κώδικα Σύστημα Διαχείρισης Περιεχομένου (CMS) με
Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.
Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.
Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.
Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.
Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…
Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.
Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.
Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.
Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.
Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα