package main
import (
"log"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
func main() {
bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
if err != nil {
log.Panic(err)
}
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil { // не обрабатываем если нет сообщения
continue
}
// ID сообщения, int
log.Printf("message id: %s\n", update.Message.MessageID)
// так вы можете получить текст сообщения полный (тип string)
log.Printf("message: %s\n", update.Message.Text)
if update.Message.IsCommand() {
// так вы получаете команду
log.Printf("command: %s\n", update.Message.Command())
// так вы получаете аргументы (параметры) команды, string
log.Printf("command: %s\n", update.Message.CommandArguments())
}
}
}
}
КАК ПРИШЁЛ К DJANGOда всем насрать как. Могут иногда на самом собесе спросить чтобы начать разговор
Из стоящих работ к сожалению могу предоставить код своей незавершённой социальной сети.тут и сожаление, и незаконченный проект. Заранее показываешь что ты дно, да еще и согласен с этим. Не незавершенный проект, а продолжающий развиваться. А еще лучше не говорить об этом. Кто посмотрит поймет что не закончил, кто не посмотрит не решит что ты рукожоп
Данный проект я начал создавать, чтобы проверить на что я способен это всё же интереснее, чем просто создавать сайты-блоги, визитки и тд. Я не завершил его по причине острой необходимости в подработке( начал писать на php об этом говорится в разделе СОПУТСТВУЮЩИЕ НАВЫКИ).очень интересно. На самом деле нет. Прям автобиографию написал. У hr сотни резюме, эта писанина им не нужна и не интересна. Они ищут человека с определенными навыками, не более.
В проекте "социальная сеть" начал применять паттерн MVC, но не везде отрефакторил код.Твой проект скорее всего никто не посмотрит, а если посмотрит увидит МВС, но ты сразу признался что работаешь через жопу
Postmanвпервые вижу это как некий плюс. Все в курсе что это и умеют пользоваться, если нет, то пяти минут хватит разобраться
на данный момент из-за проблем с подключением удалил его как вторую ОС при необходимости я оперативно верну linux назадопять автобиография пошла, не связанная с вакансией. Может книги лучше будешь писать?
если что-то не знаю то гугл в помощь и без проблем нахожу решениеэто ты братану расскажешь, а не в резюме. Неформальная речь, очевидные вещи, не интересно hr. Кадровику надоело читать, выкидывает не дочитав
Заранее хотел бы извинитьсяопять не успел начать уже сам говоришь что рукожоп. Нельзя так говорить в принципе
фриланс это больше про коммерцию нежели про программированиеэто вообще о чем? типа ты за интерес собираешься работать? Ну и что положительного тут должен увидеть хр?
но зато я точно знаю, что могу находить решения для реальных задачпафосно. Только все так говорят, а доказательства где.
также почерпал много информацииахахах, великий черпий) много проблем с языком, если не знаешь, попроси того кто знает русский отчитать
Я быстро разбираюсь во всём новомэто уже давно стало позорным клише в резюме
package main
import (
"fmt"
"runtime"
"sync"
)
var wg sync.WaitGroup
func main() {
runtime.GOMAXPROCS(8)
arr := []int{1343434, 1343434300, 234343400, 334343434000, 400434340, 203434340, 4232, 23545, 15535, 353535, 33434434, 5334345, 3533434345, 3535}
for idx, el := range arr {
wg.Add(1)
go test(el, idx)
}
wg.Wait()
}
func test(el int, idx int) {
fmt.Printf("%d started: %d\n", idx, el)
for i := 0; i < el; i++ {
el = el - 1
}
fmt.Printf("%d completed: %d\n", idx, el)
defer wg.Done()
}
4 started: 400434340
8 started: 15535
8 completed: 7767
13 started: 3535
13 completed: 1767
6 started: 4232
6 completed: 2116
10 started: 33434434
3 started: 334343434000
7 started: 23545
7 completed: 11772
5 started: 203434340
12 started: 3533434345
11 started: 5334345
2 started: 234343400
1 started: 1343434300
11 completed: 2667172
9 started: 353535
9 completed: 176767
0 started: 1343434
0 completed: 671717
10 completed: 16717217
5 completed: 101717170
4 completed: 200217170
2 completed: 117171700
1 completed: 671717150
12 completed: 1766717172
arr := []int{1343434, 1343434300, 234343400, 334343434000, 334343434000, 334343434000, 4232, 23545, 15535, 353535, 33434434, 5334345, 3533434345, 3535}
%Cpu0 : 0.3 us, 1.0 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 1.7 us, 0.7 sy, 0.0 ni, 97.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 1.6 us, 2.9 sy, 0.0 ni, 95.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 5.6 us, 1.0 sy, 0.0 ni, 93.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
func (db *Requests) StorePhotos(ctx context.Context, photos []Photo) error {
ctx, cancel := context.WithTimeout(ctx, time.Minute*2)
defer cancel()
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return err
}
defer tx.Rollback()
stmnt, err := tx.PrepareContext(ctx, "INSERT INTO photos (id, owner_id, req_id, url) VALUES ($1, $2, $3, $4)")
if err != nil {
return err
}
defer stmnt.Close()
for _, photo := range photos {
if _, err = stmnt.ExecContext(ctx, photo.ID, photo.OwnerID, photo.ReqID, photo.URL); err != nil {
return err
}
}
return tx.Commit()
}