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

Грибники и Кланы

Симуляторы, Стратегии, Фермы

Играть

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

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

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

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

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

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

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

Как лаконично проверить структуру массива или кортежа?⁠⁠

1 месяц назад
Как лаконично проверить структуру массива или кортежа?

С выходом C# 11 стали доступны списковые паттерны (list patterns), которые позволяют сопоставлять коллекции по элементам, как с начала, так и с конца — просто, читаемо и без лишних условий.

Первое условие проверяет, что массив начинается на 1, 2, заканчивается 10, и содержит что угодно посередине (..). Это особенно полезно при валидации данных, когда важна структура последовательности, но не все элементы. Списковые паттерны упрощают такие проверки, делая код более декларативным и понятным.

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

Списковые паттерны также поддерживают вложенные проверки, сопоставление с отбросом (_), и комбинацию с другими паттернами C#. Они интегрируются с switch-выражениями и pattern matching, предоставляя единообразный способ работы с различными структурами данных. Это существенно сокращает количество boilerplate-кода и улучшает читаемость при работе с массивами, списками, кортежами и другими индексируемыми коллекциями.

Ещё больше полезного контента в телеграмм канале EasyProger - https://t.me/easyprogers

Показать полностью
[моё] Тестирование Программа Python Программирование Искусственный интеллект Csharp Dotnet
3
6
user11249120
user11249120
Лига программистов

C# Mind Map: Вся мощь языка в одной карте!⁠⁠

1 месяц назад
C# Mind Map: Вся мощь языка в одной карте!

Только что разобрал подробную mind map по C#, и она покрывает абсолютно всё, что нужно знать разработчику! 💡

От базовых типов данных до продвинутых концепций ООП — это полноценный справочник для всех, кто изучает C# или хочет систематизировать знания.

Ключевые блоки:
▪️ Система типов: Value & Reference типы, примитивы, пользовательские типы
▪️ Коллекции: List, Dictionary, Queue, Stack, SortedList
▪️ LINQ: Select, Where, Aggregate, Join, GroupBy — всё для работы с данными
▪️ Операторы: от арифметических до перегрузки и lambda-выражений
▪️ ООП: классы, интерфейсы, наследование, полиморфизм, инкапсуляция
▪️ Statements: циклы, условия, обработка ошибок, управление потоком
▪️ Expressions: от lambda до встроенных выражений

Самое крутое — карта показывает связи между концепциями. Не нужно учить всё в хаотичном порядке, видишь полную структуру языка!

В 2025 году C# остаётся одним из самых востребованных языков благодаря мощной экосистеме .NET, кроссплатформенности и современным возможностям вроде async/await, pattern matching и minimal APIs.

Сохраняй и делись с теми, кто прокачивает свои навыки в C#! 📌

#csharp #mindmap #programming

🌐 Телеграм канал EasyProger - https://t.me/easyprogers

Показать полностью 1
[моё] Тестирование Программа Программирование Csharp Python
13
user11249120
user11249120
Искусственный интеллект

Как создать QR-Код на примере ЯП C# (в слайдах)⁠⁠

1 месяц назад

Результат

Ещё больше полезных проектов и контента в телеграмме - https://t.me/easyprogers

Показать полностью 6
[моё] Картинки Программирование Искусственный интеллект Нейронные сети Csharp Длиннопост
3
JeanI
JeanI
Серия Шлюха программирование

Абстрактный класс⁠⁠

2 месяца назад

Как запомнить абстрактный класс в C# за 5 минут? Шлюхи, бордель и ваш мозг в огне! ??

Привет, кодер-лох! ?? Забыл, что такое абстрактный класс в C#? Не плачь в углу с учебником — сегодня я объясню это так, что даже твой кот запомнит. И да, здесь будет много шлюх, мат и сломанные мозги. Поехали!

Что такое абстрактный класс?

Коротко и по-быстрому:

— Нельзя создать экземпляр (т.е. new AbstractClass() — иди нахрен, ошибка).

— Может содержать абстрактные методы (т.е. "сделай это, сука, но я не скажу как").

— Наследники обязаны всё реализовать (иначе — вылетишь как проститутка из борделя за лень).

Мнемоника для тупых: "Мадам-шлюха и её девки"

Представь бордель. В нём есть:

Мадам-мразь (она же абстрактный класс):

— Сама не трахает клиентов (нельзя new Мадам() — только трясёт кокосами и кричит: "Вы что, охуели? Я же мадам, а не шлюха!").

— Говорит правила: "Все девки должны уметь 'трахать по-итальянски' и 'делать массаж с перцем'!" (это ваши абстрактные методы).

