АРХИВ ПО ТЭГУ "ПРОГРАММИРОВАНИЕ"
ДЕКАБРЬ 22, 2011

uml deployment diagram UML modeling tool %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Hi.

Чувачки,

Кто какие программы для рисования деплоймент диаграм использует (Mac OS X)? Бесплатная есть ArgoUML, но вы ее видели? — привет из 90-х. VisualParadigm for UML уже получше , правда платная. Omni Graffle выглядит шикарно, но стоит неплохо так $200.

А что используете вы?

НОЯБРЬ 25, 2011

Hey.

Just a note. For more info see TargetConditionals.h.

platform.h:

#ifndef __platform_h
  1. #define __platform_h
  2.  
  3. // Load platform specific stuff
  4. #ifdef __APPLE__
  5. # import "TargetConditionals.h"
  6. # ifdef TARGET_OS_IPHONE
  7. #  include "platform/ios/ios_specific_stuff.h"
  8. # elif TARGET_IPHONE_SIMULATOR
  9. #  include "platform/ios/ios_specific_stuff.h"
  10. # else
  11. #  assert "Only iOS platform is supported at the moment (using __APPLE__)"
  12. # endif
  13. #else
  14. #  error "Only iOS platform is supported at the moment (not __APPLE__)"
  15. #endif
  16.  
  17. #endif // __platform_h
ОКТЯБРЬ 27, 2011

img 8914 Эффект свежего взгляда %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8 %d0%b8%d0%b4%d0%b5%d0%b8

Хаи.

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

Меньше времени он может затратить например если прочитает документацию, и обнаружит там некоторые новые подходы к решению задачи, либо найдет как правильно решать данную задача (если изначальный программист решал ее немножко в обход, не использую всевозможные средства фреймворка/апи/..).

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

ОКТЯБРЬ 5, 2011

grails logo Grails URL mappings   different controllers by HTTP method %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Hey.

Grails замечательная штука, но иногда чтобы понять как оно работает, нужно все таки в код посмотреть icon smile Grails URL mappings   different controllers by HTTP method %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Например задача: нужно на один и тот же урл в зависимости от HTTP метода заюзать различные контроллеры. Для различных экшенов и одного контроллера это делается легко:

«/api/stuff/$id» (controller: 'stuff') {
  1.    action = [ GET: 'show', PUT: 'update', DELETE: 'delete' ]
  2.   }

Т.е. на «/api/stuff/123 DELETE» мы вызовем StuffController::deleteAction().

А мы хотим различные контроллеры:

  • «/api/stuff/123 DELETE» мы вызовем StuffCustomController::deleteAction(),
  • для остальных хттп методов: ApiController::stuffAction().

Тогда нужно немножко копнуть в грейлс код. В таком замечательном интерфейсе как org.codehaus.groovy.grails.web.mapping.UrlMapping можно увидеть, что в getActionName() и getControllerName() возвращается Closure или String. Собсно нас интересует closure. Раз это замыкание, то мы легко можем сделать свитч по текущему методу из реквест объекта и таким образом динамически сказать какой контроллер нужно бы сейчас заюзать.

В итоге:

«/api/stuff/$id» {
  1.    controller = {
  2.     switch (request?.method) {
  3.      case 'DELETE':
  4.       return 'stuffCustom'
  5.      default:
  6.       return 'api'
  7.     }
  8.    }
  9.    action = {
  10.     switch (request?.method) {
  11.      case 'DELETE':
  12.       return 'delete'
  13.      default:
  14.       return 'stuff'
  15.     }
  16.    }
  17.   }
АВГУСТ 17, 2011

work with me Работка нужна кому? Питер, мобайл дев %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Hi.

Приветик дудекос.

Кто хочет поработать со мной ну и ваобще с крутанскими чувачками, пока что удаленно, а вскоре в питерском офисе?

Нужны сотоны по:

  • Java/Android
  • Obj-C/C++/iPhone
  • Java/JEE/Groovy/Grails; SQL (Oracle, MySQL)
К кому обращаться:
  • Ну если интересно пишите мне icon smile Работка нужна кому? Питер, мобайл дев %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8
  • Или сразу Саньку заливайте резюмку на godexsoft [at] gmail [dot] com.
PS Не забудьте — сегодня El Classico в час ночи по Москве! Смотреть обязатеельно! Первый матч 2-2, хотя Реал выглядил намного сильнее!
АВГУСТ 9, 2011

Hola.

Как делишки!

Простейший пример реализации SOAP Contract-First сервера на PHP.

Архив исходника качать тут.

WSDL

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <wsdl:definitions name="sserver"
  3.    targetNamespace="http://mycom.com/wsdl/"
  4.    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  5.    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  6.    xmlns:tns="http://mycom.com/wsdl/"
  7.    xmlns:my-xsd="http://mycom.com/types/"
  8.    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  9.  
  10.    <wsdl:types>
  11.       <xsd:schema elementFormDefault="qualified"
  12.                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  13.                         targetNamespace="http://mycom.com/types/">
  14.  
  15.          <xsd:element name="MyResult" type="my-xsd:MyResult"/>
  16.          <xsd:complexType name="MyResult">
  17.             <xsd:sequence>
  18.                <xsd:element name="OutputStr" type="xsd:string" minOccurs="0" maxOccurs="1"/>
  19.             </xsd:sequence>
  20.          </xsd:complexType>
  21.           </xsd:schema>
  22.         </wsdl:types>
  23.  
  24.    <wsdl:message name="testSrvRequest">
  25.    </wsdl:message>
  26.    
  27.    <wsdl:message name="testSrvResponse">
  28.          <wsdl:part name="MyResult" element="my-xsd:MyResult"/>
  29.    </wsdl:message>
  30.    
  31.    <wsdl:portType name="Srv_PortType">
  32.       <wsdl:operation name="testSrv">
  33.          <wsdl:input message="tns:testSrvRequest" />
  34.          <wsdl:output message="tns:testSrvResponse"/>
  35.       </wsdl:operation>
  36.    </wsdl:portType>
  37.    
  38.    <wsdl:binding name="Srv_Binding" type="tns:Srv_PortType">
  39.       <soap:binding style="document"  transport="http://schemas.xmlsoap.org/soap/http"/>
  40.       <wsdl:operation name="testSrv">
  41.          <soap:operation soapAction=""/>
  42.          <wsdl:input>
  43.             <soap:body use="literal" />
  44.          </wsdl:input>
  45.          <wsdl:output>
  46.             <soap:body use="literal" />
  47.          </wsdl:output>
  48.       </wsdl:operation>
  49.    </wsdl:binding>
  50.  
  51.    <wsdl:service name="testService">
  52.       <wsdl:documentation>WSDL File for Test Server side</wsdl:documentation>
  53.       <wsdl:port binding="tns:Srv_Binding" name="Srv_Port">
  54.          <soap:address
  55.             location="http://localhost/1.php" />
  56.       </wsdl:port>
  57.    </wsdl:service>
  58. </wsdl:definitions>

Сервер

  1. class MyServer {
  2.  
  3.         public function testSrv() {
  4.                 return array('OutputStr' => "Ololo testeg result");
  5.         }
  6. }
  7.  
  8. $wsdlFile = "file:///tmp/tmp.wsdl";
  9.  
  10. $srv = new SoapServer($wsdlFile);
  11. $srv->setObject(new MyServer());
  12. $srv->handle();

Клиент

  1. // Send through SOAP
  2. try {
  3.         $cln = new SoapClient("file:///tmp/tmp.wsdl");
  4.         $resp = $cln->testSrv();
  5.         echo "\nDetailed response: " . print_r($resp, true) . "\n";
  6. } catch (\Exception $e) {
  7.         echo "ERROR Unknown:" . $e->getMessage();
  8. }
  9.  
  10. echo "\n";
Страницы:1...34567...10