Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7

Гениально простая задача которую не смогли сделать Senior developer

10.09.2022, 14:14. Показов 1840. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Давайте рассмотрим задачу которую не смогли решить несколько 'Middle' и 'Senior' разработчиков Python которую работают менторами в школе программирования.

Тут используется библиотека: pip install tradingview-ta

Условная задача кода: мы задаем параметры что если даны рекомендации "BUY" или "STRONG_BUY" он должен купить эту валюту и когда значения рекомендации изменяться на "SELL" или "STRONG_SELL" то он купленную валюту должен продать. Изначальный код работает но там валюту которую мы проверяем на рекомендацию задается только один.

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
# Import packages.
from tradingview_ta import TA_Handler, Interval, Exchange
 
 
# Store the last order.
last_order = "sell"
 
# Instantiate TA_Handler.
tesla = TA_Handler(
    symbol="ROSEUSDT",
    exchange="BYBIT",
    screener="CRYPTO",
    interval=Interval.INTERVAL_1_HOUR,
)
 
# Repeat forever.
while True:
    # Retrieve recommendation.
    rec = tesla.get_analysis().summary["RECOMMENDATION"]
 
    # Create a buy order if the recommendation is "BUY" or "STRONG_BUY" and the last order is "sell".
    # Create a sell order if the recommendation is "SELL" or "STRONG_SELL" and the last order is "buy".
    if "BUY" in rec and last_order == "sell":
        print(tesla.get_analysis().time)
        print(f'вы купили криптовалюту')
        print(tesla.get_analysis().symbol)
        print(f'индикатор открытия: {tesla.get_analysis().indicators["open"]}')
        print(f'импульс: {tesla.get_analysis().indicators["Mom"]}')
        print(f'индекс относительной силы: {tesla.get_analysis().indicators["RSI"]}')
 
        
        # REPLACE COMMENT: Create a buy order using your exchange's API.
 
        last_order = "buy"
    elif "SELL" in rec and last_order == "buy":
        print(f'Пора продавать криптовалюту')
        print(tesla.get_analysis().time)
        print(tesla.get_analysis().symbol)
        print(f'индикатор закрытия: {tesla.get_analysis().indicators["close"]}')
        print(f'импульс: {tesla.get_analysis().indicators["Mom"]}')
        print(f'индекс относительной силы: {tesla.get_analysis().indicators["RSI"]}')
        print('──────────────────')
 
        # REPLACE COMMENT: Create a sell order using your exchange's API.
 
        last_order = "sell"
 
    # Wait for x seconds before retrieving new analysis.
    # The time should be the same as the interval.
    # time.sleep(x)
но у нас есть некий массив и задача такая. что бы он автоматически подставлял валюты и если будет дана рекомендация на "BUY" или же на "STRONG_BUY" он должен купить и ждать пока рекомендация сменится на значения "SELL" или "STRONG SELL" и при этом не может снова покупать пока не продаст уже купленные валюту и если продал то может дальше покупать и так до бесконечности пока есть значения на покупку.


Вот эта конструкция не работает:
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
bybit_coins = ['ATOM2LUSDT', 'KONUSDT', 'FAMEUSDT', 'DARUSDT', 'BNXUSDT', 'CELRUSDT',
'CTSIUSDT', 'LTCUSD', 'MANAUSD', 'FXSUSDT', 'ICXUSDT', 'XCNUSDT', 'AAVEUSDT', 'BELUSDT', 'LITUSDT',
'RENUSDT', 'SUSHIUSDT', 'XRPUSD ', 'DOTUSD', 'BLZUSDT', 'TRXUSDT', 'GLMRUSDT',
'STGUSDT', 'SPELLUSDT', 'CTCUSDT', 'APEUSDC', 'RSS3USDT', '1000XECUSDT', 'MANAUSDT', 'ADAUSD', 'ILVUSDT', 'MTLUSDT',
'HOTUSDT', 'FILUSDT', 'C98USDT', 'BOBAUSDT', 'NEOUSDT', 'SKLUSDT', 'FLMUSDT', '1000BTTUSDT', 'LDOUSDT', 'ZECUSDT',
'OGNUSDT', 'DOGEUSDT', 'ONTUSDT', 'SOLUSD', 'GMTUSDC', 'GALAUSDT', 'KAVAUSDT', '10000NFTUSDT', 'SLPUSDT', 'LRCUSDT',
'SANDUSDC', 'TRBUSDT', 'OCEANUSDT', 'CRVUSDT', 'KDAUSDT', 'BITUSD', 'BALUSDT', 'SCRTUSDT', 'API3USDT', 'NEARUSDT',
'BANDUSDT', 'GALUSDT', 'FITFIUSDT', 'MATICUSDC', 'KSMUSDT', 'CROUSDT', 'BTCUSDC', 'ETHUSDC', 'DGBUSDT', 'BAKEUSDT',
'XMRUSDT', 'WOOUSDT', 'SOLUSDC', 'BSWUSDT', 'MATICUSDT', 'SNXUSDT', 'ETHUSD1230', '1INCHUSDT', 'AUDIOUSDT', 'JSTUSDT',
'THETAUSDT', 'AXSUSDT', 'XRPUSDC', 'STORJUSDT', 'WAVESUSDT', 'YFIUSDT', 'LINKUSDT', 'KLAYUSDT', 'XLMUSDT', 'IOSTUSDT', 'OPUSDT', 'ARUSDT', 'ARPAUSDT', 'OMGUSDT', 'SXPUSDT', 'GTCUSDT', 'EOSUSDT', 'ALPHAUSDT', 'EGLDUSDT', 'HNTUSDT',
'ONEUSDT', 'RAYUSDT', 'MINAUSDT', 'ROSEUSDT', 'DOTUSDT', 'RUNEUSDT', 'AVAXUSDT', 'ALGOUSDT', 'LPTUSDT', 'LTCUSDT', 'CHRUSDT', 'TLMUSDT', 'DASHUSDT', 'BCHUSDT', 'ASTRUSDT', 'DODOUSDT', 'UNIUSDT', 'RVNUSDT', 'MASKUSDT', 'CEEKUSDT', 'FTMUSDT', 'OPUSDC', 'ZRXUSDT', 'LINAUSDT',
'CREAMUSDT', 'USDCUSDT', 'CELOUSDT', 'UNFIUSDT', 'ADAUSDC', 'ZENUSDT', 'VETUSDT', 'XEMUSDT', 'GMTUSDT', 'SHIB1000USDT', 'LUNA2USDT', 'AKROUSDT', 'ALICEUSDT', 'ETHUSD',
'BICOUSDT', 'SFPUSDT', 'DYDXUSDT', 'JASMYUSDT', 'REQUSDT', 'LOOKSUSDT', 'CHZUSDT', 'INJUSDT', 'CTKUSDT', 'CKBUSDT', 'COTIUSDT', 'XTZUSDT', 'ETCUSDT', 'COMPUSDT', 'RSRUSDT', 'SOLUSDT', 'ENJUSDT', 'DENTUSDT', 'BTCUSDT', 'STMXUSDT', 'EOSUSD', 'GRTUSDT',
'ANKRUSDT', 'CVXUSDT', 'ACHUSDT', 'RNDRUSDT', 'YGGUSDT', 'SCUSDT', 'MKRUSDT', 'ENSUSDT', 'ICPUSDT', 'PEOPLEUSDT', 'ATOMUSDT', 'FLOWUSDT', 'BNBUSDT', 'AGLDUSDT', 'IOTXUSDT', 'ADAUSDT', 'KNCUSDT', 'ZILUSDT', 'CVCUSDT', 'BITUSDT', 'QTUMUSDT', 'IOTAUSDT', 'XRPUSDT',
'APEUSDT', 'SRMUSDT', 'IMXUSDT', 'FTTUSDT', 'PAXGUSDT', 'SANDUSDT', 'BSVUSDT', 'STXUSDT', 'HBARUSDT', 'TOMOUSDT', 'REEFUSDT', 'BATUSDT', 'DUSKUSDT', 'ANTUSDT']
 
 
 
 
# Import packages.
from tradingview_ta import TA_Handler, Interval, Exchange
 
 
# Store the last order.
last_order = "sell"
 
