Можно также использовать расширение Flask Debug Toolbar , чтобы получить более подробную информацию, встроенную в отображаемые страницы.
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'
toolbar = DebugToolbarExtension(app)
@app.route('/')
def index():
logging.warning("See this message in Flask Debug Toolbar!")
return ""
Запустите приложение следующим образом:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
То, что вы хотите сделать, зависит от архитектуры, и Go не делает много, чтобы помочь вам определить порядок байтов вашего хоста, насколько я могу судить. Ваше решение с использованием небезопасных указателей, вероятно, лучше всего.
Если вам известен порядок байтов, в котором вы хотите поговорить и кодировать / декодировать соответственно, вы можете использовать пакет encoding/binary
для этого: https://godoc.org/encoding/binary#ByteOrder
Если вам действительно нужно полагаться на порядок байтов хоста, вы можете ударить головой по дизайну анти-шаблона, который вы следует стараться избегать, если это возможно: https://commandcenter.blogspot.com/2012/04/byte-order-fallacy.html
Также здесь говорится о энергичном обсуждении golang- орехи по этой теме, с мнениями, высказанными по обе стороны дискуссии: https://groups.google.com/forum/#!topic/golang-nuts/3GEzwKfRRQw
В этой электронной почте есть предложение Russ Cox просто статически определить желаемый порядок байтов (или порядок байтов хоста) с использованием ограничений сборки:
В течение нескольких месяцев наш код имел:
var hbo = binary.LittleEndian // hack - нам нужен порядок байтов хоста!
, поэтому мы n использовать encoding.Binary для чтения вещей.
Поместите это в файл с именем byteorder_amd64.go, и он перестает быть взломанным. Это не должно быть в стандартной библиотеке.
Надеюсь, что это поможет ...
Возможно, этот код может помочь вам.
С помощью этого можно проверить порядок байтов машины:
//true = big endian, false = little endian
func getEndian() (ret bool) {
var i int = 0x1
bs := (*[INT_SIZE]byte)(unsafe.Pointer(&i))
if bs[0] == 0 {
return true
} else {
return false
}
}