Почему Bing запутывает их JavaScript?

Ответ Джереми для меня не совсем сработал, я думаю, потому что у меня был стек навигации в виде вкладок с модальным диалогом поверх него. Я использую следующее прямо сейчас, и оно работает для меня, но ваш пробег может отличаться.

 // dismiss keyboard (mostly macro)
[[UIApplication sharedApplication].delegate dismissKeyboard]; // call this in your to app dismiss the keybaord

// --- dismiss keyboard (in indexAppDelegate.h) (mostly macro)
- (void)dismissKeyboard;

// --- dismiss keyboard (in indexAppDelegate.m) (mostly macro)
// do this from anywhere to dismiss the keybard
- (void)dismissKeyboard {    // from: http://stackoverflow.com/questions/741185/easy-way-to-dismiss-keyboard

    UITextField *tempTextField = [[UITextField alloc] initWithFrame:CGRectZero];

    UIViewController *myRootViewController = <#viewController#>; // for simple apps (INPUT: viewController is whatever your root controller is called.  Probably is a way to determine this progragrammatically)
    UIViewController *uivc;
    if (myRootViewController.navigationController != nil) { // for when there is a nav stack
        uivc = myRootViewController.navigationController;
    } else {
        uivc = myRootViewController;
    }

    if (uivc.modalViewController != nil) { // for when there is something modal
        uivc = uivc.modalViewController;
    } 

    [uivc.view  addSubview:tempTextField];

    [tempTextField becomeFirstResponder];
    [tempTextField resignFirstResponder];
    [tempTextField removeFromSuperview];
    [tempTextField release];

}
11
задан Shog9 2 July 2009 в 02:02
поделиться

11 ответов

Они не запутывают. Они минимизируют , чтобы уменьшить полосу пропускания, используемую миллионами запросов, которые они видят каждый день.

Цель JavaScript и CSS минификация всегда заключается в сохранении эксплуатационные качества кода при уменьшении его общего байта след (как в сыром виде, так и после gzipping, как и большинство JavaScript и CSS обслуживается с производственных веб-серверов gzip как часть протокола HTTP).

Возможно, вам будет интересно прочитать Yahoo! Сообщение в блоге о пользовательском интерфейсе под названием «Минификация против обфускации» .

31
ответ дан 3 December 2019 в 00:54
поделиться

2 main причины для обфускации вашего кода:

  • Уменьшите общий размер файла (как вы упомянули). Если вы замените функцию CallThisFunctionAndReturnAnArray на «C» - вы сохранили много символов в вашем файле.

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

7
ответ дан 3 December 2019 в 00:54
поделиться

Размер файла, несомненно, будет преимуществом, настолько большим, что, например, Gmail сам не только делает это, но и архивирует его содержимое.

4
ответ дан 3 December 2019 в 00:54
поделиться

В этом есть абсолютное преимущество. Однако следует отметить кое-что важное. На самом деле нет причин для такого кода. Скорее, после того, как вы закончите что-то делать (и писать в хорошо читаемой форме), используйте минификатор, чтобы удалить ненужные пробелы и тому подобное. Для файлов большего размера это может значительно сократить время загрузки.

2
ответ дан 3 December 2019 в 00:54
поделиться

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

Что касается запутывания, чтобы отвести посторонние глаза - Нет. Я не делаю этого.

2
ответ дан 3 December 2019 в 00:54
поделиться

Только для уменьшения размера и только для больших модулей. Гораздо большего выигрыша можно добиться с помощью gzip.

Если вы используете какой-либо сторонний код, вам может потребоваться оставить их комментарии об авторских правах / лицензиях без изменений при минимизации. Люди часто забывают это делать. Возможно, вы захотите оставить нетронутыми и свои собственные комментарии об авторских правах.

2
ответ дан 3 December 2019 в 00:54
поделиться

Да. Уменьшение размера файла не только уменьшает время загрузки, но и время синтаксического анализа, что очень полезно в некоторых браузерах (особенно в IE6, порожденном дьяволом).

