LINUX.ORG.RU

Сообщения Weres

 

Язык программирования D одобрен для принятия в GCC

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

Дэвид Эделсон (David Edelsohn), руководитель группы оптимизации GCC в IBM Research, объявил об одобрении включения рантайма и фронтенда для языка программирования D в состав GCC. Ментейнером назначен Ян Буклав (Iain Buclaw), основной разработчик GDC, работающий в Sociomantic Labs.

GDC — это реализация компилятора языка D под лицензией GPL, использующая бэкенд GCC. Проект был основан Давидом Фридманом (David Friedman) в 2004 году. Сейчас разработкой руководит Ян Буклав, присоединившийся к проекту в 2009 году.

Какая версия GCC получит поддержку D, пока неизвестно.

>>> Сайт проекта GDC

>>> Сообщение в рассылке GCC

 ,

Weres
()

Издательство O'Reilly выставило на продажу свободный от DRM набор книг о Unix

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

На сайте Humble Bundle представлен набор книг о Unix. Минимальная цена составляет 1 доллар США. Все книги на английском языке и свободны от DRM.

В базовый набор входят 5 книг: «Unix in a Nutshell», «Learning the bash Shell», «lex and yacc», «sed & awk», а также «Linux pocket guide».

Выбрав цену больше минимальной, вы cможете указать, как будут распределены деньги между издателем, организацией Code of America и, если хотите, любым другим фондом из списка.

Если заплатите от 8 долларов, то дополнительно получите книги «bash Cookbook», «Classic Shell Scripting», «Learning GNU Emacs», «Unix Power Tools», «Learning the vi and Vim Editors», «Bash Pocket Reference» и «Learning Unix for OS X».

Если повысите плату до 15 долларов или более, станут доступны книги по системному администрированию: «Essential System Administration», «TCP/IP Network Administration», «DNS and BIND» и «Network Troubleshooting Tools».

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

 , ,

Weres
()

Состоялся релиз Nuklear — библиотеки для построения пользовательских интерфейсов, написанной на ANSI C

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

11 апреля 2016 года состоялся релиз Nuklear — небольшой библиотеки для построения GUI, написанной на ANSI C.

Это минималистичный тулкит, построенный на принципах immediate mode и переданный в общественное достояние. Библиотека была спроектирована как простой встраиваемый интерфейс и не имеет никаких дополнительных зависимостей. Для рендеринга и обработки пользовательского ввода используются платформозависимые бэкенды, поверх которых построена модульная система, позволяющая спроектировать интерфейс основываясь на концепциях ввода/вывода.

Особенности

  • immediate mode
  • header only (можно использовать и как обычную библиотеку, с разделением на реализацию и заголовки)
  • написан на C89 (ANSI C)
  • небольшая кодовая база (~15kLOC)
  • ориентирован на портабельность, эффективность и простоту
  • нет зависимостей (не требуется даже стандартная библиотека)
  • настраиваемый внешний вид
  • занимает мало места в памяти, предоставляет полный контроль за потребляемыми ресурсами
  • поддержка UTF-8
  • не имеет глобального или скрытого состояния
  • модульность: вы можете скомпилировать и использовать только ту часть библиотеки, которую собираетесь использовать

Несколько примеров пользовательского интерфейса, реализованного с помощью nuklear: раз, два, три.

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

 , ,

Weres
()

Автокомплит в Emacs отображается не в попапе, а в отдельном буфере

Форум — Development

Выглядит это так. Если запускаю имакс без конфига (через -q), работает аналогично. Очень хочется нормальный попап. Как это починить? GNU Emacs 24.5.1. Использую semantic, автодополняю через (semantic-analyze-possible-completions).

 

Weres
()

Хакеры слили в интернет данные о жителях Турции

Форум — Talks

В свободном доступе на этом сайте размещен торрент с дампом БД, содержащей данные о жителях Турции. В базе 49,611,709 человек. В открытый доступ выложены данные о родителях, месте и дате рождения, полный адрес и номер национального идентификатора.

Хакеры дают несколько технических советов по поводу хранения данных и обслуживания БД, призывают позаботиться об Эрдогане, а так же не голосовать за Трампа.

 , , ,

Weres
()

Microsoft покупает компанию Xamarin

Новости — Проприетарное ПО
Группа Проприетарное ПО

В своём блоге компания Microsoft заявила о покупке Xamarin — компании, разрабатывающей Mono (свободную реализацию .Net Framework) и набор инструментов для разработки кроссплатформенных приложений для iOS, Android, Windows и Mac.

Xamarin позволяет использовать .NET для создания мобильных приложений на языке С#, с возможностью использования полноценных нативных API для каждой платформы.

На данный момент заявлено, что продолжится работа по интеграции Xamarin с Visual Studio, Visual Studio Team Services и Azure. О дальнейших планах Microsoft обещают рассказать на конференции Microsoft Build в апреле.

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

 ,

Weres
()

Некорректные зависимости при добавлении deb пакетов на загрузочную флешку

Форум — Linux-install

Ставлю 32-ух битную ubuntu 14.04.3 на планшет с UEFI. Из коробки у 32-ух битной ubuntu нет UEFI в образе, я добавил нужный файл и загрузился в режиме live usb. Wif-fi не подхватывается, установку нужно проводить в оффлайн режиме. Проблема в том, что в образе нет grub-efi. Я скачал нужные deb файлы отсюда. Добавил на флешку таким образом:

cp ~/project/ubuntu/*.deb /media/anton/ARCH/pool/extras/
apt-ftparchive packages /media/anton/ARCH/pool/extras/ > /media/anton/ARCH/dists/stable/extras/binary-i386/Packages
gzip -c /media/anton/ARCH/dists/stable/extras/binary-i386/Packages | tee /media/anton/ARCH/dists/stable/extras/binary-i386/Packages.gz > /dev/null
Теперь система находит grub-efi и даже пытается его поставить. Но получается вот это. Для Ъ: пакет grub-efi-ia32 зависит от grub2-common. Нужна версия 2.02~beta2-9, а установлена 2.02~beta2-9ubuntu1.3.

Казалось бы, перепутал версию системы, взял не те пакеты. Однако:

anton@desktop:~/project/ubuntu$ dpkg -I grub-efi-ia32_2.02-beta2-9ubuntu1.3_i386.deb 
 новый пакет debian, версия 2.0.
...          
 Package: grub-efi-ia32
 Source: grub2
 Version: 2.02~beta2-9ubuntu1.3
 Architecture: i386
 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Installed-Size: 186
 Depends: debconf (>= 0.5) | debconf-2.0, grub-common, grub2-common (= 2.02~beta2-9ubuntu1.3), grub-efi-ia32-bin (= 2.02~beta2-9ubuntu1.3), ucf
 Conflicts: elilo, grub (<< 0.97-54), grub-coreboot, grub-efi-amd64, grub-ieee1275, grub-legacy, grub-pc, grub-xen
 Replaces: grub, grub-common (<= 1.97~beta2-1), grub-coreboot, grub-efi, grub-efi-amd64, grub-ieee1275, grub-legacy, grub-pc, grub2 (<< 2.02~beta2-9ubuntu1.3)
Вроде бы пакет правильный и зависимости у него тоже правильные. Что не так? Как поправить?

 , ,

Weres
()

Выполнить код в главном потоке на языке Rust

Форум — Development

Добрый вечер.

В java я могу написать что-то подобное:

new Handler(Looper.getMainLooper()).post(runnable);
чтобы runnable выполнился в главном потоке. Можно ли сделать подобное в rust?

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

glib::idle_add(move || {
  match rx.try_recv() {
    Ok(link) => process_link(&mut rows_iter, &mut store, link),
    Err(_) => { },
  }
  Continue(true)
});
Биндинги здесь. Но само собой он не годится, ибо выжирает cpu. Помогут ли мне события, ведь я не смогу безопасно инициировать их в фоновом потоке? Как это делается в реальных программах?

 ,

Weres
()

Чтение из UTF-8 файла в массив на языке Rust

Форум — Development

Господа, имеется такой код:

use std::fs::File;
use std::io::BufReader;
use std::io::prelude::*;

fn main() {
    let args : Vec<String> = std::env::args().collect();
    if args.len() < 2 {
        println!("Wrong! Use: {} filename", args[0]);
        return;
    }
    
    let file_name = args[1].to_string();
    let input_file = match File::open(&file_name) {
        Ok(file) => file,
        Err(_) => {
            println!("File {} not found.", file_name);
            return;
        }
    };

    let mut reader = BufReader::new(input_file);

    let mut buf = [0u8; 512];
    loop {
        let length = reader.read(&mut buf).ok().unwrap();
        if length == 0 {
            break;
        }
        let _s = match std::str::from_utf8(&buf[0..length]) {
            Ok(string) => string,
            Err(e) => panic!("{}", e),
        };  
    }

}

Проблема в том, что в файлах вперемешку идут символы разной ширины (ASCII и кириллица), поэтому иногда в буфер знак целиком не влезает и я получаю что-то вроде:

thread '<main>' panicked at 'invalid utf-8: invalid byte near index 511'

Собственно вопрос: как эффективно разрулить эту ситуацию? Дочитывать по байту, пока декодирование не пройдёт успешно? Или использовать что-то ещё?

Решение такого типа:

let mut s = std::string::String::new();
    loop {
        let length = reader.read_to_string(&mut s).ok().unwrap();
        if length == 0 {
            break;
        }
    }
не подходит, файл может быть очень большой, нужно экономить память. То же самое касается и read_line.

 ,

Weres
()

Ищу библиотеку для Node.js со сжатием файлов в один и перезагрузке при изменении исходных

Форум — Development

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

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

Для полного счастья хочется просто указать, вот по этому урлу доступна вот эта директория, а всё остальное делается само.

В сети искал, но там в основном о компрессии при деплое.

 ,

Weres
()

Ищу планировщик вкупе с каталогизатором

Форум — General

У меня скопилось очень много тех. литературы, которую я бы хотел прочитать, а так же ссылок на курсы и видео, которые хотел бы послушать. Всё это богатство мне нужно привести в структурированный вид. Я смотрел каталогизаторы (tellico, datacrow), но полностью моим условиям они не удовлетворяют.

Мне нужна программа, которая сможет пройтись по директории рекурсивно и собрать все файлы, по возможности расставив им теги на основании того, в каких директориях они лежат. Теги для каждой записи должны легко добавляться, удаляться, по ним можно фильтровать. Помимо файлов с диска, в коллекцию на равных условиях нужно добавлять ссылки на интернет-ресурсы. Некоторые книги и курсы, объединенные общей темой, следует читать/слушать в определенном порядке, поэтому мне бы хотелось иметь возможность ранжировать записи внутри тега. Так же хочется, чтобы теги могли иметь разные категории/приоритеты (одно дело тег C++, другое - список книг, которые нужны как теория для X). Прочитанные книги и завершенные ресурсы хотелось бы отмечать. Хочется видеть облако/список тегов. Совсем здорово было бы иметь возможность проставлять даты для записей (курс идет с такого-то по такое-то), иметь с этого уведомления и видеть список литературы на ближайшее будущее.

Джва года жду.

Сдается мне, что мои мои вкусы очень специфичны, и я готов начать подвиг быдлокодения во имя опенсорса на крестхк с куятми, но прежде чем порождать недопрограмму хотел бы узнать, вдруг она уже есть?

 ,

Weres
()

Покритикуйте Java код

Форум — Development

Господа, я тут в рамках изучения Java написал очень простой парсер для HTML. Всё, что он может, это искать теги, их атрибуты и значения этих атрибутов. Писал используя паттерн State. Вообще, парсер был мне нужен для учебного проекта, в котором я сейчас использую JSoup. Но суп медленный, поэтому я хотел написать что-то максимально быстрое и простое.

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

Код парсера: https://gist.github.com/koniahin/0eeee57c14f04bb1af9c

Тесты: https://gist.github.com/koniahin/6b7274333e65cc134dc8

 

Weres
()

Поехала верстка блока рекламы на главной

Форум — Linux-org-ru

Сабж. Вот скриншот: http://i.imgur.com/mUP6qiv.png Под линуксом такое и в хромиуме, и в файрфоксе.

Weres
()

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