Category: it

Category was added automatically. Read all entries about "it".

ioda

Мои сказки для взрослых

Серия "Семь стихий Зеленой Жемчужины"

Гибрид НФ и фэнтези. Или даже их столкновение. Потому, что космонавты с Земли, недавно получившие возможность межзвездных полетов, сталкиваются с культурой, основанной на магии, причем, случается это без попаданства в иной мир, вмешательства богов или прямых противоречий с нормальной физикой. Это не космическая опера, поскольку суть в том, что происходит не в космосе, а на планете Виз в обстановке, которая по сути мало отличается от классических фэнтезийных миров.

Часть 1: Диверсанты (2008) (переделан в 2018)
Первый контакт со странными последствиями и крайне авантюрным планом научного исследования.

Часть 2: Лик неизбежности (2018)
Земляне пытаются поставить исследование открытой планеты на постоянную основу, визанцы вроде бы не против, но все рушится.

Вспомогательная часть: Старинные истории о народах и расах
Может использоваться как справочник по расам Виза
Специфический жанр и формат: книга в книге. Один из главных героев читает визанский манускрипт, рассказывающий о том, как появились расы эльфов, гоблинов и прочих. Сказочный, но биологически непротиворечивый вариант эволюции, попытка скрестить фэнтези с научпопом. Сюжета как такового нет, если не считать сюжетом историю.

Часть 3: Убить Джаггарана - пишется (50%)
Старый Эйо Икен сошел с ума, дело в руки берет Т'Иниариса. Есть ли у нее шансы против хана Джаггарана, и есть ли хоть какие-то шансы у Икена?

Серия "Сезон молодости"

Приключенческое фэнтези с элементами детектива. Мир - тот же.

Часть 1: Экзамены Икена (2006)
Самая первая проба пера - мне кажется наивно, но переделывать уже не буду.
Талантливый и честолюбивый студент Эйо Икен из клана Да-ахой заканчивает обучение в Цитадели Магии. Но в самый последний день, на решающем экзамене удача ему изменяет. События ведут к тому, что он получает свою первую работу - на подхвате у знаменитого детектива Шикаши, получается своего рода магический Ватсон при немагическом Холмсе.

Часть 2: Дело охотника за пузырями (2006)
Пузыри - живые воздушные шары, на которых можно летать на планете Виз. Охотник за пузырями (точнее их ловец) становится очередным клиентом сыщика Шикаши. Но вот беда: Шикаши очень не любит путешествовать и предлагает Икену попробовать себя в самостоятельном расследовании. Вместе с Икеном отправляется Т'Иниариса - своенравная особа, стремящаяся доказать, что она лучше всех.

Часть 3: Дикие Земли (2006)
Дело охотника раскрыто, но не закончено. Трое сыщиков (Шикаши все-таки присоединяется к молодежи) отправляются в погоню. Но логово преступников находится в таких местах, куда обычные люди не рискуют соваться...

Часть 4: Небесный танец (2007)
Банда магов, которая охотится за наследством гениального волшебника древности Сарингана, пытается использовать Икена и Шикаши в своих целях. В дело оказываются вовлечены даже каратели Цитадели. Икен встречает очередную девушку своей мечты...

Часть 5: Против себя - пишется (30%)
Банда разгромлена, однако история наследства Сарингана не закончена. Икен и Шикаши оказываются вовлечены в масштабную интригу с классическим детективным раскладом: круг подозреваемых сужен до шести вполне определенных лиц. Да вот беда: эти шестеро возглавляют город-государство, и они нанимают сыщиков фактически против самих себя, чтобы выяснить, кто из шести - враг.

Миниатюры

Оттепель на Стылом Перевале
Притчи о Шане

Карты

Регион Виза, включающий Столицу и города орды
Карта Столицы
ioda

Недавно открыл для себя std::chrono

Такое впечатление, что люди специально извращались, годами думали, как бы наворотить побольше мутного говна на ровном месте!

Пример:

uint64_t nano_time()
{
using namespace std::chrono;
return duration_cast<nanoseconds>(high_resolution_clock::now().time_since_epoch()).count();
}

Видимо, было совершенно западло сделать что-то типа:

return chrono_time(chrono_high_resolution_clock);

- и умножение на 1000, 1000*1000 и т.д. если нужны микро-, милли- или просто секунды.
ioda

Игнор некоторых русскоязычных сервисов

Если включить в ЖЖ галочку "русскоязычные сервисы", то появится что-то полезное, но не только.

Удаление полосы новостей "discovery times" внизу.

Внизу вылезает полоса с лентой неких новостей discovery times или как-то так. Как она формируется, неясно, но лично для меня там редко бывает что-то полезное. И потому раздражает. Баннерорезка убирает это дело фильтром:

livejournal.com##.b-discoverytimes-container



Удаление постов-поучений

Далее, появилось что-то типа образовательных постов, которые влезают в ленту без спроса. Начинание, вроде как, хорошее, но глючное. Один и тот же пост про сталинские репрессии у меня за месяц вылез раза четыре, при том, что я на него кликал, то есть читал и даже зафрендил автора, то есть и так вижу его посты. Пока эта хорошая штука нехорошо глюкает, она только раздражает. Режется она фильтром:

livejournal.com##article.ng-scope.js-emojis.js-elem-bordercolor.entryunit--feed.entryunit:has(span[class="grant-control__title"])


Скрытие промо

Ну и, если кто еще не знает, как убрать "промо". Эта кака не только в русскоязычных сервисах мелькает:

livejournal.com##.entryunit--feedpromo-entry.ng-scope.js-emojis.js-elem-bordercolor.entryunit--feed.entryunit
ioda

Как выключить репосты

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

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

livejournal.com##article.ng-scope.js-emojis.js-elem-bordercolor.entryunit--feed.entryunit:has-text(репост сделан)

Аналогичный фильтр позволит убрать из ленты и любые другие посты, содержащие любую характерную фразу, а не только "репост сделан".

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

livejournal.com##div.b-tree-twig-deep-0:has(span[data-ljuser="никнейммудака"])

При желании даже в разделе "Новые записи" можно скрыть:

livejournal.com##li.ng-scope.js-elem-bordercolor.b-myupdates-item:has(span[data-ljuser="никнейммудака"])
ioda

Игнор пользователя в сообществах

Бывает так, что состоишь в определенном сообществе, читаешь его. Однако там присутствует некий mudofil, который постит какую-то мутную хрень, которая вас раздражает. А mudofil продолжает постить с регулярностью. Спрашивается, что делать, и как избавиться от постов mudofilа в ленте? Как читать сообщество, но не видеть посты mudofilа в сообществе? У меня для вас есть рецепт.

Он включает в себя антирекламное расширение вроде uBlock Origin или аналогичное.

Добавьте в него 2 фильтра, в которых имя mudofil заменено на ник нелюбимого вами лично персонажа. Один фильтр скрывает его посты из вашей личной френдленты, а второй - из ленты сообщества.

livejournal.com##article.ng-scope.js-emojis.js-elem-bordercolor.entryunit--feed.entryunit:has(span[data-ljuser="mudofil"])

livejournal.com##.ng-scope.js-emojis.entryunit--view-recent.entryunit:has(span[data-ljuser="mudofil"])
ioda

std::sort против qsort

Есть странная фишка в Visual Studio C++ (в данном конкретном случае - в 2015-й).

Есть STL-евская функция std::sort.
На вход она принимает предикат, то есть функцию, которая возвращает bool, если a < b.
Есть STD C функция qsort.
На вход она принимает функцию, которая возвращает int: -1, если a < b, +1, если a > b и 0, если a == b.

Первая функция возвращает меньше информации, поэтому естественно было бы предположить, что её придется вызывать чаще. А значит, если сравнение само по себе долгое и сложное (как например сравнение строк), тогда qsort должен быть быстрее.

Эксперимент же показывает, что std::sort работает быстрее qsort (естественно, в релизе и с одинаковой оптимизацией).

Гуру программирования объясняют, дескать, все дело в том, что в STL сравнения инлайнятся. Хрен там.

Я написал тестик, в котором один и тот же массив сортировался с использованием вызова по указателю на функцию strcmp, то есть никакого инлайна не должно было быть. К тому же сама strcmp - непростая, и затраты на её вызов должны быть пренебрежимо малы по сравнению с затратами на исполнение тела.

И что же? На 100 тыс. элементов std::sort все равно сортировал строки вдвое быстрее, чем qsort: 15 мс против 32 мс. При этом по каким-то загадочным причинам время от времени получалось вдруг 15 против 16, а потом опять разница вдвое.

На 500 тыс. элементов std::sort тоже оказался быстрее, стабильно показывая цифры вроде 78 против 125.

А что насчет количества вызовов? Поставил я счетчики и внезапно оказалось, что std::sort вызывает функцию сравнения меньшее количество раз - ненамного, но все-таки. То есть теория насчет того, что std::sort придется вызывать сложные сравнения чаще, тоже не работала.

Проверка в отладчике показала, что std::sort и qsort вроде бы не ведут к общему коду, то есть реализованы по-разному. Хотя, казалось бы, напрашивается использование общего кода. Возникает подозрение, что STL функцию когда-то оптимизировали, а STD C функцию не стали трогать.
ioda

Анекдот: как человек пытался заразить линух :)

Оригинал взят у tomsoer в Венда рулит, а Линух сосет
... или о попытке поставить вирус на Линух
Скачал вирусов себе на линух.
Распаковал.
Поставил под root.
Не завелись. Два часа гуглил, оказалось, вместо /usr/local/bin вирусы стали в папку /usr/bin на которую у юзера malware нет прав на запись, поэтому вирус не может создать файл процесса. Нашел на китайском сайте патченый .configure и .make, пересобрал, переустановил.</p>


Вирус заявил, что ему необходима библиотека cmalw-lib-2.0. Оказалось cmalw-lib-2.0 идет под CentOS, а под убунту ее не было. Гуглил два часа, нашел инструкцию как собрать .deb пакет либы из исходников. Собрал, поставил, вирус радостно запустился, пискнул в спикер и сделал core dump.

Час чтения syslog показал, что вирус думал, что у меня ext4 и вызывал ее api для шифрования диска. В btrfs это api deprecated поэтому линукс, заметив это непотребство, перевел раздел в рид-онли.

В сердцах открыл исходники вируса, grep'нул bitcoin кошелек, отправил туда $5 из жалости и пошел спать...