Archive for the ‘Technology’ Category

Ruby : используйте libxml

Октябрь 11, 2011

Если вам надо обрабатывать довольно большие xml файлы. И делать надо это часто. То тогда не используйте REXML. Используйте ruby-libxml.

Он намного быстрее и, как мне кажется более лаконичен. У меня была задача на основе одного большого XML файла нагенерить кучу html файлов с кросслинками. Так вот REXML работал так медленно, что генерил 166 файлов около 25 минут, а ruby-libxml справляется с этой задачей теперь за секунд так 5.

Вот пару статей, которые позволят быстро перейти на libxml с REXML

  • Converting from Rexml to libxml. Даже не знаю, что можно добавить. Из заголовка всё и так ясно.
  • Parsing XML with Ruby. Приведены примеры использования трёх либ для парсинга xml на Ruby. Можно визульально сравнить, какая из либ проще.

Кстати, весь переход я осуществил где то за минут так 30. А это где то 1.5 полная генерация из моего большого xml. Зато теперь я могу моментально все перегенеривать.

Реклама

Flash Help в FDT 3.5

Февраль 7, 2011

После того, как у меня полетел ноут, пришлось всё поднимать на новом. Так вот. Оказывается, что FDT 3.5 не умеет обрабатывать справку от CS5. На старом ноуте всё работало, потому что сначала там был установлен CS3, а только потом CS4.

Решить проблему помогла статья. Автор просто взял хелп от CS4 и выложил аккуратно запаковав :) .

Я ламер!

Февраль 4, 2011

На работе появилось несколько свободных минут. Читать ничего что то не хотелось. Решил пройти тест на quizful.net. Под руку попался «Java — Средний уровень».

Результат теста — не пройдет.

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

В итоге:

  • неверно ответил только на 2 вопроса.
  • узнал про java.util.prefs.Preferences (век живи, век учись)
  • подтвердилось, что я не сильно внимательный. Но это не беда. Современные IDE сразу подсветят такого рода косяки, так что я даже не обращу на них внимания а машинально исправлю.

Конечно обидно, но вряд ли кто-то будет писать такие «перлы» как в тестах, потому что такое еще и придумать то надо :)

jQuery autocomplete

Июнь 12, 2010

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

Одним из таких требований является организация так называемых «объеденённых» групп. Например, объединённая группа по немецкому состоит из представителей нескольких групп. Вот именно организация выбора группы или нескольких групп для создания занятия и было основной головной болью.

В jQuery 1.8 был добавлен «родной» autocomplete (раньше для этого использовались различные плагины). А в статье How to Use the jQuery UI Autocomplete Widget как раз и расписан нужный мне use-case. Прям бери и копипасть :)

Всё разжевано (не только исходники но и css), есть live example а так же подготовленный пак с исходниками.

Python красавец

Март 4, 2010

Вот так просто находим список простых чисел от 1 до N используя «решето» Эратосфена.

import math
# coding: UTF-8

def primes(N):
  sieve = set(range(2, N))
  for i in range(2, math.sqrt(N)):
    if i in sieve:
      sieve -= set(range(2*i, N, i))
  return sieve

print primes(100)

Magento install

Январь 20, 2010

Понадобилось мне тут проинсталировать Magento и написать для неё один плагин.

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

CREATE USER 'magento'@'localhost' IDENTIFIED  BY  '*******';
GRANT  USAGE  ON  *  .  *  TO  'magento'@'localhost' IDENTIFIED  BY  '*******';
CREATE  DATABASE  IF  NOT  EXISTS  `magento` ;
GRANT  ALL  PRIVILEGES  ON  `magento`  .  *  TO  'magento'@'localhost';

После установки начались проблемы. Дело в том, что магента пытается установить куки для «localhost», а браузеры этого не разрешают :) Поэтому надо устанавливать с хоста 127.0.0.1 (тот же localhost).

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

Uninstalling DB2

Ноябрь 25, 2009
по мотивам «Installing IBM DB2 for Linux, UNIX, and Windows transparently with your application«.

Uninstalling DB2 on Linux and UNIX

