type ResultRow struct {
StreamId int `json:"stream_id"`
DateTime string `json:"date_time"`
RawDataSensorsItems
}
type RawDataSensorsItems struct {
AKey string `json:"a_key"`
BKey int `json:"b_key"`
SensorA *int `json:"sensor_a"`
SensorB *int `json:"sensor_b"`
SensorC *int `json:"sensor_c"`
SensorD *int `json:"sensor_d"`
SensorE *int `json:"sensor_e"`
SensorF *int `json:"sensor_f"`
}
result = append(
result,
ResultRow{
StreamId: row.StreamId,
DateTime: row.DateTime,
RawDataSensorsItems: rowS,
})
)
for _, row := range packet {
for _, rowS := range row.Sensors {
result = append(
result,
ResultRow{
StreamId: row.StreamId,
DateTime: row.DateTime,
RawDataSensorsItems: rowS,
})
}
}
package main
import (
"encoding/json"
"io/ioutil"
)
func main() {
raw, err := ioutil.ReadFile("./data/raw.json")
PanicIfErr(err)
var packet DataPacket
var result ResultPacket
err = json.Unmarshal(raw, &packet)
PanicIfErr(err)
for _, row := range packet {
for _, rowS := range row.Sensors {
result = append(
result,
ResultRow{
StreamId: row.StreamId,
DateTime: row.DateTime,
RawDataSensorsItems: rowS,
})
}
}
content, err := json.Marshal(result)
PanicIfErr(err)
err = ioutil.WriteFile("./data/output.json", content, 0644)
PanicIfErr(err)
}
func PanicIfErr(err error) {
if err != nil {
panic(err)
}
}
type ResultPacket []ResultRow
type ResultRow struct {
StreamId int `json:"stream_id"`
DateTime string `json:"date_time"`
RawDataSensorsItems
}
type RawDataSensorsItems struct {
AKey string `json:"a_key"`
BKey int `json:"b_key"`
SensorA *int `json:"sensor_a"`
SensorB *int `json:"sensor_b"`
SensorC *int `json:"sensor_c"`
SensorD *int `json:"sensor_d"`
SensorE *int `json:"sensor_e"`
SensorF *int `json:"sensor_f"`
}
type RawDataRow struct {
StreamId int `json:"stream_id"`
DateTime string `json:"date_time"`
Sensors []RawDataSensorsItems `json:"sensors"`
}
type DataPacket []RawDataRow
package main
import (
"fmt"
)
func main() {
type KV struct {
Name string
Value int
}
data := []KV{
{
Name: "width",
Value: 100,
},
{
Name: "height",
Value: 300,
},
}
result := make(map[string]int)
// reduce
for _, v := range data {
result[v.Name] = v.Value
}
fmt.Printf("%#v", result) // map[string]int{"width":100, "height":300}
}
package main
import (
"fmt"
)
func main() {
type KV struct {
Name string
Value interface{}
}
data := []KV{
{
Name: "width",
Value: 100,
},
{
Name: "height",
Value: 300,
},
{
Name: "image",
Value: "cat.jpg",
},
}
result := make(map[string]interface{})
for _, v := range data {
result[v.Name] = v.Value
}
fmt.Printf("%#v", result) // map[string]interface {}{"width":100, "height":300, "image":"cat.jpg"}
}
length := 7
slice := make([]int, length)
audioUpload := tgbotapi.NewAudioUpload(update.Message.Chat.ID, ...)
audioUpload.ReplyMarkup = update.Message.MessageID
_, err := bot.Send(audioUpload)
file, err := os.Open("audio.mp3")
if err != nil {
panic(err)
}
defer file.Close()
audioUpload := tgbotapi.NewAudioUpload(update.Message.Chat.ID, tgbotapi.FileReader{
Name: "audio.mp3",
Reader: file,
Size: -1, // If Size is -1, it will read the entire Reader into memory to calculate a Size.
})
audioUpload.ReplyToMessageID = update.Message.MessageID
_, err := bot.Send(audioUpload)
if err != nil {
panic(err)
}
package main
import (
"log"
"github.com/davecgh/go-spew/spew"
"github.com/go-telegram-bot-api/telegram-bot-api"
)
func main() {
// подключаемся к боту с помощью токена
bot, err := tgbotapi.NewBotAPI("ТОКЕН")
if err != nil {
log.Panic(err)
}
bot.Debug = true
log.Printf("Authorized on account %s", bot.Self.UserName)
// инициализируем канал, куда будут прилетать обновления от API
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates, err := bot.GetUpdatesChan(u)
if err != nil {
log.Fatal(err)
}
// читаем обновления из канала
for update := range updates {
switch {
case update.Message != nil: // Если было прислано сообщение, то обрабатываем, так как могут приходить не только сообщения.
OnMessage(bot, update.Message)
}
}
}
func OnMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
// Пользователь, который написал боту
userName := message.From.UserName
// ID чата/диалога.
// Может быть идентификатором как чата с пользователем
// (тогда он равен UserID) так и публичного чата/канала
chatID := message.Chat.ID
log.Printf("[%s] %d", userName, chatID)
spew.Dump(message) // выводим то что пришло (Для отладки!!!)
var msg tgbotapi.Chattable
switch {
case message.Text != "": // Текстовое ли сообщение?
msg = tgbotapi.NewMessage(chatID, message.Text)
case message.Photo != nil: // Это фото?
photoArray := *message.Photo
photoLastIndex := len(photoArray) - 1
photo := photoArray[photoLastIndex] // Получаем последний элемент массива (самую большую картинку)
msg = tgbotapi.NewPhotoShare(chatID, photo.FileID)
default: // Если не одно условие не сработало
msg = tgbotapi.NewMessage(chatID, "Не реализовано") // Отправляется на тот тип сообщения, который ещё не реализован выше ^
}
// и отправляем его
_, err := bot.Send(msg)
if err != nil {
log.Println(err)
}
}
client := http.DefaultClient
form := url.Values{
"LoginForm[username]": []string{"user"},
"LoginForm[password]": []string{"pass"},
}
response, err := client.Post("http://httpbin.org/post", "application/x-www-form-urlencoded", strings.NewReader(form.Encode()))
if err != nil {
panic(err)
}
defer response.Body.Close()
b, err := ioutil.ReadAll(response.Body)
if err != nil {
panic(err)
}
println(string(b))
git init && git commit --allow-empty -m "Initial commit"
git submodule add -b master git@github.com:<USERNAME>/<USERNAME>.github.io.git dist
# Build the project.
yarn build
# npm run build
# Go To dist folder
cd dist
# Add changes to git.
git add .
# Commit changes.
git commit -m "rebuilding site $(date)"
# Push source and build repos.
git push origin master
[a-zA-Z]+_[a-zA-Z]+
$re = '/[a-zA-Z]+_[a-zA-Z]+/';
$str = 'Name_Surname
qwwer_asdasd';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
$ dig core.telegram.org
...
;; ANSWER SECTION:
core.telegram.org. 600 IN A 149.154.167.99
...