Свежие комментарии
Title | Comment |
---|---|
Почему-то во всех остальных распространненых системах не сте |
Почему-то во всех остальных распространненых системах не стесняются при апдейте ЗАМЕНИТЬ версию libc на более новую. |
Наоборот так побороли DLL hell - каждая программа строго при |
Наоборот так побороли DLL hell - каждая программа строго привязана к crt библиотеке, манифест всегда внедряется внутрь DLL/EXE и описывает эту привязку. Библиотеки сейчас лежат не в одной куче в system32, а ставятся в winsxs, где четко описаны версии. Даже библиотека с одним именем может иметь несколько вариантов и это правильно, только тогда гарантируется точное совпадение окружения с тем что было при разработке. |
ога, а ещё есть всякие такие "манифесты", когда требуется не |
ога, а ещё есть всякие такие "манифесты", когда требуется не просто msvcpxx.dll, а msvcpxx.dll строго определённого релиза (в смысле последних циферок номера подверсии). Вот тут самая жесть начинается... Сменили dll hell на hell нового уровня... |
Да, считаю они должны в windows update все версии crt пихать |
Да, считаю они должны в windows update все версии crt пихать. Сейчас каждая программа тянет с собой crt redistributable package, он совсем небольшой, но обычно устанавливается в winsxs, а это системная вещь и например на vista и win7 требует поднятия прав до administrator, соответственно имеем UAC, что несколько кривовато при установке любой программы. Однако есть выход, которым не все пользуются - приватная сборка, когда все нужное в папке программы, кстати рекомендуемый подход. Только вот если программа состоит из нескольких компонент, то в чужие компоненты нельзя вмешатся, а им тоже нужен crt. |
Ну, это всё напоминает случаи верёвок достаточной длины, что |
Ну, это всё напоминает случаи верёвок достаточной длины, что выстрелить себе в ногу... |
Вот в текущем проекте разрабатываем API, придерживаемся тако |
Вот в текущем проекте разрабатываем API, придерживаемся такого подхода: Наши объекты конструируем через фабрику, либо их создает другой наш объект - тут пользователь ничего сам не строит, проблем нет. Однако передать, возвратить массив простых структур или строку становится неудобно. Надо либо аллоцировать самому, потом юзер копирует себе, либо его, но не всегда заранее известен размер результата, либо делать объекты типа строка и вектор - несколько тяжеловато и неудобно. Поэтому предоставляем пользователю шаблон вектор, также сторку, там сделано все безопасно, аллокация спрятана в виртуальных функциях. |
Меня гораздо больше раздражает не наличие отладочной и дебаж |
Меня гораздо больше раздражает не наличие отладочной и дебажной библоиоки языка C, а то что библиотека C в виндах не часть системы. |
Так всё верно, free() действительно будет не тот и это дейст |
Так всё верно, free() действительно будет не тот и это действительно забота того же самого код, который выделил память, её и освобождать. |
При использовании внешних библиотек обычно всегда уделяется |
При использовании внешних библиотек обычно всегда уделяется внимание работе с памятью, а именно четко прописывается какой crt надо подключать, если библиотека позволяет аллоцировать пользователю напрямую. crt меняются, есть многопоточный вариант, однопоточный, дебажны и релизный, плюс они сами эволюционируют. При смене версии с одной на другую пытаться просто подменить это неверно, так делать очень опастно. Вот допустим - есть функция, но в ней была небольшая ошибка - вышла новая версия crt, ее поправили, а есть уже рабочий код, который с этой ошибочной уживается, а с новой нет. Итог - надо понимать, что каждому модулю соотвествует своя версия библиотеки, в unix думаю также, просто библиотеки наверное пореже обновляются. Довольно часто разработчики интерфейсов скрывают работу с памятью, чтобы просто не требовать от клиента соответствия crt. Тогда надо либо давать доступ к аллокаторам, брать управление памятью на себя, либо наоборот давать пользователю переопределить аллокаторы, либо например вообще не давать управлять памятью пользователю, вобщем много вариантов. Если посмотреть на всякие API к приложениям, то обычно такие варианты: |
С разными crt это известная хрень, много крови попортила. С |
С разными crt это известная хрень, много крови попортила. С шаблонами еще веселее получается - там код инстанцируется несколько раз и если аллокация торчит наружу, то она может быть разной. Побороть это можно используя виртуальные методы в шаблонах, тогда хоть и проинстанцируется много раз, но вызов будет через таблицу виртуальных функций, для каждого объекта будет вызываться то что надо. Кстати в stl из visual studio кажется до версии vs2005 была еще мина заложена в std::map - там статическое поле торчало. У нас мы приняли за правило stl в интерфесы не выносить, стараться прятать, да и вообще использовать по минимуму. Еще неприятная проблема с решением которой компилятор не поможет - это опциональные поля структур/классов отключаемые условной компиляцией - при неаккуратной настройке проекта можно получить ситуацию передачи структуры другого размера в другой модуль. |
Из меня виндовый программист тот еще, последние лет 18 - Uni |
Из меня виндовый программист тот еще, последние лет 18 - Unix only (хотя все меняется). Потому и удивляюсь. И я привык, что в исполняемом образе (после динамической линковки) будет один malloc(), один free() ну и так далее. Ну никогда не было иначе в моей практике (до сегодня). Ну, понятно, если я их сам передефайнил на compile-time, то я сам себе дурак, но чтобы это стандартные includes за меня делали... ну не нравится мне это. А практический вывод (последняя строчка поста) вводит меня в когнитивный диссонанс. Я должен писать никому не нужные три строчки кода: static free_mem_image(...); // в определении класса LibRaw::free_mem_image(sometype *p) { if(p) free(p); } Вместо того, чтобы в вызывающем приложении просто позвать free(p); Потому что этот самый free() может оказаться "не тот" Что же до BoundsChecker - у нас есть valgrind (наконец то на FreeBSD), который тоже вполне ничего. |
Хм. А почему возникло ожидание, что результат работы одного |
Хм. А почему возникло ожидание, что результат работы одного кода будет совместим с результатом совершенно другого кода? То, что они решают одну задачу - это как бе непонятный аргумент. Автомобили тоже решают одну задачу, но колесо с УАЗа не поставишь на Ламборгини, вот и тут как бе не сходится... В VC при завершении отлаживаемого DEBUG процесса, запущенного под дебагером, выводится дамп не освобождённых областей памяти. Т.е. там совсем разные алгоритмы. Не знаю, есть ли такое вообще в принципе под юниксом... Плюс под VC есть очень хороший продукт BoundsChecker (когда-то его делала знаменитая NuMega, потом перекупила Compuware, потом ещё кто-то), который такие ошибки ловит на лету... Ну, в общем, я б сказал, что не причём тут мелкомягкие) Они решали определённые задачи этим, поэтому код не совместим. Просто надо читать спеки и не мешать тёплое с мягким ))) |
Я с "photo" (чуть больший, чем этот) походил в режиме "один |
Я с "photo" (чуть больший, чем этот) походил в режиме "один день". Ну в общем не очень это все серьезным мне показалось. Это какая-то несуразность по-большому счету. Мешок с картошкой какой-то. Висит низко (при росте без семи два вообще не очень хорошо), широкий непонятно зачем. Лучше сделали бы поуже, но выше. Как я ни старался, а носился он скорее на плечах, а не на поясе. То есть вроде и на поясе висит, а плечи отваливаются -- то расстегнешь, то расправишь, то обратно все застегнешь. На третий день пообвык, но... Удобно то, что куча вся туда влезает. Штатива крепление -- фигня. Болтается. В лесу цепляется, пару раз чуть не сковырнулся со склона блин. Я не особенный специалист по рюкзакам, но все опытные, раз на него взглянув говорили, что фигня это, а не рюкзак. В общем непонятно, кто его делал. |
Мне только одни попадаются. Я, правда, специально не ищу. |
Мне только одни попадаются. Я, правда, специально не ищу. |
А этих же корзин два размера есть... В большую не влезает? |
А этих же корзин два размера есть... В большую не влезает? |
Меня в основном пугает (и раздражает) то, что оно не влезает |
Меня в основном пугает (и раздражает) то, что оно не влезает в тестовую корзину. |
...Вот это и подразумевается, а еще чуть раньше стандартный |
...Вот это и подразумевается, а еще чуть раньше стандартный репортерский кофр, действительно, вписывали под сиденье в салоне (насколько я читаю спецификации сумок уже лет 30, и летаю, интерьер самолетов и правила размещения поменялись радикально). |
Спасибо, |
Спасибо, поправил. Последствия переезда на другой движок, я на твиттере полным сохранением не озаботился, горе мне. |
А в чем проблема с установкой |
А в чем проблема с установкой на MBR? Заменяется два файла в retail образе и оно отлично становится. |
Выбивает ребут при установке Mac OS на VMware player |
Люди!! помогите Я перепробовал все сборки, У меня asus X80L. Пришел к тому что лучше устанавливать МАК ОС с виртуальной машины, использовал VirtualBox-отчтой не пашет вообще,щас пробую VMware player - есть прогресс, но при установке выдает что МАК выключил мою оперативу и требуется ребут Вирт. машины, я делаю ребут, появл лого с яблочком, и сразу Вирт. машина ребутица, подскажите как заставить проинсталлироваться этого мерзавца? |
моральные индусы |
ссылка на твиттер битая |
Спасибо большое. |
Спасибо большое. |
Какое-то количество пыли есть, не смертельное. Но в шкафу с |
Какое-то количество пыли есть, не смертельное. Но в шкафу сильно теплее, диски 50-55, летом и 60 было, процессор потеплее (сейчас вот 59). |
Ага, ясно. А из шкафа оно пыль не собирает? По дискам така |
Ага, ясно. А из шкафа оно пыль не собирает? По дискам такая же ситуация. Сейчас стоит на столе, температура веников 42 градуса. |
Лето нормально пережили (кондиционера в этой комнате нет). П |
Лето нормально пережили (кондиционера в этой комнате нет). Правда без оверклока, с оверклоком процессора было плохо. Три диска, 2Tb WD Caviar Green. Из хитростей - вентилятор выдува дует в дырку в шкафу (пришлось просверлить такую). |
У меня тут назрела необходимость засунуть NAS Synology 1010+ |
У меня тут назрела необходимость засунуть NAS Synology 1010+ в какой-нибудь шкаф и я вспомнил этот пост. Как там сервер, не перегревается? Как решён вопрос с вентиляцией, сколько дисков в нём сейчас? |
Спасибо за четкое описание |
Спасибо за четкое описание обзора рюкзака Kata 3N1-30, хочу как раз в этой сфере что нибудь прикупить для своей зеркалки, а то не удобно носить в обычном портфеле, сразу фотоаппарат и несколько объективов. |
Я тут попробовал на виндсерфинге походить... В Крыму... Прик |
Я тут попробовал на виндсерфинге походить... В Крыму... Прикольно. |
Вот мой приятель http://parusa.narod.ru/reestr/msk2/balandin |
Вот мой приятель http://parusa.narod.ru/reestr/msk2/balandin_d.htm , зовут Митя, он когда-то руководил парусным клубом Щелково-Фрязино, вдруг что подскажет. Если что - можешь ссылаться на меня. |
Вообще, по-моему сентябрь-октябрь самое время для парусных т |
Вообще, по-моему сентябрь-октябрь самое время для парусных тренировок на озерах Средней Полосы. Серфингисты уже расползлись по домам, они холодную воду не любят. |
Pages
