Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19

Парсинг сайта steamcommunity

05.05.2018, 01:02. Показов 9102. Ответов 14

Студворк — интернет-сервис помощи студентам
Доброго времени суток ребят! Ситуация такая... Нужно спарсить данные с сайта, НО у меня ничего не выходит, очевидно что дело в моём незнании что и как, поэтому и решил обратиться сюда. Вообщем, искал, пробовал, страдал)) Ничего толком не работает, посмотрел с десяток видео и форумов. (чаще всего попадался именно этот)

Скачал для проекта HtmlAgilityPack. Парсинг с сайта

Пытался спарсить всё четно.
Вообщем, что я хотел сделать.
Чтобы прога качала сайт, и по тегу в коде отбирала те или иные значения и выводила их в label1 к примеру.
Заранее благодарю за любую помощь.
Пишу на C#, буду честен,язык толком не знаю, писал всякие приколюхи на юньке, не более))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2018, 01:02
Ответы с готовыми решениями:

Парсинг данных с сайта или страницы сайта
Здравствуйте, добрые люди! Есть задача спарсить данные с страницы соц сети. Или просто со страницы с помощью js. На пхп не предлагать....

CURL при отправке запроса на steamcommunity.com идет очистка кук
Использую обертку над курлом - https://github.com/Mashape/unirest-php. При отправке любого запроса с куками(полученными после авторизации)...

Парсинг сайта
Доброго времени суток! Пытаюсь парсить html страницу, но столкнулся с проблемой: разметка, которую я могу посмотреть в инструментах...

14
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,844
Записей в блоге: 1
05.05.2018, 11:32
wfru, на такой неопределенный вопрос ответа тебе не дадут. Назови сайт который собираешься парсить или выложи html код одной из страниц. Далее напиши что именно нужно вытащить. Не помешает также привести код своих попыток.
0
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19
05.05.2018, 19:32  [ТС]
Спарсить хочу профиль в стим https://steamcommunity.com/id/mishafuse/

Код которым пытался (это не первая попытка, были ещё, но от них кода уже нет)
C#
1
2
3
4
5
6
7
8
9
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                WebClient wc = new WebClient();
                wc.Encoding = Encoding.UTF8;
                doc.LoadHtml(wc.DownloadString("https://steamcommunity.com/profiles/76561198071901954"));
                foreach (HtmlAgilityPack.HtmlNode n in doc.DocumentNode.SelectNodes("//span[@class='actual_persona_name']"))
                {
                    string part = n.InnerText.Replace(" ", "");
                    label1.Text = part;
                }
Добавлено через 3 часа 33 минуты
Хочу спарсить ник, левл (картинку) либо же просто лвл, и фотку
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
05.05.2018, 21:15
Лучший ответ Сообщение было отмечено wfru как решение

Решение

Цитата Сообщение от wfru Посмотреть сообщение
Хочу спарсить ник, левл (картинку) либо же просто лвл, и фотку
Спарсить можно так (не берусь утверждать, что это самый лучший вариант, но он рабочий):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
      private async void button1_Click(object sender, EventArgs e)
      {
         string url = this.textBox1.Text;
         using(WebClient client = new WebClient())
         {
            //качаем страницу
            byte[] data = null;
            await Task.Run(() => data = client.DownloadData(url));
            string text = Encoding.UTF8.GetString(data);
 
            //парсим ник
            string nickname = @"<span\s+class=""actual_persona_name"">([^"">]+)</span>";
            this.label1.Text = Regex.Match(text, nickname).Groups[1].Value;
 
            //парсим уровень
            string level = @"<span\s+class=""friendPlayerLevelNum"">([^"">]+)</span>";
            label2.Text = "Уровень " + Regex.Match(text, level).Groups[1].Value;
 
            //парсим адрес аватара и качаем аватар
            string avatar = @"<div\s+class=""playerAvatarAutoSizeInner""><img\s+src=""([^"">]+)""></div>";
            byte[] jpg = client.DownloadData(Regex.Match(text, avatar).Groups[1].Value);
            this.pictureBox1.Image = (Bitmap)Bitmap.FromStream(new MemoryStream(jpg));
         }
      }

