• Какие язык, компилятор, среда подойдут для разработки небольшого приложения под windows?

    valemak
    @valemak
    Фрилансер
    В сторону AutoIt посмотрите.

    Лёгкий basic-подобный ЯП, как раз для написания небольших утилит под Windows.
    Ответ написан
    Комментировать
  • Булевское свойство или функция

    С точки зрения эволюции кода, безопаснее использовать, например, перечисления (enum). Не «правильнее», а именно «безопаснее», в смысле будущих модификаций.

    Вдруг (наверняка?) у вас возникнет необходимость в дополнительных способах аутентификации (OAuth например)? В случае использования перечислений (или других аналогов шаблона «визитёр» — типа case classes из Scala), среда разработки подскажет вам, где вы забыли учесть новый вариант аутентификации. Не знаю как Visual Studio, а Eclipse или IDEA выдадут предупреждение в следующем коде:
    switch (principal.getAuthMethod()) {
    case LOGIN: /* Login / password auth */
        break;
    case CERTIFICATE: /* Certificate auth */
        break;
    }
    

    как только добавится новый тип аутентификации (OAUTH). Это даст вам знать, что вы забыли учесть новый способ ещё в каком-то месте.

    Так что если IDE помогает в таком деле, то почему бы этим не воспользоваться?
    Ответ написан
    Комментировать
  • Существуют ли инструменты для быстрого прототипирования GUI под Windows?

    BuriK666
    @BuriK666
    Компьютерный псих
    Qt Designer
    Ответ написан
    Комментировать
  • Существуют ли инструменты для быстрого прототипирования GUI под Windows?

    nikel303
    @nikel303
    Pencil — http://pencil.evolus.vn/
    PC, Mac, Linux
    Ответ написан
    Комментировать
  • Как из изображения графика вытащить координаты?

    Если быстро и на коленке то:
    1) подготавливаем специальным образом изображения удаляя ненужныю информацию:



    и



    2) получаем значения граничных линий сетки, цвета сетки и графиков для подготовленных изображений:
    по x: 10 и 10000, по y: -25 и 10, сетка rgb(221,221,221), график rgb(0,0,255)
    по x: 30 и 10000, по y: 90 и 132, сетка rgb(104,104,104), график rgb(150,255,0)

    3) на питоне с помощью PIL пишем код который будет получать по предоставленным данным координаты:
    # -*- coding: utf-8 -*-
    
    from math import log10, fabs
    import Image
    
    
    def check_pixel_colour(pixel, colour, delta=(0,0,0)):
        '''сравниваем цвет пиксиля с эталонным цветом с погрешностью дельта'''
        return (colour[0] - delta[0]) <= pixel[0] <= (colour[0] + delta[0]) and\
               (colour[1] - delta[1]) <= pixel[1] <= (colour[1] + delta[1]) and\
               (colour[2] - delta[2]) <= pixel[2] <= (colour[2] + delta[2])
    
    
    def better_colour_value(pixels, colour):
        '''из списка цветов выбираем более подходящий эталонному цвету'''
        delta = 1024
        better_pixel = None
        for pixel in pixels:
            current_delta = fabs(pixel[0] - colour[0]) +\
                            fabs(pixel[1] - colour[1]) +\
                            fabs(pixel[2] - colour[2])
            if current_delta < delta:
                delta = current_delta
                better_pixel = pixel
        return better_pixel
    
    
    def get_border_grids(image, grid_colour):
        '''
        получаем номера пиксилей по оси x первой и последней линий сетки, по оси y верхней и нижней
        данные пиксили соответствуют переданным граничным значениям сетки
        '''
        width, height = image.size
        for x in xrange(width):
            if check_pixel_colour(image.getpixel((x, 0)), grid_colour):
                yield x
                break
        for x in xrange(width - 1, -1, -1):
            if check_pixel_colour(image.getpixel((x, 0)), grid_colour):
                yield x
                break
        for y in xrange(height - 1, -1, -1):
            if check_pixel_colour(image.getpixel((0, y)), grid_colour):
                yield y
                break
        for y in xrange(height):
            if check_pixel_colour(image.getpixel((0, y)), grid_colour):
                yield y
                break
    
    
    def get_linear_value(x, x1, x2, x1_value, x2_value):
        '''получаем значение для текущего пикселя с учетом граничных значений сетки для линейной оси'''
        k = (x2 - x1) / (x2_value - x1_value)
        b = x1 - k * x1_value
        return (x - b) / k
    
    
    def get_log_value(x, x1, x2, x1_value, x2_value):
        '''получаем значение для текущего пикселя с учетом граничных значений сетки для логорифмической оси'''
        k = (x1 - x2) / (log10(x1_value) - log10(x2_value))
        b = x1 - k * log10(x1_value)
        return 10**((x - b) / k)
    
    
    def process_graph(image_path, x1_value, x2_value, y1_value, y2_value, colour, delta, grid_colour):
        '''получаем список координат графика на изображении'''
        image = Image.open(image_path)
        width, height = image.size
        x1, x2, y1, y2 = get_border_grids(image, grid_colour)
        coordinates = []
    
        for x in xrange(width):
            pixels = {}
            for y in xrange(height):
                pixel = image.getpixel((x, y))
                if check_pixel_colour(pixel, colour, delta):
                    pixels[pixel] = y
            if len(pixels) > 0:
                y = pixels[better_colour_value(pixels.keys(), colour)]
                x_value = get_log_value(x, x1, x2, x1_value, x2_value)
                y_value = get_linear_value(height - y, height - y1, height - y2, y1_value, y2_value)
                coordinates.append((x_value, y_value))
    
        return coordinates
    
    
    if __name__ == '__main__':
        print process_graph('test_001.png', 10., 10000., -25., 10., (0,0,255), (10,10,50), (221,221,221))
        print process_graph('test_002.png', 30., 10000., 90., 132., (150,255,0), (50,50,10), (104,104,104))
    
    


    4) запускаем программу и получаем результаты для каждого пикселя по ox
    Ответ написан
    2 комментария
  • Опознать аккумулятор и подобрать замену?

    crrr
    @crrr
    Два вот таких параллельно www.compel.ru/infosheet/EEMB/LP604374/ емкость больше но потолще будет.
    Или у них же по каталогу подберите пару около полутора Ач и параллельно поставьте.
    Ответ написан
    1 комментарий
  • Кусочек Qt Creator'а в свой проект?

    hlamer
    @hlamer
    По поводу выдирания компонентов — у меня был похожий опыт.
    Я покусился на отладчик из Creator'а. вот. В принципе получилось, но сил было потраченно очень много. И обновляться на следующую версию Creatora у меня энтузиазма не хватило. Слишком много взаимосвязей между компонентами внутри Qt Creator.

    По поводу создания своего компонента. Уже писал в личку, но продублирую для публики, может еще кому-то будет полезно.

    В создании компонента Y очень заинтересован Filipe Azevedo aka PasNox и работает над ним здесь. Он Qt-шник крутой (черт знает сколько лет опыта, сертификаты там всякие...) и в создании текстовых редакторов у него неторый опыт есть. Присоединяйся к нему, вместе у вас лучше получится.
    Ответ написан
    Комментировать
  • Как найти файл по его типу, если расширение изменено?

    bolk
    @bolk
    Вы по-моему, просто издеваетесь тут надо всеми. В первых двух ответах вам уже дали решение.

    Вот решение:
    find /target/directory -type f -exec file '{}' \; | grep -i archive
    


    Вот нужные вам утилиты:
    gnuwin32.sourceforge.net/packages/file.htm
    gnuwin32.sourceforge.net/packages/findutils.htm
    Ответ написан
    2 комментария
  • Как повторить схему питания ноутбука?

    DmZ
    @DmZ
    Чтобы ОС видела как батарею — посмотрите в сторону стандарта Smart Battery. У многих производителей (TI, Maxim, etc.) есть микросхемы для мониторинга аккумов по этому стандарту. Подключается обычно через I2C/SMBus (на некоторых матерях есть выводы для подключения). Так же некоторые UPS притворяются Smart Battery и при USB подключении.
    Ответ написан
    1 комментарий
  • Как добавить Python-скрипт в автозагрузку?

    @stg34
    Когда у меня вроде как отлаженный скрипт не запускался из rc.local или по крону, то часто проблемой были
    1. $PATH отличный от того с которым тестировался скрипт
    2. Другие переменные окружения могут отличаться, что может приводить к неработоспособности
    3. Использование относительных путей в мкрипте вместо абсолютных. При этом скрипт не находит нужных для работы файлов и выпадает
    Ответ написан
    Комментировать