LINUX.ORG.RU

Сообщения Virtuos86

 

Зачем нужна статическая типизация?, или Вы всё врете!

Форум — Development

В теме "Питонячьи радости " на последних страницах между мной и @rtxtxtrx внезапно разгорелся спор, из которого я понял, что есть еще люди, которые не считают динамическую типизацию (в том виде, в котором она представлена в Питоне, а именно строгая динамическая типизация) серьезным недостатком при работе с большим объемом кода, особенно при рефакторинге. Вообще изначально разговор завязался вокруг назначения type hints введенных в Питон 3: я утверждал, что они нужны для создания семантических связей в коде, которые будут препятствовать внесению деструктивных изменений в код в результате опечатки или иной ошибки кодера (изменил код, в результате которого какое-либо выражение получило некорректное значение, которое тем не менее обладает схожим с корректным значением типовым контрактом, поэтому при запуске код не «упадет» сразу, указав на проблему); оппонент заявил, что они нужны для (само)документации и не более того.
Но потом выяснилось, что и царь-то ненастоящий (читай, статическая типизация). Не нужна она, просто именуй сущности понятно и уповай на строгую типизацию. А если типизация не строгая, то сами виноваты, у нас в Питоне всё ОК.
Поскольку тема большая и вкусная, я предлагаю всем обсудить этот очень важный вопрос в меру скромных сил и познаний каждого желающего. Обсуждение вторичных вопросов, как-то «статическая типизация нужна для генерации эффективного кода», «при динамической типизации тип только один, object» etc. не предусмотрено — спорим только о том, дает ли статическая типизация выигрыш, если надо перекраивать несметные тыщи kloc. Если есть вообще о чем спорить 😅.

 ,

Virtuos86
()

«Сырая» разметка делает что надо, при оформлении в макрос — делает частично

Форум — General

Работаю с MiKTeX.

Эта разметка формирует текст в вертикальную колонку, выровненную по левому краю (и разбитую на абзацы, но это тут не главное):

\clearpage
\leftskip=3.8cm % это говно, но сделано для первоначальной прикидки, а пофиксить руки пока не дошли
{\obeylines\smallskip
Строка №1
Строка №2
Строка №3
\quad % новый абзац
Строка №1
Строка №2
Строка №3
\smallskip}

После вынесения в макрос переносы строк не проставляются, и весь текст идет одним абзацем:

\newcommand{\item}[2]{
	\clearpage
	\leftskip=#1
	{
		\obeylines
		\smallskip
		#2
		\smallskip
	}
}
Памагити! Очень не хочется каждую строку отбивать руками \\, да и текст замусоривается.

 

Virtuos86
()

Кто-нибудь из растоманов ЛОР'а хочет написать новость?

Форум — Talks

https://blog.rust-lang.org/2018/05/10/Rust-1.26.html

Значительные изменения (impl Trait etc.), было бы неплохо запилить новость.

Update: описание RFC официального стиля оформления кода на Rust (aka `style-guide`): https://github.com/nrc/rfcs/blob/0c97572fa88204e8d3c2561b59d47c9c1c3327dc/sty...

 

Virtuos86
()

Сдвоенный выпуск PyPy2.7 и PyPy3.5 v6.0

Новости — Open Source
Группа Open Source

Команда разработчиков PyPy выпустила PyPy2.7 v6.0 (интерпретатор, поддерживающий синтаксис Python 2.7) и PyPy3.5 v6.0 (интерпретатор, поддерживающий синтаксис Python 3.5). Оба выпуска во многом основаны на единой кодовой базе, что и позволило подготовить их совместный выход.

PyPy — совместимый интерпретатор Python, во многом годящийся на бесшовную замену CPython 2.7 и CPython 3.5. PyPy быстр (сравнение производительности PyPy и CPython 2.7.x), благодаря встроенному трассирующему JIT-компилятору.

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

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

 ,

Virtuos86
()

Building Tiny Rust Binaries for Embedded Linux

Форум — Development

Сабж.

TL;DR: растоман последовательно уменьшает размер собираемого бинарника на примере хеллоуворлда с ~6 Мб до ~200 кб, используя ряд тонких настроек Cargo и LLVM, а также прибегая к помощи Xargo и upx.

 ,

Virtuos86
()

Rust 1.25.0

Новости — Mozilla
Группа Mozilla

Сегодня вышел Rust 1.25.0 (2018-03-29).

Rust это системный язык программирования, нацеленный на надёжность, скорость и параллельное выполнение.
Если вы имеете предыдущую версию Rust, установленную через rustup, для получения версии 1.25.0 достаточно ввести в терминале:

$ rustup update stable

Что нового в 1.25.0 stable

Синтаксис

Компилятор

Библиотека

Стабилизированные API

  • Location::column;
  • ptr::NonNull;

    Наиболее значимое событие — это std::ptr::NonNull<T>. Этот тип похож на *mut T, но является ненулевым (non-null) и ковариантным. Если вкратце, NonNull<T> гарантирует, что никогда не будет равен null, а это означает, что Option<NonNull<T>> имеет тот же размер, что и *mut T. Если вы создаете структуру данных с небезопасным кодом, NonNull<T> зачастую будет правильным выбором для вас.

    Следующие функции теперь могут быть использованы в константных выражениях, т.е. например, static MINUTE: Duration = Duration::from_secs(60);:

  • Duration::new;
  • Duration::from_secs;
  • Duration::from_millis;
  • Duration::from_micros;
  • Duration::from_nanos.

Cargo

Разное

Примечания по поводу совместимости

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

 

Virtuos86
()

Google's AlphaZero Destroys Stockfish In 100-Game Match

Форум — Talks

Вынос тела:

28 wins, 72 draws, and zero losses.

$SUBJ

Я помню времена, когда проигрыш Каспарова или Крамника компьютеру воспринимался как сенсация.

 ,

Virtuos86
()

Rust 1.22 (и Rust 1.22.1)

Форум — Development

Почему сразу две версии? Чтобы задницы злопыхателей и критиков частых релизов полыхали ещё сильнее! (Как вариант, потому что 1.22.1 содержит патч, устраняющий баг в релизе 1.22, проявляющийся в Cargo у пользователей ОС macOS High Sierra, но это неточно.)

Что нового?

  • Основная фича: теперь вы можете использовать ? с Option<T>:
    fn try_option_some() -> Option<u8> {
        let val = Some(1)?;
        Some(val)
    }
    assert_eq!(try_option_some(), Some(1));
    
    fn try_option_none() -> Option<u8> {
        let val = None?;
        Some(val)
    }
    assert_eq!(try_option_none(), None);
    

    Пока функциональность ограничена; так, вы не можете писать код, который смешивает Result'ы и Option'ы в одной и той же функции, к примеру. Это станет возможным в прекрасном далёко.

  • Типы, реализующие Drop теперь доступны в `const` и `static` определениях:
    struct Foo {
        a: u32,
    }
    
    impl Drop for Foo {
        fn drop(&mut self) {}
    }
    
    const F: Foo = Foo { a: 0 };
    static S: Foo = Foo { a: 0 };
    

    Ничего особенного, но, согласитесь, приятно.

  • Два последних изменения в компиляторе должны ускорить компиляцию в режиме отладки.
  • T op= &T теперь работает для примитивных типов:
    let mut x = 2;
    let y = &8;
    
    // это не работало ранее, но теперь работает
    x += y;
    

    А раньше бы пришлось использовать разыменование: x += *y.

  • Улучшенные бэктрейсы на macOS.
  • Теперь вы можете создавать `compile-fail` тесты в Rustdoc:
    /// ```compile_fail
    /// let x = 5;
    /// x += 2; // shouldn't compile!
    /// ```
    
  • Наконец, мы удалили `le32-unknown-nacl` из поддерживаемых целей сборки. Google отказался от PNaCl в пользу WebAssembly. Вы уже можете компилировать Rust код в WebAssembly.

Подробно обо всём этом — в примечаниях к выпуску.

Стабилизация stdlib

Несколько новых API было стабилизировано в этом выпуске:

Cargo

 

Virtuos86
()

Баг или фича на главной?

Форум — Linux-org-ru

Блок Top 10 продублирован. Редко захожу на главную, так и должно быть, или баг?

 

Virtuos86
()

Написал простенькое web extension для Firefox для проверки количества непрочитанных уведомлений на ЛОРе. Что бы ещё добавить?

Форум — Talks

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

P.S. пока залил аддон на одобрение мозилловцам, но это долго вроде бы ждать, а есть еще один выходной, чтобы что-нибудь добавить.
=================================
Репа на Github.
Упакованное расширение лежит в каталоге web-ext-artifacts. Установка: скачать, Ctrl+O в Firefox, выбрать в файловом диалоге и пару раз кликнуть, подтверждая согласие на установку. Настроек никаких нет.

 

Virtuos86
()

Приняты два важных RFC

Форум — Development

RFC 2094: Non-lexical lifetimes. (лонг-рид)
RFC 2137: Support defining C-compatible variadic functions in Rust.

От первого я жду, что лайфтаймы станут проще и менее забористыми^W^Wне такими буквальными, как сейчас, что порождает всякие обходные пути при, например, множественном использовании переменных. От второго — пока утверждается, что поддержка делается специально для работы с кодом на Си, но возможно когда-нибудь дойдет и до нативных Rust функций.

 

Virtuos86
()

Еще одно маленькое украшение в синтаксисе Rust

Форум — Development

Скоро указывать включение правой границы в диапазонах станет еще удобнее!

Было:

#![feature(inclusive_range_syntax)]

fn main() {
  for i in 1...4 {
    print!("{},", i);
  }
}

=> 1,2,3,4,

Станет:

#![feature(inclusive_range_syntax)]

