Идея проекта

ArbNet
На сайте с 27.10.2019
Offline
124
#101
PandaWS #:
Забросить УСПЕШНЫЙ ПРОЕКТ.....потому что НЕ ПРЕНОСИЛ ДЕНЕГ.....уйти на завод....и потом ликвидировать.....
Что ж там была за успешность если он ничего не приносил?

Приносил, но не много. В то время с рекламы доход был копеечный, интернет платежами мало кто пользовался, я практически ничего не продавал. А проект был большой с разными разделами: фриланс, форум, рекламный брокер, магазин цифровых товаров, биржа акций проектов и др. Были несколько сотен постоянных пользователей, которые ждали, что проект начнёт раскручиваться, а у меня тогда не было денег на рекламу, оплату админам, модераторам и тд. Я по большей части занимался доработками, потом переключился на трейдинг. Постепенно пользователи уходили, да и когда стал работать на заводе вообще проект забросил.

Sly32 #:
Давай ты на своем фреймворке запилишь мне сайт для онлайн-обучения, а то совсем забросил проект, нет времени?

У меня пока и своих дел хватает. Как так то? Ты ж инженер, который сайты делает, сапожник без сапог получается. В чём проблема, почему не можешь сам сделать? Нет времени это всё отговорки..

Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp
Aisamiery
На сайте с 12.04.2015
Offline
293
#102
PandaWS #:
Что ж там была за успешность если он ничего не приносил?

Вы еще не слышали про успешный успех? Вот и ему Успешный проект приносил успех... успешный.... успешный успех... чет я запутался

ArbNet #:
ЗЫ. То что вы ниже показали пример магазина диванов. Накидать бизнес логику, это пустяковое дело, это не разработка, это я называю нюансы для конкретного сайта.

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

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Aisamiery
На сайте с 12.04.2015
Offline
293
#103
ArbNet #:
Были несколько сотен постоянных пользователей

Чуть чуть осталось до примера =))


Sly32
На сайте с 29.03.2012
Offline
303
#104
ArbNet #:
Ты ж инженер, который сайты делает,

Ты серьезно? Я столько времени пишу, что не занимаюсь сайтами давно... прочитай уже про PaaS SaaS.... И такто я занимаюсь тем, за что мне платят) онлайнкурс это хобби. 

Я и не сомнеавался шо получу отговорки

T7
На сайте с 19.09.2018
Offline
63
#105
ArbNet #:
да и когда стал работать на заводе вообще проект забросил.

Не те аргументы. Вот, вы говорите,  не понятым остались c XML. Так вы и не пояснили, где цимес то. Все, кто, что то делает спросили - а нафига? Понятно, что хтмл документ лучше всего описать - если в терминах php, то stdclass/ассоциативный массив, что, по типу хранения, сводится к json/xml/yaml и т.д.

В итоге,  тайтл, кейвордс, контент и дескрипшн,  можно дополнить много чем, ну например, ближайшими для юзера гео объектами из вашей бд:

===
GEO query for ул. Социалистическая, 1, Ногинск, Московская обл., 142409 coordinates [55.861687, 38.4612583]

{'_id': 'moskow', 'regId': '4de427d8409a2ce6', 'region': ['Москва', '55.755814,37.617635'], 'cid': 'moskva', 'visible': 1, 'location': {'type': 'Point', 'coordinates': [37.617635, 55.755814]}, 'name': 'Москва', 'morph': ['Москва', 'Москвы', 'Москве', 'Москву', 'Москвой', 'о Москве', 'в Москве'], 'delivery': {'company': '', 'adres': ''}}

{'_id': 'vladimir', 'regId': 'c594f28373bff8b9', 'region': ['Владимирская область', '56.013588,40.679166'], 'cid': 'vladimir', 'visible': 1, 'location': {'type': 'Point', 'coordinates': [40.40703, 56.129042]}, 'name': 'Владимир', 'morph': ['Владимир', 'Владимира', 'Владимиру', 'Владимира', 'Владимиром', 'о Владимире', 'во Владимире'], 'delivery': {'company': 'Деловые Линии', 'adres': 'Куйбышева ул., 4'}}

{'_id': 'ryazan', 'regId': '03bb9b253cc7f66a', 'region': ['Рязанская область', '54.333363,40.62524'], 'cid': 'riazan', 'visible': 1, 'location': {'type': 'Point', 'coordinates': [39.734928, 54.629148]}, 'name': 'Рязань', 'morph': ['Рязань', 'Рязани', 'Рязани', 'Рязань', 'Рязанью', 'о Рязани', 'в Рязани'], 'delivery': {'company': 'Деловые Линии', 'adres': 'Окружная дорога, 185 км, стр. 6а'}}

{'_id': 'tver', 'regId': '3879ab7468a95a5f', 'region': ['Тверская область', '57.093033,34.706195'], 'cid': 'tver', 'visible': 1, 'location': {'type': 'Point', 'coordinates': [35.911896, 56.859611]}, 'name': 'Тверь', 'morph': ['Тверь', 'Твери', 'Твери', 'Тверь', 'Тверью', 'о Твери', 'в Твери'], 'delivery': {'company': 'Деловые Линии', 'adres': 'п. Элеватор, 3-й переулок, 6, стр. 1'}}

{'_id': 'tula', 'regId': '82cc39fcd2313c01', 'region': ['Тульская область', '53.888064,37.575693'], 'cid': 'tula', 'visible': 1, 'location': {'type': 'Point', 'coordinates': [37.617752, 54.193033]}, 'name': 'Тула', 'morph': ['Тула', 'Тулы', 'Туле', 'Тулу', 'Тулой', 'о Туле', 'в Туле'], 'delivery': {'company': 'Деловые Линии', 'adres': 'д. Нижнее Елькино, 77'}}

Так или иначе, ни у кого нет проблем, чтобы хранить, получать, удалять, добавлять эти вещи. Я в монге, запрос для получения ближайших? Да вот он: 

query = {
    'visible':1,
    'location': {
        '$near': SON([
            ('$geometry', SON([
                ('type', 'Point'),
                ('coordinates',
                [coords[1], coords[0]])
            ])),
            ('$maxDistance', 300000)]
            )
        }
    }


async for doc in coll.find(query).limit(5):
    .....

Просто совет. Если ищете поддержки в среде разработчиков, попытайтесь показать, где ваш инструмент лучше.

forumovod
На сайте с 13.11.2007
Offline
156
#106
ArbNet #:
Современный форум должен быть лёгким, с удобным интерфейсом(не листать то в верх, то в низ чтобы перейти на другую страницу и тд.), самомодерируемым, с системой штрафов, оплаты за полезные сообщения и тд.

Это вроде бы называется пожелания, а не принципы, на которых создается движок форума нового поколения.

Sly32
На сайте с 29.03.2012
Offline
303
#107
timo-71 #:
Просто совет. Если ищете поддержки в среде разработчиков, попытайтесь показать, где ваш инструмент лучше.

Ты лучше посчитай, сколько раз этот совет звучал тут и  посмотри на реакцию ТСа. Это просто однозначно доказывает, что он троль и больше никто. Не будет( да и не существует) накакого релиза никакого продукта. Так, чисто покрасоваться на форуме.

Лучше расскажи как про асинхронку и монгу)

T7
На сайте с 19.09.2018
Offline
63
#108
Sly32 #:
Лучше расскажи как про асинхронку и монгу)

А чего там рассказывать? Как сказал бы ТС,  "приляпываю" потихоньку кучу либ🤣

from aiohttp import web, __version__
from aiojobs.aiohttp import setup

import aioredis
from motor.motor_asyncio import AsyncIOMotorClient

from jinja2 import FileSystemLoader
from aiohttp_jinja2 import setup as aiohttp_jinja2_setup
....

async def create_aiodb(app):
    dsn = CNF['mongo']
    app['dbname'] = dsn.split('/')[-1]
    app['db_engine'] = AsyncIOMotorClient(dsn)[app['dbname']]

async def on_startup(app):
    await create_redis_pool(app)
    await create_aiodb(app)

app.on_startup.append(on_startup)
app.on_cleanup.append(on_cleanup)
app.on_shutdown.append(on_shutdown)
app.on_response_prepare.append(on_resp_prep)


"""
где то потом, в данном случае, если юзер мышкой повозил, то post xhr, ну там понять его реальность,
в свете нынешних ботоатак на сайты, и, заодно, определить георгафию пользователя
"""

coll = self.request.app['db_engine'].ru_geo
self.request['out']['nearby'] = []
async for doc in coll.find(
          query,
          {'cid':1, 'regId':1, 'name':1, 'location':1, 'region':1}
    ) .limit(6):
    self.request['out']['nearby'].append(doc)

return json_response(request['out'])   

В итоге, имеем.



ArbNet #:
Кодеры как сейчас себя называете, приляпываете кучу либ, которых сейчас немерено кое-как костылями своими что-то сварганили и пофиг,

26 уже приляпял (requrements.txt)

aiohttp
aiojobs
aiohttp_jinja2
jinja2
motor
aiosqlite
aioredis
aiohttp_session
aiostalk
pyexcel
pillow
pymorphy2[fast]
pymorphy2-dicts-ru
gensim
passlib
bs4
lxml
requests
pyexcel-xlsx
pyexcel-xls
pyyaml
recordclass
uvloop
cryptography
basicauth
xxhash

И ещё буду🤓

Правда изучать приходится,  мотор, там,  аио - нудно и скучно. Тестировать, разные варианты смотреть, по нагрузкам, потребляемым ресурсам и т.д. Нудятина типа такого, как чтобы RPS много, а load average и пр. RES  мало. 


backlog=10240


Здорово помогают штучки типа раз, два.( контролируемый способ планирования фоновых задач + beanstalkd) Здорово снижает время генерации документа, за счет того что часть задач может выполняться уже после отрузки документа.

Лог задач beanstalkd заканчивается такой строкой (после ab -n 20000)

Task 20000 (JobId: 77658) done!--2021-02-20 12:51:06.820591~

Которые запускаюся в свою очередь

await spawn(request, coro(request))
# где в коро есть

if 'talk_job' in request:
    await add_job(request['talk_job'])

До внедрения этих штучек, РПС был примерно 400-500, а сейчас 900+ на типичной индекс паги ( для реального юзера чуть меньше, юзер агент апачбенч в списке ботов, ряд операции для ботов не выполняется. Сессия там и т.д. )

AsyncIOMotorClient – Connection to MongoDB — Motor 2.3.0 documentation
  • motor.readthedocs.io
class *args , **kwargs ¶ Create a new connection to a single MongoDB instance at host:port . Takes the same constructor arguments as , as well as: Parameters: Get the db_name on client . Raises if an invalid database name is used. coroutine name_or_database , session=None ¶ Drop a database. Raises if name_or_database is not an instance of ( in...
ArbNet
На сайте с 27.10.2019
Offline
124
#109
timo-71 #:
26 уже приляпял (requrements.txt) ... И ещё буду🤓

Как всё запущено, кошмар..

T7
На сайте с 19.09.2018
Offline
63
#110
timo-71 #:
юзер агент апачбенч в списке ботов, ряд операции для ботов не выполняется

Уупс, соврал. В данном случае 

ab -n 20000 -c 500 -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0" http://audodo.aio1/

Юзер агент который заставит апп отработать по полной - и сессия, и токен,  и все данные и логи  для аналитики запишутся..

ArbNet #:
Как всё запущено, кошмар..

И пофиг.. Лучше, скрин

ab -n 20000 -c 500 -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0" http://sndl.local/

покажите и htop при этом.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий