piątek, maja 18, 2012

Notatki deweloperskie

Różnorodne linki:

Fenix de Icaza

Okazało się, że żywotność Mono jest wielka, kiedy wydawało się, że to koniec drogi gdy firma Novel (opiekun i właściciel praw do Mono i Mono Touch) została wykupiona przez Attachmate. Jednak twórca Mono założył nową firmę Xamarix i nabył prawa do używania Mono. W wyniku tego mamy nowe wersje, już płatne MonoDeveloper IDE 2.8, MonoTouch Enterprise (dla Apple), Mono for Android oraz wtyczkę do VS pod nazwą Mono for Android Visual Studio plug-in. Nie wiadomo czy idea programowania w C# na telefony z Androidem wypali (java w końcu nie różni się tak bardzo od C#) ale z drugiej strony Mono for Android tworzy aplikacje natywne najbardziej zbliżone do GUI aplikacji w Javie. Żróło - http://www.devproconnections.com/content1/topic/xamarin-monotouch-mono-android-141871/catpath/mobile-development. Zawsze podziwiałem Mono za jego żywotność i wielość różnych bibliotek dostępnych dla programistów w .NET.

Osobiście myślę, że lepiej będzie skupić się na narzędziach do tworzenia aplikacji dostępnych od Google (nawet AppInventor) lub Phone Gap.

wtorek, maja 15, 2012

Raport na temat Crystal Reports

Źródło - http://wiki.sdn.sap.com/wiki/x/7YPqDQ

Niełatwo się połapać w zawiłościach wersji CR firmy SAP. Ogólnie można powiedzieć, że mamy dwie wersje:

  1. Crystal Reports 2011 (najnowsze wydanie)  pakietu przeznaczonego dla “zwykłych” deweloperów nie mających potrzeb integrowania się z maszynerią backend-ową SAP (a więc BI 4.0), pragnących jedynie sprawnego narzędzia do podłączenia się do źródła danych i ładnego sformatowania wyników. Takich narzędzi jest na rynku wiele np.: Jasper, iReport, Delphi też coś ma, MS. CR 2011 jest płatne ale okrojone wersje, dla deweloperów Java (CR for Eclispse)  i .NET (CR for VS2010) do zabudowania w istniejące aplikacje, są za darmo.
  2. Crystal Reports for Enterprise – jak nazwa wskazuje ukierunkowane na wykorzystanie w ciężkich warunkach korporacyjnych i wraz z BusinessObjects BI 4.0 (ciekawa kombinacja słów BO i BI co przez to chciano zakomunikować?) ma przeciągnąć klientów korporacyjnych (czytaj – związać) z SAP-owską platformą BI oraz z połączeniem do danych innych systemów SAP-owskich np. SAP BW.

Ten dualizm będzie kontynuowany z uwagi na szeroką bazę istniejących rozwiązań i przywiązań deweloperów. Mówi się o dołączeniu do CR4E możliwości z CR ale to może potrwać. Nawet po tym fakcie zbliżenia CR będzie nadal rozwijany i ulepszany dlatego, że nie wszystkie możliwości funkcjonalne oraz związane z nimi SDK obecne w CR będą przeniesione do CR4E. Jest to nieudolne tłumaczenie tego paragrafu z oficjalnej strony SAP z artykułu pt. “From Crystal Reports 2008 to SAP Crystal Reports 2011 or SAP Crystal Reports for Enterprise” (kto się nie zgadza z taką interpretacją niech mi da znać):

The first question we usually come across is: Why are you releasing two versions? The reason behind the two versions is due to the need to innovate alongside the need to continue providing our existing customers with the ability to use CR as they have in the past. We have been working on this new version of Crystal Reports for about 4 years. We felt that, with the release of SAP BusinessObjects BI 4.0, it gave us a unique opportunity to release the new designer to a target audience of customers who leverage the BI platform and connect to data from SAP BW.  As mentioned, we wanted to continue providing the features with which our existing customers were familiar. As such, we needed to continue delivering Crystal Reports in it's current form as well. In the future, many of the features with which are customers are familiar from Crystal Reports 2008 will move into the Crystal Reports for Enterprise designer; however, this will take a few minor releases to achieve. Even when we have closed the major gaps between Crystal Reports for Enterprise and Crystal Reports 2008, we will continue to deliver and support minor enhancements to the Crystal Repots 2008 / Crystal Reports 2011 line of products. This will be required as not every feature from the designer and associated SDKs will be moved into the Crystal Reports for Enterprise product line

CR4E jest NOWĄ WERSJĄ CR skierowaną na lepszą integrację z istniejącym rozwiązaniami korporacyjnymi SAP - wykorzystaniem warstwy semantyczne dostępnej w BI 4.0 oraz dostępu do danych w repozytorium SAP BW (połączenie SAP BEx query wykorzystujące SAP BICS connectivity). Ma być podstawą wszystkich przyszłych  wersji CR.

Ciekawe porównanie możliwości obu wersji i zalecenia którą z nich wybrać – jeżeli obecnie korzysta się z CR 2011 i chce się skorzystać z nowej warstwy semantycznej oraz możliwości platformy BI 4.0 (tj. SAP NetWeaver BW 7, Analysis Views, SAP BusinessObjects BI4.0 relational universe (unx), olap universe (unx)) to warto przejść na CR4E, jeżeli potrzebujemy narzędzia do raportowania, dostępu bezpośredniego do różnych źródeł danych, Live Office, Business View, Direct RDBMS/OLAP, SAP ERP czy SAP NetWeaver BW 3.5 to raczej lepiej pozostać przy CR – jest to tłumaczenie z “In general if you are currently using Crystal Reports 2008 and you want to leverage the new semantic layer and the new BI4.0 platform then SAP Crystal Reports for Enterprise is the version of choice. If you require report creation API, direct data access, SAP ERP access then SAP Crystal Reports 2011 is the version of choice.

Dodatkowe informacje:

poniedziałek, maja 14, 2012

Szukanie metadanych w Crystal Reports

Okazuje się, że dzięki doskonałej dokumentacji na stronach SCN SAP można stworzyć programik, który przejdzie po obiektach raportu i jego podraportów i “zaraportuje” swoje wyniki:
 
   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using CrystalDecisions.CrystalReports.Engine;
   6:  using CrystalDecisions.Shared;
   7:  // How to find the ReportObjects in the Crystal Report using Crystal reports .NET SDK? Saurabh Pathak (SCN Community)
   8:  namespace PrzeszukiwanieObiektowRaportuCR
   9:  {
  10:      class PrzeszukiwanieObiektowRaportuCR
  11:      {
  12:          static void Main(string[] args)
  13:          {
  14:              string raport = "dokumentydostawyekkw.rpt";
  15:              raport = "Listprzewozowy.rpt";
  16:              ReportDocument rpDok = new ReportDocument();
  17:              rpDok.Load(raport);
  18:              Console.WriteLine("Opis definicji raportu "+ raport);
  19:              foreach (ReportObject obiekt in rpDok.ReportDefinition.ReportObjects)
  20:              {
  21:                  Console.WriteLine("1"+ obiekt.Name + "\t"+ obiekt.Kind.ToString() + "\t" + obiekt.ObjectFormat.ToString());
  22:              }
  23:              if (rpDok.Subreports.Count > 0)
  24:              {
  25:                  Console.WriteLine("Podraporty...");
  26:                  foreach (ReportDocument rdok in rpDok.Subreports)
  27:                  {
  28:                      Console.WriteLine(" 2 " + rdok.Name);
  29:                      foreach (ReportObject obiekt in rdok.ReportDefinition.ReportObjects)
  30:                      {
  31:                          Console.WriteLine("  3" + obiekt.Name + "\t" + obiekt.Kind.ToString() + "\t" + obiekt.ObjectFormat.ToString());
  32:                      }
  33:                  }
  34:              }
  35:              else
  36:              {
  37:                  Console.WriteLine("Ten raport nie ma zagnieżdżonych raportów");
  38:              }
  39:              Console.ReadLine();
  40:          }
  41:      }
  42:  }



Nie jest to wcale trudne jak widać!

Szukanie metadanych w Crystal Reports

Okazuje się, że dzięki doskonałej dokumentacji na stronach SCN SAP można stworzyć programik, który przejdzie po obiektach raportu i jego podraportów i “zaraportuje” swoje wyniki:
 
   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using CrystalDecisions.CrystalReports.Engine;
   6:  using CrystalDecisions.Shared;
   7:  // How to find the ReportObjects in the Crystal Report using Crystal reports .NET SDK? Saurabh Pathak (SCN Community)
   8:  namespace PrzeszukiwanieObiektowRaportuCR
   9:  {
  10:      class PrzeszukiwanieObiektowRaportuCR
  11:      {
  12:          static void Main(string[] args)
  13:          {
  14:              string raport = "dokumentydostawyekkw.rpt";
  15:              raport = "Listprzewozowy.rpt";
  16:              ReportDocument rpDok = new ReportDocument();
  17:              rpDok.Load(raport);
  18:              Console.WriteLine("Opis definicji raportu "+ raport);
  19:              foreach (ReportObject obiekt in rpDok.ReportDefinition.ReportObjects)
  20:              {
  21:                  Console.WriteLine("1"+ obiekt.Name + "\t"+ obiekt.Kind.ToString() + "\t" + obiekt.ObjectFormat.ToString());
  22:              }
  23:              if (rpDok.Subreports.Count > 0)
  24:              {
  25:                  Console.WriteLine("Podraporty...");
  26:                  foreach (ReportDocument rdok in rpDok.Subreports)
  27:                  {
  28:                      Console.WriteLine(" 2 " + rdok.Name);
  29:                      foreach (ReportObject obiekt in rdok.ReportDefinition.ReportObjects)
  30:                      {
  31:                          Console.WriteLine("  3" + obiekt.Name + "\t" + obiekt.Kind.ToString() + "\t" + obiekt.ObjectFormat.ToString());
  32:                      }
  33:                  }
  34:              }
  35:              else
  36:              {
  37:                  Console.WriteLine("Ten raport nie ma zagnieżdżonych raportów");
  38:              }
  39:              Console.ReadLine();
  40:          }
  41:      }
  42:  }



Nie jest to wcale trudne jak widać!