Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14

Windows 7, python 3.8 (без PIL или Pillow - это не работает) обязательно, как быть?

06.02.2025, 03:44. Показов 1277. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Python Скопировано
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
from tkinter import *
from tkinter import messagebox
 
def on_closing():
    if messagebox.askokcancel("ВЫХОД", "Хотите выйти?"):
        root.destroy()
 
root = Tk()
 
root.protocol("WM_DELETE_WINDOW", on_closing)
root.title("ШАХМАТНЫЕ ЗАДАЧИ")
root.resizable(False, False)
root.wm_attributes("-topmost", True)
root.wm_attributes("-transparentcolor", "gray")
 
#Добавим фон 
label = Canvas(root, width=950, height=650)
img = PhotoImage(file = 'CHESS_EMPTY.png')
label.create_image(0, 0, anchor='nw',image=img)
label.pack()
 
#Добавим фигуры 
image1 = PhotoImage(file='knight_black.png')
label1 = Label(label, image=image1, bg='gray')
label1.place(x=500, y=500, anchor=CENTER)
 
image2 = PhotoImage(file='knight_white.png')
label2 = Label(label, image=image2, bg='gray')
label2.place(x=100, y=100, anchor=CENTER)
 
#Обработаем перетягивание
def drag(event):
    mouse_x = root.winfo_pointerx() - root.winfo_rootx()
    mouse_y = root.winfo_pointery() - root.winfo_rooty()
    event.widget.place(x=mouse_x, y=mouse_y)
 
label1.bind("<B1-Motion>", drag)
label2.bind("<B1-Motion>", drag)
 
root.mainloop()
Миниатюры
Windows 7, python 3.8 (без PIL или Pillow - это не работает) обязательно, как быть?  
Изображения
  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2025, 03:44
Ответы с готовыми решениями:

Проблемы с PIL(pillow)
Есть желание вставить изображение в программу на pythin с GUI на tkinter. Везде советуют использовать PIL. Проблема в ошибке: TypeError:...

Матричный, свёрточный фильтр в PIL/Pillow
Необходимо реализовать свёрточный фильтр для размытия изображения. https://habrahabr.ru/post/142818/ Мой код не корректно работает,...

Что это может быть? или как это называется? Меня взломали!
Доброго дня всем, мне по майл.ру.агент отправили сообщением так: Витя Гасай (08.03.2011 23:29) 92.47.43.117:31338/query работает?! ( я...

19
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
06.02.2025, 03:59  [ТС]
это я пишу для разбора шахматных ситуаций
хочется, чтобы фон фигур был прозрачен только в окне приложения, а не "насквозь"
0
 Аватар для kapbepucm
1563 / 737 / 320
Регистрация: 02.05.2020
Сообщений: 1,646
13.02.2025, 13:35
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Label криво поддерживает прозрачность, лучше двигайте объекты Canvas, там с прозрачностью всё ОК:
Python Скопировано
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
47
48
49
from tkinter import *
from tkinter import messagebox
 
def on_closing():
    if messagebox.askokcancel("ВЫХОД", "Хотите выйти?"):
        root.destroy()
 
root = Tk()
 
root.protocol("WM_DELETE_WINDOW", on_closing)
root.title("ШАХМАТНЫЕ ЗАДАЧИ")
root.resizable(False, False)
root.wm_attributes("-topmost", True)
 
#Добавим фон 
label = Canvas(root, width=950, height=650)
img = PhotoImage(file = 'CHESS_EMPTY.png')
label.create_image(0, 0, anchor='nw',image=img)
label.pack()
 
#Добавим фигуры 
image1 = PhotoImage(file='knight_black.png')
label.create_image(500, 500, anchor='nw',image=image1)
image2 = PhotoImage(file='knight_white.png')
label.create_image(100, 100, anchor='nw',image=image2)
 
 
def click(event):
  selected = label.find_overlapping(event.x, event.y, event.x, event.y)
  if len(selected) > 1:   
    label.selected = selected[-1]
    label.mouse_x = event.x
    label.mouse_y = event.y
  else:
    label.selected = None
 
#Обработаем перетягивание
def drag(event):
  if label.selected is not None:
    dx, dy = event.x - label.mouse_x, event.y - label.mouse_y
    label.move(label.selected, dx, dy)
    label.mouse_x = event.x
    label.mouse_y = event.y
 
label.bind("<B1-Motion>", drag)
label.bind("<Button-1>", click)
 
 
root.mainloop()
1
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
13.02.2025, 15:16  [ТС]
Спасибо, отлично работает, только при анализе кода выдает
Миниатюры
Windows 7, python 3.8 (без PIL или Pillow - это не работает) обязательно, как быть?  
0
 Аватар для kapbepucm
1563 / 737 / 320
Регистрация: 02.05.2020
Сообщений: 1,646
13.02.2025, 18:51
Похоже, динамические атрибуты ему не нравятся.
А если так?
Python Скопировано
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
47
48
49
50
51
52
53
54
55
from tkinter import *
from tkinter import messagebox
 
class Background(Canvas):
  def __init__(self, root):
    super().__init__(root, width=950, height=650)
    self.selected = None
    self.mouse_x = 0
    self.mouse_y = 0
 
def on_closing():
    if messagebox.askokcancel("ВЫХОД", "Хотите выйти?"):
        root.destroy()
 
root = Tk()
 
root.protocol("WM_DELETE_WINDOW", on_closing)
root.title("ШАХМАТНЫЕ ЗАДАЧИ")
root.resizable(False, False)
root.wm_attributes("-topmost", True)
 
#Добавим фон 
label = Background(root)
img = PhotoImage(file = 'CHESS_EMPTY.png')
label.create_image(0, 0, anchor='nw',image=img)
label.pack()
 
#Добавим фигуры 
image1 = PhotoImage(file='knight_black.png')
label.create_image(500, 500, anchor='nw',image=image1)
image2 = PhotoImage(file='knight_white.png')
label.create_image(100, 100, anchor='nw',image=image2)
 
 
def click(event):
  selected = label.find_overlapping(event.x, event.y, event.x, event.y)
  if len(selected) > 1:   
    label.selected = selected[-1]
    label.mouse_x = event.x
    label.mouse_y = event.y
  else:
    label.selected = None
 
#Обработаем перетягивание
def drag(event):
  if label.selected is not None:
    dx, dy = event.x - label.mouse_x, event.y - label.mouse_y
    label.move(label.selected, dx, dy)
    label.mouse_x = event.x
    label.mouse_y = event.y
 
label.bind("<B1-Motion>", drag)
label.bind("<Button-1>", click)
 
root.mainloop()
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
13.02.2025, 19:32  [ТС]
в 5, 6 строках написал root_, а то ругался не переопределение root
теперь все идеально, спасибо БОЛЬШОЕ, я только учусь, хоть и немолод уже
теперь буду выставлять все фигуры по бокам, может сразу, а может по запросу, какие фигуры нужны будут
буду учиться дальше

Добавлено через 5 минут
нашел баг все-же если на белое поле утащить фигуру и опустить, то потом фигуру не стащить в поле

Добавлено через 2 минуты
label.selected всегда None получается

Добавлено через 2 минуты
если if len(selected) >= 1 тогда и фон можно утащить

Добавлено через 3 минуты
могу просто картинку вправо увеличить на ширину окна, добавлю белую зону и тогда все будет отлично
0
 Аватар для kapbepucm
1563 / 737 / 320
Регистрация: 02.05.2020
Сообщений: 1,646
13.02.2025, 22:59
Цитата Сообщение от krot_old Посмотреть сообщение
если на белое поле утащить фигуру и опустить, то потом фигуру не стащить в поле
Цитата Сообщение от krot_old Посмотреть сообщение
если if len(selected) >= 1 тогда и фон можно утащить
поправил:
Python Скопировано
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
47
48
49
50
51
52
53
54
55
56
from tkinter import Tk, Canvas, Label, messagebox, PhotoImage
 
class Background(Canvas):
  def __init__(self, parent):
    super().__init__(parent, width=950, height=650)
    self.selected = None
    self.mouse_x = 0
    self.mouse_y = 0
    self.background_id = 0
 
def on_closing():
    if messagebox.askokcancel("ВЫХОД", "Хотите выйти?"):
        root.destroy()
 
root = Tk()
 
root.protocol("WM_DELETE_WINDOW", on_closing)
root.title("ШАХМАТНЫЕ ЗАДАЧИ")
root.resizable(False, False)
root.wm_attributes("-topmost", True)
 
#Добавим фон 
label = Background(root)
img = PhotoImage(file = 'CHESS_EMPTY.png')
label.background_id = label.create_image(0, 0, anchor='nw',image=img)
label.pack()
 
#Добавим фигуры 
image1 = PhotoImage(file='knight_black.png')
label.create_image(500, 500, anchor='nw',image=image1)
image2 = PhotoImage(file='knight_white.png')
label.create_image(100, 100, anchor='nw',image=image2)
 
 
def click(event):
  selected = label.find_overlapping(event.x, event.y, event.x, event.y)
  if len(selected) > 0:
    label.selected = selected[-1]
    label.mouse_x = event.x
    label.mouse_y = event.y
  else:
    label.selected = None
 
#Обработаем перетягивание
def drag(event):
  if label.selected is not None:
    if label.selected != label.background_id:
      dx, dy = event.x - label.mouse_x, event.y - label.mouse_y
      label.move(label.selected, dx, dy)
    label.mouse_x = event.x
    label.mouse_y = event.y
 
label.bind("<B1-Motion>", drag)
label.bind("<Button-1>", click)
 
root.mainloop()
Добавлено через 3 минуты
есть ещё идея- при перетягивании фигур, чтобы они центровались по клеткам, можно тоже чтото придумать
1
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
14.02.2025, 13:36  [ТС]
да, все супер, а я уже фон на все окно сделал, теперь одиночный канвас только фон

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

Добавлено через 29 минут
#еще как вариант с PySimpeGUI

Python Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import PySimpleGUI as psg
 
layout = [
    [psg.Image('CHESS_EMPTY.png', expand_x=True, expand_y=True )],
    ]
window = psg.Window('ШАХМАТЫ с PySimpleGUI', layout, size=(950,670), finalize=True)
 
 
psg.theme_background_color('gray')
 
image = psg.Image('knight_white.png', background_color='gray')
layout = [[image]]
window = psg.Window('', layout, size=(80,80), keep_on_top=True, finalize=True, no_titlebar=True, grab_anywhere=True,)
window.set_transparent_color('gray')
 
image = psg.Image('knight_black.png', background_color='gray')
layout = [[image]]
window = psg.Window('', layout, size=(80,80), keep_on_top=True, finalize=True, no_titlebar=True, grab_anywhere=True,)
window.set_transparent_color('gray')
[/PYTHON]

Добавлено через 2 минуты
только тут каждая картинка это окно, наверное, нехорошо окна плодить
0
2797 / 1843 / 202
Регистрация: 05.06.2011
Сообщений: 5,356
14.02.2025, 14:41
Цитата Сообщение от krot_old Посмотреть сообщение
наверное, нехорошо окна плодить
Насколько понимаю, с точки зрения операционки всё, что есть на экране — окна. Так что плодите сколько душе угодно.
0
 Аватар для kapbepucm
1563 / 737 / 320
Регистрация: 02.05.2020
Сообщений: 1,646
14.02.2025, 20:57
Цитата Сообщение от krot_old Посмотреть сообщение
насчет центрирования это же тогда фон небось надо менять с картинки на нарисованный, чтобы координаты понимать
Вроде необязательно... Мы знаем оригинальные координаты каждой клетки на нашей картинке, мы знаем куда и как эту картинку помещаем (если она растягивается или сужается, например), ну и соответственно, с поправкой на масштаб можем определить координаты клеток на нашей Canvas.
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
14.02.2025, 21:28  [ТС]
то есть создать матрицу (список) координат центров клеток, и при перемещении канвас с фигурой при отпускании мыши "доезжать" центром этого канваса до ближайшего центра клетки?

Добавлено через 2 минуты
теоретически понимаю, но мне это реализовать не просто, будет время, посмотрите

Добавлено через 2 минуты
я так пятнашки реализовал, тупо на координатах, я скидывал свой вариант в раздел пятнашек
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
15.02.2025, 04:55  [ТС]
Python Скопировано
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from tkinter import Tk, Canvas, messagebox, PhotoImage
 
class Background(Canvas):
    def __init__(self, parent):
        super().__init__(parent, width=950, height=650)
        self.selected = None
        self.mouse_x = 0
        self.mouse_y = 0
        self.background_id = 0
 
def on_closing():
    if messagebox.askokcancel("ВЫХОД", "Хотите выйти?"):
        root.destroy()
 
root = Tk()
 
root.protocol("WM_DELETE_WINDOW", on_closing)
root.title("ШАХМАТНЫЕ ЗАДАЧИ")
root.resizable(False, False)
root.wm_attributes("-topmost", True)
 
# Добавим фон 
canvas = Background(root)
img = PhotoImage(file = 'CHESS_EMPTY.png')
canvas.background_id = canvas.create_image(0, 0, anchor='nw',image=img)
canvas.pack()
 
# Добавим фигуры 
image1 = PhotoImage(file='knight_black.png')
canvas.create_image(500, 500, anchor='nw',image=image1)
image2 = PhotoImage(file='knight_white.png')
canvas.create_image(100, 100, anchor='nw',image=image2)
 
# шаг клетки
step_xy = 72
# максимальная координата x для "дотягивания"
max_x = 600
# формируем списки примерных координат центров клеток
coord_x = [x for x in range(80, max_x, step_xy)]
coord_y = [y for y in range(66, max_x, step_xy)]
 
# Обработаем нажатие 
def click(event):
    selected = canvas.find_overlapping(event.x, event.y, event.x, event.y)
    if len(selected) > 0:   
        canvas.selected = selected[-1]
        canvas.mouse_x = event.x
        canvas.mouse_y = event.y
    else:
        canvas.selected = None
 
# Обработаем перетягивание
def drag(event):
    if canvas.selected is not None:
        if canvas.selected != canvas.background_id:
            dx, dy = event.x - canvas.mouse_x, event.y - canvas.mouse_y
            canvas.move(canvas.selected, dx, dy)
        canvas.mouse_x = event.x
        canvas.mouse_y = event.y
 
# "Дотягивание" до центра клетки
def center(event):
    x = event.x
    y = event.y
    if x > max_x:
        pass # с белого поля не "дотягиваем"
    else:
        if canvas.selected is not None:
            if canvas.selected != canvas.background_id:
                new_x = min(coord_x, key=lambda n: (abs(x - n), n)) # эту функцию загуглил (поиск ближайшего числа в списке)
                new_y = min(coord_y, key=lambda n: (abs(y - n), n)) 
                dx = new_x - x
                dy = new_y - y
                canvas.move(canvas.selected, dx, dy)    
    
canvas.bind("<B1-Motion>", drag)
canvas.bind("<Button-1>", click)
canvas.bind("<ButtonRelease-1>", center)
 
root.mainloop()
Добавлено через 4 минуты
сделал дотягивание до центра клетки, только с погрешностью "ухвата" мышью канваса, не всегда за центр, но это я не доработал
0
 Аватар для kapbepucm
1563 / 737 / 320
Регистрация: 02.05.2020
Сообщений: 1,646
15.02.2025, 18:16
я пошёл немного другим путём:
-поменял некоторые названия
-выделенная фигура теперь всегда будет на перенднем плане
-фигуры центрируются по клеткам (однако тут не надо было играться с масштабом фона и самих фигур)
Python Скопировано
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from tkinter import Tk, Canvas, Label, messagebox, PhotoImage
 
STEP = 72
START_X = 40
START_Y = 30
 
class Background(Canvas):
  def __init__(self, parent):
    super().__init__(parent, width=950, height=650)
    self.selected_item = None
    self.mouse_x = 0
    self.mouse_y = 0
    self.background_id = 0
 
  def nearest(self, value, start):
    if value < start:
      value = start
    elif value > STEP * 8:
      value = STEP * 8
    k = round((value - start - STEP // 2) / STEP)
    return start + STEP // 2 + k * STEP
 
  def calibrate_item(self, item_id):
    if item_id is not None:
      if self.coords(item_id)[0] > START_X * 2 + STEP * 8:
        return
      x = self.nearest(self.coords(item_id)[0], START_X)
      dx = x - self.coords(item_id)[0]
      y = self.nearest(self.coords(item_id)[1], START_Y)
      dy = y - self.coords(item_id)[1]
      self.move(item_id, dx, dy)
 
def on_closing():
    if messagebox.askokcancel("ВЫХОД", "Хотите выйти?"):
        root.destroy()
 
root = Tk()
 
root.protocol("WM_DELETE_WINDOW", on_closing)
root.title("ШАХМАТНЫЕ ЗАДАЧИ")
root.resizable(False, False)
root.wm_attributes("-topmost", True)
 
#Добавим фон 
background = Background(root)
board_image = PhotoImage(file = 'CHESS_EMPTY.png')
background.background_id = background.create_image(0, 0, anchor='nw', image=board_image, tags="chessboard")
background.pack()
 
#Добавим фигуры 
knight_black_image = PhotoImage(file='knight_black.png')
knight_white_image = PhotoImage(file='knight_white.png')
background.calibrate_item(background.create_image(500, 500, anchor='center', image=knight_black_image, tags="chessman"))
background.calibrate_item(background.create_image(400, 500, anchor='center', image=knight_black_image, tags="chessman"))
background.calibrate_item(background.create_image(100, 100, anchor='center', image=knight_white_image, tags="chessman"))
background.calibrate_item(background.create_image(100, 200, anchor='center', image=knight_white_image, tags="chessman"))
 
def click(event):
  selected = background.find_overlapping(event.x, event.y, event.x, event.y)
  if len(selected) > 0 and background.gettags(selected[-1])[0] == "chessman":
    background.selected_item = selected[-1]
    background.mouse_x = event.x
    background.mouse_y = event.y
    background.tag_raise(background.selected_item)
  else:
    background.selected_item = None
 
#Обработаем перетягивание
def drag(event):
  if background.selected_item is not None:
    if background.selected_item != background.background_id:
      dx, dy = event.x - background.mouse_x, event.y - background.mouse_y
      background.move(background.selected_item, dx, dy)
    background.mouse_x = event.x
    background.mouse_y = event.y
 
#"Дотягивание" до центра клетки
def release(event):
  background.calibrate_item(background.selected_item)
 
background.bind("<Button-1>", click)
background.bind("<B1-Motion>", drag)
background.bind("<ButtonRelease-1>", release)
 
root.mainloop()
теперь есть идея, что стОит доработать так, чтобы фигура не смогла становиться на уже занятую клетку
1
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
16.02.2025, 03:12  [ТС]
ну ты реальный Мастер
буду анализировать код и учиться конечно, если не пойму, напишу, тем более ютуб совсем упал, стало сложнее

Добавлено через 2 часа 23 минуты
пока не пойму напишу сори на дачу к детям

Добавлено через 2 минуты
работает отлично

Добавлено через 16 минут
все супер, боярин

Добавлено через 2 часа 35 минут
теперь надо мля это осознать, про занятую клетку вообще не думал, теперь похоже доберемся до логики игры
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
16.02.2025, 09:00  [ТС]
новые фигуры
Изображения
     
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
16.02.2025, 09:04  [ТС]
еще фигуры
Изображения
     
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
16.02.2025, 09:10  [ТС]
теперь грузим на белую подложку и тащим на поле для комбинаций
или как вариант сразу ставим на свои места, похоже дойдем до игры
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
16.02.2025, 17:36  [ТС]
а реально, может есть модуль шахматной логики?
0
 Аватар для kapbepucm
1563 / 737 / 320
Регистрация: 02.05.2020
Сообщений: 1,646
17.02.2025, 21:53
Цитата Сообщение от krot_old Посмотреть сообщение
а реально, может есть модуль шахматной логики?
на python так много всего написано, полагаю и это можно найти, но я тут не помогу
0
0 / 0 / 1
Регистрация: 06.02.2025
Сообщений: 14
17.02.2025, 23:04  [ТС]
Спасибо за помощь, буду дальше учиться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2025, 23:04
Помогаю со студенческими работами здесь

Как должна быть организована сеть офиса? Что должно быть настроено обязательно, а чего быть не должно?
Добрый день. Сразу оговорюсь, что я инженер-строитель и настройкой сети занимаюсь только потому, что больше некому. Поэтому некоторые,...

Это могло быть вызвано попыткой междоменного доступа к службе без наличия приемлемой междоменной политики или с политикой, непригодной службам SOAP
Доброго времени суток! Есть приложение на Silverlight 5, есть wcf сервис с данными. Также есть сервер, где есть IIS, куда выкладывается и...

Как реализовать эффект сепии в Python.Pillow?
Ребят, как реализовать эффект сепии в Python.Pillow? Можно без кода,просто объяснить, как работает этот эффект,код напишу сам

Программа работает неправильно, не знаю в чем проблема.В коде обязательно должен быть define
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #define N 6 int main(int argc,char* ) { int A; int i; for (i=0;i&lt;N;i++)...

Что не так с тенями и как это лечить? ( без понятия с чем может быть связано)
Проблема на картинке. Вопрос и статус в шапке. Единственная догадка, возможно связано с фильтрами текстур, а то почти все текстуры...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel подробные расшифровки по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер