• Как у вас реализована версионность API для мобильных приложений?

    @Kane
    Не делааю обратно не совместимых изменений, всегда думаю о том, что-то придётся поменять. В случае, если приходится делат несовместимое изменение, приходится релизить новую версию апи.
    Ответ написан
    2 комментария
  • Почему создатели EcmaScript (Javascript) выбрали "use strict" для строгого режима?

    deleted-tnorman
    @deleted-tnorman
    Личное предположение "use strict" надмозг переводит как "использовать строгое", это уже выглядит как команда к действию.
    Если же употреблять "strict mode" то, допустим, это переводится как "строгий режим", но строгий режим что?
    И у нас оказывается потребность писать уже не просто "strict mode" а "strict mode on" чтоб было ясно, что мы этот строгий режим включаем.

    Личное предположение.
    Ответ написан
    Комментировать
  • Почему не работает массив в конструкторе?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Так вы кладёте 2 фрукта хомяку speedy, а хомяку lazy — ничего. Lazy нервничает...
    И почему не используете var?
    Ответ написан
    5 комментариев
  • Как оптимизировать код?

    @carbon88
    .NET developer/ORM developer
    Добавлю свою ложку дегтя плюсом к предыдущим ответам

    1) query.Count() > 0 если это метод из Linq а не определенный в классе то лучше так не делать. Он переберет весь IEnumerable, а оно вам надо? Если нужно проверить есть ли в последовательности элементы используйте query.Any()

    2)в if-ах можно определить только запрос. а далее просто
    if (query.Any())
    {
       ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
    }
    else
    {
       ViewData["uncheckedProfilesSearch"] = "NoResult";
    }

    или

    3) думаю можно что-то сделать с вашими ToUpper(). например почему бы сразу не привести все что нужно (если оно нужно) к верхнему регистру и не делать лишних операций. потому что судя по описанию на MSDN ToUpper() выдает копию строки, то есть это как минимум каждый раз инициализация переменной и копирование из одной переменной в другую. А вообще почитайте про работу со строками с точки зрения внутреннего устройства, например рихтера "CLR via C#"

    4) вообще судя по вашему запросу у вас рознится только часть Where. в остальном это один и тот же Linq. То есть можно написать все красивее, пошагово определив все состовляющие.

    var query = MongoDBInstance.GetMongoDatabase.GetCollection<User>("UserInfo")
        .AsQueryable<User>();
    if (!string.IsNullOrEmpty(searchByName)) {
        var upperCaseSearchString = searchByName.ToUpper()
        string[] names = upperCaseSearchString.Split(' ');
        if (names.Length > 1) {
             query = query.Where(i=>
                                !i.IsActivated && ((
                                    i.Name.ToUpper().Contains(names[0]) &&
                                    i.LastName.ToUpper().Contains(names[1])) ||
                                (i.Name.ToUpper().Contains(names[1]) &&
                                 i.LastName.ToUpper().Contains(names[0]))));
        }
        else {
            query = query.Where(i=>
                                !i.IsActivated && (
                                    i.Name.ToUpper().Contains(upperCaseSearchString) ||
                                    i.LastName.ToUpper().Contains(upperCaseSearchString)));
              
        }
    }
    else {
        query = query.Where(i=>!i.IsActivated);
    }
    query = query.OrderBy(i=>i.ID);
    if (query.Any()) {
        ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
    }
    else {
        ViewData["uncheckedProfilesSearch"] = "NoResult";
    }


    За скобки не ручаюсь, писал прям в редакторе тостера
    Ответ написан
    2 комментария
  • Есть ли лучше способ перейти от event-ов к callback-у в NodeJS?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Используйте адаптер. Типа такого:
    var SuperModuleAdapter = function () {
        this.adapted = new SuperModule() 
    }
    
    SuperModuleAdapter.prototype = {
        start: function (callback) {
            var cb = function(err){
                this.adapted.removeListener('error', cb);
                this.adapted.removeListener('started', cb);
                callback(err); // err == null при started
            }
            this.adapted.on('started', cb);
            this.adapted.on('error', cb);
            this.adapted.start();
        }
    }
    Ответ написан
    1 комментарий
  • Какой Самый быстрый способ замены текста в javasсript?

    Да как-то так:

    var jsonData = {
        "html": "<div id=\"user%%userid%%\"><span>You're ID: %%userid%%</span><img src=\"%%userimg%%\"></div>",
        "data": [{"userid":"11", "userimg":"http://"},
    	{"userid":"22", "userimg":"http://"}
    	]};
         var result = "";
    
    jsonData.data.forEach(function(item) {
        result += jsonData.html
                          .replace(/%%userid%%/g, item.userid)
                          .replace(/%%userimg%%/g, item.userimg)
    });
    
    console.log(result)


    Можно написать простую функцию:
    var simpleTemplate = (function() {
        var replaceByObject = function(template, values) {
    	for (var key in values) {
    	    if (values.hasOwnProperty(key)) {
    		var pattern = ['%%', key, '%%'].join(''),
    		    keyRegexp = new RegExp(pattern, 'g');
    		
    		template = template.replace(keyRegexp, values[key]);
    	    }
    	}
    	
    	return template;
        };
    
        return function(template, values) {
    	return replaceByObject(template, values);
        };
    })();


    И использовать вот так:

    var jsonData = {
        "html": "<div id=\"user%%userid%%\"><span>You're ID: %%userid%%</span><img src=\"%%userimg%%\"></div>",
        "data": [{"userid":"11", "userimg":"http://"},
    	{"userid":"22", "userimg":"http://"}
    	]};
         var result = "";
    
    jsonData.data.forEach(function(item) {
        result += simpleTemplate(jsonData.html, item);
    });
    
    console.log(result)
    Ответ написан
    Комментировать
  • Нужна ли веб-программисту высшая математика?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Нет, высшая не нужна. Обычная геометрия пригодится при работе с картами. А так в абсолютном большинстве школьного уровня более чем достаточно, главное чтобы логика хорошо работала.
    Ответ написан
    Комментировать
  • На чём и как писать web service rest api, если логика написана на C++?

    @buzzi888
    Да, вы правильно понимаете, что все веб-сервисы это прежде всего веб сервер.
    Можно взять node.js, для которой rest фреймворков в переизбытке, а с существующим проектом на c++ связать с помощью модуля node-ffi. Модуль позволяет из JS кода работать с dll
    node-ffi
    Ответ написан
    1 комментарий
  • SockJS, node.js, а что если php не успеет?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А что будет если не успеет JS? Из описанного вами, издержки на доставку данных будут в десятки раз привышать издрержки на вычисления. Для начала стоит понять что setInterval не гарантирует того, что функция будет вызвана именно через одну секунду, там тоже будут свои флюктуации в силу однопоточности JS. Как с этим бороться, сходу не подскажу, все зависит от логики приложения.

    10 000 одновременных запросов к серверу (именно отдельных запросов, а не через WebSockets) могут положить небольшой сервер. Для этого существует нагрузочное тестирование.

    TCP гарантирует отсутствие потери данных, собственно по этому в реалтаймовых штуках TCP используется только в случае, если UDP дает большую потерю пакетов (например UDP трафик режется или что-то в этом духе). То есть когда сервер отправляет пакет, от откладывает его в буфер до подтверждения его получения клиентом. Если сервер в течении определенного времени не получает по ICMP подтверждения о том что пакет был отправлен, он заново начинает отправлять весь буфер. Когда буфер полон - новые пакеты вы отправить уже не можете пока не освободится, насколько я помню, хотя бы половина. В реалтайме же вас не должна смущать ситуация с потерей пакетов (если данные помещаются в один пакет конечно), так как у них не так много времени, что бы нести "актуальные данные". проще послать следующий пакет. чем переотправлять уже не актуальные данные. Но WebSockets не работают с UDP.
    Ответ написан
    5 комментариев
  • Какой язык программирования изучить для создания аналога google translate?

    antonydevanchi
    @antonydevanchi
    10 лет в айтишке
    Как ответ на вопрос в комментариях:

    @prozrachnaya Какой алгоритм для перевода вы будете использовать? Если не знаете, то и не напишите в одиночку. Транслейт скорее всего использует продвинутую нейронную сеть для корректировки и самообучения - если вы никогда не создавали хотя бы одного перцептрона, то вам будет грустно. Без нейронки ваша система не будет учиться и будет бесполезна - не множьте энтропию и прекратите попытки побороть продукт сделанный сотнями превосходных разработчиков.

    По теме: HTML/CSS/JS - фронтенд, PHP - логика апи, Python/Ruby - middleware, C++/Golang - логика.

    Еще имеет смысл изучить БД Cassandra, Big Table и подход MapReduce. Так же не помешает знание Redis, Riak, MongoDB, PostgreSQL.
    Ответ написан
    3 комментария
  • Как исключить из выборки элементы с определенным предком?

    jurasarts
    @jurasarts
    Решение в лоб, учти, что оно довольно медленно работает.

    var $links = $('*:not(.class) > a');
    Ответ написан
    4 комментария
  • Что из себя представляет HTTPbasedREST-service?

    AMar4enko
    @AMar4enko
    Хотели, видимо, подчеркнуть, что REST бывает не только поверх HTTP.
    У вас речь идет про обычный HTTP REST сервис, коих тыщщи.
    Под пользователем с вероятностью, стремящейся к 100%, подразумевается приложение (javascript, мобильное, десктопное - разницы нет).
    Надо вам, например, получить список каких-либо объектов в JSON-формате, вы делаете GET-запрос к API по адресу api.my-rest-service.com/objects.json
    Вам в ответ JSON-строка (ну и заголовки какие-нибудь интересные, типа Last-Modified, ETag).
    Вот и все, собственно.
    А куда конкретно звонить, с какими параметрами, какие типы запросов - это у вас в документации (или техзадании, если вы сам сервис пишете) должно быть написано.
    Ответ написан
    1 комментарий
  • Зависает браузер при выводе большого объема записей с БД (items.length >= 5000)?

    @artishok
    кратко
    Для начала уменьшить количество обращений к dom, заменив
    for($i = 0; $n = 1; json["items"].length > $i; $i++){
               $(".content").append('<div style="width:100%; height:46px; border-bottom:1px solid #DDD"><b>'+json["items"][i]["name"]+' - <span>'+json["items"][i]["date"]+'</span> - '+json["items"][i]["time"]+'</b></div>');
                }

    на
    var html = '';
    for($i = 0; $n = 1; json["items"].length > $i; $i++){
               html += '<div style="width:100%; height:46px; border-bottom:1px solid #DDD"><b>'+json["items"][i]["name"]+' - <span>'+json["items"][i]["date"]+'</span> - '+json["items"][i]["time"]+'</b></div>';
                }
     $(".content").append(html);

    Или что-то подобное
    Ответ написан
    3 комментария
  • Как задать другие стили в CSS в случае, когда у посетителя сайта отключен JS ?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Используйте

    <noscript></noscript>
    Соответственно, помещаете его под всеми стилями и даете ссылку на стиль no-script.css, в котором переопределяете все стили, которые надо изменить.

    <link rel="stylesheet" href="style.css">
    <noscript><link rel="stylesheet" href="no-script.css"></noscript>

    htmlbook.ru/html/noscript
    Ответ написан
    Комментировать
  • Приложение на PhoneGap, как бороться с фрагментацией?

    mikenerevarin
    @mikenerevarin
    Идёте в хромовский devtools (на десктопе), во вкладке Overrides настроек ставите галку show Emulation, дальше нажимаете на кнопку show drawer рядом с шестеренкой настроек, в нижней вкладке переключаетесь на Emulation. Можно много чего сэмулировать, но это даст примерное представление о том, как страница будет рендерится (я так пониманию в этом и задача), без особенностей и скорости работы JS-а; поддержки html5 и css3 в разных версиях операционок. От себя могу добавить, что много ещё зависит от девайса: например iPhone 4+ внутри phonegap при initial-scale=1 в viewport говорит что размер экрана - 320*480 (568) и devicePixelRatio=2, а мой Meizu MX2 (да и на других телефонах хаотично замечал) - уже реальный размер экрана 800*1280 и тот же devicePixelRatio=2.
    С фрагментацией боролся в лоб: обычно верстаю несколько базовых вариантов, ориентируясь на ширину экрана: 320, 480, 540(640), 720(800), 1080(1200), а дальше в зависимости от размеров window.innerWidth динамически подгружал нужный файл стилей. Стили резиновые между друг другом, то есть 320-479 действует 320й, 480-539 действует 480й и так далее.
    Ответ написан
    2 комментария
  • Как присвоить/убрать position: fixed; при скроллинге?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    В общем виде советую решение следующее:
    $(window).scroll(function(){
            if ($(window).scrollTop() > 400) {
                $('.header').addClass('header-fixed');
            }
            else {
                $('.header').removeClass('header-fixed');
            }
        });

    Аналогично и для других элементов. Естественно, условия прописывайте сами. Ну и соответствующим образом прописывайте классы.
    Для того, чтобы Вам помогли прописать конкретно для Вашего примера - нужна Ваша разметка и условия фиксации блоков.
    Ответ написан
    9 комментариев
  • Как реализовать анимацию при скроллинге?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    var el = $('.your-element'),
          pageHeight = document.documentElement.scrollHeight,
          viewportHeight = document.documentElement.clientHeight;
    
    $(window).on('scroll', function (e) {
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
        // станет полностью видимым только когда прокрутят до конца
        // если нужно наоборот, то просто инвертируем (1-результат того что есть)
        // если нужно только в пределах какой-то облости - у вас все дано, 
        // нужно только посчитать
        el.css('opacity', (scrollTop+viewportHeight) / pageHeight )
    })
    Ответ написан
    Комментировать
  • Создание мобильного приложения HTML5: как?

    robots
    @robots
    а ты права на доступ в интернет дал приложению?
    это в манифесте приложения:
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    Ответ написан
    2 комментария
  • Почему не работает js код в safari, какова может быть причина?

    Nigrimmist
    @Nigrimmist
    Asp.net senior developer
    А каким образом Вы хотите чтобы мы опредилили проблему? Телепаты в отпуске.
    Ответ написан
    Комментировать
  • Как проверить работоспособность maps.yandex.ru через Javascript?

    Не знаю это ли вы имели ввиду но все же вот ссылка
    Ответ написан
    Комментировать