anatooly


Поваренная книга мобильного веб-разработчика

Опыт мобильной веб-разработки в реальной жизни


Пример собрания и обсуждения разработчиков в Google Docs
anatooly

Организация собрания разработчиков ElementaryOS - Contributor Meeting 7 состоялась в Google Docs.

Дается анонс о встрече на определенное время по ссылке: http://tiny.cc/contributor-meeting-7, все собираются и в текстовой форме проводят и записывают вопросы и планы, попутно комментирую ход документа.

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

Метки:

Сворачивание произвольных CSS блоков в IDE
anatooly

Обычно CSS разбивают на части по смысловым частям по файлам, и делают их импорт, подключают по отдельности и собирают для продакшена в один.

Если у нас в IDE - 5000 строк CSS, то мы можем их разбить на части, что бы сворачивать, делать их folding. PHPStorm и NetBeans умеют это делать. Теперь появляется некая иерархия и логика расположения некоторых блоков и частей, так можно выделить стили для сброса, для профиля пользователя, главной стр. и т .д.

Нужно в комментарии прописать теги:

...

/* <editor-fold desc="Reset styles"> */
...
/* </editor-fold> */

...

Метки: , ,

Определение динамической ширины изображения на моб. девайсах
anatooly

iOS подкинуло своих особенностей, при определении ширины высоты изображения .width() - в результате возвращается ноль (0).

К примеру, код:

$(document).ready(function () {
    $('.myimages').width();
});

вернет 0.

По всей видимости ready отрабатывает, когда загрузилась сама DOM (HTML) структура и дальше запускается JavaScript который может её обработать, но сами изображения ещё не прогрузились. В FireFox, к примеру, такого эффекта - не наблюдается.

Нужно идти таким путем:
$(window).load(function () {
    $('.myimages').width();
});

Это событие сработает когда прогрузятся все данные.

Лучше конечно, когда к примеру у вас 10 картинок сделать:
$('.myimage').load(function () {
    $(this).width();
});

Навесится 10 события (по одному на каждую картинку), на каждую загруженную картинку. Это наиболее оптимально. И вот немного не правильный пример:

$(window).load(function () {
    $('.myimage').each(function () {
        $(this).width();
    });
});

Результат тот же, но если картинок у вас 20 то вы будете дожидаться загрузки всех, а не только требуемых.


CSV в Redis & MongoDB
anatooly

Что-то я часто всем советовал и спрашивал про Redis, явно не понимал для чего его использовать.

Вот как дело коснулось импорта-экспорта в CSV файлы, для редактирования и быстрого добавления из сторонних программ, типа Excel & LibreOffice стало очевидно.

MySQL с LOAD DATA хорош и MongoDB (mongoimport, mongoexport). Redis же может похвастаться увы лишь костыликами для импорта, а тот же экспорт не самым красивым образом реализован.

Мне и не в домек, что MongoDB - Документо-ориентированная СУБД, а Redis - кортежное (ключ-значение) хранилище.

Метки: , , ,

Правда о перепрошивке Kyivstar роутера TP-Link 741ND (KS)
anatooly

Все так и есть, как пишут в интернетах. Подтверждаю, в моем случае:

1. Роутер имел на одной наклейке версию  Ver.: 2.0, а на FCN коде никакой надписи, что говорило что это V1;

2. Я решил поступить, как самый правильный джедай и скачать с оф. сайта прошивку, перепрошить и написать здесь пост, но неполучилось, ни одна из 6 прошибок версию V1/V2 не подошла.

3. Свободно прошилось, как и пишут - wr741ndv1_ru_3_11_7_up100925-to_factory.rar через скрытую стр. http://192.168.1.1/userRpm/SoftwareUpgradeRpm.htm

4. После чего, стала доступна нужная мне опция Clone MAC Adress и я смог подключиться к своему провайдеру GTS, для которого нужно сначала залогиниться с компьютера, а потом склонировав MAC адрес этого компьютера и подключиться роутером, всего делов.

P.S.: Киевстаровский интернет последнее время испоганился, на 4 Мегабитах ни какой ролик не просматреть, задержки, ещё и трафик Билайна гоняет с сайты Роспотребназова заблокированные в России у нас не показывает, позор, прям нац. оператору. Но за роутер конечно спасибо, и за бонусы на моб. телефон, и за работающее центральное отделение в субботу.


АктаБанк
anatooly
Добрый день.

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

1. г. Днепропетровск, ул. Глинки, Призма, к кассе 1 стул. Как это? Ну да, с меня ведь 1 грн. в месяц, зачем стул у кассы постоите. Ну чего 100 клиентов в здании и 1 стул, было 2 один забрали не беда.

2. То же место, девушки на обслуживании у входа, мне печально даже что-то спрашивать у них, улыбка к клиенту отсутствует, все чем-то заняты но явно не моими делами. На вопрос можно ли с расчетного счета перевести деньги на карточный счет другого банка - сказали, что это противозаконно и они не знают как помочь, что это вообще такое? На вопрос подключить корпоративную карту к АктаОнлайн сказали, что не знают можно ли это сделать - то есть я стою посреди отделения с паспортом и картой, на меня смотрит 6-7 девушек - никто ничего не знает и говорят обратитесь к своему менеджеру, простите тогда кто все эти люди и что они тут делают, и где мне искать своего менеджера, я должен знать как к нему дойти, а не он прячется на других этажах, кабинетах?

Мне даже не понятно организация рабочих мест, по крайней мере в моем отделении - человек заходит, что-то спросить, логично что он обратится сначала к первому свободному к нему человеку, но все сидят так, что видно, что старожили отсажываются подальше что бы их не тревожили, а молодых на край, и соответсвенно молодые ничего не знают. Зачем так делать? Как депозит принес, милости просим, как спросить что-то, так вид что ты отвлекаешь человека от чего-то сверхважного.

3. Отделение в Мост-Сити - идешь туда обналичить деньги, на кассе могут сказать, обратитесь в отделение где открывали счет. Нормально, че.

4. Twitter - логин АКТАБАНК большими буквами - такое самолюбие, ведь даже не в домек что твиттером восновном пользуются с мобильных устройств поэтому набирать заглавными буквами гораздо сложнее (больше лишних нажатий для использования заглавных букв), и это минус к юзабилити. Тоже самое даже у подписи в этом форме С уважение АКТАБАНК. Даже ведь на логотипе АктаБанк.

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

6. Снимешь в кассе N гривен, тебе чек забудут дать, порядок с деньгами порядок во всем, неприятно порою.

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

Спасибо большое и простите за нелестные слова, накипело.

Ссылка: http://www.aktabank.com/forum/topic.php?id=1&page=5&replies=50#post-603, http://www.aktabank.com/forum/topic.php?id=240, http://www.aktabank.com/forum/topic.php?id=241.

P.S.: Ещё в АктаБанке даже если у тебя есть именная карта, без паспорта тебя не могут идентифицировать. Вот в ПриватБанке с этим круто, если у тебя любой паршивости карта, то тебя идентифицируют легко. Зато в Привате другая фича, больше стульев на которых тебе прийдется долго сидеть, потому, что без очереди все идут менять валюту, а ты подождешь, равноправие. Зачем тогда эти гривни и карты, если лучше налик в валюте и без очереди обслуживаться в ПриватБанке и весь мир подождет, готовтесь услышать два раза минимум: "Я на обмен, епты".

Сменяем последний оплот Total Commander на стандартный Windows Проводник
anatooly

Моя борьба за полную чистоту использования лицензионного софта, дошла до последней стадии, борьбы с Shareware (условно-бесплатными программами), после моего перехода на PhpShorm с TotalCommander+SublimeText - навигация по проекту стала в разы удобнее, и от Total-a осталась польза, только для быстрого просмотра спрайтов, картинок по проекту и текстово поиска.

0. После Win8, комбинация Win+E нажимается быстрее мысли;

1. В Проводнике оказываются есть букмарки (Избранное), я перенес все часто используемые директории проекта из Тотала в Проводник (добавить текущее местоположение в избранное) тем самым Ctrl+D заменился на наглядную панель слева, чем-то схожее с Nautilus под Ubuntu;

2. Превью картинок на одном уровне;

3. Ctrl+S быстрый поиск файлов, в Проводнике в панельку поиска ищет на достаточно нормальном уровне;

4. Поиск файлов, как известно Win7 тупой невмоготу, надо подкрутить:

4.1 Кнопкой Alt вызвать меню - "Сервис" - "Параметры папок" - "Поиск" - Всегда искать по имени файлы и содержимому!

4.2 "Параметры индексирования" - "Дополнительно" - "Типы файлов", найти наиболее используемые, типа php, css, js и выбрать индексировать свойства и содержимое файлов.

Правда примонтированный удаленные файлы система не индексирует.

5. Выбрать удаленные папки или их корень и сделать Автономными вне сети. Фактически система сделает кеш всех файлов и соответственно сможет проиндексировать и логично предположить что поиск по своему кешу будет в разы быстрее. Плюс доступность при падении удаленного файлового сервера.

P.S.: Блин, постоянно нахожу в Windows кучу маленьких няшечек, которые реально направленны на производительность, но которые разработчик сам должен как-то найти и включить.

P.S.S.: Что бы не забыть, может уже ранее упоминал, в Диспетчер задач, добавил задачу по дефрагментации HDD диска раз в месяц. На выполнение команды: Defrag с ключами /C /H /V

UPD. (2013-04-30)

Поиск оказывается нереально крутым. По расписанию, когда компьютер свободный происходит удаленная синхронизация, и в фоне происходит индексация файлов. А когда мне надо сделать поиск можно быстро перейти в папку с избранным и в поиске написать: тип: *.php $_SESSION * my_key

Поиск по проекту в 3 Гб. делается практически мгновенно, по скорости также, как и PhpStorm на склонированной локальной папке. В результате используется фильтр для PHP файлов и выбирается весь текст, аналогично регулярному выражению, то есть текст $_SESSION['main_key']['my_key'] подходит. Крутотень.


Виртуальная интернет карта Приват24 и DigitalOcean дружат
anatooly

Бюджет поста: 1,5$
Цель: авторизировать USD карту для оплаты VDS хостинга DigitalOcean.

Я создал виртуальную интернет карту (Internet Card) в Приват24, в архиве определил ее Expiration time, запросил CVV код, активировал оплату через интернет. Все это организуется бесплатно. После чего, сделал перевод между UAH и USD картой, на счет поступило 1,5$ (12,33 грн).

DigitalOcean аккаунт активировался, успешно. Если на карте нет денег, то и активация карты не пройдет, запрашивается 1,25$ как минимум.

P.S.: В Амстердаме хотите, а вот вам: The 512MB and 1GB sizes are currently not available in the Amsterdam region due to RIPE IPv4 restrictions and limited availability of IP space.


MCedit + ctags
anatooly

Оказывается в последних версиях mcedit есть удобное автодополнение, через Alt+Enter которое выгребает декларации из TAGS файлы, вырисовывая нечто диалогового окна.

ctags -e --language-force=php -R ./

Так, для корневого каталога вашего проекта надо выполнить команду. Создастся файл TAGS, который автоматически подхватывается mcedit.

P.S.: mc хоткеи от scabere - http://scabere.livejournal.com/83643.html.

Метки: , , , , ,

Git - Перенести все свои ветки с удаленного репа к себе на локальный
anatooly

Удалось с подручных средств и кусков соорудить такую команду, которая создаст у вас локальные ветки с удаленного репозитария:

git branch -r | grep 'УСЛОВИЕ ПОИСКА ВЕТОК ПО ИМЕНИ' | sed 's/ *origin\///' | xargs -I% git branch % origin/%

1. Выбираем все ветки с удаленного репа;
2. Делаем поиск, можно исключить;
3. Вырезаем из имени ветки origin/ можно пропустить;
4. Проходимся по каждой ветки и создаем локальную ветку с удаленной;

Удалить все ветки со своего локального хранилища:

git branch | xargs git branch -D

Метки: , , ,

Простое тестирование с PHP assets
anatooly

Листая книгу по Dart lang издательства O'relly, мне нравился их подход после каждого примера кода, вставлять проверку через assert. Это так здорово поднимает уровень обучения, и тестирования своего продукта.

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

Зато, в PHP на удивление тоже есть тестирование через assert, с условиями через eval практически. Зато, легко выключающимися на продакшене, директивой:

assert.active = Off

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

assert('3 < 2') и если условие не выполняется, получаем ошибку. Да и вообще функция работает довольно неоднозначно. Ещё ни разу не встречал, что бы код покрывали ассерт тестами. Де-файкто используются отдельные юнит-тесты в отдельном файле (пространстве) от основного кода.


Бекап домашних фотографий и фильмов для сохранности с Windows в Ubuntu
anatooly

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

2. Изначально я хотел воспользоваться SyncApp, для меня это показалось очень мощным решением разнести свои файлы на 3 компьютера создав облако. И иметь доступ в любом месте, по крайней мере позвонив по телефону к родителям или жене попросить вкл. компьютер. К тому же работает, как под Win, так и под  Ubuntu, а в будущем и на моб. устройствах.

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

3. Решил дедовским методом rsync. Расшарил папки, примонтировал и начал переливать. А не тут-то было девайсы соединенные через Wi-Fi не дают мне никакого профита по скорости. Для такого объема данных — это полное извращение.

Wi-Fi — это круто, но блин мало, и даже плавающее время пинга не воодушевляет.

4. Метод деда моего деда, Верняк полный. LAN кабель для роутера из коробки. Покрайней мере всю жизнь я считал, что для соединения двух ПК, ЛАН кабель должен быть зеркальным, но вроде в современных девайсах это уже не нужно. Так, и есть, два компьютера без проблем удалось соединить, назначив стат. адреса.

5. И начал я процесс с великой скоростью для фильмов в 7 Мб/c, для музыки 11 Мб/c, а для мелких файлов с гораздо меньшей.

Читать дальше →Свернуть )
Метки: , , ,

ctags - sublime text & vim
anatooly

vim (.vimrc)

:set tags=./tags;

А Ctrl+] пишет, что файл не найден, а файлы в пути с обратным виндовым слешем, вот, так, созданный под Windows .ctags кушается Sublime Text, но уже не кушается vim-ом, надо бы сгенерировать сначала под unix-ом, а саблайм думает с путями разберется. Хотелось бы.

Метки: , ,

Privat24 - Attention
anatooly

2013-02-06 16.17.21

Забавный фейл.

Метки:

__METHOD__
anatooly

Всегда находишь что-то новое и хорошо забытое старое в PHP. Сегодня меня подкололи на написанной неделю назад конструкции:

__CLASS__ . '->' . __METHOD__

А ведь __METHOD__ возвращает уже весь неймспейс, название класс и метода. Фактически __METHOD__ заменяет __CLASS__ . '::' . __FUNCTION__.