Проект: wfru.zip
В образце нет обработок ошибок. Это лишь пример.

P. S. когда скачаете проект, не забудьте его распаковать в папку и только потом запускать.
Не запускайте из архива. Будет ошибка.
1
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19
05.05.2018, 21:32  [ТС]
Качаю net 4.7.x ибо у меня 4.6.x )))
Спасибо тебе огромное)) Это именно то что я искал, буду разбираться))
+rep
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,844
Записей в блоге: 1
05.05.2018, 22:50
Цитата Сообщение от Fleder Посмотреть сообщение
C#
1
2
3
byte[] data = null;
await Task.Run(() => data = client.DownloadData(url));
string text = Encoding.UTF8.GetString(data);
Почему не так:
C#
1
2
byte[] data = await client.DownloadDataTaskAsync(url);
string text = Encoding.UTF8.GetString(data);
или вот так:
C#
1
2
client.Encoding = Encoding.UTF8;
string text = await client.DownloadStringTaskAsync(url);
??
3
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
05.05.2018, 22:53
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Почему не так
На коленке состряпал запрос.
Конечно же ваша версия будет более правильной.
Там надо было ещё и аватарку асинхронно качать. Забыл добавить...
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,844
Записей в блоге: 1
05.05.2018, 22:57
Цитата Сообщение от Fleder Посмотреть сообщение
На коленке состряпал запрос.
Ок Сам тем же грешу время от времени
0
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19
06.05.2018, 01:53  [ТС]
Я не в курсе что и на что влияет, работает и то и то, я доволен, спасибо вам ребят)))
Сейчас пытаюсь сделать чтобы можно было не только SteamID 64 писать, а ещё и обычный id))
Печально что такая прога никому не нужна и в ней смысла нет)

Добавлено через 25 минут
Ребят, возникла проблема, при попытке парсинга через другую ссылку (по id) выдаёт ошибку. ( проблему решил (ниже) редактировать не буду, мб кому понадобиться)
ошибка

Вот тот же самый сайт, только с другой ссылкой.
https://steamcommunity.com/id/jeovie/

Ваш код с парсингом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
private async void button1_Click(object sender, EventArgs e)
        {
            if (checkBox2.Checked) // парсинг по id 64 (работает)
            {
                texturl = this.textBox1.Text + this.textBox2.Text;
            }
            else
            {
                texturl = this.textBox4.Text + this.textBox4.Text;
            }
 
            if (checkBox1.Checked)  // парсинг по id профиля (не работает)
            {
                texturl = this.textBox4.Text + this.textBox4.Text;
            }
            else
            {
                texturl = this.textBox1.Text + this.textBox2.Text;
            }
            string url = texturl;
            using (WebClient client = new WebClient())
            {
                //качаем страницу
                client.Encoding = Encoding.UTF8;
                string text = await client.DownloadStringTaskAsync(url);
 
                //парсим ник
                string nickname = @"<span\s+class=""actual_persona_name"">([^"">]+)</span>";
                this.labdel1.Text = Regex.Match(text, nickname).Groups[1].Value;
 
                //парсим уровень
                string level = @"<span\s+class=""friendPlayerLevelNum"">([^"">]+)</span>";
                labdel2.Text = Regex.Match(text, level).Groups[1].Value;
 
                //парсим адрес аватара и качаем аватар
                string avatar = @"<div\s+class=""playerAvatarAutoSizeInner""><img\s+src=""([^"">]+)""></div>";
                byte[] jpg = client.DownloadData(Regex.Match(text, avatar).Groups[1].Value);
                this.pictureBox1.Image = (Bitmap)Bitmap.FromStream(new MemoryStream(jpg));
 
                button1.Enabled = false;
                button2.Enabled = true;
                button2.Visible = true;
                textBox2.Enabled = false;
                textBox3.Enabled = false;
            }
        }
Код с выбором парсинга
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public bool Checked { get; set; }
        string texturl = null;
 
        public Form1()
        {
            InitializeComponent();
            this.textBox1.Text = "https://steamcommunity.com/profiles/";
            this.textBox2.Text = "76561198071901954";
            this.textBox4.Text = "https://steamcommunity.com/id/";
            this.textBox3.Text = "jeovie";
            this.button1.Text = "Спарсить профиль";
            this.labdel1.Text = "";
            this.labdel2.Text = "";
Если нужно, могу проект целиком скинуть

Добавлено через 13 минут
Проблему решил.
Вот я дурак, я мискликнул и не заметил, проблема была в этом.

C#
1
 texturl = this.textBox4.Text + this.textBox4.Text;
А т.к у меня стоит
C#
1
2
3
            this.textBox4.Text = "https://steamcommunity.com/id/";
            this.textBox3.Text = "jeovie
// для того чтобы не приходилось писать полный адрес а только id";
Значит прога пыталась парсить https://steamcommunity.com/id/... ty.com/id/
Весьма забавно.

Добавлено через 37 минут
Появилась новая проблема, как сделать парсинг скрыт профиль или нет?
https://steamcommunity.com/id/12312 вот обычный скрытый профиль, там написано что он скрыт красным текстом.
Я попытался написать код кося глаз на ваш, но не работает(((
C#
1
2
3
4
5
6
7
8
9
public Form1()
        {
            InitializeComponent();
            this.labdel3.Text = "";
        }
 
//парсим скрыт профиль или нет
                string privateprofile = @"<div\s+class=""profile_private_info"">([^"">]+)</div>";
                this.labdel3.Text = Regex.Match(text, privateprofile).Groups[1].Value;
p.s label называется labdel т.к это label ток с прозрачным фоном ( нашёл так же на этом форуме)
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
06.05.2018, 07:49
Цитата Сообщение от wfru Посмотреть сообщение
Появилась новая проблема, как сделать парсинг скрыт профиль или нет?
Вот так можно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
      private async void button1_Click(object sender, EventArgs e)
      {
         string url = this.textBox1.Text;
         using(WebClient client = new WebClient())
         {
            //качаем страницу асинхронно
            client.Encoding = Encoding.UTF8;
            string text = await client.DownloadStringTaskAsync(url);
 
            //парсим ник
            string nickname = @"<span\s+class=""actual_persona_name"">([^"">]+)</span>";
            this.label1.Text = Regex.Match(text, nickname).Groups[1].Value;
 
            //парсим уровень
            string level = @"<span\s+class=""friendPlayerLevelNum"">([^"">]+)</span>";
            this.label2.ForeColor = Color.Black;
            label2.Text = "Уровень " + Regex.Match(text, level).Groups[1].Value;
 
            //парсим адрес аватара и качаем аватар асинхронно
            string avatar = @"<div\s+class=""playerAvatarAutoSizeInner""><img\s+src=""([^"">]+)""></div>";
            byte[] data = await client.DownloadDataTaskAsync(Regex.Match(text, avatar).Groups[1].Value);
            this.pictureBox1.Image = (Bitmap)Bitmap.FromStream(new MemoryStream(data));
 
            //парсим скрыт профиль или нет
            string privateprofile = @"<div\s+class=""profile_private_info"">([^"">]+)</div>";
            if(Regex.Match(text, privateprofile).Groups[1].Length > 0)
            {
               this.label2.ForeColor = Color.Firebrick;
               this.label2.Text = "Этот профиль скрыт.";
            }
 
         }
      }
Обратите внимание, что теперь скачивание аватара тоже происходит асинхронно.
Чтобы форма не подвисала при этом.
Посмотрите проект. Переделайте под себя. wfru_1.zip
1
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19
06.05.2018, 20:50  [ТС]
Спасибо, всё работает супер! И действительно, форма перестала провисать)))))

Последнее что хочу спросить...
Где можно посмотреть как правильно писать адрес ?
C#
1
@"<div\s+class=""profile_private_info"">([^"">]+)</div>"
И
C#
1
(Regex.Match(text, privateprofile).Groups[1].Length > 0)
Ибо постоянно писать на форум не вариант, и нужно самому учить, но сам я информации не то что бы не нашёл, а она весьма не понятна, в том плане что в "учебнике" одно и не работает так как нужно, а у вас другое а работает как надо.
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
06.05.2018, 20:57
Цитата Сообщение от wfru Посмотреть сообщение
Последнее что хочу спросить...
Где можно посмотреть как правильно писать адрес ?
Не совсем понял вопрос...
Если вы спрашиваете про регулярные выражения в .NET, то ознакомиться можно тут.
0
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19
07.05.2018, 03:04  [ТС]
Доделал твой код, теперь текст меняет цвет в зависимости от статуса

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//парсим статус в сети или нет
                string onlinestatus = @"<div\s+class=""profile_in_game_header"">([^"">]+)</div>";
                this.labdel3.Text = Regex.Match(text, onlinestatus).Groups[1].Value;
                if (this.labdel3.Text == "Currently Online")
                {
                    this.labdel3.ForeColor = Color.DeepSkyBlue;
                    this.labdel3.Text = "В сети";
                }
                else
                {
                }
 
                if (this.labdel3.Text == "Currently Offline")
                {
                    this.labdel3.ForeColor = Color.Red;
                    this.labdel3.Text = "Не сети";
                }
                else
                {
                }
 
                if (this.labdel3.Text == "Currently In-Game")
                {
                    this.labdel3.ForeColor = Color.GreenYellow;
                    this.labdel3.Text = "В игре";
                }
                else
                {
                }
Выглядит прикольно

Добавлено через 4 часа 5 минут
Fleder, да это именно то что я искал)) Спасибо ещё раз!! :3

Добавлено через 38 минут
Паххаха, как бы смешно это не звучало, появилась ещё проблема...

Нужно спарсить текст ниже ника https://steamcommunity.com/id/mishafuse под классом header_real_name ellipsis

Написал такой код
C#
1
2
3
//test header_real_name ellipsis
                string test = @"<div\s+class=""header_real_name\s+ellipsis""><bdi>([...]+)</bdi>";
                this.labdel4.Text = Regex.Match(text, test).Groups[1].Value;
Пробовал так-же
C#
1
2
3
//test header_real_name ellipsis
                string test = @"<div\s+class=""header_real_name ellipsis""><bdi>([^"">]+)</bdi>";
                this.labdel4.Text = Regex.Match(text, test).Groups[1].Value;
[/CSHARP]

и
C#
1
2
3
//test header_real_name ellipsis
                string test = @"<div\s+class=""header_real_name\sellipsis""><bdi>([...]+)</bdi>";
                this.labdel4.Text = Regex.Match(text, test).Groups[1].Value;
[/CSHARP]

И ещё парочку вариантов... Никакой не работает, в labdel4 ничего не выводит...
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
07.05.2018, 07:32
Цитата Сообщение от wfru Посмотреть сообщение
Никакой не работает, в labdel4 ничего не выводит...
Ну... тут маленько другая ситуация.
Надо найти тег, вложенный в другой тег, и между этими тегами есть (могут быть) другие символы:
перевод строки \n, возврат каретки \r, горизонтальная табуляция \t.
Это надо учесть:
C#
1
2
3
//test header_real_name ellipsis
string test = @"<div\s+class=""header_real_name\s+ellipsis"">\s*<bdi>(.*?)</bdi>\s*</div>";
this.labdel4.Text = Regex.Match(text, test).Groups[1].Value;
1
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 19
07.05.2018, 09:05  [ТС]
От души! Ты меня научил!!!!
Я самостоятельно написал код для парсинга флага и страны (города проживания)

Парсинг страны (города)
C#
1
2
string country = @"<div\s+class=""header_real_name\s+ellipsis"">\s*<bdi></bdi>\s*<img\s*class=""profile_flag""\s+src=""([^"">]+)"">\s+(.*?)\s*</div>";
                this.labdel6.Text = Regex.Match(text, country).Groups[2].Value;
