LINUX.ORG.RU

352
Всего сообщений: 3162

Какой стек лучший Python(Django) или PHP(Laravel)?

Какой стек лучший Python(Django) или PHP(Laravel)? Я хочу услышать мнение людей? Плюсы и недостатки у обоих? Возможно даже если не Larevel или Django, есть ещё Flask, Yii и т.д. Как то я пытался изучить Django после питона, но у них документация показалось для меня очень большой все сразу не прочитаешь и не поймешь. Как к людям начинают осенить Django, после каких действий они начинают комфортно писать код на джанге? PHP тоже пытался учить после питона, но мне некоторые вещи показались не очень логичными в плане синтаксиса. Меня учили в книгах питона вот так..., а в php все наоборот... И начинается обдумывание и головные мозгодробительство. Почему так сделано, я же читал в питоне нужно так делать, а почему в PHP все наоброт, и т.п. такие вопросы. Возможно я что-то пропускаю в PHP. Но я не обсираю этот язык. Ни в коим случае! Я просто хочу стать веб разработчиком и любить свою работу. Пока что я знаю HTML, CSS и малеха Python. А! Ещё забыл, статические генераторы сайтов, такие как Hugo. Но в этих стат.генераторах писать код очень топорно и ограничено. Фиг чё толкового напишешь.

 , , , ,

dimcoin ()

Как сделать так что бы VK Bot на Python работал для каждого пользователя отдельно?

Просто у моего бота есть переменные которые в ходе общения с ним изменяются и если два или > людей будут одновременно с ним говорить то все запутается, возможно ли это исправить?

Человек на toster.ru написал:

"Возможно использовать

vars = {

"user1":{"a":1,"b":2},
"user2":{"a":4,"b":1},

}

current_user = api.get_user_id()

vars[current_user]["a"] = 5"

А куда это вставлять и как редактировать под себя? Тем более в vk_api вообще ничего подобного этому: api.get_user_id() нет.

 , , ,

Stivux ()

Всё слаще и слаще

Было:

m = re.match(p1, line)
if m:
    return m.group(1)
else:
    m = re.match(p2, line)
    if m:
        return m.group(2)
    else:
        m = re.match(p3, line)
        ...


ent = obj.next_entry()
while ent:
    ...   # process ent
    ent = obj.next_entry()

В 3.8 можно будет:

if m := re.match(p1, line):
    return m.group(1)
elif m := re.match(p2, line):
    return m.group(2)
elif m := re.match(p3, line):
    ...

while ent := obj.next_entry()
    ... # process ent

https://lwn.net/SubscriberLink/793818/0c6f9dd271021cd4/

При Гвидо такого не было.

 ,

vvn_black ()

«Отдам в добрые руки, просто так или за копеечку... очень хорошие проекты!» - Kenneth Reitz.

Kenneth Reitz ищет новых владельцев (кураторов проектов) для своих симпатичных репозиториев, среди которых тот самый requests и многое-многое ещё дельного на питоне.

https://github.com/not-kennethreitz/team/issues/21

Рассматривается и вариант получения материальной компенсации за смену владельца репозиториев, но деньги не являются основой для принятия решения.

Человек устал, человек отстраняется.

Upd. Вероятнее всего проекты перейдут под «крышу» Python Software Foundation.

 ,

vvn_black ()

Зашарить данные между тестовыми методами класса

Привет, парни.

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

cat foo.py 
import pytest

class TestFoo:
    data = None

    def test_one(self):
        print('data=', self.data)
        self.data = 10
        print('data=', self.data)

    def test_two(self):
        print('data=', self.data)

выхлоп:

pytest foo.py -v -s
============================================================================================================= test session starts =============================================================================================================
platform linux -- Python 3.7.3, pytest-5.0.1, py-1.5.3, pluggy-0.12.0 -- /usr/bin/python3.7
cachedir: .pytest_cache
metadata: {'Python': '3.7.3', 'Platform': 'Linux-5.1.5-x86_64-with-glibc2.2.5', 'Packages': {'pytest': '5.0.1', 'py': '1.5.3', 'pluggy': '0.12.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'hypothesis': '3.66.6', 'expect': '1.1.0'}}
rootdir: /tmp
plugins: metadata-1.8.0, html-1.20.0, hypothesis-3.66.6, expect-1.1.0
collected 2 items                                                                                                                                                                                                                             

foo.py::TestFoo::test_one data= None
data= 10
PASSED
foo.py::TestFoo::test_two data= None
PASSED

========================================================================================================== 2 passed in 0.01 seconds ===========================================================================================================

 , , ,

ubik ()

Как переопределить метод в модуле

если сделать так:

import utils
def nnow():
    pass
utils.now = nnow()

то в дальнейшем при вызове :

import utils
utils.now()

все работает.

Если же вызывать так:

from utils import now
now()

соотв не переопределяется.

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

 

Jopich1 ()

В Джаву питоньего синтаксиса подвезли

public int foo(int x) {
    if(x < 10) {
        return 2*x - 1;
    } else {
        return x % 3 * x - 6;
    }
}
public int foo(int x):
    if x < 10:
        return 2*x - 1
    else:
        return x % 3 * x - 6
try(Scanner keys = new Scanner(System.in)) {
    System.out.print("Enter a number: ");
    int x = Integer.parseInt(keys.nextLine());
    System.out.println("Your number was: " + x);
} catch(NumberFormatException e) {
    e.printStackTrace();
} finally {
    System.out.println("Goodbye");
}
try var keys = new Scanner(System.in):
    System.out.print("Enter a number: ")
    int x = Integer.parseInt(keys.nextLine())
    System.out.println("Your number was: " + x)
catch NumberFormatException e:
    e.printStackTrace()
finally:
    System.out.println("Goodbye")

Больше примеров https://github.com/raptor4694/JavaPy

Ну что, пойдут питонисты писать на Джаве или опять что-то не нравится?

 , ,

foror ()

Python, urwid (TUI) и композитные виджеты

Чет я туплю и никак не осилю эту штуку.

Вообщем мне нужен выделяемый (selectable) композитный виджет (тобеш состоящий из других виджетов) в котором некоторые его компоненты будут раскрашены в иные цвета - но при этом при выделении корректно сменять цвет. Вот какраз с последним я и застрял. Если все вложенные виджеты в единой раскраске, все нормально. Но если какойнибуть из них раскрасить иначе, то при выделении у него цвет не сменяется.
Уже как только ни пробовал, нифига не выходит.
В примерах подобной штуки нигде нету, такчто глянуть некуда. но поидеи штукаж простая.

Подскажите ктонить как это сделать?

widgets.py

#!/usr/bin/python3

import urwid
from urwid import WidgetWrap, Pile, Columns, Text, Padding, AttrWrap, SelectableIcon, ListBox, Divider
from urwid.command_map import ACTIVATE
from urwid.util import is_mouse_press
import urwid.raw_display

urwid.set_encoding("UTF-8")

class FilterItem(WidgetWrap):
   def __init__(self, name, descr, count):
      self._w_name=Text(f'{name}')
      self._w_count=Text(f'{count}', align='right')
      self._w_descr=Text(f'{descr}')

      #! если убрать эту строку, все работает коректно, если оставить - описание элемента перестает получать фокус
      # self._w_descr=AttrWrap(self._w_descr, 'style2', 'style2-focus')

      w=Pile([
         Columns([
            self._w_name, self._w_count
         ], 1),
         self._w_descr
      ])

      w=AttrWrap(w, 'style1', 'style1-focus')
      self.__super.__init__(w)

   def selectable(self):
      return True

class FiltersList(urwid.SimpleFocusListWalker):
   def __init__(self):
      grp=[]
      data=[
         FilterItem('Item name', 'Descreption text', 1),
         FilterItem('Item name', 'Descreption text', 1),
         Divider('⎼'),
         FilterItem('Item name', 'Descreption text', 1),
         FilterItem('Item name', 'Descreption text', 1),
         FilterItem('Item name', 'Descreption text', 1),
     ]
      super().__init__(data)

class DialogList(urwid.SimpleFocusListWalker):
   def __init__(self):
      grp=[]
      data=[
         Dialog('d1', [
            {'id':'m1', 'isIncoming':True, 'from':'user1@mail.ru', 'to':['byaka.life@gmail.com', 'user2@mail.ru'], 'subject':'Some message 1', 'timestamp':datetime_now()-datetime_delta(days=1), 'bodyPlain':'Some text 1', 'bodyHtml':''},
         ]),
         Dialog('d2', [
            {'id':'m1', 'isIncoming':True, 'from':'user1@mail.ru', 'to':['byaka.life@gmail.com', 'user2@mail.ru'], 'subject':'Some message 1', 'timestamp':datetime_now()-datetime_delta(days=1), 'bodyPlain':'Some text 1', 'bodyHtml':''},
         ]),

      ]
      self.__super.__init__(data)

class ScreenMain(object):
   palette = [
      ('body', 'white', 'dark blue'),
      ('style1', 'white', 'dark magenta'),
      ('style1-focus', 'black', 'brown'),
      ('style2', 'white', 'light magenta'),
      ('style2-focus', 'black', 'yellow'),
   ]

   def __init__(self):
      self.screen=urwid.raw_display.Screen()
      self.screen.set_terminal_properties(colors=16)
      self.screen.reset_default_terminal_palette()
      self.screen.register_palette(self.palette)

      self.layout=AttrWrap(Columns([
         ('weight', 2, AttrWrap(Pile([
            Padding(ListBox(FiltersList()), left=1, right=1),
         ]), 'style1')),  # sidebar

         ('weight', 8, Pile([

         ])),  # wrapper

      ], 1), 'body')
      self.layout.set_focus_column(0)
      self.layout=urwid.Frame(self.layout)

   def run(self):
      self.loop=urwid.MainLoop(self.layout, screen=self.screen, unhandled_input=self.input)
      self.loop.run()

   def input(self, input, raw_input=None):
      if 'q' in input or 'Q' in input: raise urwid.ExitMainLoop()
      return []

if __name__ == '__main__':
   ScreenMain().run()


собственно 17 строка.

Где ошибка?

 ,

genryRar ()

Engineer - AI/ML & Image Processing

В компанию, разрабатывающую онлайн чат платформу, требуется AI & Machine Learning инженер.

Разработка автоматической системы анализа видеопотока с целью выявления непристойного поведения в чатах.

Требования:

  • Математическое образование
  • Опыт разработки алгоритмов для распознавания изображений
  • Знание Python, Java или C++
  • Опыт работы с TensorFlow, OpenCV, Keras и тп
  • Уверенное знание принципов обработки изображений
  • Опыт в настройке и обучении нейронных сетей
  • Устойчивая психика

Обязанности:

  • Подготовка датасетов для обучения/тестирования алгоритмов распознавания
  • Разработка и отладка алгоритмов распознавания

Работа удалённая 30-40 часов в неделю, с возможностью релокации в Португалию (Лиссабон).

  • З/п 2000-3000 EUR гросс для 40 часовой недели, налоги оплачивает сотрудник сам.

Резюме шлите мне на dm_alexeev@protonmail.com

 , , ,

dm_alexeev ()

VBox.Debian 10. Kivy. No matching FB config found при исполнении кода Python

Стоит виртуалка. Установлены kivy и kivymd. При исполнении самого минимального кода из-за вызова метода run() возникает ошибка. Вот код программы:

from kivy.app import App
from kivy.uix.button import Button

class MyApp(App):    
    def build(self):
        return Button()

if __name__ == '__main__':
    MyApp().run()


Вот вывод при выполнении:
qaz@debian:~/code$ python3 main.py
[INFO   ] [Logger      ] Record log in /home/qaz/.kivy/logs/kivy_19-07-09_23.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.3.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [KivyMD      ] KivyMD version: 0.100.2
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [Window      ] Provider: x11(['window_egl_rpi', 'window_sdl2'] ignored)
No matching FB config foundq


Линуксом пользуюсь совсем недавно, так что прошу простить за глупость

 , , ,

kolyasik45 ()

Голосовой ассистент. Что доступно?

Не всегда есть возможность трогать клавиатуру и мышь (руки в масле\пыли\стружке). Нужен голосовой ассистент, который:

* Может быть активен в фоне, слушая команды и активируясь по заданному слову\фразе
* Иметь возможность выполнить кастомно заданную команду (типа «активируй узел 1443», где «активируй узел» выполнит скрипт node.sh, а 1443 пойдет в параметр.
* Работать автономно от сети. Хранилище для настроенного локального анализатора можно выделить до 100 ГБ.
* Давать аудиоподтверждение принятой команды (не всегда есть возможность посмотреть на экран).

Если надо будет долго обучать под распознавание своего голоса - норм.

Что есть из доступного? Если опенсорс - еще лучше.

В теги добавляю пистон, обычно по этим вопросам его долбят.

 ,

PPP328 ()

DeepNude удалили с GitHub :(

И официальную свободную версию https://github.com/deepinstruction/deepnude_official , и выложенную ранее отревершенную https://github.com/open-deepnude/open-deepnude . Удалены даже аккаунты deepinstruction и open-deepnude. Никаких объяснений не нашёл.

Кто-нибудь в курсе, что случилось? Помимо предположений о заморозке аккаунтов.

 , , ,

question4 ()

Аспирантура по machine learning в Австралии

Curtin University (Австралия) открывает новую вакансию на обучение в аспирантуре (PhD) в машинном обучении для обратных задач и оценки неопределенностей. Позиция рассчитана на 3 года и финансируется Curtin University Oil and Gas Innovation Centre (CUOGIC). Успешный кандидат получит возможность работать в, пожалуй, самой хайповой научной теме современности и применять результаты исследований в нефтегазовом секторе.

Подробное описание и контактные данные: https://scholarships.curtin.edu.au/Scholarship/?id=3898

Требования к кандидатам включают хорошее знание английского, уверенный Python либо С++, и опыт разработки нейронных сетей с Keras, TensorFlow, PyTorch или подобным.

 , ,

kanga_root ()

Python 3.7+ виртуальные окружения и установка зависимостей

Вижу разные рекомендации по использованию virtualenv, venv, pipenv, conda, etc и всяческих оберток над ними.

Начиная с версии 3.3 часть функционала virtualenv перенесли во встроенный venv и оф. документация рекомендует venv.

Note If you are using Python 3.3 or newer, the venv module is the preferred way to create and manage virtual environments. venv is included in the Python standard library and requires no additional installation. If you are using venv, you may skip this section.

Однако документация к virtualenv говорит, что он богаче своими возможностями.

virtualenv is a tool to create isolated Python environments. Since Python 3.3, a subset of it has been integrated into the standard library under the venv module. Note though, that the venv module does not offer all features of this library (e.g. cannot create bootstrap scripts, cannot create virtual environments for other python versions than the host python, not relocatable, etc.).

Собственно, что предпочтительнее использовать и почему? А также что использовать для установки зависимостей: pipenv, poetry, … ?

Прошу специалистов дать краткие пояснения, чтобы не было каши в голове.

 , ,

aquadon ()

Telgram bot

Добрый день! Кто-нибудь использовал бот для управления сервером и мониторингом сети? У меня был опыт только на винде в этом. Хочется написать бот на python для простого мониторинга состояния серверов и доступности некоторых узлов сети.

 ,

ShamanVarro ()

как правильно записывать файлы из асинхронных функций?

Собственно сабж.

Отдельный поток?

На примере python.

Не код прошу, а «лучшие методики» (best practices).

 ,

sniper21 ()

Быстрый настраиваемый парсер обратных польских нотаций с биниднгами для питона?

Внезапно не смог найти готовых быстрых реализаций. Неужели оно настолько непопулярное?

 , ,

genryRar ()

очереди воспроизведения в discord.py

Пилю бота для воспроизведения 30 гб треков на сервере, по команде + начало пригрывания, - стоп, skip следующий. Тут все ясно, вопрос вот в чем, воспроизведение происходит следующим образом через либу :

# подключение
channel = message.author.voice.channel
voice = await channel.connect()
# воспроизведение
voice.play(discord.FFmpegPCMAudio('test.mp3'))
не могу въехать как следить за воспроизведением по очереди

 , , ,

foozzi ()

Как в Python работать с определённым каталогом в .xz файле?

Есть .xz

Питон прекрасно его открывает, работает с файлом в корневом каталоге.

Т.е. tar = tarfile.open(name='archive.xz', mode='r:xz'), в этом архиве есть file - к нему вопросов нет. Читается, парсится, операции над ним совершаются.

Однако, нужно получить доступ к файлам в дочернем каталоге в архиве.

Гуглил, читал документацию - предлагают только распаковать. А вот распаковывать очень не желательно.

 , , ,

Mamin_simpotyaga ()

Вызов питоновских методов из си питоновского модуля

Есть питоновский модуль, написанный на си. Он принимает callback от питоновского кода. И когда нужно вызывает.

Но вот так работает


def cb(args):
... print("callback")

mymodule.set_callback(cb)

А вот так


class myclass(object):

.. . def cb(self, args):
......  print("callback")

.... def __init__(self):
...... mymodule.set_callback(self.cb)

Нет, в тот момент, когда должен вызваться callback происходит segfault

Из кода модуля я для вызова пробовал использовать PyObject_Call и PyObject_CallObject

 ,

cvs-255 ()