LINUX.ORG.RU

Сообщения someoneelsenotme

 

Расшарить каталог по сети

В винде делаю каталог общим - он виден в ES File explorer для андроид.

Как добиться такого-же эффекта для линуксовой машины с thunar & xU14.04?

 ,

someoneelsenotme
()

Флаги telnet не соответствуют документации

                crlf          If this is TRUE, then carriage returns will be
                              sent as <CR><LF>.  If this is FALSE, then car‐
                              riage returns will be send as <CR><NUL>.  The
                              initial value for this toggle is FALSE.
alex@alex-VirtualBox:~$ telnet 192.168.1.79 5000
Trying 192.168.1.79...
Connected to 192.168.1.79.
Escape character is '^]'.
($NAM+CALL?)
^]

telnet> quit
Connection closed.
→ New connection.  There are 1 connections now
SRV <<] CLN:28 24 4E 41 4D 2B 43 41 4C 4C 3F 29 0D 0A 
← Lost connection. There are 0 connections now
alex@alex-VirtualBox:~$ uname -a
Linux alex-VirtualBox 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:27 UTC 2016 i686 i686 i686 GNU/Linux

 

someoneelsenotme
()

Как сделать равномерный матовый свет?

Надо сделать источник равномерного матового света (как монитор со снятой матрицей, только форматом побольше).

Есть идеи только о матовом пластике + шахматами светодиоды, но думаю что они все равно сделают неравномерность как бы я не матовил пластик.

Есть еще варианты? Вариант найти б/у\убитый монитор с диагональю в 15" и расковырять не подходит - облазил радиорынок и сервисные - такого у них не обитается.

Допусловия: питание хочу от кроны (одной, максимум двух) или телефонного аккумулятора, если есть какая-то возможность заряжать его штатной зарядкой без телефона. (аккум думаю брать от старых нокий, т.е. 3.7 в, 850 мА

 

someoneelsenotme
()

Убрать UB в сериализации

Если трюк через юнион - UB/ID, то какой же способ будет абсолютно переносимым если нам известен входящий порядок и исходящий?

 

someoneelsenotme
()

Раскидать элементы графа по сетке

Есть дерево (без циклов). Выглядит примерно так: https://s32.postimg.org/mb44h9anp/before.png . Мне нужно раскидать элементы по сетке (можно считать бесконечной), располагая детей под родителями (нечетное кол-во - сразу под, четное - с пропуском по середине). Т.е. хочу сделать вот так: https://s32.postimg.org/8eew8nx5x/after.png .

Подскажите, пожалуйста, алгоритм действий.

 ,

someoneelsenotme
()

Почему компилятор тупит?

#include <string.h>

int main(void)
{
    return strlen("123");
}

-O0
main:
        pushq   %rbp
        movq    %rsp, %rbp
        movl    $3, %eax
        popq    %rbp
        ret

-O3
main:
        movl    $3, %eax
        ret

https://godbolt.org/g/qFO05n

#include <string.h>

int main(void) 
{  
   char ar[] = {"123"};
  
   return strlen(ar);
}

-O0
main:
        pushq   %rbp
        movq    %rsp, %rbp
        subq    $16, %rsp
        movq    %fs:40, %rax
        movq    %rax, -8(%rbp)
        xorl    %eax, %eax
        movl    $3355185, -16(%rbp)
        leaq    -16(%rbp), %rax
        movq    %rax, %rdi
        call    strlen
        movq    -8(%rbp), %rdx
        xorq    %fs:40, %rdx
        je      .L3
        call    __stack_chk_fail
.L3:
        leave
        ret

-O3
main:
        subq    $24, %rsp
        movq    %fs:40, %rax
        movq    %rax, 8(%rsp)
        xorl    %eax, %eax
        movl    $3355185, (%rsp)
        movq    %rsp, %rsi
        movq    %rsp, %rax
.L2:
        movl    (%rax), %ecx
        addq    $4, %rax
        leal    -16843009(%rcx), %edx
        notl    %ecx
        andl    %ecx, %edx
        andl    $-2139062144, %edx
        je      .L2
        movl    %edx, %ecx
        shrl    $16, %ecx
        testl   $32896, %edx
        cmove   %ecx, %edx
        leaq    2(%rax), %rcx
        cmove   %rcx, %rax
        addb    %dl, %dl
        sbbq    $3, %rax
        subq    %rsi, %rax
        movq    8(%rsp), %rdi
        xorq    %fs:40, %rdi
        jne     .L9
        addq    $24, %rsp
        ret
.L9:
        call    __stack_chk_fail

https://godbolt.org/g/WoC3bn

Понятно что в случае 2 на -О3 он догадался заинлайнить функцию. Но почему, видя, что массив нигде не используется он не сделал movl 3 как в случае 1?

Более того, стоит поменять количество символов на 2 - код сокращается на треть.

 , ,

someoneelsenotme
()

Как запустить файл в песочнице?

Хочу поиграться с мутируемым кодом. Как безопасно запустить исполняемый файл чтобы у него не было доступно ничего кроме stdout? Очень важна скорост запуска/подготовки чтобы можно было запускать их тысячами в секунду.

 

someoneelsenotme
()

Как вы обрабатываете ошибки с требующейся очисткой в Си?

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

Как живой пример:
Было: http://pastebin.com/BuUqYSRZ
Стало: http://pastebin.com/yHzMpv6C

Может вы используете какой-то другой метод?

 ,

someoneelsenotme
()

Как компилятор определяет что можно заинлайнить?

int funca(int * a)
{
  *a += 1;
}

int main(void)
{
   int b = 5;
   funca(&b);
   funca(&b);
   return b;
}

Вот положим компилятор взял и заинлайнил funca.
А мы, положим, определим функцию в другом юните. Или даже так:

//file1.c

int funca(int * a)
{
  *a += 1;
}

int funcb(int * a)
{
  funca(a);
  funca(a);
}
Может компилятор заинлайнить funca в funcb? По идее может, потому что на явное объявление он кладет и сам расставляет inlinе так где ему удобно.

А теперь вопрос:

gcc file1.c -o file1.o
Все, на этом этапе уже он не сможет ее «разынлайнить» обратно.
А я возьму и залинкую эту штуку как библиотеку. И попытаюсь дернуть funca. А нету там больше funca!

 

someoneelsenotme
()

Подтвердите багу в QtCreator

Если затайпдефчен тип с указателем - то креатор упорно подставляет точку вместо стрелки в автозаполнении:

typedef struct _xmlNs xmlNs;
typedef xmlNs *xmlNsPtr;
struct _xmlNs {
    struct _xmlNs  *next;	/* next Ns link for this node  */
    xmlNsType      type;	/* global or local */
    const xmlChar *href;	/* URL for the namespace */
    const xmlChar *prefix;	/* prefix for the namespace */
    void           *_private;   /* application data */
    struct _xmlDoc *context;		/* normally an xmlDoc */
};

...

static CML_Error ReadNamespaces(CML_Node * root, xmlNsPtr ns, char marker)
{
    while (ns)
    {
        
        
        ns = ns.next; // <-- Здесь должна быть стрелка
    }
}

Зачем так тайпдефить вопрос к создателям libxml2. У них же и node->children->parent != node.

Версия 3.0.1, предполагаю наличие бага и в более поздних.

 

someoneelsenotme
()

Странное поведение memmove

typedef struct DNode
{
    ...

    struct DNode ** nodes;
        uint32_t    ncount;

    ...
} DNode;


void DNodeRemove(DNode * node, uint32_t index)
{
    if (index != (node->ncount - 1))
    {
        memmove(&node->nodes[index],
                &node->nodes[index + 1],
                (node->ncount - index - 1) * sizeof(DNode *));
    }

    node->ncount--;
}

Сдвигает сразу на 4 элемента Ломает память вообще непонятно по какому алгоритму:

[             8.100][ RATATOSKR + 04] >>>
{
    305 => '<status>	<id>305<>Playback Audio Buffer Level<>0<>INT<>0<<>',
    304 => '<status>	<id>304<>Playback Video Buffer Level<>72<>INT<>0<<>',
    307 => '<status>	<id>307<>Playback Load Stage<>4<>INT<>0<<>',
    306 => '<status>	<id>306<>Playback Load State<>0<>INT<>0<<>',
    309 => '<status>	<id>309<>Playback Audio Delay<>0<>INT<>0<<>',
    308 => '<status>	<id>308<>Playback Loop Mode<>false<>BOOL<>0<<>',
    310 => '<status>	<id>310<>Audio Mode<>0<>INT<>0<<>',
    313 => '<status>	<id>313<>Playback Current CPL ID<>urn:uuid:2e1c65ee-9f12-41d9-8ad7-abd67e121f30<>STRING<>0<<>',
    314 => '<status>	<id>314<>Playback Current CPL Offset<>3541<>LONG<>0<<>',
    317 => '<status>	<id>317<>Current Playback ID<>urn:uuid:7a9ab3bd-4341-6bea-b59d-a43e035a31cf<>STRING<>0<<>',
    319 => '<status>	<id>319<>3D Delay Enabled<>false<>BOOL<>0<<>',
    322 => '<status>	<id>322<>Dolby Atmos Playback Online Status<>false<>BOOL<>0<<>',
    320 => '<status>	<id>320<>3D Delay Time<>0<>INT<>0<<>',
    332 => '<status>	<id>332<>Playback Not Married<>false<>BOOL<>0<<>',
    452 => '<status>	<id>452<>Scheduler Next Start Time<><>STRING<>0<<>',
    330 => '<status>	<id>330<>Playback Buffer Underrun Error<>false<>BOOL<>0<<>',
    300 => '<status>	<id>300<>Playback State<>2<>INT<>0<<>',
    451 => '<status>	<id>451<>Scheduler Next Content ID<><>STRING<>0<<>',
    331 => '<status>	<id>331<>Playback ICP Communication Error<>false<>BOOL<>0<<>',
    301 => '<status>	<id>301<>Loaded Content<>urn:uuid:2e1c65ee-9f12-41d9-8ad7-abd67e121f30<>STRING<>0<<>',
    450 => '<status>	<id>450<>Scheduler Active<>true<>BOOL<>0<<>',
    302 => '<status>	<id>302<>Playback Timecode<>3541<>LONG<>0<<>',
    303 => '<status>	<id>303<>Loaded Content Duration<>30000<>LONG<>0<<>',
},
[             9.372][ RATATOSKR + 04] ---
{
    309 => '<status>	<id>309<>Playback Audio Delay<>0<>INT<>0<<>',
    308 => '<status>	<id>308<>Playback Loop Mode<>false<>BOOL<>0<<>',
    310 => '<status>	<id>310<>Audio Mode<>0<>INT<>0<<>',
    313 => '<status>	<id>313<>Playback Current CPL ID<>urn:uuid:2e1c65ee-9f12-41d9-8ad7-abd67e121f30<>STRING<>0<<>',
    314 => '<status>	<id>314<>Playback Current CPL Offset<>3541<>LONG<>0<<>',
    308 => '<status>	<id>308<>Playback Loop Mode<>false<>BOOL<>0<<>',
    310 => '<status>	<id>310<>Audio Mode<>0<>INT<>0<<>',
    313 => '<status>	<id>313<>Playback Current CPL ID<>urn:uuid:2e1c65ee-9f12-41d9-8ad7-abd67e121f30<>STRING<>0<<>',
    314 => '<status>	<id>314<>Playback Current CPL Offset<>3541<>LONG<>0<<>',
    317 => '<status>	<id>317<>Current Playback ID<>urn:uuid:7a9ab3bd-4341-6bea-b59d-a43e035a31cf<>STRING<>0<<>',
    319 => '<status>	<id>319<>3D Delay Enabled<>false<>BOOL<>0<<>',
    322 => '<status>	<id>322<>Dolby Atmos Playback Online Status<>false<>BOOL<>0<<>',
    320 => '<status>	<id>320<>3D Delay Time<>0<>INT<>0<<>',
    332 => '<status>	<id>332<>Playback Not Married<>false<>BOOL<>0<<>',
    452 => '<status>	<id>452<>Scheduler Next Start Time<><>STRING<>0<<>',
    330 => '<status>	<id>330<>Playback Buffer Underrun Error<>false<>BOOL<>0<<>',
    300 => '<status>	<id>300<>Playback State<>2<>INT<>0<<>',
    451 => '<status>	<id>451<>Scheduler Next Content ID<><>STRING<>0<<>',
    331 => '<status>	<id>331<>Playback ICP Communication Error<>false<>BOOL<>0<<>',
    301 => '<status>	<id>301<>Loaded Content<>urn:uuid:2e1c65ee-9f12-41d9-8ad7-abd67e121f30<>STRING<>0<<>',
    450 => '<status>	<id>450<>Scheduler Active<>true<>BOOL<>0<<>',
    302 => '<status>	<id>302<>Playback Timecode<>3541<>LONG<>0<<>',
},
[            10.164][ RATATOSKR + 04] <<<
(на моменте --- вызывается DNodeRemove с индексом 0) Где косяк?

 

someoneelsenotme
()

Рероут до внешнего IP на localhost

По сути мне нужно все запросы до 192.168.1.80 переадресовывать на 127.0.0.1.

Попробовал так:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A PREROUTING -p tcp -d 192.168.1.80 -j DNAT --to-destination 127.0.0.1

Все равно пинги до 192.168.1.80 100% потерь.

Нужно чтобы программа ломилась не на реальное устройство, а на эмулятор.

ЧЯДНТ?

 ,

someoneelsenotme
()

xml2py не создает argtypes/restype

Все доступные инструкции предлагают скармливать только -o параметр. Делаю:

alex@alex-VirtualBox:~/Проекты/test/python$ python h2xml.py /home/alex/Проекты/test/python/libratatoskr.h -o /home/alex/Проекты/test/python/libratatoskr.xml
creating xml output file ...
running: gccxml /tmp/tmpekNIpZ.cpp -fxml=/home/alex/Проекты/test/python/libratatoskr.xml
alex@alex-VirtualBox:~/Проекты/test/python$ python xml2py.py ./libratatoskr.xml -o libratatoskr.py

Типы создались, константы создались. Вместо прототипов функций строковый массив

__all__ = ['R_COMMAND_UNKNOWN_COMMAND', 'R_ERROR_TIMEOUT', 'RBool',
           'RIPAddress', 'R_ERROR_BADIMPLEMENT', 'RStorageUnion' <...>

Где argtypes/restype?

 ,

someoneelsenotme
()

Как сократить перевод из типа в массив?

Написал код перевода разных типов для проекта.

Как можно его сократить/упростить так, чтобы не было UB (типа сдвига знаковых)

http://pastebin.com/4qeYCPka

Спасибо

 

someoneelsenotme
()

Насколько это легально?


typedef struct
{
   char * name;
   int value;
} TPair;

TPair * createpair()
{
    TPair result;
    result.name = malloc(5);
    strcpy(result.name, "name");
    result.value = 0;

    return &result;
}

 

someoneelsenotme
()

Обфусцированный код

Под влиянием этого топика написал свой:

#include <stdio.h> // printf

void main(void)
{ int 
                  J  ,  E  ,  I  ,  F  ,  B  ,  D  ,  G  ,  C  ,  A      ;
            G  =  E  =  C  =  D  =  B  =  J  =  A  =  I  =  F  =  A  != A;    
                                    F |=  C  == D;
                        F <<= F  =+ F;          G +=  G  |= F;
            G <<= G  |= G;          G +=  G  =+ G;          G  |= F  << F;
                        F <<= F  << F;          F +=  F  || F;
            F +=  F  || F;          F +=  F  || F;          F <<= C  == D;
                        F |=  F  || F;          F +=  F  || F;
            C +=  B  == A;          E +=  C  << E;          E +=  E  =+ E;
                        E +=  E  =+ E;          D +=  D  =+ C;
            D +=  D  =+ D;          D <<= D  =+ D;          D |=  D  >> E;
                        D +=  D  << E;          D <<= E  |= E;
            A +=  D  += E;          B +=  A  += C;          B  += F  |= F;
                        B >>= C  |= C;          B <<= C  |= C;
            E +=  E  =+ E;          I +=  E  |= E;          I +=  I  =+ I;
                        I +=  I  || I;          I +=  I  || I;
            I +=  I  =+ I;          I +=  I  || I;          J +=  G  |= G;
                        J  -= I  |= I;          D >>= D  >> D;
            D >>= D  >> D;          D  += I  |= I;          D +=  E  |= E;
                        D -=  C  |= C;          F >>= F  >> F;
            F >>= E  || C;          F -=  D  >> C;          F +=  F  =+ F;
                        F -=  E  >> C;          F -=  E  || E;
                                    F -=  C  |= C;              char H[] =
            {     G  -  J  ,  G  -  I  ,  G  -  J  ,  G  -  I  ,  G
            -     J  ,  G  -  I  ,  G  -  J  ,  G  -  I  ,  D  ,  F     };

            printf(H, A >> E, A, B >> E, B);
}

Есть желающие поковыряться?

 

someoneelsenotme
()

Консольный vk

Есть ли в природе консольный клиент для vk? Если нет, то позволяет ли апи вк написать его на си?

 ,

someoneelsenotme
()

Как работает этот код?

Вижу, что раз этак 65 000+ вызывается сам майн. Как сам текст дешифруется?

#include <stdio.h>
 
int main(int t,int _,char*a)
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

 

someoneelsenotme
()

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