Tag Archive for 'Ruby'

Техподдержка

… везде одинакова. Собственно, про бравых товарищей из adotube я уже писалговорил. Для тех, кому лень слушать, парни сделали “компонент” на AS3 совершенно чрезж*пно, который к тому же выдавал мне эксепшены на пустом месте. Не вдаваясь в код (которого небыло) компонента, я высказал предположения где там ошибка и как исправить, после чего была долгая идиотская переписка и глупые разговоры по телефону со смыслом “у нас все в порядке, проблема у вас”. Сил на доказательство, что я не верблюд, истратилось изрядно.

Но тут у меня скопилась пачка таких же идиотских случаев буквально за неделюмесяц, которая показывает, что техподдержка везде одинакова.

null object

Очередная система рекламных роликов в кастомных плеерах. Присылают мне SWC с компонентом и PDF на 30 страниц как его использовать, где английским по белому написано: возьмите плеер, положите на один слой, компонент на другой слой. Все вроде бы проще некуда. Но, я же не какой-то быдлокодер, у меня все сделано сложно пофреймворкски и пресловутый компонент ну никак не может быть на сцене в момент создания… И он сломалсо )8 Кан нот аксэс че-то там оф э нулл обжэкт прямо при создании. Угадали? Привет stage. Даже не смешно. Контора вроде солидная. Пишу своим, что эти парни такие же никчемные, как и предыдущие. Парням пишу, что так мол и так, такая ошибка, 0.9973 вероятность, что пытаются что-то делать со stage наивно предполагая, что объект уже на сцене.

Продолжается обычная фигня в стиле “пришлите ваш код, мы посмотрим… у нас все нормально, вы уверены блаблабла?”. И это при том, что Я ТОЧНО УКАЗЫВАЮ в чем косяк и хоть бы они проверили именно ЭТУ информацию. В итоге (так нифига и не проверив) они присылают “старый документ по интеграции”, в котором (о чудо) вместо компонента надо грузить некоторый файлик с ихнего сервера (ставлю свой грязный тапок, что этот компонент только эту функцию и выполнял).

Заработало.

can not send emails from * account

Значит, сижу я в своей деревнестолице Сибири. В интернет хожу через сеть с одним ипняком на всех. И почему-то вдруг не могу отсылать письма с рабочего акаунта. Никто не может сказать в чем проблема, манагерское общение с техподдержкой (пральна, хватит мне мозг ээ… ну вы поняли) ни к чему не привело. Звонить лень, я нашел AIM хостера, пишу <прошел день> мне ответили (я уже отчаялся). Так мол и так, такую вот ошибку выдает. Что делать? При чем за этот день я прогуглил ошибку и оказалось, что какой-то умный сайт, к которому (видимо) обращается хостинг, говорит, что мой ипняк — спамерский. А хостинг (видимо) думает, что я спамер (ололол) и отвечать на важные рабочие письма не позволяет. Это при том, что мы у них арендуем 3 полностью своих сервера. Ну не офигели ли они.

Так вот, я два часа доказывал, что не верблюд. Видите ли, у них все отсылается. А я с самого начала пишу, что вот меня считают спамером, хотя я белый и пушистый. В итоге к концу я тупо скопипастил это сообщение много раз и они решили все-таки (УРА) это проверить. И сказали, что уберут.

Убрали.

Я был счастлив и послал целое сообщение! Чтобы на следующий раз увидеть себя опять в черном списке. AIM больше не отвечал. Тупой индийский аутсорсенный техсапорт.

Я на это дело забил и сказал своим американским друзьям, что мне пофиг, с такой фигней производительность труда у меня ниже плинтуса, хотите — разбирайтесь сами, мне жаль мозг.

И тут через какое-то время я получаю копию переписки манагера с техсапортом, где манагер объясняет ситуацию как есть (с баном, блэкджеком и шлюхами), а техсапорт пишет следующее. Я ржал час… Потом перечитал и ржал еще 2 минуты. Далее расплакался и убежал со злобными криками.

(вольный перевод)
Здравствуйте,
Мы получили ваш тикет по поводу блаблабла. Специально создали два тестовых акаунта на сервере *. ком и попробовали послать письмо с одного на другой — все работает. Проверьте настройки почтового клиента блаблабла.

Я в шоке.

Почта так и не работает.

ruby

Ну и напоследок. Заливаю я сайт с простыми ruby скриптами на хостинг одного товарища. Известный хостинг кстати. Русский. Товарищ арендует свой собственный сервер с прилагающимся админом. В общем, потыкавшись, я удивился — а руби-то не установлен нифига. Честно говоря, я совсем тут не спец и сперва стал сомневаться именно в своей компетенции. Сказал товарищу, тот форварднул меня на техподдержку хостинга. Как-то прямо на админа по ихним правилам выйти сразу нельзя было.

Тут я поимел гемороя. Мне каждый раз говорили, что все там было установлено и все работает. Даже не должно работать, а работает. За пару дней интенсивной переписки я сломал мозг (в очередной раз ололол) и сказал товарищу, что так мол и так, разбирайся. Тот пошел настучал кому-то повыше и вдруг все волшебным образом заработало.

Такая вот история.

splashID

Я уже писал, что купил себе хранилку паролей, которую мне так и не прислали. Никто ни где не отвечает. Этот техсапорт превзошел всех. Игнор и все. УААХХАХАХАХА.

резюме

Сервис хорош не именно сервисом, а техподдержкой — вот что я понял. Быстрая реакция и отсутствие мозго..кхм дорогого стоит.

В основном же в техподдержке сидит тупая прослойка из ничего не знающей блондинки (в лучшем случае) или индуса, который еще и поанглийски не понимает. Эта прослойка пытается по стандартной схеме отбиться от откровенных идиотов. Но, они не отличают идиотов от реальных технических проблем их софта, поэтому такие люди как я вынуждены проходить тот же идиотизм и доказывать, что они не идиоты. И только потом тупой индус передаст вопрос куда-нибудь к какому-нибудь манагеру, который обязательно попытается блестнуть знаниями и выскажет какую-нибудь глупость, чем задержит решение проблемы и заспамит рабочую переписку еще. И только потом ошибку получит разработчик, который (по своему опыту скажу хехе) попытается придумать миллион отмазок прежде чем полезть в код и увидеть, что (О ЧОРТ) проблема есть действительно, ога.

Flash on Rails

Читая больше о Ruby on Rails, мне хочется, чтобы был Flash on Rails и я под ним работал.

RubyMine

Тут раздают 50% скидку на релиз RubyMine — отличного IDE для разработки Ruby on Rails приложений. Пользуюсь им пока не будет время заморочиться делать все (flex и rails) в Eclipse.

Flex on, чтоб его, Rails

For those who don’t understand Russian and came here after googling  “ActionController::MethodNotAllowed (Only get, put, and delete requests are allowed.)” scroll down to the very bottom of the page for some English text.

Ruby on Rails развивается такими темпами и такими сложными заковыристыми скачками, что на 2.3.2 код из книги декабря 2008 в мартеапреле 2009 уже не работает. Я это уже испытал конечно на книгах 2006-2007 годов, но все же.

Значит, сама по себе связка Flex + Ruby on Rails очаровательна. Скорость, с которой делаются простые приложения, потрясает. Поэтому я сижу читаю сейчас
Flex on Rails: Building Rich Internet Applications with Adobe Flex 3 and Rails 2 (поделитесь PDFчиком у кого есть). И, как я уже сказал, пробую на себе одни грабли за другими.

Сейчас проблема вот в чем — во Flex HTTPService хоть и говорит, что свойство method = “GET|POST|PUT|DELETE”, но на практике же посылаются только GET и POST запросы (я уверен, 90% пользователей знакомых с понятием GET и POST о том, что есть еще как минимум PUT и DELETE и не подозревают). А рельсам уж очень хочется их использовать, например GET accounts/1 возвращает инфу об акаунте, PUT accounts/1 обновляет акаунт на сервере инфой с клиента, а DELETE accounts/1 удаляет пользователя. В книге об этом написано, надо к URL прибавлять ?_method=put. Но в 2.3.2 это уже не работает. На любые попытки такого обращения получаем.

ActionController::MethodNotAllowed (Only get, put, and delete requests are allowed.)

Гугление показало, что хорошо бы посылать _method=put переменной вместе с основным запросом. Запрос посылается в XML формате, а как известно, флексовый XML не может иметь два корня, тогда как XMLList посылаться отказывается. То есть вариант <_method>put</_method><data /> не проканывает. На оборачивание этого дела в другой тэг Rails ругается.

Продолжение гугления подсказало устанавливать header HTTP_X_HTTP_METHOD_OVERRIDE = PUT. Это не помогло тоже. Тут я расплакался и пошел жаловаться мамепошел перевел Гуглом некоторую китаюскую ссылку вроде бы по теме, где бравый китайский коммунист дошел все же до конца решения этой проблемы. Оказывается, что Rails каким-то макаром приписывал переменным еще один префикс HTTP_, а соответственно на HTTP_HTTP_X_HTTP_METHOD_OVERRIDE = PUT удивленно моргал глазами “а что? это не я!” и ничего не делал.

Так что в итоге работает так:

<mx:HTTPService id=”accountsUpdate”
url=”{CONTEXT_URL}/accounts/{accountsGrid.selectedItem.id}”
method=”POST” resultFormat=”e4x”  contentType=”application/xml” headers=”{{X_HTTP_METHOD_OVERRIDE: ‘PUT’}}” >
</mx:HTTPService>

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

Some English text

Basically, in the recent Rails version adding ?_method=put to URL doesn’t work any more (say hello to those book examples). So, you either have to have a hidden from field named _method (which in case of sending XML with Flex can’t be done) or pass HTTP_X_HTTP_METHOD_OVERRIDE = PUT in request header. But Rails for some reason adds “HTTP_” to variable name, so you need to send X_HTTP_METHOD_OVERRIDE = PUT. The example above shows how to do it.

MAMP + MySQL Ruby Gem

Блог захвачен! Теперь это официально блог о Ruby!

В общем, т.к. MySQL гему нужны какие-то .h файлы, как я понял, а в стандартной поставке MAMP их нет, то чтобы его поставить, нужно немного попрыгать с бубном. Значит, попытка поставить гем через sudo gem install mysql упорно падает не смотря на перебор разнообразных комбинаций параметров со следующей ошибкой:

Building native extensions.  This could take a while…
ERROR:  Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lm… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lz… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lsocket… no
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lnsl… no
checking for mysql_query() in -lmysqlclient… no

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out

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

  1. Ставим MAMP 1.7.2 dmg package.
  2. Качаем исходники MAMP 1.7.2 source code.
  3. Распаковываем архивчик.
  4. Открываем терминальное окно и идем в папку куда только что распаковали все это добро.
  5. Разтариваем архив с MySQL:
    $ tar -xzvf mysql-5.0.41.tar.gz
    $ cd mysql-5.0.41
  6. Что-то шаманим.
    $ ./configure –with-unix-socket-path=/Applications/MAMP/tmp/mysql/mysql.sock –without-server –prefix=/Applications/MAMP/Library
    $ make -j2
  7. Копируем скомпиленные библиотеки.
    $ cp libmysql/.libs/*.dylib /Applications/MAMP/Library/lib/mysql
  8. Копируем недостающие .h файлы.
    $ mkdir /Applications/MAMP/Library/include
    $ cp -R include /Applications/MAMP/Library/include/mysql
  9. И, наконец, инсталим гем.
    $ sudo env ARCHFLAGS=”-arch i386″ gem install mysql — –with-mysql-config=/Applications/MAMP/Library/bin/mysql_config

Кто не встал — я не виноват.

Головой об стену

Как же быстро летит время. Книга про Ruby 2008го года уже к чертям устарела… Но это еще полбеды. Настоящие проблемы начинаются, когда тебя а. отправляют на какой-то блог читать как что-то ставить, б. странные команды, которые нужно запускать совсем нигде не объяснены… что делает? для чего?

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

Значит, “установите Ruby, Rails, RubyGems… а стоп, оно же уже есть в OS X 10.5, как же я не сказал?” — а я маялся откатываясь через Time Machine, вроде ставлю 1.3.1, а стоит 1.0.1. Напишите такой шелл скрипт… Написал, запустил — не работает. Все перепроверил — не работает. Побился час головой об клавиатуру — та же фигня. Читаю дальше в книге: “пока не запускайте”… Ладно, сам идиот. “Остановите сервер”, э… а я откуда знаю как его остановить. Перерыл 50 страниц назад и увидел, что сервер запущен в терминальном окошечке, в которое надо ctrl+c нажать. “Теперь запустите скрипт” — запускаю, пишет совсем не то, что в книге. Час гугления и разбора чего это я делаю показывает, что эта штуковина вообще не должна писать что она пишет там.

В общем, напоминает университет — сидишь копируешь какой-то метод решения задачи, а сам ни в зуб ногой что происходит. Главное, что результат сходится (или подгоняется). Надо мне Unix для чайников почитать, больно все это дело смахивает на долбежку головой об стену, если не дай Бог что-то из книги сработает не так как нужно.

P.S. а уж сама идея брать и компилить из исходных текстов себе ОС и все программы под ней с зависимыми библиотеками — УЖОС! Я сейчас спать пойду и мне будут сниться кошмары.

Куда идем мы с Пятачком…

Python, Ruby или все-таки Java?