Pull to refresh
12
0
Александр Лариков @larikov

Software Engineer

Send message

iPad как платформа для разработки веб-приложений

Reading time3 min
Views44K
Современное общество мобильно, легко адаптируется к динамично меняющейся окружающей среде. Мы на связи с глобальной сетью повсюду: в машине, в поезде, в метро, даже в туалете!
По-моему термин On-The-Go! наиболее точно характеризует современного человека.

Сейчас планшетник уже перестал быть роскошью и гаджетом, который есть только у президента. Уже пол года, как я стал счастливым обладателем iPad. В основном я использовал его для серфинга в Интернете, презентаций видеоработ заказчикам, и чтения технической литературы (как это ни странно прозвучит, но художественную мне удобнее читать с iPhone'а). Но с момента покупки меня ниразу не покидала мысль «А можно ли полноценно разрабатывать веб-приложения на iPad? Так, чтобы компьютер был не нужен вообще?». И сегодня я могу сказать — ДА — на iPad можно вести полноценную веб-разработку. Сегодня в AppStore уже есть ряд программ, которые очень сильно помогут при разработке приложений на iPad.
Читать дальше →

Получение визы США

Reading time3 min
Views1.5K
USA visaНе так давно, в июле, компания Intel прислала мне приглашение на мероприятие AppUp Elements. На момент получения приглашения у меня не было ни паспорта ни, разумеется, визы США. Но я успел получить и то и другое и прибыл на мероприятие точно в срок. О том как это мне удалось я и хочу рассказать в этой статье.

Данная статья может быть полезна тем, кто хочет в будущем или уже готов получить визу для поездки в США.
Читать дальше →

кроссдоменный UPLOAD файлов с прогресс баром, без перезагрузки страницы, и без использования флеш

Reading time5 min
Views2.4K
Драсте всем.
Спасибо что решили почитать этот пост.

Задача состояла в следующем, в связи с тем что широко известный загрузчик файлов FancyUploader, не всегда, но довольно часто глючит, особенно если использовать прокси, нужно было разработать систему, по которой при загрузке файла показывался прогресс бар… Всё бы ничего, таких систем много, но все либо используют другие флеш загрузчики или иные Апи, что в данном случии являеться негативным результатом разработки.

После некоторого времени поиска была найдена система основанная на модуле apc habrahabr.ru/blogs/webdev/17620. Всё бы хорошо, но вешать дополнительный модуль кеша на сервер где кеш технологии уже используеться было безсмысленно. Тогда мне в руки попалась информация о NGINX upload progress module (http://wiki.nginx.org/NginxHttpUploadProgressModule) и это действительно работает… Тем более что на наших серверах установлен именно nginx в качестве fronе-end сервера.

Но самое интересное оказалось впереди.

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

После конфигурирования nginx с upload progress module и использование примера с wiki.nginx.org/NginxHttpUploadProgressModule прогресс бар загрузки файла заработал.

Для пересылки самого файла на нужный сервер было изменено не много, и сам же сконфигурированных nginx естественно должен находиться на h_t_t_p://STORAGE-SERVER.com.

<
Читать дальше →

В индекс Google по кнопке

Reading time1 min
Views518
Google запустил новый сервис «On-Demand Indexing» для вебмастеров, которые установили поиск от Google у себя на сайте. Сервис позволяет вебмастеру самостоятельно «сказать» когда нужно проиндексировать его сайт. На странице Site Search с помощью кнопки «Index now» вебмастер сможет проиндексировать и переиндексировать страницы сайта. Раньше, как известно, Google это делал самостоятельно «по расписанию».

Как говорят в Google, этот сервис предназначен для того, чтобы вебмастер мог «сказать» поисковику, что на его сайте появился новый контент или изменился старый. Проиндексированные страницы с помощью кнопки «Index now» смогут попасть в выдачу только через 24 часа.

Новый необычный сервис микроблоггинга

Reading time1 min
Views7.7K
Я не могу понять, зачем сервисы микроблоггинга разрабатывают свои протоколы, кучу однотипных программ под разные платформы, мучаются с поддержкой SMS-гейтов. Ведь есть Jabber с множеством клиентов на любой вкус и цвет, в том числе и для мобильных телефонов. Пользователь может обновлять свой блог с помощью той программы-клиента, к которой он привык, которую использует каждый день. Так родилась идея…
Читать дальше →

Простые вещи: Подгрузка через AJAX HTML-кода, содержащего JavaScript.

Reading time4 min
Views2.9K
При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика.

Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.

Читать дальше →

Спам в комментариях — технические методы противодействия

Reading time8 min
Views2.8K
Ниже приведена сумма основных, широко используемых методик противодействия спаму в комментариях (и прочим способам автоматической отправки нежелательных сообщений) — часть методик я использую при разработке собственных Web-приложений.
Читать дальше →

Десять маленьких программ, без которых неуютно жить

Reading time5 min
Views8.6K
Заменяем диспетчер задач
Управляем автозагрузкой и следим за состоянием системы
Устанавливаем переключение раскладки
Создаем виртуальные рабочие столы
Сохраняем все заметки в одно место, не задумываясь ни о чем, кроме текста
Ускоряем навигацию по винчестеру
Ставим плагины к проводнику Windows и радуемся
Легко и быстро удаляем папки-файлы «занятые другими процессами»
Копируем и перемещаем быстрее и качественнее
Перестаем парится с кодировками, заменив блокнот

и как мы это сделаем?

Какая боль! Толпы против Веб — 2:0. Эпизод два — клоны заходят в полдень

Reading time5 min
Views587
Продолжаем warstory оптимизации PHP+mySQL сайта редчайших слов. Одним майским днем, копаясь в словах, мне пришла в голову мысль — расставить под этими словами textbox'ы — использовать [модный для Web 2.0] crowdsourcing. Заполняй чем хочешь, только про это конкретное слово. Но, должно было работать collaborative — как Google Docs — если ты и еще кто-то редактируют слова на одной и той же странице — изменения будут отображаться одновременно. Или, например, кто-то редактирует слово «google» на странице Гугла, а на странице TechMeme, к примеру, есть тоже слово «google» — и им в real-time покажутся эти изменения со страницы Гугла [это необязательно понимать]. Знал бы я какие последствия эта веселая задумка на mySQL окажет позже…

Сделать это оказалось несложно: prototype.js — в руки, ajax — каждые 10 секунд, смотрим в базе что менялось за последние 10 секунд, делаем пересечение со словами на текущей странице, отправляем js highlight effect и новый текст — вуаля. Людей было, но мало кто что-то вводил, тогда я придумал повесить в уголок страницы блок «только что было сказано». Например: «На странице 'fibonacci.com' только что было сказано, что 'fibonacci' → 'crazy math scientist'». Это уже значительно заинтересовало людей и заполняемость выросла в разы. Все видели движения на сайте и сами вовлекались.

Собственно, я сделал достаточно функционала для довольно забавной игрушки — «войны сайтов редкими словами», авто-категоризатор, синонимизатор и т.п. Я сидел мирно редактировал «живой» сайт, загружал новый файл, если видел ошибку — исправлял, не переживая, что это кто-то может видеть. Не подозревал я, что уже тысячи людей видят это. После очередной ошибки в названии функци что-то произошло… я не смог загрузить на FTP index.php… это был TechCrunch....
Читать дальше →

Делаем сами простые часы за выходные

Reading time7 min
Views61K
Статья о том, как за выходные с нуля сделать простые электронные часы с использованием микроконтроллера. Показана только основа часов, количество программных и аппаратных фич ограничивается только вашей фантазией).

Читать дальше →

Кадрирование картинок с использованием JQuery

Reading time1 min
Views1.5K
Кадрирование фотографий сейчас востребовано, потому что любое сообщество подразумевает общение живых людей. А общатся с собеседником проще «зная его в лицо».

У меня были свои требования к контролу который будет производить кадрирование. Поискав идеальное готовое решение я его не нашел и решил написать свой.

Требования такие:
1. Иконки за которые надо тянуть, чтоб изменить блок, должны быть большие.
2. Часть изображения которое вырежется должна быть оригинальная, а то что образается полупрозрачно прикрыто.

Вид кадрирования

Скрипт использует библиотеку JQuery. Сам контрол сделан как плагин к JQuery.
Можете посмотреть ПРИМЕР в работе, там же подробнее о плагине.

Интерфейс плагина следующий:

// Создает в указанном блочном элементе структуру элемента управления кадрирования
$(element).CropImageCreate(src, src_width, src_height, min_width, min_height, proportion, options);

// Возвращает данные о кадрированном изображении в виде объекта {src, left, top, width, height}
$(element).CropImageGetData());

P. S. Из готовых скриптов которые я нашел на мой взгляд лучший — imgAreaSelect.

Динамическая подгрузка Javascript

Reading time2 min
Views5.7K
Добрый день всему хабрасообществу! Недавно мне выпало разрабатывать огромный веб-проект (точнее доделать), на котором была просто уйма Ajax. Проблема заключалась в том, что все яваскриптовые файлы грузились сразу. Тобиш, если б мне захотелось добавить ещё функционал — то это новый js-файл, который следует грузить пользователю (хотя возможно ему этот функционал может даже не потребоватся). Недавно прочтенная статья "Динамическая подгрузка модулей на Javascript" дала мне понять, что js можно подгружать динамически, поэтому я стал искать метод решения.
Читать дальше →

KodiCMS — CMS на Kohana framework

Reading time5 min
Views19K
Всем привет, на Хабре уже вот как 6 лет и только сейчас решился написать свой первый пост, хотя до сих пор не уверен что это хорошая идея.

Предисловие


Уже более 6 лет я занимаюсь разработкой web приложений, начинал с верстки, javascript, php, python и т.д., в общем за все время я прошел все этапы создания сайта от дизайна в фотошопе и заканчивая созданием полноценного сайта.

Краткий рассказ о том как я разрабатывал CMS

Authomatic: python библиотека для аутентификации и авторизации

Reading time6 min
Views42K
imageПрактически любое веб-приложение предоставляет возможность авторизации пользователя с использованием учетной записи пользователя, в каком либо из известных социальных сервисов.

Магия авторизации происходит строго по протоколу OAuth 1.0а и OAuth 2.0 и значительно упрощает жизнь и владельцу веб-приложения и самому пользователю.

Остается сущая мелочь, реализовать нужный протокол применительно к конкретному веб-приложению. Регистрация и вход в веб сервис TheOnlyPage с использованием учетных записей Facebook, Google, LinkedIn и Microsoft Live работают благодаря python библиотеке Authomatic.

Согласно документации Authomatic обладает следующими замечательными особенностями:
Читать дальше →

Fail2ban и nginx: блокируем нежелательный трафик к определенному URL

Reading time2 min
Views58K
Доброго времени суток!

Несколько дней назад на одном из своих сайтов заметил подозрительную активность, вызванную перебором паролей. Произошло это как раз тогда, когда в сеть попали файлы с несколькими миллионами почтовых ящиков и паролей к ним. После бана в iptables нескольких адресов злоумышленники начали подбирать пароли с бОльшего количества адресов и вручную банить их уже стало неудобно. Как была решена эта проблема расскажу под катом.

Читать дальше →

Оптимизация трафика для веб-серверов Apache и Nginx

Reading time2 min
Views6.8K
Уровень подготовки веб-мастера: продвинутый

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

Оптимизация трафика для веб-серверов Apache и Nginx
Отпимизировать!

Ractive.js — бриллиантовый век web-разработки

Reading time12 min
Views51K
Как утверждает сама команда разработчиков, Ractive.js — это библиотека для разработки динамичных web интерфейсов, благодаря которой в мире web-разработки наступит расцвет: всем выдадут бонусы в 100%, холивары «кто круче» отступят в сторону, а разработчики, которые пишут интерактивные, динамичные сайты наконец то перестанут покрываться сединой и материться.

Короче, наступит бриллиантовый век веб-разработки.

Начиная очередной проект, прежде чем начать писать Backbone код (фу-фу-фу), решил применить это чудо в проекте (бриллианты!). А так как погуглив похабрив я понял, что на хабре всего одна статья о Ractive.js, нужно устранить эту несправедливость и заодно написать о том, правда ли нам всем свалится вагон счастья и будет ли вообще кто-то доволен. Ведь пообещать «диамантовый век» — это одно (каждые 4 года из телеков слышим), а сделать — совсем другое.

Под катом рассмотрю, что такое и как работает Ractive.js, и подробно распишу продакшн задачу с полной реализацией и описанием, чем это всё грозит уже всем нам.
Читать дальше →

Эффективная многопоточность в Python

Reading time7 min
Views77K
Хочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.

В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.

Питонисты с детства знают, что от использования потоков (тредов операционной системы) нет никакого толка из-за глобального лока интерпретатора. Но немногие догадываются, что как и любой лок, этот время от времени освобождается. В частности, это происходит при операциях ввода-вывода, в том числе и сетевых. А значит, потоки можно использовать для распараллеливания http-запросов — пока один поток ожидает ответа, другой спокойно обрабатывает результат предыдущего или готовит следующий.

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

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(concurrency) as executor:
    for _ in executor.map(upload, queryset):
        pass

Здесь concurrency — число рабочих потоков, upload — функция, выполняющую саму задачу, queryset — итератор объектов, которые по одному будут передаваться в задачу. Уже этот код при concurrency в 150 смог пропихнуть на сервера Амазона ≈450 запросов в секунду.
Читать дальше →

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №115 (22 — 28 июня 2014)

Reading time6 min
Views35K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


Читать дальше →

Information

Rating
Does not participate
Location
Дубаи, Дубаи, О.А.Э.
Registered
Activity