LINUX.ORG.RU

Сообщения a-lexx

 

Фронт для браузерки - выбор подхода

Форум — Web-development

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

Задумал сделать фронт, отдельный для мобильных устройств, с применением современных супер-пупер технологий. Раньше у меня был выбор только между версткой для мобильных браузеров и разработкой мобильных приложений. Т.к. фронт нужен для браузерной игры, то выбор был очевиден. Но когда стал углубляться в тему, выяснил, что между этими двумя подходами есть еще два промежуточных. Для облегчения дальнейшего изложения условно назову браузерную верстку буквой А, а мобильные приложения буквой D, тогда:

  • A - браузерная верстка, использую Javascript, React
  • B - веб-приложения, имитирующие нативные (PWA), использую Ionic React
  • C - кроссплатформенные приложения, использую React Native
  • D - нативная разработка с помощью Java/Kotlin/Swift

Некоторые соображения при выборе:

  • по javascript/jQuery у меня есть какой-то опыт, по остальному нет, поэтому сейчас нужно выбрать, что изучать, но лучше, чтобы новые знания могли использовать предыдущий опыт;
  • смысл браузерной игры в том, что разработчику не нужно создавать специального клиента, который загружается на маркеты. А пользователям не нужно ничего скачивать, достаточно использовать браузеры;
  • хотелось бы интерфейса, удобного на мобильных устройствах, например, чтобы при движении пальца на экран выскальзывала навигационная панель сбоку;
  • кроссплатформенность предпочтительна, один раз сделал, на обеих платформах использовал

Пока склоняюсь к PWA, но нужно точно выяснить еще некоторые вопросы:

язык разработки javascript:

  • A - да
  • B - да
  • C - да
  • D - нет

кроссплатформенно:

  • A - да
  • B - да
  • C - да
  • D - нет

интерфейс, схожий с нативными приложениями:

  • A - нет
  • B - да
  • C - да
  • D - да

нужно выкладывать в маркеты (и платить за это):

  • A - нет
  • B - нет
  • C - да
  • D - да

нужно скачивать клиента:

  • A - нет
  • B - нет
  • C - да
  • D - да

сложность разработки в порядке возрастания

  • A
  • B
  • C
  • D

производительность в порядке возрастания

  • ?
  • ?
  • C
  • D

Все ли я правильно расписал, и верно ли склоняюсь к PWA? Может что-то еще упустил?

 , ,

a-lexx
()

Почему не обновляется nginx в Debian?

Форум — Admin

В Debian buster подключил репозиторий nginx по этим инструкциям -> https://nginx.org/ru/linux_packages.html#Debian. Только вместо install пишу upgrade, т.к. nginx у меня уже установлен. Новая версия из репо подхватывается, но не устанавливается. Почему?

apt list –upgradable

Вывод списка… Готово

nginx/stable 1.16.1-1~buster all [может быть обновлён с: 1.14.2-2+deb10u1]

N: Есть 2 дополнительные версии. Используйте «-a» для их просмотра.

apt upgrade

Чтение списков пакетов… Готово

Построение дерева зависимостей

Чтение информации о состоянии… Готово

Расчёт обновлений… Готово

Следующие пакеты будут оставлены в неизменном виде:

nginx

Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 1 пакетов не обновлено.

 ,

a-lexx
()

Какие библиотеки/фреймворки порекомендуете для мобильной верстки?

Форум — Web-development

Есть у меня две верстки одного и того же проекта. Десктопную версию делаю пока вручную + jQuery. В мобильной версии желаю пощупать что-то еще. Хочу сравнить на собственном опыте оба подхода. Интересует именно сторона браузера, а не сервера! Ангуляр, если правильно понял, требует установки ноды на сервере, чего я делать не собираюсь.

 , , ,

a-lexx
()

Не получается поработать с postgresql из php

Форум — Web-development

Вылетает ошибка Call to undefined function pg_connect()

Модуль php7.4-pgsql установлен, в php.ini строчки раскомментированы extension=pdo_pgsql и extension=pdo_pgsql

Но в распечатке phpinfo() про postgresql ничего.

Где искать проблему?

os: debian 9, php: 7.4 (скачал с packages.sury.org)

 , ,

a-lexx
()

Обновление php в Debian 9

Форум — Web-development

Штатная версия php в Debian 9 - 7.0. Хочу установить версию php 7.4. И возникли вопросы: 1) при установке 7.4, 7.0 затрется или будет существовать параллельно с 7.4? 2) если затрется, повлияет ли это на стабильность системы?

 ,

a-lexx
()

Взаимодействие php и с++

Форум — Web-development

Нужно отправить набор данных json из php-скрипта в программу с++ и получить результат json. Как это можно сделать?

 ,

a-lexx
()

Как сделать правильные аргументы для функции decrypt (Pycrypto/Blowfish)?

Форум — Web-development

Всем ку! Имеются зашифрованные куки, прием зашифрованы не в python. Но расшифровать их нужно в python. Вот, например, кука: wjhH1qBTHoD4oM4vkI9UzNaj3K2kCkXV%2BupPfs1hLrU%3D
Ключ и вектор сохранены в redis, и имеют такой вид:
ключ: l\x1CF\x06\xAC\x00U\xD2v\xBEiQ\xD7\xE7\x0D_\xFA|\xFE_\xD9\x11\xE9\x13\x83\xF3\x87\x86\xBF@\x84
вектор: \xF6a\xD9[w\xCA\x0E@

Код питона:

encrypted = "wjhH1qBTHoD4oM4vkI9UzNaj3K2kCkXV%2BupPfs1hLrU%3D"
key = "l\x1CF\x06\xAC\x00U\xD2v\xBEiQ\xD7\xE7\x0D_\xFA|\xFE_\xD9\x11\xE9\x13\x83\xF3\x87\x86\xBF@\x84"
iv = "\xF6a\xD9[w\xCA\x0E@"
cipher = Blowfish.new(key, Blowfish.MODE_CBC, iv)
bs = Blowfish.block_size
encrypted = encrypted[bs:]
print(cipher.decrypt(encrypted))

А вопрос такой: как преобразовать входные строки, чтобы decrypt() их без проблем слопала?

 ,

a-lexx
()

Как в nginx замутить единую точку входа?

Форум — Web-development

Всем ку! В гуглояндексе по этой теме везде приводят такую конфигу:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Только ведь точка тут совсем не единая. Нужна конфига, где при любом поступившем uri , даже если там запрашивается какой-то несуществующий файл, или вообще белиберда какая, редиректило на /index.php?$args.

Пробовал так:

location / {
    rewrite ~* /index.php?$args;
}

- не дает эффекта.

 ,

a-lexx
()

Как перечитать конфиг nginx с помощью systemd?

Форум — Admin

запуск systemctl start nginx

останов systemctl stop nginx

перезапуск systemctl restart nginx

перечитать конфиг systemctl ? nginx

 ,

a-lexx
()

Почему не запускается Опера?

Форум — Admin

Еще никогда не устанавливал графические программы в линукс. Первой такой прогой стала Опера. Через FF скачал с официального сайта самый свежий пакет opera-stable*.deb и установил с помощью dpkg. Значок оперы появился в менюшке, но при нажатии на него ничего не происходит. В чем может быть причина?

p.s. а в тот ли я раздел запостил? (админы, перекиньте, плз., если что)

 , ,

a-lexx
()

Как зайти в графическую оболочку в linux?

Форум — Admin

Установил только что Debian 9.3 с графической оболочкой Gnome. При установке не создавал пользователей, предполагая вход под рутом. Но в графическом окне входа в систему не могу зайти под рутом, получаю сообщение «Не сработало. Попробуйте еще раз». Тогда захожу в консоль, создаю пользователя и уже под ним снова пытаюсь зайти в графическом окне. Но получаю то же сообщение. Что я делаю не так?

 ,

a-lexx
()

Как отправить куки из websocket-сервера?

Форум — Web-development

Всем ку! Пытаюсь отправить куки в браузер с помощью такого кода:

import base64
import asyncio
from cryptography import fernet
from aiohttp import web, WSMsgType
from aiohttp.web import middleware
from aiohttp_session.cookie_storage import EncryptedCookieStorage
from aiohttp_session import get_session, session_middleware, SimpleCookieStorage


@middleware
async def authorize(request, handler):
   session = await get_session(request)
   session['test_key'] = 'test_value'

   # где-то тут отправить куки в браузер
   
   return await handler(request)


async def ws_handler(request):
   ws = web.WebSocketResponse()
   await ws.prepare(request)
   
   async for msg in ws:
      if msg.type == WSMsgType.TEXT:
         if msg.data == 'close':
            await ws.close()
         else:
            await ws.send_str(msg.data + '/answer')
      elif msg.type == WSMsgType.ERROR:
         print('ws connection closed with exception %s' %
            ws.exception())

   return ws


fernet_key = fernet.Fernet.generate_key()
secret_key = base64.urlsafe_b64decode(fernet_key)
middlewares = [
   session_middleware(EncryptedCookieStorage(secret_key)),
   authorize
]

app = web.Application(middlewares=middlewares)
app.router.add_get('/ws', ws_handler)
web.run_app(app)

При запросе с браузера ожидаю увидеть куку AIOHTTP_SESSION.

1) Что нужно изменить/добавить, чтобы кука уходила в браузер?
2) Когда ее лучше отправлять, до или во время (возможно ли, если да, тот как) websocket-рукопожатия?

 , ,

a-lexx
()

aiohttp.web.Application и var_dump for Python: RecursionError

Форум — Web-development

Кто-нибудь пробовал применить var_dump (https://github.com/sha256/python-var-dump) к экземпляру aiohttp.web.Application?

from var_dump import var_dump
from aiohttp import web
    
app = web.Application()
var_dump(app)

У меня печатает многа-многа строк, сразу ясно, что намного больше, чем нужно, видно что что-то не так. И так печатает, пока не появится:

RecursionError: maximum recursion depth exceeded while calling a Python object

Где собака порылась?

 ,

a-lexx
()

Будет ли python 3.6 в stable Debian 9?

Форум — Web-development

В стабильном репо? Или появится только в Debian 10?

 ,

a-lexx
()

Как отправить питон-приложению сигнал завершения работы?

Форум — Web-development

Всем привет! Есть у меня приложение, представляющее из себя веб-сокет-сервер (asyncio, aiohttp), запускается под гуникорном, а гуникорн в свою очередь запускается с помощью systemctl. Как мне грамотно остановить таски в приложении, если приложение не связано с консолью, и ctrl+c использовать не могу? При systemctl gunicorn stop пробрасывается сигнал завершения в приложение? Если да, то какой?

 , ,

a-lexx
()

Квэсчин новичка git. Не удается удалить самый первый коммит

Форум — Web-development

Сегодня начал изучать git. Создал 2 коммита. Затем удалил второй коммит с помощью reset HEAD, а первый таким способом удалить не получается. Хочу, чтобы в git log не было ни одного коммита. Гугл пока не помог.

 

a-lexx
()

Нубский вопрос по python/asyncio/aiohttp/websockets

Форум — Web-development

Всем привет!) Пока разобрался с простейшим эхо сервером:

import asyncio
from aiohttp import web

async def ws_handler(request):
   ws_resp = web.WebSocketResponse()
   await ws_resp.prepare(request)

   async for msg in ws_resp:
       await ws_resp.send_str(msg.data)

   return ws_resp

app = web.Application()
app.router.add_get('/ws', ws_handler)

Как в вышеприведенный код грамотно добавить цикл, в котором сервер будет каждые 10 секунд отправлять сообщение клиенту?

# примерный набросок цикла
while True:
    await ws_resp.send_str('message')
    await asyncio.sleep(10)

Тут интересуют два варианта:
1) Для каждого клиента свой частный цикл, и если соединение с этим клиентом по какой-либо причине закрывается, то частный цикл прекращает свою работу;
2) Один независимый цикл для всех клиентов, прекращает работу вместе с завершением приложения

 , ,

a-lexx
()

Команда ss и время tcp-соединения

Форум — Admin

Всем привет! Хочу знать продолжительность каждого tcp-соединения с момента его установления и до настоящего момента. В интернетах есть такой пример:

$ ss -tn -o
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port 
ESTAB      0      0             192.168.1.2:43839     108.160.162.37:80    
ESTAB      0      0             192.168.1.2:36335     204.144.140.26:80     timer:(keepalive,26sec,0)
ESTAB      0      0             192.168.1.2:33141      83.170.73.249:6667  
ESTAB      0      0             192.168.1.2:58857      74.121.141.84:80     timer:(keepalive,23sec,0)
ESTAB      0      0             192.168.1.2:42794     173.194.40.239:80     timer:(keepalive,32sec,0)

Но у меня выдает такое:

ss -tn -o
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port     
ESTAB      0      0      192.168.1.20:80                 192.168.1.157:55030    
ESTAB      0      208    192.168.1.20:22                 192.168.1.157:50967               timer:(on,088ms,0)

Это означает, что соединению по ssh всего 088ms отроду, или я что-то не понимаю? Хотя «вишу» на этом соединении уже больше часа . И где данные по соединению 192.168.1.20:80 - 192.168.1.157:55030?

 , ,

a-lexx
()

События Linux

Форум — Development

Всем ку!) Не знаю, как грамотно выразить в технических терминах, скажу на обывательском языке, чего хочу. Допустим, создался/отвалился юникс-сокет, установилось/разорвалось tcp-соединение, запустился/остановился нужный мне демон и т.д., нужно, чтобы мое приложение перехватывало/наблюдало эти события (и далее передавало на веб-страницу на другой машине через веб-сокет, но это так, к слову). В какую сторону копать? Интересует именно событийная схема, без необходимости периодического перечитывания логов, запуска баш-команд и пр. Возможно ли это сделать?

 , ,

a-lexx
()

ssh не всегда запускается при старте системы

Форум — Admin

Иногда, по ощущениям примерно в 5-10% случаев, ssh не запускается при загрузке ос. journalctl выдает следующее:

янв 23 11:32:02 Unit2 sshd[432]: error: Bind to port 22 on 192.168.1.20 failed: Cannot assign requested address.
янв 23 11:32:02 Unit2 sshd[432]: fatal: Cannot bind any address.
янв 23 11:32:02 Unit2 systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
После этого ssh можно запустить только при физическом доступе к серверу. Почему так происходит?

 , ,

a-lexx
()

RSS подписка на новые темы