Pull to refresh
14
0
Alex Nekipelov @nekipelov

программист

Send message

Без белого IP к поднятому серверу снаружи подключится не получится

Можно, используя подход "UDP hole punching". Правда не всегда.

CMake — [средневековье] первая попытка уйти от низкоуровневых деталей make-а.

Зря вы, не разобравшись, списываете удобный инструмент.


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

Это называется unix-way: "Write programs that do one thing and do it well.". Cmake — это генератор. И у него хорошо это получается. Отслеживание зависимостей хорошо получается у make/ninja и других инструментов.


Под Linux все вроде бы хорошо, но если нужно построить тот же проект под Windows с помощью MSVC — а я предпочитаю нативный компилятор MinGW-шному, будут сгенерированы файлы для NMake

Cmake умеет генерировать не только nmake/make, но и проекты для MSVC (https://cmake.org/cmake/help/v3.12/manual/cmake-generators.7.html). Как-то так: cmake -G "Visual Studio 15"

set rnu
И больше не надо думать, vim покажет номер строки.

Представьте, что вы создали большую компанию. Ради привлечения инвестиций часть акций продали на API, другую часть стратегическим партнерам. Но у вас остался контрольный пакет. Так вот, кому принадлежит большая часть активов этой компании? Разве ей самой?


И подумайте, кто как не владелец имеет решающий вес в вопросе о том, куда девать прибыль: возвращать акционерам в виде дивидендов или же инвестировать, в том числе с рискованные проекты?

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

Спасибо за полезную информацию! В среди аббревиатур DMARC, DKIM и SPF не хватает ARC. Очень интересно, планирует ли почта mail.ru внедрение Authenticated Received Chain (http://arc-spec.org/)?

Нет, не просто. Еще нужно стрелочку вниз или page down нажать.

Идея хорошая, мне тоже приходится смотреть логи. Но ваше приложение, при попытке открыть лог размером 7 Гб (это всего за 3 часа работы), начало кушать 100% CPU и отъело кучу памяти, пока не было убито. У less же навигация по такому логу не вызывает затруднений.

В тексте много раз упоминается забота о пользователях. Но где же открытое API для этих пользователей? Мне оно нужно для своего устройства на arduino, которое отображает полезную информацию, в том числе погоду.
Следует уточнить, фраза «We don't really use MapReduce anymore» не означает, что «map reduce не справляется с обработкой действительно больших данных».


Не означает. Об этом другой абзац:

The technology is unable to handle the amounts of data Google wants to analyze these days, however.


Я прекрасно понимаю, что MapReduce не отомрет так быстро и они продолжают его использовать. У меня создалось впечатление, что они не считают MapReduce перспективной и универсальной технологией для big data.
Почему-то все чаще начинают писать о map reduce. Интересно, а что вы думаете о высказывании старшего вице-президента по инфраструктуре google о том, что они больше не используют map reduce?

“We don’t really use MapReduce anymore,” Hölzle said in his keynote presentation at the Google I/O conference in San Francisco Wednesday. The company stopped using the system “years ago.”

Источник цитаты: http://www.datacenterknowledge.com/archives/2014/06/25/google-dumps-mapreduce-favor-new-hyper-scale-analytics-system/

По их словам, map reduce не справляется с обработкой действительно больших данных.
В вашей реализации есть много проблем:

1. Обработчик сигналов не AS-Safe (https://www.gnu.org/software/libc/manual/html_node/POSIX-Safety-Concepts.html)
2. Обработчик исключений выделяет память, а что если она закончилась и произошло исключение std::bad_alloc?
3. Такое решение дает накладные расходы на каждый вызов.
4. Нет возможности получить стек вызова при использовании сторонних библиотек.
5.…

Не проще ли воспользоваться backtrace/backtrace_symbols в Linux или WinGdb на Windows?
Нельзя забыть про то, что настроено и работает годами. Clang не идеальный компилятор и далеко не все умеет оптимизировать также хорошо.
  1. Проверил, самый свежий gcc (5.3.0) все еще генерирует вот это:
    func(int):
        cmpl    $1, %edi
        je      .L3
        cmpl    $2, %edi
        je      .L4
        cmpl    $3, %edi
        je      .L5
        cmpl    $4, %edi
        je      .L6
        cmpl    $5, %edi
        movl    $100, %edx
        movl    $50, %eax
        cmovne  %edx, %eax
        ret
    .L6:
        movl    $40, %eax
        ret
    .L3:
        movl    $10, %eax
        ret
    .L4:
        movl    $20, %eax
        ret
    .L5:
        movl    $30, %eax
        ret

Все еще никакой оптимизации со стороны компилятора.
  1. Конечно информация имеет свойство устаревать, это факт. Я в самом начале указал, что все это написано давно (2006-2008, если мне не изменяет память). Так что же, теперь ничего не писать?
Если постараться, в C++, как и в других низкоуровневых языках, можно сделать все, что угодно. Однако ссылку даже нельзя проверить на валидность, т.к. это уже UB.
Повторюсь, что совет появился как раз из-за исправления с vector на что-либо другое. Если количество элементов мало, то обычно нет разницы, какой контейнер. Если же оно большое, например 1 000 000, может быть deque будет все же эффективней?

И надо думать не только о том, какое количество вставок сейчас. А еще и на много лет вперед, когда проект будут поддерживать совсем другие люди.
Скажу, что мой совет относился к стандартным итераторам, в которых хранятся "большие" объекты. В случае чего-нибудь вроде int очень даже допустимо, что все будет с точностью наоборот, правильное замечание.
Согласен, что совет спорный. Сильно зависит от количество вставок и того, куда вставляется. Но я слишком часто на практике сталкивался с тем, что приходилось переделывать с vector на deque или list. Поэтому призываю думать, а не бездумно писать vector в надежде, что кто-нибудь потом регулярно будет прогонять код профайлером под изменившиеся условия и исправит, когда vector станет работать плохо.
Конечно выделения памяти не будет, строка вообще пустая, поэтому я написал "Он будет пытаться". Это означает, отработает совсем другая ветка кода.
С этим разобрались. Что еще вы считаете дезинформацией?.

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity