Перейти к содержимому

Последние записи

15
Дек

Заметки о Болгарии

В этом году мне удалось поехать отдохнуть в Болгарию, на курорт «Золотые пески». Я, конечно же, не мог не взять с собой камеру и фотик, чтобы запечатлить на память какие-нибудь интересные достопримечательности и вообще впечатления. Ими и спешу поделиться с вами (хоть и спустя пару месяцев 🙂 ).

ПодробнееRead more

1
Дек

Администрирование linux из-под Enterprise Manager Grid Control 11g

В очередной раз ковыряясь в Oracle EM Grid Control, и попав в раздел администрирования хоста, увидел что для управления сервером надо поставить какой-то там YAST и скрипты. Ну и все-таки решил посмотреть какие же возможности тут есть. Поэтому если вам вдруг захотелось поадминить linux не из-под обычной консоли, а прямо из EM Grid Control, то вот небольшая инструкция как легко и просто это сделать. Может оно конечно уже и не актуально в свете выхода EM 12c, но вдруг кому-то пригодится.

ПодробнееRead more

9
Ноя

Hint: Включение отладочного меню в Safari@MacOSX

Всем привет!
Наткнулся тут в одной презентации про веб-разработку в webkit-based браузерах на возможность включения дополнительного меню откладки в Safari. Включил. Там есть много интересного! Если вы не знали, то вот как это можно быстро сделать. Открываем консоль и меняем один параметр Safari

Вот как выглядит это меню.

17
Окт

Сборка PHP 5.3.x под MacOS X 10.6 с поддержкой iconv

Тот, кто заходил/читал мой блог раньше, скажет: «Кажется, я уже это видел». И будет прав. Давным давно я уже писал пост о том, как скомпилить php на MacOS X с поддержкой oracle, iconv и прочих библиотек. Но время идет, уже давно вышли новые версии и php и macosx, а проблема все остается нерешенной, правда пути ее решения несколько изменились.
Не буду рассказывать как включить поддержку Oracle в php, про это вы можете прочитать в моем старом посте:
Настройка Apache+PHP+MsSQL+Oracle на Mac OS X Leopard
, лучше расскажу как решить эту надоевшую уже проблему сборки php 5.3.[5678] с поддержкой iconv.

ПодробнееRead more

17
Окт

Makefile – missing separator. Stop.

После очередного апдейта безопасности MacOS X у меня в очередной раз слетел пых с ораклом. Во время шаманств при сборке пыха из сырцов, дабы скомпилить его с поддержкой iconv & oci8 столкнулся с вот такой проблемой:

Возникло это после ручной правки Makefile. Чего в обычной жизни делать не требуется. Но при сборке php под mac os x это неотъемлемый шаг. Если вы столкнулись с такой же проблемой, то знайте, что лечится она очень просто — надо использовать табы вместо пробелов там где требуются отступы. Так что просто внимательно следите за тем, что меняете. Меняйте только сами команды, а не отступы.

15
Авг

Использование php-doc & doxygen для генерации php-документации

Написание документации к коду — задача не самая приятная и радостная, но если вы делаете большой проект и/или участвуете в командной разработке, то, я бы сказал, это вещь просто даже необходимая. Если у вас много разных интерфейсов, классов, функций, методов, с различными парметрами и выходными данными, и с этим приходится работать более чем одному разработчику, очень здорово иметь под рукой описание всех этих самых классов, их атрибутов и параметров, а не бегать каждый раз к разработчику и спрашивать какой параметр что значит. Это ни в коем случае не отменяет того, что сами названия классов, методов и параметров должны иметь осмысленные имена, но не об этом сейчас речь. Сейчас мы поговорим о документировании исходных кодов на php. Я для этих целей использую такой инструмент как Doxygen.

ПодробнееRead more

18
Июл

Mysql: SPLIT function и правильный подсчет количества символов.

