• В чем ошибка конвертации mov в mp4 для Android?

    rumkin
    @rumkin Автор вопроса
    Проблема оказалась в имени файла содержащего двоеточие.
    Ответ написан
    Комментировать
  • Преобразовать ttf в svg средствами JS возможно?

    rumkin
    @rumkin
    Используйте TTF.js.
    Ответ написан
    Комментировать
  • Почему localStorage.getItem возвращает ключ вместо значения?

    rumkin
    @rumkin
    Смотри на auth.setToken('token', data);
    Ответ написан
    Комментировать
  • Почему Хабр не поддерживает markdown syntax?

    rumkin
    @rumkin
    Простенький конвертер markdown в HabrML https://jsfiddle.net/rumkin/xnabfmq9/
    Ответ написан
    Комментировать
  • Node.js код в MVC с запросами к сторонним API. Знаете пример?

    rumkin
    @rumkin
    Ищите раздельно:
    • Примеры приложений на Sails.js – классический MVC-фреймворк.
    • Грабберы, но их вы вряд ли найдете. В Sails вы можете создать сервис с очередью заданий, которые будут выполняться хоть бесконечно долго (пока не умрет процесс например).
    Ответ написан
    1 комментарий
  • Стоит ли ставить крупный сайт на node.js? Не рано ли?

    rumkin
    @rumkin
    Работал над крупным проектом с охватом аудитории в несколько миллионов пользователей в сутки, использовался nodejs. Полет нормальный, единственный минус – кадры. Нужен сильный nodejs программист в комманде.
    На том же express (django для ноды) работают очень нагруженные сайты, например MySpace. Полный список: expressjs.com/applications.html.
    Ответ написан
    Комментировать
  • Как осуществить асинхронные запросы в цикле?

    rumkin
    @rumkin
    Именно так и делается. Либо берете библиотеку async и делаете асинхронный map.
    Что вас смущает?

    Да, так вы не узнаете когда закончится последний вызов, если оставите все как есть. Но ведь, не всегда необходимо знать какая операция завершилась последней (и завершилась ли).
    Ответ написан
    2 комментария
  • Как осуществить правильный restart приложения на Node.js?

    rumkin
    @rumkin
    Я считаю,что бесшовный деплой реален и удобен в присутствии третьей стороны назовем его switcher. Как он работает:
    1. Switcher запускает n-инстансов и начинает распределять запросы равномерным слоем между ними: ведя учет запросов через счетчики.
    2. Вы посылаете switcher'у сигнал о перезагрузке/деплое.
    3. Switcher начинает поднимать новые инстансы, не убивая старых и отправлять запросы на них.
    4. Когда у старого инстанса счетчик запросов обнулился, его можно убивать, что и делает switcher.

    Таким образом вам не придется модифицировать имеющийся код, а масштабирование будет происходить безболезненно путем добавления новых инстансов. Обратите внимание: у процесса есть событие 'exit', на которое вы навешиваете обработчики для остановки вычислений. Т.е. сначала закрывается внешний интерфейс в штатном режиме, а только затем прекращаются внутренние операции, закрываются соединения, релизятся блокировки и т.п.
    Ответ написан
    Комментировать
  • Как называется подход, обеспечивающий работоспособность сайта с отключенным javascript?

    rumkin
    @rumkin
    Названия подхода не встречал, но само свойство называется accessability. Ранее активно пропагандировалось, ныне забыто. Недавно вон у тостера форма связи с техподдержкой не работала из-за того что скрипты неправильно склеились.
    Основные плюсы в том, что пользоваться сайтом могут не только люди с отключенным js, но и люди с ограниченными возможностями. В случае медленного интернета (например на телефоне) любой пользователь может воспользоваться информацией отключив изображения и js и таким образом сэкономить трафик, например в роуминге.
    Ответ написан
    Комментировать
  • Связка Nginx+Apache. Странное поведение virtual hosts - почему?

    rumkin
    @rumkin
    Это говорит о том, что apache не видит хоста из-за nginx, видимо, читает его не из HTTP-заголовка, а из значения указанного прокси-сервером.
    Не специалист по nginx, но, судя по всему, эта строка proxy_pass http://127.0.0.1:8080/; должна содержать имя хоста, попробуйте так proxy_pass http://$host:8080/;
    Ответ написан
    Комментировать
  • Стоит ли соваться в мир IT человеку с плохим зрением?

    rumkin
    @rumkin
    Во-первых, пройдите вузовскую программу, это критически важно. Для этого intuit.ru — это первоклассный инструмент для самообучения, появился, кстати еще до того, как интернет-образование стало модным ) Это даст вам преимущество — около 70% специалистов на рынке — самоучки, как показал опрос на хабре. Это даст вам быстрый прогресс.

    Во-вторых, когда у вас свое дело никто не спросит сколько вам лет и есть ли у вас диплом, вас спросят что вы умеете и сколько это стоит. Но в бизнесе у заказчика есть рычаги давления, у работодателя их почти нет, поэтому он должен быть в вас уверен на 100%. В России около 50% специалистов работают не по специальности, поэтому вам нужно будет показать работодателю свою надежность и профессионализм, а не махать корочкой.

    В-третьих, (почему-то об этом забывают) трудности закаляют характер, а он главный помощник по жизни в любой ситуации. И их нельзя избегать, нужно лишь соизмерять свои силы для равномерного целенаправленного роста.
    Ответ написан
    2 комментария
  • Чем RoR лучше PHP?

    rumkin
    @rumkin
    Самое главное не слушайте этот бред про то что все одинаково. Ничего подобного! У ruby есть внятная философия, у php — нет. Это единственное и основное различие, которое, почему-то считают некритичным (тогда как же ruby стал так популярен). PHP развиваться-то начал активно, только после того, как почувствовал конкуренцию. И основная причина этого в том, что в php-сообществе слишком высока доля дилетантов, а Ruby изначально ставит высокую планку. Я разрабатывал на обоих языках, знаю о чем говорю.

    RoR — это веб-фреймворк, так что сравнивать его с целым языком нельзя.
    Но он не один на ruby написано множество приложений для комфортной разработки, работать с которыми поистине удобно: это Vagrant для управления VM, Rake для выполнения задач, Capistrano для деплоя, Chef для управления конфигурациями. Про основные особенности языка вы прочтете в wiki.

    А так да и то, и то язык программирования, можно дальше жевать резину.
    Ответ написан
    Комментировать
  • JavaScript - почему не выходит функция ресайз?

    rumkin
    @rumkin
    $(window).resize(); — не вызывает обработчик, читайте документацию. Замените на $(window).trigger('resize');
    Ответ написан
    2 комментария
  • Как разрешить конфликт 2-х скриптов?

    rumkin
    @rumkin
    Объявите переменные i в областях видимости функций, для начала.
    var i
    Делаем так
    $("[name=w_q_s1]").click(function(e) {
    var i;

    и
    $(document).ready(function(){
    var i;


    Затем замените
    for(i=1;i<=this.value;i++){
    на
    for(i=1;i<=this.value-0;i++){

    А вот это
    for(i=$(this).val();i<$(".spalnya").length;i++){
    на
    for(i=$(this).val()-0;i<$(".spalnya").length;i++){
    Ответ написан
    9 комментариев
  • Как организовать файловую структуру как альтернативу MySQL?

    rumkin
    @rumkin
    То что вам нужно — sqlite. Это sql-база данных состоящая из одного файла. В коде загружаете как обычный файл, а работаете как с SQL. Скорее всего вы ищете именно это.
    В противном случае используйте любой другой популярный формат хранения данных: xml или json. Но учтите, что рано или поздно вы столкнетесь со всеми детскими болезнями баз данных. Подобный проект как учебный очень полезен, как рабочее решение — нет.

    UPD. На SQLite можно сделать cms для небольшого сайта или даже магазина, это удобнее, проще и иногда надежнее. Так что в продакшене использовать такое решение можно, оно отвечает стандартам и имеет развитую инфраструктуру. Но под нагрузкой или на bigdata придется мигрировать на полноценную СУБД, так как sqlite целиком размещается в памяти.
    Ответ написан
    Комментировать
  • Как сделать такой тест?

    rumkin
    @rumkin
    Во-первых:
    var a = Math.round(Math.random()*99);
    var b = Math.round(Math.random()*(99-a));

    Так вы всегда получите сумму до 100.

    После кнопки добавляем элементы:
    <span id="formula"></span>
    <input type="text" id="answer"/>


    Затем:
    var button=document.getElementById('start'); // Кнопка
    var formula=document.getElementById('formula'); // Формула
    var answer=document.getElementById('answer'); // Тестовое поле
    
    var a,b;
    button.onclick = function () {
         a = Math.round(Math.random()*99);
         b = Math.round(Math.random()*(99-a));
         formula.textContent=a + ' + ' + b + ' = ' ;
    };
    answer.onkeyup=function(){
        if (this.value-0 === a+b) alert('Ok');
    }

    Дальше сами разберетесь.

    Во-вторых, можно обойтись без PHP.
    В-третьих, так обработчики событий никто давно не навешивает.

    Время можете засекать по секундам (до тысячной доли) с помощью Date.now() прямо в браузере.

    jsfiddle.net/z3dyR/2
    Ответ написан
  • Сохраняются ли временные данные при передачи данных через socket.io?

    rumkin
    @rumkin
    Нет, сам socket.io ничего не кеширует, но одна лишь формулировка вашего вопроса оставляет слишком много вариантов.
    Если речь идет о переменной: тогда это проблема областей видимости, и вы либо затираете не то: посмотрите где переменная объявляется, просмотрите все вышестоящие var и function. Либо переменная перезаписывается: анализируйте коллбеки, которые пишут в эту переменную.
    Ответ написан
  • Как реализовать модульную систему на node.js?

    rumkin
    @rumkin
    В nodejs нет mvc в реализации других языков, точнее он есть, но выглядит иначе. А MVC-фреймворки не пользуются особой популярностью, хотя попытки реализовать есть: sailsjs.org и derbyjs.com

    Советую изучить принцип работы connect или express, где вы на запрос, как на нитку, нанизываете обработчики, первый сработавший обработчик должен: отдать результат и прекратить выполнение, либо передать выполнение следующему обработчику, возможно, дополнив объект запроса новыми свойствами. Связывание элементов системы происходит разными способами, но обычно это делается через расширение объекта запроса или ответа. Это позволяет вам инкапсулировать модули, делая их менее зависимыми от системы в целом.
    Ответ написан
    Комментировать
  • Каким алгоритмом можно парсить json на php (критично низкое потребление памяти)?

    rumkin
    @rumkin
    Если решить задачу не меняя условий, тогда нужно читать файл по кускам, резать куски по '},{' и пытаться распарсить до тех пор пока не обнаружится первый наименьший валидный блок, остаток добавлять к следующей итерации. Функция json_decode не выбрасывает никаких исключений или сообщений об ошибках, так что в него можно смело передавать невалидные данные. Это самый простой и эффективный способ решить задачу, без сторонних решений.

    Если немного изменить (в том случае, когда нет гарантии, что файл будет отформатирован, как в примере), то между объектами лога (или достаточно большими блоками) я бы вставлял разделитель, например так:
    },"--delimiter--",{ Затем считывал бы файл по кускам, разбивал по разделителю и парсил родным json_decode. Разделитель нужно сделать более универсальным, но это уже другой вопрос. Это будет наиболее близким к стандартам решением.

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