— Если не научишься — вылетишь (иначе класс-наследник будет абстрактным, а это путь в никуда, бро).

Девки-проститутки (ваши наследники):

— Обязаны выполнять правила мадам (реализовывать абстрактные методы).

— Могут добавить своё (например, "трах с вибратором — +500 к баблу").

— Если не сделают — вылетят на мороз (ошибка компиляции: "Ты не девка, ты лузер!").

Пример кода, чтобы мозг не взорвало

// Это МАДАМ. Она не шлюха, а УЧИТЕЛЬНИЦА ПОХАБНЫХ НАУК.

abstract class Мадам {

public abstract void ТрахнутьПоItaliani(); // Абстрактный метод — без реализации!

public virtual void ДатьНапиток() {

Console.WriteLine("Виски с цианидом — бесплатно");

} // Виртуальный метод — можно переопределить, но не обязательно.

}

// Это ДЕВКА-ЛУЗЕРКА, которая не выучила урок.

class Ленчик : Мадам {

public override void ТрахнутьПоItaliani() {

Console.WriteLine("Ленчик трахает как сдохшая рыба... Мадам в ярости!");

}

// Забыла про ДатьНапиток()? Не страшно — виртуальный метод можно не трогать.

}

// Это ДЕВКА-ПРОФИ, которая знает своё дело.

class Катя_С_Тату : Мадам {

public override void ТрахнутьПоItaliani() {

Console.WriteLine("Катя в деле — клиенты плачут от счастья!");

}

public override void ДатьНапиток() {

Console.WriteLine("Катя даёт текилу... и сразу к делу!");

}

}

Почему это работает?

— Мадам = abstract class — без неё бордель (программа) рухнет.

— Девки = наследники — без них мадам просто тряпка с криками.

— Правила = абстрактные методы — если не выполнить, получишь баттхерт от компилятора.

Каждый раз, когда забудешь про abstract, вспоминай:

"Мадам не трахается сама, но заставляет всех трахаться правильно!" 💦

Вывод

Теперь ты никогда не спутаешь абстрактный класс с обычным. Помни:

— Нет new — нет проблем (и никаких шлюх в одиночку).

— Правила есть правила (абстрактные методы обязаны реализовать).

— Если не научишься — вылетишь (как Ленчик после первой же смены).

P.S. Если коллега спросит, как запомнить ООП — шли его сюда. Пусть тоже посмеётся... или заревнует. 😈

Ставь лайки, если теперь C# для тебя — как бордель, а не кошмар экзамена. И да пребудет с тобой... override!

Удачного собеседования, малята.

Показать полностью
[моё] Обучение Программирование Csharp Мат Текст
6
JeanI
JeanI
Серия Шлюха программирование

Инвариантность, контравариантность, ковариантность⁠⁠

2 месяца назад

Как шлюхи объясняют ковариантность в C# — запомнишь на всю жизнь (и стыдно будет забыть)! ??

Привет, кодер-неудачник! Ты когда-нибудь путал ковариантность, контравариантность и вообще зачем это всё нужно? Не стесняйся — все мы там бывали. То in, то out, то компилятор орёт, что «cannot convert...», а ты как дурак смотришь на экран и думаешь: «Бля, это же как с этими... шлюхами в том сериале!»

Ну что ж, сегодня я объясню тебе всё на пальцах, но с использованием шлюх. Потому что если не на эмоциях — не запомнишь.

Почему это больно?

В C# есть три сценария работы с типами:

- Ковариантность (out) — когда ты можешь подсунуть более конкретный тип вместо общего.

- Контравариантность (in) — когда ты можешь подсунуть более общий тип вместо конкретного.

- Инвариантность — когда никакой хуйни не будет, только строгий тип.

Звучит как магия? Нет, братан, это проституция в ООП.

Шлюха №1: Ковариантность (out)

Фишка: «Вышла с олигархом — считай, что с мужиком».

Представь:

- У тебя есть шлюха, которая работает только с олигархами (Derived).

- Но ты её записываешь в список «работает с мужиками» (Base).

- Почему можно? Потому что олигарх — это мужик, а не наоборот!

Код для тупых:

class Мужик {}

class Олигарх : Мужик {} // Наследуется, да

IEnumerable<Олигарх- олигархи = new List<Олигарх>();

IEnumerable<Мужик- мужики = олигархи; // Работает! Ковариантность (`out`)

- IEnumerable<T> — ковариантен благодаря out T. Ты выпускаешь (out) олигархов как мужиков.

Мнемоника:

- «Out — шлюха выебала олигарха, считай, что мужика!

