Category Archives: Itшное

Zend_Soap_Server & Client и его особенности

По долгу службу начал сегодня писать API к серверу на SOAP, используя для этого ZF.

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

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

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

Гугление давало слабые результаты. У некоторых была проблема, связанная с тем, что soap.wsdl_cache_enabled была установлена в 1, а когда изменили на 0 то все заработало. Мне же это не помогло, ровно так же как и установка soap.wsdl_cache тоже в ноль. Не помогло так же и $soapServer->setWsdlCache(0);

На этом идеи найденные через великий гугл закончились. Пробовал я так же делать $client->getFunctions() — список существующих функций он выводил правильно. Сразу же меня смутило немного  слово void перед названием функции, то есть судя по ответу getFunctions() эти функции ничего не возвращают.

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

И в итоге, перепробывав все варианты решение проблемы было в том, что нужно функциям которые будут достыпны через SOAP комментарии-документацию в стиле

/**
* @param int $i1
* @return string
*/
public function test($i1)

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

Такой день.

Советы каждый день.

Как я уже писал, в один выходной день я сделал сайт threewordsadvice.com.

С тех пор каждый день на нем публиковался один совет, а так же я добавил некоторые дополнения к нему.

Решил, что буду здесь освящать подробности его продвижения в люди, пока не знаю получится ли с этого хоть что то, но попытка не пытка.

Последние нововведения — лайки от фейсбука и вконтакте, а так же кнопка сохранить в контакте. Основное направление продвижение — расширение в социальных сетях. Уже запланировано много фич, буду постепенно их внедрять.

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

Следите за новостями :-)

Совет из трех слов каждый день.

Расскажу ка я сегодня об одном мини стратапе, который был рожден как результат свободного дня в один из выходных и того факта, что я сейчас активно изучаю zend framework.

Так вот, проект этот — http://threewordsadvice.com

Несомненно, многие сразу же скажут что это плагиат на fucking-great-advice.ru  (или даже goodfuckingdesignadvice.com, откуда собственно последний сайт все и стянул, переведя только на русский), но это не так. Отличия, безусловно, есть. Хотя бы то, что советы на этот сайт придумываю я сам, а не перевожу с другого места, думаю уже заслуживает того, что бы считаться уникальным.

Ну и кроме того советы состоят исключительно из трех слов. Ни меньше, ни больше.

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

В общем добро пожаловать на сайт, советы добавляются ежедневно! Подписывайтесь и рекомендуйте друзьям!

Идея по улучшению Яндекс.Карт

Ехал на днях к девушке в гости и на выезде из города минут 20 пришлось стоять в пробке. Я открыл Яндекс.Карты (где и состояние загруженности дорог тоже указывается) что бы посмотреть сколько там еще осталось. Затем я обратил внимание на то, что клиент карт для айфона (как на других платформах просто не вкурсе) позволяет на карте пользователям оставлять точки типа «авария», «контроль скорости», «опасная ситуация», еще какие то и просто свой комментарий оставить.

Эти, оставленные одним пользователем метки видны всем остальным участникам. При этом остальные могут либо подтвердить либо опровергнуть точку (такая себе саморегулирующаяся система).

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

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

Я бы пользовался такой фичей :)

Миграция Gmail -> Google apps

Недавно перенес всю почту на google apps, что бы она, то есть почта, была на моем домене.
Отдельно можно упомянуть о сложностях поднятия самой почты. Уж не знаю, это только на базовом (который бесплатный) варианте подписки или на любых, но гугл никак не хотел проверять мое право собственности на первый домен и спустя неделю попыток подтвердить (а это был домен в зоне .tel, так что для него можно менять только MX записи), я забил и снес тот аккаунт совсем.
Потом решил сделать почту на другом домене, а этот позже добавить как алиас. Второй домен был полноценным и благо гугл не выевыделывался и согласился, что домен мой. МХ записи так же настроились быстро и… ура ура — почта работает.
Теперь надо было бы добавить второй домен, но нет — гугл говорит что домен уже где то используется. Ну конечно, теперь непонятно когда у него обновится инфа и он узнает, что того аккаунта, где он использовался уже не существует? Позже выяснилось, что это заняло около недели. Ну да ладно, хоть и с некоторыми плясками с бубном, но все настроил и оно даже работает как надо.
Еще непонятный баг был при включении мобильного доступа. Это что бы через exchange сервер например получать почту. Ставлю галочку — включить, жму ок, вроде как все круто, включило, но стоит перезагрузить страницу и все по старому. Настроил учетку на телефоне, проверяю почту — пишет что нельзя, видишь ли! Заеби Отлично, подумал я, без этой возможности мне такая почта не нужна. Но тут я попробовал еще раз включить данную опцию, при чем, на этот раз, если не путаю, использовал firefox вместо оперы. Уж не знаю, что именно подействовало — то ли попытка получить почту через эксченж, которая для гугля как бы посигнализировала что «эге-гей — нам нужен эксченж», то ли опера действительно неправильно включает галочки, но в итоге заработало и это :)

Так вот, вернемся к переносу почты.
Старый аккаунт гмейла я добавил в новом в качестве дополнительного ящика — что бы почта скачивалась на новый ящик (тут недавно прочитал еще на хабре что при таком способе теряются отправленные письма, так вот ничего подобного, проверил специально — есть у меня исходяище).
Добавил и ушел спать.
На утро обнаружил полный почтовый ящик. Ну и отлично, подумал было я. Вот только одна деталь смущала. Все письма были торжественно помечены непрочитанными. Оху Потрясающе! Более 7000 писем и все непрочитаны.
Если брать по 50 на странице, то это 140 страниц. Не, ну если подсчитать то это заняло бы с полчаса работы, отметить все это добро прочитанным, но даже если бы это заняло 5 минут, я бы искал способы хоть как то автоматизировать работу.
В общем готовый рецепт: после импорта всей почты создаете новый фильтр, адрес получателя — свой старый ящик, действие фильтра — отметить как прочтенное и не забудьте внизу галочку «применить для существующих писем». Сразу после создания фильтра его можно удалить и у вас остается правильный почтовый ящик.
У меня было довольно много разных ящиком, откуда сыпалась почта в гмейл, поэтому у меня процедурка заняла побольше времени, но все равно это приятнее чем тыкать страницу за страницей и отмечать почту прочтненной.

Теперь все оповещены, можете мигрировать без опаски, все будет хорошо :)