LINUX.ORG.RU

Сообщения WatchCat

 

Gloox требует ручной thread sleep при отправке. Или нет?

Форум — Development

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

Пример кода:

class MyMessenger: public ConnectionListener {
public:
    MyMessenger(): client( 0 ) {}

    ~MyMessenger() {
        if( client ) delete( client );
    }

    virtual void onConnect() override {
        JID to(DST_JID);
        MessageSession* session = new MessageSession( client, to );
        session->send("test message");
        // вот без этого сообщение теряется.
        std::this_thread::sleep_for(std::chrono::milliseconds(500));
        client->disposeMessageSession(session);
        client->disconnect();
    };

    virtual void onDisconnect( ConnectionError ce ) override {
        if( ce == ConnAuthenticationFailed )
            cerr << "Auth failed. Reason: " << client->authError() << endl;
    }

    virtual bool onTLSConnect( const CertInfo& ) override {
        return true;
    }

    void start() {

        JID jid( USER_JID );

        client = new Client( jid, USER_PASS );

        client->setServer( SERVER );
        client->setPort( PORT );
        client->setTls( TLSRequired );

        client->registerConnectionListener( this );

        if( client->connect( false ) ) {
            ConnectionError ce = ConnNoError;

            while( ce == ConnNoError ) {
                ce = client->recv();
            }
            cerr << "ce: " << ce << endl;
        }

    }

private:
    Client* client;
};

 ,

WatchCat
()

snmptrapd дважды вызывает traphandle

Форум — Admin

Собственно сабж.

Поставил в Gentoo snmptrapd с таким конфигом:

doNotLogTraps yes

traphandle default /opt/bin/snmp-trap-handle

disableAuthorization yes


Сам скрипт простой:
#!/bin/bash
read HOST
read IP
echo "${HOST}" "${IP}" >> /opt/bin/test.out


Посылаю событие:
snmptrap -v 1 -c sys-info 127.0.0.1 .1.3.6.1 localhost 6 17 '' .1.3.6.1 s "Test trap 0"


В итоге в test.out оказываются две одинаковые строчки.

Кто-нибудь с подобным сталкивался и как это лечить?

Установленная версия
$ eix net-analyzer/net-snmp
[I] net-analyzer/net-snmp
     Available versions:  5.7.3-r5^t (~)5.7.3-r6^t (~)5.7.3_p3-r1^t (~)5.8-r1(0/35)^t **99999999(0/35)^t {X bzip2 doc elf ipv6 libressl lm_sensors mfd-rewrites minimal mysql netlink pci perl python rpm selinux smux ssl tcpd ucd-compat zlib PYTHON_TARGETS="python2_7"}
     Installed versions:  5.8-r1(0/35)^t(06:50:56 PM 02/21/2019)(bzip2 ipv6 lm_sensors ssl tcpd zlib -X -doc -elf -libressl -mfd-rewrites -minimal -mysql -netlink -pci -perl -python -rpm -selinux -smux -ucd-compat PYTHON_TARGETS="python2_7")
     Homepage:            http://www.net-snmp.org/
     Description:         Software for generating and retrieving SNMP data


UPD

Make sure to remove the -c /etc/snmp/snmptrapd.conf part, otherwise you will receive TRAP twice, as snmptrapd' is compiled with the default configuration file path being already set to '/etc/snmp/snmptrapd.conf'.

 ,

WatchCat
()

lighttpd в chroot'е не взлетает.

Форум — Admin

Собственно subj.
Пытаюсь настроить на Gentoo lighttpd в chroot, но столкнулся с проблемой при запуске:

/usr/sbin/lighttpd-angel -D -f /etc/lighttpd/lighttpd.new.conf 
2018-04-05 05:24:04: (log.c.171) opening errorlog '/www/log/error.log' failed: Permission denied
lighttpd-angel.c.141: child (pid=1884) exited normally with exitcode: 255

С директорией и правами всё в порядке:
ls -l /chroot/lighttpd/www
total 12
drwxrwxr-x 2 lighttpd lighttpd 4096 Apr  5 05:08 htdocs
drwxrwxr-x 2 lighttpd lighttpd 4096 Apr  5 04:52 lib
drwxrwxr-x 2 lighttpd lighttpd 4096 Apr  5 04:52 log

