<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-37345659</id><updated>2024-11-01T13:53:01.132+03:00</updated><category term="php"/><category term="android"/><category term="symfony"/><category term="Mysql"/><category term="ubuntu"/><category term="linux"/><category term="Oracle"/><category term="git"/><category term="java"/><category term="sfWidget"/><category term="Propel"/><category term="algorithm"/><category term="gedit"/><category term="gnome"/><category term="google play"/><category term="intent"/><category term="javascript"/><category term="konwert"/><category term="layout"/><category term="mongo"/><category term="node"/><category term="ntp"/><category term="samsung"/><category term="sed"/><category term="sfFilter"/><category term="sqplus"/><category term="ssh"/><category term="toast"/><category term="work"/><title type='text'>Заметки разработчика</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37345659.post-5852169770822780940</id><published>2015-01-05T23:34:00.000+03:00</published><updated>2015-01-05T23:37:44.966+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="work"/><title type='text'>Как повысить эффективность разработки — советы программистам. Мои дополнения</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i1101.photobucket.com/albums/g427/acw_world/Gifs/PiratesOfTheCaribbean03_zpsebd8251f.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://i1101.photobucket.com/albums/g427/acw_world/Gifs/PiratesOfTheCaribbean03_zpsebd8251f.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
К недавней статье&amp;nbsp;&quot;&lt;a href=&quot;http://siliconrus.com/2014/12/tips-for-devs/&quot; target=&quot;_blank&quot;&gt;Как повысить эффективность разработки — советы программистам&lt;/a&gt;&quot; на siliconrus я бы добавил свои подходы, хотя статья и так хороша.&lt;br /&gt;
Часто бывает не сложно сосредоточится, а сложно начать что-то делать, поэтому я использую следующее:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;Начать что-то писать в текстовый редактор:&lt;/b&gt;&lt;br /&gt;неважно что вы пишите, главное начать, это может быть todo список дел на сегодня или просто пост в блог, как правило к моменту когда вы закончите вы уже будет полны запала что-то сделать;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Выполнить задание:&lt;/b&gt;&lt;br /&gt;это может быть просто разминка для мозга, вспомнить алгоритм сортировки пузырьком, реализовать свою версию hashmap и т.д. Также попробуйте&amp;nbsp;выполнить одно из заданий на &lt;a href=&quot;http://www.codecademy.com/courses/lang/all&quot; target=&quot;_blank&quot;&gt;codecademy&lt;/a&gt;, или пройдите тесты &lt;a href=&quot;https://www.hackerrank.com/&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;просто посидеть&amp;nbsp;&lt;b&gt;5-10 минут&lt;/b&gt;:&lt;/b&gt;&lt;br /&gt;не поверите, но это работает, это сродни медитации и заставляет упорядочить все в голове&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Удачи! Напишите, что помогает вам.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/5852169770822780940/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/5852169770822780940' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5852169770822780940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5852169770822780940'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2015/01/blog-post.html' title='Как повысить эффективность разработки — советы программистам. Мои дополнения'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://i1101.photobucket.com/albums/g427/acw_world/Gifs/th_PiratesOfTheCaribbean03_zpsebd8251f.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-4408333369246087414</id><published>2014-12-24T17:53:00.001+03:00</published><updated>2015-01-30T13:58:05.433+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="mongo"/><category scheme="http://www.blogger.com/atom/ns#" term="node"/><title type='text'>Полезные заметки javascript разработчика - 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Работа в большой команде с git требует усложнения процесса, есть отличная статья об &lt;a href=&quot;https://www.blogger.com/habrahabr.ru/post/106912/&quot;&gt;Удачной модели ветвления в git&lt;/a&gt;&lt;br /&gt;
Я уже ранее писал об &lt;a href=&quot;http://broderix.blogspot.ru/2011/10/git.html&quot;&gt;основах работы в git&lt;/a&gt;&lt;br /&gt;
Не давно потребовалось перименовать текст последнего коммита, вот решение:&lt;br /&gt;
&lt;code&gt;git commit --amend [-m &#39;new text&#39;]&lt;/code&gt;
- откроется редактор и вы сможете исправить текст.&lt;br /&gt;
&lt;code&gt;git push [origin master]&lt;/code&gt;
&lt;br/&gt;
&lt;a href=&quot;https://www.kernel.org/pub/software/scm/git/docs/git-commit.html&quot;&gt;Здесь подробнее&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
В последнее время приходится много работать с mongo, и при миграции данных, когда не понятно, что творится в бд (как вы знаете mongo это документо-ориентированная бд, в которой можно хранить документы с разной структурой в одной коллекции/таблице). Потребовалось понять какие существуют поля в документах, и конечно нашлась &lt;a href=&quot;http://stackoverflow.com/questions/2298870/mongodb-get-names-of-all-keys-in-collection&quot;&gt;статья в stackoverflow&lt;/a&gt;
&lt;br /&gt;
Для это в консоли mongo создадим дополнительные коллекции&lt;br /&gt;
&lt;pre&gt;mr = db.runCommand({
  &quot;mapreduce&quot; : &quot;my_collection&quot;,
  &quot;map&quot; : function() {
    for (var key in this) { emit(key, null); }
  },
  &quot;reduce&quot; : function(key, stuff) { return null; }, 
  &quot;out&quot;: &quot;my_collection&quot; + &quot;_keys&quot;
})
&lt;/pre&gt;
Получить результат:&lt;br /&gt;
&lt;pre&gt;db[mr.result].distinct(&quot;_id&quot;)
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Функция &lt;a href=&quot;https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/some&quot;&gt;Array.some&lt;/a&gt; будет очень полезна для поиска в массиве элементов соответствующих условию&lt;br /&gt;
Пример использования:&lt;br /&gt;
&lt;pre&gt;function isBigEnough(element, index, array) {
  return element &amp;gt;= 10;
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed равен false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed равен true
&lt;/pre&gt;
Самое приятное, что функция пробегает не по всему массиву, а до первого совпадения, это можно проверить добавив счетчик в isBigEnough. Это работает на последней node (0.10) и в вашем любимом современном браузере.
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/4408333369246087414/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/4408333369246087414' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/4408333369246087414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/4408333369246087414'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2014/12/javascript-1.html' title='Полезные заметки javascript разработчика - 1'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-3816010213978414644</id><published>2012-08-01T23:52:00.001+04:00</published><updated>2012-08-01T23:52:34.052+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Нет сети в эмуляторе Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Бывает странный глюк в эмуляторе android. Допустим в моей домашней сети в эмуляторе нет интернета ни в приложении&amp;nbsp;ни в браузере. Для решения этой проблемы попробуйте явно указать dns сервер.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
./emulator.exe -avd android-emulator-name -dns-server 192.168.0.1&lt;/blockquote&gt;
Все же если у вас есть интернет в браузере эмулятора, но нет в приложении. То проверьте permission в AndroidManifest.xml.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;uses -permission=&quot;-permission&quot; android:name=&quot;android.permission.INTERNET&quot; nbsp=&quot;nbsp&quot;&gt;&lt;/uses&gt;&lt;/blockquote&gt;
&lt;/blockquote&gt;
Еще более полная &lt;a href=&quot;http://www.gitshah.com/2011/02/android-fixing-no-internet-connection.html&quot; target=&quot;_blank&quot;&gt;статья&lt;/a&gt; (на англ.)&amp;nbsp;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/3816010213978414644/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/3816010213978414644' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3816010213978414644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3816010213978414644'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2012/08/android.html' title='Нет сети в эмуляторе Android'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-2209821631539840172</id><published>2012-08-01T14:40:00.000+04:00</published><updated>2012-08-01T14:40:07.048+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="google play"/><title type='text'>Изменения в политике Google Play для разработчиков</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Все мы знаем насколько лояльно Google относится к приложениям в своём магазине. Идеальный алгоритм модерации, который устраивал и пользователей и разработчиков, ещё не придумал никто. Но Google движется в этом направлении.&lt;br /&gt;
Сегодня (01.08.2012) прислал письмо разработчикам о новой политике, вот краткий список нововведений:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;введены четкие детали политики платежей и правил того как будут обрабатываться отмены в новой функции подписки биллинга (детали надо искать в личном кабинете разработчика)&lt;/li&gt;
&lt;li&gt;ограничение на &amp;nbsp;использование названий или иконок похожих на системные приложения в целях снижения запутанности пользователей&lt;/li&gt;
&lt;li&gt;новые правила о&amp;nbsp;
видах опасных продуктов,&amp;nbsp;которые не допускаются на Play Google, например, приложения, которые раскрывают личную информацию без разрешения не допускается
&amp;nbsp;(детали необходимо поискать)&lt;/li&gt;
&lt;li&gt;даны больше примеров нарушений политики спама (детали необходимо поискать)&lt;/li&gt;
&lt;li&gt;новые правила рекламы,&amp;nbsp;&amp;nbsp;реклама должна следовать тем же правилам , что и само приложение, реклама не должна обманывать, вести себя агрессивно или&amp;nbsp;блокировать другую рекламу&amp;nbsp;(детали необходимо поискать)&lt;/li&gt;
&lt;li&gt;новые приложения или обновления старых сразу подвергнуться действию новой политики, если в существующем приложении будут найдены нарушения то в течени 30 дней их необходимо устранить иначе оно может быть удалено из каталога&lt;/li&gt;
&lt;/ul&gt;
Как мне кажется это должно благотворно сказать на всей экосистеме Android.&lt;br /&gt;
&lt;br /&gt;
Ссылка на полный текст новой &lt;a href=&quot;http://play.google.com/about/developer-content-policy.html&quot; target=&quot;_blank&quot;&gt;политики&lt;/a&gt; (на англ.).&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/2209821631539840172/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/2209821631539840172' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/2209821631539840172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/2209821631539840172'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2012/08/google-play.html' title='Изменения в политике Google Play для разработчиков'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-3912518767209908519</id><published>2012-02-07T15:18:00.001+04:00</published><updated>2012-02-07T17:47:06.414+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Ошибки Eclipse и Android SDK</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Я разрабатываю под ubuntu (на момент публикации 11.04).&lt;br /&gt;
Eclipse SDK&amp;nbsp;Version: 3.7.1&amp;nbsp;Build id: M20110909-1335&lt;br /&gt;
&lt;pre&gt;$ java -version
java version &quot;1.6.0_26&quot;
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)
&lt;/pre&gt;&lt;br /&gt;
При очередном старте проекта наткнулся на ошибку&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;parsesdkcontent failed android&lt;/blockquote&gt;&lt;br /&gt;
проекты собирались, т.к. sdk не был загружен. Я попытался переустановить все с начала - не помогло. Попробовал обновить sdk через файл ./sdk/tools/android (Android SDK Manager), стали появляться следующие ошибки:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml, reason: Failure initializing default SSL context&lt;/blockquote&gt;но файл по адресу открывается. Покопавшись в интернетах обнаружил вот это &lt;a href=&quot;http://stackoverflow.com/questions/8910359/failed-to-fetch-url-http-dl-ssl-google-com-android-repository-addons-list-1-xm&quot; target=&quot;_blank&quot;&gt;обсуждение&lt;/a&gt;.&lt;br /&gt;
Там сказано, что следует удалить gcj, позже я вспомнил, что недавно устанавливал этот пакет.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;sudo apt-get remove gcj-*&lt;/blockquote&gt;Далее при попытке сборки в консоли эклипса появляется следующее&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;Android requires compiler compliance level 5.0 or 6.0. Found &#39;1.4&#39; instead. Please use Android Tools &amp;gt; Fix Project Properties.&lt;/blockquote&gt;Должно лечиться &lt;a href=&quot;http://kyleclegg.com/android-requires-compiler-compliance-level-5-0/&quot; target=&quot;_blank&quot;&gt;этими&lt;/a&gt; инструкциями, а именно Project properties -&amp;gt; Android Tools -&amp;gt; Fix Project Properties&lt;br /&gt;
Мне не помогло. Я попробовал перейти на openjdk.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;sudo apt-get remove sun-java6-*&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;ubuntu сразу предложил поставить пакеты на замену&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ca-certificates-java default-jre default-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm icedtea-netx libaccess-bridge-java libaccess-bridge-java-jni openjdk-6-jre openjdk-6-jre-headless&amp;nbsp;openjdk-6-jre-lib tzdata-java&lt;/pre&gt;&lt;br /&gt;
добавил путь /usr/lib/jvm/java-6-openjdk/jre/bin/ в bash_profile чтобы запускался eclipse&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ vim ~/.bash_profile
PATH=$PATH:/usr/lib/jvm/java-6-openjdk/jre/bin
export PATH&lt;/pre&gt;&lt;br /&gt;
После этого все заработало, ура.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/3912518767209908519/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/3912518767209908519' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3912518767209908519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3912518767209908519'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2012/02/eclipse-android-sdk.html' title='Ошибки Eclipse и Android SDK'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-8686841722591876081</id><published>2012-01-25T17:21:00.001+04:00</published><updated>2012-01-25T17:21:34.205+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithm"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Простой алгоритм случайной выборки с учетом веса</title><content type='html'>Часто необходимо обращаться к одной и той же задаче:&lt;br /&gt;
&lt;b&gt;&quot;случайная выборка с учетом веса&quot;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Чтобы не забыть вот кратное описание взятое &lt;a href=&quot;http://blog.dotzero.ru/post/4337902522/weighted-random-simple&quot;&gt;отсюда&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Простой алгоритм случайной выборки с учетом веса&lt;/h2&gt;&lt;br /&gt;
В общем виде этот алгоритм можно описать так:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Выбрать случайное число между еденицей и суммой “весов” всех элементов&lt;br /&gt;
&lt;li&gt;Спускаться по списку элементов добавляя к счетчику вес текущего элемента&lt;/dd&gt;&lt;br /&gt;
&lt;li&gt;Проверить, если счетчик (шаг №2) больше или равен случайному числу (шаг №1), то закончить&lt;br /&gt;
&lt;li&gt;цикл и вернуть текущий элемент. В противном случае перейдите к шагу №2.&lt;br /&gt;
&lt;/ol&gt;&lt;pre class=&quot;prettyprint&quot;&gt;/**
 * Выборка случайного элемента с учетом веса
 *
 * @param array $values индексный массив элементов
 * @param array $weights индексный массив соответствующих весов
 * @return mixed выбранный элемент
 */
function weighted_random_simple ( $values, $weights )
{
    $total = array_sum( $weights );
    $n = 0;
 
    $num = mt_rand( 1, $total );
 
    foreach ( $values as $i =&gt; $value )
    {
        $n += $weights[$i];
 
        if ( $n &gt;= $num )
        {
            return $values[$i];
        }
    }
}

$values = array(&#39;A&#39;, &#39;B&#39;, &#39;C&#39;);
$weights = array(3, 7, 10);
echo weighted_random_simple($values, $weights);
&lt;/pre&gt;&lt;h2&gt;Алгоритм случайной выборки из тысяч элементов&lt;/h2&gt;Алгоритм может быть расширен, чтобы сделать его значительно быстрее. Вместо вычисления общего веса (шаг №1) и счетчика (шаг №2) каждый раз, можно сделать это один раз и сохранить значения счетчиков в массиве. Тогда мы сможем использовать бинарный поиск, чтобы быстро выбрать правильный элемент. Ниже приведен модифицированный вариант скрипта:  &lt;pre class=&quot;prettyprint&quot;&gt;/**
 * Случайно выбирает один из элементов на основе их веса. 
 * Оптимизирован для большого числа элементов.
 *
 * @param array $values индексный массив элементов
 * @param array $weights индексный массив соответствующих весов
 * @param array $lookup отсортированный массив для поиска
 * @param int $total_weight сумма всех весов
 * @return mixed выбранный элемент
 */
function weighted_random($values, $weights, $lookup = null, $total_weight = null)
{
    if ($lookup == null OR $total_weight == null) 
    {
        list($lookup, $total_weight) = calc_lookups($values, $weights);
    }
 
    $r = mt_rand(1, $total_weight);
         
    return $values[binary_search($r, $lookup)];
}
 
/**
 * Создание массива используемого в бинарном поиске
 *
 * @param array $values 
 * @param array $weights
 * @return array
 */
function calc_lookups($values, $weights)
{
    $lookup = array();
    $total_weight = 0;
         
    for ($i=0; $i &lt; count($weights); $i++)
    {
        $total_weight += $weights[$i];
        $lookup[$i] = $total_weight;
    }
     
    return array($lookup, $total_weight);
}
 
/**
 * Ищет в массиве элемент по номеру и возвращает элемент если он найден.
 * В противном случае возвращает позицию, где он должен быть вставлен, 
 * или count($haystack)-1, если $needle больше чем любой элемент в массиве.
 *
 * @param int $needle
 * @param array $haystack
 * @return int
 */
function binary_search($needle, $haystack)
{
    $high = count($haystack) - 1;
    $low = 0;
 
    while ( $low &lt; $high )
    {
        $probe = (int)(($high + $low) / 2);
 
        if ($haystack[$probe] &lt; $needle)
        {
            $low = $probe + 1;
        } 
        elseif ($haystack[$probe] &gt; $needle) 
        {
            $high = $probe - 1;
        } 
        else
        {
            return $probe;
        }
    }
 
    if ( $low != $high )
    {
        return $probe;
    } 
    else
    {
        return ($haystack[$low] &gt;= $needle) ? $low : $low + 1;
    }
}

// Рассчет массивов (1 раз)
list($lookup, $total_weight) = calc_lookups($values, $weights);
//....
// Каждый раз когда вам необходимо выбрать случайный элемент:
$val = weighted_random($values, $weights, $lookup, $total_weight);
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/8686841722591876081/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/8686841722591876081' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/8686841722591876081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/8686841722591876081'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2012/01/blog-post.html' title='Простой алгоритм случайной выборки с учетом веса'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-6348349629507162866</id><published>2011-10-31T13:45:00.002+04:00</published><updated>2011-11-02T12:56:51.105+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Основы работы с git</title><content type='html'>Основной и полноценный документ &lt;a href=&quot;http://githowto.com/&quot;&gt;http://githowto.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
забрать код&lt;br /&gt;
git clone git@github.com:companyname/projectname.git&lt;br /&gt;
&lt;br /&gt;
если&lt;br /&gt;
&lt;blockquote&gt;Cloning into mambaandroid...&lt;br /&gt;
Permission denied (publickey).&lt;br /&gt;
fatal: The remote end hung up unexpectedly&lt;/blockquote&gt;то &lt;br /&gt;
ssh-keygen -t rsa -C &quot;your_email@youremail.com&quot;&lt;br /&gt;
cat ~/.ssh/id_rsa.pub &lt;br /&gt;
и скопировать его в настройки своего аккаунта на гитхабе&lt;br /&gt;
&lt;br /&gt;
тест коннекта&lt;br /&gt;
ssh -T git@github.com&lt;br /&gt;
&lt;br /&gt;
иногда надо добавить идентит&lt;br /&gt;
ssh-add ~/.ssh/id_rsa&lt;br /&gt;
&lt;br /&gt;
список бранчей&lt;br /&gt;
git branch -a&lt;br /&gt;
&lt;br /&gt;
переключиться в бранч&lt;br /&gt;
git checkout version-0.8&lt;br /&gt;
&lt;br /&gt;
если вставить этот код в конец своего .bashrc&lt;br /&gt;
PS1=&quot;\[\033[38m\]\u@\h\[\033[01;34m\] \w \[\033[31m\]\`ruby -e \&quot;print (%x{git branch 2&gt; /dev/null}.grep(/^\*/).first || &#39;&#39;).gsub(/^\* (.+)$/, &#39;(\1) &#39;)\&quot;\`\[\033[35m\]$\[\033[00m\] &quot;&lt;br /&gt;
&lt;br /&gt;
то будет подсвечиваться текущий бранч прямо в консоли&lt;br /&gt;
&lt;br /&gt;
забрать все новое с удаленного репа и попытаться авто-смерджить с текущим состоянием&lt;br /&gt;
git pull origin version-0.8&lt;br /&gt;
&lt;br /&gt;
добавить все данные в локальной копии и зафиксировать&lt;br /&gt;
git add .&lt;br /&gt;
git commit -m &#39;desc&#39; &lt;br /&gt;
или&lt;br /&gt;
git commit -a -m &#39;desc&#39; &lt;br /&gt;
&lt;br /&gt;
пушнуть в удаленный реп&lt;br /&gt;
git push origin version-0.8&lt;br /&gt;
&lt;br /&gt;
отменить локальные изменения (svn revert)&lt;br /&gt;
сбросить все&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
&lt;br /&gt;
только определенный файл&lt;br /&gt;
git checkout -- hello.rb&lt;br /&gt;
git checkout HEAD hello.rb&lt;br /&gt;
&lt;br /&gt;
ревертнуть последний коммит&lt;br /&gt;
git revert HEAD&lt;br /&gt;
&lt;br /&gt;
еще примеры &lt;a href=&quot;http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html&quot;&gt;здесь&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
смерджить код из обного бранча в другой&lt;br /&gt;
git checkout version-0.9&lt;br /&gt;
git pull origin version-0.9&lt;br /&gt;
git merge version-0.8&lt;br /&gt;
git log&lt;br /&gt;
git push origin version-0.9&lt;br /&gt;
&lt;br /&gt;
смерджить код в мастер и навесить таг&lt;br /&gt;
git checkout master&lt;br /&gt;
git merge version-0.8&lt;br /&gt;
git tag -a version-0.8.1-release -m &quot;0.8.1 фикс-версия&quot;&lt;br /&gt;
git push --tags origin master</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/6348349629507162866/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/6348349629507162866' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/6348349629507162866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/6348349629507162866'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2011/10/git.html' title='Основы работы с git'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-5993843242355425347</id><published>2011-02-10T16:31:00.013+03:00</published><updated>2011-03-18T16:45:46.438+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Как на самом деле работает присваивание и передача по ссылке объектов в php5</title><content type='html'>Как-то давно, когда только появился php5, я думал, что разобрался с ООП, а именно с присвоением  объектов. Но из-за того, что много времени проводил с java стал под забывать как это работает в php5.&lt;br /&gt;
В штатном режиме, если всегда помнить о том, что в php5 присваивание происходит по ссылке, то нет никаких проблем, пока не используешь знак &amp;.&lt;br /&gt;
http://www.php.net/manual/en/language.oop5.basic.php&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php
class SimpleClass{}
class SimpleClass
{
    // property declaration
    public $var = &#39;a default value&#39;;

    // method declaration
    public function displayVar() {
        echo $this-&amp;gt;var;
    }
}
?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Но подлинный смысл раскрывается этим комментарием:&lt;br /&gt;
&lt;a href=&quot;http://www.php.net/manual/en/language.oop5.basic.php#79856&quot;&gt;http://www.php.net/manual/en/language.oop5.basic.php#79856&lt;/a&gt;&lt;br /&gt;
Я позволил себе его вольно перевести:&lt;br /&gt;
В php необходимо думать о переменных как о ячейках памяти. У каждой переменной если имя, которое ссылается на ячейку памяти(переменную), где хранится значение простого типа: число, строка, массив, и т.д. Когда вы создаете ссылку(&amp;), вы создаете второе имя, которое ссылается на ту же саму ячейку памяти. Когда вы присваиваете одну переменную другой, вы копируете содержимое  ячейки памяти в другую ячейку памяти.&lt;br /&gt;
Но присваивание экземпляров классов(далее объект) происходит не так как присваивание простых типов. Объекты не хранятся в ячейках памяти, которые программист &quot;видит&quot; на прямую. Вместо этого в ячейке памяти хранится указатель на объект. Таким образом указатель ведет себя как примитивный тип.&lt;br /&gt;
Когда вы присваиваете значение ссылки объекта одной переменной другой, обе переменные могут менять состояние одного и того же объекта. Но переменные не являются ссылками на объект, т.к. если присвоить одной из переменных новое значение, то это не отразится на другой переменной.&lt;br /&gt;
&lt;pre class=&quot;brush: c&quot;&gt;&amp;lt;?php
// Assignment of an object
Class Object{
   public $foo=&quot;bar&quot;;
};

$objectVar = new Object();
$reference =&amp; $objectVar;
$assignment = $objectVar

//
// $objectVar ---&amp;gt;+-----------+
//                |(указатель1)----+
// $reference ---&amp;gt;+-----------+    |
//                                 |
//                +-----------+    |
// $assignment --&amp;gt;|(указатель2)----+
//                +-----------+    |
//                                 |
//                                 v
//                  Object(1):foo=&quot;bar&quot;
//
?&amp;gt;
&lt;/pre&gt;Значение переменной $assignment отличается от $objectVar, но эти значение ссылаются на один и тот же объект. Это поведение делает похожим на механизм передачи по ссылке. Если вы используете переменную $objectVar, чтобы поменять состояние объекта, то эти же изменения появятся и в переменной $assignment, т.к. они указывают на один и тот же объект.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;autoinclude&quot;&gt;&amp;lt;?php
$objectVar-&amp;gt;foo = &quot;qux&quot;;
print_r( $objectVar );
print_r( $reference );
print_r( $assignment );

//
// $objectVar ---&amp;gt;+-----------+
//                |(указатель1)----+
// $reference ---&amp;gt;+-----------+    |
//                                 |
//                +-----------+    |
// $assignment --&amp;gt;|(указатель2)----+
//                +-----------+    |
//                                 |
//                                 v
//                  Object(1):foo=&quot;qux&quot;
//
?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Но с передачей значения по ссылке (&amp;) дело обстоит совсем иначе. Если вы обнулите $objectVar, вы замените значение указателя в ячейке памяти на NULL. Это означает, что $reference, которая ссылается на туже ячейку памяти, также будет NULL. Но $assignment, которая ссылается на другую ячейку памяти, будет так же хранить копию указателя на объект, и она не будет равна NULL.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;?php
$objectVar = null;
print_r($objectVar);
print_r($reference);
print_r($assignment);

//
// $objectVar ---&amp;gt;+-----------+
//                |  NULL     | 
// $reference ---&amp;gt;+-----------+
//                           
//                +-----------+
// $assignment --&amp;gt;|(указатель2)----+
//                +-----------+    |
//                                 |
//                                 v
//                  Object(1):foo=&quot;qux&quot;
?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
К примеру, если взять java, где все переменные если ссылки на объекты, тот же пример выполняется так как и в php5 без символа &amp;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;import java.util.*;

class ObjectReference {
    public static void main(String[] args) {
        class Obj {
            int var = 1;
        }
        
        Obj objectVar = new Obj();
        Obj reference = objectVar;
        objectVar.var = 2;
        System.out.println(&quot;objectVar.var=&quot;+objectVar.var);
        System.out.println(&quot;reference.var=&quot;+reference.var);
        
        objectVar = null;
        
        if (reference == null) {
            System.out.println(&quot;reference is null&quot;);
        } else {
            System.out.println(&quot;reference is not null&quot;);
        }
    }
}
&lt;/pre&gt;ответ:&lt;br /&gt;
&lt;pre&gt;objectVar.var=2
reference.var=2
reference is not null
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/5993843242355425347/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/5993843242355425347' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5993843242355425347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5993843242355425347'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2011/02/php5.html' title='Как на самом деле работает присваивание и передача по ссылке объектов в php5'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-3660142157116058515</id><published>2011-01-20T19:47:00.000+03:00</published><updated>2012-02-07T13:54:19.931+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Программа для сбора логов в клиентов</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Очень полезно, когда у клиента что то не работает и ты не знаешь чем помочь&lt;br /&gt;&lt;a href=&quot;http://code.google.com/p/android-log-collector/&quot;&gt;http://code.google.com/p/android-log-collector/&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/3660142157116058515/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/3660142157116058515' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3660142157116058515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3660142157116058515'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2011/01/blog-post.html' title='Программа для сбора логов в клиентов'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-2526166235835380051</id><published>2011-01-20T18:36:00.000+03:00</published><updated>2012-02-07T13:54:19.931+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Как сбросить logcat в файл</title><content type='html'>&lt;code&gt;&lt;br /&gt;try {&lt;br /&gt;    File filename = new File(Environment.getExternalStorageDirectory()+&quot;/logfile.log&quot;); &lt;br /&gt;    filename.createNewFile(); &lt;br /&gt;    String cmd = &quot;logcat -d -f &quot;+filename.getAbsolutePath();&lt;br /&gt;    Runtime.getRuntime().exec(cmd);&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;    // TODO Auto-generated catch block&lt;br /&gt;    e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/2526166235835380051/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/2526166235835380051' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/2526166235835380051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/2526166235835380051'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2011/01/logcat.html' title='Как сбросить logcat в файл'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-8053165341646721356</id><published>2010-12-24T16:23:00.002+03:00</published><updated>2010-12-24T16:23:20.010+03:00</updated><title type='text'>А как умеет ваш язык это делать?</title><content type='html'>Результат будет одинаковый:&lt;br /&gt;
about_logo&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;python -c &#39;import re;s=&quot;http://www.google.ru/intl/ru/images/about_logo.gif&quot;; m = re.match(&quot;.*\/(.*)\.gif$&quot;,s); print m.group(1)&#39;
&lt;/pre&gt;&lt;pre&gt;perl -e &#39;$e=&quot;http://www.google.ru/intl/ru/images/about_logo.gif&quot;; $e =~ /.*\/(.*)\.gif$/i; print $1.&quot;\n&quot;;&#39;
&lt;/pre&gt;&lt;pre&gt;php -r &#39;$e=&quot;http://www.google.ru/intl/ru/images/about_logo.gif&quot;; $pat = &quot;/.*\/(.*)\.gif$/&quot;; preg_match($pat,$e,$m);print $m[1].&quot;\n&quot;;&#39;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/8053165341646721356/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/8053165341646721356' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/8053165341646721356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/8053165341646721356'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/12/blog-post.html' title='А как умеет ваш язык это делать?'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-7098617343742321662</id><published>2010-12-07T16:09:00.000+03:00</published><updated>2012-02-07T13:54:19.932+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Android SDK 2.3 - &amp;quot;Unknown Android Packaging Problem&amp;quot;</title><content type='html'>После обновления SDK согласно документам&lt;br /&gt;http://developer.android.com/intl/zh-TW/sdk/adding-components.html&lt;br /&gt;http://developer.android.com/intl/zh-TW/sdk/installing.html&lt;br /&gt;http://developer.android.com/intl/zh-TW/sdk/eclipse-adt.html&lt;br /&gt;&lt;br /&gt;перестала работать отладка adb&lt;br /&gt;Эта программа переехала в другую папку, нужно обновить .bashrc&lt;br /&gt;export PATH=${PATH}:&lt;sdk&gt;/tools:&lt;sdk&gt;/platform-tools&lt;br /&gt;т.е. по сути добавить папку platform-tools&lt;br /&gt;Далее перестала работать сборка, выходит следующая ошибка&lt;br /&gt;&lt;pre&gt;Error generating final archive: java.io.FileNotFoundException: &lt;br /&gt;/home/user/android/bin/resources.ap_ does not exist &lt;br /&gt;Android  &lt;br /&gt;Unknown Android Packaging Problem&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Решение нашел здесь &lt;br /&gt;http://stackoverflow.com/questions/4372574/many-errors-in-android-project-after-i-upgraded-to-android-sdk-2-3&lt;br /&gt;Вкратце, если в файле res/values/strings.xml вы используете конструкции вида&lt;br /&gt;&lt;pre&gt;&amp;lt;string name=&quot;page_number&quot;&amp;gt;%d results, showing page %d of %d&amp;lt;/string&amp;gt; &lt;br /&gt;&lt;/pre&gt;то теперь нужно использовать индексы для элементов больше одного, т.е. вот так&lt;br /&gt;&lt;pre&gt;&amp;lt;string name=&quot;page_number&quot;&amp;gt;%1$d results, showing page %2$d of %3$d&amp;lt;/string&amp;gt; &lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/7098617343742321662/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/7098617343742321662' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/7098617343742321662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/7098617343742321662'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/12/android-sdk-23-android-packaging.html' title='Android SDK 2.3 - &amp;quot;Unknown Android Packaging Problem&amp;quot;'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-1560161121019455539</id><published>2010-11-11T19:31:00.002+03:00</published><updated>2012-02-07T13:54:54.072+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Глобальная переменная $_REQUEST в php</title><content type='html'>Заметил интересное поведение в глобальной переменной&lt;br /&gt;
$_REQUEST в php, похоже она создается по запросу&lt;br /&gt;
&lt;pre class=&quot;pretty-print&quot;&gt;~$ php -r &#39;echo (int)isset($GLOBALS[&quot;_REQUEST&quot;]).&quot;\n&quot;;&#39;
&lt;/pre&gt;&lt;br /&gt;
ответ 0, но если&lt;br /&gt;
&lt;pre class=&quot;pretty-print&quot;&gt;~$ php -r &#39;$_REQUEST;echo (int)isset($GLOBALS[&quot;_REQUEST&quot;]).&quot;\n&quot;;&#39;
&lt;/pre&gt;&lt;br /&gt;
ответ уже 1</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/1560161121019455539/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/1560161121019455539' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/1560161121019455539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/1560161121019455539'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/11/request-php.html' title='Глобальная переменная $_REQUEST в php'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-8889231311485633889</id><published>2010-11-08T22:05:00.000+03:00</published><updated>2012-02-07T13:53:43.722+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Java - кофе</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihSOYL4SwkW_cWYA5mZ8dwJVSKdp_ZW9i8cJzOLYzpKq5vdmTzHxwzRfbYQN_bOzSW9wLAPNGRWipfDC63_8lZ3UpLbbiUpPPjISIL5Tgi5yil5DdJuD_ql9MFNNtDP9Rn8phC/s1600/2010-11-08+21.54.16.jpg&quot;&gt;&lt;br /&gt;&lt;img style=&quot;display:block; margin:2px; text-align:left;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihSOYL4SwkW_cWYA5mZ8dwJVSKdp_ZW9i8cJzOLYzpKq5vdmTzHxwzRfbYQN_bOzSW9wLAPNGRWipfDC63_8lZ3UpLbbiUpPPjISIL5Tgi5yil5DdJuD_ql9MFNNtDP9Rn8phC/s320/2010-11-08+21.54.16.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5537258393092817730&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Теперь я не только пишу Java, но и пью её.</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/8889231311485633889/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/8889231311485633889' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/8889231311485633889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/8889231311485633889'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/11/java.html' title='Java - кофе'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihSOYL4SwkW_cWYA5mZ8dwJVSKdp_ZW9i8cJzOLYzpKq5vdmTzHxwzRfbYQN_bOzSW9wLAPNGRWipfDC63_8lZ3UpLbbiUpPPjISIL5Tgi5yil5DdJuD_ql9MFNNtDP9Rn8phC/s72-c/2010-11-08+21.54.16.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-4023931087488618817</id><published>2010-08-30T21:20:00.003+04:00</published><updated>2010-08-30T21:33:26.638+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mysql"/><title type='text'>Mysql ERROR 1005 (HY000): Can&#39;t create table (errno: 150)</title><content type='html'>Уже который раз спотыкаюсь об одни и те же грабли, решил записать.&lt;br /&gt;&lt;br /&gt;т.е. после создания таблиц:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;CREATE TABLE sf_guard_user &lt;br /&gt;(&lt;br /&gt; id BIGINT AUTO_INCREMENT, &lt;br /&gt; first_name VARCHAR(255), &lt;br /&gt; last_name VARCHAR(255), &lt;br /&gt; email_address VARCHAR(255) NOT NULL UNIQUE, &lt;br /&gt; username VARCHAR(128) NOT NULL UNIQUE, &lt;br /&gt; algorithm VARCHAR(128) DEFAULT &#39;sha1&#39; NOT NULL, &lt;br /&gt; salt VARCHAR(128), password VARCHAR(128), &lt;br /&gt; is_active TINYINT(1) DEFAULT &#39;1&#39;, &lt;br /&gt; is_super_admin TINYINT(1) DEFAULT &#39;0&#39;, &lt;br /&gt; last_login DATETIME, created_at DATETIME NOT NULL, &lt;br /&gt; updated_at DATETIME NOT NULL, &lt;br /&gt; INDEX is_active_idx_idx (is_active), &lt;br /&gt; PRIMARY KEY(id)&lt;br /&gt;)ENGINE = INNODB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE sf_guard_user_profile &lt;br /&gt;(&lt;br /&gt; id BIGINT AUTO_INCREMENT, &lt;br /&gt; user_id BIGINT, first_name VARCHAR(20), &lt;br /&gt; last_name VARCHAR(20),&lt;br /&gt; email VARCHAR(255), &lt;br /&gt; email_hash VARCHAR(255), &lt;br /&gt; INDEX user_id_idx (user_id), &lt;br /&gt; PRIMARY KEY(id)&lt;br /&gt;) ENGINE = INNODB;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;я пытаюсь создать ключи:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ALTER TABLE sf_guard_user_profile &lt;br /&gt;ADD CONSTRAINT sf_guard_user_profile_user_id_sf_guard_user_id &lt;br /&gt; FOREIGN KEY (user_id) &lt;br /&gt;  REFERENCES sf_guard_user(id) &lt;br /&gt;   ON DELETE CASCADE;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;и получаю ошибку ERROR 1005 (HY000): Can&#39;t create table (errno: 150)&lt;br /&gt;mysql говорит, что не может найти поле на которое ссылаемся&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mysql&gt; SHOW ENGINE INNODB STATUS; &lt;br /&gt;...&lt;br /&gt;100830 20:59:41 Error in foreign key constraint of table s1/#sql-477_152:&lt;br /&gt; FOREIGN KEY (user_id) REFERENCES sf_guard_user(id) ON DELETE CASCADE:&lt;br /&gt;Cannot find an index in the referenced table where the&lt;br /&gt;referenced columns appear as the first columns, or column types&lt;br /&gt;in the table and the referenced table do not match for constraint.&lt;br /&gt;Note that the internal storage type of ENUM and SET changed in&lt;br /&gt;tables created with &gt;= InnoDB-4.1.12, and such columns in old tables&lt;br /&gt;cannot be referenced by such columns in new tables.&lt;br /&gt;See http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html&lt;br /&gt;for correct foreign key definition.&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;mysql это не нравится, отсюда и ошибка, хотя пишет что не может найти поле, а оно есть.&lt;br /&gt;Дело оказывается в том, что в symfony при генерации схемы нет проверки на размерность типов для внешних ключей, т.е. если указать разные размерности для ключевых полей, то будет ошибка, т.е. вместо:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sfGuardUserProfile:&lt;br /&gt;  tableName:     sf_guard_user_profile&lt;br /&gt;  columns:&lt;br /&gt;    user_id:          integer(4)&lt;br /&gt;    first_name:       varchar(20)&lt;br /&gt;    last_name:        varchar(20)&lt;br /&gt;    email:            varchar(255)&lt;br /&gt;    email_hash:       varchar(255)&lt;br /&gt;  relations:&lt;br /&gt;    Users:&lt;br /&gt;      class: sfGuardUser&lt;br /&gt;      refClass: sfGuardUserGroup&lt;br /&gt;      local: group_id&lt;br /&gt;      foreign: user_id&lt;br /&gt;      foreignAlias: Groups&lt;br /&gt;    sfGuardUser:&lt;br /&gt;      type: one&lt;br /&gt;      foreignType: one&lt;br /&gt;      class: sfGuardUser&lt;br /&gt;      local: user_id&lt;br /&gt;      foreign: id&lt;br /&gt;      onDelete: cascade&lt;br /&gt;      foreignAlias: Profile&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;надо :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sfGuardUserProfile:&lt;br /&gt;  tableName:     sf_guard_user_profile&lt;br /&gt;  columns:&lt;br /&gt;    user_id:          integer&lt;br /&gt;    first_name:       varchar(20)&lt;br /&gt;    last_name:        varchar(20)&lt;br /&gt;    email:            varchar(255)&lt;br /&gt;    email_hash:       varchar(255)&lt;br /&gt;  relations:&lt;br /&gt;    Users:&lt;br /&gt;      class: sfGuardUser&lt;br /&gt;      refClass: sfGuardUserGroup&lt;br /&gt;      local: group_id&lt;br /&gt;      foreign: user_id&lt;br /&gt;      foreignAlias: Groups&lt;br /&gt;    sfGuardUser:&lt;br /&gt;      type: one&lt;br /&gt;      foreignType: one&lt;br /&gt;      class: sfGuardUser&lt;br /&gt;      local: user_id&lt;br /&gt;      foreign: id&lt;br /&gt;      onDelete: cascade&lt;br /&gt;      foreignAlias: Profile&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;а именно поле user_id должно быть таким же как в у sfGuardUser</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/4023931087488618817/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/4023931087488618817' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/4023931087488618817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/4023931087488618817'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/08/mysql-error-1005-hy000-cant-create.html' title='Mysql ERROR 1005 (HY000): Can&#39;t create table (errno: 150)'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-5325147538050413421</id><published>2010-06-02T17:14:00.006+04:00</published><updated>2012-02-07T13:55:40.482+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gnome"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Как сделать слайд-шоу для рабочего стола gnome</title><content type='html'>В ubuntu 9.10 появились обой рабочего стола в виде слайд-шоу&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkYxKR7vdC7woUAtiyQ655wOmTCtcHBbeUDWBD3v0YGgUV22RZJE-CFL1N2zcEE5QvrlQU1PLg0SadcBd6bVgdPSXRStQvHTRkTga9liPVziItmOQ4cK2X633YGZiJ2xcg0Yk6/s1600/ubuntu10_04_gnome_slideshow.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 244px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkYxKR7vdC7woUAtiyQ655wOmTCtcHBbeUDWBD3v0YGgUV22RZJE-CFL1N2zcEE5QvrlQU1PLg0SadcBd6bVgdPSXRStQvHTRkTga9liPVziItmOQ4cK2X633YGZiJ2xcg0Yk6/s320/ubuntu10_04_gnome_slideshow.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5478164868503033218&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;его пример лежит в папке&lt;br /&gt;/usr/share/backgrounds/cosmos/background-1.xml&lt;br /&gt;&lt;br /&gt;Это простой xml файл с простыми инструкциями.&lt;br /&gt;Его можно создать вручную, схема довольно проста.&lt;br /&gt;Но можно использовать этот скрипт:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;$staticDuration = &quot;300.0&quot;;#1795.0&lt;br /&gt;$transitionDuration = &quot;5.0&quot;;#5.0&lt;br /&gt;&lt;br /&gt;print &amp;lt;&amp;lt;&quot;TBEGIN&quot;;&lt;br /&gt;&amp;lt;background&amp;gt;&lt;br /&gt;  &amp;lt;starttime&amp;gt;&lt;br /&gt;    &amp;lt;year&amp;gt;2009&amp;lt;/year&amp;gt;&lt;br /&gt;    &amp;lt;month&amp;gt;08&amp;lt;/month&amp;gt;&lt;br /&gt;    &amp;lt;day&amp;gt;04&amp;lt;/day&amp;gt;&lt;br /&gt;    &amp;lt;hour&amp;gt;00&amp;lt;/hour&amp;gt;&lt;br /&gt;    &amp;lt;minute&amp;gt;00&amp;lt;/minute&amp;gt;&lt;br /&gt;    &amp;lt;second&amp;gt;00&amp;lt;/second&amp;gt;&lt;br /&gt;  &amp;lt;/starttime&amp;gt;&lt;br /&gt;TBEGIN&lt;br /&gt;&lt;br /&gt;$pwd = `pwd`;&lt;br /&gt;$pwd =~ s/[\n]//;&lt;br /&gt;$isStart = 0;&lt;br /&gt;opendir(DIR,&quot;.&quot;);&lt;br /&gt;while ($name = readdir(DIR)) {&lt;br /&gt;if($name =~ /jpg|png/){&lt;br /&gt;    if($isStart){&lt;br /&gt;            $pathLast = $pwd.&quot;/&quot;.$lastName;&lt;br /&gt;            $pathCurr = $pwd.&quot;/&quot;.$name;&lt;br /&gt;            print &amp;lt;&amp;lt;&quot;Tname&quot;;&lt;br /&gt;&amp;lt;static&amp;gt;&lt;br /&gt;  &amp;lt;duration&amp;gt;1795.0&amp;lt;/duration&amp;gt;&lt;br /&gt;    &amp;lt;file&amp;gt;$pathLast&amp;lt;/file&amp;gt;&lt;br /&gt;  &amp;lt;/static&amp;gt;&lt;br /&gt;  &amp;lt;transition&amp;gt;&lt;br /&gt;    &amp;lt;duration&amp;gt;5.0&amp;lt;/duration&amp;gt;&lt;br /&gt;    &amp;lt;from&amp;gt;$pathLast&amp;lt;/from&amp;gt;&lt;br /&gt;    &amp;lt;to&amp;gt;$pathCurr&amp;lt;/to&amp;gt;&lt;br /&gt;&amp;lt;/transition&amp;gt;&lt;br /&gt;Tname&lt;br /&gt;    } else {&lt;br /&gt;        $pathFirst = $pwd.&quot;/&quot;.$name;&lt;br /&gt;    }&lt;br /&gt;    $lastName = $name;&lt;br /&gt;    $isStart = 1;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;closedir(DIR);&lt;br /&gt;&lt;br /&gt;print &amp;lt;&amp;lt;&quot;TEND&quot;&lt;br /&gt;&amp;lt;static&amp;gt;&lt;br /&gt;  &amp;lt;duration&amp;gt;1795.0&amp;lt;/duration&amp;gt;&lt;br /&gt;    &amp;lt;file&amp;gt;$pathCurr&amp;lt;/file&amp;gt;&lt;br /&gt;  &amp;lt;/static&amp;gt;&lt;br /&gt;  &amp;lt;transition&amp;gt;&lt;br /&gt;    &amp;lt;duration&amp;gt;5.0&amp;lt;/duration&amp;gt;&lt;br /&gt;    &amp;lt;from&amp;gt;$pathCurr&amp;lt;/from&amp;gt;&lt;br /&gt;    &amp;lt;to&amp;gt;$pathFirst&amp;lt;/to&amp;gt;&lt;br /&gt;&amp;lt;/transition&amp;gt;&lt;br /&gt;&amp;lt;/background&amp;gt;&lt;br /&gt;TEND&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;создайте текстовый файл gen.pl с этим кодом и положите в папку с фотографиями.&lt;br /&gt;выполните команду:&lt;br /&gt;&lt;pre&gt;perl gen.pl &gt; background-2.xml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь добавьте этот файл в &quot;Параметры внешнего вида&quot; - &quot;Фон&quot;, вуаля.</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/5325147538050413421/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/5325147538050413421' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5325147538050413421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5325147538050413421'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/06/gnome.html' title='Как сделать слайд-шоу для рабочего стола gnome'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkYxKR7vdC7woUAtiyQ655wOmTCtcHBbeUDWBD3v0YGgUV22RZJE-CFL1N2zcEE5QvrlQU1PLg0SadcBd6bVgdPSXRStQvHTRkTga9liPVziItmOQ4cK2X633YGZiJ2xcg0Yk6/s72-c/ubuntu10_04_gnome_slideshow.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-5637087559929205831</id><published>2010-05-18T16:58:00.002+04:00</published><updated>2012-02-07T13:55:40.482+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gedit"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Плагин по regexp для gedit</title><content type='html'>Потребовался инструмент для мелкого редактирования текста с использованием regexp&lt;br /&gt;То что может стандартный gedit уже не хватает, такие вещи как замена теста с использованием спец-символов таких как отступ(\t), конец строки(\n) решаются довольно просто, но дальше уже сложно.&lt;br /&gt;Есть такой &lt;a href=&quot;http://students.olin.edu/2010/bfisher/blog/geditplugin/regex_replace.tar.gz&quot;&gt;плагин&lt;/a&gt; в &lt;a href=&quot;http://halfhourhacks.blogspot.com/2008/03/gedit-regular-expression-plugin.html&quot;&gt;одном блоге&lt;/a&gt; описано как его  поставить&lt;br /&gt;Я повторюсь, его нужно &lt;a href=&quot;http://students.olin.edu/2010/bfisher/blog/geditplugin/regex_replace.tar.gz&quot;&gt;скачать&lt;/a&gt; и распаковать в папку ~/.gnome2/gedit/plugins/&lt;br /&gt;Создать если не существует.&lt;br /&gt;Теперь можно использовать такие конструкции как поиск функции название которой вы точно не помните, например ищете Что_то_тамSave&lt;br /&gt;function\s+.*Save.*</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/5637087559929205831/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/5637087559929205831' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5637087559929205831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5637087559929205831'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/05/regexp-gedit.html' title='Плагин по regexp для gedit'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-7295350736335706292</id><published>2010-04-20T10:50:00.003+04:00</published><updated>2012-02-07T13:55:40.483+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ntp"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Настройка времени под linux</title><content type='html'>Самый простой способ:&lt;br /&gt;&lt;pre&gt;sudo ntpdate 0.ru.pool.ntp.org&lt;/pre&gt;&lt;br /&gt;Список всех серверов:&lt;br /&gt;&lt;pre&gt;0.ru.pool.ntp.org&lt;br /&gt;1.ru.pool.ntp.org&lt;br /&gt;2.ru.pool.ntp.org&lt;br /&gt;3.ru.pool.ntp.org&lt;/pre&gt;&lt;br /&gt;Теперь по порядку:&lt;br /&gt;&lt;h2&gt;1.Установить часовой пояс&lt;/h2&gt;&lt;br /&gt;&lt;pre&gt;sudo dpkg-reconfigure tzdata&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;2.Синхронизация&lt;/h2&gt;&lt;br /&gt;&lt;pre&gt;ntpdate 0.ru.pool.ntp.org&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;3.Настройка обновления&lt;/h2&gt;&lt;br /&gt;&lt;pre&gt;$ sudo bash&lt;br /&gt;# echo &quot;ntpdate 0.ru.pool.ntp.org&quot; &gt; /etc/cron.daily/ntpdate&lt;br /&gt;# chmod 755 /etc/cron.daily/ntpdate&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/7295350736335706292/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/7295350736335706292' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/7295350736335706292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/7295350736335706292'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/04/linux.html' title='Настройка времени под linux'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-5505095543426657987</id><published>2010-04-08T21:26:00.000+04:00</published><updated>2012-02-07T13:54:19.932+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="toast"/><title type='text'>Простой способ вывода сообщения</title><content type='html'>&lt;pre&gt;&lt;br /&gt;public class MyActivity extends Activity&lt;br /&gt;{&lt;br /&gt;    public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;        super.onCreate(savedInstanceState);&lt;br /&gt;        Toast.makeText(&lt;br /&gt;            MyActivity.this, &lt;br /&gt;            &quot;Ваше сообщение&quot;, &lt;br /&gt;            Toast.LENGTH_LONG&lt;br /&gt;        ).show();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/5505095543426657987/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/5505095543426657987' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5505095543426657987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5505095543426657987'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/04/blog-post.html' title='Простой способ вывода сообщения'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-3944618396433566151</id><published>2010-04-06T13:43:00.000+04:00</published><updated>2012-02-07T13:54:19.933+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="intent"/><title type='text'>Как передать картинку в Activity через Intent</title><content type='html'>Короткий пример:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Uri imageUri = intent.getData();&lt;br /&gt;mBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);&lt;br /&gt;Intent intent = new Intent(TakePictureActivity.this, PreviewActivity.class);&lt;br /&gt;intent.putExtra(EXTRA_BITMAP_DATA, mBitmap);&lt;br /&gt;startActivityForResult(intent, REQUEST_PREVIEW);&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/3944618396433566151/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/3944618396433566151' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3944618396433566151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3944618396433566151'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2010/04/activity-intent.html' title='Как передать картинку в Activity через Intent'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-1512399967541427520</id><published>2009-07-15T17:13:00.003+04:00</published><updated>2009-07-15T17:22:18.286+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><title type='text'>Полезные заметки по symfony - 2</title><content type='html'>Если надо использовать функции из View в Controller, то надо вопользоваться sfLoader&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;class blogActions extends sfActions&lt;br /&gt;{&lt;br /&gt;  public function preExecute(){&lt;br /&gt;   ...&lt;br /&gt;  }&lt;br /&gt;  public function executeRedirect(sfWebRequest $request)&lt;br /&gt;  {&lt;br /&gt;    sfLoader::loadHelpers(&#39;Url&#39;);&lt;br /&gt;    $this-&gt;redirect(url_for(&#39;@archive_blog?id=&#39;.$this-&gt;currentBlog-&gt;getId(), 301);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но лучше использовать внутренние средства, в symfony почти для каждого из составляющих MVC если дублирующие средства:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;class blogActions extends sfActions&lt;br /&gt;{&lt;br /&gt;  public function preExecute(){&lt;br /&gt;   ...&lt;br /&gt;  }&lt;br /&gt;  public function executeRedirect(sfWebRequest $request)&lt;br /&gt;  {&lt;br /&gt;    sfLoader::loadHelpers(&#39;Url&#39;);&lt;br /&gt;    $this-&gt;redirect(&lt;br /&gt;      $this-&gt;getController()-&gt;genUrl(&#39;@archive_blog?id=&#39;.$this-&gt;currentBlog-&gt;getId()),&lt;br /&gt;      301&lt;br /&gt;    );&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Исключение составляет вызов action из View, как например в ZendFramework, но в symfony похоже это не трубуется (прим. автора: по крайней мере в моей практике).</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/1512399967541427520/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/1512399967541427520' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/1512399967541427520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/1512399967541427520'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2009/07/symfony-2.html' title='Полезные заметки по symfony - 2'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-908767855766564438</id><published>2009-07-08T16:11:00.008+04:00</published><updated>2009-07-08T16:31:48.458+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="sfWidget"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><title type='text'>Как добавить в форму admin генератора ссылку</title><content type='html'>К примеру у вас есть backend (admin) и вам нужно поставить ссылку на какой нибудь ресурс. &lt;br /&gt;Для этого нужно создать свой виджет, например, такой:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;&lt;br /&gt;class sfWidgetFormHtmlLink extends sfWidgetForm&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  protected function configure($options = array(), $attributes = array())&lt;br /&gt;  {&lt;br /&gt;    $this-&gt;addOption(&#39;url&#39;, false);&lt;br /&gt;    $this-&gt;addOption(&#39;target&#39;, &#39;self&#39;);  // self, blank&lt;br /&gt;    $this-&gt;addOption(&#39;route&#39;, false);&lt;br /&gt;    $this-&gt;addOption(&#39;name&#39;, true);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public function render($name, $value = null, $attributes = array(), $errors = array())&lt;br /&gt;  {&lt;br /&gt;    if($this-&gt;getOption(&#39;route&#39;)){&lt;br /&gt;      return link_to(&lt;br /&gt;        $this-&gt;getOption(&#39;name&#39;),&lt;br /&gt;        $this-&gt;getOption(&#39;route&#39;),&lt;br /&gt;        array(&#39;target&#39;=&gt;&#39;_&#39;.$this-&gt;getOption(&#39;target&#39;))&lt;br /&gt;      );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if($this-&gt;getOption(&#39;url&#39;)){&lt;br /&gt;      return &quot;&amp;lt;a href=&#39;&quot;.$this-&gt;getOption(&#39;name&#39;).&lt;br /&gt;        &quot;&#39; target=&#39;_&quot;.$this-&gt;getOption(&#39;target&#39;).&quot;&#39;&amp;gt;&quot;.&lt;br /&gt;        $this-&gt;getOption(&#39;name&#39;).&quot;&amp;lt;/a&amp;gt;&quot;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь его просто использовать:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;class SomeForm extends BaseSomeForm&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public function configure()&lt;br /&gt;  {&lt;br /&gt;    $this-&gt;setWidget(&#39;external_link&#39;,new sfWidgetFormHtmlLink(array(&#39;url&#39;=&gt;&#39;http://ya.ru&#39;,&#39;name&#39;=&gt;&#39;Поискать&#39;)));&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Меняя метод render можно создать свой виджет по выводу какого-либо html текста и т.д.</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/908767855766564438/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/908767855766564438' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/908767855766564438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/908767855766564438'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2009/07/admin.html' title='Как добавить в форму admin генератора ссылку'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-5323530814654485108</id><published>2009-06-17T13:01:00.002+04:00</published><updated>2012-02-07T13:54:54.072+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Полезные заметки по symfony - 1</title><content type='html'>Установка meta html данных:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;class SomeObjectActions extends sfActions&lt;br /&gt;{&lt;br /&gt;  public function executeShowObject(sfWebRequest $request){&lt;br /&gt;    ...&lt;br /&gt;    $this-&gt;getResponse()-&gt;setTitle($this-&gt;object-&gt;getMetaTitle());&lt;br /&gt;    $this-&gt;getResponse()-&gt;addMeta(&#39;meta_keywords&#39;, $this-&gt;object-&gt;getMetaKeywords());&lt;br /&gt;    $this-&gt;getResponse()-&gt;addMeta(&#39;meta_description&#39;, $this-&gt;object-&gt;getMetaDescription());&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/5323530814654485108/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/5323530814654485108' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5323530814654485108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/5323530814654485108'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2009/06/symfony-1.html' title='Полезные заметки по symfony - 1'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-3237339801534369977</id><published>2009-06-17T11:24:00.003+04:00</published><updated>2009-06-17T11:36:09.686+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><title type='text'>Правильное использование sfWidgetFormTextareaTinyMCE</title><content type='html'>sfWidgetFormTextareaTinyMCE - это виджет, HTML WYSIWYG editor. Очень удобная вешь, но в &lt;a href=&quot;http://www.symfony-project.org/blog/2008/10/18/spice-up-your-forms-with-some-nice-widgets-and-validators&quot;&gt;блоге&lt;/a&gt; symfony очень скудно описан принцип работы, точнее в последней версии возникает ошибка:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;You must pass a &quot;class&quot; attribute for a TinyMCE widget&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Вот, как и какой класс надо указывать:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;    $this-&gt;setWidget(&#39;text&#39;, new sfWidgetFormTextareaTinyMCE(array(&lt;br /&gt;      &#39;width&#39;  =&gt; 650,&lt;br /&gt;      &#39;height&#39; =&gt; 550,&lt;br /&gt;      &#39;config&#39; =&gt; &#39;theme_advanced_disable: &quot;anchor,image,cleanup,help&quot;&#39;,&lt;br /&gt;    )&lt;br /&gt;    ,array(&lt;br /&gt;   &#39;class&#39; =&gt; &#39;tinyMCE&#39;,&lt;br /&gt;    )&lt;br /&gt;  ));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;в генераторе (если вы используете его в backend) generator.yml укажите class в атрибутах&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;    config:&lt;br /&gt;      actions: ~&lt;br /&gt;      fields:&lt;br /&gt;        text:  { label: &#39;Текст&#39;, attributes: { class: &quot;tinyMCE&quot; } }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;еще обсуждение &lt;a href=&quot;http://forum.symfony-project.org/index.php/t/18293/&quot;&gt;здесь&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/3237339801534369977/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/3237339801534369977' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3237339801534369977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3237339801534369977'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2009/06/sfwidgetformtextareatinymce.html' title='Правильное использование sfWidgetFormTextareaTinyMCE'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37345659.post-3857245966501749304</id><published>2009-06-16T14:55:00.004+04:00</published><updated>2010-05-11T13:32:39.916+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mysql"/><title type='text'>Как заставить mysql5 использовать нужный вам default-character и collation</title><content type='html'>Для начала посмотрите что у вас есть&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;SHOW VARIABLES LIKE &#39;character_set%&#39;;&lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;| Variable_name            | Value                      |&lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;| character_set_client     | utf8                       | &lt;br /&gt;| character_set_connection | utf8                       | &lt;br /&gt;| character_set_database   | utf8                       | &lt;br /&gt;| character_set_filesystem | binary                     | &lt;br /&gt;| character_set_results    | utf8                       | &lt;br /&gt;| character_set_server     | utf8                       | &lt;br /&gt;| character_set_system     | utf8                       | &lt;br /&gt;| character_sets_dir       | /usr/share/mysql/charsets/ | &lt;br /&gt;+--------------------------+----------------------------+&lt;br /&gt;8 rows in set (0.00 sec)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;По умолчанию Value=latin1&lt;br /&gt;&lt;br /&gt;Теперь вы хотите чтобы все клиенты mysql сразу использовали нужную ва кодировку:&lt;br /&gt;utf8,cp1251 или koi8r&lt;br /&gt;&lt;br /&gt;Нужно добавить в файл my.cnf&lt;br /&gt;/etc/mysql/my.cnf&lt;br /&gt;&lt;br /&gt;Слудущие переменные:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;[client]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;[mysqld]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;default-collation=utf8_general_ci&lt;br /&gt;character-set-server=utf8&lt;br /&gt;init-connect=&#39;SET NAMES utf8;&#39;&lt;br /&gt;collation-server=utf8_general_ci&lt;br /&gt;[mysql]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;После изменений перезагружайте сервер.&lt;br /&gt;/etc/init.d/mysql restart&lt;br /&gt;&lt;br /&gt;Если не работает еще раз проверьте что у вас происходит:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;SHOW VARIABLES LIKE &#39;character_set%&#39;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;проверьте кодировку базы данных:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;mysql&gt; show create database yourdatabase;&lt;br /&gt;+-------------+----------------------------------------------------------------------+&lt;br /&gt;| Database    | Create Database                                                      |&lt;br /&gt;+-------------+----------------------------------------------------------------------+&lt;br /&gt;| yourdatabase | CREATE DATABASE `yourdatabase` /*!40100 DEFAULT CHARACTER SET utf8 */ | &lt;br /&gt;+-------------+----------------------------------------------------------------------+&lt;br /&gt;1 row in set (0.00 sec)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Кодировка по умолчанию для создания таблиц наследуется.&lt;br /&gt;&lt;br /&gt;Можно еще проще для ubuntu (10.04):&lt;br /&gt;создать файл, например /etc/mysql/conf.d/mysqld_charset.cnf&lt;br /&gt;с текстом:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;default-collation=utf8_general_ci&lt;br /&gt;character-set-server=utf8&lt;br /&gt;init-connect=&#39;SET NAMES utf8;&#39;&lt;br /&gt;collation-server=utf8_general_ci&lt;br /&gt;&lt;br /&gt;[mysql]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;и перезапустить mysql</content><link rel='replies' type='application/atom+xml' href='http://broderix.blogspot.com/feeds/3857245966501749304/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/37345659/3857245966501749304' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3857245966501749304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37345659/posts/default/3857245966501749304'/><link rel='alternate' type='text/html' href='http://broderix.blogspot.com/2009/06/mysql5-default-character-collation.html' title='Как заставить mysql5 использовать нужный вам default-character и collation'/><author><name>Kirill Danilov</name><uri>http://www.blogger.com/profile/03596951512669857288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry></feed>