25 Dec 2011

NuSOAP v PHP a sežrání SOAPu C# aplikací

(Mimochodem, jak byste v tomto kontextu přeložili "consuming" vy?)

Tak se stalo, že po půl roce zase něco napíšu a opět to bude něco spíše pro vlastní zapamatování, ale snad z toho někdy bude těžit i někdo jiný.

Pracuji na jednom projektu sestávajícího z webu v PHP napojeného na MySQL databázi a klientské aplikace v C# (aplikaci by bylo možné udělat i online, ale protože se v PHP vyznám tak z poloviny dobře jako v C# (a ASP.NET/Silverlight nepřipadá tady v úvahu), tak jsem se rozhodl polovinu ušetřeného času raději věnovat řešení problémům s propojením MySQL se C# přes SOAP:)) )

A že těch problémů bylo (a asi ještě bude). Pro generování WSDL souboru jsem se rozhodl použít PHP knihovnu NuSOAP, což proběhlo ještě relativně v pohodě a dokonce to fungovalo. (Maličké how-to např. zde: http://www.scottnichol.com/nusoapprogwsdl.htm, další pak na Googlu).

Trocha legrace začala při pokusech o vytvoření reference na službu ve Visual Studiu 2010, díky této stránce jsem se dozvěděl, že to nejde přes "Service reference", ale musí se do projektu přidat zastaralá "Web reference".

V této fázi se mi dokonce podařilo vytáhnout ze C# pár dat z databáze přes mou službu, jakou jsem měl radost! O půl hodiny později se bohužel někde něco pokazilo a už mi nešlo vůbec nic (chyby typu "špatně formátované XML", nebo že je poškozená reference).

Po několika hodinách hledání, upravování a vyzkoušení několika dalších postupů (vyzkoušel jsem např. vestavěnou podporu SOAP v PHP5 a samostatný .wsdl soubor a pár dalších) jsem omylem kde hluboko v internetu našel sérii článků, která mě zachránila, díky!! (autor používá způsob, se kterým jsem do toho šel úplně nejdřív) - http://www.hirdweb.com/tag/nusoap/

Poté stačilo jen vyřešit problémy s kódováním (buďto se špatně zobrazovaly znaky v desktop aplikaci nebo se špatně uložily do databáze):

  • Na konci kódu SOAP serveru zavolat encode na odesílaná data: 

$server->service(utf8_encode($HTTP_RAW_POST_DATA));

  • Na řádku 5475 souboru nusoap.php bylo napevno nastavené kódování, asi to tvůrcům uniklo, takže jsem ho musel přepsat na UTF-8

function serialize($debug = 0)
 {
 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
 

To je asi vše. Mám v plánu napsat rozsáhlejší, detailnější článek až vyřeším všechny problémy.

 

 

31 May 2010

Objevte Auroru i vy!

Znáte server Programujte.com? No jasně, určitě jste o něm alespoň slyšeli. A víte, že se chystá jeho nová verze s označením Aurora? Ne? Její tvůrce, Lukáš Churý, vymyslel navíc zajímavou a zábavnou hru, pomocí které můžete zjistit něco z pozadí nové verze. Hra spočívá v odkryvání různých vodítek skrytých ve zdrojovém kódu stránky, připojených souborech a podobně. Čeká na vás 15 zapeklitých levelů, měli byste to zkusit!

14 Mar 2010

Čtení XML pomocí třídy XDocument a ignorování vložených HTML tagů

Dnes jsem zapracoval na jednoduchém vylepšení své homepage - popisy, odkazy na obrázky, atd. jednotlivých projektů a jejich anglické a české verze jsou načítány z XML souboru. Během práce na této změně jsem opět narazil na jednu maličkou nepříjemnost, která souvisí s třídou XDocument - pokud mám nějaký text například uvnitř elementu "Text" a tento text obsahuje nějaké HTML značky, ať už je to a, b nebo div, tak se tyto značky nezobrazí/neaplikují.

Read the rest of this post »

29 Jan 2010

Už se to blíží

Photolum_logo

Již brzy ve vašich prohlížečích.

17 Jan 2010

Client-side validace a LINQ to SQL/Entities v ASP.NET MVC 2

ASP.NET MVC 2.0 přijde s jednou velmi hezkou novinkou, a to vestavěnou podporou pro validace na straně klienta pomocí jQuery. Snadněji by to už udělat nešlo: pokud máme například formulář na vytvoření nového komentáře, stačí si vytvořit třídu Comment s vlastnostmi reprezentujícími jednotlivá pole formuláře a odekorovat je patřičnými atributy. Komplikace nastává v případě, kdy máme tuto třídu už automaticky vytvořenou, například vygenerovanou pomocí LINQ to SQL podle databáze. Řešením by bylo něco jako "partial properties", nic takového ale v .NET frameworku nenajdeme. Takže co s tím?

Read the rest of this post »

11 Jan 2010

Silverlight a práce s databází

Tento článek měl být původně jen krátkým příspěvkem na blog, i proto to odlehčené pojetí a epická šíře zezačátku, ale rozrostl se v téměř sedmistránkový útvar, a proto jsem se rozhodl ho publikovat na Programujte.com. Zde tedy jen perex a odkaz na celý článek:

V centru dnešního softwarového světa stojí databáze, snad by ani nebylo troufalé říci, že většina větších aplikací nějakou tu databázi využívá. Vytvořit takovou „database-driven“ aplikaci v Silverlightu se může, zejména v porovnání s technologiemi jako ASP.NET, zdát zbytečně komplikované. Účelem tohoto článku je dokázat opak – ukázat čtenářům, že je to ve skutečnosti velmi snadné.

Celý článek je zde.

27 Dec 2009

Zvýraznění zdrojáků v Posterous

E-mailový redakční systém Posterous, který používám na tomto blogu, má takové omezení. Tím je nepodpora plug-inů, vše, co Posterous umí, musí být implementováno přímo jeho vývojáři. Ač to tak na první pohled vypadat nemusí, Posterous zvýrazňování zdrojového kódu umí.

Je to  velmi snadné, stačí jen obalit kód do tagů code (v hranatých závorkách). Navíc můžete, pomocí atributu lang, specifikovat i jazyk pro zvýraznění syntaxe. Na výběr máte z hodnot 'cpp', 'c', 'c++', 'c#', 'c-sharp', 'csharp', 'css', 'delphi', 'pascal', 'java', 'js', 'jscript', 'javascript', 'php', 'py', 'python', 'ruby', 'rails', 'ror', 'sql', 'vb', 'vb.net', 'xml', 'xhtml', 'xslt', 'html', 'xhtml'.

Výsledku jste si už mohli všimnout v několika článcích na tomto blogu, ale ještě na ukázku:

// Volání jedné metody
MessageBox.Show("Hello World");

17 Sep 2009

IT podcasty, které se vyplatí sledovat

Jakožto maximálně spokojený majitel přehrávače Microsoft Zune 80GB ho využívám nejen k přehrávání hudby, ale za pomoci Zune software i ke stahování různých zajímavých podcastů (zvukové stopy a videa).

Dalo by se říct, že podcast je vlastně “multimediální RSS” – v Zune software či jiné aplikaci (podcasty podporují i iPody, existují i stahovátka na desktop,…) zadáte adresu RSS feedu a daná aplikace vám pak nový obsah automaticky stahuje. Osobně stahuju šest podcastů ze světa techniky:

  • .NET Rocks! – Má už něco přes 400 dílů, každý v průměru cca 45 minut. Výborná kvalita, spousta zajímavých informací, interviews, …
  • ASP.NET Podcast – Informace ohledně ASP.NET
  • StackOverflow Podcast – Kdo nezná StackOverflow.com, jako by nežil :-)
  • Hanselminutes – A další výborná věc, podcast Scotta Hanselmana, známého .NET vývojáře. Opět spousty informací o nejnovějších technologiích, tipy a podobné věci
  • Channel 9 – Novinky ze světa MS technologií
  • Sparkling Client – zaměřené jen na Silverlight a další RIA technologie

Možná, že tento výčet někomu přijde na jedno brdo, ale mně vyhovuje. Pokud hledáte nějaké technické podcasty, doporučuju tyto!

Image

14 Jun 2009

Výběr výborných témat na StackOverflow.com

O tomto serveru málokdo z programujících lidí nikdy neslyšel; StackOverflow.com je programátorská poradna s velkou uživatelskou základnou. Kromě samých seriózních a závažných věcí (:-)) se zde občas objeví i témata vtipnějšího charakteru, jako například “Jaké špatné návyky máte kvůli programování”. A tady je seznam mých oblíbených témat, doporučuju si je někdy během nudných víkendových večerů pročíst.

What code would you have on your wedding cake?

Programmer Jokes — what’s your best one?

Great programming quotes

How can you tell if a person is a programmer?

What is your favorite “programmer” t-shirt?

Jon Skeet Facts?

What real life bad habits has programming given you?

12 May 2009

Vytváření vlastních sekcí ve web.configu

Častým způsobem ukládání nastavení webových aplikací v ASP.NET je ukládání do web.configu. V základu máme možnost přidávat jen elementy do sekce <appSettings>. Takový postup je OK, dokud nám stačí ukládat jen jednoduché věci ve tvaru klíč-hodnota. Kousek XML uchovávající například název stránky může vypadat následovně:

<appSettings>
    <add key="PageTitle" value="Moje stránka" />
</appSettings>

Read the rest of this post »

Twitter