?

Log in

Этот пост я на самом деле написал для себя, чтобы в следующий раз не тратить время. Периодически возникает необходимость сделать поиск с помощью регулярного выражения и, например, negative lookahead. Допустим, нужно найти строку в которой сразу после "ID " не должно быть "777" или "888". Регулярное выражение с использованием negative lookahead будет выглядеть так: "ID (?!777|888)" (без кавычек). Однако ни библиотека TRegExpr, используемая автором Total Commander, ни Notepad2, используемый у меня по умолчанию в качестве простого редактора текста, не поддерживают lookarounds. В такие моменты выручает Notepad++, который это поддерживает.

Winamp & CUE

Каждый раз когда заново настраиваю систему забываю, как сделать, чтобы winamp понимал .cue файлы (причем, именно так, как мне удобно). Поэтому оставлю для себя напоминалку:

1) Удостоверяемся, что Winamp установлен вместе с Media Library (т.е. Media Library должна быть выбрана при установке Winamp'а)

2) Качаем и устанавливаем плагин для винампа CUE Navigator Winamp Plugin (пробовал разные плагины, этот мне кажется наиболее удобным и безглючным)

3) В настройках General Preferences -> Titles -> Advanced Title Formatting вставляем такую строку форматирования заголовка для версии плагина 0.8:

$if(%submaintitle%,%submainartist% – %submaintitle%: $dec(%subnum%,2)/$dec(%subnumtotal%,2). [%subartist% - ]%subtitle%,[%artist% - ]$if2(%title%,$filepart(%filename%)))

или такую для будущих версий (теги %subtime% и %sublen% еще не поддерживаются в последней официальной версии 0.8, но будут поддерживаться в будущих версиях):

$if(%submaintitle%,%submainartist% - %submaintitle%: $dec(%subnum%,2)/$dec(%subnumtotal%,2). [%subartist% - ]%subtitle% '('%subtime%/%sublen%')',[%artist% - ]$if2(%title%,$filepart(%filename%)))

4) В настройках Media Library -> Local Media в панели Watch folders ставим галочку Automatically add played files.

Всё. Теперь треки с .cue файлами будут отображаться типа "The Depeche Mode - The Best of: 01/18. Personal Jesus".
PHP Warning: mysqli_real_connect() : MySQL server has gone away
Вот такую вот ошибку я начал видеть несколько раз в день после перехода на PHP 5.3 под Windows.
Длительные поиски в гугле ни к чему не привели, но вот в чем оказалось дело в нашем случае:
PHP использует одну из двух библиотек для работы с mysql: MySql Client Library (libmysql) или MySql Native Driver (mysqlnd). Под windows до версии php 5.3 (не включая) использовалась библиотека libmysql. В версии php 5.3 по умолчанию используется mysqlnd и нет версии php 5.3 скомпилированной с использованием libmysql.
Вышеописанная ошибка появилась именно в php 5.3 с использованием mysqlnd. В php 5.2 где использовалась libmysql этой проблемы не было, но она появилась сразу же после апгрейда. При установке сайта на linux хостингах с php 5.3 такой проблемы не наблюдалось.
Так что если у кого вылазиет такая ошибка - вполне возможно, что это не баг в вашем коде, а просто вы используете php 5.3 под Windows.

Время от времени на форумах по программированию всплывает вопрос о том, что такое хороший дизайн проекта. В одной из наиболее любимых мной книг Agile Principles, Patterns, and Practices in C# - by Robert C. Martin автор приводит признаки плохого дизайна (если переводить более дословно – “запахи загнивающего проекта”). Эти признаки могут быть прекрасной основой для выведения признаков хорошего дизайна, что мы и сделаем в конце данного поста. Итак, начнём с рассмотрения признаков плохого дизайна.

Read more...Collapse )
После просмотра фото из океанариума в Токио решил поделиться своими фотографиями из Бангкокского океанариума.
Siam Ocean World - самый большой океанариум в Юго-Восточной Азии. Находится он в Бангкоке, в торговом центре Siam Paragon. Площадь океанариума - 10000 кв.м., а общий объем воды в аквариумах - около 5 миллионов литров.

01. На входе в океанариум можно увидеть вот такую вот вывеску, с приветствием и на русском языке. А после покупки билетов нас спросили откуда мы, и по-русски ответили "спасибо" :)

Read more...Collapse )

The Kinks - Village Green

Недавно кажется второй раз посмотрел фильм "Типа крутые легавые" (Hot Fuzz в оригинале), кстати рекомендую фильм - хорошая комедия, так вот понравилась мне пара песен из фильма. Одна из них The Kinks - Village Green. The Kinks - это английская рок-группа, игравшая в 60-х - 90-х годах прошлого века. Песня меня довольно таки зацепила, и я решил поделиться открытием, может быть кому-то еще понравится :)

Read more...Collapse )
На заметку:

Если сначала скопировать куда-нибудь полностью working copy, после чего удалить каталог с working copy и сделать свежий check out, то могут всплыть некоторые проблемки. Например, может оказаться что в репозитории не хватает какой-то 3rd party dll из-за чего проект не билдится, или что какой-нибудь автотест не проходит, т.к. использует в работе каталог, который по умолчанию после check out'а не создается.

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

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

SomeMethod(xxx someArgument)
{
  ...
  switch(someArgument.SomeEnumProperty)
  {
    case xxx:
      ...
    case yyy:
      ...
    default:
      throw new ???????????????? // какой тип?
  }
  ...
}

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

Ситуация должна быть понятна, так что вернемся к главному вопросу: какой тип исключения выбрать в такой или в аналогичной ситуации?
Read more...Collapse )
Случайно набрел на интересный сайт, называемый JSFIDDLE:
http://jsfiddle.net

На нем можно писать html/css/js-код, проводить автоматическую валидацию javascript-кода, и сразу же видеть результат. При этом можно указать используемый javascript фреймворк, например jQuery (любую версию), которым можно будет пользоваться в коде, т.е. не придется закачивать jQuery.js.
В общем, очень удобно. Далее код можно сохранять, показывать другим, обновлять.

Краткое описание проекта из интервью с разработчиком сайта:
One of the great code sharing tools was pastebin. It was simple and straight-forward but quickly grew out of its usefulness. That's where jsFiddle comes in. jsFiddle is a fresh tool that not only displays the code and highlights it but also executes its code within the browser for even better debugging.
...
JsFiddle is a playground for web developers, a tool which may be used in many ways. One can use it as an online editor for snippets build from HTML, CSS and JavaScript.

The code can then be shared with others, embedded on a blog, etc. Using this approach, JavaScript developers can very easily isolate bugs. We aim to support all actively developed frameworks - it helps with testing compatibility.

Вот, например, ненавязчивое мигание ссылки, сделанное с помощью jQuery:
http://jsfiddle.net/nKFEh/1/

Unicode in a Nutshell

Вкратце о юникоде.


Disclaimer: Данный пост не является и не имеет цели быть исчерпывающим руководством по unicode. Цель поста в том, чтобы читатель быстро получил минимальный набор знаний о unicode. На текущий момент данный пост является черновым вариантом, который позже будет исправлен и доработан.

Думаю не секрет, что до сих пор многие разработчики не до конца понимают что такое юникод и как он устроен. У них есть только отдаленное представление, что-то типа "Ну, юникод - это новая кодировка, используется для того, чтобы отобразить любой символ, для хранения одного символа используется 2 байта". Такое представление о юникоде мягко говоря не совсем правильное.


Итак, что же такое unicode?


Read more...Collapse )