Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Στο αρχειο /etc/adjtime, θελω να αντικατασταθει το "UTC" με "LOCAL" χρησιμοποιωντας το sed. Πως θα το κανω?

sed -i s'/UTC/LOCAL/g' /etc/adjtime

  • 2 μήνες μετά...
Δημοσ.

Εχω ενα rpi 3 και θελω να τρεξω απο αυτο το project* το lab_app.py. Οταν το τρεχω βγαζει αυτο το σφαλμα

 

$ python lab_app.py 
lab_app.py:148: SyntaxWarning: import * only allowed at module level
  @app.route("/to_plotly", methods=['GET'])  #This method will send the data to ploty.
 * Running on http://0.0.0.0:8080/
 * Restarting with reloader
lab_app.py:148: SyntaxWarning: import * only allowed at module level
  @app.route("/to_plotly", methods=['GET'])  #This method will send the data to ploty.
* https://github.com/cwalk/Pi-Temp/tree/master/lab_app

 

Τι μπορω να κανω? Επειδη λειπανε καποιες βιβλιοθηκες της python, εβαλα με το χερι τα python-plotly, -arrow, -flask και pysqlite αλλα και παλι τιποτα.

Δημοσ.

@jim_p

 

Το συγκεκριμένο project να ξέρεις ότι δεν είναι καλογραμμένο. Ό κώδικας έχει διάφορα θεματάκια, αλλά τουλάχιστον το κομμάτι της web εφαρμογής δουλεύει.

 

Σχετικά με αυτό που ρωτάς, τo (Syntax)Warning που παίρνεις δεν είναι τίποτα απλά αυτός που έγραψε τον κώδικα κάνει ταλιμπανιές. Anyway μπορείς να το αγνοήσεις, τα υπόλοιπα που εμφανίζει στην οθόνη είναι ο web server του Flask. Αν αποφασίσεις να χρησιμοποιήσεις το project και το ανοίξεις στο ιντερνετ τότε πιθανότατα θες να χρησιμοποιήσεις κάποιον web server όπως είναι ο uwsgi ή o nginx. Ο web server του Flask είναι μόνο για development.

 

Τέλος πάντων, αν επισκεφθείς τη διεύθυνση που σου λέει θα δεις ότι θα εμφανιστεί μια ιστοσελίδα

http://0.0.0.0:8080/

Άλλα endpoints που μπορείς να επισκεφθείς είναι:

http://0.0.0.0:8080/lab_temp
http://0.0.0.0:8080/lab_env_db?from=2015-03-04&to=2015-03-05    # Αλλάζεις της ημερομηνίες κατά το δοκούν
http://0.0.0.0:8080/to_plotly

Θα χρειαστεί επίσης (μάλλον) να αλλάξεις το path της βάσης δεδομένων σε κάποιο path στο οποίο να έχεις write access. Επειδή δεν φτιάχνει τους πίνακες της βάσης, θα χρειαστεί να την αντιγράψεις. Εγώ απλά χρησιμοποιησα την βάση δεδομένων που έχει αυτός:

-conn        = sqlite3.connect('/var/www/lab_app/lab_app.db')
+conn        = sqlite3.connect('./lab_app.db')

Αν το rpi έχει κανονική python installation, τo pysqlite λογικά δεν χρειάζεται να το κάνεις install. θα χρειαστείς όμως να κάνεις install τα:

 

Flask

arrow

Adafruit_Python_DHT

plotly

 

Ο ενδεδειγμένος τρόπος για να το κάνεις αυτό είναι μέσω του pip. Το plotly νομίζω θέλει και εγγραφή στο site τους.

 

Αν έχεις απορίες, ρωτάς.

 

edit

Χρησιμοποιώντας τα στοιχεία από τη βάση δεδομένων που έχει στο git:

http://0.0.0.0:8080/lab_env_db?from=2016-04-03+00%3A00&to=2016-04-13+16%3A47

h_1480863207_5922379_686429c338.png

 

  • 4 εβδομάδες αργότερα...
Δημοσ.

url="https://www.archlinux.org/packages/core/x86_64/glibc/download/"

wget -O test "$url" 2>&1 | while read ln; do 
  if [[ "$ln" == *%* ]]; then 
    echo "$ln" | grep -o "[0-9]*%.*"
  fi
done

 

Γινεται και πιο απλα χωρις pipe, με κανα σουμεριανο/αιγυπτιακο string substitution (ή οπως λεγεται) στο echo?

 

Και αν δεν γινεται, τουλαχιστον performance wise θα ειναι καλυτερα με sed αντι grep?

 

Του λεω να δειξει το ποσοστο (αριθμος/οι%) και οτιδηποτε μετα απο αυτο, αν το ln περιεχει %

Δημοσ.

wget -O test -q --show-progress "$url"
Κάτι τέτοιο σου κάνει ? Δεν θα εμφανιστεί κανένα μήνυμα (λόγω της -q) αλλά θα εμφανιστεί η πρόοδος. Αν δεν σου αρέσει που η πρόοδος κάνει overwrite πάντα στην ίδια γραμμή, μπορείς να προσθέσεις την --progress=dot ώστε να πάρεις την παλιά κλασική πρόοδο που αλλάζει γραμμή κάθε τόσα kb.
  • 3 εβδομάδες αργότερα...
Δημοσ.

Έχουμε ένα αρχείο της μορφής VARIABLE=VALUE. Μπορούμε να κάνουμε export τις μεταβλητές αυτές στο bash session; Το source φυσικά δεν δουλεύει γιατί δεν υπάρχει το "export"

MONGO_HOST=127.0.0.1
MONGO_PORT=27017
MONGO_HTTP_PORT=28017
Δημοσ.

eval $(sed -e "s/^/export /" file_with_vars)
Κάτι τέτοιο σου κάνει ? Βάζει μπροστά στην κάθε γραμμή το "export " και το πετάει στην eval ώστε να φορτωθεί σαν να το έκανες source.

 

. ./file_with_vars
export $(cut -d = -f1 file_with_vars)
Μια εναλλακτική θα ήταν και το παραπάνω. Όταν γράφεις το κλασικό "export τάδε=δείνα" είναι ουσιαστικά μια συντομογραφία που δίνει τιμή στην μεταβλητή και μετά "μαρκάρει" την μεταβλητή σαν exportable. Το ίδιο κάνουμε και με το παραπάνω. Κάνεις source το αρχείο και μετά κάνεις export ό,τι υπάρχει πριν το = σε κάθε γραμμή δηλαδή όλα τα ονόματα.

 

Πολύ πιθανώς να γίνεται πολύ πιο εύκολα από τα hacks που γράφω αλλά έχω χρόνια να δουλέψω bash.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...