четверг, 13 декабря 2012 г.

Многострочный INSERT в VARCHAR поле

Сегодня портировали базу в IBM DB2, встряли на insert'ах в текстовые поля: varchar'ы и blob'ы, решение простое - нужно квотировать символы #10 и #13 как '||chr(10)||' и chr(13) соотвественно, чтобы весь insert был в одну строку. Без единого разрыва, как говорится

пятница, 5 октября 2012 г.

вперёд

Создаем новый проект, сделано 99%, до окончательного пуска осталось от пары недель до бесконечности, это для тех кто понимает.

Надеюсь все срастется, проект реально неплох.

понедельник, 10 сентября 2012 г.

Как сортировкать массивы в PHP по нескольким полям

Задался тут вопросом как сортировать в PHP массивы по нескольким ключам, поискал (не сильно долго в инете) ничего не нашел, а потому придумал свой вариант.

Все очень просто, и делается за три прохода:
1. Пробегаете ваш массив и одновременно создаете новый (tmp), где ключ - ключ в исходном массиве, а значение склейка ключей. Например для строковых $a.'-'.$b.'-'.$c, а для числовых можно воспользоваться умножением.
2. Сортируете полученный массив sort или rsort
3. Создаете новый массив пробегая по отсортированному tmp, создавая массив по заданному значению из tmp и значению из исходного массива.

Это возможно лишь потому, что PHP при создании нового элемента массива элемент точно добавляется в конец, в Perl это бы не прокатило. Там он бы попал по хешу для сортировки. Да и сортировать в Perl'е гораздо легче, следует лишь указать любую пользовательскую функцию перед sort. Да и Perl круче PHP, но пост совсем не про это....

пятница, 7 сентября 2012 г.

Firebird & x64 & Linux

А вернее Suse, значит на сервер наш администратор поставил deleveper пакеты Firebird и мы там ж, стали компилить наш проект. Он скомпилилися (ну вернее скомпилился после указания пару флагов компилятору про точность - но это gcc и сам отлично показывал).

Но затем при некой выборке из БД, выдавал какую-то ересь, причем полезли в дебри заголовочных файлов isbase.h нашли там ISC_INT64.

Для спецов скажу - там не учитывается x64 режим, нужно ставить еще define на просто int.

Для не спецов скажу - это пиздец товарищи когда ставишь delevoper пакет ожидаешь что он не будет содержать ошибки.

вторник, 7 августа 2012 г.

Случайно переключился с cp1251 на cp866 набрав слово "его".
Задумался над смыслом кодировки....

четверг, 2 февраля 2012 г.

Нашел на баш.орг.ру :)


< emilevictor> .... почему? я не понимаю. если я делаю указатель x и присваиваю ему 0, то почему *x - не 0?
< ciaranm> emilevictor: указатель указывает на адрес, в данном случае 0x0. а *x - это данные по этому адресу, скорее всего равные "segmentation fault"


:)

понедельник, 30 января 2012 г.

между делом

Помогал инет-знакомому сделать кой-какой модуль на Flash (давно уже, где-то год назад), тот наконец-то проект запустил генеалогическое древо семьи своими руками.

Знайте - там есть частичка меня :)

понедельник, 23 января 2012 г.

Центрирование при зуме(zoom) или зачем нужна математика

На новом проекте делали масштабирование и нужно было сделать что при изменение масштаба центр эээ вселенной картинки оставался на месте (т.е. в центре).

Реализовывал все это наш новенький программист. Он из тех, кто считает, что вузы нафик не нужны (кстати недавно узнал, что вуз теперь не аббревиатура, а потому пишется не заглавными), так вот он долго втыкал в функцию центровки объекта по средине экрана.
Скажем: off1 = x*sw*kof - scrX/2, затем думал.
Думал от прошлой среды то понедельника, вернее говорит еще все выходные думал и выдал на формулу:
off1 = (sw*kof1*off2+sw*kof1*scrX/2 - (scrX/2)*sw*kof2)/(sw*kof2)
На мой вопрос, а можно ли ее сократить - ответил, что нет.

Новая формула для центрирования при изменения масштаба сейчас такая: offX = (newkof*offX + (newkof-oldkof)*screenX/2)/oldkof;

Да-да, простое математическое деление. С другой стороны, зачем вузы если и в школе было не все понятно?