- 1
- 2
- 3
- 4
- 5
- 6
- 7
func Map[F, T any](s []F, f func(F) T) []T {
r := make([]T, len(s))
for i, v := range s {
r[i] = f(v)
}
return r
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
func Map[F, T any](s []F, f func(F) T) []T {
r := make([]T, len(s))
for i, v := range s {
r[i] = f(v)
}
return r
}
Го сдался.
0
func getTransport(tt string) (iTransport, error) {
if tt == "scooter" {
return newElectricScooter(), nil
}
if tt == "quadcopter" {
return newQuadcopter(), nil
}
return nil, fmt.Errorf("Wrong type")
}
https://habr.com/ru/post/556512/
> Factory Method Pattern
> Привет, друзья. С вами Alex Versus.
> Ранее мы говорили про шаблоны проектирования Одиночка и Стратегия, про тонкости реализации на языке Golang.
> Сегодня расскажу про Фабричный метод.
0
if req.Lang != "" {
req.Lang = "EN"
}
Я сказал английский!
[Поставленная задача: если пришёл запрос без поля, поставить значение по умолчанию]
0
REM 101.22.25. Постройте алгоритм разложения натуральных чисел на простые множители.
REM В какой форме будут представлены результаты работы этого алгоритма?
Dim input As Integer REM Число, вводимое с клавиатуры
Dim min As Integer, max As Integer
input = Int(Val(T1.Text)) REM Ввод данных
If input < 1 Then input = 1
If input > 1000000000 Then input = 1000000000
L3.Text = input & ": "
min = 2 REM "min" - число, которое проверяется, является ли оно делителем числа "max"
max = input REM "max" - число, для которого ищутся делители
Do While min < max
If max Mod min = 0 Then
L3.Text = L3.Text & min & " "
max = max / min
Else
If min * min > max Then Exit Do
min = min + 1
End If
Loop
L3.Text = L3.Text & max
Разложение числа на простые множители.
0
REM 52.10.18. Напишите алгоритм подсчёта количества "счастливых" автобусных билетов.
REM (Билет называется "счастливым", если сумма первых трёх цифр номера билета равна
REM сумме последних трёх цифр.)
Dim a As Integer, b As Integer, c As Integer
Dim d As Integer, f As Integer, g As Integer
Dim h As Integer REM Число "счастливых" билетов
h = -1 REM Число 000000 в набор автобусных билетов не входит. Его вычитаем.
For a = 0 To 9
For b = 0 To 9
For c = 0 To 9
For d = 0 To 9
For f = 0 To 9
For g = 0 To 9
If a + b + c = d + f + g Then h = h + 1
Next
Next
Next
Next
Next
Next
L3.Text = "Число счастливых билетов " & h
0
Public Class F1
Inherits System.Windows.Forms.Form
Dim number(3, 30) As Integer REM Массив для хранения 200-значного числа
Private Sub B1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B1.Click
REM 52.5.16. Используя алгоритм вычисления функции n! в качестве вспомогательного,
REM напишите алгоритм вычисления суммы факториалов всех чётных чисел от 2 до 100.
Dim input As Integer REM Число, вводимое с клавиатуры
Dim a As Integer, b As Integer REM Временные переменные
REM Ввод числа с клавиатуры
L3.Text = ""
input = Int(Val(T1.Text))
If input < 0 Then input = 0
If input > 100 Then input = 100
For a = 1 To 3
For b = 1 To 30
number(a, b) = 0
Next
Next
number(1, 1) = 1
For a = 1 To input
multiply(a)
If a = input Or a Mod 20 = 0 Then
L3.Text = L3.Text & a & "! = "
shownumber(1)
L3.Text = L3.Text & " "
End If
Next
End Sub
Sub multiply(ByVal a As Integer) REM Умножение массива "number (1)" на число "a"
Dim d As Integer, e As Integer REM Временные переменные
For d = 1 To 30
number(1, d) = number(1, d) * a
Next
REM Перенос остатка, большего 10 млн., в следующий разряд массива
For d = 1 To 29
e = number(1, d) \ 10000000
number(1, d) = number(1, d) Mod 10000000
number(1, d + 1) = number(1, d + 1) + e
Next
If number(1, 30) > 10000000 Then
For d = 1 To 30
number(1, d) = 0
Next
End If
End Sub
Sub shownumber(ByVal a As Integer) REM Вывод на экран массива "number (a)"
Dim d As Integer, e As Integer, f As Integer REM Временные переменные
d = 30 REM Верхняя граница отображения числа (элемент не равен нулю)
While d > 1 And number(a, d) = 0 REM Вычисляем, где кончается ненулевая часть числа
d = d - 1
End While
REM Вывод старших разрядов
L3.Text = L3.Text & number(a, d)
REM Вывод младших разрядов
d = d - 1
For e = d To 1 Step -1 REM Какое число в массиве выводим (по одной цифре)
f = number(a, e)
L3.Text = L3.Text & f \ 1000000 & f \ 100000 Mod 10 & f \ 10000 Mod 10 & f \ 1000 Mod 10 & f \ 100 Mod 10 & f \ 10 Mod 10 & f Mod 10
Next
End Sub
End Class
Программа расчета 100!
0
// https://docs.docker.com/engine/api/v1.24/#create-a-container
POST /v1.24/containers/create HTTP/1.1
Content-Type: application/json
Content-Length: 12345
{
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"FOO=bar",
"BAZ=quux"
],
...
}
Ядро предоставляет сисколл execve. Execve принимает переменные окружения в виде массива строк A=B -
не знаю конкретных причин, почему так сделано, но скорее всего просто потому что писать хэшмапу под
это дело, которая еще и будет выкинута из памяти через относительно небольшое время - дело дорогое и
ненужное, плюс наверняка какой-нибудь лишний пердолинг со стеком.
https://man7.org/linux/man-pages/man2/execve.2.html
Го, "человеческий язык" с поддержкой обычных мап из коробки, ничтоже сумляшеся не замечает никакой
проблемы и заставляет пользователя передавать переменные окружения в том же формате, потому что у
языка не только синтаксис должен быть таким же тупым, как программист на нём и вообще мы же тут
делаем вид, что мы C, только лучше.
https://golang.org/pkg/os/exec/#example_Command_environment
Докер, "человеческий сервис" с HTTP API, использующим формат JSON с поддержкой обычных мап из коробки,
ничтоже сумляшеся не замечает никакой проблемы и заставляет пользователя передавать переменные
окружения в том же формате, потому что на программист на языке должен быть тупым, как этот язык.
https://docs.docker.com/engine/api/v1.24/#create-a-container
В результате мы имеем пачку долбоебов, из-за которых оперирующие (мапами / объектами / словарями / как угодно назовите)
нормальные люди должны вести себя как типичные гошники.
0
func verbMatches(p abac.Policy, a authorizer.Attributes) bool {
// TODO: match on verb
серёга, задолбал, давай уже в прод катить, потом свою авторизацию сделаешь
https://github.com/kubernetes/kubernetes/blob/master/pkg/auth/authorizer/abac/abac.go#L178
0
switch platform {
case "Azure":
heartbeat = "500"
default:
heartbeat = "100"
}
Инфраструктуру для мимосервисов чай тоже люди пишут.
https://github.com/openshift/cluster-etcd-operator/blob/release-4.5/pkg/cmd/render/env.go#L52-L81
[size=8]там еще и табы[/size]
0
https://m.vk.com/wall-30666517_1672469
Из исходников и документации Go убрали фразы whitelist/blacklist и master/slave.
Всё из-за протестов, которые сейчас проходят в Америке.
Фразы «blacklist» и «whitelist» заменили на «blocklist» и «allowlist», а «master» и «slave»
в зависимости от контекста на «process», «pty», «proc» и «control».
Отмечается, что изменения не приведут к нарушению обратной совместимости и путанице, так как
большая часть исправлений приходится на комментарии, тесты и внутренние переменные.