- Если вышла с Rolls-Royce — значит, с машиной вышла».

Шлюха №2: Контравариантность (in)

Фишка: «Ебёт мужика — считай, что олигарха».

Теперь:

- У тебя есть шлюха, которая работает со всеми мужиками (Base).

- Ты её нанимаешь для олигархов (Derived).

- Почему можно? Потому что мужик может оказаться олигархом (а не наоборот)!

Код для тупых:

Action<Мужик- обработатьМужика = (m) =- Console.WriteLine("Ебашим мужика");

Action<Олигарх- обработатьОлигарха = обработатьМужика; // Работает! Контравариантность (`in`)

- Action<T> — контравариантен благодаря in T. Ты принимаешь (in) мужиков как олигархов.

Мнемоника:

- «In — шлюха ебёт мужика, считай, что олигарха!

- Если взяла любого в подъезде — может, это Ротенберг».

Шлюха №3: Инвариантность (никакой in/out)

Фишка: «Ты — олигарх? Нет? Тогда вали нахуй!».

А теперь представь самую принципиальную шлюху:

- Она работает ТОЛЬКО с олигархами (Derived).

- Если ты предложишь ей просто мужика (Base) — она скажет: «Ты шо, еблан? У меня контракт только с Ротенбергом!».

- И даже если олигарх придёт — она не согласится считать его «просто мужиком».

Код для тупых:

List<Олигарх- олигархи = new List<Олигарх>();

List<Мужик- мужики = олигархи; // ОШИБКА! Инвариантность.

- List<T> — инвариантен. Нету in/out - никаких преобразований. Тип жёстко фиксирован, как принципы шлюхи после 30.

Мнемоника:

- «Инвариантность — шлюха не ебёт никого, кроме олигархов.

- Ни мужиков, ни бомжей — только паспорт Ротенберга!»

Как не облажаться?

- out = выходи с олигархом, но считай его мужиком - сужение типа (Derived - Base).

- in = входи к мужику, но считай его олигархом - расширение типа (Base - Derived).

- Без in/out = только как в контракте - никаких хитростей (инвариантность).

Лайфхак:

Каждый раз, когда пишешь List<T> или Dictionary<TKey, TValue>, вспоминай:

- «Если шлюха не ставит галочку «подходит для всех мужчин» в профиле — значит, она инвариантна. Ищи другую».

Почему это гениально?

Потому что:

1. Эмоции = память. Ты не забудешь про шлюх, даже если забудешь синтаксис C#.

2. Юмор снимает стресс. Теперь компилятор будет кричать «invariant», а ты улыбнёшься и поправишь код.

3. Ты станешь легендой в команде. «Братан, а как ты запомнил контравариантность?» — «Да шлюхами, чё».

P.S.

Если после этого ты всё равно запутаешься — значит, ты слишком трезвый. Или не смотрел «Горько!».

А если запомнил — ставь лайк, комментируй «Спасибо, теперь шлюхи в моём коде», и не забудь: в C# всё решают контракты... и проститутки. ??

P.P.S. Инвариантность — это когда шлюха сказала: «Ты не Ротенберг? Тогда даже не звони». А ковариантность/контравариантность — это когда она согласна на компромисс. Выбирай, какая тебе ближе.

P.P.P.S. Автор не несёт ответственности за ваши мысли о ковариантности на свиданиях. Но если помогло — пиши в личку, устроим контравариантный квест. ??

Показать полностью
[моё] Обучение Программирование Csharp Мат Текст Длиннопост
4
Andrey.Walz
Andrey.Walz
IT-юмор

Чо кодеры, кто где на этом графике?⁠⁠

3 месяца назад
<!--noindex--><a href="https://pikabu.ru/story/cho_koderyi_kto_gde_na_yetom_grafike_13160573?u=https%3A%2F%2Fx.com%2Fkai_fall%2Fstatus%2F1964686027005870278&t=https%3A%2F%2Fx.com%2Fkai_fall%2Fstatus%2F1964686027005870278&h=c2862a29505903a7a19e8e27b87c8acd7226abeb" title="https://x.com/kai_fall/status/1964686027005870278" target="_blank" rel="nofollow noopener">https://x.com/kai_fall/status/1964686027005870278</a><!--/noindex-->

https://x.com/kai_fall/status/1964686027005870278

X (Twitter) Юмор Golang Rust Typescript C++ Csharp Perl Java Си
44
20
Demid.Aleks
Demid.Aleks
Лига Разработчиков Видеоигр
Серия Создание первой игры на Стиме

Первая игра на Стиме (1 часть)⁠⁠

