Странно, просто все библиотеки для других языков с которыми я работал это умеют "из коробки",
например quickcheck для Haskell, или его аналог для Rust, там эта фича называется "shrink".
А оставшаяся часть подобного тестирования, а именно — получив ошибку на каком-то случайном наборе данных, пытаемся упростить набор данных,
до тех пор пока ошибка воспроизводится, реализована в каком-нибудь
проекте для C++?
В теории — да. В данном конкретном случае винда лучше, ибо по ней больше вакансий.
Э..., вы читали статью? Админов так много, что директор ломиться к единственному
потенциальному админу утром в душ с тортиком. По-моему, отсюда следует что на вакансию админа отликнулись
0 человек. Не важно предлагали ли мало денег, или в том городе физически нет больше нужных специалистов, но в данном конкретном случае у нас есть ровно один специалист на рынке и этот специалист
знает/хочет/может Linux.
Плюс у винды дефолт работает достаточно качественно. А вот за дефолт Linux не возьмусь утверждать. И
опять же, в Windows меньше возможности выстрелить себе в ногу. Это надо задаться целью. А в пингвине
это гораздо легче
По-моему это "вкусовщина", человек имеющий большой опыт работы с Linux, но не имеющий опыт администрирования Windows, скорее всего выскажет строго противопложную точку зрения. Тоже самое будет и со специалистами по Solaris, AIX и так далее. Очевидно что в изученной и известной тебе системе меньше возможностей выстрелить себе в ногу, дефолт там работает более качественно (потому что опять же он известен и не приносит никаких неожиданностей и так далее).
Странно, но я всегда считал что нужно подбирать инструмент под задачу, а не клепать что-то потому что «я знаю как».
Не согласен, человек тоже инструмент сам по себе. Если вам нужно решить задачу
за неделю
и цена эксплуатации будет одна и та же на платформе X и Y, но IT специалист
знает только X, и будет изучать Y месяц, и столько же вы будет искать специалиста для Y,
то по-моему решение очевидно.
Если я правильно понял условия то код нужен такой:
Да спасибо именно то, что я имел ввиду.
А ваши инструменты. типа ./qmlcore/build --boilerplate
проверяют валидность, что в данном контексте доступны данные свойства,
callbacks и подобные вещи?
Обычно для тестирования GUI framework я пытаюсь реализовать
следующую "простую" задачу:
в прямоугольник слева, вверху, шириной 1/5 от ширины окна приложения,
и высотой 1/5 от высоты окна приложения, вывести произвольное число от 0 до 999
шрифтом по умолчанию. Размер шрифта должен подбираться автоматически,
с помощью GUI framework, таким образом, чтобы максимально занять выбранный прямоугольник.
Насколько сложно это будет реализовать с помощью PureQML?
Единственным решением остается передавать слабую ссылку (или создавать внутри) в другой объект, который не подвержен жизненному циклу компонента (в нашем случае объект класса Api):
Да, другой класс должен быть не anonymous, но разве его нельзя сделать staticinner?
А если использовать lambda из Java 8, последние версии android studio вроде имеют
неплохую поддержку java 8?
В llvm этот вопрос решён хоть как-то, но по уровню оптимизации сишка уступает тому же rust'у.
По приведенной ссылке:
Update Actually as dbaupp points out, this optimization example is not specific to Rust. In fact, LLVM is doing it via local > analysis (the sort I mentioned above), and clang++ produces the same results for the equivalent C++ code. In fact Rust > in general would need to preserve references because you can convert a reference to a raw pointer and compare them > for equality.
Про проблемы с выравниванием я знаю, и по крайней мере у gcc есть несколько ключей,
для генерации предупреждений по этому поводу, на x86 с этим тоже можно кстати столкнуться,
например если компилятору "сказать" что данные выравнены и заставить его сгенерировать код для работы скажем с AVX, а потом дать на вход невыровненные данные.
Меня интересовало как раз что за сегменты (на arm скажем никаких сегментов в терминах i386 нет) и что за дырки между ними, но судя по все это было просто недопонимание.
В немного похожей ситуации — промышленный компьютер с linux внутри,
просто выключал и включал питание USB порта, для этого то ли нужно
было чуть-чуть поправить стандартный driver, то ли уже была готовая утилита
управляющая питанием с помощью sysfs, и нужно было ее только скомпилировать — давно было.
и нам пришлось переписать IPC на вызовы библиотеки gpgme, в результате повысилась надежность, демон прекрасно заработал с родными «C-шными» вызовами и стал корректно обрабатывать ошибки в нештатных ситуациях.
И ваш код автоматически перелецензировался под GPL-2, т.к. у gpgme насколько я помню
именно эта лицензия. Где можно скачать исходники вашей программы? :)
потому что компилятор может быть уверен, что input >случайно не поменяется (interior mutability — отдельная >история)
А почему можно так лихо убрать из рассуждений interior mutability, вполне может быть:
struct T {
data: RefCell<u32>,
}
fn foo(input: &T) {
let mut data = input.data.borrow_mut();
*data += 1;
}
и компилятор должен либо уметь понимать все возможные unsafe блоки, чтобы определять анлоги RefCell написанные программистом, либо забыть про оптимизации связанные с неизменяемостью?
Просто довольно тяжело пытаться играть в честный ооп, инкапсулируя имплементацию вообще всего и работать с трейтами, которые «не интерфейсы», и в этом случае данный факт очень хорошо чувствуется. А не в ооп играть — тяжко, глобально архитектурить без ооп я еще не умею.
А в чем разница с C++ в этой плоскости?
В C++ тоже нельзя создать объект класса с чисто виртуальными функциями,
на стеке, а потом на его место записать объект наследника. Да и вообще
с созданием объекта "класса с чисто виртуальными функциями" возникнут
некоторые проблемы. Придется как в Rust где-то (например в куче) хранить "конкретные" объекты и передавать куда нужно указатели на абстрактный класс.
И ничего живут же как-то, в ООП играют уже много лет.
у оракла есть многоблочное чтение (scattered read), когда по DMA одной SCSI командой достает 128 блоков напрямик в память.
А под какой ОС он это умеет? В linux например можно работать с блочными устройствами напрямую минуя кэши из user-space, но штатного интерфейса для работы с DMA из user-space не предусмотренно.
Меня как сидящего все еще на bash интересует,
для начала две базовые вещи:
Странно, просто все библиотеки для других языков с которыми я работал это умеют "из коробки",
например quickcheck для Haskell, или его аналог для Rust, там эта фича называется "shrink".
А оставшаяся часть подобного тестирования, а именно — получив ошибку на каком-то случайном наборе данных, пытаемся упростить набор данных,
до тех пор пока ошибка воспроизводится, реализована в каком-нибудь
проекте для
C++?Э..., вы читали статью? Админов так много, что директор ломиться к единственному
потенциальному админу утром в душ с тортиком. По-моему, отсюда следует что на вакансию админа отликнулись
0 человек. Не важно предлагали ли мало денег, или в том городе физически нет больше нужных специалистов, но в данном конкретном случае у нас есть ровно один специалист на рынке и этот специалист
знает/хочет/может Linux.
По-моему это "вкусовщина", человек имеющий большой опыт работы с Linux, но не имеющий опыт администрирования Windows, скорее всего выскажет строго противопложную точку зрения. Тоже самое будет и со специалистами по Solaris, AIX и так далее. Очевидно что в изученной и известной тебе системе меньше возможностей выстрелить себе в ногу, дефолт там работает более качественно (потому что опять же он известен и не приносит никаких неожиданностей и так далее).
Не согласен, человек тоже инструмент сам по себе. Если вам нужно решить задачу
за неделю
и цена эксплуатации будет одна и та же на платформе X и Y, но IT специалист
знает только X, и будет изучать Y месяц, и столько же вы будет искать специалиста для Y,
то по-моему решение очевидно.
Да спасибо именно то, что я имел ввиду.
А ваши инструменты. типа
./qmlcore/build --boilerplateпроверяют валидность, что в данном контексте доступны данные свойства,
callbacks и подобные вещи?
Обычно для тестирования GUI framework я пытаюсь реализовать
следующую "простую" задачу:
в прямоугольник слева, вверху, шириной 1/5 от ширины окна приложения,
и высотой 1/5 от высоты окна приложения, вывести произвольное число от 0 до 999
шрифтом по умолчанию. Размер шрифта должен подбираться автоматически,
с помощью GUI framework, таким образом, чтобы максимально занять выбранный прямоугольник.
Насколько сложно это будет реализовать с помощью PureQML?
Да, другой класс должен быть не anonymous, но разве его нельзя сделать
staticinner?А если использовать lambda из Java 8, последние версии android studio вроде имеют
неплохую поддержку java 8?
По приведенной ссылке:
Про проблемы с выравниванием я знаю, и по крайней мере у gcc есть несколько ключей,
для генерации предупреждений по этому поводу, на
x86с этим тоже можно кстати столкнуться,например если компилятору "сказать" что данные выравнены и заставить его сгенерировать код для работы скажем с AVX, а потом дать на вход невыровненные данные.
Меня интересовало как раз что за сегменты (на arm скажем никаких сегментов в терминах i386 нет) и что за дырки между ними, но судя по все это было просто недопонимание.
А можете пояснить, что вы подразумеваете под понятием "сегментам" на ARM,
и ARM с MMU или с MPU имеется ввиду?
По заголовку решил, что это статья про game dev,
т.к. SDL довольно известная в узких кругах библиотека: http://www.libsdl.org/
В немного похожей ситуации — промышленный компьютер с linux внутри,
просто выключал и включал питание USB порта, для этого то ли нужно
было чуть-чуть поправить стандартный driver, то ли уже была готовая утилита
управляющая питанием с помощью sysfs, и нужно было ее только скомпилировать — давно было.
И ваш код автоматически перелецензировался под GPL-2, т.к. у gpgme насколько я помню
именно эта лицензия. Где можно скачать исходники вашей программы? :)
А почему можно так лихо убрать из рассуждений
interior mutability, вполне может быть:и компилятор должен либо уметь понимать все возможные
unsafeблоки, чтобы определять анлогиRefCellнаписанные программистом, либо забыть про оптимизации связанные с неизменяемостью?А в чем разница с
C++в этой плоскости?В C++ тоже нельзя создать объект класса с чисто виртуальными функциями,
на стеке, а потом на его место записать объект наследника. Да и вообще
с созданием объекта "класса с чисто виртуальными функциями" возникнут
некоторые проблемы. Придется как в Rust где-то (например в куче) хранить "конкретные" объекты и передавать куда нужно указатели на абстрактный класс.
И ничего живут же как-то, в ООП играют уже много лет.
А уход опорного генератора тактовой частоты приемника? А тропосфера? Недостаточная точность эфемерид спутников?
А под какой ОС он это умеет? В linux например можно работать с блочными устройствами напрямую минуя кэши из user-space, но штатного интерфейса для работы с DMA из user-space не предусмотренно.
А кто-нибудь может "развернуть" это предложение, что именно не так с I/O PostgreSQL?