Конфиг простой:
cat /etc/lighttpd/lighttpd.new.conf 
###############################################################################

var.basedir  = "/www"
var.logdir   = var.basedir + "/log"
var.statedir = var.basedir + "/lib"

server.modules = (
    "mod_access",
    "mod_accesslog"
)

include "mime-types.conf"

server.username      = "lighttpd"
server.groupname     = "lighttpd"

server.document-root = var.basedir + "/htdocs"
server.pid-file      = "/var/run/lighttpd.pid"

server.errorlog      = var.logdir  + "/error.log"

server.indexfiles    = ( "index.html" )

server.follow-symlink = "enable"

server.chroot      = "/chroot/lighttpd"

server.port = 8080

accesslog.filename   = var.logdir + "/access.log"
url.access-deny = ("~", ".inc")


Если же запускаю не в chroot'е, то всё в порядке.
Версия lighttpd 1.4.45
Кто-нибудь может подсказать в чём подводный камень?

 , ,

WatchCat
()

commandline template engine

Форум — General

Внезапно появилась задача генерировать кучу текстовых фалов из заготовок.
Т.е. на входе файл вида:

...
Some text 
Another text {{VAR1}} {{VAR2}}
Some text
...

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

Хотелось бы какую-нибудь программку которая бы это обеспечивала обработку такого шаблона по типу:
programm --template myfile.tmpl -vVAR1=value1 -vVAR2=value2 >out.txt


Т.е. нужен какой-то простенький шаблонизатор для командной строки.

Несколько лет назад я находил подобную программку, но вот склероз не даёт её вспомнить.

Да, про sed я знаю и текущий вариант на нём сделан, но костыли вышли кривые и неудобные.

UPD таки победив свой склероз, я нашёл то что мне нужно.
И ответ на мой вопрос был 'GNU autogen'.

 ,

WatchCat
()

Как правильно готовить ACL?

Форум — General

Пытаюсь настроить ACL

$ umask
0022
$ mkdir ~/tmp/facl
$ getfacl ~/tmp/facl
getfacl: Removing leading '/' from absolute path names
# file: home/process/tmp/facl
# owner: process
# group: Users
user::rwx
group::r-x
other::r-x

$ setfacl -m d:g:data_managers:rwX ~/tmp/facl
$ getfacl ~/tmp/facl
getfacl: Removing leading '/' from absolute path names
# file: home/process/tmp/facl
# owner: process
# group: Users
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:data_managers:rwx
default:mask::rwx
default:other::r-x

$ touch ~/tmp/facl/z.z
$ getfacl ~/tmp/facl/z.z 
getfacl: Removing leading '/' from absolute path names
# file: home/process/tmp/facl/z.z
# owner: process
# group: Users
user::rw-
group::r-x                      #effective:r--
group:data_managers:rwx         #effective:rw-
mask::rw-
other::r--

Почему у файла маска поменялась, если в default указана rwx?

 

WatchCat
()

Как вытащить данные с попорченного раздела ext4?

Форум — Admin

Случилось страшное и болоьшой раздел ext4 накрылся тазом.
fschk не проходит, ругается на inode bitmap. Там в последней четверти раздела большой участок нулей.

Пытался r-studio/r-linux, но они зависают и вообще дальше трети раздела не доходят и начинают себя неадекватно вести.

Какие есть ещё утилиты для вытаскивания данных у убитых разделов?

 , ,

WatchCat
()

Gentoo ebuild. autotools & ant

Форум — Admin

Пытаюсь запилить собственный ебилд, т.к. sleuthkit в портажах староват.

В общем такой вот ebuild:

EAPI=5

inherit autotools-utils java-pkg-opt-2 java-ant-2

DESCRIPTION="A collection of file system and media management forensic analysis tools"
HOMEPAGE="http://www.sleuthkit.org/sleuthkit/"
SRC_URI="https://github.com/sleuthkit/sleuthkit/archive/release-4.4.2.zip"

LICENSE="GPL-2 IBM"
SLOT="0/10" # subslot = major soname version
KEYWORDS="~amd64 ~hppa ~ppc ~x86"
IUSE="aff ewf static-libs java"

COMMON_DEPEND="dev-db/sqlite:3
        ewf? ( app-forensics/libewf )
        aff? ( app-forensics/afflib )"

DEPEND="${COMMON_DEPEND}
        java? ( virtual/jdk )"

RDEPEND="${COMMON_DEPEND}
        dev-perl/Date-Manip"

DOCS=( NEWS.txt README.txt )

PATCHES=(
        "${FILESDIR}"/${PN}-4.4.2-tools-shared-libs.patch
)

src_unpack() {
        unpack ${A}
        mv "${WORKDIR}/sleuthkit-release-4.4.2" "${S}"
}

src_prepare() {
        AUTOTOOLS_AUTORECONF=1
        AUTOTOOLS_IN_SOURCE_BUILD=1
        autotools-utils_src_prepare
}

src_configure() {
        local myeconfargs=(
                $(use_with aff afflib)
                $(use_with ewf libewf)
                $(use_enable java)
        )
        autotools-utils_src_configure
}

src_compile() {
        einfo "src_compile()"
        autotools-utils_src_compile
        
        EANT_BUILD_XML="bindings/java/build.xml"
        use java && eant -f "${EANT_BUILD_XML}" dist
}


Если пытаюсь собрать с «USE=java», то получаю следующий отлуп:
$ USE=java ebuild sleuthkit-4.4.2.ebuild compile
 * release-4.4.2.zip SHA256 SHA512 WHIRLPOOL size ;-) ...                                                                                             [ ok ]
!!! ERROR: Couldnt find a VM dep
 * Unable to determine VM for building from dependencies:
NV_DEPEND: dev-db/sqlite:3
        ewf? ( app-forensics/libewf )
        aff? ( app-forensics/afflib )
        java? ( virtual/jdk ) >=app-portage/elt-patches-20170317 java? ( >=dev-java/java-config-2.2.0-r3  ) java? (  >=dev-java/ant-core-1.8.2:0
           
           
           >=dev-java/javatoolkit-0.3.0-r2 )
 * ERROR: app-forensics/sleuthkit-4.4.2::my-overlay failed (setup phase):
 *   Failed to determine VM for building.
 * 
 * Call stack:
 *               ebuild.sh, line  115:  Called pkg_setup
 *               ebuild.sh, line  348:  Called java-pkg-opt-2_pkg_setup
 *   java-pkg-opt-2.eclass, line   37:  Called java-pkg_init
 *     java-utils-2.eclass, line 2194:  Called java-pkg_switch-vm
 *     java-utils-2.eclass, line 2656:  Called die
 * The specific snippet of code:
 *                                      die "Failed to determine VM for building."
 * 
 * If you need support, post the output of `emerge --info '=app-forensics/sleuthkit-4.4.2::my-overlay'`,
 * the complete build log and the output of `emerge -pqv '=app-forensics/sleuthkit-4.4.2::my-overlay'`.
!!! When you file a bug report, please include the following information:
GENTOO_VM=  CLASSPATH="" JAVA_HOME=""
JAVACFLAGS="" COMPILER=""
and of course, the output of emerge --info =sleuthkit-4.4.2



Т.е. на этапе pkg_setup() почему-то не может найти JVM, хотя она есть.
$ eselect java-vm show
Current system-vm
  oracle-jdk-bin-1.8
Current user-vm
  (unset)
$ javac -version
javac 1.8.0_131


У меня такое ощущение, что autotools-utils и java-pkg-opt-2 не дружат между собой. Кто-нибудь с подобным сталкивался?

UPD:
Вылечилось прописыванием зависимости '( >=virtual/jdk-1.8.0 )'
Проблема как оказалось в 'depend-java-query', а autotools-utils с java-pkg-opt-2 тут не причём.

$ depend-java-query -v 'virtual/jdk'
!!! ERROR: Couldnt find a VM dep
$ depend-java-query -v '>=virtual/jdk-1.8.0'
oracle-jdk-bin-1.8

 ,

WatchCat
()

gcc 4.8.5 на Centos 7 и Gentoo выдаёт разный результат.

Форум — Development

stdinttest.cpp

#include <stdint.h>

#include <iostream>
using namespace std;

int main( int argc, char* argv[] ){
        cout << "test stdint.h" << endl;
        #ifdef UINT16_MAX
        cout << "UINT16_MAX " << UINT16_MAX << endl;
        #else
        cout << "UINT16_MAX not defined " << endl;
        #endif
}


Centos 7
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 

проверяем
$ g++ -o test.centos stdinttest.cpp && test.centos
test stdint.h
UINT16_MAX not defined 


Gentoo
$ g++ -v
Using built-in specs.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.8.5/g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.5/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /tmp/portage/sys-devel/gcc-4.8.5/work/gcc-4.8.5/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.8.5 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.5 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.5/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.5/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.8.5/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.8.5 p1.3, pie-0.6.2' --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-altivec --disable-fixed-point --enable-targets=all --disable-libgcj --enable-libgomp --disable-libmudflap --disable-libssp --enable-lto --without-cloog --enable-libsanitizer
Thread model: posix
gcc version 4.8.5 (Gentoo 4.8.5 p1.3, pie-0.6.2) 

Проверяем
$ g++ -o test.gentoo stdinttest.cpp && test.gentoo
test stdint.h
UINT16_MAX 65535


Переносимость, my ass.
Вот кто тут чудак, а кто молодец?
И как с этим бороться?

UPD решилось тупым прописыванием #ifndef & #define костыли на костылях костылями погоняют

 , ,

WatchCat
()

Clang может слинковать с boost'ом скомпилированным gcc

Форум — Development

В системе установлен boost 1.62 собранный, как это не удивительно gcc. Так же стоит clang 3.9.1 И есть простая программка:

#include <boost/regex.hpp>

int checkStringForSystem( const char * inString ) {
        if ( inString == NULL ) {
                return 0;
        }
        if ( boost::regex_match( inString, boost::regex( "[a-zA-Z0-9,./ ]*" ) ) ) {
                return 0;
        }
        return -1;
}

int main(){
    return checkStringForSystem( "test string" );
}
И при компиляции получаю ошибку линковки:
$ clang++ -O2 -g -DNDEBUG -fPIC -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter -Wno-write-strings -std=gnu++14 -l boost_regex-mt test2.cpp 
/tmp/test2-d0f691.o: In function `boost::cpp_regex_traits<char>::transform[abi:cxx11](char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:962: undefined reference to `boost::re_detail_106200::cpp_regex_traits_implementation<char>::transform[abi:cxx11](char const*, char const*) const'
/tmp/test2-d0f691.o: In function `boost::cpp_regex_traits<char>::transform_primary[abi:cxx11](char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:966: undefined reference to `boost::re_detail_106200::cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](char const*, char const*) const'
clang-3.9: error: linker command failed with exit code 1 (use -v to see invocation)
А если я убираю -O2, то всё собирается нормально.

Да, g++ с теми же параметрами -O2 отрабатывает нормально.

Вопрос, кто-нибудь с таким сталкивался и как бы это обойти?

PS Предваряя вопрос, от шланга отказаться не могу, т.к. надо собрать одно софтень которая заточена на него и gcc не собирается.

 , ,

WatchCat
()

Gentoo и crossdev - пролбема с удалённой отладкой

Форум — Development

Пытаюсь разобраться с кросскомпиляцией и удалённой отладкой на Gentoo.

Поставил crossdev, сконфигурировал тулчейн:
crossdev --ex-gdb -t arm-unknown-linux-gnueabihf

И на тестовом примере получается какая-то хрень:

user@japet ~/Temp/2 $ cat ./test1.c 
/*
 * 
 */

#include <stdio.h>

int main( int argc, char** argv ){
        printf("Hello World!\n");
        return 0;
}
user@japet ~/Temp/2 $ arm-unknown-linux-gnueabihf-gcc -g -o ./test1 ./test1.c 
user@japet ~/Temp/2 $ ls -l ./test1
-rwxr-xr-x 1 user user 6028 апр 21 06:20 ./test1
user@japet ~/Temp/2 $ scp -P 2200 test1 pi@rpi:/home/pi/tmp
test1                                                                                                            100% 6028     1.4MB/s   5.9KB/s   00:00    
user@japet ~/Temp/2 $ arm-unknown-linux-gnueabihf-gdb ./test1             
GNU gdb (Gentoo 7.12.1 vanilla) 7.12.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-pc-linux-gnu --target=arm-unknown-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
 — — Loading Rust pretty-printers — — 
Reading symbols from ./test1...done.
(gdb) target remote rpi:2345
Remote debugging using rpi:2345
warning: Can not parse XML target description; XML support was disabled at compile time
Reading symbols from /usr/arm-unknown-linux-gnueabihf/lib/ld-linux-armhf.so.3...(no debugging symbols found)...done.
Remote 'g' packet reply is too long: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f3ffbe0000000040fdfcb610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0xb6fcfd40 in ?? () from /usr/arm-unknown-linux-gnueabihf/lib/ld-linux-armhf.so.3
(gdb) list
1       /*
2        * 
3        */
4
5       #include <stdio.h>
6
7       int main( int argc, char** argv ){
8               printf("Hello World!\n");
9               return 0;
10      }
(gdb) break main
Breakpoint 1 at 0x10414: file ./test1.c, line 8.
(gdb) cont
Continuing.

Breakpoint 1, main (
    argc=<error reading variable: Remote 'g' packet reply is too long: 0100000034f3ffbe3cf3ffbe000401000000000000000000d002010000000000000000000000000000f0ffb6dcf1ffbe0030fab6d0f1ffbe94e2e7b61404010010000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000>, argv=0xbefff334) at ./test1.c:8
8               printf("Hello World!\n");
(gdb) next
main (argc=1, argv=0xbefff334) at ./test1.c:8
8               printf("Hello World!\n");
Remote 'g' packet reply is too long: 0100000034f3ffbe3cf3ffbe000401000000000000000000d002010000000000000000000000000000f0ffb6dcf1ffbe0030fab6d0f1ffbe94e2e7b61404010010000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
(gdb) cont
Continuing.
^CQuit
(gdb) quit
A debugging session is active.

        Inferior 1 [process 7611] will be killed.

Quit anyway? (y or n) yes


Откуда вот этот «Remote 'g' packet reply is too long»?
И почему '(gdb) cont' не отрабатывает в конце, а зависает и приходиться обламывать по Ctrl+C?

На удалённой машине вообще ничего:
pi@raspberrypi:~/tmp $ ls -l
total 8
-rwxr-xr-x 1 pi pi 6028 Apr 21 06:22 test1
pi@raspberrypi:~/tmp $ gdbserver :2345 ./test1 
Process ./test1 created; pid = 7611
Listening on port 2345
Remote debugging from host 192.168.34.198
GDBserver exiting

 , ,

WatchCat
()

ЯННП или вопросы с простыми вещами в Rust.

Форум — Development

Есть вот такой код и он компилится:

#![allow(unused_imports)]
#![allow(unused_variables)]
#![allow(unused_mut)]
#![allow(dead_code)]

extern crate piston;
extern crate piston_window;
extern crate image as im;
extern crate gfx;
extern crate gfx_device_gl;
extern crate noise;
extern crate rand;

use piston_window::*;
use im::RgbaImage;
use noise::{Brownian2, perlin2};

struct Txtr {
    pos: [u32;2],
    txtr: Texture<gfx_device_gl::Resources>,
}

struct App {
	texture: Txtr,
}

const TSIZE: u32 = 64;

impl App {
	fn new( window: &mut PistonWindow ) -> Self {

		let seed = rand::random();
		let noise = Brownian2::new(perlin2, 4).wavelength(32.0);
		let img = im::RgbaImage::from_fn( 64, 64, |x, y| {
				let v = noise.apply(&seed, &[ x as f32, y as f32 ]) as f32;
				let gray = (128f32 * v + 128f32) as u8;
				im::Rgba([ gray, gray, gray, 255])
			} );

		App{
			texture: Txtr{
				pos:[0,0],
				txtr:Texture::from_image( &mut window.factory, &img, &TextureSettings::new() ).unwrap()
			},
		}
	}
}

fn main() {
	let mut window: PistonWindow = WindowSettings::new("Hello World!", (800, 600) ).build().unwrap();
	let mut app:App = App::new( &mut window );
}


Однако если мы чуть поменяем его:

struct App {
	textures: Vec<Txtr>,
}

const TSIZE: u32 = 64;

impl App {
	fn new( window: &mut PistonWindow ) -> Self {

		let mut t:Vec<Txtr> = Vec::new();

		let seed = rand::random();
		let noise = Brownian2::new(perlin2, 4).wavelength(32.0);

		for t in 0..3{

			let img = im::RgbaImage::from_fn( 64, 64, |x, y| {
					let v = noise.apply(&seed, &[ x as f32, y as f32 ]) as f32;
					let gray = (128f32 * v + 128f32) as u8;
					im::Rgba([ gray, gray, gray, 255])
				} );

			t.push( Txtr{
			 	pos:[0,0],
				txtr:Texture::from_image( &mut window.factory, &img, &TextureSettings::new() ).unwrap()
			} );
		};

		App{
			textures: t,
		}
	}
}


