https://github.com/kataras/iris/issues
https://chat.iris-go.com
https://github.com/kataras/iris/releases
Οι προγραμματιστές δεν αναγκάζονται να αναβαθμίσουν αν δεν το χρειάζονται πραγματικά. Αναβαθμίστε όποτε αισθάνεστε έτοιμοι.
Το Iris εκμεταλλεύεται τη λεγόμενη λειτουργία vendor directory. Παίρνετε πλήρως αναπαραγωγίσιμα builds, καθώς αυτή η μέθοδος προστατεύει από τις upstream μετονομασίες και διαγραφές.
Πώς να αναβαθμίσετε: Ανοίξτε την γραμμή εντολών σας και εκτελέστε αυτήν την εντολή: go get -u github.com/kataras/iris
ή αφήστε το αυτόματο updater να το κάνει αυτό για σας.
Είμαι στην πραγματικά ευχάριστη θέση να σας ανακοινώσω το πρώτο στάδιο της σταθερής κυκλοφορίας της έκδοσης 10.7 του Iris Web Framework.
Η έκδοση 10.7.0 είναι μέρος των επίσημων διανομών μας.
Αυτή η έκδοση δεν περιέχει αλλαγές που μπορούν να αλλάξουν ριζικά τα υπάρχοντα προγράμματα που χτίστηκαν με βάση παλιότερες εκδόσεις του Iris. Οι προγραμματιστές μπορούν να αναβαθμίσουν με απόλυτη ασφάλεια.
Διαβάστε παρακάτω τις αλλαγές και τις βελτιώσεις στον εσωτερικό άβυσσο του Iris. Επιπλέον έχουμε ακόμα περισσότερα παραδείγματα για αρχάριους στην κοινότητα μας.
- Iris + WebAssemply = 💓 προυποθέτει την έκδοση go11.beta και αφεξ
- Server-Sent Events
- Struct Validation on context.ReadJSON
- Extract referrer from "referer" header or URL query parameter
- Hero Sessions
- Yet another dependency injection example with hero
- Writing an API for the Apache Kafka
Επίσης, όλα τα "sessions" παραδείγματα έχουν προσαρμοστεί ώστε να περιέχουν την επιλογή
AllowReclaim: true
- Αλλαγή του "connection list" από απλή λίστα σε
sync.Map
, έγινε με: αυτό και αυτό το commit - Προσθήκη του
iris-ws.js
αρχείου στο διάσημο CDN https://cdnjs.com με αυτό το PR από τον Dibyendu Das
- Προσθήκη κάποιων
json
field tags και νέα functions όπως ταChangeMethod
,SetStatusOffline
καιRestoreStatus
στηRoute
δομή, προσοχή, για να υσχίσουν αυτών των ειδών οι αλλαγές προυποθέτουν από εσας το κάλεσμα τουRouter/Application.RefreshRouter()
. (δεν συνιστάται απόλυτα αλλά είναι χρήσιμο για ειδικά κατασκευασμένες ιστοσελίδες τρίτων που μπορεί να υπάρχουν εκει έξω για διαχείριση ενός Web Server που χτίστηκε με Iris) - Προσθήκη του
GetRoutesReadOnly
function στηνAPIBuilder
δομή
- Προσθήκη των
GetReferrer
,GetContentTypeRequested
καιURLParamInt32Default
functions - Εισαγωγή των
Trace
,Tmpl
καιMainHandlerName
functions στη διεπαφή(interface)RouteReadOnly
- Προσθήκη του
OnConnectionClose
function, χρησημοποείται για να καλεί κάποιο function όταν η "underline tcp connection" διακοπεί, εξαιρετικά χρήσιμο για SSE ή και άλλες παρόμοιες υλοποιήσεις μέσα σε έναν Iris Handler -- και τουOnClose
function το οποίο είναι σαν να καλείτε ταOnConnectionClose(myFunc)
καιdefer myFunc()
στον ίδιο Iris Handler *
Αυτή η έκδοση περιέχει επίσης κάποιες δευτερεύουσες γραμματικής και τυπογραφικού λάθους διορθώσεις και πιό ευανάγνωστα σχόλια για το godoc.
Βρίσκομαι στην ευχάριστη αυτή θέση να σας ανακοινώσω ότι το Iris έχει επιλεγεί ως το κύριο αναπτυξιακό kit(main development kit) για οκτώ μεσαίου ως μεγάλου μεγέθους εταιρείες και μια νέα πολύ ελπιδοφόρα startup με βάση την Ινδία.
Θέλω να σας ευχαριστήσω όλους, καθέ μία και έναν ξεχωριστά, για την αδιάκοπη αυτή υποστήριξη και την εμπιστοσύνη που μου δείξατε όλα αυτά τα χρόνια, ειδικά φέτος, παρά τις φήμες και τις διάφορες δυσφήσεις που είχαμε υποστεί αδίκως από τον ανελέητο ανταγωνισμό.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
This history entry is not translated yet to the Greek language yet, please refer to the english version of the HISTORY entry instead.
Διόρθωση το οποίο αφορά 404 not found errors στα αρχεία που σερβίρονται από τα StaticEmbedded
και StaticWeb
των υποτομεών(subdomains), όπως αναφέρθηκε πριν λίγο από τον @speedwheel μέσω της σελίδας μας στο facebook.
This history entry is not yet translated to Greek. Please read the english version instead.
This history entry is not yet translated to Greek. Please read the english version instead.
This history entry is not yet translated to Greek. Please read the english version instead.
Όλοι οι servers πρέπει να αναβαθμιστούν σε αυτήν την έκδοση, περιέχει διορθώσεις για το tls-sni challenge το οποίο απενεργοποιήθηκε μερικές μέρες πριν από το letsencrypt.org το οποίο προκάλεσε σχεδόν όλα τα golang https-ενεργποιημένα servers να να μην είναι σε θέση να λειτουργήσουν, έτσι υποστήριξη για το http-01 challenge προστέθηκε σαν αναπλήρωση. Πλέον ο διακομιστής δοκιμάζει όλες τις διαθέσιμες προκλήσεις(challenges) letsencrypt.
Διαβάστε περισσότερα:
- https://letsencrypt.status.io/pages/incident/55957a99e800baa4470002da/5a55777ed9a9c1024c00b241
- https://github.com/golang/crypto/commit/13931e22f9e72ea58bb73048bc752b48c6d4d4ac
- διόρθωση του cache handler που δεν δούλευε όπως έπρεπε όταν γινόταν εγγραφή σε πάνω από ένα handler, παλιότερα ήταν ένα cache handler προς ένα route handler, τώρα το ίδιο handler μπορεί να καταχωρηθεί σε όσα route handlers θέλετε kataras#852, όπως είχε αναφερθεί στο kataras#850
- συγχώνευση PR kataras#862
- απαγόρευση της ταυτόχρονης προσπέλασης του
ExecuteWriter -> Load
όταν τοview#Engine##Reload
είναι true, όπως είχε ζητηθεί στο kataras#872 - αναβάθμιση του ενσωματωμένου πακέτου
golang/crypto
για να εφαρμοστεί η επιδιόρθωση για το tls-sni challenge disabled https://github.com/golang/crypto/commit/13931e22f9e72ea58bb73048bc752b48c6d4d4ac (σχετικό με το iris.AutoTLS)
- Aναβαθμίσεις για την Κινέζικη μετάφραση README_ZH.md (νέο) και HISTORY_ZH.md από @Zeno-Code μέσω του kataras#858
- Το Ρώσικο README_RU.md μεταφράστηκε από την @merrydii μέσω του kataras#857
- Τα Ελληνικά README_GR.md και HISTORY_GR.md μεταφράστηκαν μέσω των https://github.com/kataras/iris/commit/8c4e17c2a5433c36c148a51a945c4dc35fbe502a#diff-74b06c740d860f847e7b577ad58ddde0 και https://github.com/kataras/iris/commit/bb5a81c540b34eaf5c6c8e993f644a0e66a78fb8
- A Todo MVC Application using Iris and Vue.js
- A Hasura starter project with a ready to deploy Golang hello-world web app with IRIS
Πρέπει να ευχαριστήσουμε την Κυρία Diana για το νέο μας λογότυπο!
Μπορείτε να επικοινωνήσετε μαζί της για οποιεσδήποτε σχετικές με το σχεδιασμό εργασίες ή να της στείλειτε ένα άμεσο μήνυμα μέσω instagram.
Σε αυτή την έκδοση έχουμε πολλές εσωτερικές βελτιώσεις αλλά μόνο δύο μεγάλες αλλαγές και ένα μεγάλο χαρακτηριστικό, που ονομάζεται hero.
Η νέα έκδοση προσθέτει 75 καινούρια commits, το PR βρίσκεται εδώ. Παρακαλώ διαβάστε τις εσωτερικές αλλαγές αν σχεδιάζετε ένα web framework που βασίζεται στο Iris. Γιατί η έκδοση 9 παραλείφθηκε; Έτσι.
Το νέο πακέτο hero περιέχει χαρακτηριστικά για σύνδεση(binding) οποιουδήποτε αντικειμένου ή function το οποίο τα handlers
μπορεί να χρησημοποιούν, αυτά λεγόνται εξαρτήσεις(dependencies). Τα Hero funcs μπορούν επίσης να επιστρέψουν οποιαδήποτε τιμή, οποιουδήποτε τύπου, αυτές οι τιμές αποστέλλονται στον πελάτη(client).
Μπορεί να είχατε ξαναδει "εξαρτήσεις" και "δέσιμο" πριν αλλά ποτέ με υποστήριξη από τον επεξεργαστή κώδικα (code editor), με το Iris πέρνεις πραγματικά ασφαλή "δεσίματα"(bindings) χάρη στο νέο
hero
πακέτο. Αυτή η όλη εκτέλεση(implementation) είναι επίσης η ποιο γρήγορη που έχει επιτευχθεί εως τώρα, η επίδοση είναι πολύ κοντά στα απλά "handlers" και αυτό γιατί το Iris υπολογίζει τα πάντα πριν καν ο server τρέξει!
Παρακάτω θα δείτε μερικά στιγμιότυπα που ετοιμάσαμε για εσάς, ώστε να γίνουν πιο κατανοητά τα παραπάνω:
Είναι πραγματικά πολύ εύκολο να καταλάβεις πως δουλεύουν τα hero funcs
και όταν αρχίσεις να τα χρησιμοποιείς δεν γυρίζεις ποτέ πίσω.
Παραδείγματα:
Πρέπει να καταλάβεις πως δουλεύει το hero
πακετό ώστε να να δουλέψεις με το mvc
, γιατί το mvc
πακέτο βασίζετε στο hero
για τις μεθόδους του controller σου, οι ίδιοι κανόνες εφαρμόζονται και εκεί.
Παραδείγματα:
Αν χρησημοποιούσατε το MVC πριν, διαβάστε προσεχτικά: Το MVC ΠΕΡΙΕΧΕΙ ΟΡΙΣΜΕΝΕΣ ΑΛΛΑΓΕΣ, ΜΠΟΡΕΙΤΕ ΝΑ ΚΑΝΕΤΕ ΠΕΡΙΣΣΟΤΕΡΑ ΑΠΟ'ΤΙ ΠΡΙΝ
ΠΑΡΑΚΑΛΩ ΔΙΑΒΑΣΤΕ ΤΑ ΠΑΡΑΔΕΙΓΜΑΤΑ ΠΡΟΣΕΧΤΙΚΑ, ΓΙΑ ΕΣΑΣ ΦΤΙΑΧΤΗΚΑΝ
Τα παλιά παραδείγματα είναι επίσης εδώ ώστε να μπορείτε να τα συγκρίνετε με τα καινούρια.
Αφαίρεση της παλιάς στατικής μεταβλητής context.DefaultMaxMemory
και αντικατάσταση με ρύθμιση στο configuration WithPostMaxMemory
.
// WithPostMaxMemory sets the maximum post data size
// that a client can send to the server, this differs
// from the overral request body size which can be modified
// by the `context#SetMaxRequestBodySize` or `iris#LimitRequestBodySize`.
//
// Defaults to 32MB or 32 << 20 if you prefer.
func WithPostMaxMemory(limit int64) Configurator
Αν χρησημοποιούσατε την παλιά στατική μεταβλητή θα χρειαστεί να κάνετε μια αλλαγή σε εκείνη τη γραμμή του κώδικα.
import "github.com/kataras/iris"
func main() {
app := iris.New()
// [...]
app.Run(iris.Addr(":8080"), iris.WithPostMaxMemory(10 << 20))
}
Νέα μέθοδος για ανέβασμα πολλαπλών αρχείων από τον client, πρέπει να χρησημοποιείται για απλές και συνηθισμένες καταστάσεις, ένα helper είναι μόνο.
// UploadFormFiles uploads any received file(s) from the client
// to the system physical location "destDirectory".
//
// The second optional argument "before" gives caller the chance to
// modify the *miltipart.FileHeader before saving to the disk,
// it can be used to change a file's name based on the current request,
// all FileHeader's options can be changed. You can ignore it if
// you don't need to use this capability before saving a file to the disk.
//
// Note that it doesn't check if request body streamed.
//
// Returns the copied length as int64 and
// a not nil error if at least one new file
// can't be created due to the operating system's permissions or
// http.ErrMissingFile if no file received.
//
// If you want to receive & accept files and manage them manually you can use the `context#FormFile`
// instead and create a copy function that suits your needs, the below is for generic usage.
//
// The default form's memory maximum size is 32MB, it can be changed by the
// `iris#WithPostMaxMemory` configurator at main configuration passed on `app.Run`'s second argument.
//
// See `FormFile` to a more controlled to receive a file.
func (ctx *context) UploadFormFiles(
destDirectory string,
before ...func(string, string),
) (int64, error)
Το παράδειγμα μπορεί να βρεθεί εδώ.
Απλά μια μικρή προσθήκη μια δεύτερης προαιρετικής variadic παράμετρου στη context#View
μέθοδο για να δέχεται μια μονή τιμή για template binding.
Όταν απλά θέλετε να εμφάνισετε ένα struct value και όχι ζεύγη από κλειδί-τιμή, παλιότερα για να το κάνετε αυτό έπρεπε να δηλώσετε κενό string στη 1η παράμετρο στη context#ViewData
μέθοδο, το οποίο είναι μια χαρά ειδικά αν δηλώνατε αυτά τα δεδομένα σε προηγούμενο handler της αλυσίδας.
func(ctx iris.Context) {
ctx.ViewData("", myItem{Name: "iris" })
ctx.View("item.html")
}
Το ίδιο όπως:
func(ctx iris.Context) {
ctx.View("item.html", myItem{Name: "iris" })
}
Item's name: {{.Name}}
Προσθήκη νέας μεθόδου, context#YAML
, εμφανίζει δομημένο yaml κείμενο από struct value.
// YAML marshals the "v" using the yaml marshaler and renders its result to the client.
func YAML(v interface{}) (int, error)
Η μέθοδος sessions/session#GetString
μπορεί πλέον να επιστρέψει τιμή ακόμα και απο τιμή που αποθηκεύτηκαι σαν αριθμός (integer), όπως ακριβώς κάνουν ήδη τα: memstore, η προσωρινή μνήμη του context, οι δυναμικές μεταβλητές του path routing και οι παράμετροι του url query.