LINUX.ORG.RU

Сообщения bga_

 

Deluge или transmission или qbittorrent или rtorrent?

rtorrent проработал у меня неделю. Ман нормальный хрен найдешь. Воевал с dht(ничего не видит). Довоевался что dht было максимум 20 пиров. Соответственно раздает очень плохо. А качает еще хуже. Я так понял у него не работает peer exchange.

Вчера ночью переехал на трансмиссию. Качать стало лучше. Даже качает брошенные торренты с 1 сидом через диалап автора. Не порадовал жор цпу. rtorrent жрал меньше в 1.5 раза. Понравилось что есть нативные удаленные клиенты под все ос и не по одной штуке. Сейчас управляю с андроид телефона. На сервере ncurses клиент

С ходу мне сказали что qbittorrent будет еще лучше тк умеет bittorent 2.0 и еще какие то протоколы и связь с самым популярным uTorrent будет около 100%.

Про делюгу сами мне расскажите.

PS сравниваю все с uTorrent 2.2.1 на соседней вендо машине где dht всегда около 300+ и качает все моментально. А rtorrent даже рядом соседнюю машину в упор не видел пока через общий рабочий трекер не помог.

PPS порты все открыл. И даже 6881

 

bga_
()

Github сломал скачку релизов

Раньше и без js все ссылки были видны. А теперь там кружочек анимации загрузки и нифига не скачать. Аш бесит. В html коде тоже ссылок не замечено. Ещё оно требует веб компонент которых нету например в паленуме. Да и вообще в альтернативных браузерах без зашквара.

Итого только убогой хром вынужден использовать. А это по умолчанию бб.

А как например скачать на сервере через links?

Короче зла не хватает. Чтобы они смузи подавились.

Перемещено hobbit из general

 ,

bga_
()

const поля однократной инициализации в классе и оптимизация

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

Те вместо

#include <cstdint>
#include <cstdlib>

#define BGA__ARRAY_SIZE(arrayArg) (sizeof((arrayArg)) / sizeof((arrayArg)[0]))

template<class ValueArg, size_t sizeArg, class IndexArg = size_t>
struct Stack_Storage_Static {
	typedef ValueArg Value;
	typedef IndexArg Index;
	static const Index size = sizeArg;
	
	Value data[size];
};
template<class ValueArg, class IndexArg = size_t>
struct Stack_Storage_Dynamic {
	typedef ValueArg Value;
	typedef IndexArg Index;
	
	Value* data;
	Index size;
};

template<class StorageArg>
struct Stack {
	typedef StorageArg Storage;
	typedef typename Storage::Value Value;
	typedef typename Storage::Index Index;
	
	Storage storage;
	Index topIndex = 0;
	
	Index size() const {
		return this->storage.size;
	}
	
	void push(Value const& v) {
		if(this->topIndex < this->size()) {
			this->storage.data[this->topIndex++] = v;
		}; 
	}
};

int main() {
	Stack<Stack_Storage_Static<int, 16> > staticStack;
	
	staticStack.push(1);
	int dynamicStack_data[16];
	Stack<Stack_Storage_Dynamic<int> > dynamicStack;
	
	dynamicStack.storage.data = dynamicStack_data;
	dynamicStack.storage.size = BGA__ARRAY_SIZE(dynamicStack_data);

	dynamicStack.push(1);
	
	return 0;
}

такое

#include <cstdint>
#include <cstdlib>

#define BGA__ARRAY_SIZE(arrayArg) (sizeof((arrayArg)) / sizeof((arrayArg)[0]))

template<class ValueArg, class IndexArg = size_t>
struct Stack {
	typedef ValueArg Value;
	typedef IndexArg Index;
	
	private:
	Index topIndex = 0;

	//# спрячем поля чтобы гарантированно пользователь не смог их изменить. Даже через const_cast. Тк мы и сами не можем изменить поля то фактически они есть жеткие константы 
	Value* const data;
	const Index m_size;
	
	public:
	Stack(Value* data_, Index size_): data(data_), m_size(size_) {
		
	}
	
	Index size() const {
		return this->m_size;
	}
	
	void push(Value const& v) {
		if(this->topIndex < this->size()) {
			this->data[this->topIndex++] = v;
		}; 
	}
};

//# тут компилятор знает адрес fixedStack_data и размер и может заинлайнить их в методы. Более того - вообще выкинуть память под указатель на данные и размер если все методы есть инлайн. Те фактически это должно работать как Stack<Stack_Storage_Static<int, 16> > но не инстанцировать новые методы класса на каждый размер данных
int fixedStack_data[16];
Stack<int> fixedStack(fixedStack_data, BGA__ARRAY_SIZE(fixedStack_data));