То получаем следующую проблему:
hello3.rs:46:6: 46:10 error: no method named `push` found for type `_` in the current scope
hello3.rs:46 			t.push( Txtr{
             			  ^~~~


ЯННП, где-то теряется тип или что?

 

WatchCat
()

Пытаюсь тут обмазаться ржавчиной.

Форум — Development

Например вот такой кусок кода на Java:

public static void collect( Map<String, Boolean> map, List<String> list){
    map.entrySet().stream().filter( Map.Entry::getValue ).map( Map.Entry::getKey ).collect( Collectors.toCollection( () -> list ) );
}


и пытаюсь такое же применить в Rust
fn test_collect<'a>( map: &'a HashMap<String,bool>, vec: &mut Vec<&'a String> ){
	let mut cc:Vec<&String> = map.iter().filter(| &(_, v) | *v ).map(| ( k, _ ) | k ).collect();
	vec.append(&mut cc);
}


Что-то не нахожу как сделать без промежуточного вектора.

cast tailgunner, DarkEld3r

 ,

WatchCat
()

tail и pipeline

Форум — General

Почему не работает следующая строка?

tail -f /pathto/some.file | grep --color=never -o '^[0-9/]*'| while read lne; do echo "${lne}"; done;

Хотя в случае cat всё работает, но это не то что надо.

 

WatchCat
()

wget и iri

Форум — General

wget сохраняет выкачиваемое в путь со странными именами:

ftp.remote.host/pub/\320%9Aавале\321%80ов\321%81кий \321%80айон/127.xml’

Куда копать не понимаю.
Локаль на машине ru_RU.UTF-8
wget последний:
# eix net-misc/wget
[I] net-misc/wget
     Available versions:  1.16 (~)1.16.1 (~)1.16.2 (~)1.16.3 {debug gnutls idn ipv6 nls ntlm pcre +ssl static test uuid zlib}
     Installed versions:  1.16.3(02:44:36 AM 07/09/2015)(idn ipv6 nls ntlm pcre ssl uuid zlib -debug -gnutls -static -test)
     Homepage:            http://www.gnu.org/software/wget/
     Description:         Network utility to retrieve files from the WWW

 ,

WatchCat
()

Вышел Synfig Studio 1.0

Новости — Мультимедиа
Группа Мультимедиа

Synfig Studio — свободная программа, предназначенная для создания двумерной векторной анимации.

Главные изменения:

  • Реализован однооконный режим.
  • Введена полноценная система «костей» для анимации движений.
  • Добавлена неразрушающая деформация изображений.
  • Добавлен инструмент «ножницы» для неразрушающего редактирования.
  • Реализован звуковой слой, обеспечивающий базовый функционал для синхронизации звука и анимации.

Подробности

 , ,

WatchCat
()

Использование portage и crossdev

Форум — Development

Вопрос возник.
А можно ли использовать гентушные portage и crossdev для кросс-сборки в других дистрибутивах, например в той же федоре?

 , ,

WatchCat
()

boost кросскомпиляция

Форум — Development

Пытаюсь собрать boost.
Но bjam почему-то не ищет user-config.jam в $BOOST_BUILD_PATH,
берёт только тот что в $HOME
Хотя в доке сказано что он будет там искать.

Я как-то неправильно причитал доку или у них где-то ошибка?

 ,

WatchCat
()

Вышла версия 2.0 игры The Dark Mod

Новости — Игры
Группа Игры

Broken Glass Studios выпустила версию 2.0 The Dark Mod

The Dark Mod - стелс-экшен от первого лица вдохновленный серией игр Thief и изначально разрабатываемый как модификация Doom 3

Главное изменение версии 2.0 - теперь The Dark Mod полностью автономен и для его работы не требуется наличие Doom 3.

Так же в новой версии были внесены следующие изменения:

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

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

Улучшение звука.
Были заменены звуки Doom 3, добавлены два голосовых набора. Были внесены значительные изменения в систему распространения звуков, теперь создатели карт могут контролировать как игроки слышат звуки. Например, зависимость громкости звука от толщины двери.

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

Обновление миссий.
В связи с переходом на автономный режим и удалением ресурсов Doom 3 те миссии которые их использовали не совместимы с версией 2.0. Поэтому многие миссии были обновлены и их необходимо загрузить заново.

Полный список изменений:
http://wiki.thedarkmod.com/index.php?title=What's_new_in_TDM_2.00

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

 

WatchCat
()

Аутентификация в PostgreSQL через PAM

Форум — Admin

Пытаюсь настроить сабж. Но никак не выходит каменный цветок.

----pg_hba.conf---
host all all 192.168.1.0/24 pam pamservice=postgresql-9.2
----pg_hba.conf---

----/etc/pam.d/postgresql-9.2----
auth include system-auth
account include system-auth
session include system-auth
----/etc/pam.d/postgresql-9.2----

----/etc/pam.d/system-auth----
auth required pam_env.so
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth required pam_deny.so
auth required pam_permit.so

account required pam_unix.so

password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password sufficient pam_unix.so nullok sha256 shadow use_authtok
password required pam_deny.so

session required pam_limits.so
session required pam_unix.so
----/etc/pam.d/system-auth----

Однако при попытке логиниться постгря выдаёт:
#psql -h 192.168.1.2 postgres
Password:
psql: FATAL: PAM authentication failed for user «testpam»

Хотя ssh и локальный логин в для пользователя работает нормально.

В логах пишеться вот это:
------------------------------
Jul 24 05:36:01 testserver unix_chkpwd[20014]: check pass; user unknown
Jul 24 05:36:01 testserver authentication: pam_unix(postgresql-9.2:auth): conversation failed
Jul 24 05:36:01 testserver authentication: pam_unix(postgresql-9.2:auth): auth could not identify password for [testpam]
Jul 24 05:36:06 testserver unix_chkpwd[20019]: check pass; user unknown
Jul 24 05:36:06 testserver unix_chkpwd[20020]: check pass; user unknown
Jul 24 05:36:06 testserver unix_chkpwd[20020]: password check failed for user (testpam)
Jul 24 05:36:06 testserver authentication: pam_unix(postgresql-9.2:auth): authentication failure; logname= uid=70 euid=70 tty= ruser= rhost= user=testpam
-------------------------------
Поможите люди добрыя, куда ещё копать не понимаю.

 , ,

WatchCat
()

C-Media 8768/VIA Tremor 79550

Форум — Linux-hardware

Помогите разобраться с настройкой.
После того как сдохла набортовая звуковуха, решил не менять материнку, а просто купить сабжевую карточку.
Вот только вышла с ней следующая закавыка.
Если верить alsa matrix, то за неё отвечает модуль snd-cmipci.
Однако lspci выдаёт что это:
«03:06.0 Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)»
И соответственно модуль snd-ice1724
Ну ладно, решил я, пусть будет так.
Собрал я этот модуль, подгружается он при загрузке:
# lsmod| grep ^snd
snd_ice1724 133863 2
snd_ak4113 7000 1 snd_ice1724
snd_pt2258 2900 1 snd_ice1724
snd_i2c 3585 2 snd_pt2258,snd_ice1724
snd_ak4114 7269 1 snd_ice1724
snd_ice17xx_ak4xxx 2244 1 snd_ice1724
snd_ak4xxx_adda 8677 2 snd_ice1724,snd_ice17xx_ak4xxx
snd_rawmidi 18274 1 snd_ice1724
snd_seq_device 4852 1 snd_rawmidi
snd_ac97_codec 110068 1 snd_ice1724
snd_pcm 72654 4 snd_ice1724,snd_ac97_codec,snd_ak4113,snd_ak4114
snd_page_alloc 6882 1 snd_pcm
snd_timer 18169 1 snd_pcm
snd 54401 15 snd_pt2258,snd_ice1724,snd_ac97_codec,snd_timer,snd_i2c,snd_pcm,snd_rawmidi,snd_ak4xxx_adda,snd_seq_device,snd_ak4113,snd_ak4114

Вот только звук есть только на правом ухе.

PS принудительная загрузка snd-cmipci ничего не даёт, lspci -v говорит, что за данное устройство не используется ни одним драйвером.

 , ,

WatchCat
()

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