• Как передать аргументы в неизвестную функцию?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вызвать функцию, название которой находится в переменной, можно несколькими способами:
    // Когда аргументы и их количество известно заранее
    // Такой вариант мне кажется самым читабельным
    // Оборачивать в фигурные скобки не обязательно
    // Я это делаю всегда для того, чтобы было видно, что вызов динамический
    $this->obj->{$function}($arg1, $arg2)

    или
    // Подходит как раз для описанного случая
    // Аргументы могут быть любыми и передаются в виде массива
    call_user_func_array([$this->obj, $function], [$arg1, $arg2]);
    Ответ написан
    Комментировать
  • Зачем в angularjs использовать jquery?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    angular - для построения приложений, jquery - для работы с DOM. Знаете, бывает такая грустная и печальная ситуация, когда в спецификациях к проекту прописывают очень грустную строчку типа "Supported browsers: IE8+ and last two versions of another browsers". И вот после того как закончишь пускать скупую слезу, открываешь консоль, переходишь в директорию проекта и пишешь: bower install --save jquery.

    Суть не в дурацких jQuery плагинах (хотя и это может быть вполне себе веской причиной), а в том что jQuery предоставляет чертовски удобное API для работы с DOM, которое содержит в себе огромную кучу кастылей только ради того, что бы вы не думали о тех нюансах, которые могут вас подстерегать при казалось бы банальных вещях.

    На своих проектах, которые реализуются под десктопные браузеры, я всегда подключаю jQuery, только потому что обжегся уже несколько раз при использовании API браузера в чистом виде. Иногда там такие интересные особенности закрадываются, которые без пары лет опыта работы и не узнаешь, а тратить деньги клиента только потому что "jQuery это уже не круто" и потом впустую просирать время за долгими ночными дебагами, имхо дебилизм.
    Ответ написан
  • Как обойти данную "загвоздку" синтаксиса?

    Проблема в том, что аякс-запрос - асинхронная функция и цикл for просто не ждет ее выполнения. В итоге запрос выполняется с последним значением переменной.

    Вот так можно попробовать:

    for (var id = 1; id < 11; id++) { 
      (function (id) {
        $.post('getname.php', {Id: id}, function() {	
          alert(id);
        }, 'json');
      })(id)
    }
    Ответ написан
    2 комментария
  • Оптимизирует ли gcc геттеры/сеттеры без inline?

    @RPG
    Если тело геттера/сеттера находится в области видимости его использования, то вполне подставляет: goo.gl/zry8bv. Для этого достаточно флага -O2. Впрочем, пример натянутый и далёк от реальности.

    Однако в случае сложного кода (более 1 файла) перед разработчиком встанет выбор: оставить тело функции в заголовочном файле или же компилировать реализацию отдельно в другом cpp-файле. Если в заголовочном файле тела функции не окажется, компилятор будет вынужден сводить объектный код функции вместо исходного и нужно включить флаг -flto при компиляции.

    Далее уже всё зависит от того, что вы делаете - библиотеку или свою собственную программу. В библиотеке методы как правило прячут и не делают их inline, чтобы не вынуждать клиентские программы к перекомпиляции при изменении методов класса.

    Мой совет - оставьте этот вопрос до тех пор, пока вы не обнаружите свой геттер или сеттер в верхней строчке профилировщика.

    UPD. Эксперимент с новым компилятором (gcc 4.9) показывает, что флаг -O2 -flto таки проводит межпроцедурную inline-оптимизацию автоматически, если это возможно. Второй из доступных мне компиляторов (gcc 4.4) этого делать не умеет - тут ещё нет поддержки LTO. Соответственно при использовании новых компиляторов действительно смысла в inline нет. Вот здесь файлы для тестирования: https://gist.github.com/scriptum/57ae4d2524d42fccb494
    Ответ написан
    1 комментарий
  • Почему не работают регулярки?

    @Sumor
    Символы { и } являются служебными и их нужно маскировать.
    std::regex pattern("[{](?:(\\w+):)*(\\w+)[}]");
    Ответ написан
    1 комментарий
  • Как заработать новичку на низкоуровневом программировании?

    @FoxInSox
    Хм, нужно устроится на работу.
    Ответ написан
    Комментировать
  • Как защитить сайт от прямого перехода?

    @m-haritonov
    <!DOCTYPE html>
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<title></title>
    	<script type="text/javascript">
    		if (window.top === window)
    			window.top.location = 'http://vk.com/app123456';
    	</script>
    </head>
    <body>
    test
    </body>
    </html>
    Ответ написан
    1 комментарий
  • Как в PHP извлечь содержимое тега, используя регулярные выражения?

    egor_nullptr
    @egor_nullptr
    $doc = new DomDocument('1.0', 'utf-8');
    $doc->loadXML('<body>'.$txt.'</body>');
    $xp = new DomXPath($doc);
    
    foreach ($xp->query('//a') as $anode) {
        echo $anode->nodeValue;
    };
    
    foreach ($xp->query('//span[@class="date"]') as $date_node) {
        list($date, $time) = explode(' - ', $date_node->nodeValue);
    };
    Ответ написан
    Комментировать
  • Будет ли версия Тостера для iOS?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Когда людям приходит в голову вопрос - "а будет ли приложение на iOS?", почему им сразу после этого вопроса не приходит на ум второй - "Зачем?" ?
    Ответ написан
    2 комментария
  • Как сложить два числа в JavaScript?

    @issssrt
    var c = Number(a)+Number(c);
    alert(c);
    p.s. Товарищи новички, прежде чем задавать вопросы, погуглите в гугле.
    Ответ написан
    2 комментария
  • Как сложить два числа в JavaScript?

    @rozhik
    Ссылка удалена модератором.
    var a=10; var b=15;
    for(  alert('run');  b>0 ; b --,a++ ) alert('I am working');
    alert('Add one to '+a+' To get result ');
    Ответ написан
    Комментировать
  • Как сложить два числа в JavaScript?

    @codercat
    Вам стоит использовать Jquery для этого
    Ответ написан
    3 комментария
  • Криптографический алгоритм шифрования по мастер-паролю

    Carcharodon
    @Carcharodon
    люблю криптографию
    Чем хорош RSA, например, то с ним можно использовать любой «мастер-ключ», так как там открытый и закрытый ключ взаимозависимые, а не как, например, в протоколе Эль-Гамаля.

    Но тут будет проблема. Для программы, которая сама хранит пароли, хранить еще информацию о ключе шифрования ключей (мастер-ключе) — как-то небезопасно.
    Лучше использовать другой подход. А именно стойкую (!) криптографическую хэш-функцию (так проще и информации о мастер-ключе почти не будет в программе) и симметричный алгоритм шифрования (3DES, AES, любой другой, который будет понятен для реализации. Даже ГОСТ28147-89 подойдет. Для всех них в сети много максимально разжеванных алгоритмов).

    Теперь собственно протокол работы программы.

    Шифрование:
    Есть сообщение M, содержащее пользовательский пароль, который необходимо хранить в программе.
    Шифруется оно случайно созданным ключом шифрования K.
    К в свою очередь шифруется ключом шифрования ключей (мастер-ключом).
    Ключ шифрования ключей — пусть будет результат воздействия стойкой криптографической хэш-функции H() на фразу-пароль P.

    Расшифрование:
    Я беру фразу-пароль P.
    Беру от нее хэш H(P).
    Расшифровываю разовый ключ шифрования данных K с помощью H(P) в качестве ключа.
    Расшифровываю с помощью K хранимое сообщение М, содержащее пароль.

    Возможные проблемы:
    стойкость хэш-функции
    равномерное распределение ГПСЧ

    В остальном, будет очень даже увлекательное занятие. Для меня бы точно было таким =)
    А если для хранения данных использовать списки и деревья, то преподаватели будут довольны)))
    Ответ написан
    1 комментарий
  • Криптографический алгоритм шифрования по мастер-паролю

    ivan_kolmycheck
    @ivan_kolmycheck
    Если коротко суммировать все ответы, то: вам нужны симметричные алгоритмы (AES, Twofish, Blowfish). RSA — ассиметричный.

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

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

    Из-за особенностей ассиметричных алгоритмов, безопасная длина ключей там побольше, чем в симметричном, да и операции более ресурсоёмкие. Поэтому часто используется гибридное шифрование, где сообщение шифруется симметрично случайно сгенерированным ключом, ключ шифруется ассиметрично и приклеивается к зашифрованному сообщению. Получатель «откусывает» ключ от сообщения, расшифровывает его ассиметрично и получает ключ, которым расшифровывает сообщение.
    Ответ написан
    1 комментарий
  • Криптографический алгоритм шифрования по мастер-паролю

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    1. Начните с теории на уровне «для чайников».
    Вам нужно понять, что такое «симметричное» и «асимметричное» шифрование, что такое хэширование с т.з. криптографии, когда они используются, какие данные можно шифровать, а какие — нельзя (да-да!), базовые вещи про режимы работы шифров и использование-переиспользование ключей.
    2. Дальше — выбор алгоритмов не принципиален вообще.
    Реализация RSA — это ровно одна лаба по объему.
    Реализация простого симметричного шифра типа упомянутого XXTEA — еще меньше.
    Реализация приличной хэш-функции — тут посложнее (но подсказка: из приличного симметричного алгоритма шифрования можно сделать довольно приличную хэш-функцию).
    3. Принципиально — понимание что к чему (см. п.1).
    Можно вообще ничего не реализовывать, а сначала собрать из готовых кусков и поиграться.
    Ответ написан
    Комментировать
  • Написать приложение для iPhone с нуля?

    Nof1000
    @Nof1000
    CODE & DESIGN
    От AppleInsider был довольно неплохой(для новичков) цикл видеоуроков: Научи меня Xcode
    Ответ написан
    Комментировать
  • Как в php подменить родителя класса?

    nazarpc
    @nazarpc
    Open Source enthusiast
    А что если наследовать не от стандартного, а от своего, который в свою очередь наследует стандартный

    class custom_PDOStatement extends \PDOStatement {}
    

    Тогда custom_PDOStatement можно будет подменить для теста.
    Ответ написан
    3 комментария
  • Что означает warmup кеша в Symfony2?

    d4rkr00t
    @d4rkr00t
    Прогрев кэша? Закешировать генерирующиеся данные и потом уже когда кэш прогрет отдавать их без генерации.
    Ответ написан
    2 комментария