fn main() {
  for i in 1..=4 {
    print!("{},", i);
  }
}

=> 1,2,3,4,

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

 

Virtuos86
()

Ищется дополнение для Firefox на Android

Форум — Mobile

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

 

Virtuos86
()

Rust 1.19

Новости — Mozilla
Группа Mozilla

Команда Rust рада объявить о последней версии Rust, 1.19.0. Rust это системный язык программирования, сфокусированный на безопасности, скорости и конкурентном выполнении.

( Подробности под катом... )

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

 

Virtuos86
()

Можно ли и как в Rust написать функцию partial (частичное применение аргументов функции)?

Форум — Development

По питонячему примеру.
В частности, непонятно, что делать с отсутствием возможности указать переменное число аргументов. Делать как в Питоне и создавать callable тип, есть ли такая возможность?

 

Virtuos86
()

Не стартует X сервер

Форум — Desktop

.xsession-errors:

initctl: Не удается подключиться к Upstart: Failed to connect to socket /com/ubuntu/upstart: В соединении отказано
syndaemon: процесс не найден
/etc/mdm/Xsession: Beginning session setup...
localuser:szia being added to access control list
/etc/mdm/Xsession: 2: /etc/X11/Xsession.d/98vboxadd-xclient: X.Org: not found
/etc/mdm/Xsession: 3: /etc/X11/Xsession.d/98vboxadd-xclient: Release: not found
Unrecognized option: Protocol
use: X [:<display>] [option]
-a #                   default pointer acceleration (factor)
...
-keeptty               don't detach controlling tty (for debugging only)

(EE) 
Fatal server error:
(EE) Unrecognized option: Protocol
(EE) 
(EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
(EE) 
/etc/mdm/Xsession: 5: /etc/X11/Xsession.d/98vboxadd-xclient: Build: not found
/etc/mdm/Xsession: 6: /etc/X11/Xsession.d/98vboxadd-xclient: Current: not found
/etc/mdm/Xsession: 7: /etc/X11/Xsession.d/98vboxadd-xclient: Kernel: not found
/etc/mdm/Xsession: 8: /etc/X11/Xsession.d/98vboxadd-xclient: Build: not found
/etc/mdm/Xsession: 9: /etc/X11/Xsession.d/98vboxadd-xclient: Syntax error: "(" unexpected
Я так понимаю, Иксы как-то не так стали запускаться, но где именно это невалидное барахло находится?
До кучи, отваливается и не монтируется раздел, на котором установлена система. После fsck -f /dev/sda6 это успешно чинится, но через пару перезагрузок опять ломается.

 ,

Virtuos86
()

Где хранятся настройки gnome-terminal?

Форум — Desktop

Классическая история: изменил что-то в настройках gnome-terminal, теперь его запуск приводит к рекурсивному запуску самого себя со всеми вытекающими. (Кстати, сомневаюсь, что мне удастся повторить нечто подобное еще раз, но иногда звезды сходятся чересчур удачно :}.)
Где находятся его настройки, поиск не помог?
ОС — Linux Mint.

UPD: Решением оказался вариант поискать в англоязычном интернете. Искомый файл: ~/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml

 

Virtuos86
()

«Нетормозящий» текстовый редактор на Android

Форум — Mobile

Сабж. Требования: полное отсутствие лагов, фризов и тормозов при прокрутке и редактировании нескольких сотен строк текста. Остальная функциональность опциональна.

Upd: На данный момент отказался от выбесившего Quoda, вернулся на DroidEdit Pro, вроде бы удовлетворительно справляется с нужными мне объемами текста. Но практика покажет.

Upd.2: У меня просьба. Назвать кучу текстовых редакторов я и сам в состоянии. Меня интересует именно работа с относительно большими файлами. Если у вас нет опыта редактирования в советуемых редакторах файлов размером хотя бы в 100 килобайт, поберегите свое и мое время.

Upd.3: Jota Text Editor объявляется победителем в этом импровизированном соревновании. Советую, рекомендую. Текст редактирует, настраивается гибко. Точно не самый красивый и функциональный (здесь DroidEdit Pro выигрывает), но функциональный по-своему очень и очень.

 ,

Virtuos86
()

«E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.»

Форум — Admin

Сабж при попытке установить некоторые пакеты на свежеустановленной системе. LOR всеведающий, кто виноват, что делать?

 

Virtuos86
()

Убедительная просьба модераторскому составу

Форум — Linux-org-ru

Предлагаю рациональное предложение по поводу anonimous.
Поскольку данный юзер заводит новые учетные записи быстрее, чем на старую успевает опуститься карающий банхаммер модератора, я (и, думаю, меня поддержат) прошу не банить его больше, чтобы все желающие могли спокойно добавить его текущую учетку в игнор-лист и забыть про его существование.
А то ведь все его виртуальные сущности устанешь банить, а упоротость в Development зашкаливает.

 

Virtuos86
()

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