Pull to refresh
49
0.1

Погромист

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

В отличие от пи федоры, которая такого не прощает. Или новеля — суси. Они оба — с рождения перепатчены так, что от ванили там мало что остается. Конечно, там патчей много полезных и нужных, но попробуй их отдели от тонны трехстрочников, которые регулярно пролетают исключительно в 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()?

nsresult GetAsText(
    const nsACString &aCharset, 
    const char* aData, 
    PRUint32 dataLength, 
    nsAString& aResult)
{
    nsresult rv;
    nsCAutoString charsetGuess = aCharset;

    nsCAutoString charset;
    nsCOMPtr<nsICharsetAlias> alias = do_GetService(NS_CHARSETALIAS_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv, rv);

    rv = alias->GetPreferred(charsetGuess, charset);
    NS_ENSURE_SUCCESS(rv, rv);
    ...
}
(обратите внимание — в 10-строчнике мы видим 3 разных ns*String и const char* до кучи)

Как только склеиваем ежа с ужом — тут и начинаются три метра колючей проволоки.

Не Qt единым, что называется ;-)
Я в свое время провел блиц-опрос — что вам бы хотелось хранить в облаке с домашнего компьютера, кроме рабочих файлов?

И на первое место вышли даже не фотографии, но — именно домашние медиа-коллекции. И аргумент убойный — если медиабиблиотеку собирал десять лет подряд, то она имеет большую субьективную ценность.

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

Но тем не менее.
(усиливает накал паранойи)

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

Результат — несмотря на супермощное шифрование, компания точно знает, что ты залил в облако нелицензионный контент.

(переходит к обычному состоянию)
Насколько я помню, ГЭС уже и так построены в большинстве пригодных мест, так что ресурс уже использован.

По солнечным батареям — в солнечных местах можно из них крыши делать, а вырабатываемую ими энергию — в электросеть подавать. Как раз дадут резерв по мощности, потребление днем выше. В Германии так делали, но излишки стало некудпа девать, емнип.
Дополню.

В упоминаемые 90е годы рисовать приходилось массу всего, начиная от тулбаров и заканчивая своими деревьями и таблицами. Занимало это уйму времени и в силу тормознутости тогдашнего железа еще и обвешивалось кучей хаков — эти события всегда считаем, а эти слишком старые, а тут вообще рыбу заворачиваем.

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

Это сейчас хорошо — UTF рулит, а в 90е нарисовать на формочке одновременно японский и китайский было возможно только в том случае, если мы написали свой отдельный edit box с блэкджеком, полностью саморисованный.

Сравните с нынешней ситуацией — картинки подложить в случае если клиент некрофил ;-)
1% — это нормально, это разумная цифра.

А вот если их будет 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. Везде где можно — переходим на ключи.

12 ...
48

Information

Rating
4,067-th
Location
München, Bayern, Германия
Date of birth
Registered
Activity