ARMka: Инфраструктура проекта для ChibiOS/RT

Вступление


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

Так повелось, что самой идеальной платформой для контроля версий исходного кода я считаю git и сопутствующий ему сервис GitHub, поэтому данный топик будет касаться именно этой связки.

Структура каталогов проекта


Самое главное в любом проекте — это его структура. Она должна быть одновременно простая и решать поставленную задачу.

Поэтому я выбрал следующую структуру каталогов:

/armka
    /ChibiOS
    /apps
        /blinker
            /board
        /ir-tester
            /board
        /wifi-sniffer
            /board
        /pocsag-decoder
            /board
    README


С помощью следующих команд создаём в текущем каталоге эту структуру:

mkdir -p ./armka/apps/{blinker,ir-tester,wifi-sniffer,pocsag-decoder}/board


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

echo "Мудрые изречения о проекте" > ./armka/README


Теперь пришло время создать репозиторий для проекта.

cd ./armka
git init
git add README
git commit -m "Первый коммит"


Исходный код ChibiOS/RT имеет приличный объём и таскать его в репозиториям своих проектов нерационально. Поэтому я предлагаю воспользоваться магией Git и подключить код ChibiOS как внешний модуль:

git submodule add -b stable_2.4.x git://github.com/mabl/ChibiOS.git
git commit -m "Подключен ChibiOS."


Теперь можно приступать к наполнению проекта.

Описание платы


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

cd ./apps/blinker/board


Создаём заголовочный файл board.h со следующим содержимым:

#ifndef _BOARD_H_
#define _BOARD_H_

/* Идентификатор платы */
#define BOARD_ARMKA_IR_TESTER
#define BOARD_NAME              "ARMka IR Tester"

/* Частоты кварцев на плате */
#define STM32_LSECLK            32768
#define STM32_HSECLK            8000000

/* Тип микроконтроллера, см в ChibiOS/os/hal/platforms/hal_lld.h */
#define STM32F10X_MD_VL

/* Идентификаторы используемых портов ввода/вывода */
#define GPIOB_ARMKA_LED         0

/*
 * Настройка портов ввода вывода, указанная здесь конфигурация
 * автоматически настраивается после инициализации кода.
 *
 * Расшифровка:
 *   0 - Аналоговый ввод.
 *   1 - Вывод Push Pull на 10 МГц.
 *   2 - Вывод Push Pull на 2 МГц.
 *   3 - Вывод Push Pull на 50 МГц.
 *   4 - Цифровой вход.
 *   5 - Вывод Open Drain на 10 МГц.
 *   6 - Вывод Open Drain на 2 МГц.
 *   7 - Вывод Open Drain на 50 МГц.
 *   8 - Цифровой вход с подтяжкой в зависимости от значения в ODR.
 *   9 - Вывод Push Pull на 10 МГц от периферии.
 *   A - Вывод Push Pull на 2 МГц от периферии.
 *   B - Вывод Push Pull на 50 МГц от периферии.
 *   C - Зарезервировано.
 *   D - Вывод Open Drain на 10 МГц от периферии.
 *   E - Вывод Open Drain на 2 МГц от периферии.
 *   F - Вывод Open Drain на 50 МГц от периферии.
 * В референсной доке по STM32 расписаны подробности.
 */

/*
 * Настройка порта A.
 * Все порты настроены на вход с подтяжкой.
 */
#define VAL_GPIOACRL            0x88888888      /*  PA7...PA0 */
#define VAL_GPIOACRH            0x88888888      /* PA15...PA8 */
#define VAL_GPIOAODR            0xFFFFFFFF      /* см. RM0008:9.2.4 */

/*
 * Настройка порта B.
 * Все порты настроены на вход с подтяжкой, кроме:
 * PB0  - Вывод Push Pull на 2 МГц. - GPIOB_ARMKA_LED
 */
#define VAL_GPIOBCRL            0x88888882      /*  PB7...PB0 */
#define VAL_GPIOBCRH            0x88888888      /* PB15...PB8 */
#define VAL_GPIOBODR            0xFFFFFFFF

/*
 * Настройка порта C. Данный порт не разведён на плате.
 * Все порты настроены на вход с подтяжкой.
 */
#define VAL_GPIOCCRL            0x88888888      /*  PC7...PC0 */
#define VAL_GPIOCCRH            0x88888888      /* PC15...PC8 */
#define VAL_GPIOCODR            0xFFFFFFFF

/*
 * Настройка порта D. Данный порт не разведён на плате.
 * Все порты настроены на вход с подтяжкой.
 */
#define VAL_GPIODCRL            0x88888888      /*  PD7...PD0 */
#define VAL_GPIODCRH            0x88888888      /* PD15...PD8 */
#define VAL_GPIODODR            0xFFFFFFFF

/*
 * Настройка порта E. Данный порт не разведён на плате.
 * Все порты настроены на вход с подтяжкой.
 */
#define VAL_GPIOECRL            0x88888888      /*  PE7...PE0 */
#define VAL_GPIOECRH            0x88888888      /* PE15...PE8 */
#define VAL_GPIOEODR            0xFFFFFFFF

#if !defined(_FROM_ASM_)
#ifdef __cplusplus
extern "C" {
#endif
  void boardInit(void);
#ifdef __cplusplus
}
#endif
#endif /* _FROM_ASM_ */

#endif /* _BOARD_H_ */


Создаём файл board.c со следующим содержимым:

#include "ch.h"
#include "hal.h"

/**
 * Статическая конфигурация модуля PAL по данным,
 * определённым в заголовочном файле.
 */
#if HAL_USE_PAL || defined(__DOXYGEN__)
const PALConfig pal_default_config =
{
    {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
    {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
    {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
    {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
    {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
};
#endif

/*
 * Первоначальная инициализация кода.
 * Данная инициализация должна проводиться сразу после настройки стека
 * и до любой другой инициализации.
 */
void __early_init(void) {
    stm32_clock_init();
}

/*
 * Инициализационный код, специфичны для используемой платы.
 */
void boardInit(void) {
}


Осталось создать board.mk для автоматического подключения этих файлов в проект:

BOARDSRC = board/board.c
BOARDINC = board


Возвращаемся в каталог приложения:

cd ..


Конфигурация ОС, МК и периферии


Раскрывать страшные секреты конфигурации ОС считаю преждевременным, поэтому сжатый файл chconf.h приложен к топику. Просто распакуйте его в каталог приложения.

Настройки ChibiOS/RT для микроконтроллёра располагаются в файле mcuconf.h:

#define STM32F100_MCUCONF

/*
 * Конфигурация модулей для STM32F100.
 * Приведённые ниже настройки перекрывают стандартные параметры,
 * определённые в заголовочных файлах модулей.
 * Следует отметить, что настройки модуля имеют значения только,
 * если сами модули активированы в halconf.h.
 *
 * Приоритеты IRQ:
 * 15...0       Низкий...Высокий.
 *
 * Приоритеты DMA:
 * 0...3        Низкий...Высокий.
 */

/*
 * Настройки модуля HAL.
 * Используем внутренний и внешний генераторы.
 */
#define STM32_NO_INIT                       FALSE
#define STM32_HSI_ENABLED                   TRUE
#define STM32_LSI_ENABLED                   FALSE
#define STM32_HSE_ENABLED                   TRUE
#define STM32_LSE_ENABLED                   FALSE
#define STM32_SW                            STM32_SW_PLL
#define STM32_PLLSRC                        STM32_PLLSRC_HSE
#define STM32_PLLXTPRE                      STM32_PLLXTPRE_DIV1
#define STM32_PLLMUL_VALUE                  3
#define STM32_HPRE                          STM32_HPRE_DIV1
#define STM32_PPRE1                         STM32_PPRE1_DIV1
#define STM32_PPRE2                         STM32_PPRE2_DIV1
#define STM32_ADCPRE                        STM32_ADCPRE_DIV2
#define STM32_MCOSEL                        STM32_MCOSEL_NOCLOCK
#define STM32_RTCSEL                        STM32_RTCSEL_HSEDIV
#define STM32_PVD_ENABLE                    FALSE
#define STM32_PLS                           STM32_PLS_LEV0

/*
 * Настройки модуля ADC.
 */
#define STM32_ADC_USE_ADC1                  FALSE
#define STM32_ADC_ADC1_DMA_PRIORITY         2
#define STM32_ADC_ADC1_IRQ_PRIORITY         5

/*
 * Настройки модуля CAN.
 */
#define STM32_CAN_USE_CAN1                  FALSE
#define STM32_CAN_CAN1_IRQ_PRIORITY         11

/*
 * Настройки модуля EXT.
 */
#define STM32_EXT_EXTI0_IRQ_PRIORITY        6
#define STM32_EXT_EXTI1_IRQ_PRIORITY        6
#define STM32_EXT_EXTI2_IRQ_PRIORITY        6
#define STM32_EXT_EXTI3_IRQ_PRIORITY        6
#define STM32_EXT_EXTI4_IRQ_PRIORITY        6
#define STM32_EXT_EXTI5_9_IRQ_PRIORITY      6
#define STM32_EXT_EXTI10_15_IRQ_PRIORITY    6
#define STM32_EXT_EXTI16_IRQ_PRIORITY       6
#define STM32_EXT_EXTI17_IRQ_PRIORITY       6
#define STM32_EXT_EXTI18_IRQ_PRIORITY       6
#define STM32_EXT_EXTI19_IRQ_PRIORITY       6

/*
 * Настройки модуля GPT.
 */
#define STM32_GPT_USE_TIM1                  FALSE
#define STM32_GPT_USE_TIM2                  FALSE
#define STM32_GPT_USE_TIM3                  FALSE
#define STM32_GPT_USE_TIM4                  FALSE
#define STM32_GPT_USE_TIM5                  FALSE
#define STM32_GPT_USE_TIM8                  FALSE
#define STM32_GPT_TIM1_IRQ_PRIORITY         7
#define STM32_GPT_TIM2_IRQ_PRIORITY         7
#define STM32_GPT_TIM3_IRQ_PRIORITY         7
#define STM32_GPT_TIM4_IRQ_PRIORITY         7
#define STM32_GPT_TIM5_IRQ_PRIORITY         7
#define STM32_GPT_TIM8_IRQ_PRIORITY         7

/*
 * Настройки модуля I2C.
 */
#define STM32_I2C_USE_I2C1                  FALSE
#define STM32_I2C_USE_I2C2                  FALSE
#define STM32_I2C_USE_I2C3                  FALSE
#define STM32_I2C_I2C1_IRQ_PRIORITY         10
#define STM32_I2C_I2C2_IRQ_PRIORITY         10
#define STM32_I2C_I2C3_IRQ_PRIORITY         10
#define STM32_I2C_I2C1_DMA_PRIORITY         1
#define STM32_I2C_I2C2_DMA_PRIORITY         1
#define STM32_I2C_I2C3_DMA_PRIORITY         1
#define STM32_I2C_I2C1_DMA_ERROR_HOOK()     chSysHalt()
#define STM32_I2C_I2C2_DMA_ERROR_HOOK()     chSysHalt()
#define STM32_I2C_I2C3_DMA_ERROR_HOOK()     chSysHalt()

/*
 * Настройки модуля ICU.
 */
#define STM32_ICU_USE_TIM1                  FALSE
#define STM32_ICU_USE_TIM2                  FALSE
#define STM32_ICU_USE_TIM3                  FALSE
#define STM32_ICU_USE_TIM4                  FALSE
#define STM32_ICU_USE_TIM5                  FALSE
#define STM32_ICU_USE_TIM8                  FALSE
#define STM32_ICU_TIM1_IRQ_PRIORITY         7
#define STM32_ICU_TIM2_IRQ_PRIORITY         7
#define STM32_ICU_TIM3_IRQ_PRIORITY         7
#define STM32_ICU_TIM4_IRQ_PRIORITY         7
#define STM32_ICU_TIM5_IRQ_PRIORITY         7
#define STM32_ICU_TIM8_IRQ_PRIORITY         7

/*
 * Настройки модуля PWM.
 */
#define STM32_PWM_USE_ADVANCED              FALSE
#define STM32_PWM_USE_TIM1                  FALSE
#define STM32_PWM_USE_TIM2                  FALSE
#define STM32_PWM_USE_TIM3                  FALSE
#define STM32_PWM_USE_TIM4                  FALSE
#define STM32_PWM_USE_TIM5                  FALSE
#define STM32_PWM_USE_TIM8                  FALSE
#define STM32_PWM_TIM1_IRQ_PRIORITY         7
#define STM32_PWM_TIM2_IRQ_PRIORITY         7
#define STM32_PWM_TIM3_IRQ_PRIORITY         7
#define STM32_PWM_TIM4_IRQ_PRIORITY         7
#define STM32_PWM_TIM5_IRQ_PRIORITY         7
#define STM32_PWM_TIM8_IRQ_PRIORITY         7

/*
 * Настройки модуля RTC.
 */
#define STM32_RTC_IRQ_PRIORITY              15

/*
 * Настройки модуля SERIAL.
 */
#define STM32_SERIAL_USE_USART1             FALSE
#define STM32_SERIAL_USE_USART2             FALSE
#define STM32_SERIAL_USE_USART3             FALSE
#define STM32_SERIAL_USE_UART4              FALSE
#define STM32_SERIAL_USE_UART5              FALSE
#define STM32_SERIAL_USE_USART6             FALSE
#define STM32_SERIAL_USART1_PRIORITY        12
#define STM32_SERIAL_USART2_PRIORITY        12
#define STM32_SERIAL_USART3_PRIORITY        12
#define STM32_SERIAL_UART4_PRIORITY         12
#define STM32_SERIAL_UART5_PRIORITY         12
#define STM32_SERIAL_USART6_PRIORITY        12

/*
 * Настройки модуля SPI.
 */
#define STM32_SPI_USE_SPI1                  FALSE
#define STM32_SPI_USE_SPI2                  FALSE
#define STM32_SPI_USE_SPI3                  FALSE
#define STM32_SPI_SPI1_DMA_PRIORITY         1
#define STM32_SPI_SPI2_DMA_PRIORITY         1
#define STM32_SPI_SPI3_DMA_PRIORITY         1
#define STM32_SPI_SPI1_IRQ_PRIORITY         10
#define STM32_SPI_SPI2_IRQ_PRIORITY         10
#define STM32_SPI_SPI3_IRQ_PRIORITY         10
#define STM32_SPI_DMA_ERROR_HOOK(spip)      chSysHalt()

/*
 * Настройки модуля UART.
 */
#define STM32_UART_USE_USART1               FALSE
#define STM32_UART_USE_USART2               FALSE
#define STM32_UART_USE_USART3               FALSE
#define STM32_UART_USART1_IRQ_PRIORITY      12
#define STM32_UART_USART2_IRQ_PRIORITY      12
#define STM32_UART_USART3_IRQ_PRIORITY      12
#define STM32_UART_USART1_DMA_PRIORITY      0
#define STM32_UART_USART2_DMA_PRIORITY      0
#define STM32_UART_USART3_DMA_PRIORITY      0
#define STM32_UART_DMA_ERROR_HOOK(uartp)    chSysHalt()

/*
 * Настройки модуля USB.
 */
#define STM32_USB_USE_USB1                  FALSE
#define STM32_USB_LOW_POWER_ON_SUSPEND      FALSE
#define STM32_USB_USB1_HP_IRQ_PRIORITY      13
#define STM32_USB_USB1_LP_IRQ_PRIORITY      14


Настройки ChibiOS/RT для системы HAL (это которая модули предоставляет) располагаются в файле halconf.h:

#ifndef _HALCONF_H_
#define _HALCONF_H_

#include "mcuconf.h"

/* Выключатель для модуля TM */
#if !defined(HAL_USE_TM) || defined(__DOXYGEN__)
#define HAL_USE_TM                  FALSE
#endif

/* Выключатель для модуля PAL. Он нам будет нужен для мигания светодиодом. */
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
#define HAL_USE_PAL                 TRUE
#endif

/* Выключатель для модуля ADC */
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
#define HAL_USE_ADC                 FALSE
#endif

/* Выключатель для модуля CAN */
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
#define HAL_USE_CAN                 FALSE
#endif

/* Выключатель для модуля EXT */
#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
#define HAL_USE_EXT                 FALSE
#endif

/* Выключатель для модуля GPT */
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
#define HAL_USE_GPT                 FALSE
#endif

/* Выключатель для модуля I2C */
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
#define HAL_USE_I2C                 FALSE
#endif

/* Выключатель для модуля ICU */
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
#define HAL_USE_ICU                 FALSE
#endif

/* Выключатель для модуля MAC */
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
#define HAL_USE_MAC                 FALSE
#endif

/* Выключатель для модуля MMC_SPI */
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
#define HAL_USE_MMC_SPI             FALSE
#endif

/* Выключатель для модуля PWM */
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
#define HAL_USE_PWM                 FALSE
#endif

/* Выключатель для модуля RTC */
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
#define HAL_USE_RTC                 FALSE
#endif

/* Выключатель для модуля SDC */
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
#define HAL_USE_SDC                 FALSE
#endif

/* Выключатель для модуля SERIAL */
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
#define HAL_USE_SERIAL              FALSE
#endif

/* Выключатель для модуля SERIAL по USB */
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
#define HAL_USE_SERIAL_USB          FALSE
#endif

/* Выключатель для модуля SPI */
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
#define HAL_USE_SPI                 FALSE
#endif

/* Выключатель для модуля UART */
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
#define HAL_USE_UART                FALSE
#endif

/* Выключатель для модуля USB */
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
#define HAL_USE_USB                 FALSE
#endif

/*===========================================================================*/
/* Настройки модуля ADC.                                                     */
/*===========================================================================*/

#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
#define ADC_USE_WAIT                FALSE
#endif

#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
#define ADC_USE_MUTUAL_EXCLUSION    FALSE
#endif

/*===========================================================================*/
/* Настройки модуля CAN.                                                     */
/*===========================================================================*/

#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
#define CAN_USE_SLEEP_MODE          FALSE
#endif

/*===========================================================================*/
/* Настройки модуля I2C.                                                     */
/*===========================================================================*/

#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
#define I2C_USE_MUTUAL_EXCLUSION    FALSE
#endif

/*===========================================================================*/
/* Настройки модуля MAC.                                                     */
/*===========================================================================*/

#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
#define MAC_USE_EVENTS              FALSE
#endif

/*===========================================================================*/
/* Настройки модуля MMC_SPI.                                                 */
/*===========================================================================*/

#if !defined(MMC_SECTOR_SIZE) || defined(__DOXYGEN__)
#define MMC_SECTOR_SIZE             512
#endif

#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
#define MMC_NICE_WAITING            FALSE
#endif

#if !defined(MMC_POLLING_INTERVAL) || defined(__DOXYGEN__)
#define MMC_POLLING_INTERVAL        10
#endif

#if !defined(MMC_POLLING_DELAY) || defined(__DOXYGEN__)
#define MMC_POLLING_DELAY           10
#endif

#if !defined(MMC_USE_SPI_POLLING) || defined(__DOXYGEN__)
#define MMC_USE_SPI_POLLING         FALSE
#endif

/*===========================================================================*/
/* Настройки модуля SDC.                                                     */
/*===========================================================================*/

#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
#define SDC_INIT_RETRY              100
#endif

#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
#define SDC_MMC_SUPPORT             FALSE
#endif

#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
#define SDC_NICE_WAITING            FALSE
#endif

/*===========================================================================*/
/* Настройки модуля SERIAL.                                                  */
/*===========================================================================*/

#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
#define SERIAL_DEFAULT_BITRATE      115200
#endif

#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
#define SERIAL_BUFFERS_SIZE         64
#endif

/*===========================================================================*/
/* Настройки модуля SPI.                                                     */
/*===========================================================================*/

#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
#define SPI_USE_WAIT                FALSE
#endif

#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
#define SPI_USE_MUTUAL_EXCLUSION    FALSE
#endif

#endif /* _HALCONF_H_ */


Содержимое Makefile рассматривать тоже пока не будем, его сжатая версия приложена к топику. Просто распакуйте его в каталог приложения.

Приложение BLINKER


Настало время написать первое приложение на ChibiOS под ARMку.

Для этого создадим файл main.c и начнём.

Подключим заголовочные файлы ОС, периферии и микроконтроллёра:


#include <ch.h>
#include <hal.h>
#include <stm32f10x.h>


Создадим поток, который будет мигать светодиодом:


static WORKING_AREA(waBlinker, 128);
static msg_t blinker(void *arg) {
    (void) arg;
    chRegSetThreadName("blinker");
    while (!chThdShouldTerminate()) {
        palTogglePad(GPIOB, GPIOB_ARMKA_LED);
        chThdSleepMilliseconds(500);
    }
    return 0;
}


Инициализируем операционную систему и периферию:


int main(void) {
    halInit();
    chSysInit();


Запустим поток для мигания светодиодом:


    chThdCreateStatic(waBlinker, sizeof(waBlinker), NORMALPRIO, blinker, NULL);


А главный поток приложения загоним в паузу:


    while (!chThdShouldTerminate()) {
        chThdSleepMilliseconds(5000);
    }


В конце не забудем поставить скобку, чтобы завершить функцию main():


}


Вот как это будет выглядеть в итоге:


#include <ch.h>
#include <hal.h>
#include <stm32f10x.h>

static WORKING_AREA(waBlinker, 128);
static msg_t blinker(void *arg) {
    (void) arg;
    chRegSetThreadName("blinker");
    while (!chThdShouldTerminate()) {
        palTogglePad(GPIOB, GPIOB_ARMKA_LED);
        chThdSleepMilliseconds(500);
    }
    return 0;
}

int main(void) {
    halInit();
    chSysInit();

    chThdCreateStatic(waBlinker, sizeof(waBlinker), NORMALPRIO, blinker, NULL);
    
    while (!chThdShouldTerminate()) {
        chThdSleepMilliseconds(5000);
    }
}


В приложении у нас будет два потока:
  • Главный поток, который будет спать по пять секунд;
  • Вспомогательный поток, который будет менять состояние светодиода каждые полсекунды.

Сборка проекта


Для сборки проекта достаточно набрать команду make и в появившемся каталоге build найти файлы прошивки.

Выходим в корень проекта:

cd ../..


Фиксируем изменения проекта в репозитории:


git add ./apps/blinker/board/board.{h,c,mk}
git commit -m "Конфигурация выводов для blinker."
git add ./apps/blinker/chconf.h ./apps/blinker/mcuconf.h ./apps/blinker/halconf.h \
        ./apps/blinker/main.c ./apps/blinker/Makefile
git commit -m "Приложение blinker."


Резюме


В данном топике рассмотрены:
  • инструкция по созданию простейшего приложения для платы ARMka под ChibiOS/RT;
  • работа с Git.
Файлы в топике: chconf.h.gz, Makefile.gz

Комментарии (311)

RSS свернуть / развернуть
Эта статья уже гораздо лучше предыдущей. Даже при просмотре по диагонали вполне понятно что описано и как сделать. Респект.
0
ну хоть на что-то похоже.
вот подожди вы недельку и опубликуй эти две статьи сразу (ну, почти), и множества разговоров могло и не быть.
хотя исключительно имхо — описание надо начинать с хоть краткого описания выбранной оси. ее достоинств и недостатков, внутренней кухни. про таймеры-семафоры и прочее заинтересовавшиеся почитают уже сами.
0
Второй статьи могло и не быть. Это случайность.

Чего писать о выборе, если он был сделан по правилу «изучай то, что объяснить может человек, находящийся в досягаемости». Кому сильно приспичит, тот пусть сделает обзор всех RTOS и выкатит табличку сравнения.

Поработав с данной RTOS полгода, могу сказать, что она мне нравится и я буду её использовать дальше.
0
По-поводу таблички сравнения, попробуем представить формат такой.

По каким обязательным софтовым параметрам и критериям, по Вашему мнению, должны сравниваться кросс-платформенные оси? и какие хардварные особенностей камней должны быть учтены.
0
Это вопрос к treasure :)
0
не передергивайте. полноценный обзор от вас никто не требовал. но рассказать, какими критериями при выборе вы пользовались, можно и нужно. или первую попавшуюся ось взяли?
0
Я в начале первой статьи момент выбора достаточно чётко описал.

Мне её посоветовали и я за полгода не разочаровался в выборе.
0
Ну с осью-то ладно, меня выбор платы до сих пор удивляет. Да и насчет «монструозного» эклипса я тоже не понял.
0
Про выбор платы автор в принципе написал в прошлый раз: типа мелкая и имеет формат совместимый по размерам с DIP корпусом (не помню какой там был, вроде 40-ой). Только для меня это например не критерий, потому как я DIP недолюбливаю. Тем более я не вижу смысла проектировать устройства под данную плату (да и под любую другую тоже), когда можно камень самому развести непосредственно в устройстве, а либу для работы можно залить любую. Но это мое личное ИМХО и я никому его не навязываю. Каждый извращается в меру своей испорченности и я не исключение.
0
Да, я читал. Но я имел в виду другое. Брать 100-й камень и лепить к нему USB вместо того, что бы взять 103-й — странноватый выбор.
0
Ну тут наверное для совместимости с дискавери…
0
Для совместимости с дискавери надо 100-выводной чип ставить, иначе смысла особого нет.
0
Это не моя плата, я её просто купил для тестов, в коллекцию.
0
Я понимаю. Просто под описанные требования вполне подходит Maple Mini, которая как раз и сделана на 103-м.
0
Нет у меня требований :) Для запланированных статей текущей платы хватит за глаза.
К тому же, Maple Mini дороже в два раза.
0
Самодельная дешевле. Да и, если не ошибаюсь, у Seedstudio они были дешевле оригинала.
0
Уточню: самодельная даже дешевле армки должна быть.
0
Эта плата полностью удовлетворяет текущим задачам. Могу помигать светодиодом на VLDiscovery, могу помигать светодиодами или пощёлкать релюхами на куче самопальных плат аж с F103 чипом. Но не вижу смысла. Плата тут не главное.
0
Не складывается у меня взаимодействие с java софтом, вот и всё :)
0
Вы его готовить не умеете :)
0
Умею, даже под Android софт для себя делал, но процесс крайне не нравится. Ничего с собой поделать не могу.
0
Функциональность бесплатно не дается.
0
По работе часто сталкивался с фанатами функциональности, которые при сбое их супернавороченных IDE превращались в беспомощных котят и подлежали выбраковке.
0
По работе часто сталкивался с фанатами минимализма, которые тратили часы и дни на те вещи, которые в IDE делаются за секунды. Сколько-нибудь сложные изменения их пугали, в итоге код превращался в кучу спагетти перемешанную с костылями, откровенными хаками и бесконечной копипастой (т.н. «индусский код»). Из-за парочки таких фанатов в команде проект легко пролетал по срокам и затратам в 2-3 раза, а разработка превращалась в бесконечный фикс функциональности поломанной в результате попыток добавить новую. Выбраковываю таких фанатов немедленно.

P.S. я вполне могу писать сложные проекты в vi или нотпаде, но это вовсе не значит, что я предпочту их, при наличии нормального инструмента.
+1
Сколько-нибудь сложные изменения их пугали, в итоге код превращался в кучу спагетти перемешанную с костылями
Если без средств IDE в вашем проекте ничего изменить невозможно, значит рано или поздно вы сами утоните в своей сложности. При продуманной архитектуре кусочки должны добавляться, убираться и изменяться одинаково легко, вне зависимости от того, что используется для редактирования текста.
0
Если без средств IDE в вашем проекте ничего изменить невозможно
Изменить можно, вопрос в затратах времени и сил.
При продуманной архитектуре кусочки должны добавляться, убираться и изменяться одинаково легко, вне зависимости от того, что используется для редактирования текста.
Может вам уже перестать давать советы в том, о чем вы имеете только очень отдаленные теоретические представления? Не хотите рассказать, как «одинаково легко» переименовать функцию, которая используется в десятках-сотнях мест по всему проекту? А параметр ей добавить или переставить параметры местами? Замечу, что это самые примитивные типы рефакторинга.
0
Вот именно.
Я не навязываю свою точку зрения. Мне не нравится Eclipse и я его не использую. Остальные могут делать, что хотят, пока это не влияет на меня или мой проект.
0
Вот именно.
Соглашаться с чушью это, конечно, ваше право. Но, все-таки, иногда стоит задумываться над тем, почему в реальной жизни наблюдаются отличия от этих теоретических построений.
0
В реальной жизни наблюдаются отличия именно от твоих построений. Маленькое, аккуратное и надёжное как правило написано на Си и чуть ли не в блокноте, большое тормозное и качающее обновления через интернет каждую неделю — в эклипсах с рефакторингами.
0
Маленькое, аккуратное и надёжное
.., ничего не умеющее и интересное только тем, кому функционал пофиг. А когда его пытаются вырастить и превратить в нечто, что-либо умеющее, получается
большое тормозное и качающее обновления через интернет каждую неделю
Вот только случается это именно потому, что рефакторинг делать бессмысленно (проще с нуля переписать).

P.S. о том, что такое рефакторинг вы, видимо, вообще не в курсе, а слово из моего поста вычитали.
P.P.S. бОльшую (подавляющую) часть софта, который пишется в эклипсе вы не видели и не могли видеть, тем более не могли видеть, как он качает обновления каждую неделю.
+2
ничего не умеющее и интересное только тем, кому функционал пофиг
Много ли функционала в Win 8? M$ считает, что много. Я же считаю, что гораздо меньше, чем в Win 98. Если программка (сторонняя) падает, Win 98 выдаёт полный отладочный дамп, Win 8 же выдаёт одно бесполезное сообщение и предлагает «искать решение проблемы в интернете» (= тупит). Всякие же центры оповещений, метро-интерфейсы и дёрганья за заголовок окна — это не функционал, а мешающий мусор, а подлизывание под яблоко (чем страдает и винда, и линух) — и вовсе буээээ… Тем не менее, Win 98 требует «16 Мб ОЗУ и по крайней мере 195 Мб свободного дискового пространства», а Win 8 — 1 Гб ОЗУ и 16 Гб на диске.
бОльшую (подавляющую) часть софта, который пишется в эклипсе вы не видели и не могли видеть
Тем не менее, у меня нет никаких причин думать, что он чем-то отличается от того софта, который я видел.
0
Много ли функционала в Win 8?
Они обе написаны в IDE.
Если программка (сторонняя) падает, Win 98 выдаёт полный отладочный дамп,
От которого вовсе не так много проку как вам кажется.
Тем не менее, у меня нет никаких причин думать, что он чем-то отличается от того софта, который я видел.
Естественно нет. Вы же и о том, который видели толком ничего не знаете.
0
Вы же и о том, который видели толком ничего не знаете.
Ты хочешь сказать, что не прочитав 9000 «умных» книжек про ООП, я не могу взять и сравнить? Вот например, это:



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



И так во всём. Начиная с системных требований…
0
Ты хочешь сказать, что не прочитав 9000 «умных» книжек про ООП, я не могу взять и сравнить
Сравнивать вы можете сколько угодно. Но вы же не просто сравниваете, а рассуждаете о причинах этих отличий. А в этом вы ничего не понимаете (что не раз убедительно продемонстрировали).
0
А в этом вы ничего не понимаете
Интересно, кто тогда понимает? Неужели те, у кого «современный» редактор FBD зависает на несколько секунд после добавления каждого соединения (когда схема увеличивается до нескольких десятков блоков), а сами соединения трассируются самым идиотским путём (который почти нереально исправить), при этом он постоянно качает обновления через интернет (в которых ничего не улучшается)? Или те, кто сочинили метро-интерфейс? По-моему, лучше всего о качестве кода знают (и очень красноречиво говорят) системные требования, растущие по экспоненте.
0
Интересно, кто тогда понимает?
Те, кто этим занимается профессионально, как не сложно догадаться.
Неужели те, у кого «современный» редактор FBD зависает на несколько секунд после добавления каждого соединения (когда схема увеличивается до нескольких десятков блоков), а сами соединения трассируются самым идиотским путём (который почти нереально исправить), при этом он постоянно качает обновления через интернет (в которых ничего не улучшается)? Или те, кто сочинили метро-интерфейс?
Совершенно не удивлюсь, если окажется, что писали все перечисленное любители пропагандируемого вами подхода. Просто в какой-то момент софтина стала сложнее и оказалось, что этот подход не работает, а на выходе получается то, что вы описываете.

P.S. метро интерфейс придумали, скорее всего, маркетолухи с дизайнерами. средства разработки равно как и методологии проектирования тут совершенно ни при чем.
0
Совершенно не удивлюсь, если окажется, что писали все перечисленное любители пропагандируемого вами подхода.
Это писали именно фанаты оопов на C# в новомодной IDE.
0
Это писали именно фанаты оопов на C# в новомодной IDE.
Ну и? Из чего вы сделали вывод, что проблема в этом?
+2
Ну и? Из чего вы сделали вывод, что проблема в этом?
Из того, что это не единичный случай, а всеобщая тенденция, которая пришла вместе с засильем оопов и прочих «продвинутых» методов.
0
Из того, что это не единичный случай, а всеобщая тенденция, которая пришла вместе с засильем оопов и прочих «продвинутых» методов.
«Во время (или после) того» вовсе не значит «вследствие того». «Засилье ооп» пришло в самом начале 90-х, вместе с С++. Однако же весьма долго вы этого не замечали. Столь любимая вами 98-я винда написана в значительной мере именно на «засилье ооп». И наоборот, писанный чуть менее чем полностью на голом С линух вам не нравится.
+2
«Засилье ооп» пришло в самом начале 90-х, вместе с С++
Кому пришло, а кому и нет. Много хороших вещей написано на Си, и много на C++ (но без засилья оопов, когда через нагромождения «контроллеров» и «менеджеров» до сути так просто не доберёшься). Что хорошего написано на яве — секрет (может и есть что-то, что никто никогда не видел).
И наоборот, писанный чуть менее чем полностью на голом С линух вам не нравится.
То, что сейчас называется линухом, мне не нравится — всякие глянцевые убунты, которые ещё хуже худших поделок M$ и яблока. То, что создано Линусом, и сам Линус мной весьма уважаемы.
0
Кому пришло, а кому и нет.
Оно пришло всем. Только не до всех сразу это дошло.
Много хороших вещей написано на Си, и много на C++ (но без засилья оопов, когда через нагромождения «контроллеров» и «менеджеров» до сути так просто не доберёшься).

Во-первых, это паттерны проектирования, которые к ооп имеют очень опосредстванное отношение и существовали задолго до «засилья». Даже если в названии классов и методов отсутствует напрочь слово «контроллер», но функционально это контроллер, то паттерн от этого никуда не девается, хотя вам глаза и не мозолит. Во-вторых, написанное на плюсах это и есть то самое засилье ооп, которое вам так мешает жить.
Что хорошего написано на яве — секрет (может и есть что-то, что никто никогда не видел).
Вы это далеко не «все».
0
Во-первых, это паттерны проектирования, которые к ооп имеют очень опосредстванное отношение и существовали задолго до «засилья».
Только в маленькой и хорошей программке код состоит на 5% из обвязки, которую ты называешь паттернами, а в «современных» программах — уже не на 5, а на 99,5%. Для полезной работы остаётся 0,5%.
0
Только в маленькой и хорошей программке код состоит на 5% из обвязки, которую ты называешь паттернами
Паттерны к тому «обвязка» это или «мясо» отношения не имеют. Они применяются везде.
0
У вас вообще довольно странная реакция на любой используемый мной термин. Вы его, почему-то, автоматически заносите во что-то плохое, хотя практически всегда вы просто не имеете представления о чем идет речь. Что, впрочем, не мешает вам делать бессмысленные выводы.
+4
хотя практически всегда вы просто не имеете представления о чем идет речь
Ты слишком высокого мнения о современном «программировании», как области знаний. В отличие от практических наук, которые имеют дело с естественными явлениями (или классического программирования с хитроумной алгоритмизацией), ему не чем особенно умным или сложным похвастаться.
0
Ты слишком высокого мнения о современном «программировании», как области знаний.
Дело вовсе не в моем мнении о современном программировании, а о ваших знаниях о нем. Полное отсутствие которых вы не раз продемонстрировали.
В отличие от практических наук, которые имеют дело с естественными явлениями (или классического программирования с хитроумной алгоритмизацией), ему не чем особенно умным или сложным похвастаться.
Сейчас «хитроумная алгоритмизация» часть любой нетривиальной программы. И сложностей и пищи для ума в современном программировании хоть отбавляй. Другой вопрос, что из-за повышения уровня абстракции то, что раньше писала бригада из полудесятка программистов на протяжении полугода, сейчас пионер слабает за полчаса.

P.S. сложности и нетривиальности сейчас находятся на совершенно другом уровне, задачи такой сложности раньше даже не брались решать. на досуге можете поинтересоваться (если хватит знаний), например, об eventual consistency, CAP theorem, распределенных БД, географически распределенных кластерах и прочих подобных вещах.
0
из-за повышения уровня абстракции то, что раньше писала бригада из полудесятка программистов на протяжении полугода, сейчас пионер слабает за полчаса
Если отбросить рюшечки, окажется, что он просто вызвал то, что «писала бригада из полудесятка программистов на протяжении полугода». Причём врядли даже сможет вызвать нормально и правильно обработать ошибки.
сложности и нетривиальности сейчас находятся на совершенно другом уровне, задачи такой сложности раньше даже не брались решать
Это не отменяет того, что те же самые вещи (вроде операционных систем) становятся всё хуже и кривее, интерфейсы уродливей, а системные требования растут по экспоненте.
Распределённые вычисления — не продукт современных «методов» программирования, этим занимались с тех пор, как появились первые компьютеры.
0
Это не отменяет того, что те же самые вещи (вроде операционных систем) становятся всё хуже и кривее, интерфейсы уродливей, а системные требования растут по экспоненте.
Из всех этих утверждений верно только последнее. Причем растут требования из-за того, что экспоненциально же растет вычислительная мощность. И это отнюдь не плохо — то, что при старых требованиях выглядело кучкой квадратиков сегодня является фотореалистичной картинкой.
+1
а системные требования растут по экспоненте.
которые растут вслед запросам пользователей.
0
Они растут вслед развитию железа. Требования пользователей же намного впереди)
+1
Требования пользователей же намного впереди)
Требования пользователей — чтобы работало быстро, не глючило и делало только своё дело. От чего софт всё больше отдаляется.
+1
требования чтобы было удобно и не интерфейс «от программера для программеров» вы очевидно не рассматриваете.
+2
То, что я привёл — это и есть удобно. А закруглённые уголки и отсутствие настрек — это не удобно, а дерьмово.
0
вы привели как верх совершенства Win98. но это только вам. а я вот 9х ни за что пользоваться не буду. мне в семерке комфортнее.
А закруглённые уголки
к удобству не имеют ровным счетом никакого отношения.
отсутствие настрек
это ужасно при любом интерфейсе, с полупрозрачностями, закруглениями и прочими рюшечками или в «красивом» угловатом интерфейсе.
+2
или в «красивом» угловатом интерфейсе
Вот иконка из Win 2000.

