Как стать автором
Обновить
0
0
Nerten @Nerten

Пользователь

Отправить сообщение

Пишем одностраничный клиент на javascript

Время на прочтение5 мин
Количество просмотров48K
Данная статья является вольным переводом. Оригинал тут.

Введение


Думаю, ни для кого не секрет, что клиентские приложения в современных веб-сервисах становится все сложнее и количество JS кода в них растет. До недавнего времени архитектура клиентской части, как правило, разрабатывалась с нуля и была специфична для каждого проекта. Не удивительно что приходилось снова и снова сталкиваться с типичными задачами.
К MVC-фреймворкам на серверной стороне все уже привыкли, но JS код на клиенте часто бывает плохо структурирован.

Предлагаю ознакомиться с решением на базе backbone.js, underscore.js и jQuery, которое поможет решить эту проблему.

Постановка задачи


Каким бы мы хотели видеть наше приложение? Вот основные моменты, которые мне кажутся важными:
  1. Должен быть удобный способ описать модели нашей предметной области.
  2. Любые изменения в модели должны немедленно отражаться в пользовательском интерфейсе, если модель в нем представлена каким-либо образом.
  3. Понятная и легко-поддерживаемая структуризация кода в стиле MVC.


Попробуем решить эти задачи на примере простого приложения «Каталог фильмов».
Поехали!
Всего голосов 70: ↑64 и ↓6+58
Комментарии51

Как зашифровать Ваши файлы и улучшить безопасность Dropbox

Время на прочтение4 мин
Количество просмотров39K
imageDropbox — действительно отличный сервис. Он дает Вам свободные 2 гигабайта памяти, чтобы хранить Ваши файлы и предоставляет вам доступ и синхронизации их между различными компьютерами, независимо от того запускаете вы его на Windows, Mac, Linux или любой другой мобильной ОС. Однако, есть одна проблема. Все файлы, которые Вы храните в облаке, не зашифрованы. Кто бы ни взламывал Ваш аккаунт, может просмотреть и получить доступ ко всем файлам в Вашем аккаунте, включая те конфиденциальные документы, которые Вы синхронизировали по облаку.

Почему это важно? Ошибка, сделанная командой Dropbox несколько дней назад, оставляла личный кабинет Dropbox'a открытым в течение 4 часов. В течении этого времени кто угодно мог войти в любой аккаунт и получить доступ ко всем файлам в этом аккаунте без любого пароля. В то время как это затронуло только 1 % их пользователей (который составляет примерно 250 000, и это не маленькое число), если Вы — один из тех, аккаунты чьи попали под угрозу, либо у Вас есть конфиденциальные файлы в Вашем Dropbox, лучше зашифруйте его чтоб подобные вещи были вам не страшны.
Читать дальше →
Всего голосов 60: ↑49 и ↓11+38
Комментарии54

Временное переключение WIFI в режим точки доступа

Время на прочтение3 мин
Количество просмотров36K
Представьте, что вы поехали в другую страну, у вас собой есть смартфон и вам очень нужно зайти с него в интернет (например синхронизировать контакты или поставить какой-то софт). Какие есть варианты?
— Первый вариант — это мобильный интернет. К сожалению, это не всегда просто и не всегда дёшево.
— Второй вариант — WIFI. Вам повезло, если вы можете подключиться к WIFI там, куда вы прибыли, и в этом случае задача уже решена.
— Третий вариант — LAN. А что если у нас есть только LAN? Самое простое — это захватить с собой из дома небольшую точку доступа, но что если вы её не взяли с собой или у вас её нет? В этос случае вам поможет случайно захваченный с собой ноутбук или нетбук :)

Имеем


— EeePC 901 с Ubuntu 10.10
— Смартфон
— Локальная сеть

Задача


— Получить доступ в сеть со смартфона используя WIFI
Читать дальше →
Всего голосов 66: ↑61 и ↓5+56
Комментарии59

Dotjs: исполнение локальных скриптов на любом сайте