# Instantiate TA_Handler.
for i in bybit_coins:
    tesla = TA_Handler(
        symbol=i,
        exchange="BYBIT",
        screener="CRYPTO",
        interval=Interval.INTERVAL_1_HOUR,
    )
 
# Repeat forever.
while True:
    # Retrieve recommendation.
    rec = tesla.get_analysis().summary["RECOMMENDATION"]
 
    # Create a buy order if the recommendation is "BUY" or "STRONG_BUY" and the last order is "sell".
    # Create a sell order if the recommendation is "SELL" or "STRONG_SELL" and the last order is "buy".
    if "BUY" in rec and last_order == "sell":
        print(tesla.get_analysis().time)
        print(f'вы купили криптовалюту')
        print(tesla.get_analysis().symbol)
        print(f'индикатор открытия: {tesla.get_analysis().indicators["open"]}')
        print(f'импульс: {tesla.get_analysis().indicators["Mom"]}')
        print(f'индекс относительной силы: {tesla.get_analysis().indicators["RSI"]}')
 
        
        # REPLACE COMMENT: Create a buy order using your exchange's API.
 
        last_order = "buy"
    elif "SELL" in rec and last_order == "buy":
        print(f'Пора продавать криптовалюту')
        print(tesla.get_analysis().time)
        print(tesla.get_analysis().symbol)
        print(f'индикатор закрытия: {tesla.get_analysis().indicators["close"]}')
        print(f'импульс: {tesla.get_analysis().indicators["Mom"]}')
        print(f'индекс относительной силы: {tesla.get_analysis().indicators["RSI"]}')
        print('──────────────────')
 
        # REPLACE COMMENT: Create a sell order using your exchange's API.
 
        last_order = "sell"
 
    # Wait for x seconds before retrieving new analysis.
    # The time should be the same as the interval.
    # time.sleep(x)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.09.2022, 14:14
Ответы с готовыми решениями:

СРОЧНО требуются Senior Java Developer & Senior JS/jQuery Developer
В русско-финскую компанию СРОЧНО требуются опытные и крутые специалисты. Проекты очень интересные! Готовы общаться по з/п. Офис в центре...

Вакансия Senior C++Developer,Senior J2EE Developer, Украина, г.Николаев
С++ Required skills: Good understanding of OOP principles, design patterns and their applicability 4+ years of experience in...

Senior Game Developer/Senior .NET Developer [КРАСНОДАР] до 1800$
Крупная игровая студия, занимающаяся разработкой казуальных и социальных игр, а также игр для мобильных платформ, предлагает уникальную...

13
10.09.2022, 14:24

Не по теме:

Цитата Сообщение от wifimoney Посмотреть сообщение
задачу которую не смогли решить несколько 'Middle' и 'Senior' разработчиков Python которую работают менторами в школе программирования.
Интересная попытка манипуляции, но нет.:)

0
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7
10.09.2022, 14:32  [ТС]
мне кажется все дело в том что когда мы проходимся по массиву:
Python
1
2
3
4
5
6
7
for i in bybit_coins:
    tesla = TA_Handler(
        symbol=i,
        exchange="BYBIT",
        screener="CRYPTO",
        interval=Interval.INTERVAL_1_HOUR,
    )
то после него не работает while True:


вторая предположение что last_order может хранить в себе одно значение и при использования массива логика ломается. Но я думаю все дело в циклах
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
10.09.2022, 14:43
Цитата Сообщение от wifimoney Посмотреть сообщение
то после него не работает while True:
нет, ты просто не понимаешь как это работает, ты в цикл while True заходишь только когда уже перебрал все валюты.

Цитата Сообщение от wifimoney Посмотреть сообщение
last_order может хранить в себе одно значение
он везде одно и хранит и никогда не становится списком.