5 месяцев назад

Привет. Меня зовут Демид, мне 30 лет. Почти 10 лет я проработал в зоопарке — сначала в Калининграде, потом в Варшаве. Где-то полтора года назад стал интересоваться геймдевом.

Сперва стал изучать тридешку, потом заинтересовался геймдизайном, а в конце перешёл на программирование. Как-то пришло осознание, что всех может не быть в проекте, а вот без программиста игры не будет в принципе. Зависеть от настроения и желания других не хотелось — так и выбрал путь.

Моделил в Blender и сопутствующих программах. Даже что-то получалось:

1/9

Со временем нашел группу людей с которыми стал делать учебные проекты и втянулся в геймдизайн, так как нам не хватало геймдиза. Читал статьи и книги, пробовал себя и в этой роли.

Из учебного проекта

Из учебного проекта

И в конце пришло получив урок, что если прогер уходит из проекта, проект заканчивается, начал изучать C# и Unity.

Для себя выбрал C# и Unity. Как по мне, для первых проектов и знакомства с индустрией он куда лучше подходит. До того работал в Блендере и сопутствующих программах.

Планирую написать серию постов, поэтому начну с того, на каком этапе я сейчас.

Сейчас игра, которую я придумал, в которой выступаю лидом и кодером — в раннем доступе на Стиме. Она довольно простенькая и ещё сыровата (на то и ранний доступ), но уже играется.

Всех, кто захочет потестить и дать обратную связь, приглашаю на страницу в Стиме.

Следующий пост напишу через пару дней.

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

Сообщество никак не связано с финансами, так что это не реклама, а просто приглашение:))

Показать полностью 11
[моё] Gamedev Unity Разработка Csharp Steam Игры Программирование Истории из жизни Длиннопост
15
Jelizaveta

Как читать Excel в C#: Excel в DataTable и базу данных⁠⁠

5 месяцев назад
Как читать Excel в C#: Excel в DataTable и базу данных

Работа с файлами Excel является распространенной задачей во многих приложениях на C#, будь то для анализа данных, отчетности или интеграции с базами данных. В этом блоге мы рассмотрим, как читать файлы Excel в C# с использованием бесплатной библиотеки Excel для .NET. Мы охватим:

  1. Чтение рабочего листа Excel в C#

  2. Импорт данных в DataTable

  3. Сохранение данных Excel в базу данных (MySQL)

Библиотека C# для чтения Excel

Для работы с файлами Excel в C# мы будем использовать Free Spire.XLS для .NET — мощную библиотеку, которая позволяет разработчикам создавать, читать, редактировать и конвертировать файлы Excel без зависимости от Microsoft Office.

Установка

Установите библиотеку через диспетчер пакетов NuGet:

Install-Package FreeSpire.XLS

Чтение рабочего листа Excel в C#

Чтобы прочитать рабочий лист Excel, вы можете использовать следующий фрагмент кода на C#. Этот пример демонстрирует, как загрузить файл Excel и пройтись по его строкам и столбцам.

Основные шаги

  1. Создайте объект Workbook: Инициализируйте рабочую книгу для работы.

  2. Загрузите файл Excel: Укажите путь к вашему файлу Excel.

  3. Получите доступ к рабочему листу: Получите первый рабочий лист из книги.

  4. Получите диапазон данных: Извлеките диапазон ячеек, содержащих данные.

  5. Переберите строки и столбцы: Выведите значение каждой ячейки.

using Spire.Xls;

namespace ReadExcelData

{

class Program

{

static void Main(string[] args)

{

// Создайте объект Workbook

Workbook wb = new Workbook();

// Загрузите существующий файл Excel

wb.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

// Получите первый рабочий лист

Worksheet sheet = wb.Worksheets[0];

// Получите диапазон ячеек, содержащих данные

CellRange locatedRange = sheet.AllocatedRange;

// Переберите строки

for (int i = 0; i < locatedRange.Rows.Length; i++)

{

// Переберите столбцы

for (int j = 0; j < locatedRange.Rows[i].ColumnCount; j++)

{

// Получите данные конкретной ячейки

string cellValue = locatedRange[i + 1, j + 1].Value?.ToString() ?? "N/A";

// Выравните вывод с шириной 22

Console.Write($"{cellValue,-22}");

}

Console.WriteLine();

}

}

}

}

Импорт данных из Excel в DataTable

Чтобы импортировать данные из файла Excel в DataTable, вы можете использовать следующий фрагмент кода. Этот пример связывает импортированные данные с DataGridView для удобного визуального отображения.

