LINUX.ORG.RU

Сообщения EXL

 

Это вообще законно? Провал выполнения в нижележащую «мёртвую» функцию

Случай из реального проекта, код ~10-летней выдержки. Когда-то давно забыл добавить return в функцию, где имеется хитрая условная компиляция. Долгое время всё нормально работало, а сегодня вот пересобрал проект и поимел весёлых проблем. При проигрывании звука сегфолтилось, хотя вроде как в коде всё было нормально. Старые версии (собранные старым GCC) не сегфолтились. При отключенной оптимизации сегфолта тоже не было. Что тут можно ещё сказать? Спасибо Сталлману за gdb, сильно удивился когда увидел вызов якобы вырезанной функции в нём. Ну и главное: читайте и анализируйте Warning’и, господа! Минимальный пример:

$ cat dead_code.cpp 
// dead_code.cpp

#include <cstdio>

int stub_0();
int pxt_PlayWithCallback(int chan, int slot, char loop, void (*FinishedCB)(int, int));

int pxt_Play(int chan, int slot, char loop) {
#ifdef _PLS_NO_DEAD_CODE
	if (stub_0()) {
		fprintf(stderr, "!!!!! GOOD CODE !!!!!\n");
	}
#else
    return pxt_PlayWithCallback(chan, slot, loop, NULL);
#endif
}

int pxt_PlayWithCallback(int chan, int slot, char loop, void (*FinishedCB)(int, int)) {
	fprintf(stderr, "????? DEAD CODE ?????\n");
	return stub_0();
}

int stub_0() { return 42; }

int main(int argc, char *argv[]) {
	return pxt_Play(-1, 20, 0);
}

// OK:
$ g++ dead_code.cpp
$ ./a.out 
????? DEAD CODE ?????

// OK:
$ g++ -D_PLS_NO_DEAD_CODE dead_code.cpp
$ ./a.out 
!!!!! GOOD CODE !!!!!

// WTF?:
$ g++ -O2 -D_PLS_NO_DEAD_CODE dead_code.cpp
$ ./a.out 
!!!!! GOOD CODE !!!!!
????? DEAD CODE ?????
Segmentation fault (core dumped)

// WTF???:
$ g++ -O3 -D_PLS_NO_DEAD_CODE dead_code.cpp
$ ./a.out 
!!!!! GOOD CODE !!!!!
!!!!! GOOD CODE !!!!!
...
!!!!! GOOD CODE !!!!!
!!!!! GOOD CODE !!!!!
Segmentation fault (core dumped)

А ведь довольно интересный простор за этим может скрываться. Ну право ведь, забыли return проставить, компилятор же по-дефолту return 0 впихнёт, верно? А я в этом был уверен.

P.S.

// Имеется предупреждение по-дефолту, отсутствует ret в конце функции, провал и сегфолт.
$ gcc --version
gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1)

// Предупреждение только с -Wall, ret в конце функции имеется, нет провала и сегфолта.
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)

P.P.S. поиграться с компиляторами:

C++: https://gcc.godbolt.org/z/7ne8PM
C: https://gcc.godbolt.org/z/b6vqbK

Может кто-нибудь из профи подробно объяснить механизм такого поведения? Спасибо.

См. комментарии и ссылки в теме.

 , , , ,

EXL
()

Патч для очищения ЛОРа от Владимиров

@Scheduled(cron = "0 */30 * * * *")
public void deleteGayShit() {
    jdbcTemplate.update("UPDATE comments SET deleted='t' WHERE id IN (:list) AND not deleted", ImmutableMap.of("list",
        jdbcTemplate.queryForList("SELECT id FROM msgbase WHERE message ILIKE '%Владимир'")));
}

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

Вышел Kotlin 1.4
Ctrl+F «Владимир»
20 Results.

Есть ли какие-нибудь идеи, как бы уменьшить эту энтропию без игнорирования @anonymous? На ум приходит лишь игнор на основе «стоп-слов».


Простенькое решение для тех, кому надоело и кому мешает этот бред и шум:

// SPDX-License-Identifier: MIT-0

// ==UserScript==
// @name     Fuck off, Vladimirs
// @version  1
// @grant    none
// @include  https://www.linux.org.ru/*
// @run-at   document-end
// ==/UserScript==

(function() {
    document.querySelectorAll('div.msg_body').forEach(function(element) {
        const arr = element.innerText.split('\n\n');
        const is_author_anon = arr.splice(-1).join().startsWith('anonymous ');
        const is_gay_vladimir = arr.join().replaceAll(".","").toLowerCase().endsWith('владимир');
        if (is_author_anon && is_gay_vladimir) {
            element.closest('article').style.display = 'none';
        }
  });
})();

 

EXL
()

Типичное логово коммуниста снова всплыло на главной

Не тонет. По мотивам:

Что за ад на главной?
А можно все-таки убрать ЭТО?
Ссылки на некорректные сообщения (53) (комментарий)
Ссылки на некорректные сообщения (53) (комментарий)

А ведь @Pinkbyte просил:

Означенная тема отправлена в неподтвержденные. Настоятельно прошу товарищей-модераторов ее обратно не подтверждать.

 , , ,

EXL
()

Будущее китайских процессоров Kirin под вопросом

Кажется тут недавно американский барин санкциями ударил китайского холопа:

Fabless companies like Huawei HiSilicon are only responsible for chip design, and manufacturing needs to be handed over to foundries like TSMC. And TSMC has been affected by the US ban and can no longer provide OEM services for Huawei.

https://asia.nikkei.com/Spotlight/Huawei-crackdown/TSMC-halts-new-Huawei-orders-after-US-tightens-restrictions

https://sparrowsnews.com/2020/08/07/after-september-15-no-more-kirin-chips/

Собственно, куда пойдут наши разработчики Elbrus, ежели TSMC под давлением США откажается запекать в кремний наши плюшки? У нас там ничего окроме 90нм с 2014 года так и не смогли сделать? Французы которые нам помогали разбежались, кроме TSMC больше ни у кого и нет нужных мощностей для производства Elbrus’ов наверное…

 , , ,

EXL
()

Rust для Web-разработки

Существуют ли уже в экосистеме Rust’а такие аналоги Web-фреймворков, как, например:

  • Spring Boot (Java, Kotlin, Groovy)
  • Grails (Groovy)
  • Django (Python)
  • Ruby on Rails (Ruby)
  • Play Framework (Scala)
  • и т. д.

То бишь All-in-One решения, в составе которых помимо проброса контроллеров имеется ORM к какой-нибудь там PostgreSQL базе данных, шаблонизатор HTML/CSS/JavaScript по типу того же Thymeleaf из Spring или Apache FreeMarker, ну и встраиваемый Web server по типу Tomcat/Netty/Jetty опционально.

В идеале будет круто если на выходе сайт (или хотя бы его логика) будет завёрнута в компактный бинарь, который будет deamon’изирован тем же systemd а сверху будет Nginx с proxy_pass. Тот же Spring Boot удобно вкомпиливает всё в единый JAR-файл, который можно деплоить просто на машину с установленной JRE и базой данных.

Собственно, хочется попробовать чего-то нового из мира Rust. А то у всех вышеперечисленных решений есть типичные фатальные недостатки, например:

  • Python/Django – убогая динамическая типизация со всеми её проблемами в виде кривого автодополнения абсолютно в любых IDE, ситуацию угрёбищный type-hinting, который даже не часть языка, а так просто нашлёпка сбоку, практически не спасает, ещё дрист километровыми traceback’ами на каждый чих.
  • Java/Spring Boot – с типизацией всё ок, но NPE-проблемы, несколько отстающая от современных трендов стандартная библиотека, для которой нужно создавать Util-классы. Далее у Spring’а слишком много магии в чёрной коробке, ехала аннотация через аннотацию, тяжесть JVM-стека, да и сам Spring тяжёлый.
  • Kotlin/Spring Boot – с типизацией всё ок, типы помогают избегать NPE в Kotlin-коде, но так как большинство библиотек это чистая Java, приходится всё рутинно обёртывать, стандартная библиотека вполне актуальная и удобная. Далее со Spring’ом не слишком хорошая интеграция, нужно там всё подпирать какими-то костылями-плагинами вроде all-open, тестирование тоже усложнено из-за совершенно других средств моккирования, несовместимых со Spring’овскими. Далее к проблемам JVM-стека и тяжести Spring’а добавляется ещё кучка зависимостей самого Kotlin’а и его плагинов интеграции.
  • Groovy/Grails – динамическая типизация, тяжесть Spring Boot и платформы JVM. Слишком декларативненько для логики. Возможно это просто с непривычки так ощущается.
  • Scala/Play Framework – Не слишком нравится синтаксис Scala, и Play Framework со сборщиком sbt мне показался тяжелее Spring Boot’овской связки с Gradle/Maven. Понятно, что можно выкинуть sbt и т. д., но как-то хочется посмотреть в сторону от JVM-языков.
  • Ruby/RoR – тормоза, динамическая типизация, синтаксис на любителя (я приверженец C-like языков), ещё не понравился жирный начальный проект, который генерируется там через сборщик. Он изначально обмазан кучей JavaScript-библиотек вроде свистопердящей полоски прогресс-бара сверху страницы и т. д.

Ну не PHP же, прости-господи, брать для Web-разработки в 2020 году, верно?! Есть ещё вариант с Go/<чем-то>, но количество батареек у Rust’а, на мой взгляд, побольше.

В общем, посоветуйте популярные Web-фреймворки на Rust, с которыми можно поиграться для своих pet-проектов.

 , ,

EXL
()

Did Linux Kill Commercial Unix?

https://www.howtogeek.com/440147/did-linux-kill-commercial-unix/
https://habr.com/ru/post/473502/

Ъ: Yes, Linux did kill Unix.

Неплохой вброс.

Давайте перечислим те случаи в современном мире, где другие Unix-like OS, отличные от Linux-based (и очевидных macOS вместе с iOS), всё ещё используются.

Я начну.

  1. Sony PlayStation 3 – The base operating used by Sony for the Playstation 3 is a fork of both FreeBSD and NetBSD called CellOS.
  2. Sony PlayStation 4 – The operating system is Orbis OS, based on FreeBSD 9.
  3. Nintendo Switch – According to the Nintendo Switch system software’s licensing information, code from FreeBSD kernel is utilized by Horizon.

На уровне слухов: некоторые банки до сих пор используют AIX / Solaris / HP-UX, но обычно находятся в стадии миграции с них на RHEL и OL.

На уровне слухов 2: некоторые товарищи поговаривают, что на АЭС’ах до сих пор работают QNX’ы. Краем уха слышал, что кое-где на российских предприятиях непрерывного цикла используют OpenVMS.

 , , , ,

EXL
()

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

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

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

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

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

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

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

 , , ,

EXL
()

Обновление сломало мне Arch Linux

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

Kernel panic – not syncing: No working init found

Вечером я просто обновился привычной всем командой yaourt -Syua и перегрузился в Windows (стоит в дуалбуте рядом с Fedora и Arch Linux) по делам. Ладно, вру, перегрузился чтобы поиграть в Half-Life и Unreal Tournament ’99. Поиграл на славу, снова решил загрузиться обратно в Arch Linux — получил ситуацию, которая запечатлена на фотографии выше.

Сначала я подумал, что каким-то неведомым образом слетел Fedora’вский grub, так как именно он обеспечивает мне, так сказать, «дуалбут» в три операционные системы: Windows 10, Arch Linux и Fedora 29. Загрузился в Fedora, выполнил привычные команды для восстановления grub’а и обновления его конфигурации:

grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Перегрузился снова, в меню grub’а выбрал Arch Linux — ситуация нисколько не изменилась. Тогда я решил, что при последнем обновлении слетели какие-то модули в ядре и из-за этого оно валится в панику. Снова загрузился в Fedora. Отмечу, что как же хорошо, что я её установил рядом и теперь не мучаюсь со всякими LiveUSB-флешками в подобных ситуациях, примонтировал rootfs от Arch Linux’а и с помощью скрипта arch-croot чрутнулся в него:

mount /dev/sda4 /mnt
./arch-chroot /mnt

Из лога пакетного менеджера /var/log/pacman.log я вычленил список пакетов последнего обновления, которые могли испортить мне ядро и initramfs:

upgraded device-mapper (2.02.184-3 -> 2.02.184-4)
upgraded lvm2 (2.02.184-3 -> 2.02.184-4)
upgraded virtualbox-host-dkms (6.0.4-4 -> 6.0.6-1)
upgraded virtualbox (6.0.4-4 -> 6.0.6-1)

При установке VirtualBox с помощью DKMS незаметно для пользователя собираются и устанавливаются некоторые модули ядра, на которые я и грешил, а потому переустановил эти пакеты заново:

yaourt -S device-mapper lvm2 virtualbox-host-dkms virtualbox
yaourt -S linux

На всякий случай само ядро, пакет linux, я тоже переустановил. Перезагрузился — ситуация нихрена не изменилась. Подумал, раз ядро паникует от init’а, может проблема в systemd? Его же всегда и все винят во всех бедах! В третий раз загрузился в Fedora, переустановил пакет systemd и перегенерировал initramfs:

yaourt -S systemd
mkinitcpio -p linux

Перегрузился, постучался в Arch Linux — проблема не ушла. Очень странно! Пришлось в четвёртый раз грузиться в Fedora и начать гуглить инфу по этой ошибке. Поисковый запрос «kernel panic not syncing no init found arch linux» сразу же привёл меня в тему на форуме Arch Linux, благодаря которой я и решил эту проблему: [SOLVED] Kernel Panic - not syncing. No working init found. Человек на том форуме столкнулся с похожей ситуацией.


Итак, восстановление работы поломанного Arch Linux’а и расследование почему так случилось, ибо проблемка-то и не очень уж тривиальная. Из темы на форуме Arch Linux, по ссылке выше тот человек перепробовал все действия, которые попробовал я и у него тоже не получилось сначала восстановить работоспособность системы. Потом знатоки на том форуме посоветовали ему выполнить команду:

pacman -Qkk filesystem

warning: filesystem: /usr/lib64 (No such file or directory)

Для определения различных ошибок в структуре файловой системы. Я тоже её выполнил и так же как и в той теме наткнулся на странную проблему со сущностью /usr/lib64, которая в нормальных условиях ожидаемо должна быть симлинком на /usr/lib. У меня же этот файл вообще отсутствовал, а у того человека на форуме вместо симлинка был пустой каталог.

Механизм возникновения проблемы

Итак, судя по сообщению пользователя Scimmia:

There’s been a number of people without /usr/lib64/. I’m guessing it’s because of a updated that was --force’d. Don’t do that.

В pacman’е имеется какой-то странный баг или поведение, когда при опции --force или --overwrite нарушается структура файловой системы, в частности, имеется вероятность неведомым образом снести симлинк /usr/lib64 или вместо него создаётся пустая директория, как у того человека с форума. Судя по логу, я действительно обновлял какой-то пакет из AUR’а с этой опцией из-за того, что установка ругалась на какие-то существующие файлы и не придал этому значение после. Но самый цимес в том, что обновлял я этот пакет целых три месяца назад и этот --force и вылетел у меня из головы.

Что интересно, само отсутствие /usr/lib64 похоже никоим образом не влияет на работоспособность системы. Если бы что-то отвалилось и перестало работать сразу после обновления и перезагрузки, то было бы легче догадаться в чём же именно дело. Но этот симлинк /usr/lib64 в rootfs каким-то странным и неведомым способом влияет на построение образа initramfs, а поэтому Arch Linux рассыпался только спустя три месяца (sic!), когда прилетело обновление VirtualBox, которое обновило свои модули ядра и потребовало перегенерировать initramfs, генератор которого видя отсутствие симлинка /usr/lib64 тупо взял и сгенерировал мне кривой образ, из-за которого ядро посыпалось в панику.

Решение проблемы

Как уже понятно из рассказа — тривиальное, создать убитый симлинк заново, перегенерировать initramfs по новой:

cd /usr/
ln -s /usr/lib/ lib64
mkinitcpio -p linux

После выполнения этих команд Arch Linux загрузился как ни в чём не бывало и продолжил нормально работать.

Вердикт

Вот такая довольно странная и нетривиальная проблема меня посетила, которая «занесла меч над головой» и целых три месяца никак себя не проявляла. Если честно, даже не знаю, не найдя подобную тему на форуме Arch Linux, смог бы я найти решение или нет. Скорее всего нет и тупо бы снёс раздел с Arch Linux’ом, перенеся важные файлы.

А чем вы занимались сегодня ночью?

 , , ,

EXL
()

Microsoft снова внёс весомый вклад в течение Open Source

https://github.com/Microsoft/calculator

У кого-то ещё остались сомнения что Microsoft новая корпорация Бобра?


Upd. Оказывается, приложение написано не на чистом C++, а на диалекте С++/CX — биндинге к .NET-платформе и Windows Runtime.

https://github.com/Microsoft/calculator/blob/057401f5f2b4bb1ea143da02c773ac18d1bb9a2e/src/Calculator/App.xaml.cpp#L101-L115

Что им мешало написать сразу на C# — загадка.

Неужели они переносили ядро калькулятора, его движок, из старой версии на WinAPI + C в эту новомодную на XAML и C++/CX?

P.S. Старая версия выглядела вот так, если кто-то не помнит: https://imgur.com/gallery/2GG5X


Upd. Ха-ха, моё предположение оказалось верным. Действительно, под капотом модный и современный калькулятор из Windows 10 работает на древнем движке код которого уходит в 90-ые годы.

https://github.com/Microsoft/calculator/tree/master/src/CalcManager/CEngine

Просто сравните названия файлов с теми названиями, которые имеются в утёкших исходниках Windows 2000:

http://esxi.z-lab.me:666/~exl_lab/screens/windows_calc_old_vs_new.png

Видимо этим и обусловлен выбор C++/CX вместо привычного C#.

 , , ,

EXL
()

NSA опубликовала инструмент для реверс-инжинринга Ghidra

Агентство национальной безопасности США обещало, что опубликует в марте свой инструмент для реверс-инжинринга. Собственно обещание они выполнили:

https://ghidra-sre.org/

(Российские подсети заблочены, заходить с любого VPN)

Исходники сказали подвезут на GitHub чуть попозже. Ссылка для мониторинга: https://github.com/NationalSecurityAgency/ghidra

Новость на Opennet’е: http://www.opennet.ru/opennews/art.shtml?num=50260

Для тех, кто в танке, это может стать отличной альтернативой IDA Pro. Так как там из коробки есть возможность декомпилировать самые разные бинари в псевдо-код аля C, то есть, чем в IDA Pro занимается плагин Hex-Rays Decompiler.


Как и ожидалось, для запуска Ghidra потребовалась Java, JDK версии 11+; для сравнения – в IDA Pro используется (в настоящее время) библиотека Qt 5.

В Ghidra скорее всего используется SWT, но не ковырялся сильно. Возможно тупо AWT+Swing на стероидах. Внутри релиза от АНБ полно ошмётков от различных Eclipse-проектов. Главное окно программы, в котором можно создавать одиночные и совместные проекты, выглядит следующим образом:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_main.png

Из интересного – широкие возможности совместной работы над дизассемблированием файлов. Так сказать, можно звать товарищей на помощь и медитировать на выхлопы местного дизассебмлера холодными зимними вечерами вместе с ними. Список поддерживаемых процессорных архитектур:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_cpu.png

Самый вкусный инструмент это, конечно же, «CodeBrowser». В отличие от IDA Pro, тут всё довольно инуитивно и кнопочек с окошечками гораздо меньше. Просто импортируешь файл, открываешь его в «CodeBrowser», соглашаешься на его анализирование и через некоторое время (как закончится анализ) уже можно смотреть псевдокод тех или иных функций:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser1.png

Непонятно для чего они захардкодили стиль виджетов «Solaris» от ныне почившего Sun Microsystems, с ужаснейшими половинчатыми скроллбарами. При анализе бинарника разработчики Gidra даже сделали весёлую анимацию, где красный дракончик кушает бинарный код вида 00010001010. Сотрудники АНБ не лишены чувства юмора. Так что ждём в ближайшем апдейте миниатюрных лошадей и миленьких глазастых девочек. Больше скринов:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser2.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser3.png

Кроме того, стоит отметить, что из коробки в Ghidra имеется полезный дизассемблерский инструмент, который называется «Version Tracking». Суть этого инструмента в том, чтобы реверс-инженеру было удобно переносить уже проделанную работу на новые версии программы. Отслеживать все изменения, которые сделали разработчики по паттернам, сдвигам и т. д.

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_versiontracking.png

Я попробовал разобрать бинарь ARMv7, либу ARMv8 из APK и dex’ированные Android’овские Java-классы. На всех вариантах показался более-менее осязаемый псевдокод. Кому интересно, можете сравнить с той же IDA Pro:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_vs_idapro.png

Я ранее использовал IDA Pro для разбора бинарного файла ARMv7, который работал с камерой телефона. Проанализировав псевдокод я узнал правильный порядок инициализации и подсмотрел как работали с нужными мне проприетарными классами, на которых нет ни документации, ни заголовочных файлов. Я думаю, воспользовавшись Ghidra’ой, я бы тоже справился с этой работой.

Так что в полку интересных и полезных инструментов прибыло.


Update. Посмотрел внимательнее на структуру релиза и оказалось что там уже лежат архивы с исходным кодом на Java для большинства компонентов этой программы. Поковырялся в них и нашёл небольшой GUI-фреймворк базирующийся на AWT+Swing, по типу того, как оно сделано у платформы IntelliJ IDEA. Корней SWT не нашёл. Декомпиляторы выполнены в виде нативных исполнительных (соответственно платформозависимых) файлов; их исходников в этом релизе я не обнаружил.


Под Windows выглядит эта Ghidra более-менее цивильно. Видимо под неё и затачивалась. А вот под macOS, просто ужас:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_win.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_macos.png

Даже хуже, чем на Linux c Solaris-темой.

 ,

EXL
()

Transparency report (отчёт о прозрачности)

Было бы неплохо иметь на LOR’е страничку (по типу такой же, которая посвящена разметке Markdown), на которой будет публиковаться «отчёт о прозрачности» по типу Habr’а или того же GitHub’а:

https://habr.com/info/transparency/
https://habr.com/ru/docs/docs/transparency/
https://github.com/github/gov-takedowns/tree/master/Russia

Ведь РКН и прочие структуры власти периодически (из-за действий некоторых пользователей) обращаются к администрации LOR’а.

Насколько я помню, последний инцидент был совсем недавно.

 , , , ,

EXL
()

Ой! Кажется я случайно сломал человеку тред в /Linux-org-ru

Введение белых списков на ЛОР-е

// Ошибка: org.apache.commons.httpclient.URIException
// Invalid URL encoding

@maxcom

P.S. @peregrine приношу свои извинения, не хотел этого делать.

 ,

EXL
()

Ключевой разработчик KWin покидает KDE из-за несогласия с KDE VDG

Они: https://vdesign.kde.org/who.html сгноили ключевого разработчика KWin, Martin'а Flöser'а, который вёл очень интересный блог и был одним из самых активных и цитируемых разработчиков KDE.

[Пруф]
[Подробности на русском]

Очень жаль, что разработчик не смог справиться со школьниками дизайнерами KDE.

Что теперь будет с портом KDE на Wayland, одному Патрику известно, учитывая то, что Martin по сути единственный кто там «шарил» и делал порт.

 , ,

EXL
()

Firefox окончательно удаляет поддержку GTK+2

В официальном репозитории mozilla-central поддержка GTK+2 уже удалена, см. коммиты 0054a15e3c89 и 26fa4e61b9bc.

Релиз Firefox 59, в кодовой базе которого будет полностью отсутствовать возможность сборки с GTK+2, назначен на 23 марта этого года.

Источники: [1], [2]

Предлагаю обсудить столь знаменательное событие.

P.S. Летом 2016 года из кодовой базы Firefox (50-ая версия) тоже была окончательно удалёна поддержка Qt 5, которая к тому времени являлась достаточно сырой и которую пилили различные OpenSource-энтузиасты, например, из Jolla (внутренний браузер использует Qt и Gecko) и даже с нашего форума (см. r=romaxa, romaxa). Подробности можно посмотреть здесь, а обcуждение прочитать здесь.

 , ,

EXL
()

Не согласен с удалением некоторых сообщений

Тема: Помогите собрать кошелек! (см. удалённые)

Мои сообщения, с удалением которых я не согласен:

1. www.linux.org.ru/forum/general/13805324/13805984/history

2. http://esxi.z-lab.me:666/~exl_lab/screens/deleted_post.png

Могу ли я их восстановить (отправить их заново в тему), чтобы пользователи, попавшие из поисковиков в эту тему, видели инструкции по сборке и могли скачать готовые пакеты?

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

Мне нужно разрешение модератора(-ов). Спасибо.

 ,

EXL
()

Поддержка APNG будет добавлена в Chrome 59

Итак, не прошло и 10 лет: https://bugs.chromium.org/p/chromium/issues/detail?id=1171

Если кто не помнит историю драмы, то патч на поддержку APNG был уже давно разработан сообществом (MaxStepin), но Google этот патч забраковала, скорее всего под эгидой продвижения своего формата WebP, который тоже поддерживает анимированные изображения:

http://littlesvr.ca/apng/gif_apng_webp1.html

Но рыночек порешал и WebP не взлетел, точнее не вылетел за пределы гугловских сервисов (Google Play). Возможно поэтому Google всё-таки приняла допиленные патчи в upstream движка Blink. Забавно, что три года назад, Apple добавила поддержку APNG в WebKit (Safari 8). Таким образом, теперь только два браузера не будут поддерживать APNG: MS Edge и MS Internet Explorer. Но кого волнуют проблемы индейцев? А пользователи браузера Chrome и его деривативов теперь тоже смогут насладиться анимированной аватаркой юзера mm3.

 , , , ,

EXL
()

Яндекс.Деньгам совсем уже плохо? Когда ВСЁ?

В Яндекс.Деньгах особые условия для неактивных пользователей — мы списываем абонентскую плату со счетов, которые не используются дольше двух лет. Вы попадаете в число неактивных — со счетом *2614 очень давно ничего не происходит.

Размер абонентской платы — 270 руб. в месяц, но не больше, чем есть на счете. Привязанных к счету карточек списания не коснутся.

Ваш баланс — 1 руб. 11 коп. Можно пополнить его или потратить любую сумму на что-нибудь полезное. Не готовы сделать это прямо сейчас — отложите списание абонентской платы. Забыли свой пароль — напишите службе поддержки.

Если вы никак не откликнетесь, через месяц мы спишем с вашего счета 1 руб. 11 коп.

Крохи-копейки с неактивных счетов подбирают. Скоро вообще видать по свету пойдут.

У меня на старом аккаунте PayPal лежит пару баксов уже лет 12, сейчас специально зашёл посмотреть — всё лежат. Почему? Потому что западные компании ценят клиентов и позволить себе такое не могут.

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

«Ну положи денежки на свой счёт, ну потрать их на что-нибудь полезное, а не будешь пользоваться нашими сервисами — будем списывать с тебя 270 рублей в месяц».

Я так думаю, если бы у них была возможность, они бы списывали и в минус. Защел через три года в кошелёк, а у тебя там -100500 руб., повестка в суд в почтовом ящике и машина коллекторского агенства под окном.

Russian Business

 , ,

EXL
()

Github обновил дизайн профилей?!

Материал Десигн пробрался и на гитхаб. У меня одного профили стали выглядеть таким образом?

http://baat.z-lab.me:666/~exl_lab/screens/github-suck.png

Такое ощущение, что это карточки из Google Now.

Это ещё не всё.

🎆 🎆 🎆 Та-дам! 🎆 🎆 🎆

http://baat.z-lab.me:666/~exl_lab/screens/github-steam.png

Появились ачивки, прямо как в Steam!

Раньше было удобнее. А трава зеленее. По-крайней мере сразу было видно тех, у кого аккаунты скилловые.

Что дальше? Запихают материал дезигн в репозитории? Карточки с кодом?

  .-'---`-.
,'          `.
|             \
|              \
\           _  \
,\  _    ,'-,/-)\
( * \ \,' ,' ,'-)
 `._,)     -',-')
   \/         "/
    )        / /
   /       ,'

 , , , ,

EXL
()

FAR для дистрибутивов GNU/Linux

Начато портирование знаменитого файлового менеджера FAR для GNU/Linux.

https://github.com/elfmz/far2l

http://www.pcweek.ru/foss/blog/foss/8848.php

Может интересно будет кому из олдфагов.

Странно, что внутри используется wxwidgets. Видимо слава Wal Commander / WCM Commander с их иксовыми прелестями не даёт кому-то покоя. Ну хоть хорошо, что тут не голый иксовый тулкит.

Собрал для страждущих бинарь: http://baat.z-lab.me:666/FAR2L.tar.xz

Скриншотец чуть позже выложу. Как разберусь, где хранится его конфиг.
Разобрался, в ~/.WinPort, обещанные скриншоты:

Fira Mono: http://baat.z-lab.me:666/screens/firamono.png
Божественный Terminus: http://baat.z-lab.me:666/screens/terminus_1.png http://baat.z-lab.me:666/screens/terminus_2.png
Lucida Console http://baat.z-lab.me:666/screens/lucida.png

 , , ,

EXL
()

Ремейк мобильного пасьянса Snood™ 21 на Android OS

Всем привет!

Уже больше месяца отдыхаю на даче, под конец июля тут делать стало совсем нечего. Пришёл, значит, ко мне старый друг и вспомнили мы с ним про одну интересную игру на мобилках, в которую в самом начале нулевых гамали на уроках, а потом и парах. Называется она Snood™ 21, а выглядит так:

http://wstaw.org/m/2016/08/03/Photo_V150_f.jpg

Решил я по-быстренькому сделать её ремейк на Android OS, чтобы играть в неё и на современных убер-девайсах. В результате получилось следующее:

http://wstaw.org/m/2016/08/03/Photo_D4_C350_f.jpg

Правила игры довольно просты: необходимо помещать карты из колоды в столбцы, набирать в них 21 очко и стараться попасть в таблицу рекордов. Масти в игре заменены забавными рожицами, кроме этого имеется несколько (шесть на уровень) специальных карт, которые сразу очищают колонку. На подсчёт очков влияет столбец, в котором была собрана комбинация. Чем он правее, тем больше очков можно заработать. Игра заканчивается если истечёт время или заблокируются все столбцы. Колонка блокируется, если в ней больше, чем 21 очко. Более подробно правила Snood™ 21 описаны в хелпе. Всего в игре четыре уровня, последний нужно пройти так, чтобы не было заблокированных столбцов. После прохождения очки не сбрасываются и можно дальше продолжать набирать рекорды.

APK-пакет (480 КБ):
https://github.com/EXL/Snooder21/releases/download/v1.0/Snooder21-all.apk

Исходники:
https://github.com/EXL/Snooder21

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

Тут запостил потому что может кто-то тоже вспомнит такую замечательную игрушку. И вдруг кому-нибудь станет интересно. Кстати, вся графика игры отрисовывалась исключительно свободными инструментами, никакого б-гомерзкого фотошопа! Только православные GIMP и Inkscape.

Спасибо за внимание.

 , ,

EXL
()

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