• Почему не работает созданная служба systemd?

    @Aves
    Проблема в отсутствии #!/bin/bash в dts-service.sh
    Или нужно в юните написать
    ExecStart=/bin/sh -c '/home/dts/bin/dts-service.sh'

    Ну и Type=forking нужен, только если ./khconsole форкается & и dts-service.sh завершается. Без этого Type нужен simple, то есть можно не указывать.
    Ответ написан
    Комментировать
  • Есть у кого-то негативный опыт работы через Upwork с Модульбанком?

    @vism
    Я выбрал модуль.
    Точка как конкурент, очень дорогой и после звонка их(точки) продажника, который пытался ввести меня в заблуждения, как дурачка, я определился.
    Точка пытались убедить меня перейти к ним, т.к.
    1-модуль частный, а они гос. банк (из-за того что их санировали, до этого тоже был частный) Минус скорее
    2-страхуются вклады (у всех страхуются)
    3-еще какую-то чепуху мололи.

    Модуль и только Модуль теперь!
    Ответ написан
    1 комментарий
  • Действительно случайное число?

    longclaps
    @longclaps
    Легко.
    Пусть нужно число в диапазоне 0..63 (для примера взял попроще).
    Каждый из участников приносит в конвертике своё самостоятельно сгенерированное "случайное" число, после чего как-нибудь вычисляется итоговое случайное число. Например:
    участник   число
    A            7
    B           13
    C           42
    D           49
    итого      7⊕13⊕42⊕49=17

    Фальсификация тут возможна лишь с подглядыванием одним из участников чисел всех остальных и подачей им своего числа последним.
    Ответ написан
    5 комментариев
  • Как сделать http сервер на Python анонимным?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Можно арендовать где-нибудь сервер (VPS, Amazon EC2, Heroku) и развернуть на нём приложение проксирующее запросы на ваш комп. Или можно купить услуги какого-нибудь сервиса, типа Cloudflare.
    Ответ написан
    2 комментария
  • NGinx как обратный прокси?

    AxianLTD
    @AxianLTD
    Здорово, а как насчет добавить ссылку на сайт из sites-enabled в sites-available?
    Ответ написан
    1 комментарий
  • Как правильно найти ускорения?

    @Alexander1705
    У вас есть вектор скорости и вектор ускорения. Проекция ускорения на вектор скорости - это и будет тангенциальное ускорение:
    |at| = a * norm(v)
    Другая составляющая будет нормальным ускорением:
    an = a - |at|*norm(v)
    Ответ написан
    Комментировать
  • Список в списке --> список?

    aRegius
    @aRegius
    Python Enthusiast
    >>> from collections import Iterable
    >>> def flatten(items):
    	      for x in items:
    		        if isinstance(x, Iterable):
    			            yield from flatten(x)
    		        else:
    			            yield x
    
    >>> a = [1, 2, 3, [4, 5, 6], 7, 8]
    >>> list(flatten(a))
    [1, 2, 3, 4, 5, 6, 7, 8]
    Ответ написан
    Комментировать
  • Как спроектировать архитектуру большого проекта с начальным знанием программирования?

    @asd111
    1. Спроектируйте сначала API. Т.е. весь список URL и что по какому URL будет происходить. А еще лучше составить ТЗ. Например
    ТЗ https://github.com/sat2707/hlcupdocs/blob/master/T...
    запросы
    GET /<entity>/<id> для получения данных о сущности
    GET /users/<id>/visits для получения списка посещений пользователем
    GET /locations/<id>/avg для получения средней оценки достопримечательности
    POST /<entity>/<id> на обновление
    POST /<entity>/new на создание

    2. Затем проектируете БД и реализуете необходимые SQL запросы и запросы к mongoDB.
    3. Затем начинайте реализовывать один URL за другим по очереди.
    Шаги 2 и 3 можно делать в любой последовательности, но начать желательно с API, т.е. с полного списка URL приложения.
    Ответ написан
    Комментировать
  • Почему не работает pip3 ошибка сертификата SSL?

    @zpa1972 Автор вопроса
    Вообщем, другим на будущее, перед установкой Python'а на SentOS, необходимо поставить библиотеку openssl (openssl-devel). Пересобрал установленную версию 3.5.3, установив заранее вышеозначенную библиотеку и "о чудо" pip3.5 перестал ругаться. Так же получилось и с версией 3.6.0
    Ответ написан
    1 комментарий
  • Когда использовать protected, private, public и static методы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть такая штука в ООП как инкапсуляция. С этого стоит начать и в принципе можно было бы закончить, если бы не static и не protected.

    public
    Публичные методы класса. Логично да? Какие методы у нас должны быть публичными - те которые составляют интерфейс класса. То есть для, например, класса кеширования у нас должен быть такой интерфейс:
    interface Cache {
        public function get($name);
        public function set($name, $value);
        public function has($name);
        public function remove($name);
        public function removeAll();
    }


    Давайте введем понятие "клиентский код". Это тот код который будет использовать ваш код, ваши объекты. Что он должен знать о реализации ваших классов? Да ничего он знать не должен. Он должен знать только как им пользоваться. Это как раз таки интерфейс и регламентирует. Мол "этот объект позволяет вам брать/сохранять/удалять данные в/из кэша. Клиентский код не знает где кэш находится, есть ли он вообще... да и ему и не нужно.

    private
    Внутренние методы классов. Те которые не входят в интерфейс но нужны, скажем, для уменьшения дублирования реализации.

    class FileCache implements Cache{
        public function has($name) {
              return is_file($this->getCacheFilePath($name));
        }
    
        public function get($name) {
             if (!$this->has($name)) {
                  return null;
             }
     
             return unserialize(file_get_contents($this->getCacheFilePath($name)));
        }
    
        private function getCacheFilePath($name) {
             return $this->cacheDir . '/' . $name;
        }
    }


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

    static
    Статические методы, это всяческие методы хелперы. Например в языках типа Java есть такое понятие как именованные конструкторы. Мол когда для конструирования объектов нужно много данных переделать или что-то еще, для удобства заводят статический метод какой а в нем уже реализуют какую-то логику. Желательно вообще что бы статический метод не содержал много логики, но... всякое бывает. Вообще тут стоит еще поподробнее почитать о том как себя ведут статические методы и свойства, в чем их особенность и т.д. Попробуйте тот же сингелтон сделать к примеру.

    class Template($content) {
        public static fromFile($path) {
             return new static(file_get_contents($path));
        }
    }


    Вот... Возможно человеки вроде FanatPHP разгромят мой ответ, или дополнят его...

    Так же если вам хочется научиться правильно составлять интерфейсы классов, следует почитать про low coupling и high cohesion. Эти два принципа должны заставить вас соблюдать баланс и держать в интерфейсе класса только то, что там должно быть. Так же к вопросу о наследовании можно подключить принцип подстановки Барбары Лисков. Даже на той же википедии почитайте. А там если станет интересно в принципе можно поискать интересные материалы по GRASP и SOLID.
    Ответ написан
    4 комментария
  • Порекомендуйте, на чём сделать backend?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Я не говорю, что надо делать на php, но все описанные его минусы не адекватные.
    1 . Авторизационные данные в сессии, а сессия не обязательно в БД.
    2. БД это не атрибут php. БД у Вас в любом случае будет и к ней будут запросы.
    3. Есть сокеты и чаты на них делают чаще.

    П.С.: По такому описанию (2 абзаца) давать совет по выбору инструмента не есть правильно. Но как правило сделать можно на каждой из приведенных технологий и стоит выбрать то что знаете.
    Ответ написан
    Комментировать
  • Как организовать хранение файлов на сервере?

    @marazmiki
    Укротитель питонов
    Правильно ли я понимаю что для хранение файлов их нужно разбивать по папкам,

    Неправильно.
    Для того, чтобы файлы загружались и благополучно отдавались, сегментировать (разбивать по папкам) их совсем не обязательно.

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

    А на боевых серверах использование хранилища в локальной файловой системе и вовсе нонсенс. Там эта проблема не стоит в принципе.

    Сегментацию можно сделать для, скажем так, красоты. Или чтобы было понятно, кому принадлежит тот или иной файл. Но практическая польза от неё сомнительна. Вреда, впрочем, тоже нет :)

    допустим на сервер пользователь с Ником username заливает файл file.mp4, и я сохраняю этот файл по пути u/us/use/user/usern/file.mp4 и такой путь формируется для каждого пользователя

    Опять неправильно.

    Во-первых, никогда, НИКОГДА не доверяйте данным, пришедшим от пользователя. Сохраняете загруженный файл – сгенерируйте имя сами. А оригинальное имя не возбраняется сохранить и в другом месте. Если понадобится дать возможность пользователю сохранить файл под оригинальным именем, это делается в несколько строк.

    Во-вторых, Ваша сегментация слишком агрессивная. Если представить, что юзернейм может состоять только из строчных латинских букв и цифр (итого алфавит 26+10=36 символов), то такое хранилище сможет вместить 36 ^ (1 + 2 + 3 + 4 + 5) = 36^15 = 2.21 * 10^23 файлов без повторений. А что если юзернейм короче 5 символов? А что если он переименуется?

    Помните "во-первых"? Так как нам нужно самим придумать имя файла, почему бы не воспользоваться либо UUID и сгенерировать уникальное (с высокой достоверностью) значение вида 28c5a6d8-f7b5-440f-aeaa-150e4fd0bebc, а его уже сегментировать? Например, два сегмента по два символа датут прикольные ссылки вида 28/c5/28c5a6d8-f7b5-440f-aeaa-150e4fd0bebc и возможность разместить 65 тысяч файлов так, чтобы они были по одной штуке в директории :)

    Есть также вариант использовать не UUID, а посчитать контрольную сумму файла и взять её в качестве имени. Практическая ценность такого хеша, правда, тоже стремится к нулю :)

    если будет 2 одинаковых названия файла у одного пользователя то просто добавляю к новому файлу номер (file1.mp4)

    Если речь идёт о Джанге, то она сама так делает, это штатная функция хранилища.
    Ответ написан
    1 комментарий
  • Что написать на Python новичку, чтобы удостовериться в своих знаниях?

    @Sergey6661313
    checkio.org пробовали? да задачки простые, но там есть функция "посмотреть другие варианты решений". И вот там самый смак...
    Ответ написан
    1 комментарий
  • Подгрузка производственного календаря

    @wait
    Для России есть официальный источник на портале открытых данных РФ:
    data.gov.ru/opendata/7708660670-proizvcalendar
    Ответ написан
    1 комментарий
  • Как программисту начать постепенно изучать робототехнику с Raspberry PI?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Самый простой способ, купить готовый набор. Например тут: amperka.ru/collection/kits (Наборы Малина)
    В наборе помимо платы, множество заданий с подробными инструкциями. От простого к сложному. + набор всех необходимых электронных компонентов чтобы начать.
    Ответ написан
    Комментировать
  • Треснул экран смартфона. Можно ли как-нибудь сделать управление телефоном с пк?

    edinorog
    @edinorog
    Троллей не кормить!
    щас только кофейную гущу достану. угадаем что у вас за операционка. потом сразу приступим к ответу
    Ответ написан
    2 комментария
  • Python delite Python delite?

    есть несколько вариантов, но остановитесь на этом:
    globals()['b'] = 2
    print(b)

    а ещё лучше заведите словарик:
    d = {}
    d['b'] = b
    print(d['b'])


    з.ы. о динамическом создании локальных переменных лучше сразу забыть
    Ответ написан
    1 комментарий
  • Какую виртуалку выбрать?

    only-victor
    @only-victor
    Я пробовал и kvm, qemu, xen, virtualbox.
    По удобству работы с виртуалкой и настройками лучше virtualbox нет.
    У меня виртуалка линукс работает с отдельным hdd на прямую без остановки стабильно всегда. Я рекомендую оставаться на virtualbox, почему:
    1.удобный интерфейс пользователя
    2.можно запускать виртуалку без графической оболочки
    3.стабильные драйвера
    4.стабильная работа в целом
    У меня нет вообще проблем с virtualbox. Я пользую archlinux.
    Ответ написан
    Комментировать
  • Питон для инженера?

    xSkyFoXx
    @xSkyFoXx
    1) Какие инженерные задачи вы решали с помощью питона? Почему не баш/пауэршелл?

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

    2) Есть ли какие-то ресурсы, где можно посмотреть на реализацию питоновских скриптов в администрировании? гитхаб?

    Собственно, Ansible. К тому же он сам написан на python, по этому любые новые плагины или какие-то продвинутые автоматизации вы должны будете писать на python.
    Ответ написан
    5 комментариев
  • Как найти код функции, которая при загрузке страницы обрабатывает входные данные на сайте?

    Скорее всего данные хранятся на странице в
    <script id="vpage" type="application/data">
    Загрузка данных идет в этом методе
    onDataLoad: function(n, o) {
      n || (n = decodeURI(e.util.base64.from(t("#vpage")[0].text))),
      this.setPage(t.parseJSON(n), o)
    },

    Если взять функцию декодирования прямо с сайта и поиграться в jsfiddle, то найдем ваш Клубный сервис Ауди-А3
    7e37560b4b38445e9b5de4182da121c5.jpg
    Ссылка на jsfiddle

    UPD: Как я нашел метод декодирования

    9ce0e417000a459282813a0ddda281c8.jpge5b0ca2e15fb47fcb9451884a4e3b139.jpg
    Ответ написан
    6 комментариев