Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Погрузитесь в логическую головоломку: откручивайте болты из планок на самых сложных уровнях! Вы не только расслабитесь в конце сложного дня, но еще и натренируете свой мозг, решая увлекательные задачки. Справитесь с ролью опытного мастера? Попробуйте свои силы в режиме онлайн бесплатно и без регистрации!

Головоломка. Болты и Гайки

Казуальные, Гиперказуальные, Головоломки

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Golang + Программирование

С этим тегом используют

IT Программист Разработка IT юмор Python Картинка с текстом Юмор Все
54 поста сначала свежее
NutrientElement
NutrientElement
1 год назад
Серия Программирование

Канализация Golang(Каналы)⁠⁠

Каналы в Go — это мощный механизм для обмена данными и синхронизации между горутинами. Каналы позволяют передавать значения одной или нескольким горутинам, а также контролировать их выполнение. Каналы могут быть буферизированными или небуферизированными, однонаправленными или двунаправленными, а также закрытыми для завершения передачи.

Канализация Golang(Каналы) Программирование, Программист, Golang, IT, Познавательно

Небуферизированный канал — это канал, который не имеет внутреннего хранилища для значений. Каждая операция отправки или получения на таком канале блокирует горутину, пока другая горутина не выполнит соответствующую операцию. Это означает, что небуферизированный канал служит точкой синхронизации между горутинами и гарантирует, что значение будет доставлено полностью.

Буферизированный канал — это канал, который имеет внутреннее хранилище для значений определенной емкости. Операция отправки на таком канале блокирует горутину только в том случае, если буфер заполнен, а операция получения блокирует горутину только в том случае, если буфер пуст. Это означает, что буферизированный канал позволяет горутинам работать асинхронно и обмениваться значениями без ожидания.

Однонаправленный канал — это канал, который поддерживает только операцию отправки или только операцию получения. Однонаправленные каналы полезны для ограничения доступа к каналу и повышения безопасности кода. Однонаправленные каналы можно создавать явно с помощью ключевых слов chan<- или <-chan, или неявно с помощью преобразования типов.

Двунаправленный канал — это канал, который поддерживает обе операции отправки и получения. Двунаправленные каналы являются наиболее общими и универсальными видами каналов в Go. Двунаправленные каналы можно создавать с помощью ключевого слова chan без указания направления.

Закрытый канал — это канал, на который больше нельзя отправлять значения. Закрытый канал полезен для сигнализации о завершении работы горутин или об окончании потока данных. Закрытый канал можно создать с помощью функции close, которая принимает канал в качестве аргумента. После закрытия канала можно продолжать получать значения из него, пока буфер не опустеет, а затем получать нулевые значения типа канала. Также можно использовать второй возвращаемый параметр оператора <- для проверки, закрыт ли канал или нет.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1
[моё] Программирование Программист Golang IT Познавательно
9
Ghargatuloth
Ghargatuloth
1 год назад
Серия Алгоритмы и структуры golang

Бинарные деревья Golang pt3⁠⁠

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Hello my Dudes

Бинарное дерево - это структура данных, которая представляет собой иерархическую коллекцию элементов, называемых узлами (nodes). Каждый узел имеет значение и может иметь до двух дочерних узлов, называемых левым и правым потомками (left and right children). Узел, который не имеет родителя, называется корнем (root) дерева. Узел, который не имеет потомков, называется листом (leaf) дерева.

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Бинарные деревья могут быть использованы для решения различных задач, связанных с поиском, сортировкой, классификацией и вычислением данных. Например, бинарное дерево поиска (binary search tree) - это бинарное дерево, в котором для каждого узла выполняется условие: все значения в левом поддереве меньше значения узла, а все значения в правом поддереве больше или равны значению узла. Бинарное дерево поиска позволяет быстро находить, добавлять и удалять элементы по заданному ключу.

В голанг нет встроенного типа для бинарных деревьев, но их можно реализовать с помощью структур (structs) и указателей (pointers). Для создания бинарного дерева в голанг нужно определить тип узла и тип дерева:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Для добавления элемента в бинарное дерево поиска нужно написать функцию, которая принимает указатель на дерево и значение, которое нужно добавить. Функция должна найти подходящее место для нового узла в дереве и связать его с родителем:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Для поиска элемента в бинарном дереве поиска нужно написать функцию, которая принимает указатель на дерево и значение, которое нужно найти. Функция должна вернуть указатель на узел, содержащий искомое значение, или nil, если такого узла нет в дереве:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Для удаления элемента из бинарного дерева поиска нужно написать функцию, которая принимает указатель на дерево и значение, которое нужно удалить. Функция должна найти узел, содержащий удаляемое значение, и заменить его подходящим узлом из поддеревьев:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Могут быть косяки, не судите строго. У меня через 20 минут созвон (я их очень не люблю).

Показать полностью 10
[моё] IT Программирование Обучение Golang Длиннопост
3
587
user5395992
1 год назад

No log november⁠⁠

No log november Юмор, Программирование, IT, X (Twitter), Golang, Скриншот, IT юмор
Показать полностью 1
Юмор Программирование IT X (Twitter) Golang Скриншот IT юмор
98
Ghargatuloth
Ghargatuloth
1 год назад
Серия Алгоритмы и структуры golang

Алгоритмы поиска в гошечке (golang)⁠⁠

Привет, чувачёчки.

В этом посте я хочу поделиться с вами кодом на Go для некоторых популярных алгоритмов поиска.

Наслаждайтесь.

Линейный поиск

Линейный поиск (Linear Search) - это простой алгоритм поиска элемента в списке, массиве или коллекции. Он работает путем последовательного перебора всех элементов до тех пор, пока не будет найден искомый элемент или не будут проверены все элементы.

Описание алгоритма:

1. Начните с первого элемента списка.

2. Сравните его с искомым элементом.

3. Если элемент совпадает с искомым, верните его индекс (или значение, в зависимости от реализации).

4. Если элемент не совпадает с искомым, перейдите к следующему элементу в списке.

5. Повторяйте шаги 2-4 до тех пор, пока не найдете искомый элемент или не пройдете весь список.

Линейный поиск имеет временную сложность O(n), где "n" - это количество элементов в списке. В худшем случае алгоритм может проверить все элементы, поэтому его производительность ухудшается с ростом размера списка.

Помимо своей простоты, линейный поиск также может применяться в неотсортированных списках или там, где нет возможности использовать более сложные алгоритмы поиска, такие как двоичный поиск. Однако для больших объемов данных и поиска в отсортированных структурах обычно рекомендуется использовать более эффективные алгоритмы.

Алгоритмы поиска в гошечке (golang) IT, Обучение, Golang, Алгоритм, Программирование, Длиннопост

Бинарный поиск

Бинарный поиск (Binary Search) - это эффективный алгоритм поиска элемента в отсортированном списке, массиве или коллекции. Он использует стратегию "разделяй и властвуй", что позволяет быстро находить искомый элемент.

Описание алгоритма:

1. Начните с определения границ поиска. Установите начальную границу (left) в начало списка и конечную границу (right) в его конец.

2. Найдите средний элемент между начальной и конечной границей.

3. Сравните средний элемент с искомым значением.

4. Если средний элемент совпадает с искомым значением, возвращаем его индекс (или значение, в зависимости от реализации).

5. Если средний элемент больше искомого значения, обновите конечную границу (right) на позицию перед средним элементом и перейдите к шагу 2.

6. Если средний элемент меньше искомого значения, обновите начальную границу (left) на позицию после среднего элемента и перейдите к шагу 2.

7. Повторяйте шаги 2-6 до тех пор, пока не будет найден искомый элемент или пока начальная граница (left) не станет больше конечной границы (right).

Бинарный поиск имеет временную сложность O(log n), где "n" - это количество элементов в списке. Это означает, что в худшем случае алгоритм будет выполняться за логарифмическое время, что является значительно более эффективным, чем линейный поиск.

Однако для применения бинарного поиска список должен быть отсортирован по возрастанию или убыванию. В противном случае результаты будут непредсказуемыми. Бинарный поиск особенно полезен, когда требуется повторно выполнять поиск в отсортированных структурах данных, таких как массивы или списки, с минимальными затратами на время выполнения.

Алгоритмы поиска в гошечке (golang) IT, Обучение, Golang, Алгоритм, Программирование, Длиннопост

Прыжковый поиск

Прыжковый поиск (Jump Search) - это алгоритм поиска элемента в отсортированном списке, массиве или коллекции. Он использует идею деления интервала на блоки и прыжки через эти блоки для быстрого приближения к искомому элементу.

Описание алгоритма:

1. Задайте размер прыжка (jump size). Обычно он выбирается как квадратный корень из общего количества элементов в списке.

2. Начните с первого элемента списка.

3. Сравните текущий элемент с искомым значением.

4. Если текущий элемент равен искомому значению, верните его индекс (или значение, в зависимости от реализации).

5. Если текущий элемент больше искомого значения или достигнут конец списка, перейдите к следующему шагу.

6. Сделайте прыжок через блоки, перемещаясь вперед на размер прыжка.

7. Повторяйте шаги 3-6 до тех пор, пока текущий элемент не станет больше искомого значения или вы превысите границы списка.

8. Если текущий элемент больше искомого значения, выполните линейный поиск в предыдущем блоке с момента последнего прыжка.

9. Если элемент найден, верните его индекс (или значение, в зависимости от реализации).

10. Если элемент не найден, верните -1 (или другое значение, указывающее отсутствие элемента).

Прыжковый поиск имеет временную сложность O(√n), где "n" - количество элементов в списке. Он более эффективен, чем линейный поиск, но менее эффективен, чем бинарный поиск. Однако прыжковый поиск особенно полезен, когда список имеет равномерное распределение данных и доступ к элементам осуществляется за постоянное время.

Важно отметить, что прыжковый поиск также требует отсортированного списка для правильного функционирования.

Алгоритмы поиска в гошечке (golang) IT, Обучение, Golang, Алгоритм, Программирование, Длиннопост

В общем: да прибудет с вами сила.

Постепенно цикл буду дополнять.

Показать полностью 3
[моё] IT Обучение Golang Алгоритм Программирование Длиннопост
3
22
A1es
A1es
2 года назад
Лига программистов

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект⁠⁠

Вся суть моего поста вытекает из заголовка. Тем, кто интересуется программированием, сменой профессии или пристально следит за футболом будет, наверное, интересно. Не буду также скрывать, что помимо легкого заряда мотивации для читателя, я хочу разделить удовлетворение от проделанной работы и возможно получить ценный фидбэк.

Как всё начиналось. На дворе конец 2018 года, мне 27 лет, за плечами неоконченное высшее и работа приемщиком в сервисном центре одного небольшого прибрежного городка нашей необъятной. Платят хоть и копейки, но работа не пыльная и всегда есть свободное время. Из-за нахождения в бесконечном цикле дом-работа-дом с одним выходным в неделю, меня настигло ощущение того, что я прожигаю свою жизнь впустую. Возникло острое желание занять себя чем-нибудь полезным.

Просмотр ютуба и ленты в социальных сетях мне изрядно поднадоел. Начал накидывать варианты и в какой-то момент в моей голове проскальзывает мысль:

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

Идея мне почему-то очень понравилась. Я так далеко зашел в своих мечтах, что уже работал на спортс.ру(прим. крупнейший спортивный интернет-портал РФ), писал статьи, а может и вовсе рулил отделом контента. Да что там отделом, я захватил всё спортивное медиа пространство! Дудь 2.0

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

Вру. Не отпустило. Помимо любви к футболу, я питаю самые теплые чувства к цифрам и статистике. Цифры — это необъяснимая страсть моего гуманитарного мозга. Над специализацией блога я особо не думал, ответ для меня был почему-то очевиден. Было решено примерить на себя роль скаута и поискать футбольные дарования по всему земному шару.

Как я себя чувствовал, когда шерстил статистику по сотням игроков.

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

Такова была отправная точка. Дан самый среднестатистический ум, подушка безопасности в размере 0 руб. 0 коп. и желание что-то изменить в своей жизни, но об этом ниже.

В процессе поиска данных для блога я столкнулся с некоторыми проблемами. Большинство статистических сайтов либо не обладают нужным функционалом для удобного поиска, либо предоставляют достаточно скудные данные. Именно тогда у меня появилась мысль. А почему бы не сделать качественный агрегатор спортивной статистики? Открытый сервис, который в удобной форме предоставляет возможность энтузиастам, контент-мэйкерам, а возможно и вовсе сотрудникам клубов, анализировать данные. У меня было всего несколько серьезных преград:

  1. Отсутствие денег. Абсолютный ноль. В кармане был космический вакуум.

  2. Отсутствие знакомых программистов, которых я мог бы заинтересовать своей идеей.

В раздумьях над этой дилеммой я встретил новый 2019 год.

Озарение. Раз я решил делать сервис бесплатно или “околобесплатно”, то мне нужно завести нужные знакомства. А как это сделать? Правильно, — устроиться на работу в IT компанию. Проще простого.

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

Так уж получилось, что во время учебы на первом курсе университета я подрабатывал фрилансом, делая всякие баннеры, логотипчики на заказ. Подрабатывал громковато звучит, по факту я неплохо умел пользоваться фотошопом, а моё портфолио насчитывало до 10 работ.

Новый год — новая жизнь, подумал я, снял с кредитки деньги на аренду комнаты и поехал в областной центр устраиваться в это ваше “айти” дизайнером. Каково было моё удивление, что в областном центре не так много компаний которым вообще нужны дизайнеры. Компании же в которых есть штат программистов можно было на пальцах одной руки не очень удачливого фрезеровщика посчитать. Я сразу обозначил себе, что искать работу могу не больше 2 недель, большего мне не позволит мое финансовое положение. И если первую неделю я ещё пытался откликаться на сколько-нибудь “айтишные” вакансии, то к началу второй я уже прозванивал и откликался на “Кладовщик в обувной магазин”, “Администратор в магазин одежды” и т.д.

Мне повезло, утром понедельника раздался звонок, девушка HR на другом конце трубки сообщила мне, что представляет компанию франчайзи 1С и что они ищут консультантов. Это наверное, покажется странным, предложить дизайнеру роль консультанта по 1С, но видимо других кандидатов у неё не было. Когда я откликался на вакансию этой компании, то видел, что на hh были вывешены вакансии не только “1Сников”, но и веб-разработчиков, поэтому я, не раздумывая, согласился на собес. Логика была весьма проста, — главное попасть в компанию, а там разберусь. Собеседование было на общую адекватность, каких-то особых технических познаний не требовалось. Спустя 3 месяца меня ждало осознание суровой реальности, — консультант 1С не имеет совершенно никакой возможности взаимодействия с мобильной или веб-разработкой 🙁.

Так пролетел год, за который я успел забыть для чего были все эти потуги с переездом. По желанию трудящихся я могу отдельно рассказать об этом этапе во всех подробностях. Если коротко, то я научился писать элементарные запросы и немного ПОНИМАТЬ код.

Шок-контент для тех, кто не в курсе. Типичный код 1С выглядит как-то так:

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

Да-да, настоящий православный язык программирования. 

Для меня было понятно, что для дальнейшего роста надо ехать в столицу. Так, в феврале 2020 года, я по отработанной ранее схеме беру в банке 50 тысяч и перевожусь в московское подразделение на позицию “внедренца”, которую мне дали авансом. В трудовой книжке уже красовалась должность —  “инженер-программист”, а не какой-то там “консультант”. Солидно. Жаль только, что от инженера у меня на тот момент была только линейка на рабочем столе, а от программиста — старый потрепанный свитер. Моя работа заключалась в том, чтобы разъезжать по клиентам, устанавливать наше ПО, настраивать, собирать функциональные требования. Периодически прилетали задачи подредактировать какой-то отчёт/обработку. Такие задачи мне очень нравились, так как хоть и немного, но я мог потренироваться в написании кода.

Так прошло полтора года, я заматерел и нашёл новую работу (где работаю по сегодняшний день). В целом мне нравится моя работа, одно “но” — 1С это очень узкоспециализированный язык решающий определенный спектр бизнес-задач к которому должна лежать душа, а я не ощущаю этого. В свободное от работы время я начал изучать и другие языки: python, golang ❤️.

По мере изучения других языков я вспомнил и о проекте, который лежал в чертогах моей памяти и с которого, по сути, всё начиналось. Оставалась только одна проблема — “сварщик-то я не настоящий”.

Одно дело почитать книжку о синтаксисе и посмотреть пару плейлистов по разработке в ютубе, а другое —  запилить сервис статистики… но глаза уже загорелись и как говорится: “Голова боится, а руки тоже боятся”.

Планы на проект были грандиозные, однако для MVP пришлось выкинуть всё что только можно было, оставить самый минимум от изначальной задумки.

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

У меня был план, и я его придерживался:

  1. Дизайн. Отрисовать удобный интерфейс каким я его себе представляю. Хотелось сделать просто, но в то же время максимально функционально.

  2. Back-end. Спроектировать базу данных, написать парсер. Реализовать универсальные методы API с возможностью отборов по любым собранным данным.

  3. Front-end. Сверстать страницы, реализовать формирование запросов и отрисовку полученных данных с клиента к нашей API.

  4. Рассказать заинтересованной общественности о созданном сервисе. ← Сейчас мы тут 🙂

Если с первым и последним пунктом проблемы я не видел, то второй, а в особенности третий пункт меня, мягко говоря, пугали. Смотря на этот план, в голове проносилось - “фару мне на лоб, чтобы и ночью косил”. Поэтому волевым решением было принято  заказать фронт на фрилансе, а на себя взять всё остальное. Человек я ленивый, но очень увлеченный, если мне что-то приспичило, я это сделаю во что бы то ни стало. В итоге после 3 месяцев работы Back-end был готов.

Разместил объявление по программированию фронт части сервиса на самой популярной бирже и сразу получил отклик от студента из Киргизии, который сказал, что работы там на вечерок под пивко(утрирую, конечно, но суть передал). По рукам! И вот что в итоге у нас вышло:

Те, кто играет или когда-то играл в FIFA, Football Manager, FIFA Manager (RIP 🥲), наверняка пользовались чем-то подобным. Существуют сервисы которые позволяют искать футболистов по виртуальным игровым характеристикам и показывают потенциал игрока. Nerostat делает тоже самое, только с реальными данными, cколько игрок совершает отборов, обводок, процент выигранных единоборств и прочее. И всё это в удобной форме, как в интернет-магазине. Сейчас поиск ограничен 12 лигами, но в будущем я хочу это исправить, пока работа ведется над полнотой и достоверностью текущих турниров. Кому это будет интересно? Людям кто пристально следит за футболом, создает контент для футбольных пабликов.

Из особенностей представленной статистики, я решил идти по пути fbref.com, на котором в отличии от других сайтов вроде whoscored, данные указывается как «действие за 90 минут игрового времени». Мне кажется, что такое представление является более объективным, в отличии от «действий за матч», так как два игрока могут отыграть 5 матчей, но один отыграет все 450 минут, а другой выходящий на замену 100... В таком случае пытаться сравнивать результативные действия в разрезе количества матчей будет не совсем корректным.

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

В перспективе хочется добавить возможность сравнения игроков и выгрузку результатов в виде красивой инфографики. В общем вектор развития присутствует)

Возможно у вас есть идеи/замечания, возможно не представлен какой-то игрок или всплыл какой-то баг, пишите, я буду очень рад обратной связи.

Перечитал написанное, показалось, что статья выглядит примерно так 🙂

Как футбольный блог изменил мою жизнь, я вкатился в IT и написал свой первый проект Разработка, Программирование, Футбол, Статистика, Проект, Golang, Python, 1С, Мотивация, Длиннопост

Если в комментариях будут какие-то вопросы, я с лихвой компенсирую слитую концовку “Игры престолов”).

Технические вопросы о проекте, про опыт работы в 1С. Спрашивайте не стесняйтесь, буду рад ответить. Всем добра, мечтайте и не сдавайтесь!

Показать полностью 8
[моё] Разработка Программирование Футбол Статистика Проект Golang Python 1С Мотивация Длиннопост
10
8
deliro
deliro
2 года назад

Любителям слушать музыку в машине — flashfiller⁠⁠

Всем привет!


Недавно возникло желание иметь замену музыке по блютузу в машине в виде флешки. Флешка под рукой оказалась на 16гб, а музыки на жёстком диске — 90гб. Как накидать музыки так, чтобы заполнить всю флешку, но чтобы всех исполнителей было примерно равномерно? Не вручную же это делать, тем более, в папке музыки папка исполнителя, там папка с альбомом и только там — mp3.

Не буду долго томить, в тот же вечер за часок накидал программу, а сейчас немного улучшил её и решил поделиться здесь, вдруг кому-то ещё будет полезно.


Итак, flashfiller:
1. Ищет в папке все файлы с нужным суффиксом (например, .mp3) на любую глубину папок
2. Перетасовывает их
3. Наполняет флешку файлами без вложенностей на тот размер, который вы указали

Таким образом, если у вас огромная фонотека, можно скинуть с себя рутину по набору песен на флешку, записать рандомно, а когда надоест — форматировать и записать заново, но рандомно песни выберутся уже другие.


Вот так выглядит процесс записи:

Любителям слушать музыку в машине — flashfiller Программирование, Golang, Музыка, Авто, Длиннопост

Вот так выглядит фонотека на жёстком диске:

Любителям слушать музыку в машине — flashfiller Программирование, Golang, Музыка, Авто, Длиннопост

А вот так выглядит результат записи на флешку:

Любителям слушать музыку в машине — flashfiller Программирование, Golang, Музыка, Авто, Длиннопост

Дополнительные возможности:

* Искать файлы по произвольному суффиксу (или нескольким). По умолчанию ".mp3", если запустить .\flashfiller.exe -pattern=mp3,flac,ogg ... — будет искать .flac, .mp3 и .ogg
* Пропускать файлы с живыми выступлениями. Часто в дискографиях есть бонусные песни или целые альбомы с пометкой "live". Запуск с параметром -nolive заставит программу пропускать файлы, в имени или родительской папке которых есть слово "live"
* Пропускать файлы размером меньше, чем заданный. Например, -drop=1M будет пропускать файлы размером меньше одного мегабайта. Это могут быть всякие сайленс-филлеры, интро и прочее что-то, что в отрыве от альбома звучит странно
* Проверять md5-хэш после записи. После записи каждой песни сверяет md5 файла-источника и записанного на флешку. После всей записи выдаст ошибки по тем файлам, чьи md5 не совпали. Включен по умолчанию. Выключить: .\flashfiller.exe -nomd5
* Показывает прогресс, сколько времени прошло и сколько осталось (с последним конечно же врёт, как и windows)


Полный пример запуска:

.\flashfiller.exe -drop=1M -nolive -nomd5 -pattern=mp3,flac 14.5G "D:\Music" "E:\"
Найдёт все mp3 и flac файлы в D:\Music, которые больше 1МБ, не-live, случайно перетасует, наберёт на 14.5ГБ (или меньше, если в D:\Music меньше 14.5ГБ музыки) и запишет в E:\, не проверяя хэши файлов

Я не рекомендую пользоваться параметром -nomd5. Хоть ним запись идёт быстрее, но если флешка китайская или видавшая виды, то файл может записаться криво или не записаться вовсе

(на всякий случай, программа дублирует все параметры текстом после запуска и громко ругается, если параметры её не устраивают)


Инструкция:

Программа не имеет графического интерфейса, поэтому запускать нужно через командную строку. Для этого, если вы используете Windows, откройте папку, куда скачан flashfiller.exe, нажмите на пустое место правой кнопкой мыши с зажатым Shift'ом -> открыть окно комманд и впишите туда команду: .\flashfiller.exe <опции> <размер> <путь откуда брать файлы> <путь куда класть файлы>

Пример, которого хватит в 99% случаев: .\flashfiller.exe -nolive -drop=1M "D:\Music" "E:\"

Чтобы долго не вписывать пути, можно найти папку в проводнике, кликнуть правой кнопкой мыши с зажатым shift по папке и выбрать "Скопировать как путь"


Где скачать:
Скачать можно с https://github.com/deliro/flashfiller/releases/tag/0.1, выбрав нужную платформу. Для windows x64 это flashfiller.exe, для macOS — flashfiller-darwin_amd64 (или flashfiller-darwin_arm64, если у вас новый мак на M1)


Никому не интересные технические подробности:
Программа написана на Golang, поэтому компилируется под любую кофеварку. Для удобства скомпилированные бинарники под большинство платформ лежат на github. Код также открыт и лежит на github, поэтому при наличии недоверия (ещё бы доверять рандомному чуваку с Пикабу) и ручек, способных заставлять компухтер компилировать, программу можно скомпилировать самому.


Программа (мне каждый раз стрёмно называть скрипт на 500 строк программой, правда) писалась для себя и под себя, поэтому развития не обещаю.


Буду рад любым отзывам, особенно если возникли ошибки. Спасибо!

Показать полностью 3
[моё] Программирование Golang Музыка Авто Длиннопост
3
ce777x
ce777x
2 года назад
Лига программистов

Golang⁠⁠

Всём доброго времени суток, подскажите Golang в качестве первого яп, реально? Или лучше начать с python?

P.S. да я один из дохулиарда людей которые захотели в IT! Т.к. не вижу в потенциальных 5-7 годах никаких перспектив кроме IT.

Работа Программирование Программист Python IT Golang Текст
84
4
tproger.official
tproger.official
3 года назад
Типичный программист

Что-то пошло не так...⁠⁠

Что-то пошло не так...
IT юмор IT Программирование Гриффины Rust Vim Golang Debian
11
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии