LINUX.ORG.RU

Сообщения staseg

 

Царю про 10к в надежде перевести дискуссию в конструктив

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

Если ты готов померять реальный перформанс, пиши, я налабаю на еполле аналоги твоих тестовых серверов, чтобы не ты один тратил своё время. Меня например больше в всего в контексте этого спора интересует, как поведёт себя сервер с 10к потоков например на 4 ядрах против еполльного на одном таком же ядре, в вариантах без локов и с.

Результаты исследования можешь запостить на ЛОРе и восстановить честь среди пятизвездочных 😝

Начало дискуссии где-то рядом в удаленных по инициативе какого-то наркомана.

PS скорее всего я отвечу не раньше ночи или следующего утра.

 ,

staseg
()

Satori — еще один облачный сервис и конкурс для разработчиков на $1M

Сегодня наша компания анонсировала и выпустила в бету облачный сервис для прокачки сотен данных, этакий огромный pubsub с плюшками. Подробности о сервисе и фичах в пресс-релизе и доках. Сервис закрытый (SaaS), SDK на нескольких языках (C, Obj-C, Java, Javascript, Python) открыты. Использование в большинстве случаев бесплатное, каких-то анальных ограничений нет.

Главный приз в конкурсе $500k, наименьший — $15k. Участие бесплатное, в лучшем случае мы ожидаем получить багрепорты. Суть конкурса весьма расплывчата :) То есть нужно включать фантазию:

Under the rules of the Challenge, winning channels will be those that showcase the speed and scale of Satori in unique ways, have the potential to positively impact people’s lives, are scalable, and are built for widespread use. The entire world will then be able to build apps on the winning channels as well as existing channels for free.

Правила и бюрократия.

PS. Я не собираюсь использовать любимый ЛОРчик для пиара этой вундервафли, возможно я оставлю еще одну тему с оглашением победителей, если вдруг узнаю, что кто-то отсюда выиграл.

PPS. Мы постоянно ищем таланты. Три локации: Берлин, Пало-Альто и Сан-Франциско. С трактором помогают. Вилки обычно выше среднего по району, подробности — у рекрутеров. Вакансии тут и тут.

 mz, satori, ,

staseg
()

Отзывы о макбуке 12" или еще одного выбора ноута нить

В дополнение к про-гробу 15" хочу небольшой ноут 12"-13", пока взор упал на яблочные Macbook 12" и Macbook Air 13", но на яблоках не зацикливаюсь, просто теряюсь в остальных производителях.

Юзкейзы. Основной ноут жене для интернетов, печатания документов и просмотра киношек. Вспомогательный ноут мне для интернетов, переписки, видеозвонков и возможно кодинга. В самолете, в поезде, в походе или где-нибудь еще.

Чего хочется:

  • Монументальности, чтобы он не расшатывался, не разваливался, не гнулся и не скрипел дешевой пластмассой.
  • Жене нужно, чтобы было удобно, а мне нравится работать в юникс-среде, т.е. либо макбук, либо дуалбут, в котором линукс не будет ущербным.
  • Батарейка на 7+ часов печатания.
  • Наверное приятного экрана, но я в этом не разбираюсь.
  • Каких-то особенных требований к железу нет, лишь бы не тормозило на основных юзкейзах.

Сегодня походил по оффлайн-магазинам, в основном ноутбуки выглядят как-то хлипко, что ли. Возможно тут имеют место два фактора: нынешний пластмассовый Acer жены убился за пару лет, корпус гуляет, петля крышки расслоилась и в целом ощущение, что он вот-вот развалится, и с другой стороны, мой про-гроб, который за два года почти не износился. Возможно это сформировало во мне неправильную модель оценки.

Сегодня же вертел макбук 12" и макбук аир 13". Двенашка прям очень-очень няшка 80lvl, зато аир чуть дешевле, с более «компьютерным» железом и HD камерой. C другой стороны, экран аира выглядит непривычно, возможно из-за не-ретины, клавиатура мелковата.

Вопросы к обладателям двенашки. Пока я присматриваюсь к модели с m3 & 256Gb, в сомнениях: не слабый ли процессор? Стоит ли втыкать m7? Как живется с одной дыркой? В целом, как оцениваете опыт эксплуатации, с примерами юзкейзов?

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

 ,

staseg
()

Вопрос про говнозеркалку

Пламенно приветствую!

Есть одна тян, которая высказывает желание научиться фотографировать, но в силу лени, финансов и вообще хрен знает чего до сих пор этому не училась. В общем, я ищу ей фотик в подарок. Пока мои нубские критерии такие:

  • чтоб был не слишком простой, чтобы стимулировал куда-то развиваться и в то же время, чтобы его быстро не «перерасти»;
  • чтоб был не слишком сложный, чтобы ей в нем не запутаться, а мне не сильно расстраиваться за переплаченные деньги, если тема не зайдет.

Нагуглил Nikon D5300 с китовой оптикой 18-105mm, обойдется чуть меньше 50к, в целом меня примерно такая цена устраивает.

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

Посоветуйте литературу и фотик %)

Cast dk-, subwoofer, r_asian. Сорри, если скастовал кого-то лишнего.

PS. Я в теме совсем аут, если понаписал фигню, обсирайте в коментах.

 ,

staseg
()

Erlang/OTP 19.0 has been released

Немного ускорений и улучшений, экспериментально добавлены unix domain sockets, в OTP добавлен еще один behavior.

Подробности очередного мажорного релиза.

Перемещено tailgunner из development

 

staseg
()

Путешествие в Самару

Привет!

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

ЛОР, посоветуй, где побывать, что посмотреть, достопримечательности, да и просто красивые, интересные, необычные, в общем запоминающиеся места. Может какие события намечаются на это время?

Планирую съездить на ближайшие выходные.

ЗЫ. Гуглю, смотрю аналогичный топик того года, но интересуюсь и какими-то свежими советами.

 ,

staseg
()

C++ regex online

Привет. Хочу матчить поступающие данные, например есть regex(«a[0-9]*»). Есть ли возможность посылать ему на сравнение данные посимвольно? Отправляю по очереди: 'a' -> ok, '4' -> ok, '2' -> ok, 'a' -> false. Потом сбрасываю состояние на первоначальное, и заново. Как бы такое сделать со стандартными std::regex? Помню, где-то подобное видел, может в какой либе или даже другом языке...

Надо для реализации простенького лексера, чтобы не городить автомат.

 ,

staseg
()

Just another audio player

Привет!

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

Обычно в таких случаях я запиливал веб или мыло-сервер, иногда интерпретатор лиспа. Но ведь надоело же уже одно и то же! В общем, посоветуйте тему. Если эта штука еще и кому-то окажется нужной, даже лучше.

 

staseg
()

Переезд Тверь — Ульяновск, поконсультируйте с дорогой

Привет.

Переезжаю в Ульяновск, ехать будем на машине. Есть ли какие-нибудь подводные камни в дороге? Может быть какие-то дороги есть только на карте или совсем убиты и т.д. Пока маршрут предполагается такой: Тверь, Клин, Владимир, НН, Ульяновск.

Собственно проблема в том, что дорог на карте довольно много, по каким из них лучше ехать — хз. Особенно волнует дорога из НН в Ульяновск, вроде как можно проехать через Чебоксары, Саранск или между ними. Из Клина во Владимир опять же можно проехать через Москву или местными дорогами.

Если тут есть люди, катавшиеся, а может и регулярно катающиеся по (части) моего маршрута, поконсультируйте.

 

staseg
()

C — возврат буфера из функции

Привет. Сегодня проходил собеседование, задали вопрос, как при сохранении API сделать «правильно»:

char const *foo(void){
    char buf[10];
    //fill buf
    return buf;
}
На мой взгляд, наилучший вариант — возвращать статический буфер. Минусы: в клиенском коде зачастую придется копировать эту строчку, плюс в многопоточном варианте скорее всего будет ой-ой. Варианты возврата динамически выделенного буфера и модификации API отметаем. Говорят, есть вариант получе. Найти не смог, сами ответ мне не дали, сославшись на то, что не комментируют корректность ответов. Кроме этих трех вариантов ничего в голову не приходит, да и не гуглится. Ваши варианты?

 

staseg
()

Приоритетная выборка данных

Привет!

Необходимо хранить данные в виде key-value, но значние может быть различным в зависимости от N «поправок» или «уточнений». Например ключ K, по умолчанию его значение V, если установлена поправка N1 — V1, если установлена N2 — V2, если установлены обе поправки — V12. Приоритет различных комбинаций поправок должен настраиваться. Как эту задачу представить в базе данных?

Вариант в лоб: таблица с колонками

 N1, N2, key, value 
и серия выборок:
SELECT value FROM tbl WHERE key = 'key' AND N1 = n1 AND N2 = n2;
...                                     AND N1 = n1 AND N2 IS NULL;
...                                     AND N1 IS NULL AND N2 = n2;
...                                     AND N1 IS NULL AND N2 IS NULL;

Первый минус - необходимость выполнения серии запросов, в данном случае в худшем случае четырех. Второй минус, число запросов дико растет с увеличением уточняющих параметров. Как быть-то?

 

staseg
()

c++ graph multithreading

Пламенный куку!

В однопоточном режиме граф удаляется нормально. В многопоточном - крашимся. Но! В каждом потоке создается свой собственный граф. Вывел небольшой (не)рабочий пример.

item - лист графа, у него есть имя и дети. У двух листьев могут быть одинаковые дети. make() создает граф. Отдельно объекта для представления графа нет, удаление ячеек делается через метод deleteIt().

class item{
public:
    item(QString const &n, item *parent = 0) :name(n), del(false){
        if (parent != 0)
            parent->addChild(this);
    }

    void addChild(item *i){
        childs.push_back(i);
    }

    void deleteIt(){
        if (!del){
            del = true;
            while (childs.count() > 0){
                auto child = childs[0];
                childs.removeFirst();
                child->deleteIt();
            }
            delete this;
        }
    }

    QList<item*> childs;
    QString name;

    bool del;

protected:
    ~item(){}
};


item *make(){
    auto root = new item("init");
    auto step = new item("step 1", root);
    auto step2 = new item("step 2");
    step->addChild(step2);
    auto step3 = new item("step 3", step);
    step3->addChild(step2);
    return root;
}


int main(int argc, char **argv){
    QCoreApplication a(argc, argv);
    for (int i = 0; i < 5; i++){
        auto thread = std::thread([](){
            for (int i = 0; i < 10000; i++){
                qDebug() << i;
                auto it = make();
                it->deleteIt();
            }
        });
        thread.detach();
    }
    a.exec();
}

Падаем рандомно в deletIt при обращении к списку детей, в деструкторе и изредка в addChild. Иногда почти сразу, иногда на второй-третьей тысяче итераций. Если оставляем один поток или исключаем добавление одинакового ребенка к двум разным элементам графа, все работает нормально.

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

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

 ,

staseg
()

Функция, принимающая указатель на себе подобную

Как сделать сабж? Через указатели или std::function — не суть.

void foo(int a, ... b);
//на место многоточия надо воткнуть указатель на подобную функцию
//получается так:
void foo(int a, std::function<void(int, std::function<void(int,...WTF)>)>);

И тут я понял, что вложенные определения функции-аргумента никогда не закончатся. Финт с typedef в лоб приводит к тому же самому. Если второй аргумент определить через шаблонный тип, все должно получиться, но мне в конечном счете хочется получить синоним (typedef или еще как) типа такой функции, а там шаблоны вроде как не сработают.

Какие есть еще варианты кроме грязных кастований указателей?

 

staseg
()

CMake: имя плагина

Есть ли возможность настроить название файла собираемого плагина? add_library(greatName MODULE ${SRC}), получаю файл libgreatName.so. Для SHARED библиотеки это было бы правильно, но почему соглашение о наименовании обычных библиотек распространяется и на плагины? Это как-то можно изменить?

(О том, что плагин по своей сути это та же библиотека, я знаю, вопрос не об этом).

 

staseg
()

Как отлаживать event loop?

Пламенный куку!

Есть средних размеров проект с десятком плагинов, часть из которых ожидают всяких событий извне, часть — от других плагинов. Все живут на основном цикле обработке событий, созданы искусственные условия, когда источники внешних событий выключены, а значит никаких событий в системе не гоняется (по крайней мере теоретически, CPU usage 0). Создаю плагин, слушающий запросы из сети (QTcpSocket). В пустом проекте он откликается 2к раз в секунду (нам этого хватает с запасом, переписывать на более нормальную сетевую библиотеку не в приоритете). Теперь засовываем плагин в основной проект и имеем 40/сек, CPU usage 0.

Следующий эксперимент — в этом же проекте запускаем плагин в отдельном потоке со своим event-loop-ом, получаем те 2к/сек.

Есть предположение, что какие-то плагины делают что-то не так и впадают в кратковременное ожидание в основном потоке либо явным sleep-ом, либо неявно блокирующим открытием соединения с БД и тому подобными вещами.

Код всего есть. Эксперименты с поочередным отключением плагинов затруднены из-за уж совсем черезжопной конфигурации всего этого. Сейчас я по всей видимости этим займусь, но хочется варианта отладки попроще, если не сейчас то на будущее. Посему вопрос, как «посмотреть», что происходит в основном цикле обработки событий программы (QCoreApplication)? В принципе достаточно чего-то вроде такого лога (с временем, конечно):

пока нет событий, жду новых
есть новые события!
начинаю обработку события Х
заканчиваю обработку события Х
начинаю обработку события Y
заканчиваю обработку события Y
пока нет событий, жду новых

 

staseg
()

С миру по нитке на отечественный аналог Шиндос!

Кикстартер? Не, не слышал! У государства есть механизмы по-проще.

Минкомсвязи РФ предложило ввести 10-процентное отчисление с продаж лицензий на программное обеспечение (ПО) в специальный фонд, из которого будет осуществляться поддержка отечественных программистов. ... Работать фонд, по замыслу Минкомсвязи, будет в течение десяти лет, управлять им будет специально созданная госкомпания.

Средства из фонда будут выделяться на разработку отечественного программного обеспечения, главной задачей программистов станет создание десяти видов конкурентоспособного софта: операционных системы для ПК, серверов и мобильных устройств, пакетов офисных приложений, систем управления базами данных, систем проектирования и системы управления предприятием. Для получения субсидий компания-разработчик должна будет передать государству блокирующий пакет в виде 25 процентов своих акций.

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

http://lenta.ru/news/2014/09/15/fund/

staseg
()

Документация LLVM

Приветствую.

Хочу поиграться с компиляцией в llvm и столкнулся с проблемой. Я просто не могу найти документацию на пользовательский С++-интерфейс. В туториале этот интерфейс активно используется, но среди доков я нашел лишь спеки ассемблера и доксигеновскую доку на все исходники LLVM. По идее, это документация на интерфейсный C++API, но разобраться в этом будет очень сложно. Что я провтыкал или делаю не так? Есть нормальный мануал или хотя бы нормально сформированная спека на C++API?

 ,

staseg
()

РСП может кануть в лету

Вкратце, ЛДПР поссорилась с Михалковым, и вот что вышло:

По данным издания, необходимые поправки в Гражданский кодекс на прошлой неделе направили в Госдуму депутаты Игорь Лебедев, Сергей Иванов и Ярослав Нилов. Авторы документа утверждают, что из-за введения сбора в пользу РСП любой гражданин, заплативший за аудиовизуальное произведение, все равно будет платить за него каждый раз, приобретая носители информации или другое оборудование.

Они также обращают внимание, что граждане, которые вообще не пользуются авторским контентом, все равно платят даже за теоретическую возможность это сделать. Таким образом, считают депутаты, денежные средства неправомерно взимаются с граждан России в пользу «недобросовестных владельцев авторских и смежных прав».

В Российском союзе правообладателей изданию заявили, что считают инициативу непроходной, и что она внесена в пользу неплательщиков сбора.

Полная версия

 , ,

staseg
()

+1 реализация CL

В списке рассылки ECL появилось интересное сообщение. Некто Christian Schafmeister создал еще одну реализацию CL. Написано на С++ и использует LLVM для JIT компиляции программы в нативный код. Как заявляет автор, ваще легко взаимодействует с foreign C++-библиотеками в т.ч. с виртуальными, перегруженными функциями и т.д.

Проект частично основан на коде ECL (стандартная библиотека и CLOS). Автор обещает открыть исходники через пару месяцев, т.к. хочет причесать свой код.

http://sourceforge.net/mailarchive/message.php?msg_id=30557215

 , ,

staseg
()

Тэги в сообщениях стали вырвиглазны

По-моему пора уже либо завязывать с использованием шрифтов не по назначению, либо как-то проверять умеет ли их клиент. Закорючка вместо «глаза» уже и так надоела, так теперь еще и перед списком тегов такая же лабуда. Негодуэ!

http://img96.imageshack.us/img96/8199/snapshot10p.png

staseg
()

RSS подписка на новые темы