Основные шаги

  1. Создайте форму: Используйте приложение Windows Forms.

  2. Загрузите файл Excel: Как и в предыдущем разделе, загрузите ваш файл Excel.

  3. Экспортируйте данные в DataTable: Используйте метод ExportDataTable для конвертации данных.

  4. Свяжите DataTable с DataGridView: Отобразите данные в элементе управления DataGridView.

using Spire.Xls;

using System.Data;

namespace ReadExcelIntoDataTable

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

// Создайте объект Workbook

Workbook wb = new Workbook();

// Загрузите существующий файл Excel

wb.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

// Получите первый рабочий лист

Worksheet sheet = wb.Worksheets[0];

// Экспортируйте данные из рабочего листа в DataTable

DataTable dataTable = sheet.ExportDataTable();

// Свяжите DataTable с DataGridView

dataGridView1.DataSource = dataTable;

// Освободите ресурсы

wb.Dispose();

}

}

}

Сохранение данных Excel в базу данных (MySQL)

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

Основные шаги

  1. Загрузите документ Excel: Как и в предыдущих шагах, загрузите ваш файл Excel.

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

  3. Соберите данные: Извлеките каждую запись из строк данных.

  4. Подключитесь к MySQL: Установите соединение с базой данных MySQL.

  5. Создайте таблицу базы данных: Динамически создайте SQL для создания таблицы на основе заголовков.

  6. Вставьте данные: Используйте параметризованные запросы для вставки каждой записи в базу данных.

using Spire.Xls;

using MySql.Data.MySqlClient;

namespace ExcelToMySQL

{

class Program

{

static void Main(string[] args)

{

// Создайте объект Workbook

Workbook wb = new Workbook();

// Загрузите документ Excel

wb.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

// Получите конкретный лист

Worksheet sheet = wb.Worksheets[0];

// Извлеките заголовки

List<string> headers = new List<string>();

for (int col = 1; col <= sheet.LastColumn; col++)

{

string header = sheet.Range[1, col].Value?.ToString();

// Удалите пробелы, чтобы избежать конфликтов с именами столбцов MySQL

string cleanHeader = header?.Replace(" ", "");

headers.Add($"`{cleanHeader}`");

}

// Извлеките данные

List<List<string>> data = new List<List<string>>();

for (int row = 2; row <= sheet.LastRow; row++)

{

List<string> record = new List<string>();

for (int col = 1; col <= sheet.LastColumn; col++)

{

record.Add(sheet.Range[row, col].Value?.ToString() ?? string.Empty);

}

data.Add(record);

}

// Установите соединение с базой данных MySQL

string connectionString = "server=localhost;user=root;password=admin;database=excel_db;";

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

connection.Open();

// Создайте таблицу с динамическими столбцами на основе заголовков

List<string> columns = new List<string>();

foreach (string header in headers)

{

// Предполагая, что все значения заголовков являются VARCHAR для простоты; настройте типы по мере необходимости

columns.Add($"{header} VARCHAR(255)");

}

// Создайте таблицу в базе данных

string columnsSql = string.Join(", ", columns);

string createTableQuery = $@"

CREATE TABLE IF NOT EXISTS my_table (

id INT AUTO_INCREMENT PRIMARY KEY,

{columnsSql}

)";

// Выполните запрос на создание таблицы

using (MySqlCommand createCommand = new MySqlCommand(createTableQuery, connection))

{

createCommand.ExecuteNonQuery();

}

// Подготовьте SQL-запрос INSERT

string placeholders = string.Join(", ", new string[headers.Count].Select(h => "?"));

string insertQuery = $"INSERT INTO my_table ({string.Join(", ", headers.Select(h => h.Trim('`')))}) VALUES ({placeholders})";

// Вставьте данные в таблицу

foreach (List<string> record in data)

{

using (MySqlCommand insertCommand = new MySqlCommand(insertQuery, connection))

{

for (int i = 0; i < record.Count; i++)

{

insertCommand.Parameters.AddWithValue($"@Param{i}", record[i]);

}

insertCommand.ExecuteNonQuery();

}

}

}

Console.WriteLine("Данные успешно экспортированы!");

}

}

}

Заключение

В этой статье мы рассмотрели, как читать данные из файлов Excel с помощью C#, импортировать эти данные в DataTable и сохранять их в базу данных MySQL. Используя библиотеку Free Spire.XLS, разработчики могут эффективно обрабатывать файлы Excel без необходимости в Microsoft Office. Этот подход может значительно улучшить рабочие процессы обработки данных в приложениях на C#.

Показать полностью
Csharp Dotnet Microsoft Excel Длиннопост
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии