Програмирование

04 Ноябрь 2011

Sape – приложение для iPhone

Опубликовано в Блог, Молескин, myApps, Apple Stuff, iOS, Програмирование, Дизайн, Графика

Вчера вышло в свет моё приложение для iPhone — Sape. Как не трудно догадаться, оно предназначено для работы с системой размещения ссылок Sape.

Sape app for iPhone

Первая версия стоит три бакса и поддерживает основные функции вебмастера. Вторая версия будет стоить на три бакса дороже и будет поддерживать функционал оптимизатора. Дальше-больше, до окончания проекта еще далеко.

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

Стандартный интерфейс айФон-приложения был сохранен, однако каждый элемент был с любовью перерисован и оптимизирован, что бы приложение радовало глаз при каждом его открытии.

На разработку первой версии ушло примерно 100 часов чистого времени. Фуууух!

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

Есть предложения по рекламе приложения? Пиши на электронную почту, буду рад обсудить.

Download Sape app

26 Сентябрь 2011

Хостинг на дому. Часть третья. Почтовый сервер

Опубликовано в Блог, Молескин, Програмирование

Продолжая тему домашнего хостинга расскажу про настройку почты для твоего домена.
В Synology есть встроенный мэйлсервер, использующий Roundcube интерфейс. И все бы было супер, если бы не одно «но». Все письма отправленные с твоего ящика на DiskStation будут отправляться в спам любым почтовым сервисом (проверено на gmail, yandex, seznam). Скорее всего из-за того что IP адрес не whitelisted. Получается, что внутренний ящик подходит лишь для внутреннего мониторинга и отправки критических мэйлов от сервисов.

Простой выход из этой ситуации: Google и Yandex бесплатно предоставляют свои сервера для корпоративной почты. Единственное, что нужно сделать — это подтвердить домен и изменить DNS записи для почтовых серверов.

Для своей почты я выбрал Google, т. к. я привык к их почтовому интерфейсу и на iOS устройствах почта настраивается в два тапа.


Настройка Google Apps

  • Идем на страницу Google Apps и указываем свой домен;
  • Заполняем одну не хитрую форму;
  • Потом другую;
  • Жмем Next -> Next -> Загружаем в корень сайта предложенную для верификации вебстраницу и подтверждаем, что мы хозяева домена;
  • Потом создаем еще аккаунты если нужно;
  • Идем в настройки домена и изменяем DNS записи:
    • {твой-домен}. MX 1 ASPMX. L. GOOGLE.COM.
    • {твой-домен}. MX 5 ALT1.ASPMX. L. GOOGLE.COM.
    • {твой-домен}. MX 5 ALT2.ASPMX. L. GOOGLE.COM.
    • {твой-домен}. MX 10 ASPMX2.GOOGLEMAIL.COM.
    • {твой-домен}. MX 10 ASPMX3.GOOGLEMAIL.COM.
    • mail.{твой-домен}. CNAME ghs.google.com.
  • После внесения изменений идем на https://www.google.com/a/cpanel/{твой-домен}/CustomUrl?s=mail;
  • Включаем кастом имэйл, напимер: http://mail.go-cz.ru;

Через пару часов, когда обновятся DNS записи почта начнет ходить в новый Google ящик.

В следующем выпуске: настройка VPN на Synology DiskStation.

PS В настойках гуглопочты есть возможность импорта старых электронных писем.

14 Сентябрь 2011

Хостинг на дому. Часть вторая. Виртуальный хостинг

Опубликовано в Молескин, Блог, Обучение, Joomla, Програмирование

Итак, я обзавелся Synology DS211 и трех терабайтным диском.

Synology DS211

После ночного форматирования, проверки диска и апдэйта DSM, DiskStation был готов к работе.

Для начала я создал несколько учетных записей, для пользователей сервера. Параллельно запустил прилагаемый к серверу диск, который сам мне все настроил. И в Finder’е в Shared у меня появился DiskStation.

Опущу все остальные настройки и перейду сразу к переезду сайтов.

Для всех последующих действий необходим внешний статический IP адрес


Указание статического IP

  • Идем в Control Panel → System → Network;
  • Выбираем Network Interface → LAN → Use manual configuration → IP address: (например 10.0.1.111) → OK. Screenshot

Настройка роутера

Первым делом необходимо настроить порты. Если твой роутер не попал в список рекомендуемых роутеров, как это произошло у меня, то тебе придется настраивать порты вручную. Если у тебя роутер из списка, DiskStation все сделает за тебя: Control Panel → Router Configuration → etc.

У меня AirPort Extereme. Сейчас расскажу, как его настроить:

  • Открываем AirPort Utility;
  • Выбираем Manual Setup;
  • Идем в Internet → NAT; Screenshot
  • Чекаем Enable NAT Port Mapping Protocol;
  • Нажимаем Configure Port Mappings…
  • Нажимаем +;
  • Вводим значение внешнего порта (например 80), вводим IP DiskStation’а (например 10.0.1.201), вводим значение внутреннего порта (например 200). Таблица внутренних портов Synology;
  • Так я промапил TCP: 80 → 200 для попадания на вебсайт, TCP: 3306 → 3306 для MySQL базы; Screenshot
  • Жмем Update.

Расчистка места для сайтов

  • Идем в Control Panel → Network Services → Web Services;
  • Чекаем Enable Web Station и Enable MySQL;
  • Жмем OK;
  • Нажимаем кнопку Virtual Host. Здесь мы укажем c какого хостнэма в какую папку перенаправлять;
  • В моем случае: go-cz | go-cz.ru | HTTP | 200 и go-cz | www.go-cz.ru | HTTP | 200; Screenshot
  • После этого в папке web появится папка go-cz в которую мы положим пустой index.html файл с красным фоном;
  • Зайдем на 10.0.1.111/go-cz для проверки. Screenshot

Настройка MySQL

  • Идем в Start → Package Center;
  • В Available выбираем phpMyAdmin;
  • Устанавливаем;
  • Запускаем;
  • Теперь по адресу 10.0.1.111/phpMyAdmin у тебя живет phpMyAdmin;
  • Логин: root, пароля нет. Его нужно сразу сделать;
  • phpMyAdmin доступен лишь внутри сети, залогиниться извне не получится.

Перенос сайта на Joomla

Для безболезненного переноса сайта воспользуемся компонентом Akeeba Backup, который сделает копию сайта вместе с базой.

  • Устанавливаем Акибу; Screenshot
  • Идем в настройки;
  • Изменяем способ архивирования на ZIP; Screenshot
  • Сохраняем;
  • Делаем резервное копирование; Screenshot
  • Скачиваем получившийся архив;
  • Копируем его в папку для вебсайта (в моем случае web/go-cz);
  • Распаковываем и удаляем красный index.html; Screenshot
  • Заходим на 10.0.1.111/go-cz и видим Akeeba Backup Installer;
  • Жмем Next; Screenshot
  • Указываем данные новой базы:
    • localhost
    • root
    • пароль
    • название базы
    Screenshot
  • Указываем названия сайта и админовский пароль;
  • Удаляем папку installation;
  • Проверяем. Screenshot

Изменение DNS записей

Тут все зависит от твоего провайдера. Нужно изменить A запись домена с того что было (например, 123.456.789.000) на внешний IP адрес твоего роутера (например, 147.258.369.000). И через несколько часов сайт начнет загружаться из твоей комнаты.

В следующем выпуске я расскажу о настройке мэйлсервера.

PS: Проблема с /blog и /photo

Если на сайте есть путь /blog или /photo, то эти страницы не будут отображаться. Это связано с тем, что у Synology в конфиге аппача они зарезервированы для PhotoStation. Тащем-то.

Решение проблемы:

  • Включаем SSH. Control Panel → Network Services → Terminal;
  • Чекаем Enable SSH services;
  • Открываем Terminal;
  • Логинимся на DS (например, Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) и вводим пароль;
  • Копипастим: vi /usr/syno/apache/conf/extra/httpd-autoindex.conf-user;
  • Откроется реактор vi. Жмем i;
  • Жмем стрелку вниз и ставим # перед каждой строкой где упоминаются алиасы или редиректы для photo и blog;
    Приблизительно так:
    AliasMatch ^/photo$ "/usr/syno/synoman/phpsrc/photo"
    Alias /photo/ "/usr/syno/synoman/phpsrc/photo/"
    Alias /photosrc/ "/var/services/photo/"
    Alias /webdefault/ "/usr/syno/synoman/phpsrc/web/"
    # AliasMatch ^/blog$ "/usr/syno/synoman/phpsrc/blog/"
    # Alias /blog/ "/usr/syno/synoman/phpsrc/blog/"
    # RedirectMatch ^/blog/include/v(.*) /blog/include/get_video.php?$1
  • Жмем Esc, печатаем :x и жмем Return;
  • Рестартим апач копипастой: /usr/syno/etc.defaults/rc.d/S97apache-user.sh restart;
  • Проверяем.

06 Сентябрь 2011

Хостинг на дому. Часть первая. NAS? NAS!

Опубликовано в Молескин, Блог, Обучение, Joomla, Програмирование

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

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

Synology DSM

Ты думаешь, что iPhone изменит мир? Нет, это сделают NAS сервера!

Свой поиск я начал с выявления основных игроков на рынке NAS серверов. Ими по прежнему остались QNAP и Synology. Остальные производители оказались или крупными компаниями, вроде ASUS, для которых NAS сервера — это побочный продукт или слишком молодыми, с малым опытом их производства.

Зайдя на сайт QNAP, я было подумал, что ничего не изменилось, уж больно их сайт напоминал web 1.0 творения матфизаковских преподавателей. А вот сайт Synology приятного удивил отличным, современным дизайном. В последствии их DSM — веб UI для настройки сервера, удивил еще больше.


Выбор пал на Synology.

Бегло сравнив технические характеристики, выяснилось, что у кьюнапа и синолоджи, практически одинаковые модели. Отличие в том, что кьюнап ставит в 2 раза больше памяти, чем синолоджи, но это можно списать на разницу во времени выхода на рынок разных моделей. Неприятно удивило, что память on-board, т. е. её нельзя проапгрейдить.

Synology DSM

Попробуем разрушить мифы, которые я описал в начале:

  • Кривой интерфейс. Веб интерфейс — отличный выбор для домашних серверов. Не привязан к софту. Не привязан к конкретной машине и кросс-платформинен. Быстр, а главное понятен. Более 100 разных функций сервера, легко настраиваются путем переключения галочек в интуитивно понятных местах.
  • Ненадежность и дороговизна дисков. Сигейт, как уже проверено, дает гарантию на свои диски — 5 лет. Да, это не синоним надежности, но при стоимости меньше 50 € за терабайт, можно позволить себе RAID и забыть о смене дисков на 5 лет.
  • Энергопрожорливость. В самом раскочегаренном состоянии NAS ест 13W, это в 5 раз меньше, чем макбук, в 7 раз меньше, чем ASUS M50 или, как два айФона. Если запаркует диски, то 6-9W

Myth Busted

Новые аргументы в пользу NASа:

  • Меня поразила легкость настройки виртуального хостинга. Ведь я содержу много маленьких сайтиков, с небольшой посещаемостью, и экономия на хостинге — серьезные аргумент в пользу домашнего сервера. Плюс, нынешнего канала домашнего интернета с лихвой хватит для содержания десятка сайтов.
  • Продвинутый торрент-клиент для закачки легального контента прямо в веб интерфейсе. Теперь не нужно что-то качать на компе, а потом скачивать на диск.
  • Встроенный медиа сервер для просмотра фильмов и сериалов на телевизоре.
  • iOS приложения для работы напрямую с сервером. Прекрасно стримает видео, а если надо, и конвертирует на ходу.

Решено, делаем хостинг у себя в комнате.

Продолжение на следующей неделе.

01 Июнь 2011

Warp6: прокачиваем мобильную тему

Опубликовано в Молескин, Блог, Обучение, tutOrials, iOS, Joomla, Програмирование

Ребята из YOOtheme на славу потрудились над Warp6, получился отличный фреймворк. Но его нужно немного прокачать для того, что бы сделать из сайта полноценный WebApp.

Add to Home Screen

Для начала, нужно создать иконку для приложения. Я сделал одну иконку размером 114×114 пикселей, потому что она слабо-детализирована и легко уменьшается устройством без потери качества. Если у твоей иконки много мелких элементов, то лучше сделать 3 иконки (57×57, 72×72 и 114×114) и почистить их вручную.

Потом я решил, что мне не нужен блик на иконке, для этого идем в {template-name}/warp/systems/joomla.1.6(или 1.5)/layouts/head.php и меняем:

<link rel="apple-touch-icon" href="<?php echo $this['path']->url('template:apple_touch_icon.png'); ?>" />
на 
<link rel="apple-touch-icon-precomposed" href="<?php echo $this['path']->url('template:apple_touch_icon_precomposed.png'); ?>" />
, т. е. в атрибуте rel добавляем «precomposed».

Если ты сделал 3 иконки, то меняем на:

<link rel="apple-touch-icon" href="<?php echo $this['path']->url('template:apple_touch_icon.png'); ?>" />
<link rel="apple-touch-icon" sizes="72x72" href="<?php echo $this['path']->url('template:apple_touch_icon_ipad.png'); ?>" />
<link rel="apple-touch-icon" sizes="114x114" href="<?php echo $this['path']->url('template:apple_touch_icon_iphone4.png'); ?>" />
и заливаем соответствующие файлы в корневой каталог шаблона.

Теперь идем в {template-name}/styles/mobile/layouts/template.php и добавляем в тег head:

<meta name="apple-mobile-web-app-capable" content="yes" />
Что бы убрать адрес бар в режиме вебаппа.
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
Перекрашиваем статус бар в нужный нам цвет, варианты: default, black, black-translucent.
<link rel="apple-touch-startup-image" href="<?php echo $this['path']->url('template:startup.png'); ?>" />

Что-бы девайс мог скачать загрузочное изображение и показывать его во время загрузки вебаппа. Изображение должно быть 320×460 пикселей и в формате png.

А вот готовый результат:

Add to Home Screen Pick name for App Home Screen Loading Screen kolyan's WebApp

PS Что бы логотип в хедере и логотип в футере хорошо выглядели на ретина дисплее ужимаем его программно т. е., например, создаем файл 100×100, в теге img добавляем атрибуты width="50" height="50"

<<  1 2 [34 5  >>