2011-06-28

Как собрать идеальное IDE для себя

Всякий знает, что от того, какую IDE использует разработчик, напрямую зависит его продуктивность. Используя блокнот или Far - много не сделаешь.

Из доступных средств разработки на сегодняшний момент, не побоюсь этого слова — лучшей, является Eclipse. Все дело в том, что Eclipse является совершенно бесплатной и очень гибкой в настройке. Именно на базе Eclipse создано огромное количество "фиремнных" средств разработки таких как: Zend Studio, Flash Studio, Spring Source, Aptana Studio и еще куча других "студий". При внимательном рассмотрении все они оказываются старым добрым Eclipse. Какой еще проект может похвастаться таким большим количеством инкарнаций? Все дело в удивительной гибкости Eclipse и его модульности а также в удачном выборе программной платформы.

Eclipse совмещает в себе удобный язык программирования и быстрый нативный интерфейс. Eclipse написан на Java с использованием SWF. Язык Java используется миллионами разработчиков, а это значит большое количество людей могут писать под него плагины. SWF - делает его интерфейс гораздо быстрее, чем решения написанные с использованием, например, Swing - тот же NetBeans. Дело в том, что Swing попиксельно отрисовывает элементы управления средствами Java на чистом листе, в то время как SWF использует "родные" элементы управления операционной системы. Конечно, это накладывает ограничения на управление их внешним видом, но разработчикам нужно быстрое средство разработки а не красивый но медленный интерфейс.

Одной из самых интересных особенностей Eclipse является возможность собрать IDE под себя — установить на него только то, что необходимо здесь и сейчас. Причем, можно сделать несколько сборок под свои нужны и все эти сборки будут отлично работать на компьютере одновременно не конфликтуя. Например, можно собрать среду для программирования на PHP, среду для программирования на Си, среду для программирования под Android и так далее.

Что мне обычно нужно для комфортной работы с PHP проектами? Подсветка синтаксиса и подсказки для HTML, PHP, CSS, JavaScript, редактирование SQL файлов — не так уж и много.

Сборка отличного IDE для разработки под PHP на базе Eclipse займёт всего несколько минут:

1. Скачиваем Eclipse Classic под вашу операционную систему, распаковываем и запускаем Eclipse. На момент написания этого поста это версия 3.7 Indigo.

2. Идем в меню Help -> Install New Software, в появившемся диалоговом окне выбираем Work with: Indigo - http://download.eclipse.org/releases/indigo

3. В появившемся внизу списке компонентов выбираем:

- Database Development -> Data Tools Platform Enablement Extender SDK- позволит нам редактировать SQL файлы.
- Programming Languages -> PHP Development Tools (PDT) SDK Feature - набор для работы с PHP
- Web, XML, JavaEE and OSGi Enterprise Development ->Eclipse Web Development Tools - редактирование HTML, CSS файлов.
- Web, XML, JavaEE and OSGi Enterprise Development ->JavaScript Developemnt Tools - редактирование JavaScript файлов.
 
 
 
Далее, жмем на кнопку Finish и следуем инструкциям программы. Eclipse сама скачает и установит нужные компоненты и зависимости. По завершениии установки попросит перезапустить IDE и, вуаля - у нас есть все, что нужно для нормальной работы.
Конечно, данный список компонентов может быть расширен в соответствии с вашими персональными пристрастиями, тут каждый сам решает, что ему нужно.
 

Коментариев: 1

 
  2011-06-04

Как изменить кодировку базы данных на UTF-8

Встала задача сконвертировать базу данных из latin1 в utf8. В интернете есть множестово рецептов как это сделать. Наиболее часто встречается PHP скрипт, который генерирует последовательность из ALTER TABLE комманд.

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

Делать эти преобразования вручную на живой базе довольно стрёмно - данные могут измениться между шагами, поэтому я создал вот такой скрипт для выполнения данной задачи:

#!/bin/sh

DBNAME="yourdbname"
DBUSER="yourdbuser"
DBPASS="yourdbpassword"

mysqldump -u$DBUSER -p$DBPASS $DBNAME > $DBNAME.sql
sed 's/DEFAULT CHARSET=latin1//' $DBNAME.sql > ${DBNAME}_converted.sql
sed 's/CHARACTER SET latin1//' ${DBNAME}_converted.sql > ${DBNAME}_converted1.sql

mysql -u$DBUSER -p$DBPASS $DBNAME <<EOFMYSQL
ALTER DATABASE $DBNAME DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
EOFMYSQL

mysql -u$DBUSER -p$DBPASS $DBNAME < ${DBNAME}_converted1.sql

Исходная база была в latin1, если у вас другая кодировка, скрипт легко подправить.

 

Оставить комментарий

 
  2011-04-26

Leverage browser caching

Для того чтобы проверить есть ли у сайта узкие места можно воспользоваться мега полезной штукой Page Speed Plugin. Работает в chrome и firefox. Оказывается на большинстве сайтов по умолчанию не выводятся заголовки которые говорят браузеру как правильно кешировать ресурсы

На linode.com для решение проблемы добавил в httpd.conf следующее:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/x-icon "access plus 2 weeks"
    ExpiresByType image/png "access plus 2 weeks"
    ExpiresByType image/jpeg "access plus 2 weeks"
    ExpiresByType image/gif "access plus 2 weeks"
    ExpiresByType text/javascript "access plus 1 week"
    ExpiresByType text/css "access plus 1 week"
</IfModule>

На другом сервере указанное действо оказалось недостаточным пришлось добавить:

Header unset Pragma
FileETag None
Header unset ETag

И еще включил сжатие для некоторых файлов:
AddOutputFilterByType DEFLATE text/css application/x-javascript application/javascript

 

 

Оставить комментарий

 
  2011-05-05

Как синхронизировать контакты Nokia c Google

Долгое время пользовался Zyb чтобы бекапить контакты с телефона, однако Zyb приказал долго жить а Vodafone, на который теперь ссылается старый сайт zyb совершенно не предназначен для этих целей.

К счастью, гугл заботливо может приютить ваши сокровенные контакты себе на сервер через протокол SyncML — вот здесь нашел настройки ZyncML для аккаунта Google:

  • remote db > 'conacts'
  • synchronoisation > both ways
  • server version > 1.1
  • data bearer > internet
  • access point > whatever you like
  • host address > https://m.google.com/syncml
  • port > 443
  • username > example@gmail.com
  • password > example
  • allow sync requests > yes
  • accept all sync requests > no
  • network authentication > no

 

 

Оставить комментарий

 
  2011-03-26

Как изменить внешний вид кнопки FB Connect

Есть несколько способов:

Способ 1 (правильный). Зайти на сайт разработчиков и прочитать инструкцию.

Способ 2 (ленивый). Поискать в Интернет как это делают другие.

Способ 3 (сверхленивый). Взять стандартную кнопку и допилить её CSS модификаторами:

.fb_button_medium {
	float:left;
	width:234px !important;
	height:42px !important;
	background:url(../image/layout/homepage-facebook-main.png) no-repeat 0 0 !important;	
}

.fb_button_text {
	display:none !important;	
}
 

Оставить комментарий

 
  2011-03-23

Как добавить/удалить несколько файлов в/из svn

добавляем:
svn status | grep "^?" | awk '{print $2}' | xargs svn add

теперь удаляем из svn те файлы что были удалены из файловой системы:
svn status | grep "^\!" | awk '{print $2}' | xargs svn remove

 

Коментариев: 2

 
  2011-03-18

Как изменить UserAgent у Firefox

В адресной строке набираем about:config и после предупреждения попадаем в настроеки Firefox. Набираем в фильтре (сверху) слово general.useragent и видим, что разработчики Firefox особо не балуют трудящихся широтой выбора, и полностью изменить UserAgent с помощью появившихся полей не получится. К счастью, для этого предусмотрена одна хитрая настройка, которая по дефолту в Firefox отсутствует, называется она general.useragent.override, и если создать настройку с таким названием (правой кнопкой мыши > создать > строка) и запихнуть в неё, например, строку «MyFakeUserAgent v. 1.0″ то этот новый UserAgent и будет выдаваться в заголовках запроса.

Eсли понадобится настоящий UserAgent, то для этого достаточно очистить строку в general.useragent.override.

Нашел здесь

 

Оставить комментарий

 
  2011-03-17

Как изменить размер всех изображений в директории при помощи ImageMagic

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

Чтобы одновременно уменьшить все фотографии на Linux проще всего воспользоваться следующей командой:

> for i in `ls *.JPG`; do convert -resize 75% -quality 80 $i resized/$i; done

— все ваши фотографии окажутся аккуратно уменьшены на треть и сложены в папочку resized (её нужно создать перед выполнением вышеприведенной команды) взято отсюда.

Собственно к чему я это? Выложил немного фотографий из путешествия в Австрию. Теперь буду понемногу добавлять к ним описания.

 

Оставить комментарий

 
  2011-02-19

Настройка OpenVPN

Так получилось, что моя домашняя рабочая станция практически всегда находится во включенном состоянии и всегда в подключена к Internet. Иногда бывают ситуации, когда нужно получить доступ к домашней машине из другого места, например с работы, или с Нетбука по WiFi, или с телефона через GPRS или 3G.

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

Давно вынашивал идею настроить VPN и сегодня её, наконец, реализовал. Для этого на линодовский VDS я поставил openvpn (да здравствует линодовский VPN!) OpenVPN настраивается очень просто на официальном сайте OpenVPN есть подробнейшая инструкция как это сделать далее, настраиваем клиентскую часть openvpn на всех машинах, которые хотим объединить в сеть, запускаем, готово - у нас есть собственная виртуальная защищенная сеть где все компьютеры имеют собственный внутренний IP адрес вида 10.8.0.x.

Заработало все практически без проблем, единственное смутило, что пример server.conf в юбунтовском пакете почему то оказался зазипованным (зачем они так сделали?) и не совсем очевидно было как настроить статические IP для всех клиентов.

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

Кроме этого, всегда можно попасть на домашний компьютер просто зайдя на VPN сервер, например через терминал с мобильника или с другого компьютера.

 

Коментариев: 1

 
  2010-12-23

Флешки больше не нужны! или: Использование Git для синхронизации папок

Допустим, у вас есть какой нибудь сервер с доступом по SSH. На сервере стоит git. Мы хотим создать некую папку на удаленном сервере, содержимое которой должно синхронизироваться с локальной папкой на домашнем копьютере а также с локальной папкой на другом компьютере, например на работе.

Начнем с сервера (на нем Ubuntu).

1. если git не стоит установим его:

> sudo apt-get install git-core
> git config --global user.name "Uzumaki Naruto" #расскажем немного о себе
> git config --global user.email naruto@uzumaki.co.jp #свой емайл

2. создадим репозиторий

> cd /path/to/the/folder #переходи в папку которую будем шарить
> git init #создаем репозиторий
> git config receive.denyCurrentBranch ignore #это чтобы можно было заливать изменения

 

3. создаем файл README и добавим его в наш новый репозиторий:

> touch README #создаем пустой файл
> git add README #добавляем его в репозиторий
> git commit -a -m"first commit" #фиксируем изменения

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

> ssh-keygen -t rsa -C"naruto@homeaddress.ru" #создадим ключ если не создан
> cat ~/.ssh/id_rsa.pub | ssh user@remoteserver.com 'cat >> .ssh/authorized_keys' #закинем ключ на удаленный сервер

скачиваем наш репозиторий с удаленного сервера:

> git clone user@remoteserver:/path/to/the/folder

Поздравляю, репозиторий скачан, мы можем отредактировать файл README локально и закачать изменения в репозиторий:

> git status #смотрим что изменилось
> git commit -a -m "local chages" #фиксируем изменения
> git push origin master

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

> git pull #все изменения сделанные дома зальются на рабочий компьютер.

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

> git reset --hard

Проверям, содержимое файла README теперь такое же как и на нашей домашней машине, как и на рабочей машине.

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

Несколько замечаний.

1. для доступа к удаленному репозиторию по идее git не обязателено устанавливать на удаленной машине достаточно иметь к ней доступ по SSH - просто скопировать локально созданный репозиторий на удаленную машину, но в этом случае мы не сможем видеть изменения на удаленном сервере в виде живых файлов.

2. в примере используется SSH авторизация, если нужно чтобы к репозиторию обращалось несколько человек имеет смысл использовать gitosis см: https://help.ubuntu.com/community/Git

 

Коментариев: 5