Это, вероятно, требует повторного минификации тегов.

1
ответ дан 3 December 2019 в 00:54
поделиться

использовать std :: stringstream

unsigned int x;   
std::stringstream ss;
ss << std::hex << "fffefffe";
ss >> x;

, следующий пример дает -65538 как результат:

#include <sstream>
#include <iostream>

int main() {
    unsigned int x;   
    std::stringstream ss;
    ss << std::hex << "fffefffe";
    ss >> x;
    // output it as a signed type
    std::cout << static_cast<int>(x) << std::endl;
}

В новом стандарте C ++ 11 есть несколько новых служебных функций, которые вы можете использовать! в частности, существует семейство функций «строка в число» ( http://en.cppreference.com/w/cpp/string/basic_string/stol и http: //en.cppreference .com / w / cpp / string / basic_string / stoul ). По сути, это тонкие обертки вокруг C ' s функции преобразования строки в число, но знают, как работать с std :: string

Итак, самый простой ответ для нового кода, вероятно, будет выглядеть так:

std::string s = "0xfffefffe";
unsigned int x = std::stoul(s, nullptr, 16);

ПРИМЕЧАНИЕ: Ниже мой оригинал ответ, который, как сказано в редакции, не является полным ответом. Для функционального решения поместите код над строкой: -).

Похоже, что, поскольку lexical_cast <> определен как имеющий семантику преобразования потока. К сожалению, потоки не понимают нотацию «0x». Так что и boost :: lexical_cast , и моя рука, брошенная одним, не очень хорошо работают с шестнадцатеричными строками. Вышеупомянутое решение, которое вручную устанавливает входной поток в шестнадцатеричный формат, отлично справится с этим.

В Boost есть кое-что для этого , которое также имеет неплохие возможности проверки ошибок. Вы можете использовать это так:

try {
    unsigned int x = lexical_cast<int>("0x0badc0de");
} catch(bad_lexical_cast &) {
    // whatever you want to do...
}

Если вы этого не сделаете '

1
ответ дан 3 December 2019 в 00:54
поделиться

Я хотел бы провести различие между оптимизацией для уменьшения размера файла и запутыванием с предполагаемой целью предотвращения (или, по крайней мере, жесткого) обратного проектирования. Кроме того, в Google, например, есть «компилятор», который расширяет JavaScript, включая некоторые расширенные системы типов и тому подобное; и этот расширенный код затем «компилируется» в обычный JavaScript. Очевидно, имеет смысл создать этот сгенерированный код оптимизированным образом - нет необходимости делать его поддерживаемым.

1
ответ дан 3 December 2019 в 00:54
поделиться

I would bet the main reason they do this is to reduce the file size. Smaller files makes the page load faster.

Obfuscating is not as important. Also, it can make things a pain to debug, depending on how you do it.

Speed is everything in search.

1
ответ дан 3 December 2019 в 00:54
поделиться

And it made me wonder if there is any advantage to obfuscate your (X)HTML, CSS and Javascript like this? To reduce the size of the file perhaps?

Obfuscation is slightly different from another common technique with Javascript files, minification. Minification is common with Javascript since it reduces the file size, which, with large files can significantly reduce their size (since large Javascript files often contain lots of comments, line breaks, unneeded spaces and so forth which can be stripped to reduce the size of the script).

Obfuscation, on the other hand, is also more about concealing your code from others, by changing variable names to others which are obscure, or that remove meaning from the Javascript files. However, by doing this it often reduces the file size, since variable names are often much shorter than those in the original file. This is a common technique to make it harder for others to simply copy code, and is more about protecting the code which is obviously much more easily accessible compared to other platforms.

Doing both minification and obfuscation are advantageous to your scripts, since they reduce the size of your Javascript files, which reduces the time taken to load your pages, and also makes it harder for others to reverse engineer it (if this is an issue for your code).

However: note that it's not foolproof - there are certain tools that exist which make it easier to reverse engineer obfuscated code, so it doesn't make it 100% safe from others who really want to take a look at how your scripts work.

1
ответ дан 3 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: