LINUX.ORG.RU

Сообщения makoven

 

Как правильно использовать библиотеки в современном вебе?

Здравствуйте

Вот например библиотека с material design для Vue: https://github.com/vuetifyjs/vuetify

В package.json у нее указано: «module»: «dist/vuetify.js»,. При этом папка dist отсутствует

Допустим, у меня в проекте дюжина подобных библиотек. Как предполагается использовать их (с webpack-ом)? Ставить эти либы со всеми dev-зависимостями и ручками их билдить?

 , , ,

makoven
()

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

Здравствуйте. Делаю формочку, и чтобы было красиво хочу чтобы все элементы были одной ширины.. И ЧСХ, они были одной ширины, пока не добавил в начало странички

<!DOCTYPE html>

После того как добавил DOCTYPE, кнопка уменьшилась. Чому так? Проверял на последних FF и Хроме и на IE11 - везде так.

Код на jsfiddle: https://jsfiddle.net/pyzjL4m7/2/

Для Ъ:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
</head>
<style>
    body {
        font-size: 14pt;
    }
    input, div {
        display: block;
        margin: 0;
        padding: 0;
        border: 1px solid gray;
        width: 200px;
        height: 3em;
    }
</style>
<form class="sign-form gray-border">
    <input type="password" v-model="password" placeholder="Пароль">
    <input type="submit" value="Войти">
</form>
<div>DIV</div>

</html>

 , , ,

makoven
()

Откуда взялася $MAINPID?

Здравствуйте

В доках по gunicorn есть пример systemd сервиса. И вот в описании этого сервиса откуда ни возьмись появляется переменная $MAINPID.

Может кто знает, откуда она взялась? Где про нее почитать? Является ли она частью gunicorn или systemd или это какое-то линуксовое соглашение? Гугл не находит адекватного описания

 

makoven
()

Посоветуйте API

Здравствуйте

Есть задачка: загрузить json-схемы из папки и сделать их доступными в других иодулях програмы

Накалякал нечто в стиле node.js. По ощущениям, и API и сам код модуля вышли какие-то неочень. И, я не в курсе, но наверное, с этим кодом что-нибудь не так в плане потокобезопасности? Раз есть глобальная переменная

Как бы вы реализовали API для этой задачки?

# API
# Где-нибудь в main.py
from json_schema import load_schemas
load_schemas(project_dir / 'json_schema')

# Позже, в других модулях
from json_schema import schema
schema['user']

 

# модуль json_schema.py
from pathlib import Path
from typing import Any, Dict, Union
from json import load

schema: Dict[str, Any] = {}

def load_schemas(schemas_dir: Union[Path, str]) -> None:
    for p in Path(schemas_dir).iterdir():
        if p.is_file():
            with p.open() as f:
                schema[p.stem] = load(f)

 

makoven
()

Как геттеры в Vue получает список своих зависимостей?

Здравствуйте

В гайде по Vue написано, что геттеры кешируют результат и автоматически обновляют его когда меняется значение одного из зависимых свойств. Например тут:

var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: {
    reversedMessage: function () {
      return this.message.split('').reverse().join('')
    }
  }
})

значение свойства «computed» изменится только если изменить свойство this.message

Подскажите, при помощи какой такой черной магии, Vue для каждого геттера получает список свойств, от которых этот геттер зависит? Неужто парсит тело функции регулярками?

ЗЫ: Исходники пробовал читать - не смог

 , ,

makoven
()

Глупый вопрос про веб-фреймворк и загрузку фоток

Здравствуйте

Вот читаю я доку про gunicorn. В ней написано, что количество воркеров желательно делать 2 * число_ядер + 1.

Допустим, у меня 1-ядерный VPS. Запускаю я свой бекенд с тремя воркерами. Бекенд умеет принимать фотки от пользователей. 3 юзера одновременно начинают заливать фото -> сервис парализован: даже гет-запросы перестают обрабатываться

Как решается эта проблема в среде синхронных фреймворков?

 , , ,

makoven
()

Есть ли смысл писать сразу на Django и React?

Здравствуйте

У меня есть опыт писания на олдфажных технологиях, где вся разметка генерится серверным фреймфорком, а на клиенте чуть-чуть jquery. И есть опыт написания Single Page Applications на Angular, в которых страничка полностью генерится на js прям в браузере, а бэкенд умеет отдавать только JSON

Интуиция подсказывает, что истина где-то посредине, и в большом проекте удобнее будет часть страницы генерить серверными шаблонами, а в браузере брать нагенерённный сервером html, превращать его в virtual DOM и делать какой-то интерактив на блестящих новеньких фреймворках, типа React или Vue

С React и Vue почти не знаком, но слышал что в первом есть кастомные тэги и hydrate, а второй в плане разметки вообще как ангуляр, так что проблем натянуть VDOM на HTML быть вроде как не должно.

С другой стороны, меня мучают подозрения, что хипстерыникто уже не работает со статическим html в браузере. Вместо этого, весь html превращается в js на этапе сборки сферическим Webpack-ом. А в браузер приходит пустая html-страничка и пачка js-блобов, генерирующих контент

Что хотел спросить-то. Имеет ли смысл синергия условных Django и React (Vue)? Если да, то как она должна выглядеть? Или кругом уже давно сплошные SPA? Прохладные истории приветствуются

 , , ,

makoven
()

Какие производители voip-трубок сейчас в почете?

Здравствуйте. Извините за непрофильную тему и тег asterisk. Просто где еще найти столько высококласных профессионалов по всему.. :)

Наши трубки Yealink W52P с шильдиком «Ростелеком» вечно теряют базу или замолкают посреди разговора. Хочу купить какие-нибудь другие. Но не знаю что сейчас на рынке VoIP оборудования самое стабильное и надежное

Требуются две беспроводных DECT (или может Wi-fi?) трубки, могущих в SIP-протокол. Главное стабильность. Подскажите производителя или конкретную марку

ЗЫ: проводные не подойдут, т.к. официанты должны быть на связи особеннодаже в туалете

 , ,

makoven
()

Не могу настроить статику на nginx

Здравствуйте

Несколько дней уже в ступоре. Пытаюсь открыть статическую веб-страничку через nginx. По адресу 192.168.1.3/cards открывается в любом браузере с любого девайса.

А вот по localhost/cards открывается только в файрфоксе; хром упорно говорит 404 Not found. ЧЯДНТ?

server {
	index index.html index.htm;

	server_name 127.0.0.1 localhost 192.168.1.*;

	autoindex on;
	
	# cards
	location /cards {
    	        alias /share/Projects/cards/cards/web;
	}

	# cards photos
	location /cards/photos {
                alias /share/Projects/cards/data/photos;
	}
}

 

makoven
()

Что с моей кубунтой?

Здравствуйте

Много лет сидел на арче и привык к мелким косякам работы програм, но от кубунты я подобного не ожидал..

Суть такова. Внезапно начал крешится libreoffice (writer, calc) при запуске. Гугление подсказало, что вылечить можно создав симлинки в директории /etc/apparmor.d/disable/ на:

/etc/apparmor.d/usr.lib.libreoffice.program.oosplash
/etc/apparmor.d/usr.lib.libreoffice.program.senddoc
/etc/apparmor.d/usr.lib.libreoffice.program.soffice.bin
/etc/apparmor.d/usr.lib.libreoffice.program.xpdfimport

Но на этом беды не закончились. Теперь не открываются диалоговые окна kde в libreoffice/chromium. Точнее открываются после чего зависают на пару минут (Не знаю, связана ли эта проблема с предыдущей). Гугление не помогло

Никто случайно не знает что за фигня и как починить?

 , , ,

makoven
()

Работа с байт-строками в Python3

Здравствуйте

Перевожу одну библиотеку со второго на третий питон. 2to3 исправила мне принты и другие мелочи

Проблема со строками. Во py2 строки байтовые, чем автор воспользовался по полной: все двоичные данные хранятся и обрабатываются как строки.

Поиском прошелся по строковым литералам, заменил всякие d='\x05' на d=b'\x05'. Но тут объявился новый челлендж: во втором питоне индексация байтстроки возвращает байтстроку, а в третьем питоне она возвращает число.

Размышления насколько то или иное поведение логично оставим на совести Гвидо, но факт в том, что почти вся логика библиотеки стала невалидна.

Примеры фейлов:

data = b'123'

data[0] == b'1' # fail. data[0] == 49
# При этом 🤦
(b'1' in data) == True 

for i in data:
    # В py2 тут будут '1', '2', '3'. В py3 - 49, 50, 51

И если превый пример я с горем пополам победил, заменив везде data[0] на data[0:1]. То что делать с циклом?

Как в цикле получить байтстроки вместо чисел? Желательно не прибегая к декодированию (chr(49).encode(), bytes([49]))

 ,

makoven
()

Как вы вообще разрабатываете на питоне?

Здравствуйте

Допустим, имеем такую структуру проекта

module1.py
pkg1/
    script.py

Сдержимое script.py:

import module1

Находясь в директории проекта выполняем:

$ python3 pkg1/script.py
Traceback (most recent call last):
  File "pkg1/script.py", line 1, in <module>
    import mylib
ImportError: No module named mylib

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

 

makoven
()

Управление сторонними библиотеками проекта в Python и Node.js. Где лучше?

Здравствуйте

У питона и ноды разное представление о том, как искать сторонние библиотеки.

Python ищет начиная от пути расположения интерпретатора. Ищет папку lib/. Если таковой нет - делает cd .. и ищет снова и т. д

Node.js ищет папку node_modules/ начиная от пути расположения запускаемого скрипта и далее так-же как в питоне

Благодаря алгоритму node.js, управление зависимостями очень простое. Надо лишь положить папочку node_modules где-то рядом с вашим скриптом

В Python распространять сторонние либы с проектом не так просто. Приходится городить venv (который, по сути просто добавляет путь вашего проекта в начало PATH), заниматься активацией/деактивацией

Собственно, вопрос. Почему в питоне сделано так «странно»? Дает ли это какие-то иные преимущества по сравнению с подходом в node.js? Или Гвидо просто не сообразил как сделать хорошо?

 , ,

makoven
()

Бред с таймерами в systemd

Здравствуйте. Есть один таймер

[Timer]
OnCalendar=02:10

[Install]
WantedBy=timers.target

Все работает. Но если в WantedBy вместо timers.target прописать multi-user.target, то таймер работать не будет. Он не будет появляться в ни в systemctl --user ни в systemctl --user list-timers --all

Почему так? multi-user.target ведь тоже активен после загрузки ОС

В арче работало с multi-user. А тут (Kubuntu 17.10) не работает. Как это можно понимать? )

 

makoven
()

Тайна затертого GRUB-a

Здравствуйте

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

Стоял в компьютере один лишь SSD с kubuntu 17.10 (uefi). Захотелось поставить Windows 7 на другой диск (HDD, mbr). Материнка умеет одновременно в UEFI и MBR

SSD я обесточил, подключил HDD. Поставил семерку, на нее драйвера, ПО. Далее подключил оба диска. Снова запустил семерку - норм. Будучи в полной уверенности, что теперь могу переключаться между OS через Boot Menu по F12..

Но не тут-то было. В Boot Menu пропал пункт «Ubuntu». Через LiveCD сделал chroot - grub-install - update-grub. Пункт «Ubuntu» появился, но загрузка стопорилась на отсутствующем разделе /boot/efi.. Изменился UUID раздела efi

Подскажите, каким чудесным образом на SSD мог поломаться GRUB и поменяться UUID на разделе, если во время установки винды SSD был выключен?

 , , ,

makoven
()

Помогите смонтировать mdadm RAID1 (version 1.2) раздел чтобы спасти данные

Здравствуйте

Есть один Synology DS213+ с двумя дисками в RAID1, который внезапно выдал Volume Crash. И больше не видит файлы.

Вытащил первый диск, подключил к компу

Подскажите, пожалуйста, как вытащить данные из раздела sdc3

# mdadm --detail /dev/md2 
/dev/md2:
        Version : 1.2
     Raid Level : raid0
  Total Devices : 1
    Persistence : Superblock is persistent

          State : inactive

           Name : share:2
           UUID : a3b7337f:99685156:1c89df2a:34c3b6eb
         Events : 98

    Number   Major   Minor   RaidDevice

       -       8       35        -        /dev/sdc3
# fdisk -l
...
Disk /dev/sdc: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 259668C5-8D08-4D17-A7B4-FF1BB83335F5

Device       Start        End    Sectors  Size Type
/dev/sdc1     2048    4982527    4980480  2,4G Linux RAID
/dev/sdc2  4982528    9176831    4194304    2G Linux RAID
/dev/sdc3  9437184 5860328351 5850891168  2,7T Linux RAID

 , ,

makoven
()

ubuntu server сам выключается

Здравствуйте

Есть один системник. Работал он раньше под Archlinux, Alpine Linux - нареканий не было. Поставил Ubuntu server 17.10. Комп сам выключается раз в сутки-трое. В syslog из подозрительного только «Starting Daily apt upgrade and clean activities...»

Автообновление отключил. Посмотрю, будет ли перезапускаться..

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

 

makoven
()

Что за беда с адаптивностью в firefox на андроид

Здравствуйте

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

linux.org.ru загружается в Таком виде, а когда немного поскроллишь, переходит в мобильный

 

makoven
()

Существует ли веб-морда для запуска и контроля задач на сервере?

Здравствуйте

Подскажите, как называется то, что я хочу и есть ли такое в природе?

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

 

makoven
()

Аномально старые пакеты в ubuntu

Здравствуйте

Копаюсь в пакетах убунты. Большинство более-менее новые. Но некоторые прям совсем древние попадаются. Например версия bareos от 2015 года. Qemu 1.2 (!!!).

Почему так? Что за пакеты-аномалии? И можно ли как-то безболезненно поставить новые версии?

 , ,

makoven
()

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