Задать вопрос
  • Циклы или рекурсия?

    @gro
    Если бы что-нибудь одно было предпочтительнее другого во всех случаях, этого другого бы не было.
    Ответ написан
    2 комментария
  • Циклы или рекурсия?

    @sergei-grigorev
    Все зависит от задачки. Порою достаточно простого цикла, с ним и работать проще и нет проблем со стеком. Еще, лучше все таки в цикле решать задачи, где результат следующего полностью зависит от результата предыдущего (например, факториал).

    При других задачках (например, обход вложенных каталогов), когда при этом у каждого имеется ряд своих отдельных переменных (например, количество файлов в данном каталоге), или асинхронных потоков, то поддерживать легче будет рекурсию. Да и рекурсия в данном случае будет удобнее, потому что обход одного каталога совсем не зависит от результатов обхода другого соседнего каталога, и они могут работать параллельно, независимо друг от друга. А затем в конце просто объединяют все свои результаты.

    Еще рекурсия будет эффективна, если рекурсивная функция кешируемая, например, она запоминает результат и при следующем запросе просто возвращается кешированный вариант.
    Ответ написан
    2 комментария
  • Где используются прототипы, наследование в JS приложениях?

    yurakostin
    @yurakostin
    Front-end developer
    Здравствуйте.
    На самом деле всё проще.
    Не обижайтесь, но вы просто не так хорошо знаете сам javascript.

    1. prototype - ссылка на прототип объекта.
    Array.prototype, Number.prototype. В нём хранятся методы и свойства этого объекта, а также... (далее переходим к __proto__)

    2. __proto__ - тоже ссылка на прототип. Например, введите в консоли [] и раскройте ветвь. У вас всего два свойства. Одно - length - количество элементов в массиве. Другое - __proto__. А где же все методы, которые мы можем использовать с массивами filter, map, slice и так далее? Они лежат в __proto__. Более подробно здесь.

    3. inheritance соответственно - наследование. JS построен на прототипной парадигме (надеюсь, я тут не наврал). Array наследуется от Object. Это можно легко увидеть, посмотрев Array.prototype. Там вы увидите тот самый __proto__, являющийся ссылкой на Object.prototype. Вся инфа по ссылке выше.

    4, 5. call и apply постепенно уходят из обихода, но тем не менее про них важно знать и уметь ими пользоваться. Эти методы позволяют вызвать функцию в контексте, который вам необходим.

    Например вам нужно вызвать метод какого-то объекта, который работает с this в контексте другого объекта, у которого этого метода нет. Вы можете сделать следующее:
    var o_1 = {
    	name: 'Peter',
    	hello: function () {
    		console.log('Hello, ' + this.name);
    	}
    };
    
    var o_2 = {
    	name: 'Jane'
    };
    
    o_1.hello.call(o_2); // Фактически вы говорите "вызови метод такой-то для объекта такого-то"


    Для передачи аргументов в "заимствованную" функцию оба метода принимают аргументы, каждый по-своему.
    var o_1 = {
    	name: 'Peter',
    	hello: function () {
    		console.log('Hello, ' + this.name);
    	},
            sum: function (a, b) {
    		console.log(`${this.name} sum a and b to ${a + b}`);
    	}
    };
    
    var o_2 = {
    	name: 'Jane'
    };
    
    o_1.sum.call(o_2, 2, 4);
    o_1.sum.apply(o_2, [1, 2]);


    Отличие между этими двумя методами в том, как они принимают аргументы, которые попадут в функцию.
    call принимает список аргументов, начиная со второго, а apply, соответственно, принимает массив.

    Также, ничто не мешает вам вызвать функцию, которая не нуждается в контексте, для этого первым аргументом можно передать null.

    var o = {
    	sum: function (a, b) {
    		console.log(a + b);
    	}
    }
    o.sum.call(null, 1, 2);
    o.sum.apply(null, [1, 2]);


    Подробнее тут.

    6. bind тоже довольно простая штука. Отчасти он похож на предыдущие два метода, за исключением того, что он не вызывает функцию сразу же.
    Основная его задача - вернуть функцию, которая будет вызвана для нужного вам контекста.

    var o = {
    	a: 1,
    	b: 2,
    	sum: function () {
    		console.log(this.a + this.b);
    	}
    };
    
    var o2 = {
    	a: 10,
    	b: 20
    };
    
    var o2Sum = o.sum.bind(o2);
    
    o2Sum();


    Также с помощью bind можно каррировать функции.
    Всё есть здесь

    PS: надеюсь, код не содержит ошибок и я нигде не налажал и всё правильно рассказал.
    Ответ написан
    4 комментария
  • Можно ли при установке Ubuntu Core задать настройки proxy?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Можно перейти в другой терминал ctrl + alt + F2 или alt + F2 и записать в файл /etc/apt.conf следующее:

    Acquire::http::Proxy "http://LOGIN:PASSWORD@ADDRESS:PORT";
    Acquire::https::Proxy "https://LOGIN:PASSWORD@ADDRESS:PORT";
    Ответ написан
    2 комментария
  • Как обналичить криптовалюту?

    DollyPapper
    @DollyPapper
    С любого обменника выводите на свой счет в банке. Лимиты есть, но можно в разные банки выводить. Сделать 2-3 карты, 1 в сбере например, вторую в ВТБ или еще где. С маленькими суммами никому дела не будет, но я где-то слышал, что при обналичке денег с карты потом, могут возникнуть трудности. Переводы в размере от 600к вызывают внимание у банков, и при сьеме вас могут спросить откуда бабки. Ну типа на работе у вас такая зп, бизнеса у вас нет, а бабок много. Но все это легко доказывается, например показав транзакции со своего кошелька и показав работнику банка, что кошелек именно ваш, вроде является доказательством. Но этого всего может и не быть. А так проблем быть не должно.
    Ответ написан
    9 комментариев
  • Файловый менеджер для Windows на замену Total Commander

    admhome
    @admhome
    html, css, js. php, ubuntu
    Есть ещё Double Commander
    Ответ написан
    Комментировать
  • Файловый менеджер для Windows на замену Total Commander

    arty87
    @arty87
    В таких случаях я обычно пользуюсь вот этим сервисом:
    alternativeto.net/software/total-commander/

    Возможно, там вы найдёте ответ на свой вопрос.
    Ответ написан
    2 комментария
  • Файловый менеджер для Windows на замену Total Commander

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    frigate мне нравился в свое время, но он платный был и я юзал его для фтп. Но там модулей маловато, но он гламурненький
    а потом я поставил filezilla и удалил его.
    Ответ написан
    1 комментарий
  • Как определить IE включая 11?

    var ua = window.navigator.userAgent.toLowerCase(),
    is_ie = (/trident/gi).test(ua) || (/msie/gi).test(ua);

    Смотрите userAgent. Правильнее искать "Trident", но для большей надежности можно проверить еще и "MSIE".
    Ответ написан
    1 комментарий
  • Как определить IE включая 11?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Conditional compilation

    Вариант с ветвлением:

    /*@cc_on @if (@_jscript)
    console.log('Я — осёл и мой номер ' + @_jscript_version);
    @else @*/
    document.write('Я — обычный современный утюг');
    /*@end @*/


    Ну а так только для IE:

    /*@cc_on
    console.log('Я — осёл и мой номер ' + @_jscript_version);
    @*/
    Ответ написан
    Комментировать
  • Переходить с Xenserver на Proxmox?

    opium
    @opium
    Просто люблю качественно работать
    из коробки не умеет пробрасывать усб, но можно руками пробросить в конфике квм
    а так все умеет, ну я думаю крон для бекапов тоже не сложно в ксенсервере настроить.
    Ответ написан
    Комментировать
  • XenServer vs Proxmox

    @irbiss
    У windows есть редакция hyper-v edition она бесплатная, но из интерфейса только командная строка (средства базовой настройки есть графические). Но после настройки можно управлять виртуальными машинами с любого компьютера c windows на который установлена консоль управления(с ограничением по поколениям windows например если на сервере windows 2012, то нужна на компьютере windows 8)

    Драйвера для hyper-v есть в ядре линукс и в последних версиях debian, ubuntu, centos включены по умолчанию
    Ответ написан
    Комментировать
  • XenServer vs Proxmox

    ayambit
    @ayambit
    Во первых, вариантов больше. Есть еще бесплатные:
    1) Virtualbox (я писал в Оракл, спрашивал, пока и правда бесплатно)
    2) VMware vSphere Hypervisor™ (ESXi)
    3) Hyper-V

    Во вторых, вы сравниваете не гипервизор, а системы управления, однако зря. Потому что Windows на OpenVZ поставить нельзя. Однако Proxmox VE умеет работать не только с OpenVZ, но еще и с KVM, поэтому вам он годится.

    Однако, для того чтобы полностью ответить на ваш вопрос, нужно больше информации. Вопросы:
    1) С какой целью будете использовать виртуализию? Для производства, для разработки?
    2) Нужно ли будет делегировать доступ к виртуальным машинам? Если да, то кому и какой?
    3) Сколько будет физических серверов под виртуализацию? Планируется ли кластер? Если да, то планируется ли дисковая полка?

    4) Сколько будет виртуальных машин?

    4) планируете ли брать дисковую полку на iSCSI для Live Migration?
    5) планируете ли использовать проброс устройств в гостевые машины, примеры — сетевая карта или
    Ответ написан
    6 комментариев
  • Как починить кириллицу в Source Code Pro под Sublime Text 3?

    DenVdmj
    @DenVdmj
    Javascript, Perl, Lua, etc.
    Кириллица и греческий были официально добавлены через месяц :)
    https://github.com/adobe-fonts/source-code-pro/iss...
    https://github.com/adobe-fonts/source-code-pro/rel...
    Ответ написан
    Комментировать
  • Emacs org-mode - привязка задач между собой?

    grigoryvp
    @grigoryvp
    Вот тут все написано:
    orgmode.org/org.html#TODO-dependencies
    Ответ написан
    Комментировать
  • Возможно ли асинхронно делать действия с элементами массива?

    @yeti357
    Воспользуйтесь промисами или либой типа async. Внезапно js поддерживает фичи функционального программирования. Из массива объектов можно создать массив промисов(или функций), а после запустить параллельное асинхронное выполнение, и получить результат, после того как все промисы/функции в массиве выполнились, Параллельный запуск осуществляется с помощью Promise.all() иди async.parallel()
    // псевдо код
    var yourArrayFromDB = [здесь массив исходных данных, например то, что вы до этого из бд запросили];
    var promiseArray = yourArrayFromDB.map( 
        (elem) => new Rromise( function (resolve, reject) {
                    // функция которая обрабатывает что вам нужно асинхронно
                    request.get('your.url.com', fuction( err, res) {
                         if (err) reject(err);
                         resolve(res);
                    })
                }
            )
    );
    
    Promise.all(promiseArray)
        .then((resArray) => { здесь делаете что хотите с массивом результатов асинхронных функций })
        .catch(console.log);
    Ответ написан
    1 комментарий
  • Не убьёт ли WebAssembly node.js?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Нет. Вы путаете клиентскую сторону и серверную.
    node.js предназначена для работы на сервере. WebAssembly - запуск ресурсоемких приложений на клиенте.
    Ответ написан
    Комментировать
  • Не убьёт ли WebAssembly node.js?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Нет. Он лишь ускоряет клиентский Javascript.
    Вот мой пример:
    c320f459db12436aa2acaca211b886ba.jpg
    Ответ написан
    5 комментариев