LINUX.ORG.RU

Избранные сообщения JAkutenshi

Посоветуйте хороший портал/форум в старом духе по Java

Форум — Development

Где «деды» размеренно вели бы беседы, постили статейки, новости иногда шутковали, а не вот это все как на реддитах и дискордах с телегами. В общем есть у нас какой-нибудь лор по яве на русском или английском?

 ,

nerfur
()

Ищу Репетитора по ML (keras, google colab,kaggle)

Форум — Talks

Я очень много занимался фронтенд разработкой, но надоело. Хочу попробовать ML, прошел общий курс от Andrew ng. Пробую решать задачи с kaggle в google colab, и очень часто возникает много вопросов на которые не так просто искать ответы в гугле.

Я никогда не занимался с репетитором по этому не совсем понимаю в каком формате это лучше сделать, и какая цена будет адекватная. Но ориентируюсь примерно на занятие по скайпу с оплатой в районе 10-15 долларов за час, несколько раз в неделю.

Перемещено leave из job

 ,

abs
()

Си, «горячий код», несколько версий функции.

Форум — Development

Привет, кодач девеЛОРч, продолжаю делать очередное OpenSource поделие.

Само поделие тут.

Это будет либа с оценивающими фильтрами.

Особенности:

  • Старался писать КАК ДИДЫ в программе «Аполон».
  • No dynamic memory allocation.
  • Использование [ну типа] cache-aware алгоритмов.
  • Выполнение на архитектурах с аппаратной плавающей точкой.
  • Использование стабилизированных численных методов.
  • Принятие того факта, что у нас тут не NASA, соответственно, пользователи могут косячить в моделях процессов и наблюдений. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия этих косяков.
  • Принятие того факта, что шумы могут быть не Гауссовы. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия неверных гипотез о шумах.
  • Прототипирование на Python c использованием буквально тех же реализаций алгоритмов, что и в продакшоне, посредством Cython-обертки над либой.

Итак, ближе к сути: есть несколько версий функций (в данный момент - две, запланировано до четырёх), например: раз и два.

Отличаются они тем, что первая - обычная реализация, как в учебнике, а вторая - с адаптивной коррекцией, на случай, если пользователь накосячил в модели процесса, или что-то «поломалось» в объекте наблюдения.

Отличия могут быть довольно небольшими, но они сожрут какое-то количество мегафлопс и памяти.

Вопрос к знатокам:

Стоит ли делать несколько вариантов функций, как сейчас, или оставить самый сложный?

З.Ы.: И да, если это применять, например, при адаптивном подавлении шумов от производственного оборудования в наушниках у рабочего, то частоты вызова могут быть несколько килогерц (в данном случае - от восьми) для нескольких объектов, и звук будет идти с нескольких микрофонов.

 , , , ,

shkolnick-kun
()

Релиз терминального файлового менеджера n³ v3.2

Новости — Open Source
Релиз терминального файлового менеджера  n³ v3.2
Группа Open Source

nnn (или n³) — полнофункциональный файловый менеджер терминала. Он очень быстрый, небольшой и практически не требует настройки.

nnn может анализировать использование диска, переименовывать скопом, запускать приложения и выбирать файлы. В репозитории есть тонны плагинов и документации для дальнейшего расширения возможностей, например, предварительный просмотр, монтирование дисков, поиск, diff для файлов/каталогов, загрузка файлов. Есть независимый (neo)vim плагин.

Он работает на Raspberry Pi, Termux (Android), Linux, macOS, BSD, Haiku, Cygwin, WSL, в эмуляторах терминала DE и в виртуальной консоли.

Этот релиз привносит одну из самых востребованных на сегодняшний день возможностей – живой предварительный просмотр. Соответствующая вики-страница содержит подробную информацию о реализации и использовании.

Также в релизе:

  • Find & list позволит вам искать с помощью вашей любимой утилиты поиска в поддереве (find/fd/grep/ripgrep/fzf) из nnn и перечислить результаты в nnn для работы с ними.

  • Сохранение сессии – гарантирует, что вы всегда будете начинать с того места, где вышли из nnn.

  • Улучшена система плагинов. Определен интерфейс взаимодействия плагинов с nnn.

  • Множество улучшений для удобства использования и багфиксы.

Демо-видео

>>> Подробности

 ,

cocucka
()

Нюансы запуска процессов через system/exec

Форум — Development

Случай #1:

Как известно, при вызове exec происходит завершение всех нитей вызывающего кроме той, что вызвала system. При этом открытые дескрипторы клонируются в новый процесс (если у них не указан флаг FD/SOCK_CLOEXEC).

Представим следующую гипотетическую ситуацию:

У нас есть некая программа, которая получает от кого-то строку, в которой содержатся какие-то команды, которые нужно запустить. Пусть, к примеру, это будет какое-то подобие супервизора.

Положим, что так как эта строка может содержать переменные среды, какие-то выражения подстановки и shell-related команды и синтаксис программист, написавший эту программу посчитал, что самым оптимальным образом будет запускать эту строку с помощью команды system, которая не требует списка аргументов, как семейство exec*. Плюс, так как system «под капотом» вызывает sh -c ..., то автоматически подставятся переменные, а shell-related команды и синтаксис будут работать как нужно. Так вот, глянем исходник system, например, для glibc:

<Сначала хотел показать исходник glibc, но тут слишком дофига получается кода, поэтому сжато: clone + exec + waitpid, кстати ман говорит про fork + exec + waitpid, что не совсем то же самое>

При вызове clone/fork происходит копирование открытых дескрипторов, которые наследует процесс, который запустил system. Предположим, что кто-то передал для запуска строку, содержащую запуск программы (назовем ее evil), выполняющей следующие действия:

if (fork() != 0)
    exit(0);

Что превращает ее в отвязанного от родителя демона. Однако этот fork тоже наследует все открытые хэндлеры, что приводит нас к тому, что этот демонутый процесс evil получил копию всех открытых хендлеров супервизора, однако стал от него отвязан (system вернул 0, супервизор считает, что работа выполнена).

Теперь предположим, что это супервизор с управлением по сети. То есть супервизор открывает серверный сокет и слушает команды, которые ему приходят извне. Не будем обсуждать защищенность передачи или канала связи, всё можно сломать, суть сейчас не в этом. Суть в том, что на момент запуска system супервизор владел открытым серверным сокетом (!). Да, по совести и по правилам при его создании ему нужно было выставить SOCK_CLOEXEC, но скажем честно, кто своим серверным сокетам выставляет флаг, о котором даже в мануалах на socket из 153 строк отдано 2 (!), т.е. всего 1.3%?

Таким образом, пройдя через всю цепочку форков копия серверного сокета оказывается у демонутого evil:

super      9053 alex    3u  IPv4 11458560      0t0  TCP *:34002 (LISTEN)
super      9053 alex    4u  IPv4 11464960      0t0  TCP localhost:34002->localhost:41308 (ESTABLISHED)
evil       9257 alex    3u  IPv4 11458560      0t0  TCP *:34002 (LISTEN)

Положим, что процесс супервизора по какой-то причине завершился. Ну, например, выполнив свою работу или по ошибке. И теперь начинается самая мякотка. Ведь в системе уже открыт слушающий на порту 34002 сокет! И принадлежит он программе evil! Таким образом она может прикинуться сервером, а супервизор, в свою очередь, не сможет вернуть свой сокет, поэтому система не даст ему открыть второй сокет на том же порту без REUSEPORT:

SO_REUSEPORT (since Linux 3.9)
              Permits multiple AF_INET or AF_INET6 sockets to be bound to an identical socket address.  This option must be set on each socket (including the first socket) prior to calling bind(2) on the socket.  To prevent port hijacking, all of  the  pro‐
              cesses binding to the same address must have the same effective UID.  This option can be employed with both TCP and UDP sockets.

В общем случае, когда какая-то программа-сервер запускается и получает ALREADYINUSE то надо бы сказать мол, «не не могу работать, наверное другая копия меня уже запущена» и выключиться (ну или ожидать его освобождения).

Мы же не хотим port hijacking, верно? А вот все равно профукали. Ну и теперь evil может делать что угодно. Может получать данные от клиентов, может им даже что-то отвечать,может получать список команд для запуска и запускать вместо них что угодно, сообщая наверх что всё хорошо.

Собственно, вопрос #1: почему на серверный сокет автоматически при создании не вешается FD_CLOEXEC?

Случай #2:

Мы - супервизор, запускающий программы, забудем про сетевое взаимодействие, мы сами знаем, что нам запускать. Запускают нас от root, для того, чтобы мы могли делать какую-то очень важную вещь, ну, например, читать какой-то root-owned файл:

-rw-------  1 root root        7 июн  5 23:51 rootonly

Изобразим супервизор упрощенно:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>       
#include <sys/wait.h>
#include <errno.h>       
#include <pwd.h>


static void dowork(void) {
    int pid = fork();
    int status;
    switch (pid) {
        case -1 : exit(EXIT_FAILURE);
        case 0  :
            if (setuid(1000) == -1) {
                printf("u:%u\n", errno);
            }
            if (seteuid(1000) == -1) {
                printf("e:%u\n", errno);
            }
            execl("./hijack_evil.elf", "./hijack_evil.elf", NULL);
            printf("cannot run\n");
            exit(EXIT_FAILURE);
        default :
            wait(&status);
    }
}

int main(void) {
    FILE * fileroot = fopen("/tmp/rootonly", "r");
    printf("I am %s, #%u/%u\n", getpwuid(getuid())->pw_name, geteuid(), getuid());
    
    dowork();
    
    fclose(fileroot);
    return 0;
}
gcc hijack_root.c -o hijack_root.elf

И программу, которой нельзя давать рутовые права:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>       
#include <sys/wait.h>
#include <pwd.h>

int main(void) {
    printf("I am %s, #%u/%u\n", getpwuid(getuid())->pw_name, geteuid(), getuid());
    // my stdin is 0, stdout is 1, stderr is 2, therefore...
    char buf[1024];
    read(3, buf, 1024);
    printf("%s\n", buf);
    return 0;
}
gcc hijack_evil.c -o hijack_evil.elf

Проверяем, что просто так файл прочитать нельзя:

alex@ThinkPad-L560:~$ cat /tmp/rootonly 
cat: /tmp/rootonly: Отказано в доступе
alex@ThinkPad-L560:~$ echo $USER/$UID
alex/1000

И запускаем супервизор:

$ sudo ./hijack_root.elf 
I am root, #0/0
I am alex, #1000/1000
SECRET

При этом мы не можем ставить FD_CLOEXEC на каждый хендлер, открываемый в супервизоре, потому что он может понадобиться для целей супервизора в его форках. Соответственно вопрос #2: почему внешние программы, запускаемые через exec наследуют хендлеры? Ведь очевидно, что это может быть использовано только для «угона» файлов

 ,

PPP328
()

Fedora(31-32) GNOME + Wayland + qt5 (держу в курсе!)

Форум — Desktop

Либо я пропустил, либо все сидят на иксах. Почему никто не жалуется, что qt-шные проги в вейдланде выглядят и ведут себя как говно?

Я это заметил, когда поставил WS и Silverblue с нуля, основная система самосборная из Everything, поэтому я не заметил этот косяк, ибо у меня в /etc/dnf/dnf.conf есть строка install_weak_deps=False.

Кароче, когда ставишь qt5-программы, то по «слабым зависимостям» прилетает пакет qt5-qtwayland, и благодаря ему такие программы работают нативно под вейландом, что превращает их в неюзабельное днище, пакет надо удалить, тогда они будут работать под Xwayland, и всё будет пучком.

Один вопрос, вот нахера пихать в зависимости полуработающие пакеты, когда без них можно обойтись, ведь кому надо секса с компом, найдут себе проблемы без посторонней помощи!

 , , ,

papin-aziat
()

Ubuntu 18.04 LTS отваливается системный SSD через 1-1.5 недели

Форум — General

Привет всем! Не могу понять с чем связано, но стабильно через 1-1.5 недели отваливается системный SSD. Причем в journalctl -p err ничего не отображается, что могло послужить этому. Пару раз успел на консольном мониторе только увидеть что-то вроде i/o error на sda и все. По reset на корпусе при перезагрузке SSD не появляется в списке дисков. После выключения питания и повторного включения - диск ssd появляется и система успешно загружается. TRIM включен, SMART диск проходит успешно. В BIOS режим AHCI, прошивка на мать последняя, кабель SATA, питание, проверены. Буду рад любым советам!

 , ,

alvian
()

Анимешный дефолт

Галерея — Скриншоты

Жил я себе на арче, наслаждался терминальным ЮИ, потому-то ГУИ в XWayland выглядит как последний Uncharted на ванильной плойке. Но в один день случайно снес себе пол / и было как-то лень все восстанавливать. На арче сидел сколько себя помню, поэтому решил посмотреть, как там дела в других легковесных дистрибутивов. Глаз зацепился за Void, потому что это тот же самый арч, но без systemd. Заодно решил осилить HiDPI на Х и пересесть на него, чего раньше не очень удавалось. Ибо емакс в терминале это как корочки от хлеба.

В общем, пришлось менять весь стек: sway + waybar + bemenu на bspwm + polybar + rofi. Ну и плюсом picom, чтобы спецэффекты были, но только чуть-чуть. А это означает переписывание конфигов и wal темплейтов. Более того, так как ручки то у меня кривые, хотелось автоматизировать все, начиная от бутстрапа системы и заканчивая расстановкой конфигов в нужные места.

В общем, после трёх недель кряхтений, получилось набросать минимум всего, что нужно для полноценной работы на десктопе. Включая вот этот вот бутстрап, который поднимет базовую систему с full disk encryption и ещё парочку скриптов, которые поставят все зависимости и настроят Х с HiDPI и WM со всеми перделками. Написано все это, конечно же, на fish shell. Потому что а на чем ещё. Теперь то можно удалять и двигать все, что не приколочено (а ничего не приколочено) и не бояться, что все сломается и придётся настраивать все ручками заново.

Если по софту, который использую, то это:

  • Kitty в качестве терминала, потому что GPU рендеринг и лигатуры.
  • BSPWM как WM. Не уверен, почему не i3. Вроде как он давно заброшен и не пилится. Даже отступы от краев экрана настроить нельзя, только если i3-gaps ставить.
  • Fish, конечно же. Всеми любимый.
  • Doom Emacs, где я пишу в основном весь код. И Neovim, если нужно что-то быстренько в файлике поделать.
  • Polybar для вот этих вот штучек сверху. Выглядит прикольно, пол дня настраивал.
  • Ну и rofi, чтобы запускать всякое разное. Тоже wal шаблон писал кучу времени, но я без понятия, как его зафоткать. Потому что он горячие клавиши перехватывает.
  • Tdrop ещё, чтобы эмулировать scratchpad’ы из Sway (на первом скрине он).

Все это, как и подобает, лежит на гитхабе:

  • Дотфайлы тут. Там же и бутстрап для зависимостей и конфигов.
  • Бутстрап базовой системы тут, если кому интересно.

Мой прошлый сетап я тут не кидал, но его можно найти в /r/unixporn. Там тоже аниме, но только Хомура.

>>> Просмотр (3840x4320, 2062 Kb)

 , , , ,

rbbtnspc
()

Арч самоизоляционщика

Галерея — Скриншоты

Делать дома нечего, решил попробовать эти ваши тайлинги на своем ноуте.
Не очень это просто, особенно когда не умеешь кодить всякие css и изучаешь все методом тыка и «обратного инжиниринга».
В целом пока нравится, так привык за две недели, что Gnome кажется каким-то неудобным. На скриншотах:

Еще скриншоты:
Rofi, углы пока не понял как убрать
LOR+ranger
Other apps

Мои старые темы: 1 2

>>> Просмотр (1920x1080, 437 Kb)

 , , ,

olegka
()

pluralsight.com #FREEapril

Форум — Talks

https://www.pluralsight.com/offer/2020/free-april-month

всем курсов ребята!

сам смотрю Automating Networks with Python от Руссо

 , ,

thymikon
()

Perl прямиком из 1987 года

Галерея — Скриншоты

Прочитав новость «Код интерпретатора Perl официально перенесён на GitHub» я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub’е.

Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (Issues), патчи (PRs), релизы и ветки. Надпись «32 years ago» рядом с файлами вызывает улыбку.

Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с gcc (GCC) 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?

Чтобы было совсем уж аутентичненько и некрофильненько, я развернул виртуальную машину с голыми иксами и twm, который тоже родом из 1987 года. Кто знает, может быть Larry Wall писал свой Perl используя именно twm, так сказать bleeding edge technology того времени. Используемый дистрибутив – Arch Linux. Просто потому что в его репозитории есть некоторые полезные вещи, которые впоследствии мне пригодились.

( читать дальше... )

>>> Просмотр (1605x600, 55 Kb)

 , , , ,

EXL
()

Генератор космических кораблей для blender

Форум — Games

Наткнулся на удобную штуку - пригодится для прототипирования или даже создания своей евы в сети с куртизантками и чёрными дырами =)

Может кому пригодится - https://github.com/a1studmuffin/SpaceshipGenerator

Или можно генерировать через скрипты что удобно если надо по быстрому сделать сразу например 15 кораблей. Хотел нагенерировать сразу 100 но ужрало всю память, жёстко писало на диск и было убито системой, система плакала от боли =)

import bpy

#количество кораблей
num_spaceship = 15
#количество кораблей в линии
num_in_line   = 5

#смещене по линии и столбцам
x_offset = 10
y_offset = 5

#основной скрипт
counter = num_in_line
current_x = 0
current_y = 0

scene = bpy.context.scene
for num in range(num_spaceship):
    bpy.ops.mesh.generate_spaceship()
    obj = scene.objects.active
    
    counter-=1
    current_y+=y_offset
    if counter == 0:
        counter = num_in_line
        current_x+=x_offset
        current_y = 0
    
    obj.location.x = current_x
    obj.location.y = current_y

В результате получаем нечто такое - https://i.imgur.com/eyE5wAp.png

Экспортируем и летим грабить караваны - https://imgur.com/a/oXF59DH

Вот такой маленький обзорчик.

P.S. Меши иногда кривые отсечение граней происходит с лицевой стороны (при экспорте в obj у меня так) Текстурные координаты кривые. Но чисто для баловства и допила под себя прикольная штучка.

 , , , ,

LINUX-ORG-RU
()

Полировка знаний о Си

Форум — Development

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

 

LancerRevX
()

Утилита для просмотра больших графов с метаданными?

Форум — Desktop

Добрый вечер, коллеги!

В преддверии пятницы хочется нового: есть граф с большим количеством метаданных (т.е. к каждой ноде приязано по словарю со строками, числами и прочими параметрами). Количество узлов слишком велико для рендрегинга графвизом (500 узлов, и, если, метаданные все сконертировать в строку, то label-ы получаются огромными и граф - нечитаемым).

Какой утилитой можно посмотреть такой граф? Граф есть в языке программирования, и я готов писать скрипт-ковертер в заданный формат.

В идеале - что-то типа tensorboard из tensorflow.

 , ,

omegatype
()

Первый год вместе с GNU/Linux

Галерея — Скриншоты

Это началось год назад когда я купил ноутбук без операционки, а на нем стоял уже какой-то мега глючный дистрибутив с гномом 3. Поюзав месяц оффтопик, вспомнил, что та самая операционка хоть и была глючной, зато в ней было кое что интересное. Разузнав подробнее про дистрибутивы, немного боясь, но установил Mint, после чего была Xubuntu, Monjaro с awesome, MXlinux и Debian. Самые приятные ощущения оставил только Debian c протухшим mate, но сейчас вполне доволен и оптимизированным Mint с cinnamon (стоит в дуалбуте на всякий случай).

Так как каникулы достаточно длинные появилось время наконец осилить тайлинг и рач и вот что вышло. По сути огромное количество кодовой базы и идей взяты у Luke Smith, за что ему отдельная благодарность. Ещё хочу ещё отметить, что хоть система и на зашифрованном диске, в производительности она не сильно проигрывает.

Пакеты:

  • bspwm + sxhkd

    Изначально я юзал i3-gaps и вроде как он меня всем удовлетворял, но когда узнал про bspwm, сразу понял что он значительно лучше подходит. Особо понравилась архитектура, когда оконный менеджер не лезет в настройки клавиатуры.

  • kitty + bash

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

  • mpd + ncmpcpp + mpc

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

  • polybar + awesome-font

    По сути использование polybar во много раз ускорило переезд с i3. Читал, что он есть много поэтому может пересяду на lemon(bar|new)

  • neovim

    Долго использовал обычный вим и как был приятно удивлён улучшениями в его neo версии. Конфиг Люка Смита очень крут к тому же.

  • Thunar, dunst, sxiv, xwallpaper

  • И много скриптов для комфортной работы

В планах:

  • Адаптировать под VoidLinux
  • Использовать nnn как главный файловый менеджер

Stow оказался очень удобным = dotfiles

>>> Просмотр (1920x1080, 720 Kb)

 , , , ,

Cirno
()

Arch репозиторий от Valve

Форум — Talks

http://repo.steamstatic.com/arch/valveaur/

А это значит, что:

  • Arch официально (нет) признан игроделогигантом игровой платформой
  • Возможно Valve дропнут Ubuntu/Debian и переедут на арч

 , , ,

xDShot
()

Qutebrowser, давайте наконец уберем из него рекламу.

Форум — Desktop

И так, кто как использует адблок? Делитесь, т.к у меня не завелось.

Добавляем в конфиг:

c.content.host_blocking.lists.append( str(config.configdir) + "/blocklists/ruadlist+easylist")

Выкачиваем листы от плюса:

cd $HOME/.config/qutebrowser/blocklists
wget https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt -O ruadlist+easylist.plus

Через небольшой скрипт:

#!/usr/bin/perl -w

use strict;

my %hosts = ();
while ( <> ) {
    if ( $_ =~ m/^\|\|([a-z][a-z0-9-_.]+\.([a-z]{2,3}))\^\s*$/ ) {
        $hosts{$1} = 1;
    }
}

foreach my $host ( sort keys %hosts ) {
    print( "$host\n" );
}
приводим к нормальному виду:
./script ruadlist+easylist.plus > ruadlist+easylist

На выходе получаем файл, который по структуре идентичен файлу $HOME/.local/share/qutebrowser/blocked-hosts

Перезапускаем браузер, делаем :adblock-update и радуемся нормальному адблоку (нет).

Метод не работает. Кто расскажет свой?

P.S Сменить браузер или поставить vimfx не предлагать, и так использую. Чисто спортивный интерес.

qutebrowser -V

qutebrowser v1.6.3
Git commit: 
Backend: QtWebEngine (Chromium 69.0.3497.128)

CPython: 3.7.3
Qt: 5.12.4 (compiled 5.12.3)
PyQt: 5.12.2

sip: 4.19.17
colorama: 0.4.1
pypeg2: 2.15
jinja2: 2.10.1
pygments: 2.4.2
yaml: 5.1
cssutils: no
attr: 19.1.0
PyQt5.QtWebEngineWidgets: yes
PyQt5.QtWebKitWidgets: no
pdf.js: no
sqlite: 3.28.0
QtNetwork SSL: OpenSSL 1.1.1c  28 May 2019

Style: QFusionStyle
Platform: Linux-5.1.11-arch1-1-ARCH-x86_64-with-arch, 64bit
Linux distribution: Arch Linux (arch)
Frozen: False
Imported from /usr/lib/python3.7/site-packages/qutebrowser
Using Python from /usr/bin/python3
Qt library executable path: /usr/lib/qt/libexec, data path: /usr/share/qt

Paths:
cache: /home/flappy/.cache/qutebrowser
config: /home/flappy/.config/qutebrowser
data: /home/flappy/.local/share/qutebrowser
runtime: /run/user/1000/qutebrowser
system data: /usr/share/qutebrowser

Uptime: 0:00:00

 ,

flappyright
()

Что взять для простого сайта в виде бложика?

Форум — Web-development

Надоело мне ковыряться с WordPress’ом и PHP. Чувствую, что забиваю гвозди электронным микроскопом. Слишком увесистый и избыточный он для меня. Я бы давно нагенерировал статических HTML-страничек, если бы не одно но – комментарии. А для них нужна БД, увы. Всякими сторонними сервисами вроде Discuss или IntenseDebate пользоваться не хочу и не буду. Во-первых, там куча подгружающейся Boilerplate-ерунды, а во-вторых, руководствуюсь принципом «всё своё ношу с собой».

Собственно, хочу соорудить нечто подобное тому, что у меня есть сейчас на WordPress’е:

https://exlmoto.ru/gish-droid/

Мне нужно немногое, пару служебных страничек, да посты в виде привычной всем ленты на главной. В постах нужна нормальная подсветка кода (наверное заюзаю highlight.js, альтернатив ему не вижу), поддержка Markdown для разметки и, собственно, система комментариев с какой-нибудь там Google Captcha, чтобы спамеры не пролазили. По вкусу ещё кастомные CSS для светлой и тёмной тем. Всякие там загрузчики Media-файлов и продвинутые редакторы статей мне не нужны.

Так вот, что лучше всего выбрать для подобного? Какой фреймворк и стек Web-технологий? Давно поглядываю в сторону Spring и Java, хочу попробовать использовать их, так как ЛОР, например, работает весьма отзывчиво.

На что бы вы перешли, если бы вам надоел WordPress? Буду рад выслушать любые советы.

 , , ,

EXL
()

Книга по матану

Форум — General

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

 , , , ,

Rot1
()

true design

Форум — Web-development

Ну что, погоняем современный дизайн сайтов?)

Вступление

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

Последние пару лет меня стали раздражать большинство посещаемых сайтов. Чуть ли не каждый 2-й копирует один и тот же шаблон. Вот посмотрите https://windowstips.ru/, http://chto-takoe.net/, https://losst.ru/. Подобные сайты скорее всего сделаны на Wordpress или Drupal и содержатся каким-нибудь васей с searchengines, гордо называющий себя вебмастером.

Что не так с дизайном и как можно сделать лучше рассмотрим на примере сайтов сделанных за еду.

Немного о ужасах дизайна или как не надо делать

Подавляющие большинство информационных сайтов в сети выглядит так:

  1. https://i.imgur.com/Ca3RmAa.png
  2. https://i.imgur.com/oFb7MQu.png
  3. https://i.imgur.com/xJoZcDS.png
  4. https://i.imgur.com/9JHsD5d.png
  5. https://i.imgur.com/SaPHXIy.png
  6. https://i.imgur.com/DJdlhCU.png
  7. https://vgy.me/yP0LAh.png
  8. https://vgy.me/kMCCs6.png
  9. https://vgy.me/BCmy0M.png
  10. https://vgy.me/7YyJrd.png

Понятно что используется популярный wordpress или drupal шаблон. В нём «дизайнер» почему-то посчитал что раз мне нужно уместить в одном блоке статью и список допустим схожих статей, то визуально разделять их не надо (см. 1 и 2-й скриншот). Другой недостаток — куча свободного пространства (см. 1 и 3-й скриншот). А вот как в одном блоке разделили визуально https://i.imgur.com/G1E637L.png, https://i.imgur.com/EnQh8mh.png, https://i.imgur.com/9ZvUzrP.png, но тоже так себе. Здесь — лучше.

Как надо (но это не точно):

  1. https://i.imgur.com/MVXOBMT.png
  2. https://i.imgur.com/SwIJBM7.png
  3. https://i.imgur.com/9WPZw6j.png
  4. https://i.imgur.com/LIdjFAH.png
  5. https://i.imgur.com/X9H563q.png
  6. https://i.imgur.com/Mt5wihy.png
  7. https://i.imgur.com/vdFt1a2.png
  8. https://i.imgur.com/eGt9Kq1.png
  9. https://i.imgur.com/BoC6n0v.png

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

Ошибки

1) Отвлекающий фон
Баю-баюшки-баю засыпаю на краю https://pleroma.social/
Но иногда он бывает так сказать «в тему». Увы, хороших примеров не вспомнил/не нашёл.

