Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
a781e78
problem1
eraga0423 Jul 29, 2024
fe99441
test
eraga0423 Jul 30, 2024
3bf4558
finish1
eraga0423 Jul 30, 2024
440f38e
Merge branch 'talgat-ruby:main' into main
eraga0423 Sep 19, 2024
9bb7d8a
problem1
eraga0423 Sep 22, 2024
a4315a2
fix:exercises
eraga0423 Sep 26, 2024
ff81b80
Merge branch 'talgat-ruby:main' into main
eraga0423 Sep 26, 2024
4072eb0
finish
eraga0423 Sep 26, 2024
f79401b
Merge branch 'talgat-ruby:main' into main
eraga0423 Oct 2, 2024
c42722e
finish
eraga0423 Oct 5, 2024
f415af4
Merge branch 'talgat-ruby:main' into main
eraga0423 Oct 12, 2024
5d745a7
finish
eraga0423 Oct 21, 2024
1050ce8
Merge branch 'talgat-ruby:main' into main
eraga0423 Nov 3, 2024
42bc076
create:exercise5
eraga0423 Nov 4, 2024
6e27d09
Merge branch 'talgat-ruby:main' into main
eraga0423 Nov 15, 2024
b90ef38
Merge branch 'talgat-ruby:main' into main
eraga0423 Nov 21, 2024
63db035
fix:problem: 1,2,3,4
eraga0423 Nov 25, 2024
a6474f9
Merge pull request #227 from talgat-ruby/exercise7
talgat-ruby Nov 26, 2024
52c24e1
Merge branch 'talgat-ruby:main' into main
eraga0423 Nov 30, 2024
98c52bb
create: new poject
eraga0423 Dec 2, 2024
795931b
create new pojec
eraga0423 Dec 3, 2024
cb81482
fix: handle func
eraga0423 Dec 4, 2024
5d46c41
refactoring code
eraga0423 Dec 6, 2024
8299cc3
refactoring code-2
eraga0423 Dec 6, 2024
d014d64
refactoring code-2
eraga0423 Dec 6, 2024
dcb73a1
fix:start program
eraga0423 Dec 6, 2024
ed2e5f9
fix
eraga0423 Dec 6, 2024
51582d0
Merge branch 'main' of github.com:eraga0423/exercises-go
eraga0423 Dec 6, 2024
392a022
1
eraga0423 Dec 6, 2024
d0b11a9
finish
eraga0423 Dec 9, 2024
1368224
create:new project
eraga0423 Jan 1, 2025
c3ae71e
create : new project
eraga0423 Jan 1, 2025
b19b5d7
start project create architect project
eraga0423 Jan 2, 2025
fb05bc0
created func register
eraga0423 Jan 4, 2025
dddf49f
creadet new func register
eraga0423 Jan 4, 2025
46e7411
fix :error start program, migrations, postgres, compose
eraga0423 Jan 5, 2025
07d29c3
create docker compose, docker
eraga0423 Jan 6, 2025
b42f6c4
fix : db-data
eraga0423 Jan 6, 2025
6e5d728
fix:nil pointer
eraga0423 Jan 7, 2025
b7fa1ed
fix:debug nil pointer, create: new func login
eraga0423 Jan 7, 2025
da48033
create new functions new_user
eraga0423 Jan 8, 2025
836fb7e
create func blance, get expenses, edit expenses
eraga0423 Jan 9, 2025
b6e0ff9
fix: beta test
eraga0423 Jan 9, 2025
0082188
fix: beta test
eraga0423 Jan 10, 2025
539c292
finish
eraga0423 Jan 11, 2025
0775bd4
add exercise9
Jan 23, 2025
80a13f5
Merge pull request #240 from talgat-ruby/exercise9
talgat-ruby Jan 23, 2025
2597831
Merge branch 'talgat-ruby:main' into main
eraga0423 Jan 25, 2025
9925d78
Changes to be committed:
eraga0423 Feb 27, 2025
a862976
Changes to be committed:
eraga0423 Feb 27, 2025
6715d2f
start redis
YerassylDoskenov Mar 4, 2025
5d252b3
asd
YerassylDoskenov Mar 8, 2025
6fd1b19
Changes to be committed:
eraga0423 Mar 13, 2025
33bb342
sdf
YerassylDoskenov Mar 18, 2025
df458ed
Changes to be committed:
eraga0423 Mar 18, 2025
5941f34
Changes to be committed:
eraga0423 Mar 19, 2025
b4dbc4c
Changes to be committed:
eraga0423 Mar 20, 2025
8cbc6a8
renamed: internal/.env -> .env
eraga0423 Mar 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion exercise1/problem1/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
package main