Цитата Сообщение от wifimoney Посмотреть сообщение
несколько 'Middle' и 'Senior' разработчиков Python которую работают менторами в школе программирования
чего же ты в этой школе даже джуном не стал? это если судить по двум твоим предположениям

Цитата Сообщение от u235 Посмотреть сообщение
Интересная попытка манипуляции, но нет.
зато потом он пойдет в какой-нибудь чат по питону и напишет что 10 архитекторов с Киберфорума не смогли тоже справиться.
3
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7
10.09.2022, 14:47  [ТС]
Ну так правильно если обучаюсь в этой же школе.


сделал иную конструкцию:
Python
1
2
3
4
5
6
7
8
9
10
11
12
a = 1
 
while True:
    for i in range(1, 3):
        while a == 1 or a == 2:
            print(' kupili jdem')
            a = int(input('input rec'))
            continue
        else:
            if a == 3:
               print('sell')
               break
где описал тоже самое действие кода свыше
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
10.09.2022, 14:54
wifimoney, такое ощущение, что ты вообще это не изучаешь, а пытаешься методом тыка что-то сделать.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
10.09.2022, 14:56
Цитата Сообщение от wifimoney Посмотреть сообщение
сделал иную конструкцию
еще хуже. Ты знаешь как else работает с циклами?
Очевидно что тему циклов ты пока не осилил и пытаешься методом тыка решить. Этот твой новый код в последнем посте что должен делать по твоей логике?
0
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7
10.09.2022, 14:59  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
еще хуже. Ты знаешь как else работает с циклами?
в конструкции пока пользователь вводит 1 или 2 он выдает покупка и если значения меняются на 3 то он продает
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
10.09.2022, 15:04
Цитата Сообщение от wifimoney Посмотреть сообщение
в конструкции пока пользователь вводит 1 или 2 он выдает покупка и если значения меняются на 3 то он продает
а какую роль играет строка
Цитата Сообщение от wifimoney Посмотреть сообщение
for i in range(1, 3):
???

и кстати попробуй ввести 3, в консоль начнет писать sell и больше тебе ввести ничего не даст
0
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7
10.09.2022, 16:33  [ТС]
Alexarh, пытаюсь понять почему при работе с массива при запуске цикла for конструкция вдруг начинает ломаться. Над данной задачей думал около 1 недели и только одна конструкция стала работать так как нужно но как после узнал она тоже не совсем верная. Все остальные варианты не работают. В первом варианте кода все работает но когда подключаем цикл и крутим там массив конструкция ломается

Добавлено через 4 минуты
Я как понимаю все сыпется именно из за for иных предположений нету. чем та первому коду не нравится когда я использую цикл for и подставляю в symbol разные массивы

Добавлено через 14 минут
Welemir1, что бы убрать вечный цикл нужно изменить на значения
Python
1
2
3
4
5
6
7
8
9
10
a = 1
 
for i in range(1,2):
      while a == 1 or a == 2:
         print(' kupili jdem')
         a = int(input('input rec'))
         continue
      else:
         if a == 3:
            print('sell')
Добавлено через 35 минут
мне кажется что если я в цикле делаю tesla = .... то после выхода из цикла единственная переменная tesla примет последнее значение, которое было в цикле. И последующий код отработает только с ним. А это значит, что for по тикерам надо переносить внутрь рабочего while True что бы его содержимое каждый раз работало по очереди со всеми тикерами. ну и last_order вероятно надо заменить на словарь, что бы отдельно сохранять состояния каждого инструмента.



Свои предположения реализовал вот так в коде:
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
# Store the last order.
last_order = {"sell"}
 
