• Как быстро округлить timestamp до секунд, минут, часов, дней и т.д.?

    @svistkovr
    для дат timestamp>0 довольно простая математика.
    #include <stdio.h>
    #include <time.h>
    int main(){
    
        time_t all_seconds = time(NULL);
        printf("временная метка - количество секунд с 1970-01-01 00:00:00 +0000 в четверг : %lu\n",all_seconds);
    
        double all_minutes = all_seconds/60.0;
        double all_hours = all_minutes/60.0;
        double all_days = all_hours/24.0;
        double all_years = all_days/(365.0+0.2425); //с учётом високосного
        //timestamp  начинается с 1970-01-01 00:00:00 +0000 в четверг
        long years_l = (int)all_years;
        long year = years_l + 1970;
        printf("год : %ld ",year);
        bool is_leap_year = !((year % 4 != 0) || ((year % 100 == 0) && (year % 400 != 0)));//високосный каждый 4 но не кратен 100
    
        if(is_leap_year){
            printf("високосный\n");
        }else{
            printf("не високосный\n");
        }
    
        double days_from_year_start = all_years - years_l;
        int day_in_month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
        int month=0;
        double day_d=days_from_year_start*(365.0+(is_leap_year?1:0));
        int day=(int)day_d;
        int day_in_month_t;
        do{
            day_in_month_t=day_in_month[month];
            day-=day_in_month_t;
            if(is_leap_year){
                if(month==1){
                    day--;
                }
            }
            month++;
    
        }
        while((month<12) && (day>day_in_month_t));
        const char* month_name[12]={"январь","февраль","март","апрель","май","июль","июнь","август","сентябрь","октябрь","ноябрь","декабрь"};
        printf("месяц : %s\n",month_name[month]);
        day++;// сдвиг нулевого дня 0 -> 1
        printf("день : %d \n",day);
    
        int day_of_week = ((((int)all_days)%7)+3)%7;//сдвиг для 0 дня. 1 день 1970 был в чеверг
        const char* week[7]={"пн","вт","ср","чт","пт","сб","вс"};
        printf("день недели : %s \n",week[day_of_week]);
    
        int hour = ((int)all_hours)%24;
        printf("час для GMT+0 : %d \n",hour);
    
        int minutes = ((int)all_minutes)%60;
        printf("минуты : %d \n",minutes);
    
        int seconds = ((int)all_seconds)%60;
        printf("секунды : %d \n",seconds);
    return 0;
    }

    для остальных дат надо делать пересчёт с учётом более длинных циклов и нулевого года.
    Ответ написан
    Комментировать
  • Загрузочная флешка загружает системный GRUB2?

    @svistkovr
    наверно стоит разобраться как работает установочный диск.

    Первый вариант вручную доделать :
    этой командой образ был залит на флешку
    2. Перевел iso с помощью dd if=./path/distr.iso of=/dev/sdb1 bs=4m;sync

    надо зайти через какую-нибудь утилиту(например cfdisk,fdisk) и установить флаг загрузки для диска /dev/sdb1

    Второй вариант:
    использовать утилиту unetbootin, утилита сама все сделает и образ зальет и загрузчик правильно настроит.
    Ответ написан
  • Как сделать размер UILabel динамическим?

    @svistkovr
    копайте в сторону sizeWithFont или boundingRectWithSize
    эти методы возвращают размер контейнера необходимого для заполнения данной строкой с параметрами шрифта, параграфа и т.д.

    UILabel за вас не будет менять размеры динамически
    Ответ написан
    Комментировать
  • Не могли бы подсказать сборщик для IOS8-SWIFT проекта?

    @svistkovr
    Прошу прощения, но вы точно пишет код на Xcode?
    Там все зависимости и бибилиотеки подтягиваются.
    Фреймворки и библиотеки (не системные) надо таскать с собой в исходниках ибо они часть кода.

    Cocoapods и Carthage это что-то типа пакетного менеджера всех открытых фреймворков.
    Ответ написан