int main() {
	fixedStack.push(1);
	
	size_t dynamicStack_size = 16; //# но может быть задано пользователем 
	//# тут уже dynamicStack_data с неизвестным адресом и размером. Оптимизация не выйдет. Работает как Stack<Stack_Storage_Dynamic<int> >
	int* dynamicStack_data = new int[dynamicStack_size];
	Stack<int> dynamicStack(dynamicStack_data, dynamicStack_size);
	
	dynamicStack.push(1);
	
	return 0;
}

Что это дает? Меньший объем исходного кода. Меньше бойлерплейтной возни с шаблонами. Значительно меньший шанс случайно нарожать кучу одинаковых методов, отличающихся только размером контейнера (было такое).

Понятно что нужно проверять работает ли оптимизация на каждом интересующем компиляторе. Но тут вопрос чисто теоретический. Равноценная ли эта подмена?

И сразу параллельный вопрос. Допустим ::std::array<int, size>. Возможно компилятор достаточно не дебил и не рожает одинаковые методы для разных размеров а просто сам создает новое динамическое поле размера? Короче как сделать лучше?

И да. Это все чтобы экономить на спичках в условиях мелко контроллеров.

 ,

bga_
()

Список легаси не логичного поведения и проблем?

Типа как gzip по дефолту удаляет архив.

А для rm емнип нужно создать спец файл корне против rm -rf /

Накидайте ссылок или просто кто что знает.

 

bga_
()

Хочу механическое отключение нервов

Адская боль (уже есть или предстоит, например у зубного врача). Отключаем нервы боли тумблером и ок.

Или допустим не спиться. А спать надо. Переводим мозг в режим сна форсированно воздействием на определённый нерв. Пусть это будет просто кнопка или программа на мк тут уже не важно.

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

Или я попал в окружение где женщин нет и не предвидится. Проще отключить половую систему чем вынужденно регулярно симулировать.

 , ,

bga_
()

Какие дистрибутивы до сих пор ставятся чисто из live консоли?

Или хотя бы официально есть такая альтернатива.

Чтобы было полное понимание процесса. Без волшебных окошек визарда после которых возникают левые ошибки и юзер впадает в ступор.

Типа

  • fdisk
  • mkfs
  • mount
  • распаковка базовой системы (tar)
  • написать fstab
  • прописать бутлоадер
  • umount всего
  • sync
  • reboot

Я даже для дебиана не могу найти подобный гайд. Сразу окошки лезут.

 

bga_
()

Gmail все

Отключил pop3 без oauth2. Куча древних клиентов больше почту не получат. Валю на другой почта сервер. Гуглу желаю разориться.

 ,

bga_
()

Embedded шрифт 6x7 на полуглифах

Цифры + символы = 39 байт на полу глифы + до 19 байт на индексы (не обязательно)

Цифры + символы + буквы = 72 байт на полу глифы + до 96 байт на индексы (не обязательно)

Для любителей всяких микро микроконтроллеров типа attiny13

Байты без учета кода рисовая но он крайне тупой.

Идея изначально не моя.

Моя реализация https://github.com/bga/bit-font

 , , , ,

bga_
()

char это и не signed и не unsigned а непонятно что

> cat main.cpp
#include <type_traits>

int main() {
        static_assert((::std::is_same<char, signed char>::value) == true);
        static_assert((::std::is_same<char, unsigned char>::value) == true);

        return 0;
}

> g++ -Wall -Wextra main.cpp
main.cpp: In function 'int main()':
main.cpp:4:2: error: static assertion failed
  static_assert((::std::is_same<char, signed char>::value) == true);
  ^~~~~~~~~~~~~
main.cpp:5:2: error: static assertion failed
  static_assert((::std::is_same<char, unsigned char>::value) == true);
  ^~~~~~~~~~~~~

 

bga_
()

Как определяют объем ЖД на заводе?

Внутри же они все одинаковые. Стальной полированный блин и магнитная голова. Можно разметить блин и на 120гб и на 2 тб. Или это зависит от качества полировки блина? Типа пытаются разметить максимально пока бэды массово не пойдут?

 ,

bga_
()

gperf для мк

Чтобы не рожал жирно таблиц а что то вида hash = s[1] + 2 * s[5]

 , , , ,

bga_
()

Посоветуйте чем эффективно высосать 1s литий в 3.3В

Какую step down микро платку из Китая взять? Токи под 2А на выходе. Ток сна естественно как можно меньше.

 

bga_
()

Насоветуйте usb sata с защитой от записи

Для всталяния в сомнительные хосты

Не обязательно 3.0 но желательно.

Беглый поиск на али ничего не дал.

У контроллеров флешек такая функция обычно бывает. Сам лично ставил микро переключатель на write protect ножку. А как быть с внешними hdd боксами?

 , , ,

bga_
()

Задачка на комбинаторику

Приснилась сегодня.

Есть стакан шириной W(нечетное) высотой H

ooooo
ooooo
ooooo
ooooo
ooooo
ooooo
ooooo

Из точки @ ([floor(W / 2), 0]) отпускают листик. Падать он может вниз или по диагоналям - #

oo@oo
o###o
ooooo
ooooo
ooooo
ooooo
ooooo

При этом не может пересечь края стакана. Те [x, y] -> [[x, y + 1], [min(x + 1, W - 1), y + 1], [max(x - 1, 0), y + 1]]

ooooo
o@ooo
###oo
ooooo
oooo@
@oo##
##ooo

Найти всевозможное количество путей из изначальной точки [floor(W / 2), 0] до дна.

PS тег haskell для привлечения математиков. Решить нужно аналитически, без рекурсивных программ в лоб.

 , , ,

bga_
()

Выбор дистрибутива для vps 1 ядро, 256 мб озу, ssd

Процессор строго x64 (такой хостер).

Выживет ли debian 11?

Или ставить debian 10 с мигрированием на 11 после окончания поддержи (август 2022)?

Задачи сервера

  • Веб сервер статики
  • Почта
  • jabber
  • разные vpn

Спасибо.

 , ,

bga_
()

Таки нашел годный андроид телефон в 2к22

Unihertz atom L https://aliexpress.ru/item/1005001602325985.html

Unihertz atom XL https://aliexpress.ru/item/1005001602669499.html

Обсуждение https://4pda.to/forum/index.php?showtopic=980110

Плюсы.

  • Не лопата. 4"
  • не выцветающий AMOLED
  • Есть рут
  • Есть порт линейки
  • Защита IP68, фронтальное стекло аш 1.5мм гориллы
  • Жирная батарея 4300мАЧ для такого размера
  • Рация(PTT)

 ,

bga_
()

int в си больше не нужен?

Осознал что чистый int неизвестно какого размера мне перестал быть нужным. Кроме как передать в printf и общаться с api ос.

Давно использую (u)intXX_fast_t для считаная и (u)intXX_t для хранения. А так же (s)size_t для работы с памятью.

Некоторое время продолжал использовать int и unsigned для всяких констант и вычисления во время компиляции пока не понял что проще и надежнее в таких случаях сразу брать (u)int_max_t.

Про всякие short и прочие странные long long вообще молчу. Чистый бред.

PS реквестирую современный подход к шаблонам в printf. Чтобы не %d а %u8, %i32

 ,

bga_
()

Магазин Joom.com фейк или норм?

Как там с доставкой и адекватная ли поддержка покупателя (диспуты) ?

Отзывов в интернете о них в 21 году примерно 0.

 

bga_
()

Как неявный каст signed в unsigned сделать ошибкой?

>>> cat test.cpp
int foo(unsigned x) {
	
}

int main() {
	foo(-1);
	return 0;
}

>>> g++ -Wall -Wextra test.cpp

Хочу чтобы компилятор меня посылал когда я пытаюсь передать отрицательное число в unsigned тип неявно вместо того чтобы -1 внезапно становилась 4294967295. Такое поведение ведет к очень плохим багам.

И разрешал мне если я явно попрошу. Те foo(unsigned(-1))

 , ,

bga_
()

А тут все понимают что браузер есть агент ББ?

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

Что могут скрипты на странице браузера (кроме свистения пердения). Могут трекать мышь/тач. Могут кейлогить.

Ладно. Допустим кейлогер и мышь чисто для статистики и кроме как владелец сайта никто это больше не видит. А вот и нет. Владелец сайта встраивает рекламный скрипт. А тот в свою очередь тоже кейлогит но уже в масштабе посерьезнее. В худшем случае кейлогит какая нибудь яндекс.метрика и вы как на ладони. На какие сайты ходите, что на них пишите. Прямо в недра 3х буквенного агентства.

Но это еще не все. Гугл хром хеширует все файлы на компе до которых дотянется. Естественно в целях «безопасности» пользователя. Якобы ищет вирусы.

А еще гугл хром теперь проверяет орфографию в облаке. Те весь текст, какой бы вы не ввели в браузере, сразу отправляется ББ. Тут рекомендую только писать текст в нативном редакторе и делать ctrl+c ctrl+v на сайт чтобы ББ хотя бы не видел промежуточных результатов.

Но это все работает уже как лет 10.

Новый бич это умные колонки и аудио помощники. Которые слушают 24/7 что происходит в посещении обо всем докладывают ББ. Спрашивал знакомых что они об этом думают. Ответ один - «мне нечего скрывать». Ладно хоть ментов вызовет при ограблении. Хоть что то хорошее.

 , , , ,

bga_
()

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