On Linux and UNIX, you need to perform the following steps, in this order:

  1. Drop all databases by entering the following command:
    DROP DATABASE database_alias.
  2. Stop the DB2 Administration Server by logging in as the DB2 administration server owner and issuing the db2admin stop command.
  3. Stop all DB2 instances by repeating the following steps for each instance you created:
    1. Log in as the instance owner.
    2. Severe all database connections by entering the FORCE APPLICATION ALL command.
    3. Stop the DB2 database manager by entering the db2stop command.
  4. Remove the Administration Server:
    1. Log in as root.
    2. Issue the command:
      /opt/ibm/db2/V9.5/instance/dasdrop.
  5. Remove DB2 instances by repeating the following steps for each instance you created:
    1. Log in as root.
    2. Issue the /opt/ibm/db2/V9.5/instance/db2idrop InstanceName command.
    3. Remove the instance owner’s user ID and group if you created them during installation and if they are used only by your program.
  6. Remove DB2. You must have root authority for uninstalling.
    • Use the db2_deinstall command in the root directory of the DB2 DVD or image.

Что я могу сказать. Столько дейтсвий я еще никогда не делал, чтобы сненсти что-нибудь в Linux :).

Кстати, это я уже второй раз сношу :) В первый раз я сделал всё по простому — просто снёс директорию с DB2 к чёртовой матери и всё. Но после этого при следующей установке DB2 немного корёжило. Он всё думал, что у меня есть еще одна версия :). Теперь же всё было сделано по феншую.

Microsoft Access Database using Linux and PHP

Ноябрь 24, 2009
По мотивам «Microsoft Access Database using Linux and PHP«

Я веду в ХТТ практические занятия по курсу «Базы данных и СУБД».  Название курса само по себе довольно странное, но речь сегодня не об этом. Так как я «второй» преподаватель и отвечаю только за практические занятия со вторыми группами, то мне нет необхожимости парится про содержание практических работ, это забота «первого» преподавателя. Но проверять их то мне, а это ой как неприятно. Надо:

  • носится от одного ко второму
  • быстро соображать, что же за задание и как его быстро проверить
  • указывать на ошибки в случае их обнаружения
  • проверять тщательно, чтобы не сдавали хартуру
  • слушать нытьё «А вот вчера у меня работало, а тут чего не хочет».

Короче, проблем хватает.

И тут я вспомнил про практику использования автоматических систем. Серега Курило в своё время написал систему для тестирования решений задач, написанных на Pascal, С, С++ и т.д. Признаюсь честно, я так и не смог её развернуть.

Но тут то у меня задача другая, мне надо проверить, как умеют детишки писать SQL запросы на выборку данных (пусть хотя бы это умеют, оставим DDL в покое). Так как это техникум и дети не особо сильны, то единственной понятной для них средой можно считать Acess. Переносимость файлов acess, обусловленная установленным практическ на всех компьютерах пакетом Microsoft Office, позволяет закрыть на все остальные недостатки.

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

Где разместить такую систему. Крнечно же на своём ноуте. Пришёл, врубил в сеть, дал детям линк… пусть «играются». Но у меня на ноуте не Windows :). Поэтому пришлось немного повозится, чтобы появилась возможность работать с Access файлами.

Я действовал практически так же, как и описано в статье. Но есть некоторые различия:

  1. Я устанавливал с репозитария Debian (а не скачиавал с сайтов) следующие пакеты
    • unixodbc
    • unixodbc-bin
    • libmdbodbc
    • php5-odbc
  2. Не использовал odbcinst -i -d -f. Вместо этого собственоручно модифицировал файлы. Сначала я попытался ODBCConfig. Но при первой же попытке создания он отругал меня, что я не root, и что он не может модифицировать файлы. Запустив его с правами root, наблюдал, как он падал при попытке создания записи ODBC драйвера или записи DNS.
  3. Создавал для файла System DNS, т.к. apache запускается из под root (не уверен точно).

Осталось только написать саму систему :) А что, конннектиться к MS Access базе уже умею.

BigDecimal

Июль 22, 2009

java-personСеголня я немного был шокрирован, когда результат BigDecimal.equals(BigDecimal) давал false, хотя я на 100 процентов был уверен, что числа одинаковые.

Оказывается, что два BigDecimal’а эквивалентны тогда, когда не только их значения равны, но и scale одинаковый.

В если хочется проверить на равенство не взирая на scale, то нужно использовать compareTo.

Вот так вот, так что читаем JavaDoc.

Java and SFTP

Июль 14, 2009

jscapeНедавно встала задача организовать «забирание» файлов по SFTP. Витя организовал тунель на своей машине, так что с помощью MC уже можно было походить по директориям, присмотреться :).

Осталось только выбрать либу для Java. Мною были найдены:

  • SSHTools. Не подошла по лицензионным соображениям. GPL использовать нельзя.
  • jscape. Платная. Хотя по идее деньги на покупку найти можно.

И тут «вылезает из кустов» Витя и предлагает использовать ganymed-ssh2 библиотеку.

С помощью NetBeans Maven Repository Windov я быстро его нашел и добавил к необходимому проекту.