Время на прочтение1 мин
Количество просмотров1.1K
Dotjs — расширение для Google Chrome (под OS X), которое позволяет применять скрипты из локальной папки ~/.js на любом сайте, если имя файла скрипта соответствует названию сайта. Например, при заходе на google.com будет автоматически исполнен скрипт ~/.js/google.com.js. Таким образом, модифицировать сайты не сложнее, чем с помощью Firefox/GreaseMonkey.

Дополнительный бонус: ~/.js/default.js будет исполняться на каждом запросе, так что сюда можно подключить универсальные правила.
Читать дальше →
Всего голосов 8: ↑4 и ↓40
Комментарии3

Массовое надписывание и загрузка изображений в Picasa Web Albums

Время на прочтение4 мин
Количество просмотров1.9K

Пролог


Люди, публикующие изображения в Интернете, наверняка задумывались о том, чтобы хоть как-то обозначить своё авторство.

Один из самых очевидных способов — добавлять на изображения надпись с указанием вашего веб-сайта, имени, копирайта или копилефта. Для этого домохозяйка откроет любимый графический редактор, выберет инструмент «Текст» и напишет красивыми буквами послание будущим поколениям.

Однако если изображений много, процесс становится весьма нудным. А мы, поэты компиляции и скульпторы кода,— творческие личности, ужасно не любим рутины.

Вторая рутинная операция фотографа-блогера-графомана — загрузка изображений на уютный хостинг.

Для автоматизации всего этого давно придумано множество инструментов под все мыслимые операционные системы. Но у всех этих инструментов есть одна проблема: они делают это так, как их создателю представлялось правильным, и любые отклонения вновь приводят к уйме ручной работы.

Посему скрипт. Поэтому я люблю Линукс. Поэтому я люблю Picasa Web Albums: Google отдал нам на растерзание googlecl — очень простую утилиту для работы с сервисами Корпорации Добра из командной строки (про неё уже кратко рассказывалось на Хабре).

Скрипт очень прост и легко подстраивается под новые неожиданные нужды.

Довольно лирики
Всего голосов 50: ↑38 и ↓12+26
Комментарии12

Реализация HTTP server push с помощью Server-Sent Events

Время на прочтение4 мин
Количество просмотров17K
На эту тему было уже много статей, но раскрыта далеко не вся правда. Для тех, кто пропустил — читайте Создание приложений реального времени с помощью Server-Sent Events .

Как же работает Server-Sent-Events?


Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии26

Iterators & Generators

Время на прочтение12 мин
Количество просмотров19K
Обработка элементов коллекции/массива обычная и частая операция. В JavaScript есть несколько способов обхода коллекции начиная с простого for(;;) и for a in b

var divs = document.querySelectorAll('div');
for (var i = 0, c = divs.length; i < c; i++) {
    console.log(divs[i].innerHTML);
}

var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
    console.log(i, obj[i]);
}

У объекта Array есть методы обхода всех элементов map(), filter()
var numbers = [1, 2, 3, 4, 5];
var doubled = numbers.map(function (item) {
    return item * 2;
});
console.log(doubled);

В Firefox есть "заполнитель массива" (Array comprehensions)
var numbers = [1, 2, 3, 4];
var doubled = [i * 2 for each (i in numbers)];
console.log(doubled); // [2, 4, 6, 8]

Итераторы и Генераторы появились в JavaScript 1.7 (по версии Mozilla) они есть пока в Firefox 2+ (в статье будет упомянут способ как их можно «эмулировать» почти во всех браузерах с костылем) Итераторы и Генераторы вносят механизм, позволяющий управлять поведением for in и инкапсулировать процесс получения следующего элемента в списке объектов.

Часто для обхода и обработки элементов массива мы пишем большие конструкции, часто копипастим их части. Задача Генераторов и Итераторов усовершенствовать этот процесс, добавив синтаксический сахар.
Читать дальше →
Всего голосов 89: ↑86 и ↓3+83
Комментарии16

Проблема с чтением файлов более 1Мб в Android

Время на прочтение3 мин
Количество просмотров3.9K
Добрый день.

При написании одного приложения для Android столкнулся с проблемой загрузки файлов из директории assets размер которых превышает 1Мб.
Допустим, в папке проекта, в assets лежит файл file.dat, который надо загружать в память и читать данные из него.

image

Открываем файл, и читаем в buffer 8 первых байт

AssetManager am = context.getAssets();
InputStream is = am.open("file.dat", AssetManager.ACCESS_BUFFER);
// Read file
is.read(buffer, 0, 8);


В результате выполнения кода на Android 2.2 и ниже, получаем сообщение в LogCat
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии16

Доработка китайской акустики (SVEN SPS-678)

Время на прочтение3 мин
Количество просмотров188K
Привет, %username%. Сегодня я расскажу как немного апгрейдить твою компьютерную акустику. Сразу оговорюсь, что данное руководство не преследует цель сделать из твоей акустики B&W, а лишь в разумных пределах улучшить звучание при минимальных затратах времени и денег.

Итак, имеем такие вот колонки:


Читать дальше →
Всего голосов 126: ↑111 и ↓15+96
Комментарии104

Flash-игры для «чайников»

Время на прочтение1 мин
Количество просмотров20K


Вышла первая версия фреймворка StencylWorks — это довольно продвинутый инструмент для создания двухмерных Flash-игр на компьютере Mac или Windows (скоро появится поддержка iOS). Программой можно пользоваться без знания языков программирования (design mode), а для кодеров имеется отдельный мощный интерфейс (code mode) через ActionScript 3 API с поддержкой любого стороннего редактора.
Читать дальше →
Всего голосов 64: ↑55 и ↓9+46
Комментарии20

SkypeTab — вкладки для линуксового скайпа. Теперь под любые оконный менеджер и панель

Время на прочтение2 мин
Количество просмотров1.4K
Устарело, см. свежую версию тут.

  • Если Вы не пользуетесь Linux или Skype, то этот пост не для Вас.
  • Если Вы настроили себе мост в Pidgin и теперь все 3.5 скайпоконтакта у Вас в этом списке, то этот пост не для Вас.
  • Если Вас устраивает то, как скайпоокна группирует KWin, и не смущает тот факт, что они как в таскбаре место все дружно занимали, так и занимают, то этот пост тоже не для Вас.
А вот если Вы активно пользуетесь скайпом, активно переключаетесь между несколькими конфами и хотите удобного нативного интерфейса, то рекомендую всё же ознакомиться.



Когда я разрабатывал предыдущую версию, я упёрся лбом в стену. Все попытки поправить косяки упирались в «умные» оконные менеджеры, лучше меня знающие, где должны находиться окна, и в кривые утилиты таскбара (да-да, gnome-panel в их числе), игнорирующие SKIP_TASKBAR_HINT, если он не был установлен до появления окна на экране. Знаете, я тогда сдался.

Но на прошлой неделе на переходе в метро меня кто-то толкнул и я полетел вниз с лестницы. В нижней точке полёта, в момент удара лбом в стену, в тот чудесный миг, я осознал, что никакой стены на самом деле нет. Нет, мне потом в больнице рассказали, что стена на самом деле была, причём даже бетонная. Но я сейчас про ту метафорическую стену из предыдущего абзаца.
Читать дальше →
Всего голосов 119: ↑111 и ↓8+103
Комментарии87

Тюнинг Canabalt

Время на прочтение7 мин
Количество просмотров2.6K
Была предпринята попытка сохранить оригинальную орфографию, шутки и пунктуацию. И, да, данный пост — перевод статьи создателя Canabalt, не думайте, что игру создал я.

image

[Эта статья рассматривает технические особенности, соотношения и размеры Flash версии игры Canabalt. Читатель, будь осторожен, статья содержит спойлеры и большое количество цифр!]

Друзья часто спрашивают меня: думал ли я о том, чтобы выложить исходный код моей Flash игры Canabalt в интернет на растерзание и изучение. Они думают, что для людей будет полезно увидеть, как в игре организована физика и другие вещи. Но я отношусь с опасением к этой идее, на это у меня есть несколько причин, например: исходный код игры написанный за 5 дней, представляет из себя кошмарный и отвратительный спагетти-код, который вряд ли поможет кому-нибудь. Поэтому, из чувства гордости по поводу первого дня рождения Cannabalt, я подумал: «почему бы не написать статью, в которой бы рассказывалось о том, как внутри всё устроено?»
Читать дальше →
Всего голосов 62: ↑60 и ↓2+58
Комментарии30

Руководство АНБ по безопасной конфигурации Linux-сервера

Время на прочтение1 мин
Количество просмотров18K
Агентство по национальной безопасности США опубликовало новую версию 200-страничного руководства (PDF) по безопасной конфигурации Red Hat Enterprise Linux 5. Это весьма подробный мануал, который объясняет принципы защищённой системы и на практике указывает все необходимые настройки и перечень сервисов, которые обязательно нужно отключить (это один из базовых принципов: минимизировать количество софта).

Есть и что-то вроде шпаргалки на листе A4, тоже очень удобно.
Читать дальше →
Всего голосов 122: ↑117 и ↓5+112
Комментарии45

Тонкости 9-patch ресурсов

Время на прочтение3 мин
Количество просмотров6.6K
В этой заметке пойдет речь о неочевидных особенностях работы 9-patch структур, использующихся в Андроиде для создания «растягивающихся» элементов графического оформления.

Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии4

NetPing: конструктор для администратора и досуг для программиста

Время на прочтение10 мин
Количество просмотров63K


Судя по тому, насколько популярен блог DIY, многие из нас любят изобретать. Наверное, каждый встречал человека, который способен сутками что-нибудь паять, программировать, отлаживать, не замечая ничего вокруг. Вот совсем свежие примеры.

В этой статье я расскажу про устройство, которое способно обеспечить досугом изобретателей очень надолго. Это, с одной стороны, серийно выпускаемые приборы. Но сделаны они в виде конструкторов, поэтому их применение ограничено лишь вашей фантазией.

Речь пойдет про устройства NetPing. Эта российская разработка периодически упоминается на хабре, но детального рассказа я не встречал. Пусть эта статья будет продолжением серии «Оборудование российского производства». Мне достался самый универсальный прибор линейки – UniPing RS-232. Основная сфера его применения – удаленный мониторинг и управление множеством устройств в квартире, доме, офисе. Конечно, давно существует понятие «умный дом», но, как правило, это преподносится как вариант для состоятельных людей, хотя получают они черный ящик с жестко заданным, пусть и большим, набором функций. Однако, можно ведь все собрать и запрограммировать самому!

Интересно?
Всего голосов 145: ↑142 и ↓3+139
Комментарии74

Книги, видео и другие материалы по разработке под iOS

Время на прочтение4 мин
Количество просмотров114K
«Хочу программировать под iPhone — говори, что почитать...»
Любимая девушка


Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.

Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
Читать дальше →
Всего голосов 105: ↑99 и ↓6+93
Комментарии58

Пора завязывать использовать пробелы вместо табуляции в коде

Время на прочтение3 мин
Количество просмотров92K

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

Итак, под катом — почему табы лучше пробелов, самые значительные заблуждения касательно табов и как ими правильно пользоваться.

Читать дальше →
Всего голосов 513: ↑390 и ↓123+267
Комментарии407

In-app purchasing или внутренние платежи в приложениях для Android

Время на прочтение7 мин
Количество просмотров57K

О чем это вообще?



С версией приложения Android Market 2.3.0 для разработчиков приложений для платформы Android открылась возможность предоставлять пользователям платежи внутри самих приложений. Теперь можно продавать уровни и артефакты, видео, музыку, плагины и прочее, пользуясь лишь встроенными средствами платформы. Давайте увидим, как это можно сделать.

Что нам понадобится?



Как обычно, любимая IDE, Android SDK и пример приложения.
Так же будет полезным представлять себе, что такое Service, BroadcastReceiver и, конечно, Activity.

Так же нам понадобится разрешение в файле манифеста —

<uses-permission android:name="com.android.vending.BILLING"/>, без него ничего не заработает.

Как это в принципе работает?



Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии22

GitHub Reflog v1.4.12

Время на прочтение2 мин
Количество просмотров1.1K
Добро пожаловать в четвертое издание GitHub Reflog — еженедельную хронику замечательных репозиториев на GitHub и активности сообщества. Предыдущие изданиях можно получить в архиве Reflog.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии8

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность