• Как организовать синхронизацию между облачными хранилищами?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    @Freika предлагает сложить всё в одну папку, но, по-моему, это не лучший вариант.
    Яндекс.Диск и Dropbox, например, хранят какую-то промежуточную информацию в папке внутри своей синхронизируемой папки. Представьте, что ЯД что-то посчитал и положил свою мета-инфо, Dropbox увидел изменения файла (с метой), пересчитал и положил к себе в папку, это увидел ЯД и т.д. и т.п. Возможно они когда-то договорятся...
    Иной способ - это сделать на сервере отдельную папку на сервере для каждого сервиса и зеркалить их постоянно, минуя мета-папки.
    Оба варианта не решают проблемы конфликтов, когда с двух облаков неожиданно пришли разные файлы.
    Ответ написан
    Комментировать
  • Как задать класс по умолчанию ?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Отвечал же уже:
    в вашем PHP-коде, где происходит генерация блока с этими ссылками на языки, вам нужно дописывать к текущему языку (текущий брать из запроса или из параметров плагина, если данный блок рисуется плагином) класс `active`.
    Javascript, который я привёл, это лишь эмуляция данного процесса. Как будто пользовать кликнул и ему перерисовалась вся страница.
    Ответ написан
    1 комментарий
  • Как сменить стиль текущей ссылки ?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    .lang a {
      -webkit-filter: grayscale(100%);
      filter: grayscale(100%);
      filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='grayscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
      filter: gray; /* IE6-9 */
      -webkit-filter: grayscale(1); /* Google Chrome & Safari 6+ */
    }
    .lang a:hover,
    .lang a.active {
      -webkit-filter: none;
      filter: none;
    }

    Класс `.active` при генерации страницы вешайте на нужную ссылку (нужный язык).
    Ответ написан
    7 комментариев
  • Куда исчезли Яндекс.Блоги?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Этот сервис давно уже не формировал отдельную от новостей картину происходящих событий, по сути дублировал новостные сообщения, при этом один агрегатор новостей у нас уже есть — это Яндекс.Новости.
    PR служба Яндекса
    Отсюда
    Ответ написан
    Комментировать
  • DNS. Можно ли прописать несколько А-записей без NS?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Есть домен: example.com.
    Есть такие записи в его зонном файле:
    NS ns1.example.com.
    NS ns2.example.org.
    
    @ MX 10 mx.example.com.
    
    @    A     10.0.0.10
    www  A     10.0.0.10
    sub  CNAME other.service.on.another.example.org.
    ns1  A     10.0.0.9

    Чтобы браузеры понимали куда слать запросы, они спрашивают у известных им DNS-серверов (системные, те спрашивают у провайдерских и т.д.) информацию о домене example.com. NS-записи - это адреса серверов, которые будут отвечать за все DNS-запросы к этому серверу.
    Т.е. чтобы узнать IP за доменом `example.com`, браузер узнаёт, что всё про него знают `ns1.example.com` и `ns2.example.org`. Спрашивают у одно из них, те ищут A запись для @ и возвращают `10.0.0.10`.
    Для любых других поддоменов (типа `www`, или `sub`, или тот же самый `ns1`) или почтовых нужд (MX-запись) спрашивать все будут именно у адресов, которые прописаны как NS-сервера.

    Если у вас за `example.com` будут отвечать 2 разных сервера, то нужно примерно так:
    NS ns1.example.com.
    NS ns2.example.org.
    
    @ MX 10 mx.example.com.
    
    @    A     10.0.0.10     ;; хостер 1
    @    A     192.168.0.10  ;; хостер 2
    www  CNAME example.com.
    sub  CNAME other.service.on.another.example.org.
    ns1  A     10.0.0.9

    NS-сервера будут знать о двух, трёх и т.д. разных серверах, которые отвечают за 1 домен. Round robin работает по принципе "балансировщика" с нормальным распределением: одному браузеру от вернёт `10.0.0.10`, другому `192.168.0.10`. Спустя некоторое время может обоим выдать одинаковые или результаты наоборот.
    Ответ написан
    3 комментария
  • На чем пишутся веб-приложения?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Все браузеры (нормальные, а не Opera Mini) поддерживают из языков программирования только Javascript, поэтому на нём всё и написано. Всякие библиотеки и фреймворки jQuery, Angular.js, Backbone.js - лишь уже написанные куски на нём же, упрощающие вам жизнь.
    https://github.com/shower/shower - презентации, например
    Ответ написан
    2 комментария
  • Чем конвертировать ttf-шрифт в другие форматы?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Использую этот инструмент: everythingfonts.com/font-face
    Пару раз была проблема с woff-файлом: символы были смещены относительно базовой линии вверх и выезжали за нужные границы. Всё решалось отключением woff и всё, благо это не так критично.
    Ответ написан
    Комментировать
  • У меня одного заблокирован lostfilm.tv?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Основание - раздача сериалов типа "Игра престолов", права на которую есть у Амедиа.
    Московский городской суд выносит вердикты по авторскому праву. Пока только на фильмы и сериалы.
    Ответ написан
    Комментировать
  • Будет ли работать купленный в США Apple iPhone 4s в России?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    С сетями "Большой тройки" (Билайн, Мегафон и МТС) не будет работать. Сети Sprint, как и Verizon, работают на стандарте CDMA. На том же стандарте в России работает лишь Skylink и то не факт, что он совместим с Sprint или Verizon.
    Если хотите работы в РФ не только по Wifi, то берите от AT&T - они GSM-оператор.
    Ответ написан
    Комментировать
  • Разобрать строку автомобильного номера?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Ideone. Нужно сделать проверку на код региона, либо тупо забить их все в регулярку. Работает, естественно, только регистрационные знаками частных транспортных средств России.
    Ответ написан
    Комментировать
  • Кнопка копирования адресной строки)

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Выше уже сказали, что только на JS нельзя. Выше, опять же, привели ссылочку на Flash-библиотеку ZeroClipboard, но у неё есть 1 минус - это всё на Flash.
    На StackOverflow задавали похожий вопрос и там привели решение только на JS, где пользователю надо нажать Ctrl+C.
    Там же привели ссылку на ещё более изящное решение на сайте Trello: отлавливать нажатие Ctrl, генерировать textarea с нужным текстом, выделять его. И в момент, когда пользователь нажимает ещё 'C', то пользователь самым простейшим действием Ctrl+C копирует подсунутый ему текст.
    Ответ написан
    Комментировать
  • Как настроить Build System в Sublime Text3 для Grunt?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Добавьте в Grunt плагины grunt-contrib-watch и grunt-contrib-compass.
    В Gruntfile.js примерно следующее:
    module.exports = function(grunt) {
    
      grunt.initConfig({
        compass: {
          dist: {
            options: {
              sassDir: 'sass',
              cssDir: 'css',
              environment: 'production'
            }
          }
        },
        watch: {
          scss: {
            files: ['sass/*.scss'],
            tasks: ['compass']
          }
        }
      });
    
      grunt.loadNpmTasks('grunt-contrib-compass');
      grunt.loadNpmTasks('grunt-contrib-watch');
    
      grunt.registerTask('default', ['watch']);
    
    };

    После запускайте Grunt. Вы в Sublime Text делаете изменения в ваших Compass-файлах, Grunt отслеживает, что файл изменился, и запускает компиляцию Compass в CSS.

    P.S. Я не очень хорошо знаком с Grunt и совсем не знаком с Compass, поэтому мог что-то в командах напутать, но суть изложить.
    Ответ написан
    1 комментарий
  • Как избавиться от подчеркивания ссылок html?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Ответ написан
    Комментировать
  • AutoPrefixer в SublimeText 2 не работает

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    У меня были подобные проблемы не с Autoprefixer, а с другими плагинами для Sublime. Проблема была в том, что имя пользователя было написано кириллицей и системный путь до плагинов выглядел как
    C:\Users\Михаил\AppData\Roaming\Sublime Text 2\Packages

    Это одна из проблем (фишек, кому как) Python, на котором плагины и работают.
    Ответ написан
    Комментировать
  • Передача длинного урла в GET переменной?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    - Закодируйте в base64 и посылайте закодированную строку.
    - Закодируйте /?&.
    Ответ написан
    Комментировать
  • Какой облачный провайдер выбрать для хранения static файлов?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    AWS S3:
    от $0.0240 за 1 ГБ места
    от $0.120 за 1 ГБ траффика

    Webzilla:
    от $0.040 за 1 ГБ места
    от $0.030 за 1 ГБ траффика

    Rackspace:
    от $0.100 за 1 ГБ места
    от $0.12 за 1 ГБ траффика

    Селектел:
    от 3 руб (~$0.085) за 1 ГБ места
    от 0.8 руб (~$0.023) за 1 ГБ траффика

    В итоге Amazon дешевле по месту, а по трафику дешевле всех Selectel.
    По географическому принципу для России Selectel также выигрывает: его сервера есть в России, а остальные за её пределами, но у других хранилищ есть разный CDN по миру. Ну или можно воспользоваться сторонним CDN.

    Я бы статику сайта (css, js) вынес на отдельный домен (assets.example.com).
    Если на странице много аватаров и пользовательских картинок, то разнёс бы и эти 2 сущности по разным доменам (avatars.example.com и pics.example.com) - это даст браузеру возможность грузить с параллельных доменов. Либо же класть без разбора всё на несколько параллельных контейнеров (0.pics.example.com, 1.pics.example.com, N.pics.example.com) - это чуть увеличить нагрузку и время на DNS-резолвинги, но даст браузера параллельность, гибкость (контейнеры могут мигрировать от сервиса к сервису при необходимости) и стабильность.
    Ответ написан
    Комментировать
  • Как зарегестрировать домен .express?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Если верить регистратору Gandi, то нет даже чётких планов о сроках ввода зоны .express в эксплуатацию.
    Ответ написан
    Комментировать
  • Как создать распределенную систему хранения файлов?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Не взлетит. Всё упирается в людей и безопасность.
    Есть ненулевая вероятность, что все узлы сети будут оффлайн, поэтому если вы подключите своё новое устройство, то не получите никаких своих данных. Нужен как минимум сервер (или группа серверов) для отказоустойчивости. Если же этого не будет, то каждый кусок данных надо хранить на всех узлах сети, чтобы добиться максимальной доступности данных. Если каждый человек будет хранить 1 ГБ, а всего человек будет 100, то каждом надо хранить по 100 ГБ. 99 за 1 - как-то дороговато.
    Безопасность: сейчас с обычными облачными хранилищами я понимаю, что точка ухода моих данных во вне - это либо я, либо сервис. С вашей же парадигмой - это несколько или все узлы системы, даже с криптованием страшновато отдавать данные непонятно кому.
    Пирингом идеально отдавать данные, которые нужны всем в данную минуту: популярные фильмы, музыка или программы, но никак не нужное одному или двум.
    Ответ написан
    4 комментария
  • Чем должна обладать идеальная сокращалка ссылок?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    0. Целью жить, а не загнуться спустя полгода работы. С эпохи популярности сокращалок дожили не все.
    1. Короткий домен, хотя короче j.mp и t.co уже нельзя.
    2. Статистика.
    3. Кастомные адреса и домены (домены можно и платно, но там и функционала побольше желательно).
    4. Простое API и желательно совместимое с уже имеющимся популярным, например bit.ly, чтобы взять их библиотеку, поменять домен на ваш и всё заработало.
    5. Клиенты/дополнения к мобильным осям и браузерам.

    ... Возможность установить время жизни ссылки, доступ к ней по паролю/ключу/сетчатке глаза я не считаю очень важными для публичного сервиса.
    ... Можно сделать функционал создания набора ссылок, например в виде плиток.

    @lookid выше писал о шаринге файлов и предпросмотре, но мне кажется, что это уже за рамками сокращалки как таковой.
    Ответ написан
    2 комментария
  • Как установить Chrome дополнение со стороннего сайта?

    MonkAlbino
    @MonkAlbino
    Фронтенд разработчик
    Собственно HTML со страницы с data-атрибутами.
    <a class="lng__download-btn  __chrome  __white" data-type="Extension" data-browser="Chrome" data-location="top" href="https://chrome.google.com/webstore/detail/2gis/jpniccbojbdjnnnclhelaenfhfbknlan" target="_blank">Установить</a>


    JS, который вешает обработчик на клик по ссылке. Проверяет браузер, отправляет статистику в Google Analytics и вызывает установку.
    $(".lng__download-btn, .lng__extensions-btn")
      .on("click", function(a){
        var c = $(this).data("type"),
        e = $(this).data("location"),
        f = $(this).data("browser");
        f ? (
          _gaq.push(["_trackEvent", c, "Download " + e, f]), !1 == /.com/.test(d) &&
          (b && "Chrome" == b || "YaBrowser" == b) &&
          (a.preventDefault(), chrome.webstore.install())
          )
        : _gaq.push(["_trackEvent",c,"Download "+e])
      })
    });
    Ответ написан
    Комментировать