2) Банеры или картинки на пол экрана
Нееееет. Запомните, картинка должна отражать смысл статьи или итоговый результат.
Вот баба одна сделала сайт (https://veerle.duoh.com/design/create-a-cubical-pattern-in-adobe-illustrator#0). Картинка над статьёй=итоговый результат урока, но всё равно «убивает». Решать вам.

Другой вариант (https://i.imgur.com/5jslkEv.png)
Поймите, черти, уже наконец что людям нафиг не нужна ваша картинка молотка в теме «создаём сайт с помощью ксс и бутстрап». Повторюсь: подбирайте картинки соответствующие статье.

3) Лепка
https://i.imgur.com/iHr8OBf.jpg
Прекратите лепить всё подряд и друг за другом. Пользователь теряется.

4) Тени
https://i.imgur.com/BrBNV8L.png
Зачем?

5) В табло
https://i.imgur.com/XIqCyXk.png, https://vgy.me/rKvBRw.png
Чего б#&$-? Неужели так сложно сделать как в ворде?)

6) Подчёркивания
https://i.imgur.com/nlpfF0y.png
Как мы видим буква Д в начале названия заголовка не подчёркнута. Другой неудачный пример https://i.imgur.com/pdmQWsL.png иллюстрирует как низ буквы Щ почти сливается с подчёркиванием. Так или так — лучше.
Статья по теме: https://css-tricks.com/styling-underlines-web/

7) Нумерация строк
Надо/нет? И что ставить после числа: ничего, точку, двоеточие или провести вертикальную линию?

8) Выделение кода
Почти всегда блоки с кодом подсвечивают каким-нибудь фоном и оборачивают в рамку https://i.imgur.com/p7cEmqG.png, https://vgy.me/I1kg6v.png, https://i.imgur.com/1iqpbCZ.png, https://i.imgur.com/pAzlurI.png
Особенно уродско выглядит когда во всю ширину блок. Хватит. В 99% случаев не в тему так сказать.

Выделение более-менее смотрится на старом дизайне css-tricks, но всё равно «перебивает» и заголовок и основной текст.

Другой момент — появившийся горизонтальный скролл. Представьте, что у вас подряд 15 блоков и там этот скролл. Мне такое недавно глаза вырезало.
Иногда встречал, что такие полоски появляются/всплывают когда на блок наводишь, как вам такой ход?

А ещё меня бесит вот такое выделение. Неужели нельзя применить моноширинный шрифт?

9) Перенос текста
https://i.imgur.com/G5KPWmb.png
Без комментариев.

10) Плавающий текст
Должны ли мы располагать текст в пространстве никак не выделяя его (как на medium, например)? Пример: https://i.imgur.com/cJIKFl1.png
Или может стоит поместить внутрь блока, как тут?

11) Меню
a) Не помеченный значок увеличивает когнитивную нагрузку (https://i.imgur.com/Aqp1ZM1.png).
Пример хорошего меню: https://i.imgur.com/UPNv1hc.png

b) На многих сайтах заметил подобное меню слева (http://window.edu.ru/catalog/pdf2txt/936/46936/23254?p_page=1#).
С одной стороны оно хорошее, с другой, когда мы его «сворачиваем» у нас блок с текстом визуально изменяется, что лично меня сильно напрягает.
Вывод: ширина блока для текста должна оставаться неизменной.

12) Уведомления
https://vgy.me/5306aT.jpg, https://i.imgur.com/wYa1NJr.png
Лично меня напрягает, что некоторые из них показываются при заходе на сайт.
Здесь на самом деле сложный момент. Во многих курсах говорят, что нужно сообщать своему зрителю о действиях - нажми там на колокольчик(на ютубе) и подпишись. Это вроде как тру, но с другой стороны может быть назойливым.

Заключение

Всё это говорит нам о том что веб-сайтам необходим дизайн-код.

Что такое дизайн-код?
Это проиллюстрированный набор правил проектирования, требований и рекомендаций. С их помощью должен регулироваться шрифт, размер и форма блоков, анимация и другое.

Надеюсь моё недовольство поможет в создании визуально-гармоничного сайта.

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

 , , ,

Xant1k
()