Столкнулся на днях с задачкой разделения строки состоящей из нескольких значений, разделенных некоторым разделителем, на отдельные значения на уровне базы данных. Во всех приличных БД все это уже есть из коробки, а вот в MySQL нет. Пришлось написать самому. В общем-то в нете полно решений, но во всех, что я видел, есть один большой недостаток, или даже баг. Заключается он в том, что везде требуется вычислять длину подстрок и делается везде это через функцию LENGTH(). Однако если внимательно прочитать описание этой функции, то можно узнать, что она считает длину строки в БАЙТАХ! То есть если вы используете какую-либо двухбайтную кодировку для хранения строк, например UTF-8 (* вообще станно, если вы до сих пор используете какую-то другую 🙂 *), то эта функция вернет совсем не тот результат, который вы ожидаете. Для того, чтобы избежать этой проблемы, есть другая функция CHAR_LENGTH(), которая делает именно то, что и надо — считает длину строки в символах. Что же до функции разделения строки на значения, то вот мой вариант:

На входе 3 параметра: сама строка, строка-разделитель и номер позиции значения. Если такого разделителя нет, вернется вся строка, позиция значения считается с 1. Вот примеры:

That’s all folks!

11
Июл

Основные темы для изучения linux

Что-то давно я ничего не писал в свой блог. А сегодня пятница, за окном льет как из ведра, работать уже лень… Подумал, что самое время что-то написать. Был у меня не очень давно разговор с товарищем на тему администрирования *nix-систем. Обсуждали мы вопрос того, какие темы/области/знания в разрезе *nix-систем хорошо бы знать, чтобы успешно устроиться на работу системным администратором. Я обещал составить небольшой список тем, которые надо освоить, чтобы можно было считать себя более-менее нормальным админом *nix (ну вероятнее всего linux).

ПодробнееRead more

26
Май

Что и где почитать про JavaScript

Есть у меня несколько товарищей, который планируют начать или уже начали изучать JavaScript. Один из них поинтересовался у меня, что можно почитать/посмотреть, какие дельные книжки есть для начинающих, да и вообще какие ресурсы заслуживают внимания. В результате чего, я подумал набросать такой небольшой списочек с документацией/статьями и видео, с которыми по моему мнение обязательно надо ознакомиться. Если этот список окажется полезен кому-то еще — что ж, это будет здорово.

Начем со статей, книг, и прочих текстовых ресурсов.

  • JavaScript Garden. Очень классное руководство от Ivo Wetzel и Zhang Yi Jiang. Спасибо Антону Шевчуку и другим людям, благодаря им на свет появилась и русская версия.
  • Так же неплохое руководство для начинающих под названием: «Eloquent JavaScript. A Modern Introduction to Programming» от Marijn Haverbeke.
  • Небольшая презенташка-демка от Джона Ресига (создатель библиотеки jQuery если что) под названием: «Learning Advanced JavaScript». Там коротко рассказано об основных понятиях JavaScript, таких как функции, область видимости, типы, наследование, прототипы, и о том, какими способами можно эффективно работать с этими вещами и какие могут быть подводные камни.
  • Douglas Crockford’s Javascript — это вообще один из главных ресурсов по JS от такого великого человека, как Дуглас Крокфорд (это он придумал json и сделал его таким популярным). Там он публикует все свои статьи и видео-доклады. На этом ресурсе можно найти теоретические статьи про JavaScript, общие размышления о том, как надо программировать на JS, некоторые взгляды на проектирование и разработку веб-приложений и многое другое. Крайне рекомендую периодически туда заглядывать, ну или просто следить за новыми публикациями Крокфорда.
  • jQuery Fundamentals от Ребекки Мёрфи. Это руководство относится к фреймворку jQuery, однако там так же имеется и теоретическая часть и много примеров.
  • Ну и конечно же javascript.ru. На этом ресурсе много документации, руководств и просто интересных статей. Спасибо Илье Кантору.

Ну вот. Для начала хватит. Если прочитать и переварить это все — уже будет хорошее представление и понимание о том, что такое JavaScript и с чем его едят 🙂

Перейдем к видео ресурсам.

  • Один из основных видео-ресурсов по веб-разработке — это YUI Theater от Yahoo! Здесь можно найти почти все видео Дугласа Крокфорда, а так же Николаса Закаса, а так же другие интересные доклады.
  • И снова Douglas Crockford’s Javascript, раздел Video. Обязательное к просмотру видео: JavaScript, The Theory of the Dom, Advanced JavaScript и конечно же серия «On JavaScript».
  • Много полезных и интересных докладов можно найти на YouTube’е в каналах разработчиков Google и каналах гугловских конференций. Например вот страничка с видео-сессиями с конференции Google I/O 2011.
  • Сайт Веб-стандарты содержит много интересных данных. Вот например видео с докладами с Web Standards Day 2010.

В общем-то этот список можно продолжать долго. Если подвести некоторый итог, то почти всегда все крупные ИТ конференции выкладывают видео в сеть, поэтому надо просто быть в курсе событий и смотреть видео, а еще лучше участвовать в таких конференциях лично.

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

Пожалуй, этого хватит для начала. Так что вперед! Успехов!

4
Май

MySQL и регистро-зависимость имен в MacOS X

Всем привет.
Столкнулся тут на днях со следующей проблемкой. Я работаю на Mac OS X, и поэтому все необходимое для разработки ПО у меня стоит на моем компе, тот же Апач, Пых (они вообще идут из коробки) ну и Майскуль.
Так вот, решил я для одного нового проекта заюзать MySQL Workbench. Это такая утилита, в которой можно построить UML-схему базы данных, все красиво разрисовать и потом слить эту структуру в конечную БД, так же есть Reverse Engineering. В общем, первое сливание текущей структуры из БД прошло гладко, а вот первая же заливка изменений в БД уже не получилась. Не смотря на то, что Workbench честно показывал изменения, после накатывания аптейта, он все равно продолжал считать, что все структуры разные. Дело в том, что я люблю называть таблицы красивыми именами, отражающими действительность, с заглавными буквами, разве что в дополнение к CamelCase стилю еще разделяю слова символом подчеркивания. Так вот после долгих изучений и изысканий обнаружилось, что установки по умолчанию в MySQL Server на Mac OS, не очень подходят для моего случая.

Как известно, в MySQL, база данных соответствует определенной директории на сервере, и каждая таблица хранится в виде файла (или нескольких в зависимости от движка). Поэтому регистро-чувствительность ОС играет немаловажную роль в обработке регистро-чувствительности при разрешении имен в базе данных. Это означает, что если ваш сервер на винде, то ему пофиг на регистр, в *nix-подобных системах же наоборот, регистр имеет значение, за исключением Mac OS, которая вроде как юникс, а файловая система там HFS+, которая не очень чувствительна к регистру.

В MySQL сервере есть 2 системных переменные которые имеют отношение к регистру имен, это lower_case_file_system и lower_case_table_names. Первая переменная отражает регистрочувствительность файловой системы, где расположено хранилище, оно может принимать всего два значения: OFF — фс чувствительная к регистру и ON — не чувствительна.
Вторая переменная, lower_case_table_names, отражает механизм, как происходит сравнение имен и способ их хранения. 0 означает, что имена сохраняются в том виде, в котором были заданы и сравнение чувствительно к регистру. При значении 1, имена таблиц хранятся в нижнем регистре и сравнение не чувствительно к регистру. В случае 2, имена хранятся как есть, но сравнение происходит в нижнем регистре.

По умолчанию эти переменные принимают вот такие значения на Mac OS X:

И вот такие на *nix (проверил на Linux/FreeBSD)

 

Если почитать описание этих переменных на сайте mysql (тут), то там написаны замечательные рекомендации по выставлению правильных параметров переменной lower_case_table_names. Если лень читать, то основная мысль: если вы используете InnoDB как основной движок, то поставьте везде этот параметр в 1.
Самый простой способ — это прописать эту переменную в файле конфигурации my.cnf в секцию [mysqld] и рестартануть Mysql сервер.

В общем-то я не открыл ничего нового, все это можно найти в офф. документации на сайте, статья: Identifier Case Sensitivity дает более развернутое описание этой ситуации. Рекомендую прочитать.
Вот и все!