Аккуратная и добротная работа. Симпатичные человечки и ключик.

Пластмассовые болванки, намалёванные в фотошопе. Без глазок даже. Видимо, верх красивости.

Интерфейс должен быть аккуратным и лаконичным, в этом и есть красота. А мазня гламурных дизайнеров в фотошопе — для дибилов.
-1
пффф… это вообще чистая придирка.
+1
Тоже самое можно сказать почти о любом элементе интерфейса, который изменили начиная с XP.
0
ну, ресурсы — это вообще не проблема. вопрос только времени и усилий. и семерку можно привести к хрюшечному виду. вот только вы хотите из коробки и сил и времени тратить не хотите. в таком случае остается только брызгать слюной на форумах «раньше трава была забористее, а солнце голубее и небо ярче»
+1
ну, ресурсы — это вообще не проблема. вопрос только времени и усилий. и семерку можно привести к хрюшечному виду
Не проблема, если ты не понимаешь разницу между «сляпать говнотему на коленке, да поменять обои» и «сделать также быстро, аккуратно и лаконично, учитывая насколько дизайнеры изуродовали систему».
вот только вы хотите из коробки и сил и времени тратить не хотите. в таком случае остается только брызгать слюной на форумах «раньше трава была забористее, а солнце голубее и небо ярче»
Легко говорить подобное, когда толпа таких же хомячков тебя поддержит и вы вместе сможете похихикать над тем, как глупо «пытаться остановить прогресс».
+1
ваше «быстро, аккуратно и лаконично» не более чем ретроградство.
Легко говорить подобное (...)
ну вот, опять на личности переходите. впрочем, это уже привычно.
мне не составляет труда использовать все новые возможности. всякие рюшечки меня не раздражают, чтобы кричать об этом на каждом углу. ну разве что за исключением совсем клинических случаев.
оставайтесь на ненаглядной и «красивой» 9х с «красивым и лаконичным» ограниченным и угловатым серым софтом тех времен. вот только не войте, что кодеков нет, инет чуть более чем ужасен, софт ограничен и т.п.
а я буду сидеть в семерке, использовать альтиум (а не пикад), солид (а не автокад), софт писать в студии, слике и эклипсе (а не в блокноте), и смотреть киношки онлайн.
+1
А вы пользовались «рюшечкой», называемой метро, на стационарном компе? :)
p.s.: кстати, там уголки не скругленные :)
0
p.s.: кстати, там уголки не скругленные :)
Не в скруглённых уголках дело. У этой няшки, которую я в детстве восстановил из разрозненой кучи запчастей, уголки скруглённые и мне она очень нравилась (именно внешним видом). В метро уголки не скруглённые, и оно полное дерьмо.
0
не, я 8 и не планирую пользовать, как и висту даже не пробовал. учитывая манеру мелкомягких нормальную ось через одну выпускать.
+1
Это правильно. Восьмерку даже не думайте ставить. Семёрка самое нормальное на текущий момент.
0
Семерка, на моем конкретном устаревшем компьютере, работала шустрее ХР. Глобальная переработка дизайна системы в виде «спрятать все редкоиспользуемое (в нормальном использовании), и сделать доступным то, что используется постоянно» крайне положительно сказывается на удобстве пользования семёркой.
Какие у вас притензии к системе, кроме «я не смог найти настройки сети» (крайне популярный аргумент крутыхмегахацкеров), и «иконка мне не нравится, хочу назад в 8 бит»? Что объективно снизило удобство пользования системой?
0
что ни слово, то в точку!
0
Какие у вас притензии к системе, кроме «я не смог найти настройки сети»
Уродливый интерфейс, загаженность системы всяким мусором, запрет на установку драйверов, и ещё множество вещей. Я юзал семёрку на ноутбуке, для которого не было драйвера (GT 555M) для XP, и был очень счастлив, когда вернулся к своему компу. Тот ноут теперь валяется в шкафу куче хлама из-за своей бесполезности.
-1
Уродливый интерфейс,
загаженность системы всяким мусором
исключительно субъективно. что для вас мусор, для других — жемчужина.
запрет на установку драйверов
и опять ей больно.
Я юзал семёрку на ноутбуке, для которого не было драйвера (GT 555M) для XP, и был очень счастлив, когда вернулся к своему компу.
просто не пытались даже понять логику и принципы работы. это ваш косяк, а не оси.
Тот ноут теперь валяется в шкафу куче хлама из-за своей бесполезности.
подарите мне. чего ему в шкафу валяться? ;)
+1
и опять ей больно.
Ну почему, с неподписанными дровами на x64, AFAIK не очень хорошо.
0
тестовый режим.
да и неподписанные дрова ставятся.
0
чтобы не было недопонимания. х86 семерку я ни разу не ставил. то есть вообще.
0
А я x64 семерку не ставил :D Только наслышан о проблемах. С тестовым режимом вроде тоже какие-то косяки.
0
А я x64 семерку не ставил :D Только наслышан о проблемах.
да нет никаких проблем.
С тестовым режимом вроде тоже какие-то косяки.
ну, единственный раз когда мне понадобился тестовый режим — авреал на лпт. поставил-запустил-снес. больше тестовый режим не включал. не было необходимости.
потому категорично утверждать что проблем нет — не буду. мне оно просто не понадобилось особо. но когда было нужно — проблем не было.
0
Ну, тестовый режим неудобен, если требуется накатить неподписанное дрово на постоянной основе. Уже даже тем, что ЕМНИП его нужно включать каждый раз при загрузке (хотя… гм… надуманная проблема, подумаешь, пару раз в год F8 нажать...), ну и вроде еще какие-то фичи в семерке отключаются в ТР.
0
тестовый режим можно и на постоянной основе держать. только тебе оно не актуально чуть более чем полностью. у х86 семерки нет этой придури. это дурь х64 что хрюши что семерки.
0
Я в курсе. Правда, х64 семерку таки надо на один комп поставить.
0
Странно, у меня встают на x64 и подписанные и неподписанные дрова. Просто на неподписанные ось матерится, что не знает таких и спрашивает продолжить или нет. Жмешь продолжить и все работает без входа в тестовый режим.
Хотя вполне допускаю что я сам дундук и чего-то неправильно понимаю. Просто надобности копать глубоко не было.
+1
По идее, так себя ведет только 32-битная. Возможно, твоя уже полечена от излишней брезгливости.
0
хз. 32хбитной у меня точно нигде нет, только 64.
На счет полеченой тоже не скажу точно. потому как на ноуте стоит лицензия, а на стационарных — корпоративка без всяких хаков и лечений.
0
Вы даже не пытались использовать интерфейс.
Я вот очень жалею, что они аэро не перенесли в восьмерку (оно то понятно почему — восьмерка ориентируется на планшеты — одно приложение на весь экран). Очень удобно не сворачивая окна, видеть что происходит под ним (фоновые задачи то ни кто не отменял). Хотя по началу как-то не придавал значения ему, и считал излишеством.
Отображение прогресса на панели задач так вообще супер. В ХР лишь единичные программы делали это своими средствами, в семёрке же это нативно для программ, даже устаревших.
Всплывающая миниатюра окна так же удобна для фоновых задач. Работаешь в окне на весь экран, а мышку навел на интересующую фоновую программу — всё видно, ни каких периодических переключений между окнами не требуется.
Скрытие всех окон при наведении на мениатюру, так же позволяет обойтись без лишних переключений между окнами. Навел, посмотрел, убрал — работаешь.
Сворачивание всех окон по шейку за заголовок окна и восстановление их при повторе, блин, что бы я об этом раньше узнал!
Это все мелочи, придуманные «говнодезайнерами» реально помогают в использовании системы. Отказываться от них нет желания.
+1
про семерку точно. а как ломает, когда за ХРень, садишься — ужас-ужас!..
+1
восьмерка ориентируется на планшеты — одно приложение на весь экран
Лично меня этот подход раздражает, кстати. Оно еще было оправдано на WinMobile, когда экраны были 240х320, но сейчас…
Это все мелочи, придуманные «говнодезайнерами» реально помогают в использовании системы. Отказываться от них нет желания.
Есть только одна проблема — если пользуешься другими ОС раздражает, когда трясешь-трясешь, а окнам пофигу.
+1
Есть только одна проблема — если пользуешься другими ОС
Эта проблема у меня решилась тем, что везде 7-ка/8-ка. Да, с 8-кой я лажанулся — установил. Печально, что назад нельзя.
0
а в чем проблема? команду format C: никто не отменял вроде? или такой вариант с 8кой уже не действует?
0
Вот иконка из Win 2000.

В разговоре о разработке программного обеспечения Вы зачем-то постоянно все сводите к вопросам дизайна и эргономики интерфейса.

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

Какой смысл, в данном случае, сравнивать одну иконку с другой? Кому-то нравиться «с глазкам», кому-то «пластмассовые болванки». Это все очень субъективно, да и мы не на дизайнерском форуме.

У меня складывается впечатление, что вы ассоциируйте качество программного продукта исключительно с «наличием глянца в дизайне». Мол, если в дизайне глянец, то и код говно. Но вы же сами понимаете, то эти вещи никак не связанны.
+1
Но вы же сами понимаете, то эти вещи никак не связанны.
По-моему, связаны. Мазня в фотошопе вместо аккуратных иконок, оопы вместо алгоритмизации, увеличение абстракций вместо оптимизации, обновления через интернет каждую неделю вместо контроля качества, доширак вместо еды, секс вместо любви и прочее скотство — связано.
0
По-моему, связаны

Хм, у Вас странная логика. Не понимаю, как эти все вещи связанны между собой.

Ели мне, субъективно, больше нравиться вторая иконка (пластмассовые болванки), то, по-вашему, это автоматически говорит, что я не разбираюсь в алгоритмах, забиваю на оптимизацию, кушаю доширак и предпочитаю секс вместо любви? Другими словами, я последняя скотина, только по тому, что мой взгляд на эти две иконки отличается от Вашего?

Как связаны «обновления через интернет каждую неделю» с дошираком и « секс вместо любви»?
+2
Не понимаю, как эти все вещи связанны между собой.
Все эти вещи обоснованы потребностями, которые становятся всё более примитивными. Неумением ценить хорошее и практичное, аккуратное и лаконичное. Неумением видеть дальше блестящего корпуса.
0
да вот и вы не видите дальше блестящего корпуса.
видите глянец, и сразу отторжение.
и за лесом деревьев не видите. и не понимаете, почему семерка хочет гигабайты и гигагерцы, а 9х хватало пары сотен метров и мегагерцев.
+2
и не понимаете, почему семерка хочет гигабайты и гигагерцы
Зато понимаю на что точно не расходуются эти дикие ресурсы — на полезную работу.
0
Зато понимаю на что точно не расходуются эти дикие ресурсы — на полезную работу.
Ну с вашими «пониманиями» такой вывод меня не удивляет. Что, впрочем, не отменяет вопроса: кому полезную? У разных людей критерии полезности разные.
0
Все эти вещи обоснованы потребностями, которые становятся всё более примитивными.
Странно, требования становятся все более примитивными, а сложность софта растет как на дрожжах. Такое ощущение, что вы живете в какой-то другой реальности.
+1
По-моему, связаны.
Что еще раз подтверждает, что вы не разбираетесь в том, о чем беретесь судить. Замечу, что о софте вы спорите, преимущественно, с людьми, для которых программирование (в отличие от паяния) — кусок хлеба.
оопы вместо алгоритмизации
ООП и алгоритмизация — совершенно параллельные вещи.
абстракций вместо оптимизации
Как по вашему, сколько кода требует оптимизации?
обновления через интернет каждую неделю вместо контроля качества
Можно поинтересоваться как много юниттестов вы пишете на тот код, который пихаете в прошивку? А интеграционные, функциональные, нагрузочные и регрессионные тесты вы делаете?
прочее скотство — связано.
Кто бы сомневался. Причем если это старое скотство — то это замечательно в вашем представлении. А если новое — ересь.
0
Можно поинтересоваться как много юниттестов вы пишете на тот код, который пихаете в прошивку? А интеграционные, функциональные, нагрузочные и регрессионные тесты вы делаете?
Лучше поинтересоваться этим у адоба и тормозиллы. Я вчера установил Firefox 3.6 (с адблоком, разумеется) другу, которого замучали постоянные обновления и запуск браузера за несколько секунд. Установил флешплеер, чтобы можно было смотреть ютубы. Флешплеер поставил последней версии, т.к. в этом дерьме баг на баге. Пообещал, что этот Firefox не будет доставать своими глупостями. Сегодня Firefox выдал сообщение, что нужно обновить флешплеер — очередной зиродей. Пришлось убеждать, что нужно обновить флешплеер (и заодно поубивать остальные плагины, что сам забыл сделать).
Замечу, что о софте вы спорите, преимущественно, с людьми, для которых программирование (в отличие от паяния) — кусок хлеба.
Вот именно. Если взять и написать хороший, быстрый и маленький софт — можно сразу закрывать лавочку. Поэтому «приходится» писать так, чтобы постоянно «приходилось» выкатывать обновления.
0
>>Можно поинтересоваться как много юниттестов вы пишете на тот код, который >>пихаете в прошивку? А интеграционные, функциональные, нагрузочные и >>регрессионные тесты вы делаете?
Лучше поинтересоваться этим у адоба и тормозиллы.
вы стрелки-то не переводите.
Вот именно. Если взять и написать хороший, быстрый и маленький софт — можно сразу закрывать лавочку. Поэтому «приходится» писать так, чтобы постоянно «приходилось» выкатывать обновления.
покажите свой «хороший, быстрый и маленький софт»
+1
Лучше поинтересоваться этим у адоба и тормозиллы.
Меня интересует ваш ответ, а не их.
Если взять и написать хороший, быстрый и маленький софт — можно сразу закрывать лавочку.
Да, попробуйте. Я с большим интересом посмотрю на результат.
Поэтому «приходится» писать так, чтобы постоянно «приходилось» выкатывать обновления.
Не порите чушь, ей больно. Сопровождение продуктов подобных упомянутым вами это чистый убыток, так что производители прямо заинтересованы писать качественный софт.
+1
Да, попробуйте. Я с большим интересом посмотрю на результат.
«Не нравится — сделай сам». Посмотри лучше на Блокнотик — отличная маленькая, аккуратная и удобная программка, которая однажды написана и больше не нуждается в обновлениях.
0
«Не нравится — сделай сам»
Именно так. Вы ведь доказываете, что знаете как правильно, что же вам мешает продемонстрировать это на практике?
Посмотри лучше на Блокнотик
Отличная маленькая неработающая програмка. Зачем мне ее смотреть? И каким боком оно относится к вам?
0
И каким боком оно относится к вам?
Мне оно нравится в отличии от новомодного софта, гораздо менее полезного, зато более тяжёлого, тормозного и глючного.
0
Мне оно нравится
Это не имеет никакого значения. Вы автор?
0
Это не имеет никакого значения.
Имеет.
Вы автор?
Нет, я пользователь.
0
Имеет.
Я вам предложил продемонстрировать применение ваших теорий к реальной жизни. Вы же в ответ меня отправляете смотреть какие-то программки, которые неизвестно по каким принципам создавались. То, что вы думаете, что они создавались по тем принципам, которые вы тут задвигаете, вовсе не значит, что так оно и есть на самом деле. Так что вам пора перестать юлить и либо продемонстрировать что-то созданное вами в полном соответствии с вашими теориями или признаться, наконец, что вы полный теоретик в этих вопросах, а ваши теории не стоят выеденного яйца.
+1
Я вам предложил продемонстрировать применение ваших теорий к реальной жизни.
Автолюбителю вовсе не нужно быть конструктором для того, чтобы оценивать и разбираться в автомобилях, а если нужно — и покопаться внутри. Не понимаю, почему ты требуешь от меня разбираться в новомодных технологиях софтостроения, чтобы иметь право сделать выводы, которые и так очевидны.
-2
Автолюбителю вовсе не нужно быть конструктором для того, чтобы оценивать и разбираться в автомобилях, а если нужно — и покопаться внутри.
Во-первых, автолюбитель разбирается только в тех автомобилях, с которыми имеет дело. В коммерческих грузовиках, например, или в болидах формулы 1 он ничего не понимает. Во-вторых, для «покопаться внутри» автолюбителю нужны знания и опыт значительно больше того, который он может приобрести катаясь на машине. Даже наличие некоторого опыта не означает, что он знает все об устройстве любого автомобиля и в состоянии починить любую его часть, а тем более не дает ему возможности учить конструкторов тому, как правильно делать автомобили. Вы же занимаетесь ровно этим. Когда же автолюбители начинают страдать подобными рассуждениями, то найдется кто-нибудь, кто предложит сделать собственный автомобиль и продемонстрировать его преимущества на практике.
Не понимаю, почему ты требуешь от меня разбираться в новомодных технологиях софтостроения, чтобы иметь право сделать выводы, которые и так очевидны.
Я не требую, а предлагаю разобраться или продемонстрировать свой подход на практике. Как раз потому, что «очевидные» для вас выводы не имеют ни малейшего отношения к реальности. Когда вы начинаете рассуждать об ООП и при этом всплывают паттерны, это примерно тоже самое (продолжая вашу автомобильную аналогию), что рассуждая о форме фар ссылаться на коврики.
0
Во-первых, автолюбитель разбирается только в тех автомобилях, с которыми имеет дело. В коммерческих грузовиках, например, или в болидах формулы 1 он ничего не понимает.
Я не думаю, что общие тенденции в разных областях программирования отличаются. Разве что в каких-то сугубо специфических местах, вроде научных вычислений что-то может быть иначе, чем в попсовом и мейнстримовом.
Даже наличие некоторого опыта не означает, что он знает все об устройстве любого автомобиля и в состоянии починить любую его часть.
Но оценить конструкторские решения он сможет.
0
Я не думаю,
вот и все. вот и признался в чистом теоретизировании.
0
Но оценить конструкторские решения он сможет.
конечно нет.
чтобы быть в состоянии оценить конструкторские решения надо самому быть конструктором.
любая домохозяйка может управлять государством. угу.
0
чтобы быть в состоянии оценить конструкторские решения надо самому быть конструктором.
Но вы рассуждаете о костылях и багах x86, ругаете АвтоВАЗ и прочее, хотя конструкторами процессоров или автомобилей не являетесь.
вот и все. вот и признался в чистом теоретизировании.
Я говорю о том, что вижу своими глазами, а не теоретизирую от фонаря.
0
Но вы рассуждаете о костылях и багах x86, ругаете АвтоВАЗ и прочее, хотя конструкторами процессоров или автомобилей не являетесь.
заметьте, если и ругаю (кстати, где? пруф приведете? или опять в кусты?), то исключительно как юзверь. о методологиях и подходах разработки (хоть процов, хоть машинок с самолетиками) рассуждаете здесь исключительно вы.
Я говорю о том, что вижу своими глазами
угу. что вижу, о том и пою.
0
Но вы рассуждаете о костылях и багах x86, ругаете АвтоВАЗ и прочее, хотя конструкторами процессоров или автомобилей не являетесь.
Не путайте сравнение с потребительской точки зрения с указаниями конструкторам как им делать процессоры и автомобили.
0
С потребительской точки зрения вы не должны видеть ничего дальше корпуса. Правда не всегда получается, не правда ли?
0
система команд и архитектура проца для программера это как раз и есть
ничего дальше корпуса
или и с этим будете спорить?
0
С потребительской точки зрения вы не должны видеть ничего дальше корпуса.
Если речь об автомобиле, то нет. Если о процессоре, то тем более нет. В первом случае даже в инструкции по эксплуатации есть описание того, как проверять уровень масла и доливать омывайку. Во втором случае «корпус» вообще весьма глубоко. Мне, как пользователю, может понадобиться знать много подробностей об архитектуре, таких как глубина конвеера, количество и возможности арифметических блоков, влияние инструкций на конвеер и так далее. Да, это нужно далеко не всем. Но, скажем, разработчикам компиляторов это нужно. Повторюсь, это все исключительно с точки зрения юзера. Если бы я был конструктором, я бы смотрел технологический процесс, разводку тактовых сигналов, отвод тепла от кристалла и другие непонятные и не нужные простому (даже очень продвинутому) юзеру вещи.
0
По автомобилям он дал очень хороший пример. Особенно когда народ с ручной каробки пересаживается на автомат «не удобно же, где тут сцепление, я не могу переключить скорость». И наоборот. При этом основная масса водил считает себя мегакрутыми (купленные/подаренные права, «тюнингованная» машина). И почему в итоге именно они стоят безпомощно и курят в итоге?
0
Да, пример достаточно удачный. Однако же даже среди «мегакрутых водил» мне пока не попадались экземпляры порывающиеся учить конструкторов автомобилей как те должны разрабатывать автомобили.
0
экземпляры порывающиеся учить конструкторов автомобилей как те должны разрабатывать автомобили
А как не нужно, попадались? Впрочем, автомобили хотя бы не потребляют топлива с каждым годом всё больше и больше, по экспоненте. И скорость движения не снижается также стремительно. Что позволяет полагать, что эти конструкторы хотя бы в какой-то мере знают своё дело.
0
А как не нужно, попадались?
конечно. мы все одного такого даже знаем. ;)
автомобили хотя бы не потребляют топлива с каждым годом всё больше и больше, по экспоненте.
да ну? впрочем, не по экспоненте. но процы все-таки жрут даже меньше.
И скорость движения не снижается также стремительно.
если-бы авто наращивали скорость как процы, мы уже давно телепортировались бы в любую точку шарика и в пределах системы тоже.
эти конструкторы хотя бы в какой-то мере знают своё дело.
не так уж и хорошо. сравнительно с чипмейкерами.
+1
не так уж и хорошо. сравнительно с чипмейкерами
Смотря с какими. Уж явно не с теми, кто манипуляцию битами пихает в периферию.
0
да хоть проведите мегагерцы-км/ч
0
Смотря с какими. Уж явно не с теми, кто манипуляцию битами пихает в периферию.
Да-да, прецизионное дрыгоножество ваше фсьо :)

P.S. продолжая автомобильную аналогию, ваши высказывания мне здорово напоминают визги противников систем ABS+EBD. таким я, обычно, предлагаю не мучиться и поставить четыре педали тормоза, а потом прецизионно дрыгать ногами нажимать все четыре педали, удерживая положение автомобиля во время экстренного торможения.
+1
Да-да, прецизионное дрыгоножество ваше фсьо :)
Не понимаю, какая связь между извращением-битбандингом и прецизионным ножкодрыганием (которое мне самому не так уж нравится, сразу после своего первого lpt-bb программатора я собрал преобразователь RS232-SPI на логике, т.к. идея в большом компе как в какомнить пике дёргать ножками порта мне не нравилась, а лепить МК в программатор — казалось буржуйством). Однако МК обязан хорошо дёргать ножками, иначе это не МК а какой-то процессор.
0
ядро должно хорошо управлять. а хорошо дергать ножками должна периферия.
+1
Нет, МК весь должен быть быстрым, простым и маленьким.
0
всякие тиньки — да. только МК давно уже не тиньки. и решаемые ими задачи выходят далеко за прецизионный ногодрыг (с).
0
и решаемые ими задачи выходят далеко за прецизионный ногодрыг
На тиньке можно и на Луну улететь. Большие ресурсы нужно ещё придумать чем занять (если не повторять то, что китайцы и так продают за 1$).
0
На тиньке можно и на Луну улететь.
только почему-же вы до сих пор не улетели на луну на тиньке?
Большие ресурсы нужно ещё придумать чем занять
и почему те-же весьма приземленные коптеры на мегах и выше, а не на тиньках?
0
Маленьким и простым? А ты в курсе, что 8051 был в несколько раз сложнее современных ему центральных процессоров?
Да и насколько я знаю, размер ядер AVR и ARM сравним.
0
ты что! не покушайся на святыню простоты и наглядности!!!
:)))
+1
Однако МК обязан хорошо дёргать ножками, иначе это не МК а какой-то процессор.
Он и дергает хорошо (и даже очень хорошо, весьма прецизионно и весьма быстро). Только не тем путем, который вам привычен.
+1
Только в ограниченном количестве случаев (то, что «95% этого достаточно», меня не волнует).
0
Только в ограниченном количестве случаев
Пример приведете?
0
Уж явно не с теми, кто манипуляцию битами пихает в периферию.
Во первых, не битами, а пинами. Да, их еще со времен 8051, если не раньше, принято ассоциировать с битами, но битами они не являются. И упихивать каждый пин в битик заставляло только резко ограниченное АП SFR.
Во вторых, это просто прекрасная идея. Она реализует возможности специализированных ядер в МК с ядром общего назначения, не затрагивая ядро и расходуя ресурс, который все равно не был бы задействован.
0
А как не нужно, попадались?
Неа.
Впрочем, автомобили хотя бы не потребляют топлива с каждым годом всё больше и больше, по экспоненте. И скорость движения не снижается также стремительно.
Аналогом автомобильного топлива в IT будет потребляемая электроэнергия, а не занимаемое место на диске, частота процессора или необходимый объем памяти. Думаю, не надо долго рассказывать насколько современные компы в этом плане лучше старых?

В автомобилях аналогом софта может служить удобство и качество салона, эргономика, безопасность и куча вспомогательных систем, от ABS и до управляемых электроникой полноприводных трансмиссий. И вот тут оказывается, что картина, вобщем, аналогичная той, которая наблюдается с софтом. С каждым днем количество и сложность этих систем растет, причем вместе с размером автомобиля. Нынешний типичный представитель класса С легко по размерам и колесной базе взувает класс Д двадцатилетней давности, вес автомобиля, стоимость его обслуживания и запчастей растет. Не по экспоненте, конечно, но довольно быстро. Впрочем и у софта вы с экспонентой, мягко говоря, загнули.
0
Думаю, не надо долго рассказывать насколько современные компы в этом плане лучше старых?
Это исключительно заслуги аппаратного обеспечения. А потребляемые (скорее, бессмысленно растранжириваемые) софтом ресурсы — это занимаемое место на диске, частота процессора или необходимый объем памяти.
0
что место на диске что память что проц уже давно не проблема. если вы не бедный студент, конечно.
0
два-три ядра по паре ггц, полтора-два десятка гиг оперативы и пара тер винт давным-давно доступно чуть более чем всем.
0
Твои слова вызывают у меня острый баттхёрт и не менее острую зависть. Ибо мой конфиг — C2D E6300 и 3GB RAM. Причем из перспектив апгрейда по последнему пункту — максимум 3.49, как у Lifelover.
+1
не поверишь, но у меня конфиг примерно такой же. только памяти 8. просто потому, что мне больше не нужно. я одно время серьезно рассматривал вариант 2500К+16-32G. но потом поостыл и понял, что мне оно просто не нужно. вот не нужно, и все. меня все устраивает. вместо смены платвормы докупил еще 4гига памяти и видушку сменил. подозреваю, что еще несколько лет на этом и останусь.
0
Мне памяти не хватает. Но увы, WinXP x32 и ни малейшего желания ее переставлять. А тут еще NV TurboCache жрет впустую четверть гига. Еще и убрали возможность это наебалово отключить в новых дровах.
0
ну, кроме как перелезть все-таки на х64, больше посоветовать и нечего. точнее, другого пути просто нет. смирись.
0
Гм, а семерка х32 не умеет больше юзать? В принципе ж задача и в 32-битной оси решаемая, разве что ограничение 2ГБ га процесс останется, но меня не оно напрягает.
0
Гм, а семерка х32 не умеет больше юзать?
ахз. это не ко мне. я семерку х86 и в глаза ни разу не видел.
0
семера x32 имеет те же ограничения по памяти что и ХРюша. Если хочешь больше — только х64
0
Печально. ИМХО, если уж оно поддерживает PAE и все такое — могло бы и уметь задействовать побольше памяти.
0
А всякие PAE и как там они?
0
AFAIK, под ХРх32 память сверх 3.5 гиг можно задействовать только под виртуальный диск. Можно было бы убрать туда своп, но тогда отвалится гибернация — винда не рассчитывает, что своп окажется в volatile-памяти.
0
У меня сейчас система уходит в гибернацию и восстанавливается дольше цем выгрузить и загрузить её снова :)
Ну а папку темп можно бы туда перенести. И папку «разное» от загрузок как обязательно — приучит сортировать то говно, что качаешь — не перенёз, значит и не надо.
0
Все это говно пусть валяется на харде, незачем тратить на него ценную оперативку.
Но гибернация таки проблема. Сам я ей не пользуюсь, но комп приучен падать туда при исчерпании заряда UPS. А потеряв своп система уже не проснется. Хотя вопрос я не изучал, возможно можно настроить так, чтобы программа рамдиска при засыпании дампила рамдиск на хард. Пока что вопрос упирается не только в гибернацию, но и в отсутствием четырех двухгиговых модулей.
0
что место на диске что память что проц уже давно не проблема

Однако IDE (причём, не такой жырной как эклипс) и паре-тройке программ на яве и этого мало…
если вы не бедный студент, конечно.
Бедный студент и вовсе скоро блокнот не запустит.
0
и что? у меня почему-то и эклипс не тормозит… ЧЯДНТ?
Бедный студент и вовсе скоро блокнот не запустит.
запустит. и не только блокнот. конечно, если у него конфиг не начала-средины нулевых.
0
Однако IDE (причём, не такой жырной как эклипс) и паре-тройке программ на яве и этого мало…
Что-то мне подсказывает, что дело вовсе не в IDE. На аналогичных ресурсах под линухом я запускаю куда больше софта, однако все летает, в том числе эклипс и изрядное количество больших программ на яве. К слову, что-то мне сомнительно, что у вас есть «пара-тройка программ на яве» для десктопа (а другими вы врядли пользуетесь).
0
Это исключительно заслуги аппаратного обеспечения
Вы не поверите, но все режимы энергосбережения в проце нуждаются в софтовой поддержке для нормального функционирования.
А потребляемые (скорее, бессмысленно растранжириваемые) софтом ресурсы
Откуда вам знать, бессмысленно они растранжириваются или используются по назначению, если вы в разработке софта не разбираетесь ни разу?
0
Откуда вам знать, бессмысленно они растранжириваются или используются по назначению, если вы в разработке софта не разбираетесь ни разу?
Даже слепой не может не видеть, что в современном софте полезный выхлоп не стоит и тысячной доли потребляемых ресурсов.
-1
Даже слепой не может не видеть, что в современном софте полезный выхлоп не стоит и тысячной доли потребляемых ресурсов.
Полезный для кого выхлоп? Для вас? С чего вы решили, что уровень полезности в вашем представлении является таким же и для других пользователей этого софта?
+1
С чего вы решили, что уровень полезности в вашем представлении является таким же и для других пользователей этого софта?
Я не думаю, что нагрев процессора и расход системной памяти каким-то из пользователей считается полезным. Разве что ноги греть на системнике (но современные процессоры очень холодные).
0
Я не думаю, что нагрев процессора и расход системной памяти каким-то из пользователей считается полезным.
Это не ответ на вопрос, который я вам задал.
0
Я не думаю, что нагрев процессора и расход системной памяти каким-то из пользователей считается полезным.
пока его хватает, никто на них и не смотрит.
+1
пока его хватает, никто на них и не смотрит
Перерасход ресурсов — верный признак плохого качества.
0
смотря что считать перерасходом.
аватар, например, с такой точки зрения тоже пустой перерасход ресурсов. причем чисто на рюшечки и картинку. и что, плохое качество? или волки в апокалипсисе (кажется), где каждый волосок был простроен в коротком эпизоде. еще больший перерасход ресурсов. который (эффект) даже не все и заметили.
0
Кто определяет, что это именно перерасход ресурсов? И каким образом?
0
Кто определяет, что это именно перерасход ресурсов? И каким образом?
Любой пользователь определяет. Если он нажал кнопку, а программа тупит, значит программа плохая.
0
Сложность выполняемой задачи не в счет? И потом, откуда известно, что тупит программа, а не, скажем, винда или работающий антивирус?
0
Сложность выполняемой задачи не в счет?
Сложность задачи пользователь оценить способен. Например, скопировать несколько файлов в "\Program Files". Если программа тупит пол часа показывая десяток прогресс баров, вроде «сбор информации», «инициализация», и т.п. Причём после каждого требует тыкать «Next >», причём другая программа делает тоже самое за секунду, пользователь может сделать вывод, что первая программа — плохая, а вторая — хорошая. Сколько не говори про функциональность. Notepad выполняет замену в большом файле за минуту, а Notepad++ — за секунду. Firefox последней версии запускается 5 секунд, 3.6 — за секунду, и можешь сколько угодно доказывать, что там больше функционала, вроде закруглённых CSS-3 уголков — не нужно быть особым специалистом, чтобы понять, что это лажа.
И потом, откуда известно, что тупит программа, а не, скажем, винда или работающий антивирус?
Потому что другая программа не тупит. А система оптимизирована под максимальное быстродействие, все антивирусы, центры безопасности, службы индексирования, восстановления системы и прочие тормоза давно удалены.
0
Сложность задачи пользователь оценить способен.
Далеко не всегда.
Например, скопировать несколько файлов в "\Program Files".
С чего вы решили, что тупит именно программа?
Потому что другая программа не тупит.
Это ни о чем не говорит. Иначе разлеглись данные в дисковом кеше и все, программа, которая не тупила вдруг начинает тупить, а «тормоз» реагирует мгновенно.
система оптимизирована под максимальное быстродействие
В винде это больше для галочки.
0
Далеко не всегда.
В случае с бытовым софтом — всегда.
Иначе разлеглись данные в дисковом кеше и все, программа, которая не тупила вдруг начинает тупить, а «тормоз» реагирует мгновенно.
В единичном случае, может быть. При сколько-нибудь продолжительном использовании всё становится очень ясно.
В винде это больше для галочки.
Ну как сказать. У мя на компе винда летает. Пользоваться чужим компом иногда невыносимо, когда система «нетороплива» и загажена.
0
пользователь может сделать вывод, что первая программа — плохая, а вторая — хорошая
Разве что глупый пользователь, не представляющий, сколько скрытых грабель в процессе инсталляции и не натыкавшийся на проблемы от «быстрого» инсталлятора, не учитывающего эти тонкости.
Notepad выполняет замену в большом файле за минуту, а Notepad++ — за секунду.
При этом N++ раз в стопицот тяжелее и сложнее. Просто сцинтилла быстрее ричэдита (и сложнее, заодно).
Firefox последней версии запускается 5 секунд, 3.6 — за секунду
ЛПП, стоит закрыть его с десятком вкладок и поставить пару плагинов — и в следущий раз он минуту стартует и столько же вкладки прогружает. Правда, у меня вроде не 3.6 был, а 3.5.
0
Я вижу, что на полезный выхлоп они и тратятся. «Гламурные» интерфейсы меня раздражают (в основном своей нестандартностью и отличием от системного look'n'feel, к скинам самой винды это не относится), но расход на их поддержание — в худшем случае 1% от потреблемого программой.
0
Да, программа стала тяжелее. Но за счет того, что у неё основные функции вынесены на передний план, пользователю достаточно одного клика мышкой, для выполнения задачи. И нет необходимости вводить в командной строке сотни символов.
В итоге, не смотря на общий рост потребления ресурсов програмным обеспечением, мы достигаем цели за меньшее время, с меньшими затратами и с большим комфортом.
Что, проведя аналогию, соответствует «из точки А в точку Б мы доехали в удобстве, в кондиционером, израсходовав гораздо меньше топлива». При этом нам не потребовалось быть автомехаником и предварительно прикрутить колеса, да поменять свечи.
0
Да, программа стала тяжелее. Но за счет того, что у неё основные функции вынесены на передний план, пользователю достаточно одного клика мышкой, для выполнения задачи.
И ты сам в это веришь? По-моему, тормоза программы не имеют ни какого отношения к полезной работе. Ресурсы компа это как деньги. Если кажется, что их много, то скоро не будет. Если же расходовать экономно, можно получить хороший результат.
0
Если же расходовать экономно, можно получить хороший результат.
Тогда весьма странно, что вы продолжаете пользоваться виндой, которая в силу конструктивных особенностей использует ресурсы гораздо менее экономно.
+1
Тогда весьма странно, что вы продолжаете пользоваться виндой, которая в силу конструктивных особенностей использует ресурсы гораздо менее экономно.
Во-первых, из-за аккуратного GUI, которым больше ни одна ОС не обладает, во-вторых, из-за хороших программ, которые под винду есть.
0
Во-первых, из-за аккуратного GUI, которым больше ни одна ОС не обладает
Гуй сам по себе не экономное использование ресурсов. Да и натянуть виндоподобную тему на линуксовый гуй не проблема вовсе.
во-вторых, из-за хороших программ, которые под винду есть.
Во-первых, под линух хороших программ ничуть не меньше. Во-вторых, этими словами вы сами признали, что нерациональное использование ресурсов вам пофиг если есть нужная вам функциональность.
+1
Да и натянуть виндоподобную тему на линуксовый гуй не проблема вовсе.
Гуй — это целая экосистема. Натянуть-то не проблема, но это будет жалкое подобие, ни визуально, ни подходом даже не близкое. Тема не вернёт быстродействия, настраиваемости, расположения кнопочек и прочего.
Во-первых, под линух хороших программ ничуть не меньше.
По моим наблюдениям, может и не меньше, но количество значительно опережает качество. Не редко линуксоиды предлагают вместо программки, которая под виндой развивалась десяток лет, поделку, слепленную на какомнить сраном qt за вечер (нет, применение новомодного фреймворка не позволяет повторить функциональность, качество, быстродействие, и прочие достоинства над которыми авторы трудились 10 лет). По моим наблюдениям, сколько честного труда вложено в вещь, настолько она хорошая. Иначе не бывает.
Во-вторых, этими словами вы сами признали, что нерациональное использование ресурсов вам пофиг если есть нужная вам функциональность.
Не только функциональность, но и качество, аккуратность, быстродействие
0
Тема не вернёт быстродействия, настраиваемости, расположения кнопочек и прочего.
Уж что-что, а никсы настраиваются вдоль и поперёк. Что хотите — то и получите, при соответствующем подходе.
0
Гуй — это целая экосистема. Натянуть-то не проблема, но это будет жалкое подобие, ни визуально, ни подходом даже не близкое. Тема не вернёт быстродействия, настраиваемости, расположения кнопочек и прочего.
Вы не поверите, но все будет.
Не только функциональность, но и качество, аккуратность, быстродействие
Не смешите меня, у вас ключевая часть всей системы нерационально использует ресурсы. На фоне этого «качество, аккуратность, быстродействие» могут быть только самовнушением.
0
Не смешите меня, у вас ключевая часть всей системы нерационально использует ресурсы.
Я недавно попробовал какую-то убунту (последней версии, чистую) на виртуалке, она грузилась омерзительно долго и интерфейс был крайне не отзывчив. XP на той же виртуалке грузилась за 5 секунд, реакция GUI не превышала 0,1с. Убунта предложила обновиться, я согласился, она совсем зависла. Думал, ради лулзов, пока бубунта будет приходить в себя, загрузить XP, запустить IDE и набрать простенькую программку. Правда вроде убунта совсем зависла, а соревноваться с трупом расхотелось.
0
Я недавно попробовал какую-то убунту (последней версии, чистую) на виртуалке
Вы уж извините, но эти басни вы можете рассказывать кому-то другому, но не мне.
0
Вы уж извините, но эти басни вы можете рассказывать кому-то другому, но не мне.
Тем не менее. Win9x..Win7, MACOS-X летают, а убунта тормозит.
0
Вы действительно думаете, что это говорит что-либо об убунте? О том, насколько правильно сконфигурена виртуалка и насколько хорошо она поддерживает гостевую операционку — говорит. О самой операционке — ни слова. Вот то, что винда в виртуалке под линухом работает быстрее чем на том же компе сама по себе — говорит. А то, что вы «пробовали» — нет.
0
Ну убунта в виртуалке (толи вм, то ли вб, не вспомню уже какая у меня стояла последней) действительно тормозит, когда ей конфигу не верную ставишь. У меня достаточно напряжно шевелилась, и сборка ядра для роутера на самом роутере шла в разы быстрее чем в виртуалке. И обновления из виртуалки тоже достаточно тормозят.
Ключевой момент вы поняли.
0
Я не только верю, но и пользуюсь постоянно, и ощущаю на себе. Разработка в более тормозной среде у меня занимает меньше моего времени (а не это ли самый ценный ресурс?), нежели в более скоростной, но менее функциональной.
Просто надо отбросить свою предвзятость и попробывать в деле.
0
Просто надо отбросить свою предвзятость и попробывать в деле.
Ну это ж еще разбираться нужно, думать, напрягаться. Зачем, если гораздо проще обозвать это тормозным говном и по старинке наляпать в нотпаде индусского говнокода, обозвать это «правильным инженерным подходом» и поплевывать свысока на тех, кто поступает иначе. Разбираться и думать почему они поступают иначе тоже лень. Все ведь и так понятно, любой пользователь знает почему программы тормозят — это программисты виноваты.
0
и по старинке наляпать в нотпаде индусского говнокода, обозвать это «правильным инженерным подходом» и поплевывать свысока на тех, кто поступает иначе
Если индусский говнокод работает быстро, не глючит и делает своё дело (не занимаясь посторонними вещами), то это действительно правильный подход. Если ваши оопы и прочие новомодные методы не дают подобного результата, то они действительно говно.
0
Если индусский говнокод работает быстро, не глючит и делает своё дело (не занимаясь посторонними вещами), то это действительно правильный подход.
Он работает быстро пока невелик по размерам и функциональности. Не глючит если пользоваться им в пределах проверенной автором функциональности. А неправильность подхода вылазит сразу же, как только потребуется в нем что-то изменить.
Если ваши оопы и прочие новомодные методы не дают подобного результата, то они действительно говно.
Слава Богу подобного результата они не дают. Они дают значительно лучший результат. Но для этого надо учиться, разбираться и думать.
+1
Он работает быстро пока невелик по размерам и функциональности.
Игры работают быстро, хотя они довольно сложны. Очевидно, потому что игра — опциональный софт, и если игра тормозит — она отправится в корзину (даже если авторы начнут петь про функциональность, это никого не убедит, поэтому игры делают просто быстрыми). Какойнить ворд, который считается стандартом, тормозит, глючит, но из-за отсутствия альтернативы, приходится, скрипя зубами, юзать. Впрочем, басни про функциональность тоже ни кого не убеждают.
0
Игры работают быстро, хотя они довольно сложны.
Игры таким способом как я описал не пишут. Там, как раз, ооп и прочие столь нелюбимые вами вещи, в полный рост.
Какойнить ворд, который считается стандартом, тормозит, глючит, но из-за отсутствия альтернативы, приходится, скрипя зубами, юзать.
Кем он считается стандартом?
0
Обливион, CS 2.0, Quake 4, Линейка. Эти игры были жытчайшими тормозами на «современном железе», но что-то я не заметил, что бы любая из них «отправилась в корзину».
0
Равно как и Doom и Descent. Такие игры пишутся на пределе возможностей железа (а часто вообще под железо, которое появится только через несколько месяцев) и так было всегда, насколько я могу вспомнить.
0
Только под ПК. На консолях игры пишутся под имеющееся железо и как правило, раскрывают его потенциал на 100% только к концу жизни платформы. Особенно на таком странном железе, как Nintendo 64.
0
Крусис забыл. Да и FarCry от тех же ребят, кто-то из игрожуров жаловался «мы заготовили под скорый релиз DooM3 самый мощный комп, а тут вышел фаркрай и уже тормозит».
Алсо, что за CS 2.0? вроде уже на момент CS 1.5 компы давно с легкостью прожевывали его требования, а движок как был от HL1, так и остался. CS:S тоже был довольно шустрый, Source ИМХО самый быстрый движок в своем поколении.
0
сорс и имею ввиду. там движек, на сколько я знаю, второй халфы. Да, компы тянули, но не большие баталии. Ситуация там та же что и с квакой четвертой — играть коекак ещё можно, но только если твы не сервер.
ЦС и кваку я имею ввиду сетевые режимы, на прохождение я в них не играл.
0
Ну хз. Сервер может и тормозил, но сама игра бегала хорошо. Хотя, насколько я знаю, CS:S еще долго не могла вытеснить CS. Сам я в КС почти не играл (я поклонник синглплеера и HL), но первый все же нахожу повеселее.
0
Ну и кстати, Q4 здесь не к месту. На современном железе тормозил DooM3, особенно утекшая альфа. На момент выхода Q4 современное железо уже справлялось с движком id Tech 4.
Еще были такие игры как Gothic 3. ЕМНИП, тормозила именно из-за плохой оптимизации и косоруких кодеров.
0
Игры работают быстро, хотя они довольно сложны.
Да, сложны. Поэтому их разработчики на С даже не смотрят (теперь — даже Кармак), да и на С++ нос морщат — ООП уже недостаточно, а странной плюсовой модели — тем более. Epic Games проявляли интерес к Хаскелю. И они же, кстати, говорили, что охотно жертвуют 10% производительности в пользу 10% облегчения разработки. При этом UE3 — двиг довольно быстрый для своего поколения. Правда, говорят, с точки зрения архитектуры он страшный.
-1
Вторая квака, на сколько помню, не содержит плюсов. Треьтя не уверен, сорцы не втыкал.
0
Движки Кармака вплоть до id Tech 3 (Quake 3) написаны на чистом С из соображений оптимизации (хотя насколько я знаю, Tech 3 уже имел ООП-подобную архитектуру, реализованную средствами С), начиная с id Tech 4 (DooM 3, Quake 4) — С++. Я же не зря уточнил — "теперь — даже Кармак".
Про недостаточность плюсов и Хаскель инфа из презентации Тима (или Тома, не помню уж) Свини из Epic Games, насчет полученного в процессе создания UE3 и Gears of War опыта и проявившихся при этом недостатков С++, которые развитием железа будут только усугубляться.
0
P.S. Ну и вторая, да и третья квака — игры старые, очень старые. Сложность с тех пор выросла минимум на порядок, так что приводить их в сравнение смысла нет. А то этак можно вспомнить времена, когда для написания игр и ассемблера хватало.
0
Они дают значительно лучший результат.
Угу, только системные требования, отзывчивость интерфейсов, количество падений и другие объективные показатели не согласны.
Не глючит если пользоваться им в пределах проверенной автором функциональности.
Несмотря на всякие там юнит- и другие тесты, стоит любой новомодной софтине задать нетипичные настройки или слишком быстро тыкнуть пару кнопок — тоже упадёт. Без всяких продвинутых тестов, при ручном тестировании, автор обычно не забывает про любые ситуации (точнее, просто предусматривает все возможные ситуации в коде, не надеясь на «продвинутые методики тестирования»).
0
Угу, только системные требования, отзывчивость интерфейсов, количество падений и другие объективные показатели не согласны.
С вами — да.
Несмотря на всякие там юнит- и другие тесты
Вот когда их там нет, получается именно то, что вы описали.
Без всяких продвинутых тестов, при ручном тестировании, автор обычно не забывает про любые ситуации (точнее, просто предусматривает все возможные ситуации в коде, не надеясь на «продвинутые методики тестирования»).
Ну так что, продемонстрируете свои подходы на практике или будете дальше продолжать учить как писать софт?
+1
индусский говнокод работает быстро, не глючит и делает своё дело
Ровно до момента расширения его функционала. Пока его задача «сложить 2 да 2», он работает, но как только задача становится «сложить 2 да любое число» он тут же терпит крах. Он оказывается не готов к такому повороту событий «кто бы мог подумать, что к надо складывать не только 2 да 2». Он совершенно неподдерживаемый «кто бы мог подумать, что код прийдется дорабатывать». Дальше уже писал.
0
Ответ Liflover-а наверное должен выглядеть так:
Ну что вы, как такое может случиться, автор же предусмотрел все возможные ситуации и руками их протестировал! Это наверное в этот индусский говнокод юниттесты затесались и все испортили!
0
Подождите Вы. Я ещё жду, что он ответит про кваку четвертую, писанную с ооп и именно по этой причине тормозящую :)
0
Я ещё жду, что он ответит про кваку четвертую, писанную с ооп и именно по этой причине тормозящую :)
У меня квака четвёртая вообще не запустилась. Впрочем, с помощью OllyDbg за вечер я её излечил. Тем не меннее, мне она тогда не понравилась и я её бросил проходить.
0
Бросили вы, бросил я. Из моих наблюдений, где-то 3 из 20 в то время её бросили. А вот играть начало ещё в районе десятка. В итоге чистый плюс, и ни какой корзины.
Но что мы видим: лично вы же бросили, значит всё — программа говно, программисты бездари, маркетологи козлы,… А вы белый и пушистый центр вселенной.
0
Насколько я знаю, Q3 тоже имеет ООП-образную архитектуру. Только все ручками, на С.
0
и нахера очередной блокнот?
0
если я и родной запускаю очень редко.
0
Угу. Когда меня жизнь заставляет что-то делать в винде, одна из первых программ, которую я ставлю — notepad++. Увы, он не подходит livelover-у, поскольку регулярно предлагает обновиться.
0
ну, с npp я еще поспорю, т.к. в итоге он выродился в недоIDE. для просто текста предпочитаю акелпад, который в моей сборке тотала валяется и привязан.
но да, по такому признаку npp — тормозное ужасное нечто, постоянно требующее обновлений :)))
0
Ну, для просто текста вариантов много. Мне нравится Bred 2. Но Notepad++ у меня занимает место смотрелки сорцов. При всех плюсах Galileo меня страшно ломает ждать, пока оно запустится, если я всего лишь хочу посмотреть пару функций в foo.pas. Но и без подсветки синтаксиса смотреть ломает тоже.
0
для сорцов:
а) есть плаги к листеру с подсветкой синтаксиса и даже темами
б) EditPlus. не лучше и не хуже npp, просто давно уже у меня прижился.
0
Листер я не использую уже по той причине, что моим потребностям гораздо лучше соответствует Windows Explorer, а не Total Commander. Да и странно, зачем тебе в таком случае AkelPad? Есть же листер.
0
Да и странно, зачем тебе в таком случае AkelPad? Есть же листер.
листер — посмотреть. акелпад — по-быстрому подправить пару буковой не вываливаясь из тотала. ну и акел чуть дольше стартует.
0
Ну, сорец иногда и подправить надо. Опять же, не запуская IDE — некоторые исправления быстрее вносятся в блокноте, чем стартует IDE.
0
ну я и говорю. листер — чисто посмотреть. акел — подправить по-быстрому.
0
Я не могу юзать акел для «быстро подправить». Блокнот пошустрее запускаеться, а подсветка в таком случае мне не нужна. Для просмотра тоже предпочитаю встроенный листер. Таким образом акел у меня не прижился.
0
Его обновления и мне не нравятся, по этому я юзаю стандартный блокнот, или эклипс.
0
Это не блокнот, а блокнотик — средство для иерархического хранения заметочек, ссылочек, и подобных кусочков. Кстати, поскольку для ведроида нет подобной программки, он бесполезен.
0
хм. для этого есть более адекватные инструменты. впрочем, их вы опять изгадите эпитетами. так что называть не буду. ;)
0
С нормальным бэкапом, оффлайновым хранением, иерархической структурой, таким же аккуратным интерфейсом, не начинающие дико тормозить при увеличении БД до сотни килобайт? Не особо верится. Но если есть, то это, возможно, повод многое пересмотреть)
0
С нормальным бэкапом, оффлайновым хранением, иерархической структурой,
да
таким же аккуратным интерфейсом,
да. но мое и ваше понимание аккуратности интерфейса слегка отличаются.
не начинающие дико тормозить при увеличении БД до сотни килобайт?
сотен МЕГАбайт. и даже гиг.
Не особо верится
бывает.
Но если есть, то это, возможно, повод многое пересмотреть)
вам — точно. только не зацикливайтесь на блестящем корпусе. смотрите вглубь и вширь.
0
да
Возможно. Только никто не видел.
0
вы сильно себе льстите, ставя «все == Lifelover». :)))
webresearch, например. бекап средствами мсскуля, оффлайн по определению от него-же, иерархия искаропки, интерфейс вроде в пределах вашего видения аккуратности. размер базы — исключительно от MSSQL со всеми вытекающими.
0
webresearch, например.
Зачем мне это всё, тем более платно? Мне нужна маленькая программка для хранения заметочек, рецептов, советов, цитаток, а не большая хрень, оптимизированная для снапшотов страниц.
0
хм. вас никто не заставляет снапшотить страницы. заметки создаются легко и непринужденно.
0
а про платность — не смешите мои яйца… :)))
0
Я принципиально предпочитаю открытые и бесплатные программки. К тому же, они обычно маленькие, аккуратные и хорошие, поскольку написанное JFF в настоящее время гораздо лучше, чем коммерческое, которое сделано так, чтобы создавать впечатление «солидности» (так, как это понимает 95%, разумеется).
0
если не страшно, покажите

dir "c:\program files\"
dir "c:\program files (x86)\"

а потом поговорим про предпочтение бесплатных програмок.
0
dir «c:\program files\»
Это ничего не скажет о том, чем я пользуюсь, а что установлено ради разового или редкого использования. К тому же основные программки у мя в d:\prog и d:\user\bin.
0
и опять уходите от ответа на неудобный вопрос.
0
У меня из платных программок только винда и M$VS 2003. Actrix 2000 — условно-платная, поскольку она давно выкуплена и похоронена конкурентами, чтобы не мешалась и её всё равно не купишь, но сама программка более чем хорошая. Больше платных программок нету (совсем).
0
студию с виндой покупали?
0
<Lifelover-mode>
Эти ужасные непонятные иконки, на кого они расчитаны? На телепатов, которые догадаются, о чем думал автор когда их рисовал? Кому вообще это тормозное жирное глюкало нужно? Без многогигабайтного довеска в виде винды оно вообще не живое. И в клауде хранить информацию не умеет. Мне что, базу за собой на флешке таскать?
</Lifelover-mode>
0
:))))))
0
И в клауде хранить информацию не умеет.
Нужен клауд — положил файл БД в дропбокс и данные в клауде. Программа должна делать только своё дело, но должна делать его хорошо. А не наоборот.
0
Нужен клауд — положил файл БД в дропбокс и данные в клауде.
Ага. А потом на одном компе забыл выйти из программы, на другом открыл и все, имеет испорченную базу, все «нажитое непосильным трудом» ушло лесом.
Программа должна делать только своё дело, но должна делать его хорошо.
У меня пока никаких оснований полагать, что она его делает хорошо. И даже что она его вообще делает.
0
А потом на одном компе забыл выйти из программы, на другом открыл и все, имеет испорченную базу, все «нажитое непосильным трудом» ушло лесом
Нет.
У меня пока никаких оснований полагать, что она его делает хорошо.
А у мя есть.
0
Нет.
Что «нет»? Где гарантия, что все всегда будет хорошо, если программа не учитывает такой ситуации? И это я еще упомила о вариантах «поправил пока был в оффлайне на одном компе, а потом поправил на другом». Полагаете Dropbox должен знать все форматы и правильно их мержить? Даже если предположить, что ничего не пропадет и дропбокс создаст conflicting change файл, то мержить руками две базы неизвестного формата мне как-то не улыбается.
0
все «нажитое непосильным трудом» ушло лесом
Впрочем, если сделаны изменения на втором компе, перезагрузить данные на первом компе придётся. Но мне это больше нравится, чем хранить «нажитое непосильным трудом» непонятно где, рискуя всё потерять, в случае проблем на сервере или не иметь доступа при проблемах с инетом.
0
Но мне это больше нравится, чем хранить «нажитое непосильным трудом» непонятно где
Ничего не мешает хранить понятно где, у надежного провайдера таких услуг. А риск потерять на собственном компе ничуть не меньше, если не больше.
0
А риск потерять на собственном компе ничуть не меньше, если не больше.
Но то, что происходит на моём компе зависит от меня. Я хочу сам делать бэкапы, а при проблемах с инетом (или при работе на компе без инета) иметь возможность таскать базу на флешке. Я вообще не считаю наличие инета вариантом по умолчанию.
0
Но то, что происходит на моём компе зависит от меня.
Святая наивность…
Я хочу сам делать бэкапы, а при проблемах с инетом (или при работе на компе без инета) иметь возможность таскать базу на флешке.
Бекапы куда? Вы уверены в том носителе, на который они делаются? Сколько копий одного бекапа вы храните?
Я вообще не считаю наличие инета вариантом по умолчанию.
Не путайте «уметь хранить в клауде» с «обязательным наличием инета». Тот же упомянутый вами дропбокс вполне без инета работает, со вполне понятными ограничениями.
0
Зачем мне это всё, тем более платно? Мне нужна маленькая программка для хранения заметочек, рецептов, советов, цитаток

Ну вот, очередной скриншот очередной программы в качестве аргумента.

Правильно заметил angel5a «Вам на форум веб-дизайнеров». Какой смыл на данном ресурсе обсуждать особенности дизайна отдельно взятой программы?
0
и больше не нуждается в обновлениях
составление планов действий (мероприятия, работы)
(plain text)
Уже из описания я вижу противоречие. Где возможность выделить цветом/болдом? Это не гламур, дэто достаточно полезная возможность расстановки приоритетов. Выделить текст и нажать кновпу фыделения цветом, гораздо быстрее чем переносить строки в нумерованном списке.
Известные неполадки:
Это не баг, это фича!
Обновление необходимо, просто вы его не хотите признать это и сделать.
0
Лучше поинтересоваться этим у адоба и тормозиллы.

Вот, Вы опять уходите от конкретного ответа на вопрос. Мне, вот, тоже интересно как Вы разрабатываете ПО, как его тестируете, как поддерживаете.

А то Вы просто поливаете все говном. Та программа глючит, а та – тормозит. Для того, чтобы так «критиковать» — не нужно много знаний. Я так тоже так могу критиковать что угодно, не погружаясь в тематику (далее сарказм):
— все мед. работники сволочи, они даже не научились лечить банальную простуду
— разработчики автомобилей – тоже сволочи, до сих пор нет нормального летающего автомобиля с автопилотом
— работники аэрокосмической отрасли – тоже, безусловно, сволочи, я до сих пор не могу позволить себе пройтись пешком по марсианскому грунту
— и т. д.

Просто так поливать все говном – это просто, тяжело вникнуть в конкретную проблему и предложить свой вариант решения.

А у Вас все сводиться к «раньше все было правильно, а теперь все не так». Что Вам сейчас мешает отказаться от современных технологий? Не нравится Вам новый Mathlab – не покупайте, используйте предыдущую версию. Заодно и деньги сэкономите.
+1
Вам на форум веб-дизайнеров. Там вам подробно и досканально объяснят, что дизайн должен быть единым.
p.s.: Я так и вижу, как вин2к иконка пользователей соседствует с устройствами и принтерами восьмерки. А вообще круто будет воткнуть туда 16х16 иконки вин 3.1 растянутые до 64х64 для лучшего отображения на экране 24 дюймового монитора. Закругленные уголки не удобно, даешь пиксилезацию в лучших традиция 8-мибитных приставок!
0
Требование — чтобы делало, делало побольше и поудобнее. Идеальный интерфейс, как известно, даже не единственная кнопка «сделай заебись», а полное отсутствие интерфейса. К сожалению, приходится закатывать губу и пользоваться тем, что позволяет развитие технологий.
+1
Идеальный интерфейс, как известно, даже не единственная кнопка «сделай заебись», а полное отсутствие интерфейса
Угу. Одна-единственная кнопка «сделать хорошо» :)
0
Кнопка не нужна. Оно само должно делать хорошо. Кстати, недавно на эту тему на хабре неплохая заметка была)
0
Оно само должно делать хорошо
Только кому хорошо? Современный софт уже делает хорошо — своим авторам и маркетологам.
0
Современный софт уже делает хорошо — своим авторам и маркетологам.
Если бы современный софт не делал хорошо пользователям (в первую очередь), то авторы и маркетологи давно бы пошли по миру.
+1
Из всех этих утверждений верно только последнее.
Вот Матлаб:


Ну, если это улучшение, то всё ещё куда хуже, чем я думал…
0
лент инструментов, которые занимают на экране полезное место и не убираются.
а воон ту стрелочку в правом верхнем углу не заметили? бывает.
0
а воон ту стрелочку в правом верхнем углу не заметили?
Нажал первым делом, только эта стрелочка — исключение, а не правило. Мог бы и понять, если бы не цеплялся к каждому слову, пропуская суть.
0
это как раз правило для лент.
0
Вообще-то, лента сворачивается в строчку а-ля строка меню при клике на заголовок открытой вкладки. Так что не в кассу. Другое дело, что лично мне тяжелее искать нужную функцию, чье местонахождение я не знаю, на ленте, чем в меню или на тулбаре. В меню не требуется проверять тултип каждой кнопочки, а на тулбаре меньше кнопок и не нужно переключать вкладки. Правда, если выучить сей интерфейс — то, вероятно, он будет удобней.
0
вот и приходим, что это только вопрос привычки.
0
Не совсем. Требующий изучения/запоминания интерфейс удобен в проге, которой пользуешься ежедневно. А для эпизодически используемых требование другое — чтобы в нем можно было разобраться «на месте», с наскока (интуитивно понятный и все такое). Но стоит заметить, что обычно 90% софта (прие для каждого конкретного юзера это свои 90%) — именно используемый эпизодически. Для меня, например, Word — эпизодически используемый, а Delphi — постоянно. ри этом, ИМХО, у дельфи интерфейс интуитивно понятней (ну, насколько я помню первое с ним знакомство).
0
изучать интерфейс при первом знакомстве с новой прогой приходится в любом случае.
0
Ну согласись, что изучение интерфейса mencoder и MediaCoder — совершенно разные вещи)
0
дык, привел две крайности. :)
0
Новым матлабом не пользовался, но R13 имел жуткий интерфейс.
0
А мне вот такой интерфейс нравится:
Панель сбоку, а не сверху — мониторы то давно уже не квадратные.
+2
Если отбросить рюшечки, окажется, что он просто вызвал то, что «писала бригада из полудесятка программистов на протяжении полугода».
Нет.
Причём врядли даже сможет вызвать нормально и правильно обработать ошибки.
За него это сделает визард. И вызовет правильно, и ошибки обработает.
Подавляющее большинство подобного софта вы тоже врядли видели вживую, хотя его изрядно и он вполне решает задачи для которых создавался.
Это не отменяет того, что те же самые вещи (вроде операционных систем) становятся всё хуже и кривее, интерфейсы уродливей, а системные требования растут по экспоненте.
Распределённые вычисления — не продукт современных «методов» программирования, этим занимались с тех пор, как появились первые компьютеры.
Заниматься-то занимались, вот только практического применения было весьма мало, как раз в силу возникающих сложностей. Я ж не зря вам посоветовал поинтерсоваться CAP theorem. Эта теорема была сформулирована в 2000-м и в 2002-м доказана. Да и подавляющее большинство неблокирующих алгоритмов для многопроцессорных систем появились в конце 90-х. Распределенные очереди, семафоры и прочее тоже, вобщем, свежак, поскольку непосредственно связано с CAP theorem.
0
те же самые вещи (вроде операционных систем) становятся всё хуже и кривее
Интересно, вы действительно думаете, что если повторять глупость достаточно часто она станет правдой?
0
Интересно, вы действительно думаете, что если повторять глупость достаточно часто она станет правдой?
Нет, не станет. Как и новомодный софт не станет менее дерьмовым.
0
Нет, не станет.
Тогда зачем вы ее повторяете?
Как и новомодный софт не станет менее дерьмовым.
Для вас — вполне может быть. Думаю IT переживет потерю одного пользователя в вашем лице.
0
Какое ваша личная неприязнь к «простым интерфейсам» имеет отножение к «качественному ПО»? Тот же убунту вполне ставится без гламура — только консоль, только хардкор. И это не говоря о том, что линуксы то разные бывают, не одним убунту живем.
Вообще каким макаром из-за гламура (GUI) получается херовый ООП (средство создания этого GUI)? Как вы сделали такой вывод?
0
да он в соседнем обсуждении признал, что и ему оверкилл не чужд, а на линухи не пойдет. ;)
0
Вот например, это:
Это вопрос не ООП, а построения интерфейсов и эргономики. Стоит отметить, 99% программистов в этих областях разбираются просто отвратительно. И еще вопрос, какой из интерфейсов хуже…
+1
Кстати да. Когда программисты пишут интерфейс на свое усмотрение, то, как правило, получается что-то вроде классического автокада с очень мутным гуем и мощной командной строкой.
+2
Когда программисты пишут интерфейс на свое усмотрение, то, как правило, получается что-то вроде классического автокада с очень мутным гуем и мощной командной строкой
Современные «интерфейсы» куда хуже. Начиная от идиотских лент инструментов, которые занимают на экране полезное место и не убираются.
0
Современные «интерфейсы» куда хуже. Начиная от идиотских лент инструментов, которые занимают на экране полезное место и не убираются.
Современные интерфейсы растут из стандартов конца 80-х и начала 90-х, если вы не в курсе. А стандарты появились задолго до «засилья».
0
Странные у вас представления об аккуратном интерфейсе.
Не могл бы вы продемонстрировать вторые экраны представленных средств?
0
Win 8 же выдаёт одно бесполезное сообщение и предлагает «искать решение проблемы в интернете»
Все правильно делает. Дамп абсолютно беполезен 99% пользователей (в том числе солидной части программистов, чужую прогу я отлаживать не хочу, а свою проще запустить под дебаггером, чем дамп раскуривать). Кроме того, для разработчиков наверняка предусмотрена возможность получить тот самый дамп. Без особых неудобств, но скрытая с глаз тех, кому это не нужно.
метро-интерфейсы и дёрганья за заголовок окна — это не функционал, а мешающий мусор
Если учесть, что этот «мусор» похоронил PPC и вознес iPad/Android — стоит десять раз подумать, прежде чем назвать его «мусором».
+2
надёжное как правило написано на Си и чуть ли не в блокноте

Ну, с Вашими доводами относительно «написано на Си» мы знакомы, но вот чем Вас так IDE не устраивает? Код написанный в блокноте боле качественный чем код написанный в IDE? Нет, ну писать код в блокноте конечно можно, но вы просто лишаете себя удобных инструментов по работе с кодом, которые предоставляют нормальные IDE. Чем больше проект — тем больше отдача от удобства использования таких инструментов.

ИМХО Ваш подход: «минимализм ради минимализма». Давайте пойдем дальше: «программа написанная в машинных кодах в HEX редакторе работает лучше чем программа на С написанная в блокноте», «плата спаянная с помощью старого советского паяльника надежнее чем плата спаянная паяльной станцией»…
+2
Важно не в чём написано, а кем написано. У хорошего специалиста код такой, что ему совершенно не требуются костыли типа ORM-генераторов или рефакторинга, более того, хороший код не может нуждаться в подобных костылях.
0
У хорошего специалиста код такой, что ему совершенно не требуются костыли типа ORM-генераторов или рефакторинга, более того, хороший код не может нуждаться в подобных костылях.
Обозвать рефакторинг «костылем» это 5. Если вы не в курсе, рефакторинг, это, как раз, то, что хороший специалист делает практически постоянно, что бы привести код к тому виду, который вы так восхваляете (ничего, впрочем, не понимая в этом).
+1
Важно не в чём написано, а кем написано.

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

Касательно рефакторинга – зря Вы так. Это один из ключевых моментов в разработке ПО. И эти занимаются абсолютно все, просто не все понимают, то это и есть рефакторинг. Когда программист, в процессе расширения функциональности кода, решает вынести часть существующего кода в отдельную процедуру – это и есть рефакторинг. Как бы Вы изначально не продумывали архитектуру/структуру кода – Вы не можете избавится от необходимости рефакторинга, т. к. не всегда заранее известно как в дальнейшем будет развиваться проект.
0
Когда программист, в процессе расширения функциональности кода, решает вынести часть существующего кода в отдельную процедуру – это и есть рефакторинг.
И не только это. Вариантов рефакторинга море. Но, как вы верно заметили, далеко не все понимают, что это такое и что этот процесс так называется.
Как бы Вы изначально не продумывали архитектуру/структуру кода – Вы не можете избавится от необходимости рефакторинга, т. к. не всегда заранее известно как в дальнейшем будет развиваться проект.
Причин для рефакторинга бесчисленное множество. И это не только развитие проекта. Банальное переименование переменной — рефакторинг. Вообще любое изменение в коде не изменяющее функциональность это, чаще всего, именно рефакторинг.
0
Причин для рефакторинга бесчисленное множество.

Я понимаю это, и согласен с Вами. Я просто привел самый простой и банальный пример, то, с чем приходится сталкиваться любому разработчику.
0
Причин для рефакторинга бесчисленное множество.
Думаю, перичина всех этих причин — обычная недисциплинированность.
0
первопричина*
0
Не порите чушь, ей больно.
0
А вы не в курсе, что рефакторить приходиться именно старый код, написанный на чистом Си?
0
*за частую
0
Угу, а то слишком маленький и слишком быстро и хорошо работает.
0
Угу, а то слишком маленький и слишком быстро и хорошо работает.
Ключевое условие рефакторинга — программа продолжает работать точно так же, как до него. Так что не порите чушь, ей больно. А старый код, как бы идеально он не был написан, передо добавлением новой функциональности практически всегда приходится рефакторить.
0
Угу, и слишком задалбывает вносить ровно одни и те же исправления в десять скопипастенных функций, с неактуальными комментариями, ошибками в вызове и совершенно недопустимым именованием переменных. Ведь работает же, че править то?
p.s.:
isOk = ReturnTrueIfFail(Italic); // Устанавливае цвет фона
И гадай, что имел ввиду тот укурок. И хорошо если ещё доберёшься до этого места.
0
Э, вы на паяльник то не наезжайте. Мой старый паяльник 25 ватные совковые резюки паяет лучше смд-станции :D
0
Совковый паяльник для совковых резюков. Логично. :)
0
В жизни маленькое и надежное, как правило написанное на Си встречается достаточно редко, так как к проектам выдвигают целый ряд требований, которые надо удовлетворить в крайне сжатые сроки и вылизывать код до идеального состояния просто нет времени.
0
Извиняюсь за орфографию)
0
Идеального не идеального, но до очень хорошего состояния код можно вылизать. Точнее, сразу его написать на таком уровне. Вот только эти методы Lifelover-у не подойдут, там напрягаться надо, думать, тесты писать (и много). Да и код писать надо с учетом тестируемости, а это, опять-таки, думать нужно.
0
Угу, и по обновлению каждую неделю выкатывать, и басни расказывать тем, кому не нравится, что программа работает всё медленнее и медленнее.
0
Угу, и по обновлению каждую неделю выкатывать,
С вашим подходом так и придется делать. Ведь «автор все предусмотрел» и «вручную протестировал».

P.S. обновления это не только фиксы. часто фиксов там нет вообще, только новая функциональность.
+1
P.S. обновления это не только фиксы. часто фиксов там нет вообще, только новая функциональность.
По словам авторов. Обычно пофиксенные баги записывают в «мелкие исправления», а каждой мелкой добавленной фиче отводят по строчке в чейнжлоге.
0
Обычно пофиксенные баги записывают в «мелкие исправления»
Нет.
а каждой мелкой добавленной фиче отводят по строчке в чейнжлоге.
Равно как и любой пофикшеной баге.
0
Только пользователь получит продукт уже сейчас, не через n лет, когда продукт максимально полно протестируют и вылижут код, а разработчик получит фидбэк, согласно которому будет развивать продукт.
Кстати, метод разработки, который Вам кажется единственно верным, называется «clean room». Данный метод применяют только тогда, когда ошибка в ПО может привести к серьезным убыткам.
+1
Очень годная ОСь. Только не понятно, что за компилятор используется. По командам можно догадаться, что это что-то в линуксе.
0
Если линукс, то компилятор практически наверняка GCC-ARM.
0
Насколько я в курсе других вариантов и нет.
0
логично. только нелогично со статьёй выходит.
сделает человек как написано, а у него ничего не получится.
т.е., совсем ничего.
0
да уж, количество костылей только для настройки ОС поражает.
то ли дело Protothreads — никаких настроек не нужно, и код с минимумом модификаций будет работать на любом другом контроллере от Attiny до Cortex-M3
0
Если не трудно, поделитесь аналогичным примером. Интересно посмотреть.
0
Дык Protothreads не совсем ОСь или совсем не ОСь))
то ли дело «монструозная» FreeRTOS.
0
Ну так и я ОСь использую не только для мигания светодиодиком. Постепенно описываю, что и как можно сделать.
0
совсем не ОСь
почему? Задачи и управление ими (start/restart/stop/spawn) — есть, таймеры элементарно добавляются, семафоры и прочее — есть (хотя в кооперативке они не нужны — все переменные атомарны по умолчанию).
0
Странно. Написано «ARMka: Инфраструктура проекта для ChibiOS/RT», а статья про гит. ):
+2
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.