IBM Was7 Trial Crack

Az ember azt hinné, hogy támogatják, ha azért dolgozik, hogy egy szoftvergyártó el tudja adni a piacon a nem túl jól sikerült megoldását. De nem. Minden alkalmazás szerver gyártó képes arra, hogy legyen fejlesztésre ingyenesen használható alkalmazásszervere… Kivétel ez alól a kék óriás, akinek csodaterméke azzal fogadott ma, hogy:

WSVR0027I: A termék 6 napon belül lejár.

Gondoltam ennek a felese tréfa, utána néztem a dolognak. Első körben nézzük, hol szerepel a hibaüzenet (WSVR0027I):

c:\work\IBM\WebSphere\AppServer\lib\bootstrap.jar\com\ibm\ws\bootstrap\TimeBomb.class

Hmm, nagyon ügyes… Én is pont olyan osztályba tenném az ilyen ellenőrzéseket, aminek cseppet sem árulkodó a neve…

A kódot elemezve az alábbi megállapításokat lehet tenni:
* A licenszet tartalmazó fájl helye: WAS7 könyvtár/properties/was.license
* Ha nincs ott még licensz fájl, a program kedves, és létrehozza nekünk… (tehát a fájl törölgetésével mindig 60 napunk lesz használni)
* A licensz fájl egy igen komplikált struktúrát használ (mondhatni egy igazi nagyvállalati megoldás). Van egy verziója (int) ami mindig 0-a, valamint tartalmaz két dátumot. Amennyiben ez a két dátum egyezik, akkor a licensz soha nem jár le…

Aki elő szeretne állítani magának egyet (ami nem jár le soha) az angol postban látható igen komplex programot kell megírnia…

Diskpart

Sokan nem tudják, de a microsoft az XP megjelenése óta nyújt megoldást a partíciók átméretezésére.
Az alkalmazás neve DiskPart.exe

használata:
Diskpart.exe

utánna az alábbi okosságokat lehet mondani: HELP 🙂

De a lényeg:

select disk 0 (primary ide, vagy 1)
detail disk (hogy valóban az e)
select volume 2
detail volume
extend

vagy
extend size=1024 (pl.: 1 GB)

És már kész is. Különösen hasznos ez, ha virtuális gépeket gyártunk, és elfogy a partíciórol a hely. Virtuális gépeknél amúgy is mindig használjunk dinamikus lemezt, és mondjuk 100 Gb-osat, így mindig csak annyi helyet fog használni amennyi a tényleges foglalás. Ha buták voltunk, és nem ezt tettük, akkor átméretezhetjük a lemezt a VDH Resizer nevű programmal, és utánna növelhetjük a méretét ügyesen.

Asp .Net Textbox OnKeyDown

Valamiért sikerült kihagyni pár Event kezelését az ASP .Net kontrolokból. Lehet annyira biztosra akartak menni, hogy senki nem csinál “butaságot”, hogy inkább kihagyták az ilyen jellegű eventeket. Nincs onKeyDown, nincs probléma.
De ha mégis kell, akkor mi a teendő?
Első körben illik írni egy scriptet, ami elfedi a különböző böngészők által megvalósított event kezelés problémáját. A Példa projektben ez a WebApplication1\WebApplication1\js\EventAddon.js fájl.
Ezt használjuk majd ügyesen, hogy kliens oldali JavaScript eseményekre feliratkozzunk. Mivel a .Net az .Net ezért illik szépen (.Net-esen) használni a JavaScriptet, azt pedig az alábbi módon kell:

1; A Script managernek megmondjuk mi az a script amit használni akarunk:

<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference path="js/EventAddon.js" />
</Scripts>
</asp:ScriptManager>

2; Ha már betöltöttünk egy scriptet, használjuk is:

<script type="text/javascript">
Sys.Application.add_init(appInitHandler); //ha betöltésre került az oldal, akkor inicializáljuk a scriptet
function appInitHandler() {
var textBoxKD = $get("TextBox1"); //elkérjük a textbox kontrollt
XBrowserAddHandler(textBoxKD, "keyup", KeyDownHandler); //lekezeljük a keyup eventet
}

function KeyDownHandler(e) {
__doPostBack('TextBox1', 'TextChanged'); //ha keyup event van szólunk a .net-nek hogy textchanged (ez alap esetben csak enternél vagy fókuszvesztésnél történik meg)
}
</script>

3; örülünk

A teljes project (VS 2008 SP1 C#) megtalálható itt:
http://voji.hu/media/blogs/voji/development/csharp/OnKeyDown_WebApplication1.zip

Oracle lockok kezelése

A lock-ok listája:

SELECT l.inst_id,SUBSTR(L.ORACLE_USERNAME,1,8) ORA_USER, SUBSTR(L.SESSION_ID,1,3) SID,
S.serial#,
SUBSTR(O.OWNER||'.'||O.OBJECT_NAME,1,40) OBJECT, P.SPID OS_PID,
DECODE(L.LOCKED_MODE, 0,'NONE',
1,'NULL',
2,'ROW SHARE',
3,'ROW EXCLUSIVE',
4,'SHARE',
5,'SHARE ROW EXCLUSIVE',
6,'EXCLUSIVE',
NULL) LOCK_MODE
FROM sys.GV_$LOCKED_OBJECT L, DBA_OBJECTS O, sys.GV_$SESSION S, sys.GV_$PROCESS P
WHERE L.OBJECT_ID = O.OBJECT_ID
and l.inst_id = s.inst_id
AND L.SESSION_ID = S.SID
and s.inst_id = p.inst_id
AND S.PADDR = P.ADDR(+)
order by l.inst_id;

Lock-ok eltávolítása:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

Ahol értelemszerűen a sid,serial# az előző selectből jönnek.

Visio 2007

Van amikor az ember dolgozni szeretne, és azon kapja magát, hogy a szoftver amit használ ebben nem igazán támogatja.
Így jártam én a Microsoft Visio 2007-el, amikor adatbázist szerettem volna tervezni.
Természetesen a help, hibátlan magyarsággal, rövid és velős választ ad:


A Microsoft Office Visio programban Adatbázismodell-diagram sablonját használó személyek gyakori kérdése, hogy Mi történt a Létrehozás és a Frissítés parancsokkal?"
Röviden összefoglalva annyi, hogy a Létrehozás és a Frissítés parancs nem érhető el a Microsoft Office Visio 2003 Standard és Professional kiadásaiban vagy a Microsoft Office Visio 2007 alkalmazásban.
Az adatbázis-modellező szolgáltatások teljes körét, beleértve a Létrehozás és Frissítés parancsot is, a Microsoft Office Visio vállalati építészek számára készült verziójában találhatja meg. A Visio vállalati építészek számára az MSDN Premium Subscription része, mely a Microsoft Visual Studio Professional és a Visual Studio Team System szerepalapú kiadásaival érhető el.

Ezen a ponton látszik, hogy a help fordítói komolyan vették a munkát. Sebaj.
Tehát aki adatbázis modellből adatbázist akar generálni, annak szüksége van vállalatépítészeti visiora.
Mivel én komoly vállalatépítésznek gondolom magam, beszereztem egy Visio for Enterprise Architecht-et biztos ami biztos.
Nagy rutinnal a telepítő azt mondta, hogy Visual Studio nélkül ez nem telepíthető.
Szerintem meg igen, aki nem hiszi írja bele a registrybe az alábbi sort, és már működik is.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS\VSTD]
"ProductDir"="."

Egyébként a 2007-es Visio teljesen ugyanaz az engine mint a 2005-ös EA edition. Picit módosítottak a guin, eladták ugyanazt, mégegyszer, és még db-t sem lehet vele generálni…
Ha valaki mindkettőt felrakja (akárcsak én), akkor amint a másik verziót indítjuk kedvességből kapunk 10 perc setup-ot…
MS

SVCgen batch processing, and parameters

Az SVC technológia kapcsán (ami egyébként kivételesen ötletes) az az érzése lehet az embernek, mintha nem lett volna rá idő rendesen beintegrálni a Visual Studio 2008-ba, ugyanis nincs módunk a kliens stub-ok generálására studióból. Vagy legalábbis én még nem jöttem rá erre. De sebaj, van megoldás. Írni kell két bat filét.

svc.bat

@echo off
echo Starting servicestub generation 
cmd /V:ON /C svcgen.bat

svcgen.bat

@echo off
set serviceList=system/system.svc,other/other1.svc,common/common.svc,admin/admin.svc

set serviceHost=http://localhost:3467/services/
set outputDir=.\client\serviceproxy\servicestubs\
set outputConfig=.\..\..\..\services_app.config
set resourceFile=.\..\common\bin\Debug\common.dll
set svcTool="c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SvcUtil"

set wsdlPostFix=?WSDL
set commonParams=/noLogo /target:code /l:cs /ser:datacontractserializer /importxmltypes

 
set cmdLine=%commonParams% /r:%resourceFile% /config:%outputConfig% /d:%outputDir%

del %outputDir%%outputConfig%
del /Q %outputDir%\*.* 

set firstrun=true

for %%a in (%serviceList%) do (        
  echo Processing service: %%a       
  echo ------------------- 
  rem echo %svcTool% %cmdLine% %serviceHost%%%a%wsdlPostFix%
  
  if "!firstrun!" == "false" (  
    %svcTool% %cmdLine% /mergeConfig %serviceHost%%%a%wsdlPostFix%   
 )
    
  if "!firstrun!" == "true" (
     %svcTool% %cmdLine% %serviceHost%%%a%wsdlPostFix%     
     set firstrun=false
 )  
)

A szolgáltatásokat a serviceList listába kell felvenni, vesszővel elválasztva.
A /r: paraméter arra szolgál, hogy azon osztályok, amik szerepelnek a megadott dll-ben nem kerülnek legenerálásra a kliens oldalon.

Ha igazán széppé akarjuk tenni a megoldást, akkor kell írnunk egy alkalmazást, ami a végeredményül kapott services_app.config fájlt bele tudja illeszteni az app.config fájl megfelelő xpath helyére.

C# Singleton

Generics mint fogalom létezik a .net-ben. És ez jó. Gondoltam csinálok egy singleton ősosztályt mert az legalább olyan jó mint a generics.

   public abstract class Singleton<T> System.Object, new()
    {
        private static T _instance;

        public static T get()
        {
            if (_instance == null)
            {
                _instance=new T();
            }
            return _instance;
        }
    }

Öröm boldogság, gondoltam. De a fordító nem örült, és ezt mondta:

Error 1 Constraint cannot be special class ‘object’

Ejnye. Megnéztem a helpet.

Compiler Error CS0702
The following types may not be used as constraints: System.Array, System.Delegate, System.Enum, or System.ValueType.

Szerencsére, mint a Microsoft termékeknél általában, mindig van egy alternatív megoldás.

    public abstract class Singleton<T>
    {
        private static T _instance;

        public static T get()
        {
            if (_instance == null)
            {
                _instance = System.Activator.CreateInstance<T>();
            }
            return _instance;
        }
    }