Pull to refresh
0
Александр Агуленко @agulread⁠-⁠only

User

Send message

Несколько интересностей и полезностей для веб-разработчика (выпуск 8)

Reading time3 min
Views44K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Riot.js — The 1kb client-side MVP framework



Немного статистической правды:
Самый маленький среди похожих популярных фреймворков

Самый емкий код (в примере для Todo MVC приложения)

Самый быстрый из существующих

«Материнский» проект Moot тоже очень крутой и демонстрирует то, каким должен быть форум.

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

Автоматические хосты для веб-разработки (FreeBSD)

Reading time2 min
Views6K


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

Как вариант, можно скриптами обновлять конфиги apache и файл hosts.

Другое решение, настройка собственного DNS сервера с зоной верхнего уровня.
Это мы и сейчас и проделаем.

Итак, создадим зону ".dev" (используя демон named и apache под FreeBSD)
Читать дальше →

Динамический перевод страницы на другой язык

Reading time11 min
Views15K
Привет, Хабр.

Сегодня я расскажу о своих достижениях в области моментального изменения страницы — динамической смене языка. Эта штука понадобилась мне совершенно недавно, а так как сторонним реализациям я не доверяю (даже как-то и не нашёл их), то пришлось написать свою. За время её использования (где-то около полугода) я исправил все самые заметные баги (но это не означает, что их там больше не осталось :) ), и теперь представляю рабочую версию.

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

Для того чтобы не путаться, я определю для данной статьи следующий перечень терминов:
Словарь — хранилище ключей, по которым осуществляется доступ к локализации на данном языке. По сути дела представляет собой обычный JavaScript-объект, где свойства — ключи доступа, а их значения — переведенные строки.
Хэш — объект, который является результатом упорядоченного слияния словарей; общий словарь, из которого впоследствии ведётся выборка перевода.

Теперь более детально.
Читать дальше →

Изучая Skype — редактируем цитаты

Reading time4 min
Views22K
По сравнению с предыдущей статьёй (которая, судя по изменениям моей кармы, не всем пришлась по нраву) эта совсем безобидная.

Можно ли доверять цитатам из Skype? Казалось бы, их нельзя редактировать, а после недавнего отключения поддержки html тэгов (в windows версиях), это должно быть невозможным. Ответ на вопрос на скриншоте ниже:



Ответ – целостности и авторству цитат из Skype доверять нельзя. Наверняка многие наслышаны о защищённости протокола и в целом этой программы. Но как обычно, ошибки находятся в мелочах. Нигде и не утверждается, что цитаты подписаны цифровой подписью и им можно свято верить (ну или я не нашёл такого утверждения), но во всяком случае на практике это не так.
Читать дальше →

Поговорим про :checked

Reading time3 min
Views38K
В последнее время сложилось ощущение, что много людей пишет про создание табов (вкладок) на CSS.
Сейчас я хочу рассказать про ещё один способ создания вкладок на CSS (Предупреждая выпады в свою сторону, упомяну, что без :target).

Но обо всём по порядку.

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

Взлом капчи LostFilm (php)

Reading time4 min
Views16K
Решив скачать очередную серия Хауса я заглянул на LostFilm и обнаружил, что теперь на сайте, чтобы скачать нужно регистрироваться.
Только я решил зарегистрироваться, как на глаза мне попалась их новомодная капча:


Капча показалась мне довольно простой (хоть и не лишена она дольки оригинальности).
Читать дальше →

Скачиваем видео с YouTube

Reading time7 min
Views100K
Эта история берет начало в далеком 2006-м году… Я тогда был в начале своей программистской карьеры и работал в одной говноконторе развивающейся ноунейм фирме. Тогда у нас было несколько заказов на сайты с похожим функционалом: нужно было сделать портал, на который люди могли бы заливать видео/картинки/музыку и потом этот контент просматривать, комментировать, а заодно и смотреть рекламу принося прибыль доброму дяде владельцу. Все бы хорошо, но чтобы завлечь людей на сайт нужно чтобы там уже было много контента. Таким образом создавалось бы впечатление что сайт работает давно и успешно. И вот заказчик ставит грандиозную цель: наполнить новоиспеченный портал видео с youtube.com. Еще не зная, что меня ждет, я с радостью взялся за работу…
Читать дальше →

Создание анимированных tooltips'ов с помощью CSS3

Reading time3 min
Views8.3K
Статьи про создание tooltips'ов уже не раз поднимались на хабре [1,2] в виду большой популярности этого элемента. Сегодня вы узнаете еще один способ как создать простые, анимированные подсказки с помощью псевдо-элементов before и after, а так же свойства transitions.

image


В качестве примера были сделаны иконки социальных сервисов, при наведении на которые показываются названия этих сервисов.

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

CSS3 с погружением

Reading time7 min
Views36K
CSS3 видели и пробовали все, кого он мог заинтересовать. И закругленные уголки и падающие тени мы уже можем генерировать без лишнего труда.

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

Кроме того, меня интересовала поддержка CSS3 на мобильных платформах, неизученные возможности CSS3, а также генераторы, которые создают кроссбраузерный код. Я попробовал восполнить некоторые пробелы и собрать полезную информацию для тех, кто еще только готовится к погружению.

Браузеры, поддерживающие свойства перечислены в виде CSS комментариев. Генераторы и инструменты чаще всего могут выполнять сразу несколько функций, поэтому в таких случаях я указывал их только там, где они, по-моему, справляются лучше всего.
Читать дальше →

Парсер PSD файлов на CoffeeScript

Reading time2 min
Views5.7K

Автор скрипта psd.js — Райан Лефевр. Скрипт, как вы уже догадались, умеет открывать photoshop документы, как в браузере, так и на стороне Node.js.

Демонстрация возможностей (ранняя beta, не удивляйтесь, что некоторые файлы не откроются. На github странице проекта многие жалуются на это).

Пример вывода информации на Node.js:
{PSD} = require 'psd.js'
 
psd = PSD.fromFile './path/to/file.psd'
psd.parse()
 
for layer in psd.layerMask.layers
console.log "Layer: #{layer.name}"
console.log "Size: width=#{layer.cols}, height=#{layer.rows}"
console.log "Position: top=#{layer.top}, left=#{layer.left}"

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

Открыт репозиторий с играми для Ubuntu 10.04, 10.10, 11.04, 11.10

Reading time1 min
Views9.8K
Вчера на сайте UALinux появилась новость о том, что они подготовили репозиторий с играми для Убунты. Репозиторий содержит 250 игр разного жанра: их можно установить кнопочкой на сайте, или же привычно добавить репозиторий и ставить пакеты.
Сами игры в большинстве своем довольно примитивные: в мире есть уже много чего гораздо круче восстаний антропоморфных кроликов, или шариков в лабиринте, но есть игры из детства, портированные с консоли, аналоги старых добрых Worms, несколько «гоночек» и еще много чего интересного. Ну и, самое главное, что все игры доступны бесплатно: подключай репозиторий, ставь и играй.
Несколько игрушек, кстати, уже есть есть в дистрибутиве самой убунты, но в репозитории версии новее.
В общем, удачного убивания времени.

PS: Судя по комментам к моим предыдущим постам, на Хабре живут люди из UALinux. Поэтому, думаю, можно оставить в комментариях названия игр, которых не хватает в репозитории, но хотелось бы их там видеть.

Слайдинг в двух — нет, в четырех направлениях

Reading time4 min
Views4.7K
На Хабре не раз встречались статьи про слайдинг экранов под Android ViewPager, ViewPagerIndicator. Я хочу предложить вариант слайдинга в четырех направлениях.


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

Чёртова дюжина советов начинающим верстальщикам. Часть вторая

Reading time6 min
Views5.6K
Доброго времени суток!

О том, что вы читаете


Вот оно и свершилось — перед вами продолжение советов начинающим верстальщикам. Если вы не читали первую часть, то можете сделать это прямо сейчас.
В данной части вы ознакомитесь ещё с 11 советами (именно столько в моей второй заметке их находится).
Сперва мы пройдём нововведения в визуализации, а затем пофилосовствуем на тему семантики.

Ещё немного лирики


После выхода первой части я получил огромное количество feedback'a. Если честно, я не ожидал такого желания изучить что-то новое. Да-да, быдлокодеры там тоже есть. Но сейчас не об этом…
Также, как вы можете заметить, что количество человек, добавивших мой топик в избранное достигло миллиона, достаточно велико, что не может не свидетельствовать об огромном интересе к HTML5. Итак, поехали.
Читать дальше →

API карт от 2ГИС: рецензия

Reading time10 min
Views12K
Недавно 2ГИС порадовал всех нас выспуском версии 1.0 собственного картографического JS API. API карт отечественного производства — штука редкая; Mail.ru и Rambler, например, так и не сподобились, хоть и обещали (пруф раз, пруф два). Посмотрим, что получилось у новосибирцев.

Знакомимся



Не будем откладывать в долгий ящик, открываем раздел "Быстрый старт" и копируем предложенный код. It works! Правда, заголовок показывает кракозябрами — оно, правда, и не удивительно, поскольку тэга с указанием charset-а нет. Ну да ладно, мелочи жизни. Смотрим на код.

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

Написание системных утилит на PHP CLI

Reading time8 min
Views46K
Для большинства специалистов PHP не является языком, который бы всерьёз использовался для написания консольных утилит, и для этого есть много причин. PHP изначально разрабатывался как язык для создания веб-сайтов, но, начиная с PHP 4.3, в 2002-ом году появилась официальная поддержка режима CLI, поэтому он уже давно перестал быть таковым. Разработчики Badoo на протяжении нескольких лет вполне успешно используют множество интерактивных CLI-утилит на PHP.

В данной статье нам хотелось бы поделиться своим опытом работы с CLI-режимом в PHP и дать несколько рекомендаций тем, кто собирается писать скрипты на PHP, при условии, что они будут запускаться в *nix-системе (впрочем, почти всё верно и для Windows).
Читать дальше →

Я медленно удаляю apache с сервера

Reading time13 min
Views54K
image
Есть у меня серверок (да, да, именно серверок, сервером его назвать сложно). Железо старенькое (2 гига оперативы, AMD Athlon(tm) 64 Processor 3500+, програмный RAID). Админю я его сам, без особых навыков и познаний. Когда-то давным давно (больше года назад) поставил на него Debian 5.0 Lenny (это была вторая в жизни установка linux-системы, до этого ставил только Ubuntu на рабочий ноутбук) и панель управления ISPConfig3 по мануалу. Держу на нем несколько (штук 40) сайтов друзей и клиентов, Redmine, SVN и еще немного по мелочам.
Периодически все это безобразие падает (load average > 20), и приходится на сервере раз в пару часов перегружать apache или высасывать из пальца очередную попытку оптимизации. В общем полный раздрай и разруха. И вот в одну прекрасную субботу я подумал — а почему бы не решить вопрос раз и… И вот в общем.
Под катом — история убитых выходных + предыстория. Интересна в первую очередь мне, чтобы потом легко вспомнить что именно и зачем я ставил. Может быть интересна новичкам в интересном и нелегком (ох, ...) деле серверной оптимизации постепенным(!) переводом сайтов из-под Apache c его ModRewrite под Nginx (кстати, правильно это слово читается «энжинкс»меня поправили, Сысоев на конференциях не раз говорил, что название сервера стоит читать, как «энжин-икс», спасибо bayandin и DorBer ). Возможно, будет интересна более-менее опытным товарищам, оказавшимся в тех же условиях (Debian Lenny, ISPConfig3, слабое железо, несколько хороших, не сильно хороших и разных сайтов). И более опытным может быть интересно зайти, оставить пару комментариев.
Если интересно - нажмите сюда, если нет - нажмите звездочку ниже

