💬 Что такое JWT аутентификация и где она используется?
JWT (JSON Web Token) аутентификация — это способ передачи и проверки данных между сторонами в закодированном формате JSON. Токен состоит из трех частей: заголовка, claims и подписи, что делает его безопасным для передачи информации, так как данные могут быть проверены на подлинность, но не зашифрованы.
📌 Где используется:
JWT часто используется для:
1. Аутентификации — после успешного логина пользователю выдается JWT-токен, который прикрепляется к каждому последующему запросу для доступа к защищенным ресурсам.
2. Авторизации — токен может содержать информацию о правах доступа пользователя.
📌 Преимущества:
🔸 Позволяет безопасно передавать данные между клиентом и сервером.
🔸 JWT самодостаточен — не требует постоянной проверки на сервере, так как содержит всю необходимую информацию в себе.
🔸 Широко используется в REST API для аутентификации.
JWT (JSON Web Token) аутентификация — это способ передачи и проверки данных между сторонами в закодированном формате JSON. Токен состоит из трех частей: заголовка, claims и подписи, что делает его безопасным для передачи информации, так как данные могут быть проверены на подлинность, но не зашифрованы.
📌 Где используется:
JWT часто используется для:
1. Аутентификации — после успешного логина пользователю выдается JWT-токен, который прикрепляется к каждому последующему запросу для доступа к защищенным ресурсам.
2. Авторизации — токен может содержать информацию о правах доступа пользователя.
📌 Преимущества:
🔸 Позволяет безопасно передавать данные между клиентом и сервером.
🔸 JWT самодостаточен — не требует постоянной проверки на сервере, так как содержит всю необходимую информацию в себе.
🔸 Широко используется в REST API для аутентификации.
👍8❤1
Опрос «Как вы учитесь с помощью телефона: поделитесь своим опытом!»
Мы хотим стать ещё круче, и для этого нужно узнать, как вы учитесь!
Заполните мини-анкету о том, как вы используете мобильные приложения для прокачки знаний.
⏳ Займёт всего 5 минут — как раз успеете за чашкой кофе! А за ваш ценный вклад мы дарим 15% скидку на все курсы https://proglib.academy/ 🎁
Дорогие подписчики, мы на миссии улучшений, и вы — наш ключ! 🔑
Мы хотим стать ещё круче, и для этого нужно узнать, как вы учитесь!
Заполните мини-анкету о том, как вы используете мобильные приложения для прокачки знаний.
⏳ Займёт всего 5 минут — как раз успеете за чашкой кофе! А за ваш ценный вклад мы дарим 15% скидку на все курсы https://proglib.academy/ 🎁
Спикер: Иван Потапов – Staff Machine Learning Engineer at ShareChat. Руководит командой, отвечающей за качество рекомендаций, и имеет 8-летний опыт в сфере машинного обучения.
– Теорию вероятностей: случайные величины, математическое ожидание и дисперсию.
– Линейную алгебру: векторы, матрицы, собственные векторы и собственные значения.
– Математический анализ: производные и разложение функций в ряд Тейлора.
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.
Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!
📌 Регистрация по ссылке: https://proglib.io/w/71ad9706
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🎭 Двойная игра в Power BI: как совмещать роли разработчика и администратора
Когда твой руководитель говорит: «А теперь ты еще и администратор сервера Power BI». Гид по выживанию для разработчика, внезапно ставшего многостаночником.
Читать статью
Когда твой руководитель говорит: «А теперь ты еще и администратор сервера Power BI». Гид по выживанию для разработчика, внезапно ставшего многостаночником.
Читать статью
💬 Объясните назначение основных методов sync.Map в Go.
• Load, Store, Delete, Clear — это базовые операции, работающие так же, как методы обычной мапы в Go.
• Swap заменяет старое значение новым и возвращает предыдущее значение. Этот метод также используется внутри
• LoadOrStore проверяет наличие ключа. Если ключ существует, метод возвращает текущее значение и
• LoadAndDelete пытается загрузить значение по ключу. Если ключ существует, он удаляет его и возвращает значение, при этом
• CompareAndDelete и CompareAndSwap — это условные операции. Эти методы удаляют или заменяют значение, только если текущее значение ключа соответствует старому. Если сравнение прошло успешно, ключ удаляется или обновляется, и метод возвращает
• Range(f) позволяет итерировать по мапе, применяя функцию
Все эти методы являются атомарными, но у Range есть особенность: мапа не блокируется на всё время итерации, что позволяет другим горутинам добавлять, изменять или удалять записи во время выполнения цикла.
sync.Map
в Go предоставляет набор атомарных методов для работы с мапой, поддерживающих конкурентный доступ: • Load, Store, Delete, Clear — это базовые операции, работающие так же, как методы обычной мапы в Go.
• Swap заменяет старое значение новым и возвращает предыдущее значение. Этот метод также используется внутри
Store().
• LoadOrStore проверяет наличие ключа. Если ключ существует, метод возвращает текущее значение и
loaded
будет равно true.
Если ключа нет, он сохраняет новое значение и возвращает его, при этом loaded
будет равно false.
• LoadAndDelete пытается загрузить значение по ключу. Если ключ существует, он удаляет его и возвращает значение, при этом
loaded
будет true.
Если ключ не найден, возвращается false.
• CompareAndDelete и CompareAndSwap — это условные операции. Эти методы удаляют или заменяют значение, только если текущее значение ключа соответствует старому. Если сравнение прошло успешно, ключ удаляется или обновляется, и метод возвращает
true,
иначе — false.
• Range(f) позволяет итерировать по мапе, применяя функцию
f
к каждой паре ключ-значение. Если функция возвращает false,
итерация прекращается (аналогично break
в цикле for
). Все эти методы являются атомарными, но у Range есть особенность: мапа не блокируется на всё время итерации, что позволяет другим горутинам добавлять, изменять или удалять записи во время выполнения цикла.
👍5🌚1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
💬 Для чего предназначена директория internal в проекте на Go?
Директория
➕ Преимущества:
▪️Инкапсуляция: мы сигнализируем, что код внутри
▪️Безопасность: Go автоматически запрещает импортировать код из директории
▪️Гибкость в рефакторинге: мы можем свободно изменять код и API внутри
➖ Недостатки (особенности):
▪️Мы не можем импортировать код из
👉 Подробнее
Директория
internal
в Go — это специальная структура проекта, которая делает код, находящийся внутри неё, доступным только для внутреннего использования в текущем модуле или его подмодулях. Она служит для того, чтобы скрыть детали реализации и предотвратить случайное или преднамеренное использование этого кода другими модулями или внешними проектами.➕ Преимущества:
▪️Инкапсуляция: мы сигнализируем, что код внутри
internal
является «частным» и не предназначен для использования другими модулями.▪️Безопасность: Go автоматически запрещает импортировать код из директории
internal
, даже если кто-то захочет это сделать.▪️Гибкость в рефакторинге: мы можем свободно изменять код и API внутри
internal
, не беспокоясь о том, что сломаем зависимости внешних пользователей.➖ Недостатки (особенности):
▪️Мы не можем импортировать код из
internal
, даже если позже это потребуется. Это может вызвать путаницу для новичков, которые не знают этой особенности.👉 Подробнее
go.dev
Organizing a Go module - The Go Programming Language
👍7🌚2❤1🥰1
💬 Для чего предназначен пакет flag в Go?
Пакет flag предоставляет возможность считывать аргументы командной строки (или флаги). Он поддерживает считывание различных типов данных, включая строки, целые числа и логические значения, что делает его универсальным для различных видов приложений.
Простой пример:
👉 Подробнее
Пакет flag предоставляет возможность считывать аргументы командной строки (или флаги). Он поддерживает считывание различных типов данных, включая строки, целые числа и логические значения, что делает его универсальным для различных видов приложений.
Простой пример:
package main
import (
"flag"
"fmt"
)
func main() {
name := flag.String("name", "Worl "a name to say hello to")
flag.Parse()
fmt.Printf("Hello, %s!\n", *name)
}
go run main.go -name=Gopher
Hello, Gopher!
👉 Подробнее
Bytesizego
A Comprehensive Guide to the Flag Package
Reading command line arguments is a common use case for both CLI and API applications - Go makes this very easy to do using just the standard library via the flag package. Let's see how.
👍8❤1
Forwarded from Библиотека Go-разработчика | Golang
📹 Секреты внутреннего устройства аллокатора Go: видеогайд от Владимира Балуна
⏱️ Таймкоды:
00:00 Введение
01:49 Концепция аллокатора
06:09 Линейный аллокатор
11:22 Блочный аллокатор
16:21 Стековый аллокатор
20:18 Устройство malloc
25:01 Недостатки malloc
26:55 Устройство tcmalloc
28:28 Устройство аллокатора Go
32:55 Предсказуемая фрагментация памяти
40:33 Где аллоцируются объекты в Go
51:11 Почему аллокация на стеке работает быстрее, чем в куче
52:35 Расширение и уменьшение стека в Go
58:12 Зачем это все нужно знать (практические примеры)
01:03:37 Пулы объектов (sync.Pool)
01:06:57 Арены (memory arenas)
01:14:30 Аллокатор ОС
▶️ YouTube | Rutube | VK
⏱️ Таймкоды:
00:00 Введение
01:49 Концепция аллокатора
06:09 Линейный аллокатор
11:22 Блочный аллокатор
16:21 Стековый аллокатор
20:18 Устройство malloc
25:01 Недостатки malloc
26:55 Устройство tcmalloc
28:28 Устройство аллокатора Go
32:55 Предсказуемая фрагментация памяти
40:33 Где аллоцируются объекты в Go
51:11 Почему аллокация на стеке работает быстрее, чем в куче
52:35 Расширение и уменьшение стека в Go
58:12 Зачем это все нужно знать (практические примеры)
01:03:37 Пулы объектов (sync.Pool)
01:06:57 Арены (memory arenas)
01:14:30 Аллокатор ОС
▶️ YouTube | Rutube | VK
👍3🔥1
💬 В Go существует возможность скрывать методы с помощью встраивания структур. Как можно сделать так, чтобы метод, реализующий интерфейс, был скрыт при приведении типа, даже если он присутствует у встраиваемой структуры?
Например, есть тип
Теперь, допустим, мы хотим использовать тип
Когда мы вызываем
Хотя
Например, есть тип
A
, который имеет метод Hello()
. Когда мы передаём экземпляр A
в функцию Greet()
, приведение успешно выполнится к интерфейсу Greeter
, и будет вызван метод Hello()
.Теперь, допустим, мы хотим использовать тип
A
, но не хотим, чтобы его метод Hello()
был доступен. Мы можем скрыть его с помощью embedding.Когда мы вызываем
Greet(ANoHello{A: A{}})
, приведение типа к интерфейсу не удаётся.Хотя
ANoHello
встраивает тип A
, который имеет корректный метод Hello()
, приоритет получает неэкспортируемый тип noHello
, который скрывает метод Hello()
.🤔8👍3❤1😁1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤1👍1
Когда в Go следует использовать псевдонимы типов?
Type aliases — полезный инструмент, но их следует использовать с осторожностью. Вот несколько распространённых сценариев, в которых они могут быть особенно полезны:
🔸 Взаимодействие со сторонними библиотеками. Сторонние библиотеки часто используют сложные или неинтуитивно понятные имена типов. В таких случаях можно создать псевдоним типа, чтобы упростить работу с типами.
🔸 Повышение удобочитаемости кода для конкретной предметной области. Если проект включает в себя модели предметной области или бизнес-логику, псевдонимы типов могут повысить читаемость.
🔸 Упрощение дженериков (Go 1.18+)
В Go 1.18 появились дженерики, которые позволяют функциям работать с любым типом данных. Псевдонимы типов могут упростить использование дженериков в сигнатурах функций.
Type aliases — полезный инструмент, но их следует использовать с осторожностью. Вот несколько распространённых сценариев, в которых они могут быть особенно полезны:
🔸 Взаимодействие со сторонними библиотеками. Сторонние библиотеки часто используют сложные или неинтуитивно понятные имена типов. В таких случаях можно создать псевдоним типа, чтобы упростить работу с типами.
type JSONResponse = map[string]interface{}
🔸 Повышение удобочитаемости кода для конкретной предметной области. Если проект включает в себя модели предметной области или бизнес-логику, псевдонимы типов могут повысить читаемость.
type OrderID = string
type PaymentStatus = string
const (
Pending PaymentStatus = "pending"
Completed PaymentStatus = "completed"
Failed PaymentStatus = "failed"
)
🔸 Упрощение дженериков (Go 1.18+)
В Go 1.18 появились дженерики, которые позволяют функциям работать с любым типом данных. Псевдонимы типов могут упростить использование дженериков в сигнатурах функций.
type List[T any] = []T
func printList[T any](list List[T]) {
for _, item := range list {
fmt.Println(item)
}
}
👍12❤2
Forwarded from Библиотека нейросетей | ChatGPT, Midjourney, DeepSeek, Sora
⚡️Разыгрываем флагманский смартфон
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
💬 Для чего предназначен интерфейс
Когда мы открываем файл, буфер или сетевой поток, по умолчанию чтение или запись данных происходит последовательно, начиная с начала и продвигаясь вперёд. Но иногда нужно больше контроля, например, перескочить к конкретному месту в файле или вернуться назад и что-то перечитать.
Для этого существует интерфейс
Его функция принимает два аргумента:
• os.SeekStart: перемещает курсор относительно начала файла.
• os.SeekCurrent: перемещает курсор относительно его текущего положения.
• os.SeekEnd: перемещает курсор относительно конца файла, чаще всего с отрицательным смещением.
io.Seeker
?Когда мы открываем файл, буфер или сетевой поток, по умолчанию чтение или запись данных происходит последовательно, начиная с начала и продвигаясь вперёд. Но иногда нужно больше контроля, например, перескочить к конкретному месту в файле или вернуться назад и что-то перечитать.
Для этого существует интерфейс
io.Seeker.
Он позволяет перемещать указатель файла на другую позицию в файле, чтобы можно было начать чтение или запись с нужного места. Его функция принимает два аргумента:
offset,
который указывает, насколько нужно сместить курсор, и whence,
который задаёт точку отсчёта: • os.SeekStart: перемещает курсор относительно начала файла.
• os.SeekCurrent: перемещает курсор относительно его текущего положения.
• os.SeekEnd: перемещает курсор относительно конца файла, чаще всего с отрицательным смещением.
👍13
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
🧪 Чем заменить Postman: 5 отличных инструментов для разработки API
Postman долгое время был основным инструментом для разработки и тестирования API, но сейчас для большинства разработчиков его ограничения стали перевешивать преимущества. Рассмотрим альтернативные инструменты, которые могут предложить больше возможностей, чем Postman — даже в бесплатной версии.
👉Читаем здесь
Postman долгое время был основным инструментом для разработки и тестирования API, но сейчас для большинства разработчиков его ограничения стали перевешивать преимущества. Рассмотрим альтернативные инструменты, которые могут предложить больше возможностей, чем Postman — даже в бесплатной версии.
👉Читаем здесь
🥱3👍2
💬 Можно ли в Go преобразовывать срезы в массивы или указатели на массивы?
Такая возможность была добавлена в Go 1.20. Когда нужно преобразовать срез в массив фиксированного размера, нельзя сделать это напрямую, как показано ниже:
Чтобы преобразовать срез в массив, команда Go обновила эту функцию в Go 1.17. А с выпуском Go 1.20 процесс преобразования стал ещё проще и удобнее с помощью новых литералов:
P. S.: можно использовать
Такая возможность была добавлена в Go 1.20. Когда нужно преобразовать срез в массив фиксированного размера, нельзя сделать это напрямую, как показано ниже:
a := []int{0, 1, 2, 3, 4, 5}
var b[3]int = a[0:3]
// cannot use a[0:3] (value of type []int) as [3]int value in variable
// declaration compiler(IncompatibleAssign)
Чтобы преобразовать срез в массив, команда Go обновила эту функцию в Go 1.17. А с выпуском Go 1.20 процесс преобразования стал ещё проще и удобнее с помощью новых литералов:
// Go 1.20
func main() {
a := []int{0, 1, 2, 3, 4, 5}
b := [3]int(a[0:3])
fmt.Println(b) // [0 1 2]
}
// Go 1.17
func main() {
a := []int{0, 1, 2, 3, 4, 5}
b := *(*[3]int)(a[0:3])
fmt.Println(b) // [0 1 2]
}
P. S.: можно использовать
a[:3]
вместо a[0:3]
.❤15👍11⚡2
🤔 Нужна ли математика на собеседованиях?
🗓 Сегодня в 20:00 встречаемся в прямом эфире, чтобы обсудим роль математики на собеседовании, а также поделимся инсайдами как успешно пройти техническое собеседование! https://proglib.io/w/a1fe2494
🌟 Спикер: Станислав Петров – Senior Data Scientist.
😮 На вебинаре вы узнаете:
😱 Ошибаться — не страшно. Как ошибки и неудачные проекты могут стать ценным опытом. Почему «проекты в стол» способствуют профессиональному росту. И как преодолеть путь от junior до senior.
🙌🏻 Собеседования: можно ли к ним не готовиться?! Поделимся эффективными стратегиями подготовки и расскажем, на что работодатели обращают внимание в первую очередь.
✍️ Разберем реальные тестовые задачи, которые дают на собеседованиях на позицию Data Scientist.
🎁 Бонус: расскажем как проводить эффективное тестирование в маркетинге и их масштабируемость.
🎯 Почему важно посетить вебинар?
• Понимание математических концепций и их применение помогает успешно проходить собеседования и решать реальные задачи.
• Расширьте свой профессиональный кругозор и подготовьтесь к новым карьерным вызовам.
👉 Присоединяйтесь к нам и узнайте, как математика может помочь в вашей карьере https://proglib.io/w/a1fe2494
🗓 Сегодня в 20:00 встречаемся в прямом эфире, чтобы обсудим роль математики на собеседовании, а также поделимся инсайдами как успешно пройти техническое собеседование! https://proglib.io/w/a1fe2494
🌟 Спикер: Станислав Петров – Senior Data Scientist.
😮 На вебинаре вы узнаете:
😱 Ошибаться — не страшно. Как ошибки и неудачные проекты могут стать ценным опытом. Почему «проекты в стол» способствуют профессиональному росту. И как преодолеть путь от junior до senior.
🙌🏻 Собеседования: можно ли к ним не готовиться?! Поделимся эффективными стратегиями подготовки и расскажем, на что работодатели обращают внимание в первую очередь.
✍️ Разберем реальные тестовые задачи, которые дают на собеседованиях на позицию Data Scientist.
🎁 Бонус: расскажем как проводить эффективное тестирование в маркетинге и их масштабируемость.
🎯 Почему важно посетить вебинар?
• Понимание математических концепций и их применение помогает успешно проходить собеседования и решать реальные задачи.
• Расширьте свой профессиональный кругозор и подготовьтесь к новым карьерным вызовам.
👉 Присоединяйтесь к нам и узнайте, как математика может помочь в вашей карьере https://proglib.io/w/a1fe2494
🔥1
Forwarded from Библиотека Go-разработчика | Golang
🔥 Phuong Le представил очередную занимательную серию статей про I/O в Go:
▪️ Go I/O Readers, Writers и Data
▪️ Go I/O Closer, Seeker, WriterTo и ReaderFrom
▪️ Go I/O Readers, Writers и Data
▪️ Go I/O Closer, Seeker, WriterTo и ReaderFrom
👍2
💬 В Go есть несколько способов чтения файла построчно. Чем отличается использование bufio.Scanner от bufio.Reader для построчного чтения, и когда лучше использовать ioutil.ReadFile?
🔸
🔸
🔸
⚡️ Update: функция
🔸
bufio.Scanner
— простой и эффективный способ построчного чтения, который автоматически обрабатывает строки и подойдёт для большинства задач.🔸
bufio.Reader
с ReadString
предоставляет больше контроля над чтением, позволяя задать разделитель, что может быть полезно для нестандартных форматов.🔸
ioutil.ReadFile
используется для чтения всего файла в память, но подходит только для небольших файлов, так как при больших объёмах данных это может перегрузить память.⚡️ Update: функция
ioutil.ReadFile
устарела. Вместо нее используйте os.ReadFile
.👍17❤1🤔1