среда, июня 10, 2009

2040

Когда запасы нефти начали иссякать, большинство свалок превратилось в рудники по добыче полимеров, открылись пункты по сдачи пластика, а водка делающаяся на основе нефтяных отходов сразу стала элитной*

* Сейчас большая часть водки производится именно на основе невтяных отходов

2020

С развитием космического туризма набрало невероятную популярность порно в невесомости, а на Луне оказалось скучнее чем в Турции.

вторник, мая 26, 2009

Из серии бесполезных фактов

Только что опытным путем было доказано, что в оракле работает такая конструкция

update table set value1 = rownum where id >3


Только непонятно как оно сортирует строки.

суббота, мая 02, 2009

Вести с полей

На работе внедрили новую смс платформу. Собственно говоря мы ее не просто внедрили, мы ее перед этим написали :) Кстати написали менше чем за месяц что практически нереально и что еще более нереально при таком темпе - обошлись практически без временных черезжопных решений.

Это был один из самых сложных моих проектов (работали по 10-12 часов в сутки) и я рад что я его сделал.

У Тома Кайта есть известная фраза по поводу написаний приложений под Оракл: "... все что можно я делаю средствами SQL, если задачу нельзя решить средствами SQL я использую PL/SQL, если задачу нельзя решить средствами PL/SQL я использую Java, если и средств Java недостаточно, то я использую Pro*C ...".

Так вот во время написания проекта я дошел до стадии "нельзя решить средствами PL/SQL" - интересно, когда нибудь, я дойду до стадии "если и средств Java недостаточно".

Вообщем я горд и доволен собой.

А еще у меня скоро день рождения и я собираюсь подарить себе такую штуку



среда, марта 25, 2009

Сортируем как хотим

Сегодня, экспериментальным путем, выяснилось, что decode можно ставить даже в order by.
Т. е. запрос вида
select * from tbl1 order by decode(:order_param, 1, param1, 2, param2, param3)
будет работать. Причем на "стоимость" запроса это не повлияет так как сортировка делается после выборки данных.

К сожалению используя этот способ нельзя менять направление сортировки с asc на desc. Но в таком случае может помочь аналитическая функция row_number()
select * from
(select param1, param2, param3, row_number() over (order by decode(:param_num, 1, param1, 2, param2, 3, param3)) rn from tbl1)
order by decode(:order_destination, 'desc', 1/rn, rn)
В этом примере, с помощю функции row_number() мы присваевам каждой строке номер который она получила бы в отсортированном массиве. А в обрамляющем запросе мы или просто сортируем запрос по этому столбцу чтобы получить прямую сортировку, или сортируем по 1/rn и получаем обратную сортировку

Внимание: второй способ я еще не проверял так что он может быть невполне работоспособен, хотя в самом принципе я уверен

P.S. наконец набрал в гугле sql syntax highliter и нашел подсветку для запросов, теперь форматирование запросов будет красивое и одинаковое :)

ER 2.0

Визуализатор баз данных онлайн. Правда заточен под MySql, но все равно интересно.

вторник, февраля 24, 2009

воскресенье, февраля 15, 2009

Сумасшедшие идеи

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

Вот небольшая выборка, тех записией которые показались мне интересными после повторного прочтения:

1. Чайник который сам генерирует воду электролизом или еще каким то зом. Чтобы вода не была дистиллированной предусмотрен специальный минеральный картридж.

2. Приложение, через которое можно было бы смотреть любую документацию в нормальном виде. Привет, Оракл! Про опенсорс вообще молчу

3. Метод работы со слоями при создании интерфейсов - многогранник на каждой грани которого располагается определенный слой

4. В SQL редакторе - кнопка save as view

5. В мессенджерах - возможность отправить голосовое сообщение или видеособщение.

Апдейт пословицы

Из SEO в СEO

понедельник, января 26, 2009

Невероятные совпадения

Читай между строк табов:



четверг, января 22, 2009

Эксперементы с Маком 2

В Википедии я прочитал что tcl/tk (его почему то по русски его назвают тактиль) как то особо хорошо интегрируется с SQLite и решил его использовать (думал задача стоит быстро написать прогу, а не Питон выучить). Это оказалось ошибкой: в чем его особая интеграция с SQLite я так и не узнал, а повозится мне с ним пришлось.
SQLite - встраеваемая реляционная база данных. Простая и симпатичная. Единственное что в ней напрягает, то что она позволяет в поля любых типов записывать данные любых типов, а сами типы полей - просто подсказки, чтобы не забыть какие данные ты собирался там хранить изначально. Но тем не менее данные хранятся в таблицах выбираются селектом, а вставляются инсертом, а для настольных приложений больше обычно и не надо.
Вообщем тактиль оказался достаточно простым скриптовым языком, инфы по нему я нашел очень мало, а на превращение скриптов в бинарник ушло больше времени, чем на написание программы. Превращение скриптов в бинарник достаточно нетривиальное. оно основано на загонянии скриптов и интерпретатора в один файл, который представляет из себя виртуальную файловую систему VFS. Для того, чтобы создать бинарник нужно скачать или собрать tclkit (интерпретатор в одном файле), из скриптов программы собрать starkit, а потом все это собрать в starpack.

Кстати, неоценимую помощь в собирании программы в бинарник оказла програмка Starpacker, которая очень облегчила этот процесс.

Для себя я определил отношение к тактилю так: пользоватся можно, но что-то совсем не хочется.

Ну и собственно что у меня получилось. Программа отображает статус билета (билет валиден, билет невлиден, билет валиден но уже погашен) в виде дорожных знаков и ведет статистику. Программа прошла боевое крещение на новый год, в МВЦ


Эксперимент с Маком закончен, дальше будет эксперимент с Кокой (тоже на Маке)

вторник, января 20, 2009

Эксперименты с Маком :)

Недавно мне предложили написать под Мак несколько десктопных приложений. Взяться за это было достаточно рисковано, потому что настольные программки я последний раз писал на Делфи 6, на первом курсе, но любопытство победило.

Первая задача была написать приложение, для контроля билетов, которое проверяло бы штрих код билета на валидность. На входе стоит чувак с ноутом и сканером штрих кодов и сканирует штрих коды билетов, а задача программы определить валидный ли штрих код и не проходили ли уже по этому билету.
Кстати, оказывается считыватель штрих кодов определяется как юсб клавиатура. При считывании штрих кода он делает вид, что нажимает на кнопки. За счет этого обеспечивается кроссплатформеность и отпадает нужда возится со считыванием битов, через юсб. По моему очень остроумное решнеие.
После этого начались муки выбора технологии на которой писать, несмотря на то что задача стояла простая - сроки поджимали. Требования были простые: чтобы, во первых, работало на Леопарде, во вторых на ХР. Из-за сроков я сразу отбросил такие емкие технологии как Java. Решил взять что-то простое. Выбор был между Python и Tcl/Tk. Python мне всем нрависля и я уже почти выбрал его, как ...

(продолжение следует)