Парсинг фалага
C#
1
2
3
string flag = @"<div\s+class=""header_real_name\s+ellipsis"">\s*<bdi></bdi>\s*<img\s*class=""profile_flag""\s+src=""([^"">]+)"">\s+(.*?)\s*</div>";
                byte[] data1 = await client.DownloadDataTaskAsync(Regex.Match(text, flag).Groups[1].Value);
                this.pictureBox3.Image = (Bitmap)Bitmap.FromStream(new MemoryStream(data1));
Всё работает))
Осталось настроить чтобы не крошилась при отсутствии флага либо страны (города)

Если интересно выглядит так


Добавлено через 4 минуты
C#
1
2
3
4
5
6
7
//парсим и качаем флаг
                string flag = @"<div\s+class=""header_real_name\s+ellipsis"">\s*<bdi></bdi>\s*<img\s*class=""profile_flag""\s+src=""([^"">]+)"">\s+(.*?)\s*</div>";
                if (Regex.Match(text, flag).Groups[1].Length > 0)
                {
                    byte[] data1 = await client.DownloadDataTaskAsync(Regex.Match(text, flag).Groups[1].Value);
                    this.pictureBox3.Image = (Bitmap)Bitmap.FromStream(new MemoryStream(data1));
                }
Теперь если флага в профиле нет, прога не крашится ))

Добавлено через 42 минуты
Передал код, так выглядит лучше и в целом так правильней )))

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Парсим Настоящее имя, флаг, страну
                this.labdel4.ForeColor = Color.Gray; //задаёт цвет
                this.labdel6.ForeColor = Color.Gray; //задаёт цвет
                string mtext = @"<div\s+class=""header_real_name\s+ellipsis"">\s*<bdi>(.*?)</bdi>\r\s*<img\s*class=""profile_flag""\s+src=""([^"">]+)"">\s+(.*?)\s*</div>"; //путь и группы
                if (Regex.Match(text, mtext).Groups[2].Length > 0)
                {
                    pictureBox3.Visible = true; //не обязательно
                    byte[] data1 = await client.DownloadDataTaskAsync(Regex.Match(text, mtext).Groups[2].Value);
                    this.pictureBox3.Image = (Bitmap)Bitmap.FromStream(new MemoryStream(data1));
                }
                else //не обязательно
                {
                    pictureBox3.Visible = false;
                }
 
                if (Regex.Match(text, mtext).Groups[1].Length > 0)
                {
                    this.labdel4.Text = Regex.Match(text, mtext).Groups[1].Value;
                }
                else //не обязательно
                {
                    this.labdel4.Text = "(Настоящее имя не указано)";
                }
 
                if (Regex.Match(text, mtext).Groups[3].Length > 0)
                {
                    this.labdel6.Text = Regex.Match(text, mtext).Groups[3].Value;
                }
                else //не обязательно
                {
                    this.labdel6.Text = "Страна и Регион/Область не указана";
                }
P.S
Я пишу это не просто так, я уже сталкивался с ситуацией когда не понимал что делать и как что работает, видел вопрос на форуме (не обязательно на этом), и бывало видел ответ, но куда его впихнуть этот ответ (код), или же сам человек решил проблему и закрыл тему при это не вставив ответ на свой вопрос для всех)))))
Так же спасибо огромное Fleder, подсказал и ответил на всё что можно, написал кучу кода, всё разжевал, от души бро ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2018, 09:05
Помогаю со студенческими работами здесь

Парсинг сайта
Есть один сайт, из которого мне нужно выгрузить таблицу в csv или json объект. Как это делается?

Парсинг сайта
Здравствуйте уважаемые программисты, у меня задача распарсить сайт http://lira.battlespace.ru/game.html, помогите а, куда копать? во первых...

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

Парсинг сайта
Здравствуйте. Я хочу с главной страницы сайта https://www.basketball24.com/ парсить названия команд и их коэффициенты. вот набросал...

Парсинг h2 из сайта
Есть код который скопировал с примеров парсинга. В других исходниках работает, но у меня нет. procedure TForm1.Button6Click(Sender:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru