Окаменел — в хорошем смысле, ибо выдерживает массу издевательств, даже особо изощренные. Ванильным ведром вот к примеру — выдерживает, по крайней мере еще лет пять назад — выдерживал.
В отличие от пи федоры, которая такого не прощает. Или новеля — суси. Они оба — с рождения перепатчены так, что от ванили там мало что остается. Конечно, там патчей много полезных и нужных, но попробуй их отдели от тонны трехстрочников, которые регулярно пролетают исключительно в LKML. ;-)
Вот кстати Линус тут открытым текстом над работой еще ведра 2.3 (ух, давно было!) заявлял — ванильное ведро оно для мейнтейнеров, на продакшен не ставьте. Ставьте с патчами Алана и К.
Ну, я-то еще в 90х наигрался с компиляциями и патчами, уже старый стал и ленивый ;-)
Кстати в любом случае я ваниллу не рекомендую, берите пачсет вашего дистрибутивного вендора. А то преценденты отвала юзерланда после переезда на ваниллу — они таки бывают не только в федорином горе. Если это не дебиан конечно, этому мамонту все едино, окаменел еще до рождения.
Если без хардкора — то работает из коробки, и апдейты ведер не приводят к необходимости шаманить. И новеай отключать в конфигах не надо, к слову.
Вот пару раз прилетал корявый апдейт libNVCtrl — да, это было неприятно. То месяцами живешь в s2disk, перезагружаясь только при апдейтах ядра и иксов, а тут — нате вам с кисточкой, перезагрузите. Перезагрузил — после того как из очередного засыпания монитор так и не проснулся, да.
(смотрит с ужасом) вы эту новую версию из ванильных сырцов собираете что-ли? 8-)
а насчет фуль-скрина — да, у некоторых казуальных игрушек есть такое. Не умеют xrandr очевидно. Приходится их в окошко указывать. Но тут не факт что это нвидия виновата — она-то честно expose всю нужную траву.
Вот если в конфиге это стандартное поведение запретить — то да, это содом выходит, но тут уж — у всех подряд крышу сносит.
а зачем эти ужимки и прыжки? Копируешь из knowledge base 2 строчки, и все.
sudo zypper addrepo ...
sudo zypper install ...
и проприетарная нвидия со своим драйвером уже на месте. Апдейты и прочее — в комплекте.
С двухмониторной конфигурацией тоже отлично — прицепил 2й монитор, запустил nvidia-settings, выбрал — что он физически справа от предыдущего, TwinView. Более того — у обоих мониторов совершенно разные разрешения — 1280*1024 и 1980*1200 соответственно.
KDE тут же разобралось что их два, прекрасно перекидывает мышкой окошки с одного на другой, максимизирует тоже не на два экрана сразу. Я даже ящик не перезагружал. Что с моим xrandr не так? OpenGL, Composite/Damage, Render — все на месте. Вайновые игры — в наличии.
А если еще про мак вспомним и его NSString / CFStringRef? Или всяких там плагинов под кроссплатформенный пакет?
Бывает, что конертация строк, путей, и прочего — pain in ass еще тот.
Вот к примеру частенько приходится тягать с собой гору всяких platform dependent traits в виде UTF16Char, UTF8Char и прочих, и в нужных местах переконвертировать системозависимым способом между std::[w]string, UTF{16|8}Char*, char*, wchar_t* и пр.
Оно конечно не так чтобы сложно, по надцатому-то разу, но ведь еще и изобретать приходится вот такое
public class MyKewlInputStream(const std::wstring&)
defined by system-specific implementation
что изрядно доставляет.
И не сказать чтобы такое счастье пишется один раз в пятилетку — большие старые пакеты предоставляют свои строки, свои стримы, свои конвертеры, и пр. и пр., которые как-то надо оборачивать. И из этих оберток — еще и системоспецифичные хэндлы, форки и дескрипторы торчат, как иголки из подушечки для булавок.
К примеру — адобовые PMString / WideString, PMStream.
Оборачивать приходится просто для того, чтобы не писать каждый раз нечто вроде такого
WideString wsFileName(fileName.c_str());
PMString pmFileName = PMString(wsFileName);
IDFile idFileName;
FileUtils::PMStringToIDFile(pmFileName, idFileName);
InterfacePtr<IPMStream> stream(StreamUtil::CreateFileStreamWriteLazy(
idFileName, kOpenOut | kOpenTrunc));
// Наконец-то у нас что-то system specific InDesign API и можно с этим работать
или такого (крестится)
#ifdef WINDOWS
// клятый фотошоп нам подсунул под виндой UTF16Char*
uint16* result = fSpec->mReference;
numUtf16 = (uint32)wcslen((const wchar_t*)result);
// для остроты ощущений это все еще в Java сунем
jstring filePath = env->NewString(result, numUtf16);
...
#else
// а под маком Fork aka FSIORefNum, добро пожаловать в отладчик
CFStringRef path = FSRefToCFString(&fSpec->mReference);
uint32 numUtf16 = (uint32)CFStringGetLength(path);
UniChar* result = nil;
if(numUtf16 > 0) {
result = new UniChar[numUtf16+1];
CFRange rangeToCopy;
rangeToCopy.location = 0;
rangeToCopy.length = numUtf16;
CFStringGetCharacters(path, rangeToCopy, result);
// для остроты ощущений это все еще в Java сунем
jstring filePath = env->NewString(result, numUtf16);
...
}
CFRelease(path);
#endif
Или вспомним мозилловые nsString / nsCString и конертации туда-сюда, NS_CStringToUTF16 и NS_LITERAL, NS_UTF16ToCString и прочие. А их же SOA и do_GetService()?
Я в свое время провел блиц-опрос — что вам бы хотелось хранить в облаке с домашнего компьютера, кроме рабочих файлов?
И на первое место вышли даже не фотографии, но — именно домашние медиа-коллекции. И аргумент убойный — если медиабиблиотеку собирал десять лет подряд, то она имеет большую субьективную ценность.
Выборка была нерепрезентативная — опрашивал я друзей и знакомых, подавляющим большинством там были айтишники.
Насколько я помню, ГЭС уже и так построены в большинстве пригодных мест, так что ресурс уже использован.
По солнечным батареям — в солнечных местах можно из них крыши делать, а вырабатываемую ими энергию — в электросеть подавать. Как раз дадут резерв по мощности, потребление днем выше. В Германии так делали, но излишки стало некудпа девать, емнип.
В упоминаемые 90е годы рисовать приходилось массу всего, начиная от тулбаров и заканчивая своими деревьями и таблицами. Занимало это уйму времени и в силу тормознутости тогдашнего железа еще и обвешивалось кучей хаков — эти события всегда считаем, а эти слишком старые, а тут вообще рыбу заворачиваем.
А уж развлечения на тему локализации — вообще превращались в нечто из области эзотерики. «Вот этот набор контролов есть только во французской версии», ага. И при поддержке 20ти языков — число формочек достигало невероятных цифр. И это — в Delphi, тогдашнем RAD нумер один.
Это сейчас хорошо — UTF рулит, а в 90е нарисовать на формочке одновременно японский и китайский было возможно только в том случае, если мы написали свой отдельный edit box с блэкджеком, полностью саморисованный.
Сравните с нынешней ситуацией — картинки подложить в случае если клиент некрофил ;-)
Я в свое время вообще шифрование прозрачное делал на уровне драйвера ФС пофайлово, чтобы незашифрованное до драйвера диска не долетало. И бонусом — эту шифрованную папку в дропбокс скармливал, только дропбокс запускал от другого пользователя, чтобы на лету не расшифровывало ;-)
В результате — сам сижу паном, работаю, а все кто не я — тем шифрованный контент.
Увы — при таком подходе замучился подпорки ставить, потому как размеры файла с точностью до байта выдержать надо было. Вот так в папочку кинешь зип, зайдешь — а тебе в ответ «corrupted end-of-central signature».
Тут идея не про конкретные фотки/файлы, а в статистике. Паттерн получается нехарактерный.
Разверну в трех словах.
Типовые use-cases с фотографиями какие?
1. Скачал у кого-то (постер, демотиватор, фотку кошечки, нужное подставить) и залил себе. Результат? Правильно, еще 100500 таких же лежит 1-в-1. Хэши — совпадают. И больше не меняется. Write once.
2. Щелкнул айфоном, донес до компа сразу пачку, откропал и залил. Совпадений нет, но файлы больше не меняются. Write once.
Сравниваем с «я в картинку прячу».
Постоянно меняется. По надцать раз в день — одна и та же картинка, и так — месяц подряд.
Характерный ли это паттерн? Отож, к гадалке не ходи, стеганография.
Поэтому, чтобы под такой стат-анализ не попасть, надо почаще имена картинок менять, оставляя рядом старые версии (это важно). И заливать не по одной штуке, а в компании новых фоток с айфона. В этом случае этот use pattern уже выглядит как «я снимаю все что вижу», а не «я тут под фонарем прячусь».
Что в общем-то знатно добавляет возни на ровном месте.
1. Хранить в облаках — небезопасно.
1.1. Не надо хранить там ваши пиратские коллекции.
1.2. Прятать надо грамотно, разбавляя шумом.
1.3. Толика здоровой паранойи не помешает, шифруем сами.
2. Обрабатывать в облаках — выгодно.
2.1. Для этого надо строить облачные сервисы по-новому.
2.2. Пережить атаки теперь проще.
3. Злым хакерам теперь тоже проще — собрать ферму для взлома паролей может каждый.
3.1. Используем пароли побезумнее и подлиннее, не из словаря.
3.2. Используем Keepass и аналоги для управления паролями.
3.3. Везде где можно — переходим на ключи.
В отличие от
пифедоры, которая такого не прощает. Или новеля — суси. Они оба — с рождения перепатчены так, что от ванили там мало что остается. Конечно, там патчей много полезных и нужных, но попробуй их отдели от тонны трехстрочников, которые регулярно пролетают исключительно в LKML. ;-)Вот кстати Линус тут открытым текстом над работой еще ведра 2.3 (ух, давно было!) заявлял — ванильное ведро оно для мейнтейнеров, на продакшен не ставьте. Ставьте с патчами Алана и К.
Кстати в любом случае я ваниллу не рекомендую, берите пачсет вашего дистрибутивного вендора. А то преценденты отвала юзерланда после переезда на ваниллу — они таки бывают не только в федорином горе. Если это не дебиан конечно, этому мамонту все едино, окаменел еще до рождения.
Если без хардкора — то работает из коробки, и апдейты ведер не приводят к необходимости шаманить. И новеай отключать в конфигах не надо, к слову.
Вот пару раз прилетал корявый апдейт libNVCtrl — да, это было неприятно. То месяцами живешь в s2disk, перезагружаясь только при апдейтах ядра и иксов, а тут — нате вам с кисточкой, перезагрузите. Перезагрузил — после того как из очередного засыпания монитор так и не проснулся, да.
а насчет фуль-скрина — да, у некоторых казуальных игрушек есть такое. Не умеют xrandr очевидно. Приходится их в окошко указывать. Но тут не факт что это нвидия виновата — она-то честно expose всю нужную траву.
Вот если в конфиге это стандартное поведение запретить — то да, это содом выходит, но тут уж — у всех подряд крышу сносит.
а зачем эти ужимки и прыжки? Копируешь из knowledge base 2 строчки, и все.
и проприетарная нвидия со своим драйвером уже на месте. Апдейты и прочее — в комплекте.
С двухмониторной конфигурацией тоже отлично — прицепил 2й монитор, запустил nvidia-settings, выбрал — что он физически справа от предыдущего, TwinView. Более того — у обоих мониторов совершенно разные разрешения — 1280*1024 и 1980*1200 соответственно.
KDE тут же разобралось что их два, прекрасно перекидывает мышкой окошки с одного на другой, максимизирует тоже не на два экрана сразу. Я даже ящик не перезагружал. Что с моим xrandr не так? OpenGL, Composite/Damage, Render — все на месте. Вайновые игры — в наличии.
Про «нормальный фреймбуфер» — это что?
Бывает, что конертация строк, путей, и прочего — pain in ass еще тот.
Вот к примеру частенько приходится тягать с собой гору всяких platform dependent traits в виде UTF16Char, UTF8Char и прочих, и в нужных местах переконвертировать системозависимым способом между std::[w]string, UTF{16|8}Char*, char*, wchar_t* и пр.
Оно конечно не так чтобы сложно, по надцатому-то разу, но ведь еще и изобретать приходится вот такое
что изрядно доставляет.
И не сказать чтобы такое счастье пишется один раз в пятилетку — большие старые пакеты предоставляют свои строки, свои стримы, свои конвертеры, и пр. и пр., которые как-то надо оборачивать. И из этих оберток — еще и системоспецифичные хэндлы, форки и дескрипторы торчат, как иголки из подушечки для булавок.
К примеру — адобовые PMString / WideString, PMStream.
Оборачивать приходится просто для того, чтобы не писать каждый раз нечто вроде такого
или такого (крестится)
Или вспомним мозилловые nsString / nsCString и конертации туда-сюда, NS_CStringToUTF16 и NS_LITERAL, NS_UTF16ToCString и прочие. А их же SOA и do_GetService()?
(обратите внимание — в 10-строчнике мы видим 3 разных ns*String и const char* до кучи)
Как только склеиваем ежа с ужом — тут и начинаются три метра колючей проволоки.
Не Qt единым, что называется ;-)
И на первое место вышли даже не фотографии, но — именно домашние медиа-коллекции. И аргумент убойный — если медиабиблиотеку собирал десять лет подряд, то она имеет большую субьективную ценность.
Выборка была нерепрезентативная — опрашивал я друзей и знакомых, подавляющим большинством там были айтишники.
Но тем не менее.
Хэши файлов сравниваются по идее до шифрования а не после. Вуаловцы себе не враги — хранить кучу раз одно и то же.
Результат — несмотря на супермощное шифрование, компания точно знает, что ты залил в облако нелицензионный контент.
(переходит к обычному состоянию)
По солнечным батареям — в солнечных местах можно из них крыши делать, а вырабатываемую ими энергию — в электросеть подавать. Как раз дадут резерв по мощности, потребление днем выше. В Германии так делали, но излишки стало некудпа девать, емнип.
В упоминаемые 90е годы рисовать приходилось массу всего, начиная от тулбаров и заканчивая своими деревьями и таблицами. Занимало это уйму времени и в силу тормознутости тогдашнего железа еще и обвешивалось кучей хаков — эти события всегда считаем, а эти слишком старые, а тут вообще рыбу заворачиваем.
А уж развлечения на тему локализации — вообще превращались в нечто из области эзотерики. «Вот этот набор контролов есть только во французской версии», ага. И при поддержке 20ти языков — число формочек достигало невероятных цифр. И это — в Delphi, тогдашнем RAD нумер один.
Это сейчас хорошо — UTF рулит, а в 90е нарисовать на формочке одновременно японский и китайский было возможно только в том случае, если мы написали свой отдельный edit box с блэкджеком, полностью саморисованный.
Сравните с нынешней ситуацией — картинки подложить в случае если клиент некрофил ;-)
А вот если их будет 50%, то акций «еще надцать гигабайт бесплатно тем кто сказал три раза ку» станет поменьше.
В результате — сам сижу паном, работаю, а все кто не я — тем шифрованный контент.
Увы — при таком подходе замучился подпорки ставить, потому как размеры файла с точностью до байта выдержать надо было. Вот так в папочку кинешь зип, зайдешь — а тебе в ответ «corrupted end-of-central signature».
Так что хорошую идею отложил в долгий ящик.
Разверну в трех словах.
Типовые use-cases с фотографиями какие?
1. Скачал у кого-то (постер, демотиватор, фотку кошечки, нужное подставить) и залил себе. Результат? Правильно, еще 100500 таких же лежит 1-в-1. Хэши — совпадают. И больше не меняется. Write once.
2. Щелкнул айфоном, донес до компа сразу пачку, откропал и залил. Совпадений нет, но файлы больше не меняются. Write once.
Сравниваем с «я в картинку прячу».
Постоянно меняется. По надцать раз в день — одна и та же картинка, и так — месяц подряд.
Характерный ли это паттерн? Отож, к гадалке не ходи, стеганография.
Поэтому, чтобы под такой стат-анализ не попасть, надо почаще имена картинок менять, оставляя рядом старые версии (это важно). И заливать не по одной штуке, а в компании новых фоток с айфона. В этом случае этот use pattern уже выглядит как «я снимаю все что вижу», а не «я тут под фонарем прячусь».
Что в общем-то знатно добавляет возни на ровном месте.
А после инцидентов начнут доступ в облака запрещать, не без этого.
Если тезисно, то звучит это так
1. Хранить в облаках — небезопасно.
1.1. Не надо хранить там ваши пиратские коллекции.
1.2. Прятать надо грамотно, разбавляя шумом.
1.3. Толика здоровой паранойи не помешает, шифруем сами.
2. Обрабатывать в облаках — выгодно.
2.1. Для этого надо строить облачные сервисы по-новому.
2.2. Пережить атаки теперь проще.
3. Злым хакерам теперь тоже проще — собрать ферму для взлома паролей может каждый.
3.1. Используем пароли побезумнее и подлиннее, не из словаря.
3.2. Используем Keepass и аналоги для управления паролями.
3.3. Везде где можно — переходим на ключи.