Восстановление расфокусированных и смазанных изображений

Reading time10 min
Views226K
Восстановление искаженных изображений является одной из наиболее интересных и важных проблем в задачах обработки изображений – как с теоретической, так и с практической точек зрения. Частными случаями являются размытие из-за неправильного фокуса и смаз – эти дефекты, с которым каждый из вас хорошо знаком, очень сложны в исправлении – именно они и выбраны темой статьи. С остальными искажениями (шум, неправильная экспозиция, дисторсия) человечество научилось эффективно бороться, соответствующие инструменты есть в каждом уважающем себя фоторедакторе.

Почему же для устранения смаза и расфокусировки практически ничего нету (unsharp mask не в счет) – может быть это в принципе невозможно? На самом деле возможно – соответствующий математический аппарат начал разрабатываться примерно 70 лет назад, но, как и для многих других алгоритмов обработки изображений, все это нашло широкое применение только в недавнее время. Вот, в качестве демонстрации вау-эффекта, пара картинок:



Я не стал использовать замученную Лену, а нашел свою фотку Венеции. Правое изображение честно получено из левого, причем без использования ухищрений типа 48-битного формата (в этом случае будет 100% восстановление исходного изображения) – слева самый обычный PNG, размытый искусственно. Результат впечатляет… но на практике не все так просто. Под катом подробный обзор теории и практические результаты.
Осторожно, много картинок в формате PNG!
Читать дальше →

Бесплатный облачный PHP-MySQL хостинг для небольшого сайта на основе Amazon AWS

Reading time8 min
Views87K
Данная инструкция не претендует на абсолютную точность, какую-либо новизну и предназначена для делающих самые первые шаги. Поэтому не судите особо строго.

Боевая задача.


Предположим нам хочется захостить небольшой проектик где-нибудь в надежном и не особо тормозящем месте. А поскольку сайт небольшой, то не будем заморачиваться и захотим от хостинга что-нибудь самое простое. Для наших целей вполне хватит PHP, MySQL и доступа по FTP.
Для решения этой задачи идеально подходит Веб сервис от Амазона в котором удивительным образом сочетается способность выдерживать большие нагрузки с бесплатным пакетом ресурсов на первый год после регистрации. В бесплатный пакет входит много чего, но в данный момент нас будут интересовать:
  • Виртуальный сервер в формате micro на основе Linux с доступом по SSH.
  • 30Гб места в Elastic Block Storage плюс 1Гб под бэкапы.
  • 15 Гб трафика в месяц.
  • Выделенный внешний IP адрес.

Причем все это при желании можно зарегистрировать и подготовить к работе за полчаса, но понадобится кредитная карта, которую примет Amazon (и снимет 2 доллара) и сотовый телефон под рукой (домашний не подойдет).

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

XMPP-SMS шлюз на Android

Reading time11 min
Views20K


Введение

Причиной написания данной статьи послужила необходимость создания программы для системы Android, с помощью которой можно отправлять данные заказа в виде SMS сообщений владельцам интернет магазинов о том, что был совершен заказ товаров или услуг. Ранее мною использовалась система включающая GSM-модем и программу написанную на языке С++, использовавшая AT-команды для общения с модемом и библиотеку gloox для получения сообщений по протоколу XMPP, на стороне web-сайта использовалась библиотека xmpphp, для отправки данных заказа. При такой схеме приходилось держать включенным компьютер постоянно, так как система приема заказов работала круглосуточно, соответственно отсюда дополнительный расход электроэнергии, шум от вентиляторов ночью и постоянный контроль интернет соединения.
Читать дальше →

Оптимизация длинной арифметики на C++

Reading time3 min
Views15K

С Новым годом! Опишу классический сюжет — оптимизацию длинной арифметики в C++ при помощи ассемблерных вставок. Однако, на Хабре его еще не было, поэтому после некоторых колебаний решил запостить сюда, вы уж простите, если сами когда-то писали то же самое и продвинулись дальше меня :-)

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

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity