Задать вопрос
  • C++14 имеет достаточно фич, что бы забыть о PHP?

    AterCattus
    @AterCattus
    Люблю быстрый backend
    Про объективность использования C++ это вам уже и так понаписали. Давайте растолкую про не устраивающую вас логику PHP. Правда в другом порядке.

    <?php $a = "2d9"; $a++; echo $a; → 2e0

    a — строка. Инкремент строки (которая не является записью в 10чной СЧ) выполняется по принципу Perl: «A»++ = «B», «Z»++ = «AA», «AA»++ = «AB». Вот и получаем «2e0».

    <?php $a = "2d9"; $a++; $a++; echo $a; → 3

    Если же строка содержит нечто, похожее на 10чную СЧ, то приводим к целому и инкрементируем. Второй инкремент дает «2e0» = 2*10^0 = 2. 2++ = 3.

    <?php $a = "2d9"; $a+=2; echo $a; → 4

    Арифметика без инкремента сразу приводит строку к числу, и мы просто считаем 2+2.

    Нормальная логика, если учесть, как PHP используется. Это как удивляться, почему инкремент short* увеличивает значение указателя на 2, а не «как должно быть» на 1 :)
    Ответ написан
    Комментировать
  • В чем существенная разница моделей Asus Zenbook UX32VD?

    mrspd
    @mrspd
    Не проще за такой ценник макбук какой-нибудь взять и накатить вин8 на него? :)
    Ответ написан
    2 комментария
  • Можно ли узнать mac-адрес сетевушки произвольного веб-сервера в интернете?

    @bondbig
    Мак-адрес относится к L2, а это значит, что за пределы отдельно взятого L2-сегмента (грубо говоря, за пределы ближайшего роутера) информация о мак-адресах не выходит, просто за ненадобностью, так уж устроена многослойная архитектура современных сетей.
    Ответ написан
    Комментировать
  • Какие 3D фильмы покупать?

    @ykochubeev
    Так как у LG технология 3D черезстрочная, то каждый глаз видит картинку с вертикальным разрешением 540 строк. Горизонтальное при этом так и остается 1920.
    Поэтому для LGлучше всего подходят вертикальные стеропары — у них как раз такое разрешение 1920х540.

    Если скачаете горизонтальную, то каждый глаз будет видеть картинку все теже 540 строк по вертикали, но при этом в иходном сигнале будет занижена в два раза горизонтальная четкость — до 960. В итоге в этом варианте картинка будет 960х540. Что явно жухе.
    Ответ написан
    Комментировать
  • Распознавание цифр на лету в приложении под iOS?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Често признаюсь я далек от iOS разработки и решил начать изучение с написания, как мне кажется, несложного приложения.

    Удачи!!!
    Ответ написан
    Комментировать
  • Что такое «101»?

    @werwooolf
    Классы кодируются как 3-4 буквы предмета + 3 цифры уровня класса. Сотни в коде примерно соответствуют году обучения в 4-летнем колледже.
    1хх — freshhman (1 курс) — вводные классы
    2xx — sophmore (2 курс)
    3xx — junior (3 курс)
    4xx — senior (4 курс) — специализированные классы повышенного уровня сложности

    Студенту нельзя (или просто не рекоммендуется) брать курсы по номеру выше чем его год обучения.
    Для магистров и аспирантов классы будут соотвественно начинаться с 5хх-9хх.

    Десятки и сотни в номере обозначают разные классы, чаще всего нумерация идет в порядке увеличения сложности, или зависимости классов. Так, например, чтобы взять класс FIN345 («Финансы — средний уровень») нужно обязательно взять FIN302 — «Введение в финансы» и тп. А FIN445 будет наверняка на порядок сложнее чем FIN345.

    Итого, 101 — самый начальный воодный класс в любом предмете, например МАТ101 — введение в математику или BIO101 — введение в биологию.
    Ответ написан
    1 комментарий
  • Как с помощью PHP можно распарсить PDF?

    @egorinsk
    Как вы себе представляете такое преобразование, если в PDF текст хранится строками с определенными координатами, а не абзацами, например? Также текст может храниться картинкой или векторным форматом. Таблицы хранятся набором кусков текста и линиями. Заголовок — просто строка текста чуть большего размера.

    Чтобы восстановить логическую структуру текста, надо систему вроде той, которая используется в продуктах fineReader. Систем эта сложная и на ее разработку у Abbee ушла куча денег, вряд ли вы сможете решить задачу проще. А без этого максимум, что вы можете вытащить из файла — это набор блоков вида «строчка такого-то текста расположена по таким-то координатам». Текст может быть разбит переносами.

    Абзацы, конечно, еще можно из этого как-то восстановить, выстроив строчки по возрастанию координат, но переносы останутся, а любые нестандартные вещи, вроде подписи к картинке, будут ломать этот алгоритм.

    Резюмируя, выберите другой исходный формат, или откажитесь от мысли преобразовать PDF в осмысленный текст, преобразуйте его в картинку например. Иначе вы всю жизнь будете дописывать костыли, как только кто-то захочет подснуть вашей системе текст, сверстанный другим способом.
    Ответ написан
    1 комментарий
  • Запретить скролл страницы когда мышь на флешке?

    @egorinsk
    Внимание, правильный ответ: не использовать скролл как способ ввода, тем более не использовать скролл во флешках, так как в разных браузерах это все конфликтует, а на айфоне флеш вообще не работает.

    Хочется также послать лучей проклятья тем умникам, которые придумали, что когда кликаешь на видео в ютубе, оно забирает фокус и горячие клавиши в браузере и прокрутка перестают работать.
    Ответ написан
    2 комментария
  • Возможна ли работа web-приложения без CGI?

    VBart
    @VBart
    Такие вопросы на хабре задавать бесполезно. =)

    Большинство ответивших написали местами полную чушь. Основная масса веб-программистов дальше своих фреймворков не вылезают, и у них в итоге полная каша в голове. Например, кто-то путает интерфейс (WSGI, Pump, WEB3, PSGI, Rack, CGI и т.д.), сервер приложений (uWSGI, php-fpm, Rack, Gunicorn, unicorn, flup, Apache в данной роли, и ещё тысячи их) и протокол (HTTP, uwsgi, FastCGI, SCGI, CGI, AJP, WebSocket, да много их). Кто-то путает протокол, способ его реализации и способ запуска интерпретатора.

    Основное, что вам нужно знать, содержится в документации Django:
    docs.djangoproject.com/en/dev/howto/deployment/

    Ответом на ваш вопрос будет: да существует множество и каждый HTTP-сервер поддерживает целый набор протоколов для общения с сервером приложений. И сервера приложений могут поддерживать один или несколько протоколов, один или несколько интерфейсов. Некоторые HTTP-сервера умеют выполнять двойную роль, выступая и в роли сервера-приложения, предоставляя определенный интерфейс. А некоторые приложения сами содержат встроенный HTTP-сервер. Термин же «веб-сервер» слишком общий, и трактоваться может разными способами.
    Ответ написан
    2 комментария
  • Браузер для ipad не выгружающий вкладки?

    deleted-mifki
    @deleted-mifki
    Так там же есть встроенный Reading List.
    Ответ написан
    2 комментария
  • Одноразовый антиАОН — есть ли такой апп для айфона?

    @bondbig
    «скачать мозг.apk, улучшитель памяти.ipa, бесплатно без СМС, ШОК ВИДЕО»
    Ответ написан
    Комментировать
  • [VPN] Как обезопасить себя от просвета реального IP?

    Wott
    @Wott
    Ну можно прибить default route и вместо него добавить route для vpn, тогда при падении оного просто не будет маршрута
    Ответ написан
    4 комментария
  • Бесплатная IDE для Java Script'a?

    jetman
    @jetman
    WebStorm EAP бесплатен и имеет неплохую интеграцию с NodeJS: confluence.jetbrains.net/display/WI/WebStorm+6+EAP
    Ответ написан
    6 комментариев
  • Взаимодействие приложения на PHP с модулем на C. Как «правильней»?

    @schroeder
    посмотрите в сторону SWIG. У нас работает, все довольны. Никаких баз данных, никаких чтений из файла.
    Ответ написан
    Комментировать
  • Что не так в топике?

    Anakros
    @Anakros
    Минусуют всех, просто от количества плюсов, если статья понравилась, это не так заметно. От нейтрального топика в большинстве случаев можно ожидать только минуса. Тем более на тематику Apple (хейтеров много).
    Ответ написан
    Комментировать
  • Можно ли рассматривать использование RegExp как накопление технического долга?

    KEKSOV
    @KEKSOV
    Скажем, если речь идет об использовании RE для парсинга HTML (предположим, для извлечения ссылок), то это однозначно плохо, для этого есть готовые решения более высокого уровня.

    Лично у меня был такой опыт с RE — необходимо было организовать парсинг логов одной большой телефонной станции, началось все с использования sed и все было очень хорошо и быстро, пока не выяснилось, что эта железка в основной поток сообщений может асинхронно подбрасывать пакеты других сообщений. В итоге sed выражение разрослось до более чем ста строк и стало работать минут 10, само собой разобраться в нем мог только один человек. Когда мое терпение лопнуло, я сел и переписал все на C при помощи flex и bison, программа стала работать 10 секунд. Думаю, что это хороший пример того, как RE участвует в накоплении тех.долга

    Но, с другой стороны, если речь идет, скажем, о валидации каких-то пользовательских данных, то почему бы и нет.

    Думаю, что резюме может быть таким — если входные данные сложны по своей структуре или число входных вариантов велико, то RE использовать не надо. Если же данные просты (не больше одной строчки), то RE вполне себе применимы. Да, еще один момент, если данные просты, но их много (читай — высоконагруженная система, которая основное время тратит именно на обработку RE), то RE использовать не следует, выгоднее будет написать свой парсер под конкретную задачу.
    Ответ написан
    1 комментарий
  • Использовать ли ActiveRecord в высоконагруженных проектах?

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

    Если возникают проблемы с производительностью:

    1) Во всех проектах используем:CProfileLogRoute с настройкой CDbConnection.enableProfiling=true
    Расскажет много полезного.

    2) Если видим lazy Loading — не забываем добавлять в with("") нужных релейшинов, используем together() принудительно где нужно.

    3) Если используем findAll() на большом количестве записей — используйте CDbCriteria.select и перечисляйте только необходимые колонки, это поможет значительно повысить производительность.

    Рекомендую детально изучить изнутри — как работает CActiveRecord, CActiveFinder
    Используйте расширения типа XDebug для детального профайлинга проекта.
    Основные потери производительности происходят внутри метода
    CActiveRecord.populateRecord — посмотрите — что происходит внутри.

    4) Все редкообновляемые данные очень легко кэшировать связкой:
    CTimestampBehavior + CDbCacheDependency('SELECT MAX(update_time) .... where...');
    Если таблица редко обновляется, то и этот запрос будет отрабатывать мгновенно. Mysql тоже сам кэширует результаты таких запросов.

    В результате — мест, где приходится отказываться от ActiveRecord остается очень мало.
    Скорость отдачи страниц держим на уровне не более 0.1 с.

    Если у Вас будут действительно высокие нагрузки, Вас врятли спасет один только отказ от ActiveRecord:
    Посмотрите:
    Yii: устройство ActiveRecord и Шардинг
    Шардинг MySQL на Yii Framework

    Также задумываем для одного проекта попробывать www.yiiframework.com/extension/yiimongodbsuite/ с auto-sharding
    Ответ написан
    Комментировать