func addUp() {}
func addUp(num int) int {
count := 0
for i := 1; i <= num; i++ {
count += i
}
return count
}
21 changes: 20 additions & 1 deletion exercise1/problem10/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
package main

func sum() {}
import (
"fmt"
"strconv"
)

func sum(a, b string) (string, error) {
numA, errA := strconv.Atoi(a)
if errA != nil {
return "", fmt.Errorf("string: %s cannot be converted", a)
}

numB, errB := strconv.Atoi(b)
if errB != nil {
return "", fmt.Errorf("string: %s cannot be converted", b)
}

sum := numA + numB

return strconv.Itoa(sum), nil
}
8 changes: 7 additions & 1 deletion exercise1/problem2/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
package main

func binary() {}
import "strconv"

func binary(n int) string {

return strconv.FormatInt(int64(n), 2)

}
9 changes: 8 additions & 1 deletion exercise1/problem3/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
package main

func numberSquares() {}
func numberSquares(n int) int {
res := 0
for i := 1; i <= n; i++ {
res += (n - i + 1) * (n - i + 1)
}

return res
}
14 changes: 13 additions & 1 deletion exercise1/problem4/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
package main

func detectWord() {}
import (
"unicode"
)

func detectWord(crowd string) string {
var word string
for _, letter := range crowd {
if unicode.IsLower(letter) {
word += string(letter)
}
}
return word
}
8 changes: 7 additions & 1 deletion exercise1/problem5/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
package main

func potatoes() {}
import (
"strings"
)

func potatoes(str string) int {
return strings.Count(str, "potato")
}
18 changes: 17 additions & 1 deletion exercise1/problem6/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
package main

func emojify() {}
import (
"strings"
)

func emojify(sentence string) string {
replacements := map[string]string{
"smile": "🙂",
"grin": "😀",
"sad": "😥",
"mad": "😠",
}

for word, emoji := range replacements {
sentence = strings.ReplaceAll(sentence, word, emoji)
}
return sentence
}
18 changes: 17 additions & 1 deletion exercise1/problem7/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
package main

func highestDigit() {}
import (
"strconv"
)

func highestDigit(number int) int {
numStr := strconv.Itoa(number)
highest := 0

for _, digit := range numStr {
digitInt, _ := strconv.Atoi(string(digit))
if digitInt > highest {
highest = digitInt
}
}

return highest
}
17 changes: 16 additions & 1 deletion exercise1/problem8/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
package main

func countVowels() {}
import (
"strings"
)

func countVowels(str string) int {
vowels := "aeiouAEIOU"
count := 0

for _, char := range str {
if strings.ContainsRune(vowels, char) {
count++
}
}

return count
}
12 changes: 9 additions & 3 deletions exercise1/problem9/main.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package main

func bitwiseAND() {}
func bitwiseAND(a, b int) int {
return a & b
}

func bitwiseOR() {}
func bitwiseOR(a, b int) int {
return a | b
}

func bitwiseXOR() {}
func bitwiseXOR(a, b int) int {
return a ^ b
}
3 changes: 3 additions & 0 deletions exercise10/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
PORT=8080
REDIS_HOST=6379

18 changes: 18 additions & 0 deletions exercise10/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Используем официальный образ Golang
FROM golang:1.21

# Устанавливаем рабочую директорию в контейнере
WORKDIR /app

# Копируем файлы проекта
COPY go.mod go.sum ./
RUN go mod download

# Копируем весь код
COPY . .

# Собираем приложение
RUN go build -o main .

# Запускаем приложение
CMD ["/app/main"]
11 changes: 11 additions & 0 deletions exercise10/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: "3.8"

services:
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"


11 changes: 11 additions & 0 deletions exercise10/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module github.com/my/repo

go 1.23.6

require github.com/redis/go-redis/v9 v9.7.1

require (
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/joho/godotenv v1.5.1 // indirect
)
12 changes: 12 additions & 0 deletions exercise10/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/redis/go-redis/v9 v9.7.1 h1:4LhKRCIduqXqtvCUlaq9c8bdHOkICjDMrr1+Zb3osAc=
github.com/redis/go-redis/v9 v9.7.1/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw=
1 change: 1 addition & 0 deletions exercise10/internal/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
../.env
49 changes: 49 additions & 0 deletions exercise10/internal/config/basic.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package config

import (
"fmt"
"github.com/joho/godotenv"
"log"
"os"
)

type Config struct {
//ENV string
API APIConfig
Redis RedisConfig
}

type APIConfig struct {
Rest APIRestConfig
}
type APIRestConfig struct {
Host string
Port string
}
type RedisConfig struct {
RedisName string
Host string
}

const NameRedis = "leaderBoard"

func NewConfig() *Config {
err := godotenv.Load()
if err != nil {
fmt.Println(err.Error())
log.Fatal("Error loading .env file")
}
return &Config{
API: APIConfig{
Rest: APIRestConfig{
Host: "localhost",
Port: os.Getenv("PORT"),
},
},
Redis: RedisConfig{
Host: os.Getenv("REDIS_HOST"),
RedisName: NameRedis,
},
}

}
13 changes: 13 additions & 0 deletions exercise10/internal/governor/basic.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package governor

import "github.com/my/repo/internal/governor/board"

type Governor struct {
*board.LeaderBoard
}

func NewGovernor() *Governor {
return &Governor{
LeaderBoard: new(board.LeaderBoard),
}
}
20 changes: 20 additions & 0 deletions exercise10/internal/governor/board/basic.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package board

import (
"github.com/my/repo/internal/config"
"github.com/my/repo/internal/types/pubsub"
"github.com/redis/go-redis/v9"
)

type LeaderBoard struct {
pubsub.MyRedis
conf *config.Config
rdb *redis.Client
}

func NewLeaderBoard(conf *config.Config, rdb *redis.Client) *LeaderBoard {
return &LeaderBoard{
conf: conf,
rdb: rdb,
}
}
73 changes: 73 additions & 0 deletions exercise10/internal/governor/board/list_board.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package board

import (
"errors"
"fmt"
"github.com/my/repo/internal/types/controller"
)

func (l *LeaderBoard) ListPlayers() (controller.ListPlayerResp, error) {
fmt.Println("method", "ListPlayers:governor")
//request := newListPlayerReq()
response, err := l.MyRedis.ListPlayers()
if response == nil {
return nil, errors.New("response is nil")
}
if err != nil {
return nil, err
}

ps := make([]*Player, 0, len(response.GetList()))

for _, it := range response.GetList() {
ps = append(ps, newPlayer(it.GetPlayerID(), it.GetPlayerName(), it.GetPlayerScore()))
}
fmt.Println("method", "ListPlayers:governor", "end")
return newListPlayer(ps), nil

}

type ListPlayerReq struct{}
type ListPlayerResp struct {
Players []*Player
}

func newListPlayerReq() *ListPlayerReq {
return &ListPlayerReq{}
}

func newListPlayer(ps []*Player) *ListPlayerResp {
return &ListPlayerResp{ps}
}

func (i *ListPlayerResp) GetList() []controller.ItemPlayerResp {
list := make([]controller.ItemPlayerResp, 0, len(i.Players))

for _, p := range i.Players {
list = append(list, p)
}

return list
}

type Player struct {
id string
name string
score int
}

func newPlayer(id, name string, score int) *Player {
return &Player{id, name, score}
}

func (p *Player) GetID() string {
return p.id
}

func (p *Player) GetName() string {
return p.name
}

func (p *Player) GetScore() int {
return p.score
}
Loading