• Какие rest api вы использовали и считаете их лучшими?

    Rou1997
    @Rou1997
    Да вот нужно было мне работать с REST API Google чтобы картинки загружались в Google Cloud, а API плохое и мне не понравилось, тогда я вместо него подключил REST API Вконтакте, правда теперь картинки в Google Cloud не загружаются, зато REST API лучшее и мне понравилось!
    Ответ написан
    4 комментария
  • Django, как вытащить потомка?

    un1t
    @un1t
    Для деревьев можно использовать django-mptt, тогда можно потомков с любым уровнем вложенности вытаскивать одним запросом.
    Ответ написан
    Комментировать
  • Какая быстрая база данных для интернет-магазина с более чем 50 тысячами товаров и поиском?

    Vakiliy
    @Vakiliy
    Сделайте вложенный запрос перед использованием unnest,
    Вложенный запрос
    explain (analyze) select unnest(tags) from (SELECT tags FROM t5 WHERE tags @> array['param-1'] group by 1) as t group by 1;
                                                              QUERY PLAN                                                           
    -------------------------------------------------------------------------------------------------------------------------------
     HashAggregate  (cost=14655.30..14660.38 rows=1000 width=84) (actual time=490.721..490.722 rows=10 loops=1)
       ->  Subquery Scan on t  (cost=14647.62..14652.80 rows=1000 width=84) (actual time=490.690..490.706 rows=55 loops=1)
             ->  HashAggregate  (cost=14647.62..14647.73 rows=10 width=84) (actual time=490.676..490.676 rows=10 loops=1)
                   ->  Seq Scan on t5  (cost=0.00..13459.00 rows=475450 width=84) (actual time=0.033..181.649 rows=475324 loops=1)
                         Filter: (tags @> '{param-1}'::text[])
                         Rows Removed by Filter: 24676
     Total runtime: 490.843 ms
    (7 rows)

    Исходный
    explain (analyze) SELECT unnest(tags) FROM t5 WHERE tags @> array['param-1'] group by 1;
                                                          QUERY PLAN                                                       
    -----------------------------------------------------------------------------------------------------------------------
     HashAggregate  (cost=368857.88..368862.95 rows=1000 width=84) (actual time=1196.758..1196.759 rows=10 loops=1)
       ->  Seq Scan on t5  (cost=0.00..249995.38 rows=47545000 width=84) (actual time=0.020..680.547 rows=2501231 loops=1)
             Filter: (tags @> '{param-1}'::text[])
             Rows Removed by Filter: 24676
     Total runtime: 1196.790 ms
    (5 rows)

    Вложенный с seqscan off

    с set enable_seqscan to off;
    explain (analyze) select unnest(tags) from (SELECT tags FROM t5 WHERE tags @> array['param-1'] group by 1) as t group by 1;
                                                                          QUERY PLAN                                                                      
    ------------------------------------------------------------------------------------------------------------------------------------------------------
     HashAggregate  (cost=19433.16..19438.24 rows=1000 width=84) (actual time=411.248..411.249 rows=10 loops=1)
       ->  Subquery Scan on t  (cost=19425.49..19430.66 rows=1000 width=84) (actual time=411.220..411.233 rows=55 loops=1)
             ->  HashAggregate  (cost=19425.49..19425.59 rows=10 width=84) (actual time=411.205..411.206 rows=10 loops=1)
                   ->  Bitmap Heap Scan on t5  (cost=5084.74..18236.86 rows=475450 width=84) (actual time=74.696..126.809 rows=475324 loops=1)
                         Recheck Cond: (tags @> '{param-1}'::text[])
                         ->  Bitmap Index Scan on t5_tagx_gist  (cost=0.00..4965.87 rows=475450 width=0) (actual time=73.514..73.514 rows=475324 loops=1)
                               Index Cond: (tags @> '{param-1}'::text[])
     Total runtime: 411.337 ms
    (8 rows)

    исходные данные:
    create table t5 as (select i id, rand_array() tags from generate_series(1,500000) as i);
    create index t5_tagx_gin on t5 using gin (tags);
    
    create or replace function rand_array() returns text[][] as $$
    begin
     return (select array_agg(t1.col1) from (select format('param-%s', i) col1 from generate_series(1,rand(10)) as i) as t1);
    end;
    $$ language 'plpgsql' strict;


    ЗЫ, i5 2410M 8gb, PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu
    Ответ написан
  • Есть ли исследования на тему юзабилити интерфейсов и производительности труда?

    anmipo
    @anmipo
    www.usability.gov/articles/index.html
    www.usability.gov/guidelines/index.html

    Это сборники рекомендаций, но под каждой есть ссылки на соответствующие научные публикации.
    Ответ написан
    Комментировать
  • Ubuntu & производительность photoshop

    Vas3K
    @Vas3K
    Работаю с MBP и десктоп с ArchLinux. Думаю, не удивлю вас, что на макбуке, при меньшем количестве ядер и ОЗУ, работает намного быстрее, чем под линуксом как в wine, так и virtualbox. Но даже это не главное. Если вам фотошоп действительно нужен, а не «фотки кропать да прыщи замазать», то просто попробуйте его под линуксом, все вопросы отпадут сразу. А особенно если планируете прикупить какой-нить ваком, которые (давайте будем честны с собой) не очень хорошо работают в линуксе. Решайте что вам приоритетнее. Фотошоп важен и нужен вам 90% времени — наверное есть смысл переплатить за мак, фотошоп запускаете раз в неделю, в остальное время пишите на питоне — подойдет любой.

    Рискую быть побитым и неправильно понятым адептами сразу и той, и другой ОС, но так уж принято на хабре :)
    Ответ написан
    5 комментариев
  • Шаблоны django?

    @marazmiki
    Укротитель питонов
    Контекст-процессоры, пожалуй (en, ru)
    Ответ написан
    3 комментария
  • Нейронные сети и back propagation

    akhmelev
    @akhmelev
    программист
    На пальцах так.

    Есть обучающая выборка — т.е. таблица с данными, допустим первые 10 столбцов это вход, оставшиеся 5 — это выход искомой нейросетевой модели. Берем случайно одну строку из таблицы. Назовем её отдельный экземпляр или образ данных. Подаем 10 элементов на вход, нейросеть при текущих значениях синапсов считает, что будет на выходе (5 значений).

    Начинается один шаг back propagation. Сравнивается полученный выход нейросети с эталонным в обучающей таблице. Если реальный выход одного из пяти выходных элементов нейросети имеет ошибку, то синаптические коэффициенты этого выходного нейрона нужно чуть-чуть изменить так, чтобы эта ошибка чуть-чуть уменьшилась. И так для всех пяти выходов. Для многослойных сетей процесс каскадно повторяется, пока движение коррекций синапсов от выхода сети не доберется до её входа. Т.е. мы сделали сеть на этом шаге чуть-чуть точнее для этой одной конкретной строки из обучающей таблицы.

    Процесс многократно повторяется на разных случайных строках таблицы (на каждом шаге ошибка каждого образа всякий раз становтся меньше), пока средняя ошибка по всей таблице не достигнет заранее заданной точности. В итоге полученная нейросеть может уверенно распознать все строки из обучающей таблицы (образы). При верном выборе архитектуры и скорости обучения нейросеть получит свое основное качество — умение обобщать знания, т.е. распознавать не только опорные образы из обучающей таблицы, но и некие промежуточные, ранее неизвестные образы.

    В вычислительном процессе есть две опасности — паралич сети (выход синаптических коэффициентов на очень большие значения) и переобучение (потеря способности обобщению, т.е. сеть может верно распознать лишь образы из таблицы, но не промежуточные).

    Это совсем на пальцах. Для полного понимания поста не хватит, надо матчасть учить: Круглов, Хайкин, Терехов, Галушкин в помощь. Особенно Хайкин.
    Ответ написан
    3 комментария
  • АЦП и его максимальная разрядность

    @Eddy_Em
    Советую почитать, как работают АЦП. Основная проблема, из-за которой зависит точность — утечки, шумы и нестабильность опорного источника питания.

    Кстати, есть кандидаты и в 32-битные АЦП: www.esstech.com/index.php?p=products_ADC
    (на деле, скорее всего, там не больше 24 «честных» бит).

    Проверить, какова же реальная разрядность АЦП, можно при помощи регулируемого источника напряжения и точного вольтметра. Меняете напряжение на входе АЦП и смотрите отклик. Если плавно меняете напряжение и график оцифрованного сигнала — ступенчатый с шагом в 1 по амплитуде, то все честно. Иначе шаг будет более крупным, а также при постоянном напряжении будут заметны флуктуации сигнала (в звуковых картах обычно так и есть — там высокое качество не нужно).
    Ответ написан
    Комментировать
  • Простое объявление структур данных на php

    Что-то тип этого появилось в 5.4

    k. New Syntax
    — Short array syntax in 5.4.0
    $a = [1, 2, 3, 4];
    $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
    $a = ['one' => 1, 2, 'three' => 3, 4];
    Ответ написан
    1 комментарий
  • Красивая верстка таблиц как у Google Spreadsheets

    pietrovich
    @pietrovich
    Я плотно подсел на jqGrid, но скорее всего Вам он в сыром виде не подойдет, с выделениями нескольких ячеек и прочими плюшками придется колдовать самому. На помню, также, можно ли в нем легко организовать автоподгонку строки под контент, скорее всего тоже пилить самостоятельно. Из несомненных плюсов этого плагина могу отметить лишь неплохое отображение деревьев.

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

    Мощным недостатком можно считать лишь не шибко внятную документацию.
    Ответ написан
    1 комментарий
  • Scrapy - Python

    @bekbulatov
    Помимо DOWNLOAD_DELAY и USER_AGENT, что я полагаю вы уже меняли, попробуйте уменьшить эти настройки CONCURRENT_ITEMS, CONCURRENT_REQUESTS_PER_SPIDER, CONCURRENT_SPIDERS.
    Ответ написан
    5 комментариев