среда, 13 августа 2014 г.

Как установить webgrind на ubuntu 14.04

Как установить webgrind на ubuntu 14.04

Для работы webgrind нам требуется php5-xdebug

Ставим php5-xdebug
root@web02:~# sudo apt-get install php5-xdebug
Прописываем в конфиг
root@web02:~# nano /etc/php5/apache2/conf.d/20-xdebug.ini
Две строчки в конец файла:
xdebug.profiler_enable = 1
xdebug.profiler_output_name = cachegrind.out.%t.%p
Перезагружаем апач
root@web02:~# sudo /etc/init.d/apache2 restart

Скачиваем WebGrind:

https://github.com/jokkedk/webgrind
Кладем его в какую нибудь директорию на сервере и заходим туда через браузер.

вторник, 15 июля 2014 г.

Падения на ровном месте, костыли разбросаны.

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


Debugger startup error. For troubleshooting see: http://www.flashdevelop.org/wikidocs/index.php?title=F.A.Q
Error details: System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
   в net.sf.jni4net.jni.JNI.Dll.JNI_GetDefaultJavaVMInitArgs(JavaVMInitArgs* args)
   в net.sf.jni4net.jni.JNI.Init()
   в net.sf.jni4net.jni.JNI.CreateJavaVM(JavaVM& jvm, JNIEnv& env, Boolean attachIfExists, String[] options)
   в net.sf.jni4net.Bridge.CreateJVM()
   в net.sf.jni4net.Bridge.CreateJVM(BridgeSetup setup)
   в FlashDebugger.DebuggerManager.Start(Boolean alwaysStart)


Сразу понятно, что проблемы с java. В требованиях flash develop - java 1.6 и выше, но только 32-bit. Чем 64-bit ему не нравится - не понятно. Да и вообще зачем программе написанной на C# с .Net может потребоваться java? Java используется во flex sdk, для сборки swf файла с помощью mxmlc. И этот компилятор запускается только на 32-bit java, вот незадача! В Adobe умудрились написать на java код, который падает в 64-bit java. Причем даже после того, как flex отдали в opensource и передали apache foundation, этот баг никто не исправил. Совет один - установите 32-bit java и пропишите ее в JAVA_HOME.

https://issues.apache.org/jira/browse/FLEX-18407

http://timetoflash.blogspot.ru/2012/12/configure-flashdevelop-to-point-to.html
Перетаскивание в feathers (Drag and drop)

Статья о том как использовать DragDropManager в Feathers.

В старлинге нету привычных флэшеру методов startDrag() и stopDrag(), для перетаскивания экранных объектов. В старлинге в качестве замены предлагается использовать DragDropManager, как ближайшую альтернативу. Этот менеджер похож больше на флексовый DragManager, чем на флэшевый drag().
  1. Требуется имплементировать интерфейсы IDragSource и IDropTarget на соответствующих объектах.
  2. Вызвать DragDropManager.startDrag(), передать в него объект IDragSource, Touch объект инициализировавший перетаскивание и объект DragData, который хранит данные, нужные в процессе перетаскивания.
  3. Когда IDropTarget рассылает событие DragDropEvent.DRAG_ENTER (DragDropManager обрабатывает рассылку события, требуется только слушать), и DragData объект включает в себе данные в правильном формате, оно должно вызвать DragDropManager.acceptDrag().
  4. IDropTarget разошлет событие DragDropEvent.DRAG_DROP при "бросании" объекта (например при остановке нажатия пальцем на экран или отпускании левой кнопки мыши) над элементом IDropTarget. При этом вам нужно обработать "бросание" евент листенером.
  5. IDragSource рассылает событие DragDropEvent.DRAG_COMPLETE вне зависимости от того, произошел ли "бросок" или нет. Свойство isDropped события это Boolean, который отображает, было ли перетаскивание "кинуто" на цель и принято, или было отменено. Если данные перетаскивания должны быть удалены из источника после перетаскивания на цель, евент листенер по этому событию - правильно место чтобы совершить это. Просто проверьте свойство isDropped чтобы проверить, произошел ли "бросок" или нет.
Можно передать "призрачное изображение перетаскивания", как "аватар", при вызове DragDropManager.startDrag(). Аватар преследует мышиный курсор во время перетаскивания.

Формат это то что передается между источником перетаскивания и целью перетаскивания. Это может быть то же что и аватар или более информационной.

Если вы используете простое перетаскивание экранного объекта (с которым не асоциированно никаких данных), вы можете добавить этот экранный объект, как "данные перетаскивания".

var dragData:DragData = new DragData();
dragData.setDataForFormat("display-object-drag-format", theDisplayObject);
В этом случае формат данных был назван от балды "display-object-drag-format", можно его называть как угодно. Важно, чтобы строка была одинакова на обеих стороных (источник перетаскивания и цель перетаскивания)

Внутри DragDropEvent.DRAG_ENTER слушателе можно проверить формат
function(event:DragDropEvent, dragData:DragData):void
{
    if(dragData.hasDataForFormat("display-object-drag-format"))
    {
        DragDropManager.acceptDrag(this);
    }
}
Если DragDropEvent.DRAG_DROP прослушивается, вы используете dragData.getDataFroFomat() с такой же строкой, чтобы вытащить display object или другие данные.

Перевод статьи http://wiki.starling-framework.org/feathers/drag-drop

понедельник, 30 июня 2014 г.


Сказ о том, как lamp на debian поднимался

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

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

При установке руководствовался замечательным гайдом от digital ocean. Сначала пробовал установить все без помощи руководств, думая что никаких подводных камней тут не встретить. Ошибался, один вечер убил пытаясь все установить самостоятельно, проблемы возникали различные, например было непонятно, какой пароль по умолчанию был установлен для базы данных. Руководствуюясь гайдами можно все установить минут за 20.

Установка системы

Во всех соверменных хостингах установка системы с настройками по умолчанию совершается одной кнопкой. Как установить систему на VPS этот гайд не расскажет. Я установил на Clodo автоматически Debian.

Соединяемся по ssh с сервером

Если ssh не установлен, устанавливаем его и открываем доступ к порту

sudo apt-get update
 sudo apt-get install openssh-server
 sudo ufw allow 22
 

Проверяем версию linux

root@6781-2:~# cat /etc/*-release
 PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
 NAME="Debian GNU/Linux"
 VERSION_ID="7"
 VERSION="7 (wheezy)"
 ID=debian
 ANSI_COLOR="1;31"
 HOME_URL="http://www.debian.org/"
 SUPPORT_URL="http://www.debian.org/support/"
 BUG_REPORT_URL="http://bugs.debian.org/"

Установка Apache

apt-get install apache2

Заходим на айпи сервера, видим надпись - "it works!".

Ставим mysql

apt-get install mysql-server

Установщик попросит задать пароль пароль на root доступ к базе данных

Чтобы закончить установку mysql вводим:

mysql_secure_installation

Консоль запросит пароль root от базы данных. Тут можно выбрать откуда давать доступ: только с localhost или отовсюду

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

Установим php

apt-get install php5 php-pear php5-mysql

Перезагрузим апач

service apache2 restart

Проверяем что php работает

Создаем файл info.php в директории /var/www (директория веб сервера по умолчанию)

nano /var/www/info.php

С содержимым

<?php
phpinfo();
?>
 

И проверяем через браузер: http://yourip/info.php

Ставим phpmyadmin

sudo apt-get install phpmyadmin

При установке надо ввести root пароль от базы. После установки нужно не забыть прописать phpmyadmin в apache:

sudo nano /etc/apache2/apache2.conf

В конец файла добавляем строку

Include /etc/phpmyadmin/apache.conf

Перезагрузим апач

service apache2 restart

Теперь можно заходить в phpmyadmin по адресу http://youripaddress/phpmyadmin

Удаленный доступ к базе данных

Для того, чтобы программы могли соединяться с базой удаленно пришлось закомментировать строку в файле /etc/mysql/my.cnf

#bind-address 127.0.0.1

Теперь доступ к mysql извне открыт и надо создать нового пользователя с правами на удаленный доступ (или установить права у уже созданного). Желательно, чтобы у этого пользователя не было доступа к системным базам данным, а только к тем, которые нужны.

shell> mysql --user=root mysql
  CREATE USER 'video'@'localhost' IDENTIFIED BY 'hereyourpassword';
 
  GRANT SELECT,INSERT,UPDATE,DELETE,CREATE
   ON echoprint.*
   TO 'video'@'localhost';
 
  GRANT SELECT,INSERT,UPDATE,DELETE,CREATE
  ON echoprint.*
   TO 'video'@'%';

  FLUSH PRIVILEGES;
 

Список используемой литературы

Доступ к базе отовсюду
Как устанавливать phpmyadmin на debian