• Где и как грамотно хранить пароли и токены в приложении?

    @Nickellick Автор вопроса
    Я понимаю, но имеется в виду следующий кейс
    Пользователь вводит пароль, я его сохраняю, а потом использую его для работы с внешним сервисом/сайтом
    Этот сервис/сайт понимает только пароль и потом (вероятнее всего) сам сервис считает хэш и сравнивает и т.д.

    Т.е. я вынужден хранить пароль, чтобы предоставить его сервису. Вопрос - как и в каком месте надёжнее всего?
    Написано
  • Есть ли возможность достать SPI пины с обычной материнки или пины для ногодрыга?

    @Nickellick
    Kalombyr, Устройством прям сверхточно нужно управлять? Потому что если нужно просто поддерживать протокол, чтобы все сообщения корректно приходили и уходили - то такая схема сработает, потому что Raspberry сам с этим разберётся, сделает всё в реальном времени, пихнёт в буфер, и вы уже прочитаете и запишете тогда, когда нужно. Если же у вас прям задача, скажем, "Посылать данные в устройство каждые 0,1 сек", то тут нужно помнить, что ПК - не устройство реального времени, для этого надо либо микроконтроллер либо хотя бы тот же Raspberry
    Написано
  • Метод list() в Python возвращает непустой список. Почему так?

    @Nickellick Автор вопроса
    Алан Гибизов, А если в elements будет список, то получится, что в self.elements лежит список, внутри которого нужный список получается?
    Написано
  • Метод list() в Python возвращает непустой список. Почему так?

    @Nickellick Автор вопроса
    Т.е. он вызвался только когда я создал класс, я верно понял?
    Написано
  • Как синхронизировать базу данных между сервером (PostgreSQL) и клиентом (SQLite)?

    @Nickellick Автор вопроса
    Получается такой кейс
    1. Есть БД postgresql. Её в любом случае нужно конвертировать в SQLite (хотя бы раз) и отправить клиенту
    2. Происходят какие-либо изменения на сервере. Эти изменения нужно как-то отправить клиенту. Для этого, получается, нужна репликация. Тогда вопрос - как произвести репликацию PostgreSQL и SQLite (как раз синхронизировать их)?
    Написано
  • Как синхронизировать базу данных между сервером (PostgreSQL) и клиентом (SQLite)?

    @Nickellick Автор вопроса
    Но получается даже на сервере мне придётся большую БД перегонять в sqlite каждый раз как я хочу синхронизировать её с клиентами, и потом уже настраивать репликацию, так?
    Написано
  • Как установить порядок компиляции файлов в Atmel Studio?

    @Nickellick Автор вопроса
    res2001, Понял, спасибо
    Просто теперь любопытно почему такой метод срабатывает если я буду работать с delay.h из стандартной библиотеки, при абсолютно таком же коде
  • Как установить порядок компиляции файлов в Atmel Studio?

    @Nickellick Автор вопроса
    res2001
    Да, думаю сразу стоит прояснить - компилировал я сразу весь проект (решение), я как я глянул в его Makefile, что он мне сгенерировал - он компилирует и main.c и led_display.c

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

    Вывод компилятора:
    spoiler

    Building file: ../src/led_display.c
    Invoking: AVR/GNU C Compiler : 5.4.0
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -Wextra -mmcu=atmega32a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega32a" -c -std=gnu99 -MD -MP -MF "src/led_display.d" -MT"src/led_display.d" -MT"src/led_display.o" -o "src/led_display.o" "../src/led_display.c"
    In file included from ../src/led_display.c:8:0:
    ../src/include/led_display.h:18:3: warning: #warning "SSEG_DIG_PORT is not defined! Using PORTA instead" [-Wcpp]
    #warning "SSEG_DIG_PORT is not defined! Using PORTA instead"
    ^
    ../src/include/led_display.h:23:3: warning: #warning "SSEG_DDR is not defined! Using DDRA instead" [-Wcpp]
    #warning "SSEG_DDR is not defined! Using DDRA instead"
    ^
    ../src/include/led_display.h:28:2: warning: #warning "SSEG_POV_PORT is not defined! Using PORTC instead" [-Wcpp]
    #warning "SSEG_POV_PORT is not defined! Using PORTC instead"
    ^
    ../src/include/led_display.h:33:2: warning: #warning "SSEG_POV_DDR is not defined! Using DDRC instead" [-Wcpp]
    #warning "SSEG_POV_DDR is not defined! Using DDRC instead"
    ^
    Finished building: ../src/led_display.c
    Building file: ../src/main.c
    Invoking: AVR/GNU C Compiler : 5.4.0
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -Wextra -mmcu=atmega32a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega32a" -c -std=gnu99 -MD -MP -MF "src/main.d" -MT"src/main.d" -MT"src/main.o" -o "src/main.o" "../src/main.c"
    Finished building: ../src/main.c
    Building target: FreqCounter.elf
    Invoking: AVR/GNU Linker : 5.4.0
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -o FreqCounter.elf src/led_display.o src/main.o -Wl,-Map="FreqCounter.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega32a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.20
    9\gcc\dev\atmega32a"
    Finished building target: FreqCounter.elf
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "FreqCounter.elf" "FreqCounter.hex"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "FreqCounter.elf" "FreqCounter.eep" || exit 0
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "FreqCounter.elf" > "FreqCounter.lss"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "FreqCounter.elf" "FreqCounter.srec"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "FreqCounter.elf"
    text data bss dec hex filename
    536 10 4 550 226 FreqCounter.elf


    Прошу прощения, подправил форматирование как смог, но мог что-то не углядеть и что-нибудь могло перенестись на следующую строку. Спасибо!
  • Как установить порядок компиляции файлов в Atmel Studio?

    @Nickellick Автор вопроса
    Я не знаю насколько легально показывать код из стандартной библиотеки avr, но по своей сути в заголовке delay.h также написано приблизительно такой же код, только про другой макрос, который нужно определить заранее

    #ifndef SSEG_DIG_PORT
      #define SSEG_DIG_PORT PORTA
      #warning "SSEG_DIG_PORT is not defined! Using PORTA instead"
    #endif /* SSEG_DIG_PORT */


    Т.е. поведение компилятора для моего led_display.h и заголовочного файла из библиотеки при одинаковом коде разное
  • Как установить порядок компиляции файлов в Atmel Studio?

    @Nickellick Автор вопроса
    res2001,
    Исходя из вышеописанного если вы объявите макрос до включения заголовка, то этот макрос может быть использован в заголовке при включении.


    Но ведь в коде всё именно так и описано, т.е. в main.c сперва я объявляю макрос, а потом уже добавляю заголовочный файл
    #define SSEG_DIG_PORT PORTB
    #include "include/led_display.h"


    И всё равно получаю warning, который описал в led_display.h
  • Как установить порядок компиляции файлов в Atmel Studio?

    @Nickellick Автор вопроса
    Любопытно, спасибо! Тогда почему тоже самое не справедливо для delay.h (это из стандартной библиотеки AVR, может поэтому?), которому тоже по-хорошему нужно определить F_CPU? Т.е. на этапе компиляции он умеет "подхватывать" это значение из main.c
  • Как сравнивать числа четвёртой точности в C11?

    @Nickellick Автор вопроса
    Действительно, спасибо!
    Была догадка, что __complex означает комплексные числа, но __float128 нигде не встретился в библиотеке
    IDE тоже ничего не подсказала про __float128, думал что у меня всё иначе
    Ещё раз спасибо!