# Instantiate TA_Handler.
while True:
    try:
        for i in bybit_coins:
            tesla = TA_Handler(
                symbol=i,
                exchange="BYBIT",
                screener="CRYPTO",
                interval=Interval.INTERVAL_1_HOUR,
            )
 
        # Repeat forever.
 
            # Retrieve recommendation.
 
            rec = tesla.get_analysis().summary["RECOMMENDATION"]
 
            # Create a buy order if the recommendation is "BUY" or "STRONG_BUY" and the last order is "sell".
            # Create a sell order if the recommendation is "SELL" or "STRONG_SELL" and the last order is "buy".
            if "BUY" in rec and last_order == {"sell"}:
                print(tesla.get_analysis().time)
                print(f'вы купили криптовалюту')
                print(tesla.get_analysis().symbol)
                print(f'индикатор открытия: {tesla.get_analysis().indicators["open"]}')
                print(f'импульс: {tesla.get_analysis().indicators["Mom"]}')
                print(f'индекс относительной силы: {tesla.get_analysis().indicators["RSI"]}')
 
 
                # REPLACE COMMENT: Create a buy order using your exchange's API.
 
                last_order = {"buy"}
            elif "SELL" in rec and last_order == {"buy"}:
                print(f'Пора продавать криптовалюту')
                print(tesla.get_analysis().time)
                print(tesla.get_analysis().symbol)
                print(f'индикатор закрытия: {tesla.get_analysis().indicators["close"]}')
                print(f'импульс: {tesla.get_analysis().indicators["Mom"]}')
                print(f'индекс относительной силы: {tesla.get_analysis().indicators["RSI"]}')
                print('──────────────────')
 
                # REPLACE COMMENT: Create a sell order using your exchange's API.
 
                last_order = {"sell"}
 
            # Wait for x seconds before retrieving new analysis.
            # The time should be the same as the interval.
 
            # time.sleep(x)
 
    except Exception:
        pass
но самое интересное что даже так он не хочет работать. После запуска кода он в режиме ожидания и ничего не выдает но код продолжает работать но ничего не дает. Значит где то еще есть ошибка которую я не предусмотрел

Добавлено через 32 минуты
Welemir1, значит что бы last_order хранил несколько значений его нужно перевести в дикт или лист?
я ведь и так его перевел
0
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
10.09.2022, 17:00
Цитата Сообщение от wifimoney Посмотреть сообщение
я ведь и так его перевел
с одним значением для всех валют?
0
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7
10.09.2022, 17:13  [ТС]
u235, а как должно быть? напиши небольшой пример?


В голове сразу такая мысль пришла: last_order = {"BTCUSDT": "SELL", "LUNAUSDT": "SELL"}
0
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
10.09.2022, 17:15
Цитата Сообщение от wifimoney Посмотреть сообщение
last_orders= {"BTCUSDT": "SELL", "LUNAUSDT": "SELL"}
Ну да, как-то так..
И в цикле менять соответствующее значение по ключу.
0
0 / 0 / 0
Регистрация: 10.09.2022
Сообщений: 7
10.09.2022, 17:47  [ТС]
u235, И в цикле менять соответствующее значение по ключу.
Как это сделать? не совсем понятно стало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2022, 17:47
Помогаю со студенческими работами здесь

Циклы (тема, на которую не смогли ответить на других форумах)
Есть код вывода краткого содержания страниц(анонсов), выводится он только блоками <div> <?PHP while...

Уровень программиста (Junior Developer, Middle Developer, Senior Developer), как проверить?
Доброго времени суток. Какие есть тесты для проверки своего уровня программирования(может на хабре или где-то еще)

Full Stack Developer (Senior) Python Developer for start-up in Zurich
Full Stack Developer / Senior Open Source Programmer (AWS Cloud Web Data Agile Python). Pioneering start-up software house is seeking a...

Работа в Баварии: Senior C# developer and .NET developer. Переезд в ФРГ. Будет ВНЖ
Имеется вакансия в платформенную команду компании, занимающейся разработкой и продажей встраиваемых аудиосистем для автомобилей премиум и...

Какие требования нужно выполнить, чтобы стать Junior developer, Middle и Senior developer?
Быть может не совсем в ту ветку форума написал, но мне показалось, что здесь я смогу получить квалифицированный ответ с большей...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
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