🐧 Linux Junior - канал для Linux любителей.
Тем кому нравится командная строка и то, какое волшебство можно в ней делать.
Подписывайся и отвечай на вопросы, решай задачки: @juniorlinux
Тем кому нравится командная строка и то, какое волшебство можно в ней делать.
-rf *Эти и другие команды ты можешь выучить у нас в игровой форме.
man man
touch -m old_file
shutdown now
Подписывайся и отвечай на вопросы, решай задачки: @juniorlinux
👍1
Что выведет код?
package mainОтвет
import "fmt"
func main() {
a := [...]int{0, 1, 2, 3}
x := a[:1]
y := a[2:]
fmt.Println(a, x, y)
x = append(x, y...)
x = append(x, y...)
fmt.Println(a, x)
}
👍5
Редактирование видео в Golang
MovieGo - это Golang пакет для редактирования видео. Данный пакет предназначен для быстрой обработки рутинных задач, связанных с редактированием видео. Основным ядром является пакет ffmpeg-go, который упрощает работу с библиотекой ffmpeg.
Возможности пакета на данный момент:
- Редактирование размера видео
- Обрезка видео на фрагменты
- Конкатенация нескольких видео в одно
- Скриншот кадра из видео
- Fade-in и Fade-out для видео и аудио-дорожки
Github: https://github.com/mowshon/moviego
Статья: https://golangify.com/moviego-video-editing
MovieGo - это Golang пакет для редактирования видео. Данный пакет предназначен для быстрой обработки рутинных задач, связанных с редактированием видео. Основным ядром является пакет ffmpeg-go, который упрощает работу с библиотекой ffmpeg.
Возможности пакета на данный момент:
- Редактирование размера видео
- Обрезка видео на фрагменты
- Конкатенация нескольких видео в одно
- Скриншот кадра из видео
- Fade-in и Fade-out для видео и аудио-дорожки
Github: https://github.com/mowshon/moviego
Статья: https://golangify.com/moviego-video-editing
👍8
Что выведет код?
Ответ
package main
func main() {
x := 0.0
y := 1.0 / x // +Inf
z := x * y
println(z)
}
Ответ
👍3
Документация по GO на русском. Держите: https://golang-blog.blogspot.com/p/go-specification.html?m=1
Blogspot
Спецификация Go
В подборке статей Спецификация Go освещена спецификация Go 1.12 версии от 16 ноября, 2018 года.
👍22🗿1
Machine Learning With Go
Автор: Daniel Whitenack, Janani Selvaraj
Год издания: 2019
#go #en
Скачать книгу
Автор: Daniel Whitenack, Janani Selvaraj
Год издания: 2019
#go #en
Скачать книгу
🤔3🤡2👍1
С какими проблемами вы сталкивались при тестировании облачных платформ? Какие инструменты для этого предпочитаете?
💎 Чат: ссылка
Своим опытом в статье на Хабре поделился Илья Казначеев, техлид MTS Cloud — облачного провайдера МТС.
Он рассказал, какие виды тестов пробовали, как боролись с проблемами и к чему в итоге пришли.
Читать статью
💎 Чат: ссылка
Своим опытом в статье на Хабре поделился Илья Казначеев, техлид MTS Cloud — облачного провайдера МТС.
Он рассказал, какие виды тестов пробовали, как боролись с проблемами и к чему в итоге пришли.
Читать статью
Экономное вычисление выражений в польской записи
Польская запись — это форма записи арифметических, логических и алгебраических выражений, в которой операция располагается слева от операндов. Выражения в польской записи могут обходиться без скобок, однако мы оставим скобки для наглядности.
Например, выражение в польской записи выглядит как
Выражения могут содержать повторяющиеся подвыражения. Экономное вычисление таких выражений подразумевает, что повторяющиеся подвыражения вычисляются только один раз.
Требуется составить программу econom.go, вычисляющую количество операций, которые нужно выполнить для экономного вычисления выражения. Примеры работы программы приведены в таблице:
Набор тестов для программы экономного вычисления выражений в польской записи
Приведем вариант кода без скобок.
Польская запись — это форма записи арифметических, логических и алгебраических выражений, в которой операция располагается слева от операндов. Выражения в польской записи могут обходиться без скобок, однако мы оставим скобки для наглядности.
Например, выражение в польской записи выглядит как
(* 5 (+ 3 4))
Пусть выражения в польской записи состоят из имён переменных (от a до z), круглых скобок и трёх знаков операций: #, $ и @ (смысл операций мы определять не будем).Выражения могут содержать повторяющиеся подвыражения. Экономное вычисление таких выражений подразумевает, что повторяющиеся подвыражения вычисляются только один раз.
Требуется составить программу econom.go, вычисляющую количество операций, которые нужно выполнить для экономного вычисления выражения. Примеры работы программы приведены в таблице:
Набор тестов для программы экономного вычисления выражений в польской записи
Выражение Количество операций
x 0
($xy) 1
($(@ab)c) 2
(#i($jk)) 2
(#($ab)($ab)) 2
(@(#ab)($ab)) 3
(#($a($b($cd)))(@($b($cd))($a($b($cd))))) 5
(#($(#xy)($(#ab)(#ab)))(@z($(#ab)(#ab)))) 6
Решениеpackage main
func main() {
println(opCount("(#($(#xy)($(#ab)(#ab)))(@z($(#ab)(#ab))))"))
println(opCount("($xy)"))
println(opCount("x"))
}
func opCount(expr string) int {
expressions := map[string]bool{}
var openBraces []int
for i, c := range expr {
switch c {
case '(':
openBraces = append(openBraces, i)
case ')':
lastOpenBrace := len(openBraces) - 1
subExprStart := openBraces[lastOpenBrace]
subExpr := expr[subExprStart:i]
expressions[subExpr] = true
openBraces = openBraces[:lastOpenBrace]
}
}
return len(expressions)
}
Скобки очень сильно упрощают задачу, при этом в настоящей польской нотации скобки не нужны. Приведем вариант кода без скобок.
const oper = node_t("oper")
const expr = node_t("expr")
type node struct {
t node_t
v string
}
func opCount(input string) int {
expressions := map[string]bool{}
var stack []node
for _, c := range input {
switch c {
case '$', '#', '@':
stack = append(stack, node{t: oper, v: fmt.Sprintf("%s", c)})
default:
stack = append(stack, node{t: expr, v: fmt.Sprintf("%s", c)})
}
for canFold(stack) {
lastIdx := len(stack) - 1
operIdx := lastIdx - 2
folded := node{t: expr, v: stack[operIdx].v + stack[operIdx+1].v + stack[operIdx+2].v}
expressions[folded.v] = true
stack[operIdx] = folded
stack = stack[:operIdx+1]
}
}
return len(expressions)
}
func canFold(stack []node) bool {
stackLen := len(stack)
return stackLen >= 3 && stack[stackLen-3].t == oper && stack[stackLen-2].t == expr && stack[stackLen-1].t == expr
}
❤4👍3🆒2
Как подсчитать общее количество элементов, определенных в Enum?
Пишите свое решение в комментариях👇
package main
import "fmt"
const (
I1 = 1 << iota
I2
I3
ILen int = iota
)
const (
X1 = "A"
X2 = "B"
X3 = "C"
XLen int = iota
)
func main() {
fmt.Println(I1, I2, I3, ILen)
fmt.Println(X1, X2, X3, XLen)
}
ОтветПишите свое решение в комментариях👇
👍3🤮2💩2
Друзья, дайте фидбэк по контенту. Напишите в комментариях, что добавить, убрать, исправить?
Если есть хорошие источники контента - you are welcome)
Если есть хорошие источники контента - you are welcome)
👍7
Тёмный маршрутизатор из Raspberry Pi
В данной статье автор рассказывает, как он сделал из Raspberry Pi маршрутизатор, способный перенаправлять отдельные сайты, отдельные подсети, хоть все запросы через tor.
Подробнее: https://habr.com/ru/post/584558/
В данной статье автор рассказывает, как он сделал из Raspberry Pi маршрутизатор, способный перенаправлять отдельные сайты, отдельные подсети, хоть все запросы через tor.
Подробнее: https://habr.com/ru/post/584558/
💩4🔥2
Разработка REST-серверов на Go
В цикле статей описана реализация простого REST-сервера с использованием нескольких различных подходов. В результате эти подходы можно будет сравнить друг с другом, можно будет понять их относительные преимущества друг перед другом.
💎 Чат: ссылка
Часть 1: стандартная библиотека
Часть 2: применение маршрутизатора gorilla/mux
Часть 3: использование веб-фреймворка Gin
Часть 4: применение OpenAPI и Swagger
Часть 5: Middleware
Часть 6: аутентификация
В цикле статей описана реализация простого REST-сервера с использованием нескольких различных подходов. В результате эти подходы можно будет сравнить друг с другом, можно будет понять их относительные преимущества друг перед другом.
💎 Чат: ссылка
Часть 1: стандартная библиотека
Часть 2: применение маршрутизатора gorilla/mux
Часть 3: использование веб-фреймворка Gin
Часть 4: применение OpenAPI и Swagger
Часть 5: Middleware
Часть 6: аутентификация
❤9👍4👎1
Какой будет вывод этого кода?
package main
import "fmt"
const (
i = 8
j
k
)
func main() {
fmt.Println(i, j, k)
}
Ответ👍10
Глубинное обучение с нуля в Go - Часть 1: графы
Это первая статья из целого цикла про алгоритмы глубинного обучения. В цикле представлена информация с самых азов до объяснения современных разработок в этой области.
💎 Чат: ссылка
Подробнее: https://kodazm.ru/articles/go/deep-learning-from-scratch-in-go-part-1-equations-are-graphs/
Это первая статья из целого цикла про алгоритмы глубинного обучения. В цикле представлена информация с самых азов до объяснения современных разработок в этой области.
💎 Чат: ссылка
Подробнее: https://kodazm.ru/articles/go/deep-learning-from-scratch-in-go-part-1-equations-are-graphs/
👍6🔥1
Что выведет код?
package mainОтвет
import "fmt"
func main() {
a := [...]int{0, 1, 2, 3}
x := a[:1]
y := a[2:]
x = append(x, y...)
x = append(x, y...)
fmt.Println(a, x)
}
👍2