LINUX.ORG.RU

Сообщения PPP328

 

Как снять копию DVD с многократным повторением чтения блоков?

Форум — Desktop
dd if=/dev/dvd of=a.iso

Дропается на первой ошибке

dd if=/dev/dvd of=a.iso conv=noerror,sync

Будет писать в файл херню, если не прочтет блок.

Какую программу использовать, чтобы снять образ диска c минимальными потерями (по 100-200 раз перечитывая блок пока не прочитается). Диск спиртом и ваткой протирался, сделал что мог


Всё, всем спасибо!

После ребута наконец-таки нормализовался размер того, что выдавал dd и ddrescue. Оригинальный размер диска - 6.9ГБ, они оба выдавали 6.6. После ребута нормализовались к 6.9 и НЕ ВЫДАВАЛИ ОШИБОК ЧТЕНИЯ. Похоже, что резаку становится плохо, если через него подряд копировать много дисков. Кстати старая попытка через dd скопировать диск заняла 8.2 ГБ, 83% от которого - это искомые 6.9 ГБ. Так что видимо контроллер или ядро выдавали неверный размер.

 , , ,

PPP328
()

У новых мобильных Intel частота 1.8- норма?

Форум — Talks

Что-то как-то ссыкотно покупать новый ноутбук с такой частотой процессора. На моем синке трехлетней давности

model name	: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz

А на почти всех новых моделях стоят свежего поколения, но частота 1.8
https://i.postimg.cc/4dR9shcV/2020-04-27-11-54-41.png

Это норма или они медленнее старых?

 ,

PPP328
()

Linux, работающий через телетайп. А винда так может?

Форум — Talks

https://youtu.be/2XLZ4Z8LpEE

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

Что-то мне подсказывает, что винда даже не все старые мониторы может поддерживать.

 

PPP328
()

А вы будете работать на «нерабочей» неделе?

Голосования — Голосования

С учетом многочисленных сообщений о том, что кто-то будет работать несмотря на «пожелания» ВВП хотелось бы узнать, как много таких.

  1. Да, я работаю в IT 777 (61%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Я не работаю. Вообще. 156 (12%)

    ****************************************************************

  3. Да, я работаю в чем-то другом 153 (12%)

    ***************************************************************

  4. Нет, я работаю в чем-то другом 69 (5%)

    ****************************

  5. Нет, я работаю в IT 61 (5%)

    *************************

  6. Да, я работаю в чем-то необходимом (аптеки, и пр.) 58 (5%)

    ***********************

  7. Нет, я работаю в чем-то необходимом (аптеки, и пр.) 4 (0%)

    *

Всего голосов: 1278

 

PPP328
()

Помогите вспомнить игру

Форум — Games

То ли под онтопик, то ли под оффтопик, вспомнить уже не могу.

Вышла достаточно давно (до 2015 точно, возможно до 2010), графика на уровне Vice City. 3D, от третьего лица. Основной сюжет вертится вокруг девушки, живущей в будущем, вечно что-то болтает про то, что государство контролирует нас через воду в кулерах. Что-то случается (типа как анимус в AC) и она попадает в средневековье, где нужно что-то сделать, ибо зло грядет.

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

Называлась как-то в духе «neverending story» (но, разумеется не она).

Может кто напомнит мне как это называлось?

 ,

PPP328
()

Подобрать криптоалгоритм

Форум — Development

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

Входные данные:
Есть Боб, и Алиса.
Алиса транслирует в космос свой публичный ключ.
Нужно подобрать криптоалгоритм, благодаря которому Алиса сможет подтвердить, что сообщение именно от Боба.

Условия можно дополнять.
Единственное «но» - у Алисы нет интернета.
Что можно по этому поводу попробовать?

 

PPP328
()

Бесшовное переключение от сети к батарее и обратно

Форум — Science & Engineering

Есть STM-ина, которая ест +5v, питается от USB-компа\зарядника. Задача в том, чтобы при пропадании питания продолжать работу какое-то значительное (>нескольких секунд) время.

Как понял из гуглежа задача не совсем тривиальная по разным причинам.

Рассматривал разные варианты, просто подключенную параллельно батарею с диодом сторону выхода вычеркнул из вариантов, потому что падение на диоде около 1в и при батарее в 4.2-4.7в оно упадет ниже лимита включения STM (вариант 1).

Вторым вариантом мне предложили поставить контроллер заряда TP4056 и брать питание с выходов батареи (схема: вот ) Но у меня к этому есть вопросы - разве не будет при такой схеме постоянно напрягаться батарея от того, что с нее забирается заряд а контроллер постоянно подливает на нее? Ей не поплохеет?

Третим вариантом рассматривал релейное переключение а для компенсации времени срабатывания реле поставить ионистор для поддержания питания около секунды.

Еще был вариант взять вариант 1, но дополнительно поставить DC-DC с 3..5в -> 5в. Звучит здраво, но меня все еще напрягает, что диод жрет и греется. Или плевать?

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

Одно из условий - бесшовное переключение - STM’ина не должна ребутнуться, потому что одна из закоженных функций - отсчет времени.

Заранее спасибо.

 ,

PPP328
()

Ростов-на-Дону, Программист С

Форум — Job

Требуемый опыт работы: 1-3 года Полная занятость, полный день

Кто мы:

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

Кто нам нужен:

Компания стремительно растет, поэтому нам нужны люди, которые смогут быстро войти в курс дела, влиться в рабочий процесс и постоянно расти в профессии.

От тебя потребуется:

  • Опыт разработки на С или С++ на Linux от года (C в приоритете);
  • Опыт разработки сетевых приложений, знание сетевого стека;
  • Базовые знания устройтва *nix систем;
  • Умение работать со скриптовыми языками;
  • Знание системы контроля версий.

Плюсом будет:

  • Опыт работы с удаленными устройствами через TCP+binary/HTTP/SOAP/MODBUS;
  • Опыт работы с Perl;
  • Умение соответствовать стандартам безопасности MISRA C/NASA JPL;
  • Умение работать с системами отладки и анализа (GDB, Callgrind, Memcheck, Valgrind, CPPcheck, scan-build);
  • Умение работать с SQL базами;
  • Опыт разработки Windows приложений.
  • Опыт работы или базовые знания assembler

Гарантируем

  • Интересные задачи, простую и прозрачную систему организации работы;
  • Оплачиваемое обучение, участие в профильных конференциях;
  • Стабильно высокую заработную плату, постоянные индексации;
  • Годовую премию, ДМС;
  • Дружный коллектив единомышленников;
  • Перспективы профессионального и карьерного роста;
  • Оформление по ТК РФ;
  • Своя кухня, чай/кофе, печеньки, мюсли для приятного и уютного перерыва;
  • Корпоративные праздники и спортивные тренировки;
  • Современный офис в самом центре с панорамным видом на город;
  • Рабочее место, оборудованное всем необходимым для продуктивной работы.

Заработная плата

По результатам собеседования, мин. 70 000р.

Связь


Дополнительные вопросы по вакансии можно спросить здесь или по указанным средствам связи.

 , , ,

PPP328
()

Импорт в FireBird, файл без сперазделителя

Форум — Development

Есть файл схемы\пл-функций\всякой подобной бурды на 18к строк.

Пытаюсь заимпортить его через ISQL - говорит «не, бать, надо каждую функцию отделять спецразделителем, а то я не понимать, когда у тебя кончается строка в функции, а когда функция». Типа:

SET TERM ^;
CREATE PROCEDURE "TEST" ("A" INTEGER)
AS
BEGIN
   EXIT;
END ^
SET TERM ;^

У меня же все функции имеют в окончании END*;*, я так понял что так работает утилита экспорта.

Как мне импортировать это легаси-говно, которое даже распарсить собственный синтаксис не может чтобы не править руками 18к строк?

 

PPP328
()

Куда жаловаться по 404 на сайте убунты?

Форум — General

http://cdimage.ubuntu.com/netboot/19.10/

i386 - For 32-bit Intel/AMD (x86) - 404

Куда писать?

 

PPP328
()

Какая-то странная реализация memcpy в glibc

Форум — Development

Взял мастер, т.е. всё более-менее свежее.

Имеем:

void *
MEMCPY (void *dstpp, const void *srcpp, size_t len)
{
  unsigned long int dstp = (long int) dstpp;
  unsigned long int srcp = (long int) srcpp;

  /* Copy from the beginning to the end.  */

  /* If there not too few bytes to copy, use word copy.  */
  if (len >= OP_T_THRES)
    {
      /* Copy just a few bytes to make DSTP aligned.  */
      len -= (-dstp) % OPSIZ;
      BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);

      /* Copy whole pages from SRCP to DSTP by virtual address manipulation,
	 as much as possible.  */

      PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);

      /* Copy from SRCP to DSTP taking advantage of the known alignment of
	 DSTP.  Number of bytes remaining is put in the third argument,
	 i.e. in LEN.  This number may vary from machine to machine.  */

      WORD_COPY_FWD (dstp, srcp, len, len);

      /* Fall out and copy the tail.  */
    }

  /* There are just a few bytes to copy.  Use byte memory operations.  */
  BYTE_COPY_FWD (dstp, srcp, len);

  return dstpp;
}

Вроде всё self-documented, но поясню: Смотрим, достаточно ли байтов, чтобы копировать пачкой или не стоит мараться. Если достаточно, копируем следующим образом:

  1. Сначала копируем байтами, чтобы выровнять адресацию до 8, чтобы можно было копировать по выровненному адресу сразу по страницам. (BYTE_COPY_FWD)
  2. Копируем по 8 байт чтобы добить до размера страницы (внутри PAGE_COPY_FWD_MAYBE)
  3. Копируем по страницам сколько можем (внутри PAGE_COPY_FWD_MAYBE)
  4. Копируем по 8 байт сколько можем (WORD_COPY_FWD)
  5. Копируем байтами остатки. (BYTE_COPY_FWD)

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

(Для простоты опустим копирование страницами, для общего понимания проблемы оно сейчас не важно, тем более что в текущей реализации glibc для i386 оно ВНЕЗАПНО не реализовано) Положим на вход идут адреса 0x7f и 0x17f и нужно скопировать 20 байт.

  1. Чтобы добить до границы выравнивания по 8 копируем один байт из 0x17f в 0x7f (L теперь 19)
  2. Теперь копируем по 8 while (L>8).
  3. Добиваем остаток байтами.

Ура, мы скопировали. Никакого misalign access и все асаны-сасаны молчат.

А теперь берем адреса 0xf7 и 0x181

  1. Добиваем до границы 8 байт - копируем 1 байт. Теперь адреса 0x80 и 0x182
  2. Ииии… Всё, дальше копировать блоками нельзя - мы либо будем читать по невыравненному адресу либо писать, если попытаемся выровняться по источнику. ASAN и в том и другом случае мне жужжит, что если я хочу быть пай-мальчиком, то так нельзя.

Вопросы:

  • Почему у glibc это канает? Я прожамкал их сорцы, там нет решения этой проблемы.

Чтобы качнуть сорцы: git clone git://sourceware.org/git/glibc.git

P.S. Если знаете кого-то, кто на форуме может теоретически ответить - кастаните в тред, плиз. P.P.S. Это, конечно, забавно, что gcc на -O0/1/2 игнорит оптимизацию алгоритма и разворачивает его только на -О3 (xmm во все поля): https://gcc.godbolt.org/z/LpJg6s , но странно, что такой же реализации нет в glibc - одна из них все равно медленнее, почему не заменить более медленную реализацию более быстрой в одном из источников?

 , ,

PPP328
()

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

Форум — Development

Написал свой первый hello world на nasm'е. Покритикуйте, пожалуйста.

Изначально писалось чтобы быть зашифрованным выхлопом для IOCCC, но по размеру в декодер не влезло, поэтому открываю сорс и ищу критику.

https://github.com/codemeow/freelancer/blob/master/freelancer.asm

 ,

PPP328
()

Чтение выхлопа процесса без ожидания его завершения

Форум — Development

Запускаю процесс через fork+execl. Хочу по мере его вывода читать его stdout.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>

int main() {
  int filedes[2];
  if (pipe(filedes) == -1) {
    perror("pipe");
    exit(1);
  }

  pid_t pid = fork();
  if (pid == -1) {
    perror("fork");
    exit(1);
  } else if (pid == 0) {
    while ((dup2(filedes[1], STDOUT_FILENO) == -1) && (errno == EINTR)) {}
    close(filedes[1]);
    close(filedes[0]);
    execl("/tmp/sub.exe", "/tmp/sub.exe", (char * ) 0);
    perror("execl");
    _exit(1);
  }
  close(filedes[1]);

  int flags;
  flags = fcntl(filedes[0], F_GETFL, 0);
  flags |= O_NONBLOCK;
  fcntl(filedes[0], F_SETFL, flags);

  flags = fcntl(filedes[1], F_GETFL, 0);
  flags |= O_NONBLOCK;
  fcntl(filedes[1], F_SETFL, flags);

  printf("ready\n");

  char buffer[4096];
  while (1) {
    ssize_t count = read(filedes[0], buffer, sizeof(buffer));
    if (count == -1) {
      if (errno == EINTR || errno == EWOULDBLOCK) {
        continue;
      } else {
        perror("read");
        exit(1);
      }
    } else if (count == 0) {
      break;
    } else {
      printf("%u: %d/%s\n", time(NULL), (int) count, buffer);
    }
  }
  close(filedes[0]);
  wait(0);
}

Sub:

#include <stdio.h>
#include <unistd.h>
# include <stdio.h>  
# include <string.h>  
# include <errno.h>  
#include <unistd.h>
#include <fcntl.h>

main() {
    printf("1111111111\n\n\n");
    sleep(1);
    printf("1111111111\n\n\n");
    sleep(1);
    printf("1111111111\n\n\n");
    sleep(1);
    printf("1111111111\n\n\n");
    sleep(1);
    printf("1111111111\n\n\n");
    sleep(1);
    printf("1111111111\n\n\n");
    sleep(1);
    printf("1111111111\n\n\n");
}

Не выходит каменный цветок. Ждет, зараза, пока sub не завершится, а потом выводит весь его выхлоп разом. Почему и как бороться?

 

PPP328
()

В Казахстане обязали устанавливать государственный сертификат для MITM

Новости — Безопасность
В Казахстане обязали устанавливать государственный сертификат для MITM
Группа Безопасность

В Казахстане операторы связи разослали пользователям сообщения о необходимости установки выпущенного государственными органами сертификатом безопасности.

Без установки интернет работать не будет.

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

В Mozilla уже завели баг, в котором обсуждают необходимость заблокировать этот сертификат, чтобы не создавать прецедентов и не разрушать столь долго производимый тотальный перевод на HTTPS.

Всё это подается под соусом защиты пользователей от хакерских атак.

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

UPD: «Сертификат безопасности» в Казахстане отменяется

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

 , ,

PPP328
()

sscanf и скобки. ЧЯДНТ?

Форум — Development
        char test[] = "56(84)";
        scan = sscanf(test, "%u(%u)", &ping_packet, &ping_full);
        printf("%s -> %u\n", test, scan);
56(84) -> 2
        char test[] = "PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.";
        scan = sscanf(test, "PING %*s (%*s) %u(%u) bytes of data.", &ping_packet, &ping_full);
        printf("%s -> %u\n", test, scan);
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. -> 0

Что я делаю не так? При этом если сканить %s вместо %*s то они даже парсятся - 127.0.0.1 и 127.0.0.1

 

PPP328
()

Голосовой ассистент. Что доступно?

Форум — General

Не всегда есть возможность трогать клавиатуру и мышь (руки в масле\пыли\стружке). Нужен голосовой ассистент, который:

* Может быть активен в фоне, слушая команды и активируясь по заданному слову\фразе
* Иметь возможность выполнить кастомно заданную команду (типа «активируй узел 1443», где «активируй узел» выполнит скрипт node.sh, а 1443 пойдет в параметр.
* Работать автономно от сети. Хранилище для настроенного локального анализатора можно выделить до 100 ГБ.
* Давать аудиоподтверждение принятой команды (не всегда есть возможность посмотреть на экран).

Если надо будет долго обучать под распознавание своего голоса - норм.

Что есть из доступного? Если опенсорс - еще лучше.

В теги добавляю пистон, обычно по этим вопросам его долбят.

 ,

PPP328
()

STM32 «Blue pill» и точка входа.

Форум — Development

Пилю проект под blue pill (STM32F103C8) без всяких сред, по хардкору - mousepad + gcc. Без сред чтобы научиться и понять где что куда.

Возникает вопрос:

Если я пишу main.c с int main, линуюсь с stm32f103c8tx.ld, в которой указаны параметры чипа и точка входа

/* Entry Point */
ENTRY(main)
то программа не запускается.
Если я пишу main.c с int main, линкуюсь с stm32f103c8tx.ld, в которой указаны параметры чипа, а в дополнение линкуюсь с flash.s:
.arch armv7-m
.cpu cortex-m3
.thumb

.thumb_func
.global _start
_start:
stacktop: .word 0x20005000
.word reset
.word hang

.thumb_func
reset:
    bl main
    b hang

.thumb_func
hang:   
    b .

.align 4

.end
то точка входа срабатывает и программа запускается как надо.

Почему линковка с ENTRY(main) не работает?

 

PPP328
()

Запуск программы и ожидание завершения дочерних процессов

Форум — Development

Привет!

Есть задача запустить программу и дождаться ее выполнения. С первого взгляда это просто:

system("./p1.elf");

Вот только программа p1 (к исходникам которой нет доступа) вызывает другой процесс, уводя его, судя по всему в фон (&).

Описать программами можно примерно так: Мой программа:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) {
    system("./p1.elf");
    printf("p1 exited\n");
    sleep(5);
    return 0;
}
Эмуляция кода программы p1:
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    system("./p2.elf &");
    return 0;
}
Эмуляция кода программы p2:
#include <stdio.h>
#include <unistd.h>

int main(void) {
    sleep(3);
    printf("report created\n");
    return 0;
}

При запуске, соответственно, будет следующий геморрой:

$ gcc main.c -o main.elf && gcc p1.c -o p1.elf && gcc p2.c -o p2.elf
$ ./main.elf 
p1 exited
report created

Зачем мне это нужно - p2 формирует отчет, который мне нужно прочитать. Я жду завершения работы, чтобы взять отчет из файла. Сейчас стоит костыль - я жду обновления файла после выхода p1. Но файл может не обновиться или я буду ждать слишком долго в случае если p1 завершилась без отчета.

Как мне в main.c дождаться выполнения всех дочерних процессов?

 

PPP328
()

Как установить новый QtCreator параллельно со старым?

Форум — Desktop

Есть Ubuntu 16.04. Установлен QtCreator 3.5.1. Хочу поставить свежий с сайта параллельно, чтобы был и старый и новый.

Как это сделать? Я так понимаю они не поставляют снапы или что там сейчас модно.

Зачем - в новом есть анализ кода на лету, но работает иногда криво, поэтому запустить посмотреть годится, а все время там работать - нет (ругается на половину идентификаторов не умеет раскрутить вложенность макросов например).

 

PPP328
()

Segfault при установке иконки окна

Форум — Development

На помощь призывается Zubok

Уже совсем отчаялся и делаю так:

void sml_window_icon(sml_window * win, sml_raster * icon) {
    unsigned long * data = NULL;
    u32   count = 0;
    u32   x;
    u32   y;

    if (!win) {
        sml_setxerrno(BadWindow);
        return;
    }

    if (!icon){
        sml_setxerrno(BadWindow);
        return;
    }

    if (icon->size.x != icon->size.y) {
        sml_setxerrno(BadPixmap);
        return;
    }

    data = bxi_malloc((16 * 16 + 2 + 32 * 32 + 2) * sizeof(unsigned long));
    data[count++] = 16;
    data[count++] = 16;
    for (y = 0; y < 16; y++)
    for (x = 0; x < 16; x++)
        data[count++] = 0xffffffffu;
    data[count++] = 32;
    data[count++] = 32;
    for (y = 0; y < 32; y++)
    for (x = 0; x < 32; x++)
        data[count++] = 0xffffffffu;

    sml_x(XChangeProperty(sml_xdisplay(), win->widget->xwindow,
                          sml_atom_wmicon, sml_atom_cardinal,
                          32, PropModeReplace,
                          (const u8 *)&data, count));
}
Сегфолтится в XChangeProperty. Изначально пытался послать реальный размер и реальную картинку 128х128. Падало. От картинки 16х16 НЕ падает и valgrind говорит что все хорошо. 32х32 - падает и valgrind говорит что invalid read 8 в функции _XData32.

Обкурился манами, везде у всех в 2004м так же падало, но у них было uint32 вместо unsigned long, под х64 он 8 байт. https://github.com/SFML/SFML/pull/1171/commits/7fe96d1ba385269c5d7de8de624b12...

На 32х битной системе все работало (непереносимо на х64) вот так:

    uint32_t * data = malloc(memsize * sizeof(uint32_t));

    if (!(data))
        return SML_ERR_BADALLOC;

    int32_t count = 0;

    {
        data[count++] = 16;
        data[count++] = 16;
        memcpy(data + count, warehouse.elem[image16].data.img.image->data, 16 * 16 * 4);
        count += 16 * 16;
    }

    {
        data[count++] = 32;
        data[count++] = 32;
        memcpy(data + count, warehouse.elem[image32].data.img.image->data, 32 * 32 * 4);
        count += 32 * 32;
    }

    SML_CHECKXFNC(XChangeProperty(warehouse.screen.display,
                                  warehouse.elem[index].data.win.window,
                                  warehouse.atoms.wmicon,
                                  warehouse.atoms.cardinal,
                                  32,  PropModeReplace,
                                  (const unsigned char *) data, count));

 ,

PPP328
()

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