Tuesday, May 29, 2007
30 Дней - 30 Приложений
Среди совсем простых, есть и достаточно интересные:
взять окно и вставить его в внутрь своего приложения. Честно признаю, я решения сходу не знаю. А есть простое шедулеры (scheduler)
Особо стоит отметить работу с воспроизведением текста (String) в виде аудопотока - судя по иерахии классов (интерфейс к стандартным возможностьм ОС), половина Windows нужна чтобы читать вслух.
Все исходники открыты, лицензия GPL + если еще полезные обертки над Windows
Sunday, May 27, 2007
Blogspot лежит... опять...
| 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
Иногда, в целях быстрого бекапа и переноса данных требуется сгенерить полный дамп базы, при этом дамп должен быть в формате 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
Модный коврик в машину
Фотография взята с ebay.com
"удолетворенность клиента наша первая цель".
Bluetooth Ганитура Jabra: личный опыт
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
Новый подход к системе оценки кандидатов при приеме на работу
Доступна бесплатная бета
Подробнее тут
Wednesday, May 16, 2007
Немного о машинах
Пример: Maserati, Spyder (Спорт-кар)
Росиия - 89688$
Америка - 499970$
Разница для бюджетных вариантов еще больше
Единственное за растамошку придеться отдать: 4.2 литра * 1000 см. куб * 2 евро пошлина с куб. см* 1.35 курс к доллару = 11340$ - за это я бы тоже кое-кому по голове с удовольствием дал бы....
П.С.
Про домики (таун-хаусы) после обвала цен на недвижимость по цене не самой дорогой подержанной машиныя молчу.... Эх, вот она правильная экономика...
Monday, May 7, 2007
Мессенжер Все-В-Одном
Что касается web-аналогов, могу порекомендовать meebo - в хозяйстве вещь полезная. К тому же ставит с собой последнюю версию GTK... Работает по Windows/Mac/Linux
Интерфейс понятный и удобный - ничего лишнего. на виду основные вещи, а дополнения не сложно настроить. Есть проверка орфографии в том числе под русский.
Весит вместе с GTK 10Mb.
Sunday, May 6, 2007
Кросс-платформенные приложения с GUI на Ruby
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 евро можно купить квартиру на берегу моря...
Friday, April 27, 2007
Яндеск пульс
Основная идея:
Посмотреть статистику по поиску по запросу и сравнить его с другими.
Например:
Ruby:
за день: 8 запрос в день
максиум: 140 за день.
и т.д.
Есть предчувствие что в среднем 5-7 человек по этому запросу доходят до моего блога...
Просто Юмор
"Он был полным идиотом... Даже кнопка "Свеpнуть все окна" на его компьютеpе находилась на "Рабочем столе"..."
У меня тоже когда-то так было:
места в quick launch у меня всегда мало, и есть приложения которые хотелось бы иметь под рукой, и которые используются много чаще.
очень удобно сделал:
- в таскбаре всегда есть линка на тотал коммандер (1 клик или пара alt-tab)
- на Ctrl+D открывается список быстрых папок (разумеется десктоп там есть, 2 нажатия)
- и зажав alt печатаем "Show Desktop" (первые пара символов)
Набирается это за 2-3 секунды (подтащить мышку и нажать - приблизительно столько же...)
Так что видимо я - Блондинка
Wednesday, April 25, 2007
Ruby Development with IntelliJ IDEA
Что касается советов: на забудьте установить в пассы путь к инстант реилсу (%Instant Rails%\ruby - это должно быть в путях). В остальном ставиться и запускается без проблем.
Что касается моих замечаний:
(-)
1. Рефакторингами и не пахло, а жаль.
2. Код-комплит работает не слижком хорошо
3. Парсер не идеален:
class Parser
def parse(query)
result = ""
result<<"select * from '" # с этим не справился
result<
4. Нет дебага
5. если после "<%" нажать пробел появиться "%>" в не зависимости от того что впереди
6. Кушает это дело 200 Мб памяти, так что не сильно разгуляешься.
7. Открытие проекта занимает 2-3 минуты на не самом старой машине
8. Не знает по загруженные модули (на ctrl+пробел не беруться)
(+)
1. Есть интеграция с generate. Можно сказать генери котроллер, мигрейт и пр.
2. По рану запускается webrick
3. Кое-где есть нормальный код-компит
4. Автозакрывание "end"-ом
5. Древовидная структура проекта (это не табы из Total Commander!)
6. После загрузки быстро работает
7. Есть поиск места определения (класса, метода).
Вердикт: буду использовать. надеюсь что польза от этого дела будет.
Быдло и программирование
открылся форум по адресу быдлокодер.ру
Слабо могу приставить себе человка, который находясь в здравом рассудке пойдет постить на сайт с таким названием.
Да и смысла в новых подобных сайта лично я не вижу:
для .NET есть gotdotnet.ru, aspnetmania.com (был когда-то хороший dotsite.ru, но уже скатился достаточно сильно)
для остального: rsdn.ru, interface.ru и sql.ru
На всех указанных форумах быстро ответят и объяснят (благо народ там толковый сидит), если тема не совсем уж специфичная (например работа с capistrano в Ruby on Rails).
Так то если и открывать форум то узкоспециализированный, а не очередной винегред.
Tuesday, April 24, 2007
Google Sitemaps
П.С.
проверил: работает
Скорость обработки сайтов в Google
Googlebot last successfully accessed your home page on Feb 10, 2007. (Сейчас уже Апрель 24)
Что-то он как-то не очень сильно торопиться переидексить все.
Кстати к сайту компании он приставал все 3 дня назад...
Цитатник Рунета
Веб Сервисы в Ruby on Rails
1. Выполняем: rails MyApp
2. Выполняем: ruby script/generate web_service MyService
3. в app/apis/my_service_api.rb прописываем в теле класса следующее api_method :get_config
4. в app/controllers/my_service_controller.rb прописываем тело нашего метода:
def get_config
#do something
end
Вот и все! теперь у нас есть WSDL веб-служба, которую можно использовать, например, из .NET (работает, однако).
что касается быстроты написания - не сложно заметить, что пишется это моментально...
Ну а вот безопасности этого дела, этим я еще не занимался.
Wednesday, April 18, 2007
Office 2007 en и Office 2007 ru: разница в массе 3 раз
Наконец- то скачал нормальный офис. Как показывает практика, пользоваться русской версией оказалось непревычно больно (думать как создатели перевели на русский "Account Settings" и прочее, не самое продуктивное занятие). Так что установка англоязычной версии стало для меня прямо как бальзам на душу – почувствовал себя в родной стихии. Кстати проверка русского языка у меня пропала, ну не особо и жалко. Что касается переустановок, на мое счастье офис сохраняет все свои настройки при удалении, так что все перенастраивать мне не пришлось.
Еще очень сильно удивил размер дистрибутивов:
Русская версия: 1.6 Гб
Английская: 500 Мб
Да, действительно, в русский дистрибутив входит английская версия. Но неужели настолько много занимают всякие там руссификаторы и пр. Странно. Как показала практика некоторых народных умельце, из русской сделать анлийскую можно, только времени и нервов много потребуется, так что Русская Версия = Английская + локализованные ресурсы. Для Office 2003 руссификатор весил 15 Мб, теперь весит 1 Гб. Странно. Похоже что-то лишнее в дистрибутив засунули...
Что касается недостатков Outlook:
Проблемы с изменением учетной записи: если сказал что POP3, то в HTTP её не переделаешь. Странная бага. И с comail.parking.ru он тоже не всегда дружит (хотя, я не видел ни одного почтового клиента под Pocket PC который с ним умел бы работать, так что тут ничего удивительного нет).
Sunday, April 15, 2007
Outlook 2007 как RSS Агрегатор
Основная проблема: нельзя (по крайней мере я не нашел) посмотреть и изменить адрес ньюса! О чем думали создатели лично мне сложно осознать.
Если бы ThunderBird была бы более функциональной, а SunBird лучше с ней бы интегрировалась, я бы уже давно перешел на "птиц" от Mozilla, только еще бы туда прописать и нормальный RSSBird.
Кстати, что касается удобства продуктов от Microsoft (просто к слову):
Недавно, одна очень хорошая и умная девушка (имена не разглашаю), после первой работы с Linux, сказала что он ей понравился больше нежли Windows. Не то чтобы я так считал, но все же, если бы Windows была бы так хороша, то никому, нормальному человеку, в голову бы не пришло бы такое говорить.
Всегда следите за свой репутацией и покупайте только лицензионное ПО
Итого: купил фильм "Фонтан". Почему-то смысл я его так и не понял (видимо, мой мозг перегруженный информацией не справился со столь глубокой философией автора "Реквием по мечте")
Хью Джекман, из помеси Россомахи с хакером, превратился в Конкистодора-Врача-Будду(не подумайте, что это мое неуважение к Буддистам!), при этом его все время плющело (особенно в самом конце, когда тот впал в полнейшую.... Нирвану).
Одним словом: фильм надежды не оправдал. -300 руб
Очердной "провайдер" музыки
Кстати в отличии от musicfond, там нет 10 сек. задержки перед скачкой, но рекламы гораздо больше, правда, Mozilla умеет с ней неплохо справляться, так что это тоже не проблема.
Популярность Vkontakte (Вконтакте)
Thursday, April 12, 2007
Просто пост и ничего личного
[Цитаты заменены на мои комментарии, по вежливой рекомендации представителя данной коммерческой организации]
Приезжайте. Мы все устроим: привезем, накормим, развлечем, спать уложим, домой отправим.
Затем говорят:
[Цитаты заменены на мои комментарии, по вежливой рекомендации представителя данной коммерческой организации]
Приезжайте если уж очень хотите, но мы очень не хотим вас спать укладывать, мы, конечно, готовы это сделать, если сможете объяснить: «почему Вы не хотите сразу домой»
Поехать в Москву я согласился не из-за этого мероприятия, а скорее с целью устроить себе N дневный отпуск. А так, я себе могу позволить и самому съездить в «доблестную» столицу, за свой счет, но в более приятной кампании.
В тот же вечер, я решил опубликовать этот пост (тот что был до того самого разговора). Телефон забыл дома. Пришел на работу: смотрю пара пропущенных звонков из города отличного от Петербурга. Перезванивать не стал – кому надо, пусть и ищет (по сколько к списку приоритетных номеров тот не относился).
Представитель оказался на редкость вежливым: дал понять, что я разглашаю приватные данные компании и пр. Вспомнил о NDA (документ о не разглашении, который я в глаза не видел, да и не подписывал в том числе, это я точно помню). Напомнил про репутацию и вспомнил, про мою человеческую мораль (не буду показывать на продукты этого производителя, но я бы на их месте просто бы тут промолчал).
Что касается моей морали, это отдельный разговор:
Я, разумеется, человек аморальный, в последний день зачетной недели, сидел с заказчиком 16 часов, при этом ничего с него не взял за это по причине того что я сидел через свой мобильник, и не мог быстро деплоить на сервер (денег на трафик я много потратил).
Или когда отпускаю коллегу без объяснений пораньше, взяв его заботы на себя.
Мой девиз уж точно отличается от «человек, человеку волк»
Ну а предыдущий пост я сделал, чтобы унизить такую доблестную корпорацию и разгласить сверхсекретную информацию.
П.С.
Автор не настаивает на правдивости информации (возможно, все это лишь моя фантазия, но посты у меня из блога так просто не исчезают) и не незет отвественность, если она будет исталкованна не правильно. Так же все сказанное выше, является моим мнением (или фантазией) и не имеет отношения к инетересам, отличным от написания статей.
Linux в развлекательном журнале

В журнале с названием "Альманах отдыха" (название очень важно), ровно по середине, в соседстве со статьей "Вся правда о жвачках", целый разворот с названием "Linus vs Windows: дискуссия двух миров". Как говориться "Афтор жжот". Слова типа SGML, LaTeX, GNU info, LyX и пр, куча фактов "212% по стравнению с..."
Я думал что в подобных шурналах обычно пишут "А этот ноутбук подойдет к сумочке от D&G, но его никак нельзя носить с туфлями на шпильке"
Интересно кто станет читать такую статью в таком месте.... я и то не стал, начал искать что-то более простое...
Вот что называется: не в тему.
П.С. именно эту картинку использовали в статье.
Применение Экстримального Программирования на практике
Причины которые, подтолкнувшие меня к этому шагу:
- Необходимость в автоматическом тестировании (С ручным, я просто не мог справиться)
- Большое количество новых фунциональностей, необходимостить в которых возникла в последнее время
- Переработка существующего кода, что более 3м клиентского и серверного кода - Рефакторинг (Refactoring). Часть которого использует достаточно не стабильный компонент, от которого со временим придеться избавиться (в следующей версии... через год)
- Короткие релизы - раз в неделю, чтобы конечный пользователь мог оценивать результаты и выдыигать свои пожелания.
- Постоянное общение с заказчиком.
От работы не более 40 часов в неделю пришлось отказаться - сроки...
Как показала практика, идея себя оправдала:
В последнем релизе не было обнаруженно ни одного изъяна (тестировали его под нагрузкой в реальных условиях, с самыми произвольными данными).
До этого, в 3-х недельных релизах находили по 20-25 проблем.
В результате, основной упор был сделан на Test-Driven Development (по-русски: пишешь тест - потом уже код логики) и рефакторинг (приписал тест ко компоненту и рефакторишь его). При этом в паре эти практики оказались гораздо более эффективными, нежли поодиночке.
При этом, это далеко не первый мой опыт работы в стиле Agile, но подобных результатов он мне еще не приносил.
Осталось пересилить в себе свинью, и начать писать тесты всегда и с самого начала.
В дальнейшми постараюсь поделиться своим опытом более развёрнуто, с конкретными примерами.
П.С.
Сегодня будет первая ночь за последнюю неделю, когда я могу спать спокойно.
"IPO" Социальных студенческих сетей
Удачи
Tuesday, April 10, 2007
Пределка поста про Microsoft, зарезанного цензурой
П.С.
Сейчас у меня дэд лайн в 2 проектах, а как известно, интересы заказчиков превыше всего, так что приходиться все как следует оттестить и понаписать кучу автоматических тестов (эх, не прижился у меня test-driven development).
Спасибо за понимание.
Пост про Microsoft
Постараюсь выпустить его с некоторыми коррективами сегодня вечером.