Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
package main
func main() {
for i := 0; i < 3; i++ {
defer func() { print(i) }()
}
for i := range [3]int{} {
defer func() { print(i) }()
}
}
Ответ
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
В репозитории содержатся переписанные скрипты по хакингу на Go из следующих книг:
– Violent Python
– Black Hat Python
– Security with Go
– Python Web Penetration Testing Cookbook
– asecuritysite
– Криптография с Python
– Black Hat Go
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
LURE (Linux User REpository)
LURE – инструмент на GO для внедрения AUR во все дистрибутивы, отличные от Arch Linux
Он может загрузить репозиторий, собрать в нем пакеты с помощью bash-скрипта, похожего на PKGBUILD, а затем установить их с помощью системного менеджера пакетов.
LURE написан на чистом Go и не имеет никаких зависимостей.
В настоящее время LURE поддерживает
🖥 Github
@Golang_google
LURE – инструмент на GO для внедрения AUR во все дистрибутивы, отличные от Arch Linux
Он может загрузить репозиторий, собрать в нем пакеты с помощью bash-скрипта, похожего на PKGBUILD, а затем установить их с помощью системного менеджера пакетов.
LURE написан на чистом Go и не имеет никаких зависимостей.
В настоящее время LURE поддерживает
apt
,
pacman
,
apk
,
dnf
,
yum и zypper
.
curl https://www.arsenm.dev/lure.sh | bash
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Польская запись — это форма записи арифметических, логических и алгебраических выражений, в которой операция располагается слева от операндов. Выражения в польской записи могут обходиться без скобок, однако мы оставим скобки для наглядности.
Например, выражение в польской записи выглядит как
(* 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
}
Пишите свое решение в комментариях👇 и ставьте 👍, если интересен такой формат.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
# Очередь на go с REST интерфейсом
## ТЗ
Реализовать брокер очередей в виде веб сервиса. Сервис должен обрабатывать 2 метода:
1. PUT /queue?v=message
Положить сообщение message в очередь с именем queue (имя очереди может
быть любое), пример:
curl -XPUT http://127.0.0.1/pet?v=cat
curl -XPUT http://127.0.0.1/pet?v=dog
curl -XPUT http://127.0.0.1/role?v=manager
curl -XPUT http://127.0.0.1/role?v=executive
в ответ {пустое тело + статус 200 (ok)}
в случае отсутствия параметра v - пустое тело + статус 400 (bad request)
2. GET /queue
Забрать (по принципу FIFO) из очереди с названием queue сообщение и вернуть в теле http запроса, пример (результат, который должен быть при выполненных put’ах выше):
curl http://127.0.0.1/pet => cat
curl http://127.0.0.1/pet => dog
curl http://127.0.0.1/pet => {пустое тело + статус 404 (not found)}
curl http://127.0.0.1/pet => {пустое тело + статус 404 (not found)}
curl http://127.0.0.1/role => manager
curl http://127.0.0.1/role => executive
curl http://127.0.0.1/role => {пустое тело + статус 404 (not found)}
при GET-запросах сделать возможность задавать аргумент timeout
curl http://127.0.0.1/pet?timeout=N
если в очереди нет готового сообщения получатель должен ждать либо до момента прихода сообщения либо до истечения таймаута (N - кол-во секунд). В случае, если сообщение так и не появилось - возвращать код 404. Получатели должны получать сообщения в том же порядке как от них поступал запрос, если 2 получателя ждут сообщения (используют таймаут), то первое сообщение должен получить тот, кто первый запросил.
Порт, на котором будет слушать сервис, должен задаваться в аргументах командной строки.
Запрещается пользоваться какими либо сторонними пакетами кроме стандартных библиотек. (задача в написании кода, а не в использовании чужого)
Желательно (но не обязательно) весь код расположить в одном go-файле (предполагается, что решение будет не больше 500 строк кода) для удобства проверки, никаких дополнительных файлов readme и т.п. не требуется, создание классической структуры каталогов (cmd/internal/...) не требуется.
Комментарии приветствуются и помогут нам понять ход Ваших мыслей при разработке.
Лаконичность кода будет восприниматься крайне положительно, не нужна "гибкость" больше, чем требуется для решения именно этой задачи, не нужны логи процесса работы программы (только обработка ошибок), никакого дебага и т.д... чем меньше кода - тем лучше!
Оцениваться корректность реализации (заданные условия выполняются),архитектурная составляющая (нет лишних действий в программе, только
решающие задачи программы), лаконичность и понятность кода (субъективно, конечно, но думайте о том, насколько будет понятен ваш. код для других, это куда более важно в командной разработке, чем сложный "крутой" код).
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Пусть идентификатор — это последовательность латинских букв и цифр, начинающаяся с буквы.
Известно, что в некоторой строке записаны идентификаторы, разделённые произвольным количеством пробелов. При этом строка может начинаться и заканчиваться произвольным количеством пробелов. Назовём такую строку предложением.
Лексический анализ предложения заключается в выделении из него последовательности записанных в нём идентификаторов. В результате лексического анализа получается массив целых чисел, каждое из которых соответствует одному из идентификаторов. Целые числа назначаются идентификаторам произвольно, но так, чтобы разным идентификаторам соответствовали разные числа, а равным идентификаторам — одинаковые числа.
Пример. Пусть дано предложение
alpha x1 beta alpha x1 y
Тогда на выходе лексического анализатора может получиться последовательность чисел
1 2 3 1 2 4
Здесь число 1 соответствует идентификатору alpha, число 2 — идентификатору x1, число 3 — идентификатору beta, а число 4 — идентификатору y.
Необходимо разработать функцию lex, выполняющую лексический анализ предложения:
func lex(sentence string, array AssocArray) []int {
...
}
В качестве первого параметра функция lex принимает предложение, а второй параметр задаёт ассоциативный массив, который должен быть использован внутри функции для хранения соответствия идентификаторов и целых чисел.
Ассоциативный массив, который можно передавать в функцию lex, должен реализовывать интерфейс AssocArray:
type AssocArray interface {
Assign(s string, x int)
Lookup(s string) (x int, exists bool)
}
Метод Assign добавляет в ассоциативный массив словарную пару.Метод Lookup выполняет поиск словарной пары по ключу и возвращает два значения: x и exists. Если словарной пары с указанным ключом в массиве нет, то exists принимает значение false. В противном случае exists равен true, а x — связанное с ключом значение.
Составьте программу lex.go, демонстрирующую работоспособность функции lex. В качестве ассоциативных массивов для тестирования функции lex нужно использовать список с пропусками и АВЛ-дерево.
Пишите свой ответ в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы любите игры и язык Go так, как мы, то предлагаем вам скачать и попробовать данный движок для разработки 3D игр.
⚙️ Project
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Gopeed – высокоскоростной загрузчик, с открытым исходным кодом
Поддерживает:
▪HTTP
▪BitTorrent
▪Magnet
Работает почти на всех девайсах и системах.
#Go #downloader
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Пусть имеется некоторый набор формул, задающих зависимости между переменными. Например, объём пирамиды, в основании которой лежит прямоугольник со сторонами и , а высота равна полусумме сторон основания, определяется следующим набором формул:
V = S*h / 3
S = a * b
a, b = 10, 15
h = (a + b) / 2
Обратите внимание на то, что каждая формула состоит из левой и правой частей, разделённых знаком «=». Левая часть является списком переменных, а правая часть — списком соответствующих этим переменным выражений. Переменные в левой части и выражения в правой части разделяются запятыми.
Формулы могут быть записаны в любом порядке, но, если в них нет циклических зависимостей, их можно расположить в порядке, в котором нужно выполнять вычисления.
Составьте программу, осуществляющую топологическую сортировку формул.
Для решения задачи нужно построить орграф, вершинами которого являются формулы, а дуги задают зависимости между ними. То есть, если формула зависит от формулы , то в графе существует дуга . Затем следует выполнить топологическую сортировку вершин этого орграфа, то есть расположить вершины в таком порядке, чтобы дуги вели от бо́льших вершин к меньшим. Этот порядок, как не трудно догадаться, совпадает с порядком превращения «серых» вершин в «чёрные» в процессе обхода графа в глубину.
Формулы подаются в программу через стандартный потока ввода. Они отделяются друг от друга символом перевода строки. Выражения в составе формул содержат знаки четырёх арифметических операций, круглые скобки, десятичные числа и имена переменных. Имя переменной — это последовательность латинских букв и десятичных цифр, начинающаяся с буквы.
Программа должна выводить сообщение «syntax error», если какая-нибудь формула содержит синтаксическую ошибку, или если некоторая переменная присутствует в левой части нескольких формул, или если не существует формулы для вычисления какой-нибудь переменной.
Программа должна выводить сообщение «cycle» в случае обнаружения циклической зависимости формул. Для обнаружения циклической зависимости следует проверять наличие обратных дуг при обходе графа в глубину. Напомним, что обратная дуга ведёт в «серую» вершину.
Если ошибки в формулах не обнаружены, то программа должна выводить в стандартный поток вывода отсортированный набор формул. В случае существования нескольких вариантов взаимного расположения формул, требуется вывести любой из них.
Пишите свой ответ в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Service Weaver позволяет писать приложения в виде модульного монолита и деплоить в виде набора микросервисов.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
N кандидатов готовятся к двум космическим экспедициям на Марс. Поскольку экспедиции будут продолжаться несколько лет, а их участники окажутся в замкнутом пространстве небольшого объёма, то важное значение приобретает психологическая совместимость членов экипажа.
Путём тестирования были установлены пары кандидатов, присутствие которых в одной и той же экспедиции было бы нежелательным. Результаты тестирования отражены в таблице размера
NxN.
Если на пересечении -той строки и $j$-го
столбца таблицы находится знак «+», то участие -го и $j$-го
кандидатов в одной экспедиции нежелательно.Составьте программу, разделяющую кандидатов на две группы для участия в экспедициях. Если такое разделение невозможно, программа должна выводить сообщение «No solution». В противном случае, программа должна выводить номера кандидатов, принадлежащих первой группе. Первой группой мы будем считать группу, в которой меньше кандидатов.
Естественно, хорошо написанная программа должна стремиться к тому, чтобы размеры групп не очень сильно отличались. Поэтому, если возможно несколько разбиений на группы, программа должна выбирать разбиение с минимальной разностью количеств кандидатов в группах. При этом в случае, если разбиений с минимальной разницей всё равно получается несколько, для определённости выбирается разбиение, в котором первая группа лексикографически меньше, чем первые группы остальных разбиений.
Программа должна считывать со стандартного потока ввода количество кандидатов и матрицу размера
NxN
. Например, для входных данных8
- - + - - - - -
- - - + - - - -
+ - - - - - - +
- + - - - + - -
- - - - - - - -
- - - + - - - -
- - - - - - - +
- - + - - - + -
программа должна выводить
1 2 6 8
Пишите свой ответ в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Это большая презентация, в которой собрано более 800 слайдов по Docker. Основные темы:
— история контейнеров и Docker,
— установка Docker и создание первых контейнеров,
— первый запуск контейнера и переименование контейнера,
— CMD и ENTRYPOINT,
— задачи по написанию Dockerfiles.
Сохраняйте себе в закладки, чтобы не потерять:
https://container.training/intro-selfpaced.yml.html#1
#docker
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Top it channels
⭐️ Нейронные сети
@data_analysis_ml - data science
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.
👣 Golang
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go
🖥 SQL базы данных
@sqllib - библиотека баз данных
@sqlhub - повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
🖥 Machine learning
@ai_ml – погружение в нейросети, ai, Chatgpt, midjourney, машинное обучение.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседованию.
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
@Machinelearning_Jobs - чат работы мл
🖥 Python
@pythonl - главный канал самого популярного языка программирования.
@pro_python_code – учим python с ментором.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий
🖥 Javascript / front
@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.
🖥 Java
@javatg - выучить Java с senior разработчиком по профессиональной методике.
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
🖥 Linux
@linux -топ фишки, гайды, уроки по работе с Linux.
@linux chat - чат linux для обучения и помощи.
@linux_read - бесплатные книги linux
👷♂️ IT работа
@hr_itwork -кураторский список актуальных ит-ваканнсии
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust
#️⃣ c# c++
C# - объединяет лучшие идеи современных языков программирования
@csharp_cplus чат
С++ - Универсальность. Возможно, этот главный плюс C++.
📓 Книги
@programming_books_it - большая библиотека. программиста
@datascienceiot -ds книги
@pythonlbooks - python библиотека.
@golang_books - книги Golang
@frontendbooksit - front книги
@progersit - ит-шпаргалки
@linux_read - Linux books
@java_library - Java books
🖥 Github
@github_code - лучшие проекты с github
@bigdatai - инструменты по работе с данными
🖥 Devops
Devops - специалист общего профиля, которому нужны обширные знания в области разработки.
📢 English for coders
@english_forprogrammers - Английский для программистов
@data_analysis_ml - data science
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go
@sqllib - библиотека баз данных
@sqlhub - повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
@ai_ml – погружение в нейросети, ai, Chatgpt, midjourney, машинное обучение.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседованию.
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
@Machinelearning_Jobs - чат работы мл
@pythonl - главный канал самого популярного языка программирования.
@pro_python_code – учим python с ментором.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий
@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.
@javatg - выучить Java с senior разработчиком по профессиональной методике.
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
@linux -топ фишки, гайды, уроки по работе с Linux.
@linux chat - чат linux для обучения и помощи.
@linux_read - бесплатные книги linux
👷♂️ IT работа
@hr_itwork -кураторский список актуальных ит-ваканнсии
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust
#️⃣ c# c++
C# - объединяет лучшие идеи современных языков программирования
@csharp_cplus чат
С++ - Универсальность. Возможно, этот главный плюс C++.
📓 Книги
@programming_books_it - большая библиотека. программиста
@datascienceiot -ds книги
@pythonlbooks - python библиотека.
@golang_books - книги Golang
@frontendbooksit - front книги
@progersit - ит-шпаргалки
@linux_read - Linux books
@java_library - Java books
@github_code - лучшие проекты с github
@bigdatai - инструменты по работе с данными
Devops - специалист общего профиля, которому нужны обширные знания в области разработки.
@english_forprogrammers - Английский для программистов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubeshark. Golang идеален для таких систем диагностики, как Kubeshark, приложения для упрощения отслеживания трафика подов Kubernetes. У него красивый интерфейс, как в инструментах разработчика на Opera, имеются двоичные файлы Windows, Linux и MacOS.
Хорошо подходият для отслеживания трафика для диагностики проблем между фронтендом и бэкендом. Kubeshark — незаменимый инструмент.
Phoneinfoga — это фреймворк для упрощения сбора информации о телефонных номерах, определения, существует ли номер и из какой он страны. Другие интересные применения — автоматизация процесса регистрации и выявление мошенничества.
MOSINT — это сборщик информации об адресах электронной почты. В нем проверяется адрес почты, публичные учетные записи в соцсетях, общедоступные базы данных о нарушениях, связанные почтовые сообщения и домены, выполняется поиск DNS.
Хотя проект полезен для масштабных целей безопасности, я защищаю им свои письма от онлайн-опасностей.
Finch — Это CLI для разработки контейнеров.
PocketBase — еще один интересный бэкенд-сервер. Состоит из одного файла, встроенной SQLite. Удобно применять и легко освоить.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
job.pdf
1 MB
🔥Если вы ищете удаленную работу, неполный рабочий день или фриланс, этот список для вас.
В нем собран огромный список работодателей по всему миру, которые работают удаленно и часто набирают сотрудников.
Не забудьте подтянуть английский.
@Golang_google
В нем собран огромный список работодателей по всему миру, которые работают удаленно и часто набирают сотрудников.
Не забудьте подтянуть английский.
@Golang_google