Сообщения

Сообщения за май, 2011

Error #1054: Unknown column 'Array' in 'where clause

Изображение
Наступаю на эти грабли не в первый раз, и что-то подсказывает мне, что не в последний.  Стыдно конечно, но кто из нас не пытался запихнуть массив PHP в sql-конструкцию WHERE IN ? ) Правильный путь: $sql = "SELECT SUM(cost) FROM task "         . "WHERE task.idorder IN (" . implode(',', $array) . ")";
Абстракция - один из главных способов борьбы со сложностью реального мира. - Стив Макконнелл, "Совершенный код"

PHP и MySQL - основные функции

Изображение
Соединение с сервером. mysql_connect  - открывает временное соединение с сервером, т.е.соединение будет автоматически закрыто после завершения скрипта. mysql_pconnect  - открывает постоянное соединение с сервером, т.е. соединение не будет закрыто после завершения скрипта. Позволяет снизить нагрузку на сервер при большом количестве SQL-запросов. Важно: использование данной функции возможно только в том случае, когда PHP установлен как модуль. Пример настройки PHP на сервере Apache в режиме mod_php: 1) Добавить в httpd.conf   в  разделе загрузки модулей: LoadModule php5_module "C:/php/php5apache2_2.dll" 2) Добавить в httpd.conf в блок <IfModule mime_module>: AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps mysql_close   - закрывает временное соединение с сервером. mysql_ping  - проверяет соединение с сервером. Если результат false - предпринимается попытка восстановить соединение. Соединение с базой данных. mysql_select

Online Tools

Изображение
codepad  - выбираем язык программирования (С++, PHP, Ruby, Lua и т.п.), пишем код и смотрим что получилось. Отличная штука, когда нужно сделать это по-быстрому. Кроме посмотреть, можно также сохранить, загрузить, поделиться. Flex Style Explorer  - позволяет исследовать влияние случайных значений параметров стилей на внешний вид Flex-компонентов. Т.е. выбираем из списка тот или иной компонент интерфейса и выставляем параметры стиля в те или иные значения. Кроме посмотреть, можно также сохранить настройки в виде CSS. md5(); - возвращает хеш строки. Или строку из хеша.    RegExr  - верный инструмент для тестирования регулярных выражений. Rubular  - редактор регулярных выражений в среде Ruby. Генератор HTML + CSS шаблонов  - жертвуем 5 бесценных секунд нашей жизни на выбор основных параметров макета сайта (ширина, шапка, сайдбары и т.п.) и получаем в награду архив "содержащий 2 файла: HTML и CSS, представляющие из себя базовую разметку (каркас) для вашего будущего сайта&qu

Конвертируем Ruby-приложение в exe

Изображение
Exerb  - утилита от японского программиста  Yuya Kato. Скачиваем, распаковываем и выполняем в командной строке setup.rb. Теперь попробуем что-нибудь упаковать в exe. Переходим в директорию Ruby-проекта, где у нас к примеру находится скрипт test.rb и выполняем в командной строке:  exerb test.rb  Помимо скриптов, exe-файл содержит среду Ruby, таким образом скрипт без проблем запустится в системе, где  Ruby  не установлен.  Единственное, что не удалось при тесте Exerb - запустить приложение Ruby + Qt, но с этой задачей без проблем справилась вторая утилита -  RubyScript2Exe - от Erik Veenstra. Э та утилита представляет из себя один единственный скрипт. Выполняем его в командной строке, передав в качестве аргумента название файла, который хотим упаковать в exe. RubyScript2Exe не только прекрасно справляется с упаковкой сложных проектов, но и имеет великолепную документацию . 
Явные требования помогают гарантировать, что функциональность системы определяется пользователем, а не программистом.  - Стив Макконнелл, "Совершенный код"

Из XML в ArrayCollection : Error #1034: Type Coercion failed )

Изображение
Ошибка возникает при чтении данных  в ArrayCollection   из xml-файла, который содержит только один узел . В этом случае данные передаются не в виде Array, но в виде Object -  отсюда и недоразумение. Чтобы избежать ошибки - вводим проверку на тип полученных данных: if  (event.result.nodes.node is ArrayCollection) {           ar =  event.result.nodes.node; } else if  (event.result.nodes.node is ObjectProxy) {           ar = new ArrayCollection(ArrayUtil.toArray(event.result.nodes.node)); }

Как сменить пароль root в MySQL

Изображение
Открываем my.ini ("C:\Program Files\MySQL\MySQL Server 5.1") и добавляем в конце файла строку " skip-grant-tables ". Перезапускам сервис MySQL. Заходим в консоль, жмем Enter вместо пароля и выполняем запрос: mysql> UPDATE mysql.user SET Password=PASSWORD(’new password’) WHERE User=’root’; mysql> FLUSH PRIVILEGES; Открываем my.ini и удаляем строку "skip-grant-tables". Перезапускам MySQL.

Резервное копирование базы данных по расписанию

Изображение
Задача : а) в назначенный час запустить резервное копирование mysql-базы данных, б) переслать файл дампа по электронной почте. И, конечно, все это должно произойти без нашего участия, т.е. само по себе. Что нам понадобится: PHP 5 - для выполнения скрипта; Task Scheduler - он же "планировщик"; mysqldump - утилита для создания дампа mysql-базы данных; Swift Mailer - PHP-библиотека для работы с почтой. Резервное копирование.  Для запуска mysqldump воспользуемся php-функцией exec, в которую в качестве аргумента передадим строку с параметрами вызова mysqldump (подробнее о mysqldump тут ). $q = "mysqldump -uroot -ppass database > "; $file = "d:/backup-" . date("d-m-Y") . ".sql"; exec($q . $file); Отправка дампа по электронной почте . Пересылать дамп будем через smtp.mail.ru. Дописываем в скрипте: require_once 'Swift-4.0.6/lib/swift_required.php'; $transport = Swift_SmtpTransport::newInstance('smtp.inbox.ru', 2