Tuesday, May 29, 2007

30 Дней - 30 Приложений

Уже почти пол года назад один зарубежный товарищ начал (и через месяц закончил) каждый день писать по одной малелькой и простой программке на C# 2.0.
Среди совсем простых, есть и достаточно интересные:
взять окно и вставить его в внутрь своего приложения. Честно признаю, я решения сходу не знаю. А есть простое шедулеры (scheduler)

Особо стоит отметить работу с воспроизведением текста (String) в виде аудопотока - судя по иерахии классов (интерфейс к стандартным возможностьм ОС), половина Windows нужна чтобы читать вслух.

Все исходники открыты, лицензия GPL + если еще полезные обертки над Windows

Sunday, May 27, 2007

Blogspot лежит... опять...

Стоило с утра зайти на свой блог, как blogspot показал ошибку:




Google

Error


Server Error


The server encountered a temporary error and could not complete your request.

Please try again in 30 seconds.






А через 20 минут уже следующую:

Blogger и Blog*Spot не доступны

В данный момент Blogger и Blog*Spot недоступны. Приносим извинения за перебои в работе.

Сведения

Blogger is undergoing brief maintenance and will return in a few minutes.


Просто удивительно, как ребята из гугла успевают быстро... менять вид ошибок

Thursday, May 24, 2007

Экспорт данных ввиде SQL Dump с сайта на Ruby

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

Иногда, в целях быстрого бекапа и переноса данных требуется сгенерить полный дамп базы, при этом дамп должен быть в формате SQL - запустил и работает. Обычно для таких целей используют phpMyAdmin (для MySql, разумеется. Все сказанное ниже применимо только к нему). Но вот если требуется сделать это в адинистративной части? и на Ruby? тут уже copy-paste не прокатит.

Решение

В поставку стандартного MySql входит утилита mysqldump - умеет генетить то что нам надо, но вот только ей еще и параметры нужно дать правильные, да и еще и вызвать , и пот ом результ работы с диска снести...
итого имеем (работает везьде, под любой проект и ос - с этим больше всего гемморился):

require 'yaml' #Для чтения database.yaml
require 'pathname' #Для определения абсолютных путей (требуется для Unixов)

class DumpManagerController <>
def index
response.headers['Content-type'] = 'text/sql' #правильный MIME тип
response.headers['Content-Disposition'] = "attachment; filename=dump.sql" #Чтобы сразу можно было качать
rebuild_dump_file()
dump_sql_file = File.open(output_file)
dump_content = ""
dump_sql_file.each { |line|
dump_content +=line
}
dump_sql_file.close #Чистим мусор
File.delete(output_file)
render :text=>dump_content #Пишем в поток
end

protected
def rebuild_dump_file
command = build_mysqldump_command()
system command #Вызываем комманду
end

def output_file
rails_directory+"/dump.sql"
end

def rails_directory
Pathname.new(__FILE__).realpath.dirname.dirname.dirname.to_s #Главная директория рельсов
end

def build_mysqldump_command
env = ENV['RAILS_ENV'] || 'development'
database = YAML::load_file( rails_directory+'/config/database.yml')
password = ""
password = "--password=#{database[env]['password']}" if (database[env]['password'])
"mysqldump -u #{database[env]['username']} #{password} #{database[env]['database']} > #{output_file()}"
end
end


В последнем методе генерим комманду, для этого нам нужен логин, пароль и имя базы (можно еще и хост, ну ладно его пропустим, но можно было бы и настроить)
Данные читаем из конфига (благо ЯМЛ поддерживается)

Вот вообщем и все. Надеюсь будет полезно.
П.С.
Сделать в Sql Server подбную штуку штатными средствами нельзя.. потому что Microsoft думает что это никому не нужно. Приходиться мучаться и делать генераторы SQL на основе мапперов.

MySql - респект

Wednesday, May 23, 2007

Модный коврик в машину

Модная Audi TT-2002 года с тюнингом. Внимение на коврик для водилетя:
Фотография взята с ebay.com
"удолетворенность клиента наша первая цель".

Bluetooth Ганитура Jabra: личный опыт

Наконец-то умер мой доблестный телефон SkyLink - работал почти 2 года как часы. Я и решился повторить покупку Nokia 6021 - уже был - украли. Поддерживает все что нужно "не совсем обычному" человеку:
Bluetooth/IrDA/Data cable (хотя последний не сильно и нужен)
GPRS/EDGE - скорость 10-12 Kb в секунду - нравиться.
Достаточно хороший аккумулятор - 3 дня держит стабильно
Цветной дисплей :-)
Стоил - 3390 (в августе 2006 назад покупал меньше чем за 3000... оказывается телефоны дорожают...). Можно было бы и дешевле, но искать было экономически не целесобразно.

Вообщем прекрасный экземпляр:
Модем для ноутбука (через Bluetooth адаптер), КПК (у меня он старый и Bluetooth'а нет так что использую IrDA - прощай EDGE). Решил еще завести и гранитуру: разумеется, голубозубую. Производство Jabra (никогда не слышал о такой). Стоила - 1400 - не самая дешевая (была Nokia за 900), не самая дорогая - была от того же производителя за 3200.
Найденые "+"-сы:
- Слышно прекрасно
- Голосовые метки Nokia распознает даже на шумной улице, почти в 100%
- телефон начинает работать дольше. Сама гарнитурка живет часов 6-7.
- Разговаривать можно в 10-15 метрах от телефона.
- Телефон можно смело прятать в труднодоступных для воров местах (все: ноут, кпк, телефон, мышка, фотоаппарат + пара ненужных книг прекрастно прячутся в самый обычный гаджет-рюкзак)
- Руки можно держать хоть за спиной.
"-"-сы:
- Давит на ухо
- Люди смотрят как на сумашедшего.. боюсь подумать что пару лет назад было
- Жаловались что меня плохо слышно (самый большой недостаток, однако в тихом месте эта проблема пропадает)

Итоги:
Новая игружка за 4790. При этом местами полезная. Ничего лишнего (кроме Push-to-Talk которого в России пока нет)

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

Friday, May 18, 2007

Google Search Engine и Blogspot

Ура! После месяца ожидания гугловский паучок добрался до моего блога. А ведь это все из-за проклятого blogspot с его no-index и no-follow на главной странице по-умолчанию. Убивал бы за такое.

Новый подход к системе оценки кандидатов при приеме на работу

Новая концепция по оценки кандитатов, ищущих работу был применен на сайте talentspring.com - основная идея состоит в том что кандидату предлагается несколько пар резюме и он должен выбрать по лучшему в каждой паре. Если он выбирает резюме которое признано лучшим, его рейтинг ростет, иначе падает. При достаточно большом количестве резюме и кандидатов, такой метод должнен сработать.

Доступна бесплатная бета

Подробнее тут

Wednesday, May 16, 2007

Немного о машинах

Сегодня узнал нечто для себя неожиданное: машины в России стоят в 2 раза дороже чем в США!

Пример: Maserati, Spyder (Спорт-кар)
Росиия - 89688$
Америка - 499970$

Разница для бюджетных вариантов еще больше

Единственное за растамошку придеться отдать: 4.2 литра * 1000 см. куб * 2 евро пошлина с куб. см* 1.35 курс к доллару = 11340$ - за это я бы тоже кое-кому по голове с удовольствием дал бы....

П.С.

Про домики (таун-хаусы) после обвала цен на недвижимость по цене не самой дорогой подержанной машиныя молчу.... Эх, вот она правильная экономика...

Monday, May 7, 2007

Мессенжер Все-В-Одном

Наткнулся на новую утилиту: мессенжер для нескольких клиентов. Похож на Miranda но на вид по-приятнее, работает шустрее, выглядит симпатичнее. Поддерживает ICQ, MSN, Yahoo, AIM, Jabber и пр. Называется - Pidgin. Если есть несколько мессенжеров, то использовать их совместно становиться намного удобнее. Памяти кушает ~ 40 мб - тоже вполне терпимо. Mozilla Firefox 2.0.3 меньше 80-100 редко занимает.
Что касается web-аналогов, могу порекомендовать meebo - в хозяйстве вещь полезная. К тому же ставит с собой последнюю версию GTK... Работает по Windows/Mac/Linux
Интерфейс понятный и удобный - ничего лишнего. на виду основные вещи, а дополнения не сложно настроить. Есть проверка орфографии в том числе под русский.

Весит вместе с GTK 10Mb.

Sunday, May 6, 2007

Кросс-платформенные приложения с GUI на Ruby

Ради и интереса решил разобраться с тем как можно создать обычное приложение с формочками с Ruby. Сделать это можно с с помощью 2-х библиотек:
Tk и Gtk. Первая - шутка изначально сделана под язык Tcl (с ним я не сильно знаком, и использовать его мне не доводилось). Вторая - кросс-платформенная библиотека. Обе позволяют абстрагироваться от ОС. Не то чтобы я решил писать оконные приложения под Linux и пр, откозавшишь от .NET. Просто интересно.

И так, для начала я решил посмотреть на Tk. Ставиться вместе с Ruby. Сначала немного о внутреннем устройстве. В сердце библиотеки лежит иерахия классов лежат TkEntry и TkFrame. Остальное наследуется от них. Есть Layout Manager'ы, как в Swing под Java.
Так же есть около 30 элементов управление, но нет combobox (извесный как drop down list), я не нашел, зато есть уже готовый контрол, но не являющиейся частью библиотеки и входит в примеры. Есть Grid(TkGrid, в .NET аналог DataGrid и GridView), это очень удивило. В плане готовых компонентов, проблем нет. К тому же есть библиотека красивых расширений - iwidget - там много всего интресного есть.

Теперь немного практики:
сначала делаем
require 'tk'
TkFrame.new(){|f|
label = TkLabel.new(f, :text=>'Hello, World').pack(:fill=>:x)
}
Tk.mainloop

Все! есть формочка c надписью, растянутой на весь экран по ширине.
Как это работает:
сначала делаем главной элемент - саму формочку (f)
дальше на нее (первый аргумент конструктора TkLabel) кладем созданый объект у которого свойство текста установленно в "Hello, World". После этого располагаем созданную надпись на окне с соотвестующим Layout

Вот в общем и все. В заключение могу порекомендовать посмотреть на это собственными глазами.
Примеры можно найти в папке, куда установлен Ruby: samples/tk

П.С.
Если Вы заметили неточность или ошибку - пишите в комменты плз


Tuesday, May 1, 2007

Здание по цене комнаты

Как извесно, цены на недвижимость в центре Москвы(не на окраине, а именно в самом центре)
Пример не самые доступные. Приблизительно 18000 евро за метр. 1 Комната - приблизительно 30 метров. Итого 540000. Что на эти деньги можно купить? Всего ничего: 10 квартир в Германии + 4 мерседеса... и это на одну комнату... Всю квартиру в Москве можно разменять на 100 Немецких... Ну а к примеру, в Греции за 30000 евро можно купить квартиру на берегу моря...