Задать вопрос
  • Как Angular.JS работает на самом низком уровне?

    @lega
    В статье по сути все правильно, это не бесконечный цикл, да в нем сравниваются старое и текущее значение, в случае отличия вызывается "callbacks".
    $digest() вызывается на каждом углу и на каждый чих: после $timout, после $http, после ng-click и пр. поэтому создается иллюзия "отслеживание изменений в реальном времени".

    И если ng директив много это же очень затратно?
    На современном железе и браузере может происходить более 10M сравнений в секунду, поэтому приложения с небольшим $digest с небольшим кол-м ватчей 1000-20к работает быстро (зависит от ватчей).

    Так же сейчас во всех фреймворках идет тенденция в сторону (изолированных) компонентов, поэтому при правильном построении веб приложения (1000 компонент х 1000 ватчей) -> и 1М ватчей будет работать быстро (1мс).
    Ответ написан
    2 комментария
  • Как обрезать текст на Angular?

    @lega
    {{text.substring(0, 30)}}
    Ответ написан
    Комментировать
  • Cложно ли будет перевести большой проект с angular 1.4 на angular 2?

    @lega
    А зачем переводить, если текущий фреймворк решает задачи? после релиза Angular 2, первая версия не протухнет, она будет активна ещё год, два, (пять?). Некоторые вообще на backbone и knockout все ещё сидят :P
    А вторую версию ещё может помидорами закидают...
    Ответ написан
    Комментировать
  • Как организовать синхронизацию данных между серверами статики?

    @lega
    Можно скриптом запускать rsync на серверах, что-то типа: ssh server1 rsync coreserver ./ &
    Ответ написан
    Комментировать
  • Как ускорить выполнение запроса?

    @lega
    Смотрите какая у вас нагрузка на IO, возможно затык в этом (особенно если это сервер от Hetzner).
    Ответ написан
    Комментировать
  • Создание таблиц по месяцам, MySQL - какой способ выбрать?

    @lega
    Единственный минус, что если сессия открыта в конце прошлого месяца, а закрыть ее нужно в текущем, как быть? Ломаю голову...
    Вариантов много, зависит от того как вы будете использовать данные.
    Например если сессия закрывается, то переносить её с прошлого месяца в текущий (в ид сессии зашит месяц старта).

    Ещё можно хранить события (а не период), тогда можно данные "резать" хоть по дням/по часам, например так:
    session_id, event, datetime
    12345, 'start_session', 2015-09-15
    12345, 'finish_session', 2015-10-15
    Ответ написан
    Комментировать
  • Запрос данных в фабрике из нескольких контроллеров?

    @lega
    Данные с сервера должна запрашивать фабрика, например при создании (если в течении работы данные не меняются), фабрика создает "синглтон" поэтому загрузчик на старте выполнится только 1 раз.

    Если нужно получить данные в контроллере, а в фабрике их ещё нет, тогда getGames должен быть асинхронным (например возвращать Promise).
    Если данные меняются с течением времени и контроллер должен на это реагировать, тогда можно сделать что-б фабрика рассылала pubsub сообщение о новых данных, а контроллеры на это реагировали и запрашивали Games.get() заново.
    Ответ написан
    1 комментарий
  • Как очистить место занимаемое MongoDb?

    @lega
    Набросал некоторые мысли:

    Я в таком случае иногда поднимаю инстанс за "пару минут" в Digital Ocean (40 копеек/час), монтирую его через nfs, делаю mongodump, удаляю базу, mongorestore. Все. - быстро, дешево.
    Либо просто сделать dump/restore с другого хоста (если он есть).

    Так же можете попробовать сделать дамп данных, дамп может весить меньше и если повезет то 3Гб хватит.

    Ещё бывает, что монга держит удаленные временные файлы, которые занимают место, можно попробовать перезагрузить монгу или весь сервер.

    Можете использовать флаг smallfiles, тогда монга будет чуть экономней захватывать место.

    Можно отключить журналирование - высвободится дополнительно 3Гб, тогда на dump/restore хватит, а может и на repairDatabase.
    Ответ написан
    Комментировать
  • Почему цикл выводит десять раз undefined?

    @lega
    берется извне переменная i и присваивается переменной i
    Там не так, имя "i" захватывается не в момент var, а с начала блока и до конца, тот же результат будет если var i переместить в конец:
    for (var i = 0; i < 10; i++) {
      (function() {
          console.log(i);
          var i;
      })();
    }

    То же самое с именованными функциями, они создаются сразу, а не с точки где опубликованы:
    foo();  // вызов
    function foo() {console.log('FOO') }  // объявление
    Ответ написан
    Комментировать
  • Как сделать цикл for на angular?

    @lega
    В Angular Light есть фильтр generator: al-repeat="_ in 5 | generator"пример, можете в Angular.js сделать аналогичный.
    Ответ написан
  • Почему использование $parse не рекомендуется в angularjs?

    @lega
    $parse != eval, там формируется более-менее изолированная ф-ия, да и eval не страшен если запускать только свой код.

    "Половина" Angular.js основана на $parse
    Ответ написан
    2 комментария
  • Как сделать disable только для определенный radio?

    @lega
    Сделал пример на Angular Light (если захотите попробовать что-то более высоко-уровневое).
    Тут все просто:
    1) al-radio="upload" value="Image_upload" -> устанавливает переменную upload="Image_upload"
    2) al-disable="upload == 'Image_upload'" -> ставит disable если выполняется условие upload == 'Image_upload'
    Ответ написан
    Комментировать
  • Что не так с кодом?

    @lega
    1) Разбейте на функции
    2) Выбросте py 2.x, используйте py 3.4+
    3) Используйте авторизацию по ключам, а не по паролю (это удобней и безопасней).
    4) Не знаю на сколько удобен paramiko, но это все можно просто сделать через subprocess если у вас linux.

    Так же, не знаю что вы ищите там в логах, но (скорее всего) это можно сделать "парой" bash команд (как минимум они могут помочь).
    Например этот код выдает мне все строки со словом "error" в лог файле удаленного сервера без запроса пароля, при этом не гоняя файл по сети:
    $ ssh server "cat /var/log/nginx/alight.access.log.1 | grep error"
    189.217.26.81 - - [24/Sep/2015:18:53:25 -0400] "GET /*~1*/foca.aspx?aspxerrorpath=/ HTTP/1.1" 404 168 "-" "FOCA"
    189.217.26.81 - - [24/Sep/2015:18:53:25 -0400] "GET /*F0C4~1*/foca.aspx?aspxerrorpath=/ HTTP/1.1" 404 168 "-" "FOCA"
    Ответ написан
    1 комментарий
  • Есть фанаты/любители Angular? Предлагаю обсудить одну находку.?

    @lega
    Почему бы и нет, по хорошему сам popup плагин должен этим заниматься.
    При этом можно получить профит используя фильтры. А в случае с Angular Light можно использовать асинхронные фильтры (или текстовые директивы) и тогда можно будет что-б шаблон сам доставал текст по ссылкам с сервера, например "{{companyId | loadCompanyNameById}}". Пример на Angular Light, с асинхронным фильтром.
    Ответ написан
    Комментировать
  • При вводе текста в input не меняется value. Как исправить?

    @lega
    У вас возможно там 2 или более #datetime-from (т.е. с одним ид)
    Ответ написан
  • Как отсортировать ответы при использовании многопоточности?

    @lega
    Если размер ответа у всех запросов одинаковый, то можно записывать прямо по адресу (как в массиве). А так, можно сделать ф-ию save(index, result), через которую и сохранять результаты, она будет придерживать ответы соблюдая очередность, используя то же словарь например, в итоге, даже если у вас миллиард запросов, а параллельно отрабатывают только 1000 запросов, то размер словаря не превысит 1000.
    Ответ написан
  • Почему не любят Ember.JS?

    @lega
    1) Ember (сильно) тормозной по сравнению с другими фреймворками (судя по разным тестам)
    2) Классы на классах классы погоняют (хотя вроде можно и без них), когда в других* положил json и все робит
    3) Observer модель + set/get - дает свои минусы и не всем нравится
    Ответ написан
    6 комментариев
  • Как заставить DNS работать через eth0??

    @lega
    как сделать так, чтобы именно DNS на 1 машине обрабатывались через свой eth0 а не через ipip0?
    Нужно что-бы был route для днс в eth0.

    Что у вас в?:
    $ cat /etc/resolv.conf
    $ route -n
    Ответ написан
    6 комментариев
  • Почему MongoDB использует всю оперативную память?

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

    MongoDB просто падает
    сервис так же может падать если кто-то другой съел всю память.
    Ответ написан
    Комментировать
  • Как грамотно хранить порядок записей в mongo?

    @lega
    Тут зависит от того как используются данные, можно сделать так:
    1) не менять index у документов
    2) при удалении документа, остальные документы не трогать
    3) При вставке между 3 и 4, делать индекс 3.5, а между 3.5 и 4 -> 3.75 и т.д. главное что-бы былп правильная сортировка документов.
    4) Вычислять индекс налету.
    Ответ написан
    Комментировать