• Как обойти ограничение в 5 мегабайт для LocalStorage?

    Wev SQL (depricated) используется в хроме, сафари, опере и их мобильных версиях caniuse.com/sql-storage
    IndexedDB используется в IE10, лисе и десктопном хроме caniuse.com/#feat=indexeddb.
    Те то что ниже IE10 в пролете, там только localStorage (IE8 и IE9) и Вам скорее всего прийдется комбинировать IndexedDB и Web SQL для решения этой задачи.
    Суть в том что реализация их API асинхронная, в отличии от синхронного localStorage, из-за чего могут возникать проблемы в реализации вместе со сторонними библиотеками (например хранения тайлов для google maps).

    Некоторые браузеры спрашивают или сразу поддерживают больше 5 мб, которые прописаны в спецификации. В любом случае для localStorage хранение данные больше 5 мб это уже плюшки браузеров.
    Ответ написан
  • Подскажите алгоритм синхронизации массива строк в javascript с хранимыми на серевере строками в mySQL. Как синхронизировать несколько компьютеров с сервером

    Данные:
    1. Время синхронизации брать с сервера.
    2. На клиенте хранить собственно данные, последнее время синхронизиции (прислонное с сервера) и id данных, измененных после последней синхронизации. Если данные еще нет, то последнее время синхронизации принимаем за 0.
    3. На сервере хранить данные с дополнительным полем last_update или журнал изменения (отдельная таблица) с временем изменения и id записи (В любом случае такой журнал можно сжать до размера самих данных, удалив старые дубликаты id).
    Описание:
    1. Клиент стучится на сервер отправляю последнее время синхронизации и изменненые данные после последней синхронизации.
    2. Сервер сохраняет данные если не было конфликтов, и возвращает обновленные данные после последнего пользовательского обноновления (можно без пользовательских обновлений), новую дату обновления. А клиент обновляет данные и удаляет отосланные id записей после синхронизации.
    3. Если были конфликты (дата последнего изменнения пользователя меньше последнего изменения на сервере и хеши данных отличаются), то можно отложить обновление и передать пользователю данные для мержа, при этом обновив last_update таких записей до даты синхронизации возвращаемой пользователю. После чего пользователь снова синхронизируется. Если опять возник конфликт, то повторять до тех пор, пока не разрешится.
    Запрос:
    {time: , data: []}
    Ответ:
    {time: , data: [], mergeData: []}
    Замечания:
    Те localStorage хранит до 5 метров по спецификации, то возможно не стоит заморачиваться по поводу большого объема данных. Хотя можно добавить на сервер метод, который будет возвращать количество обновлений в байтах по последнему времени изменений и завязать дополнительную логику. Если данных больше 5 мб, то стоит использовать indexed db или web sql (привет ie 8 и 9), но в браузерах реализован асинхронный API.
    Ответ написан
    Комментировать
  • Как использовать темный дизайн яндекс карт?

    Карта на сайте состоит из js API и данных (тайлов, плиток).
    По сути API просто загружает тайлы и показывает их пользователю, причем такое отображение тайлов называется слоем (Layer).
    Самый простой способ — прописать путь к тайлам ночного режима.
    Самый сложный способ — брать готовые тайлы и с помощью хитрых фильтров сделать ночной режим.

    Представленный Вами вариант с google maps присутсвует в самом API. Не знаю поддерживает ли данный функционал api или тайловые сервисы яндекса.

    Тк я не знаю url тайлов ночного режима от яндекса, то могу предложить тайлы на основе OSM, например от cloudmade: maps.cloudmade.com/editor. Или поискать другие тайловые сервисы. Также можно попытать счастье и попробовать посмотреть фидлером куда стучится мобильное приложение в ночном режиме.
    Ответ написан
    Комментировать
  • Убрать статью в черновики после публикации и вернуть другую. Что будет в rss/ленте?

    Старая будет в ленте, но при переходе будет сказано что автор убрал в черновики.
    Да появится новая статься в ленте, но возможно автор просто создал новую статью и скопипастил контент. Сравните id статей. Возможно id меняется при смете заголовка. Все остальное врядли приводит к созданию нового id.
    Ответ написан
  • Литературу по подходам к unit-тестированию javascript?

    Не знаю насчет литературы, но можно например глянуть как ребята из jquery делают: github.com/jquery/jquery/tree/master/test или на других проектах вызывающих доверие.
    Ответ написан
    2 комментария
  • Может ли данный js-скрипт грузить браузер?

    По идее грузить не должно, но в любом случае можно воспользоваться профайлером. Например jsfiddle.net/k4kwP/4/, данный пример позволяет сравнить время пустой функции empty, время логики logic, время записи в dom writeDom, время записи в dom один раз вместо 4ех writeDomOnce и время которое требуется всей Вашей функции timer. Можно заметить, что основное время идет на записть в дом (возможно лучше не 4е раза писать в dom, а один). Для меня профайлеры помогают найти наиболее медленный код, для одной функции он достаточно бесполезен, можно прогнать весь Ваш код, возможно ошибка не в данной функции.
    Ответ написан
  • Jpeg, PNG, GIF -> pixel data array. Как на клиенте получить массив из изображения?

    Ставим input type=«file», через который получаем путь к файлу (или можно глянуть в сторону fileapi).
    Используя canvas можно загрузить изображение, получить высоту и шырину и получить цвет конкретного пикселя через context.getImageData (см. stackoverflow.com/questions/6735470/get-pixel-color-from-canvas-on-mouseover).
    Ответ написан
    Комментировать
  • Какие навыки в своей работе Вы используете довольно часто?

    Гугление, очень помогает, когда чего-то не знаешь (сюда же вопросы на стеке или хабре).
    Системы контроля версий.
    Математика, разная, конечно в зависимотси от задач.
    Порой доказывать свою правоту, те обяснить, что то что ты предлагаеш хорошо или то что предлагают другие — бред. Для этого взвешивать за и против. Не боятся высказывать свое мнение или точку зрения, порой даже когда тебя не просят. При этом всем не терять терпение.
    Чтение чужего кода (код коллег или используемых продуктов).
    Ответ написан
    Комментировать
  • Посоветуйте IDE по Линукс

    Если пару простых программок, то возможно не заморачиваться и использовать текстовый редактор (nano, vim или гуевые). Лично мне для чего-то простого проще открыть редактор и набрасать код в редакторе, чем грузить ide, хотя на любителя.
    Более полный список ide сожно найти на вики.
    Также есть вопрос на стеке stackoverflow.com/questions/2894655/the-best-ide-for-gtk-programming.
    Ответ написан
    Комментировать
  • Git для небольшой команды?

    • Статья на хабре о удачной модели ветвления в гите: habrahabr.ru/post/106912/
    • То что Вы работаете на одном сервере выглядит нехорошо, тк если с этим сервером что-нибудь случится, то никто не сможет работать (а теперь оцените как дорого обойдется сгорание сервера перед срочным релизом), так что советую также посмотреть в сторону быстрого развертывания приложения как prod так и dev версий и работать отдельно.
    • То что Вы работали без контроля версий выглядит также нехорошо, тк узнать кто, что и почему делал в модуле или файле через несколько месяцев становится практически невозможно.
    • Под венду есть консольный клиент msysgit.github.com/, который Вам уже советовали, по мне он вполне удобен, есть также code.google.com/p/tortoisegit/, который Вам уже тоже советовали. Для eclipse есть плагин для гита, для ide от jetbrains поддержка гита из коробки, так что вероятнее всего в netbeans есть плагин. Как альтернативу можно глянуть Mercurial, тк он похож командами на гит и вроде с клиентами под венду у него проще, но сам не пробовал.
    • Если Вам не подходит приватный репозиторий на гитхабе или битбакете, то стоит делать бекапы на какой-нибудь сторонний сервер (или сервис, как google storage, amazon storage, google drive, dropbox), хотя вероятность того, что сгорит центральный сервер и тачки разработчиков с локальными версиями сильно уменьшается по сравнению с одним сервером или тачкой, тк гит это еще и бесплатная возможность бекапа.
    Ответ написан
    Комментировать
  • Покупка платных шрифтов

    Что насчет ковертации, не занаю насчет платных шрифтов, но есть замечательная статься о иконочных шрифтах habrahabr.ru/post/141126/, но то что там описано можно легко применить и когда уже есть ttf шрифт (там инструция под линуксом). Еще можно глянуть какие шрифты поддерживаются браузерами: www.html5rocks.com/en/tutorials/webfonts/quick/?redirect_from_locale=ru.
    Тк мне не нужен был .oet, то вся конвертация у меня свелась у установке fontforge и python-fontforge и запуску следующего скрипта github.com/fontello/font-builder/blob/master/bin/fontconvert.py:

    python fontconvert.py -i path_to_font.ttf -o output_font_name
    

    Для .eot ставим ttf2eot и:

    ttf2eot < path_to_font.ttf > path_to_eot_font.eot
    

    Если Вам поможет данные вариант, то скажите спасибо Vitaly
    А лучше чтобы Вам сразу отдавали и ttf, и svg, и woff, и eot.
    Ответ написан
    Комментировать
  • Общие вопросы по Flask?

    Не могу себя назвать знатаком django или flask, но:

    Вроде многая инфа есть в доке на оф сайте (которая читается очень быстро, буквально за день-два, если Вы что-то пропустили).

    1. Точно не знаю как работает sorl, но если картинки генерятся по запросу на лету, то возможно нужно смотреть на возможности шаблонизатора и его расширений
    2. Фласк по умолчанию использует шаблонизатор jinja2, который позволяет писать катомные теги, вообщем вопрос больше по jinja2
    3. По-моему это реализуется с помощью шаблонов (jinja2) и наследования, или include, или кастомных тегов
    4. Вроде на офф сайте есть что-то: flask.pocoo.org/extensions/
    5. Почему бы нет, какие есть опасения?
    Ответ написан
    2 комментария
  • Python: не работает print в вебе

    По идее print будет выводить результат в stdout Вашего сервера. Но для веба лучше использовать logging (это если реальное приложение):
    import logging
    logging.info('Your message there')
    


    Уверен что print работает отлично (хотя бы пустую строку выводит), если stdout стандартный без перенаправлений.
    Поэтому раскажите какой сервер/фреймворк вы используете. Как запускаете свой сервер. Может глупый вопрос, но результат не выводится в консоль или же на веб страничке?
    Ответ написан
  • С чего лучше начинать программировать?

    Как я помню свое изучение программирования:
    В школе изучая паскаль я думал что не хочу чтобы моя жизнь была связанна с программированием, тк писать снова и снова бесполезные двадцати строчные програмки было ужасно скучно. Но волею судеб я поступил в IT направленный вуз и там познакомился с Delphi и после того как я в него немного въехал начал получать фан, тк можно было делать реальные программы с окошками и тд.
    Потом взял у друга книжку по java, написал первое веб свое приложение на jsp и сервлетах, потом приложение на spring и hibernate и javascript. И это дало еще больше фана.
    Тогда еще попробовал написать что-то на QT. Я был снова восхищен.
    Потом меня будучи студентом пригласили работать на .net и js и так совпало что параллельно начал изучение python. В итоге я бросил .net и использую js и python.

    Итак, чтобы найти язык, на котором в итоге остановишься, нужно перепробовать не мало и по сути не важно с чего начинать. Главное чтобы то чем ты занимаешься доставляло удовольствие, а для начинающего по-моему это видеть результат своей работы, за который будет распирать от гордости.

    Наверное для начинающего сложно выбирать предпочтения между вебом, десктопными приложениями, алгоритммами, но если они все же есть можно глянуть один мой ответ habrahabr.ru/qa/23350/#answer_95836.

    И от себя: проще всего наверное будет pyhton (писать можно практически все, его хоть как калькулятор можно использовать), если простота не для Вас попробуйте C (там и указатили и работа с пямятью, вообщем то как работает компьтер но уже не ассемблер). Если Вы не остановите свой выбор на .net, поставьте linux или купите мак.
    Ответ написан
    1 комментарий
  • Как разбить html-текст на несколько частей?

    1) Вы зависите от шрифта, те для разных шрифтов текст будет разной длинны
    2) Вы зависите от размера шрифта, те для разного размер шрифта будет текст разной длинны
    3) Вы зависите от тегов, теги могут содержать стили с разными шрифтами, шрифты в теге h1 могут отличаться от шрифтов в теге p, к токму же падинги, маржены и др. стили
    4) Вы зависите от необходимого размера разделения, те сколько пикселей по ширине и высоте примерно должно помещаться в один блок и как это должно быть на разных устройствах/размерах экрана
    5) Вы не говорите как доржен вести себя html элемент не вмещающийся Ваш страничный блок

    * Я бы для нескольких колонок советовал бы caniuse.com/multicolumn
    * Я бы для нескольиких страниц элемент фиксированной высоты и overflow: hidden тогда количество страниц определяется Math.ceil(content.height / container.height), а очередная страница оределяется как top: container.height * (page_no - 1) и переключение на js (можно добавить градиент фон-прозрачный, чтобы обрубание текста выгладило красивее).
    * Если разметка довольно простая и содержит много блоков, то $(content).children() и для каждого дочернего элемента высчитываем длинну символов и разделяем на блоки по длинне.
    * Если разметка более сложная, то берем каждый элемент и высчитывем дилнну в зависимости от тега (класса, стиля) при этом запоминая в каких тегах мы находимся, когда доходим придельной длинны, то вставляем завершиющий тег дива страницы, а следующую страницу начинаем с сохраненных тегов разметки (теги inline h1, p и тд в теории должны закрываться страничным дивом).

    ЗЫ. Есть всякие js плагины реализующие ... для обрезания больших блоков, то что я когда-то использовал делило текст на части и в зависимости от длинны уменьшало/увеличивало отображаемый текст до тех пор, пока элемент не будет необходимой дилнны, возможно Вам подойдут похожие плагины.
    Ответ написан
  • Каталог Google Apps. Совместное использование контактов, с разнесением по группам

    В админской консоли в Setting/Contacts есть настройки: Choose which user email addresses should be visible to other users и Choose what is shown in the browsable «Directory» in Contact Manager, сами же контакты обещаются лежать в www.google.com/contacts/a/<your_domain>. Сам этими контактами не пользовался, но выглядит как то что Вам нужно.
    Ответ написан
  • JS-мастера, как остановить reset у input'а при нажатие ESC?

    У меня заработал сл код jsfiddle.net/nbEZA/3/
    Здесь возвращается фокус только после того как значение было задано по нажатию на спан.
    Я вижу происходящее у Вас так:
    onmousedown — снимаем фокус с input
    onclick — вызываем обработчик, повешенный на span
    $('#input').focus(); — переводил фокус обратно (зачем перед изменением, тк потом все равно повторяется?)
    $('#input').val('42'); — изменяет значение input (без onchange события)
    $('#input').focus(); — переводил фокус обратно, но если фокус уже на элементе, то получаем возможность отменить по esc, тк фокус не менялся, а значение поменялось без onchange (но почему так не скажу)
    Ответ написан
    1 комментарий
  • Нужна адаптивная помощь

    Если у Вас картинки скриптом подгружаются, то почему бы пе поставить простую проверку мобильный или десктопный браузер (window.navigator.userAgent), если просто грузить с меньшим качесвом можно смотреть на тип соединения к интернету (window.navigator.connection).
    Если же через css, то нужно смотреть в сторону @media.
    Ответ написан
    1 комментарий