• Как организовать лимит на количество скачиваний в день?

    Keksinautin
    @Keksinautin
    Software Engineer
    "Единственным решением на данный момент кажется ограничение по IP адресу, но если много пользователей зайдёт с одним IP, то есть вероятность что часть из них ничего скачать не сможет." - а разве ни этого Вы хотите?

    Если Вы хотите ограничить кол-во скачиваний персонально по пользователям, то Вам их надо идентифицировать. Все варианты идентификации без авторизации можно обойти. Тут либо одно, либо другое.
    Если дело только в нагрузке, можете заставлять их подождать скачивания, как это делают многие сервисы обмена файлами.
    Ответ написан
    Комментировать
  • Webmaster и web developer это разные люди?

    Keksinautin
    @Keksinautin
    Software Engineer
    habradante все правильно написал, только я бы обратил внимание на то, что в реальных вакансиях, эти названия, в подавляющем большинстве случаев, подставляются как кому в голову взбредет. Так что на самом деле, в каждой конкретной ситуации, скрывается за названиями лучше выяснять отдельно.
    Ответ написан
    Комментировать
  • Как правильно использовать namespace в PHP?

    Keksinautin
    @Keksinautin
    Software Engineer
    Помогите мне, пожалуйста, раз и навсегда понять как использовать namespace.
    В особенности меня интересует автозагрука.

    Интересная формулировка, потому что использование неймспесов не предполагает атоподгрузку. Это разные вещи. Если Вы написали:
    use MyNamespace\DB;
    Это еще не значит, что php сам поймет где у вас файлик с этим классом и сам его вам заинклюдит. В отличие от других языков, модель "автоподгрузки" в php надо реализовывать практически самостоятельно. Или использовать готовые автолоадеры, вроде "composer autoload". По автолоаду почитать тут, по неймспейсам тут.
    Ответ написан
    Комментировать
  • Javascript: организация прокси сервера на клиенте?

    Keksinautin
    @Keksinautin
    Software Engineer
    А зачем один файл разбивать на куски и хранить на разных серверах?
    Или Вы хотите, чтобы видео проигрывалось сначала с одного сервера, потом со второго, а затем с третьего?
    Тогда Вы можете просто показывать видео с одного адреса, а когда оно закончится переключаться на другое, затем на третье. Просто меняя атрибут src у видео-тега.
    Ответ написан
  • Nginx ошибка - Primary script unknown ?

    Keksinautin
    @Keksinautin
    Software Engineer
    Ошибка говорит о том, что php-fmp на может найти файл, который вы просите запустить.
    Вообще если отследить прохождения запроса по вашему конфигу, то получается примерно следующие:
    1. пришел запрос, пусть даже /
    2. try_files такой файл не находит и отправляет его в @rewriteapp;
    3. @rewriteapp отправляет нас на адрес /app.php//
    4. теперь после реврайта мы попадаем в location и тут указываем, что
    SCRIPT_FILENAME = var/www/test.lan/public_html/app.php//
    вот этот адрес php-fmp и не находит.

    p.s. вы уверены, что хотели указать относительный адрес в директиве root?
    В php-fmp он тоже приходит как относительный, и я вот так сразу ни скажу, корень у него сейчас текущая директория или какая другая.
    Ответ написан
    Комментировать
  • Как тестировать взаимодействие с БД PHPUnit?

    Keksinautin
    @Keksinautin
    Software Engineer
    Модульным наверно уже не является. Я бы назвал его "интеграционным", потому что мы тестируем как работает ваш код совместно с базой.
    Суть заключается в том, что мы (в случае записи в базу) подаем на вход методу данные, а потом проверяем, что мы получили в базе, причем без использования нашего кода. В случае чтения наоборот, сначала сторонними средствами создаем записи, а потом проверяем, как они прочитаются.
    Я в таких тестах всегда поступал следующим образом:
    1. Создаем "дата-провайдера" - который в декларативной форме описывает параметры: "что на входе метода" и "что в базе" или "что в базе" и "что на выходе метода".
    2. У нас есть прямой доступ к базе, с помощью него в каждом тесте мы либо создаем запись в базе, либо проверяем, что туда записал тестируемый метод.
    Но думаю, такими тестами не стоит сильно увлекаться, ведь они по сути просто проверяют, что вы правильно составили запрос.
    Ответ написан
    2 комментария
  • Как восстановить удаленные файлы в Ubuntu?

    Keksinautin
    @Keksinautin
    Software Engineer
    Попробуйте Scalpel мне в свое время он помог спасти данные.
    Ссылки по теме:
    habrahabr восстановление с помощью Scalpel
    инструкция от rootfront
    Оффициальная дока от Ubuntu c примерами других утилит
    Ответ написан
    Комментировать
  • Не подгружает css на сайте с macbook. Как это решить?

    Keksinautin
    @Keksinautin
    Software Engineer
    А как вы определяете, что они не грузятся?
    Вообще, у Вас очень странный адрес до CSS style.aliunicorn.com/css/6v/??apollo/core/core-ws....
    длиной 335 символов. По спецификации url конечно никак не ограничивается, но больше 255 уже не слишком хорошо.
    Ответ написан
    Комментировать
  • Где найти информация по Angularjs + MongoDB ?

    Keksinautin
    @Keksinautin
    Software Engineer
    Так там же все верно ответили. Не знаю, понимаете ли Вы или нет, но Angular - это фреймворк для клиентской части приложения. Он работает на страничке в браузере у пользователя, который открывается Ваш сайт. Ему совершенно до лампочки какой у Вас сервер, и это может быть хоть Node, хоть Java, хоть PHP. Общаться с сервером Вы все равно будете по HTTP. А доступ к базе в Вас будет только на сервере, из серверного кода. И какой язык и фреймворк Вы будете использовать для запросов к базе - это уже Вам выбирать.
    Именно поэтому Вам трудной найти ответ на вопрос о связке Angularjs + MongoDB, потому что они никак не связаны. Они вообще друг с другом не встречаются никогда, между ними всегда есть еще кто-то.
    Ответ написан
    Комментировать
  • Как скрыть реальные ссылки?

    Keksinautin
    @Keksinautin
    Software Engineer
    Вообще, такую задачу должны решать программисты. Можно ограничить время использование ссылки и скрыть реальный адрес до файла (Secure Link). Можно так же ограничить доступ к файлу, использую cookies. Можно подсчитывать кол-во обращений к файлу и через 3-5 обращений закрывать доступ (не 1 потому что у пользователя может обрываться соединение).
    Однако, на этот вопрос нельзя ответить без контекста. Так что вопрос, скорей всего должен превратиться в тех.задание.
    Ответ написан
    Комментировать
  • Как отправить push-уведомление (Nginx, PHP)?

    Keksinautin
    @Keksinautin
    Software Engineer
    Если я правильно понял, задача состоит в том, чтобы асинхронно выгрузить на сервер 20 картинок (которые там должны быть обработаны после загрузки) и, само собой, узнать о том, как все это прошло.
    Во первых у меня большие сомнения насчет 20 одновременных соединений с сервером. Браузеры ограничивают количество одновременных соединений к одному серверу. Может быть 20 одновременно и не получится, надо гуглить для каждого браузера эти значения.
    Во вторых я бы использовал для этого такую схему:
    1. Nginx HttpUploadModule загружает файл и только после этого проксирует запрос дальше, серверу который будут выполнять обработку файла. В нашем случае PHP.
    2. А HttpUploadProgressModule поможет нам отслеживать процесс загрузки файла.
    3. Соответственно, когда собрали ответы обо всех успешных 20 загрузках на фронт-енде уже может делать что хотим.
    Ответ написан
  • Возможно ли логировать тело POST запросов проходящих через шлюз-сервер (Debian, SQUID, DNSMASQ)?

    Keksinautin
    @Keksinautin
    Software Engineer
    Мне думается, что самое "безболезненное" будет использовать LOG или ULOG у iptables. Может быть даже есть модуль именно для работы с http. Который позволит вычислить именно http POST пакеты и складывать только их.
    Ответ написан
    Комментировать
  • Как запретить импорт дублирующихся записей?

    Keksinautin
    @Keksinautin
    Software Engineer
    Т.е. как я понял, сами данные в этих 9 полях записи, уникальными не являются, но их сочетании должно быть уникальным. Тут в голову приходят пара мыслей.
    1. Составное уникальный индекс. Но с несколькими миллионами записей это будет тяжеловато, да и если другой пользы от такого индекса нет, то не лучший вариант, пожалуй.
    2. Вариант с хешем, сам хеш под индексом. Тут конечно многое зависит от того, какие данные. Я бы постарался даже не md5 заюзать, а crc32 например, но сам индекс сделать составным с каким-то еще данными, чтобы уменьшить вероятность коллизий, но при этом получить выигрыш по скорости, например если объединить интовый айдишник пользователя и интовый crc32.
    Ответ написан
    Комментировать
  • Truecrypt в качестве шифрования flash накопителя или внешнего жесткого диска

    Keksinautin
    @Keksinautin
    Software Engineer
    Чтобы винда не спрашивала про "форматирование диска" можно удалить букву диска. Это единственное решение, которое мне удалось найти. Но у меня нет необходимости именно в "автомонтировании", можете попробовать. Вручную монтируется без проблем.
    Как удалить можно погуглить, или вот тут например есть описание.
    Если в общих чертах (точных названий пунктов не помню):
    - при подключенном диске, чью букву надо удалить;
    - заходим в панель управления;
    - затем "администрирование";
    - там есть "менеджер дисков";
    - выбираем наш диск, правой кнопкой выбираем "изменить букву тома", потом "удалить".
    Ответ написан
    1 комментарий
  • Регулярное выражение - как удалить лишние символы?

    Keksinautin
    @Keksinautin
    Software Engineer
    /(\d+)?[.,]?(\d+)\./
    Ответ написан
    Комментировать
  • PHP file_get_contents даёт 404, с браузера грузится?

    Keksinautin
    @Keksinautin
    Software Engineer
    А у вас хоть одну страницу (любую) так загрузить получается?
    Я к тому, что адрес для file_get_contents нужно указывать вместе с http://
    или вы ошибку только тут в описании допустили?

    Плюс, я бы рекомендовал использовать что-то вроде этого:
    $context = stream_context_create(
        [
            'http' => [
                 'method' => 'GET',
                 'protocol_version' => '1.1',
                 'header' => [
    			'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0',
    			'Connection: close',
                 ],
        ]
    );
    $stream = fopen('http://url', 'r', false, $context);
    $content =  stream_get_contents($stream); //тут получаем страницу
    $data = stream_get_meta_data($stream); //тут получаем информацию, в том числе заголовки ответа
    Ответ написан
  • Почему при загрузке страницы отображается пустая страница PHP?

    Keksinautin
    @Keksinautin
    Software Engineer
    Нужно как можно больше информации.
    1. На какой операционной системе работает сервер.
    2. Где размещен сервер, на локальной машине или на удаленной.
    Если на удаленной, то что это: VDS, просто виртуальный хостинг или же вообще dedicated.
    3. Какой http-сервер, его версия и конфиги.
    Запущен ли php как модуль apache, или используется php-fpm или еще что-то.
    4. Конфиг php, и какая версия.
    5. Как устанавливался сервера и php (из пакетного менеджера, отдельно пакетом, сборка из исходников, еще какой-нибудь вариант).
    6. Включен ли какой-либо фаервол, по возможности: его версия и конфиг.
    7. Если возможно хотя бы часть кода, дающего ошибку.
    8. Если возможно заголовки ответа сервера во время ошибки.
    Ответ написан
    3 комментария
  • В какой ВУЗ стоит идти по специальности "Программная инженерия"?

    Keksinautin
    @Keksinautin
    Software Engineer
    Если бы сейчас можно было снова пойти учиться в университет: для бакалавриата выбрал бы факультет КТУ университета СПбГУ ИТМО, но в магистратуру пошел бы в Алферовкский Университет.
    Ответ написан
    2 комментария
  • Существует ли "база данных", в которой бы можно было сделать выборку N случайных записей из отфильтрованного по условиям набора?

    Keksinautin
    @Keksinautin
    Software Engineer
    А почему нельзя просто сначала сделать выборку (отфильтровать по условию), а потом из нее, выбрать сколько нужно случайных по порядку записей?

    Может быть еще вот эта статья будет полезна akinas.com/pages/en/blog/mysql_random_row
    Ответ написан
  • Почему phpstorm не распознаёт один php файл?

    Keksinautin
    @Keksinautin
    Software Engineer
    У меня была такая проблема. Суть в том, что файл (полное имя) прописался в паттерн к другому типу файлов.
    Открываете тот самый File -> Settings -> File Types,
    а там ищите свой файл в "Registered Patterns" среди других типов данных.

    Скорее всего он в "Files opened in associated applications" попал.
    Ответ написан
    4 комментария