De Werkplek

> OS/2 Index <

De werkplek

De object-georiënteerd van de WPS

Technische achtergrond: SOM

WPS klassen

De Werkplek inrichten

De werkplek versnellen

Enige door mij gebruikte WPS toevoegingen

WPS weetjes




De Werkplek stamt uit 1992

Sinds OS/2 versie 2.0 (1992) is de Werkplek (Workplace Shell, WPS) de grafische schil van OS/2. Deze uit 1992 daterende grafische gebruikersinterface is nog steeds het toonbeeld van hoe een buroblad moet zijn: een plaats om overzicht te houden en productief te zijn. De WPS sleutelwoorden zijn steeds vrijheid, integratie en object georiënteerdheid. Hiermee creëert iedere OS/2 gebruikers zijn eigen werkplek. Zie: Werkplek.gif voor een afbeelding van mijn desktop.

Microsoft bepaalt ons perspectief

Maar weinig PC gebruikers kennen zo'n vrijheid. De meesten gebruikers zijn al blij als ze hun data in Mijn documenten en hun programma's achter Microsofts startknop terugvinden. Maar als ik hen vertel dat er meer is dan Microsoft, worden ze niet blij en verwonderd, maar boos en verstoord. Laat mijn wereldbeeld met rust! Ik ben met Windows opgegroeid. Het zat op iedere PC. Hun angst om de controle over hun computer te verliezen leidt tot bekrompenheid. Ze kiezen voor de gemakkelijkste weg. Ook al klagen ze steen en been.

Wat is integratie?

Integratie betekent simpelweg: Brengt alles tezamen. Sluit niets uit. OS/2 is heel naïef ontworpen om allerlei programma's en data op lokale bestandssystemen en netwerk servers via open standaarden bij elkaar te brengen. Hiertoe presenteert OS/2 de OS/2 Werkplek GUI uw programma- en databestanden visueel als pictogrammen: "objecten" waar u iets mee kunt doen.

Wat is een object?

Dit is in het digitale tijdperk een moeilijk te beantwoorden vraag. Een object is een voorwerp of een afbeelding van iets waar u (het subject) een relatie mee heeft. Uw monitor is ongetwijfeld een reëel object, maar dat geldt niet voor de elementen van uw Desktop. Daar ziet u objecten die in werkelijkheid niet bestaan. Afbeeldingen als Deze computer zijn maar plaatjes op uw scherm. Dikke kans dat uw OS/2 partitie niet herkend wordt. En u van Microsoft het advies krijgt om de partitie maar te formatteren (= definitief wissen).

Een object kan dus een werkelijkheid of een drogbeeld zijn. Een klik-hier dame kan een virus zijn. De desktop metafoor is dus per definitie een drogbeeld. Het symboliseert iets, maar u weet niet of het zo werkt.

Goed. Maar kunnen we de PC en TV nog wel vertrouwen. En kunnen we onszelf - voor zover we de PC en TV voor werkelijkheid aannemen - nog wel vertrouwen? Ik denk van niet. U ziet sowieso deze reële en virtuele objecten op hun kop. Gewoon omdat onze ooglens alles omkeert. En wat is een reëel object, als u weet dat onze hersenen alleen datgene herkenen wat voor ons biologisch gezien belangrijk is? Mannen klikken eerder op een blote tiet, dan op een wijsgerige verhandeling. Uw brein richt zijn aandacht op wat het wenst te zien

Wat is object georiënteerdheid

Object georiënteerdheid betekent: Ik zie iets (het object) en wil daar wat mee doen. Een OS/2 gebruiker gaat dan niet uit van al dan niet legaal gelicenseerde (gehuurde) programma's die hij achter de startknop ziet, maar van de bestanden die reeds in zijn bezit zijn. Met zijn bestanden wil hij iets mee doen. Die moet hij dus in het vizier krijgen. En wel op het liefst op zo'n manier dat hij alles ziet wat u ermee kunt doen. Niet alleen wat het door u eraan gekoppelde standaard programma (onder Windows de Verkenner) u hierover verteld. En dat is nu net waar de OS/2 Desktop u behulpzaam in is met zijn object georiënteerde "Open als" menu. Zoek het bestand op , sleep zijn map als reflectie naar de desktop en open de bestanden zoals uw wilt. Dat is object (i.p.v. programma) georiënteerdheid.

State of the art?

Nu denkt u misschien dat u met Windows 2000 (of Windows 98 of een latere XP versie) al op de "current state of technologie" bent aangeland. Maar niets is minder waar. Microsoft loopt al vele jaren achter op de ontwikkelingen die er elders al waren. Dat een product door Microsofts marketing versie 2000 genoemd wordt betekent nog niet dat het jaar 2000 technologie is.


Hoezo zou mijn bestand door het wijzigen van zijn extensie onbruikbaar worden? Onder OS/2 bestaat dit probleem niet. OS/2 houdt het bestandstype als uitgebreid attribuut voor u bij. En waarom verbergt MS Windows de extensies van de haar "bekende bestandstypen"? Gewoon omdat Microsoft u haar gemanipuleer met bestandsnamen niet wil laten zien. Op die manier hoopt ze uw documenten ongemerkt aan haar eigen bestandsformaten te koppelen.

Maar al te vaak waren Microsofts inspanningen erop gericht om de niet door haar bijgebeende technologie tegen te houden. Vraag het een MAC, Linux of een OS/2 gebruiker (Microsoft en de anderen en OS/2 History). En als Microsoft om ook mee te doen "state of the art" technologie met uw gelden opkoopt, maakt Microsofts er vaak een uitgeklede versie van, waarvan alleen Windows gebruikers kunnen profiteren (Zie het trieste einde van Virtual PC onder OS/2).

Wat ik in Microsofts desktop producten mis is de universele blik. Van een spelbepalende marktleider die van concurrentie weinig gebaar te duchten heeft, verwacht je een minder bekrompen blik op de werkelijkheid. Zoals het streven naar een integrating platform die de formele academici van IBM en de "barbaren van Bill Gates" eens hadden toen ze OS/2 gezamenlijk ontwikkelden.

De goedkope IBM PC moest met iedere server van haar klanten te verbinden zijn. Door de praktische instelling van Philip Donald Estridge en de de hubris van de eerste Microsoft programmeurs werd IBM's niemendalletje product "Personal Computer" een doorslaand succes.

Maar de huidige monopolist Microsoft integreert haar desktop slechts met haar eigen opgekochte producten en diensten. Om die reden is de Windows desktop nog steeds op de Startknop van Microsofts producten georienteerd, die u ongetwijfeld naar haar webportals leiden. Uw eigen bestanden en uw eigen relaties vindt u er niet gemakkelijk in terug. Tenzij ze alles in Microsoft Documents en diensten (Hotmail, MSN, MS Messenger) plaatsen. Microsofts op korte termijn denkende commercie mist de weidse blik.

Terug naar OS/2

Wat heeft de OS/2 desktop u dan te bieden? Veel, want het geeft een universele kijk op uw eigen bestanden. U kunt ieder bestand of map openen zoals uw wilt. Voor OS/2 gebruikers is het niet vanzelfsprekend dat een *.doc bestand in het MS Word-bestandsformaat opgesloten is. Het kan evengoed in het universele ANSI tekstformaat geschreven zijn. En dat opent wel zo snel.

GUI

Presentation Manager

De Werkplek is de grafische gebruikers interface (GUI, Desktop) van OS/2 Warp. Het grafische programma Presentation Manager (pmshell.exe) brengt de inhoud van de map \Werkplek of \Desktop schermvullend in beeld.

De Workplace Shell is een complex object-georiënteerd programma, dat bij het opstarten al tientallen draden (threads) gebruikt. PMShell gebruikt ook behoorlijk wat (virtueel) geheugen. Vooral als u veel WPS toevoegingen (WPS enhancers) registreert en met bitmaps gevulde mappen open laat staan.

De werkset van de WPS blijft evenwel relatief laag (4-8 MB), zodat u er ook op een 16-32 MB RAM systeem nog prima mee overweg kunt. Dit in tegenstelling tot andere object georiënteerde GUI's als de Active Desktop van Windows 98 en opvolgers of de GNOME onder Linux.

PMShell tovert de door u benaderde bestanden, netwerkbronnen, programma's en apparaten om in manipuleerbare objecten, die u met uw muis bestuurt.

PMShell creëert een object-georiënteerde werkomgeving, waarvan de weergave en het gedrag van ieder object tot in details aan de wensen van de gebruiker aan te passen is.

Config.sys

Het gedrag van ieder object wordt bepaald door de informatie die PMShell in zijn uitgebreide attributen en de OS/2 INI-bestanden aantreft. Dit alles is vastgelegd in de CONFIG.SYS. Zie hiervoor de interne link: Hoe wordt de Werkplek (WPS) geladen?

Onder OS/2 is ieder bestand uniek

Zo moeilijk als dit object georiënteerde systeem aan een programma georiënteerde Linux of Windows gebruiker uit te leggen is, zo gemakkelijk werkt het in de praktijk. Het lijkt wat op de pseudo-objectgeoriënteerdheid van Microsofts Windows Explorer of de KDE Desktop, maar je kunt met OS/2's waarachtige object georiënteerdheid veel meer mee doen... Want onder de WPS van OS/2 is ieder bestand een uniek instelbaar object. En niet slechts het slachtoffer van zijn toevallige extensie of MIME type. Deze unieke eigenschappen worden vastgelegd in zijn uitgebreide attributen.

De object-georiënteerd van de WPS

> Top <

PMShell

Het programma PMShell levert de grafische schil van OS/2. Deze PMShell kent twee gezichten. De onderste schil van de Graphical User Interface (GUI), Presentation Manager (PM), regelt het vensterbeheer. Hij lijkt op de programma-georiënteerde schil van MS Windows. Niet toevallig is hij deels door Windows ontwikkelaars ontwikkeld.

Maar daarna wordt PMShell als Workplace Shell (WPS, de Werkplek) opgestart. Dit deel stelt ons in staat om de bestanden rechtstreeks te manipuleren. Het is OS/2's object-georiënteerde schil (Object Oriented User Interface, OOUI). U werkt hier met objecten (pictogrammen), grafische afbeeldingen van programma's, mappen, bestanden, printers en schijven. Dit oorspronkelijk 16 bits deel is niet toevallig met behulp van Apple ontwikkelaars ontwikkeld.

Bill Gates en OS/2

Dit was in overeenstemming met Bill Gates plannen voor OS/2. Bill Gates wilde vooral de Apple functionaliteit op het PC platform. Drag and Drop op een object georiënteerde gebruikersinterface waren het summum dat hij op het PC platform meende te kunnen bereiken. Dat IBM voor haar IBM 286 Desktop zakelijke gebruikers ook transparante netwerkfunctionaliteit en multitasking wilde was voor Bill Gates teveel van het goede. Hij koos voor de opvolger van DOS op het 286 platform de goedkope Windows variant Presentation Manager 286 voor Windows. Het formele einddoel bleef het netwerk capabele OS/2 , maar in de tussentijd moesten 16 bits MS Windows applicaties kunnen draaien (Zie: Programmerende schooljongens leggen fundament voor software-imperium)

De Werkplek

Uw Werkplek is meestal een map op de bootdrive. Hier zet de WPS zijn vergrootglas op. Alles wat er op de PC te vinden is (aan documenten, mappen, software en hardware) kan als object op de Werkplek worden gerepresenteerd. Niet door passieve "snelkoppelingen", maar door het actief schaduwen van de WPS (object tracking) van de eigenscahppen van de desbetreffende objecten. De OS/2 werkplek volgt en registreert uw handelingen met manipuleerbare objecten. U hoeft de bestandslokaties van de bestanden en reflecties (koppelingen) dus niet zelf aan te passen.

Als iets aan een object of een objectklasse veranderd, wordt de weergave van de betreffende objecten geactualiseerd. Als een programma naar een andere plaat versleept word, wordt de lokatie in het programmaobject aangepast. Netwerkmappen die (tijdelijk nog niet) niet beschikbaar zijn, worden weergegeven als een gebroken link. Door haar actieve object-tracking geeft de Werkplek aldoor actuele informatie aan u door.

Objecten

Als u moeite heeft met het begrip object, dan vervangt u het woord maar door afbeelding of pictogram. In feite is alles wat de WPS als een pictogram weergeeft een object. Zo zijn alle mappen en bestanden objecten. Maar het begrip object slaat ook op programmaobjecten en visualisaties van randapparatuur die u niet met een bestandsbeheerder kunt zien. Denk hierbij aan het Stations object, objecten van printers en configuraties van programma's. Hun eigenschappen worden in uitgebreide attributen en in configuratiebestanden opgeslagen.

Objecten zijn manipuleerbaar

WPS objecten zijn visuele representaties van de logische eenheden die u op de computer aantreffen kunt. Te configureren hardware en programma's, mappen en bestanden. U kunt ze door met uw muis manipuleren. Door er met de rechter muisknop op te klikken ziet u wat u kunt doen (Werkplek.gif). Door de links klik "drag and drop" (slepen en neerzetten met de muis) van een bestandsobject naar relevant programma-object kunt u het bestand openen, printen, faxen, kopiëren, wissen etc. Maar u kunt ook fonts (lettertypenpalet) en kleuren (fontpalet) naar een venster verslepen om de weergave van mappen en programma's aan te passen.

Natuurlijk kunt uw werk ook via de menuopties van uw programma's doen. Bij beeldvullende applicaties is dat wel zo handig. Maar voor de WPS zijn uw eigen databestanden het uitgangspunt. Daarom heeft ieder bestand zijn eigen menu zodat u zijn gedrag kunt aanpassen. Want niet ieder doc bestand is bedoeld voor MS Word.

Object eigenschappen

Ieder object heeft eigenschappen die zijn gedrag bepalen. Ze zijn deels overgeërfd en deels uniek. WPS objecten zijn instanties van WPS klassen. Ze krijgen de eigenschappen van hun "soort" mee (overerving). Zo zal een bestand van het Type "Word Pro document" tot de klasse WordProDocObj behoren. En krijgt daarmee en speciale relatie met WordPro. Maar de meeste objecten zullen tot meerdere klassen behoren (polymorfie). Een "Word Pro document" is ook te manipuleren als gewone WPDataFile. Er geldt een klassehiërarchie.

De WPS stelt ons in staat om van ieder afgebeeld object (bestand, map, netwerkbron, hardware, programma) het gedrag afzonderlijk te bepalen. Dit doet u door rechts te klikken op een object en Instellingen (Engels: Properties) te kiezen. Zo kunt onder Type het bestandstype instellen. Door op het object rechts te klikken laat de WPS u ook zien wat u meteen met het bestand kunt doen.

Het belang van de uitgebreide attributen.

Hoe kent de WPS de eigenschappen van een object? De WPS eigenschappen van bestanden en mappen worden als metadata in hun uitgebreide attributen opgeslagen. U kunt dit met XWP onder Properties/File op pagina 2 van hun instellingenblok zien. Als de bestanden onder OS/2 verplaatst worden gaan hun EA' mee. Maar als ze onder een andere besturingssysteem verplaatst, dan gaan ze vaak verloren. Alleen de HPFS pinball.sys driver en de Linux JFS driver houden rekening met OS/2's uitgebreide attributen.

Het object-ID geeft WPS object persistentie.

Veel WPS objecten in de map Werkplek (Engels: DESKTOP) zullen slechts uit uitgebreide attributen bestaan. Hiertoe behoren de programma-objecten en de reflecties. Deze virtuele bestanden zijn niet in een bestandsbeheerder te zien. Ze ontlenen hun identiteit aan hun Object_ID (bijv. File_commander, WP_DESKTOP) die weer gekoppeld is aan een numerieke ingang in OS/2's INI boekhouding. Hun eigenschappen worden aan hun object ID gekoppeld. Het geeft hun persistentie.

Zo heeft het programma-object File Commander met het Object-ID FIle_Commander de Icon Positie 36,68 op de Desktop (zijn Parent ID, de map waarin hij zit). Na de versleepactie (ik werkte hier met VPC onder OS/2, vandaar de twee OS/2 muisknoppen) veranderde de Icon Positie naar 1,95 (links bovenaan) op de Desktop.

File Commander hoort onder de WPS enhancer Object Desktop tot de klasse WPSecpgm. Het kan dan met een wachtwoord worden beveiligd. De WPS enhancer Object Desktop breidt de mogelijkheden van de Workplace Shell dus met zijn klassen uit. Standaard behoort een Programma Object tot de WPProgramFile klasse, die voor iedereen toegankelijk is.



Enige voorbeelden uit de OS/2 en Windows 9x praktijk verduidelijken dit:

Als u bestanden of mappen met een bestandsbeheerder onder de WPS verplaatst, dan worden de paden van verplaatste WPS objecten automatisch voor u aangepast. Als u een programma onder Windows verplaatst, dan moet u alle naar het bestand verwijzende ingangen (StartMenu, ini-bestanden) handmatig aanpassen.

Ook "reflecties" van bestanden op de WPS gedragen zich als objecten. Als u een "reflectie" een andere naam geeft krijgen alle reflecties van het bestand (en natuurlijk het bestand zelf) de nieuwe naam. Dit geldt ook voor verandering van andere bestandseigenschappen. Als u reflecties wist, blijven de andere reflecties en het origineel (net als onder Windows 9x) bestaan.

Dit is een essentieel verschil tussen de Windows Desktop en de object georiënteerde Werkplek van OS/2. De Windows Desktop is uiteindelijk niet veel meer dan een verzameling "snelkoppelingen" (lnk-bestanden) die de Windows Verkenner (Explorer) passief gebruikt. Het levert een aardige verzameling plaatjes op, maar de functionaliteit is beperkt. Zinvolle menu opties (anders dan wissen) zullen ontbreken.

De objecten van de (zich eveneens op de harde schijf bevindende directory) Werkplek worden daarentegen actief bijgewerkt. Dus ook de ingangen in het OS2.INI bestand worden aldoor aan de actuele situatie aangepast (object tracking). Dit is een zo transparant gebeuren dat de termen Werkplek (dat wat u voor u ziet) en Workplace Shell (het eigenlijke programma, de shell) in de praktijk als synoniemen door elkaar worden gebruikt. Zo moeilijk als dit aan Windows gebruiker uit te leggen is, zo gemakkelijk werkt het in de praktijk.

Als u rechtsklikt op een pictogram verschijnt er een menu waarin de WPS aangeeft wat u ermee kunt doen: Openen als, instellingen veranderen, kopiëren, verplaatsen, afdrukken, reflectie maken etc. Als u het bestand wilt openen kunt u in het submenuutje van "Openen als" aangeven met welke applicatie u het bestand wilt openen (Werkplek.gif). Als u wilt, kunt u de "Openen als" en andere eigenschappen per bestand afzonderlijk instellen. Dat klinkt logisch en dat is het ook. Dat is voor mij de essentie van het begrip object-georiënteerd. Onder Windows wordt iedere extensie domweg aan één applicatie gekoppeld. De WPS gaat er daarentegen niet van uit dat u ieder DOC-bestand met Winword en elk HTML-bestand met Internet Explorer wilt openen. U bepaalt zelf uw keuzemogelijkheden door bepaalde extensies of uitgebreide kenmerken aan uw programma-objecten te koppelen. Dubbelklikken op het pictogram levert de standaardactie op, rechtskikken het keuzemenu.

Technische achtergrond: SOM

> Top <

SOM

De Workplace Shell (1992) ontleent haar flexibiliteit aan het System Object Model (SOM). SOM (1991) is een formeel object georiënteerd protocol, dat het mogelijk maakt om in verschillende programmeertalen geschreven "systeem objecten" (componenten, programmaonderdelen) samen te laten werken. Met dit protocol kunnen systeem objecten (componenten) in binaire vorm worden verspreid en dynamisch aan bestaande programma's worden gebonden. Dit lijkt niet zo bijzonder, maar bedenk wel dat dit abstracte protocol al weer 10 jaar vlekkeloos werkt onder OS/2. Een 10 jaar geleden geschreven WPS programma zal het nog steeds doen. Dergelijke duurzaamheid is zeldzaam in de vluchtige soft- en hardwarewereld.

OOP

De basis van SOM is gelegen in object georiënteerd programmeren (OOP). OOP is gemeengoed geworden. Ook in de niet object georiënteerde talen. Zonder de modulariteit van object georiënteerde programmeertechnieken zouden complexe applicaties (GUI's, browsers, office suites, games) niet meer te behappen zijn. Want niemand kan de details van vele manjaren programmacode overzien. Maar door het uitbesteden van data en bijbehorende functionaliteit naar zinvolle programma-onderdelen lukt dit wel.

Voor het klassieke procedureel programmeren zijn dit de functies van procedures en algoritmen, voor het object georiënteerde programmeren zijn dit de objectdata en procedures die in klassen opgeborgen zijn. Daar waar in verschillende talen geschreven programma's met elkaar moeten communiceren gebruikt men middleware lijm als SOM.

Klassen

Klassen staan voor concepten. De objecten( meestal: bestanden) waarmee een programma werkt. De leden (instanties) van een klasse hebben bepaalde kenmerken (een ID, bestandsgrootte, acties en vormgeving) en daaruit vloeiende functionaliteit (een venster opent zich, een vliegtuig vliegt, een monster hapt). De programmeur die een vensterklasse aanroept, hoeft de details van het aangeroepen object niet te kennen. Kennis van de bij de vensterklasse betreffende functie-aanroep WinJob() voldoet . Voor de interne functionaliteit van de in een klasse verstopte algoritmen wordt het zwarte doos model gehanteerd (data hiding).

OOP en de GUI

U maakt ook gebruik van data hiding als u met de muis op een WPS object klikt. De desktop metafoor verbergt de onderliggende soft- en hardware voor u. Alleen de voor u relevante gegevens zijn beschikbaar. Maar de details van de soft- en hardware kent u niet. Vanwege die veilige afscherming werd object georiënteerd programmeren een essentieel onderdeel van de grafische gebruikersinterface van moderne besturingssystemen.

API

Programma's gebruiken de Application Programmers Interface (API) van hun besturingssysteem: de basale routines die uiteindelijk door software bibliotheken van de compiler en het besturingssysteem worden uitgevoerd. De software bibliotheken regelen het contact met hardware, andere software en de onderdelen van het besturingssysteem. Of uw programma's werken hang taf van de ondersteuning van de standaardbibliotheken van de compiler, zoals die van de c bibliotheek, maar ook van bibliotheken van de hogere functies van het besturingssysteem zoals de Presentation Manager API.

IDE

Integrated Developers Environments (IDE) en toolkits bevatten vaak sjablonen. Min of meer kale programma 's met basale functionaliteit. Hiermee kunnen ook beginners krachtige programma's (bijv. virussen) schrijven. Maar hun nadeel is dat de programmeur aan een bepaalde taal gebonden is. Een opdracht om een venster te maken luidt anders onder OS/2, Windows of de Linux KDE. Zelfs binnen het Windows platform bestaan al verschillende Windows API smaken. De uitwisselbaarheid en samenwerking van softwarecomponenten van verschillende makelarij valt daarom enorm tegen.

Meestal is dat ook de bedoeling van de IDE leveranciers: monopolistisch ingestelde softwarefabrikanten als Oracle en Microsoft pinnen u graag vast aan hun exclusieve compilers en bibliotheken. Hun niet door andere softwarefabrikanten te gebruiken GUI en systeem APIs en bestandsformaten dwingen u om hun producten te blijven gebruiken.

Componenten

Componenten daarentegen zijn zelfstandige programmaonderdelen die niet per se aan een programmeertaal, API, product of besturingssysteem gebonden zijn. Ze communiceren niet rechtstreeks via de doorgaans slecht gedocumenteerde system calls aan het besturingssysteem of zijn systeemprogramma's, maar via een uniek voor zo'n component ontworpen interface ervan. Een goed ontworpen interface heeft dus een helder interface protocol , dat de een willekeurige systeem of netwerk gebruiker via een bepaalde weg naar Rome leiden moet.

Componenten communiceren via hun oftewel een interface description language (IDL) op een software bus. Vergelijk deze met de hardware Peripheral Component Interface (PCI) bus waar het BIOS van een PCI apparaat tegen het moederbord PCI BIOS zegt "Hallo hier ben ik, en dit zijn mijn IRQ's en mijn IO adressen". Hoe het PCI apparaat (de chipset en zijn BIOS versie) het in zijn geïntegreerde circuits verder regelt gaat de PCI kaart niet aan. Het moederbord BIOS geeft hem slechts een passende plaats op de bus, zodat hij via busmaster DMA (Direct Memory Access) rechtstreeks met andere perifere PCI componenten communiceren kan. Op dezelfde manier zouden de componenten van een software bus zonder veel tussenkomst van het besturingssysteem met elkaar kunnen communiceren.

Componenten bestaan typisch uit een verzamelingen van klassen. Ze hebben softwarematig een via hun object georiënteerde protocollen aan te raken functionaliteit. U mag ze schrijven in object georiënteerde talen als Java of c++, maar ook in niet object georiënteerde talen als het snelle assembler of het generieke c. Als u de uitvoer van de code maar vertaalt naar of met een IDL wrapper inpakt voor het door de interface gebruikte protocol.

Zo zin de WPS functies voornamelijk in op zich niet object georiënteerde c geschreven. Maar omdat ze als stub (tijdelijke IDL versie) gedefinieerd zijn, kunnen ze ook door betere versies vervangen worden.

CORBA/EJB

De beste kandidaat voor een gemeenschappelijke interface van programma-onderdelen is de open software CORBA bus. Deze slechts uit software bestaande CORBA bus is te vergelijken met de hardware PCI bus. Je kunt er alle software op aansluiten. De Common Object Request Broker Architecture werd wel omschreven als "the most important (and ambitious) middleware project ever undertaken in our industry" (Client/Server Survival Guide, 3th Ed). CORBA is het erop of eronder voor het internet. De software componenten standaard CORBA werkt met ieder besturingssysteem. En zeker onder Java. Vrijwel alle server fabrikanten ondersteunen CORBA en haar Enterprise JavaBeanes (CORBA/EJB). U zou zeggen: dat is perfect. Maar de grootste concurrent/tegenhanger van CORBA is Microsofts COM+, die alleen onder Windows 98+ en NT varianten goed werkt. Softwaremakelaar Microsoft voelt niets voor "Write once, run anywhere" paradigma's en ziet het internet vooral als haar privé gebied.

Waarom CORBA?

Het huidige internet is een heterogeen netwerk. Servers van verschillende makelij communiceren via UDP en TCP protocollen Deze verbindingen geven in uw webbrowser weliswaar een beeld, maar bieden op zich onvoldoende interactie.

De SOM IDL

Om de verschillende programmatuur op een heterogeen netwerk beter met elkaar te laten samenwerken ontwikkelde IBM het System Object Model. OS/2 versie 2.1 gebruikte SOM 1. Warp 3 en 4 gebruiken SOM 2. Distributed SOM is bedoeld voor servers en clients.

SOM is een volgens de Corba specificaties ontworpen object georiënteerd protocol. De SOM middleware ondersteunt vele programmeertalen (C, C++, Rexx, Smalltalk, etc) en platforms (Mac, OS/2 , Windows, AIX, UNIX, etc) en dient als lijm (Eng: glue) om heterogene "systeem objecten" (componenten, programmaonderdelen) met elkaar te verbinden.

Met SOM hoeft alleen de Interface Definition Language (IDL) van iedere component dezelfde te zijn. Deze verzorgt de communicatie van heterogene objecten. Een IDL fungeert als een soort vertegenwoordiger van de component: "Hallo, hier ben ik, en dit zijn mijn mogelijkheden" en gaat niet op de technische details in. De IDL vervult de rol van het applicatieprotocol van samenwerkende TCP/IP applicaties. Ook daar maakt het niet uit of client en server onder Linux of OS/2 draaien. Maar ze verrichten samen wel hun taak.

PMShell is voornamelijk in c geschreven. Een klein deel bestaat uit assembler. C is weliswaar een efficiënte procedurele taal, maar ze mist de object georiënteerde eigenschappen (inkapseling, overerving en polymorfisme) van C++. Deze WPS eigenschappen worden door de SOM interface aangebracht.

De componenten zelf zijn te vergelijken met een integrated circuit (IC). Ze bevatten meerdere functies. Maar zonder hun verbindingen op de printplaat kunnen ze niets doen. De IDL regelt hun verbindingen. Bij SOM is dat een object georiënteerde contractonderhandeling. Door de interface (SOM) van de implementatie te scheiden worden de componenten ook uitwisselbaar. Want zolang de functionaliteit van een component maar aan de eisen van het contract voldoet, is er geen insider kennis van het programma nodig om de functionaliteit ervan uit te breiden, te vereenvoudigen of anderszins te veranderen. Op die manier maakt SOM van de WPS een zeer flexibele werkomgeving.

DLLs

In de praktijk worden de functies van de WPS componenten (WPS klassen) in Dynamic Link Libraries (DLL) opgeslagen. Omdat de DLL's als componenten (onderdelen van een geheel) met elkaar communiceren, kunnen ze door andere DLL bestanden vervangen worden. Desktop enhancers als Object desktop en XWorkplace werken op deze manier.

Samengestelde documenten

Objecten kunnen als onderdeel van een samengesteld document uitgewisseld worden. Een samengesteld document (compound document) kan meerdere bestandsformaten, programma's en/of programma-onderdelen bevatten. Gebruikte technieken zijn OLE/ActiveX, Java (jar), OpenDoc en XML (StarOffice / OpenOffice.org).

ObjectWeb

Door deze samengestelde documenten via het netwerk (bedrijfsnetwerk, internet) beschikbaar te stellen zou de Desktop in een multiplatform object georiënteerde omgeving veranderen (ObjectWeb). Microsoft probeert dit met de op COM+ gebaseerde Actieve Desktop te bereiken. Sun, IBM en Netscape zoeken het in Corba en Java.

OpenDoc

Aanvankelijk wilde IBM de OS/2 Werkplek via OpenDoc technologie inrichten. Het ging om gestructureerde bestanden ("object containers") die allerlei "intelligente" objecten mogen bevatten: niet alleen tekst, maar ook programmaonderdelen (componenten) en multimedia. De via het netwerk verspreide softwarecomponenten zouden via SOMs IDL met elkaar kunnen communiceren.

Microsoft versus de rest van de wereld.

Helaas kwam het daar niet van. Althans niet in de OpenDoc vorm. Door het marketing succes van Microsofts OEM bundelingsstrategie was de in haar Office suites toegepaste OLE techniek het enige dat de gewone man op zijn beeldscherm kreeg te zien. Er kwam veel software die deze klembord techniek ondersteunde, maar voor OpenDoc werd nagenoeg niets geschreven. De OpenDoc techniek die door Component Integration Laboratories, Inc. voor IBM en Apple werd ontworpen, werd rond 1996 verlaten. IBM koos gaandeweg meer voor de Java technologie om haar "any-client-to-any-server" te bereiken. Zie ook: Microsoft Office opgebrand en Where did OLE come from?

OLE (1992)

Met de Object Linking and Embedding (OLE) API van Microsoft (1992) kunnen op het eerste gezicht allerlei bestandsformaten in een samengesteld document worden opgenomen ("inkapseling"). Via het klembord kunt u bijv. enige velden van een 123 werkblad (een object van de 123 server) in een WordPro document (de container) met Plakken / Speciaal plakken. Maar wat u in het WordPro document plaatst is geen werkbladfragment. Het is slechts een tekstbestand, bitmap of metabestand dat via het klembord in het samengestelde WordPro document werd geplakt. Door op het object te klikken het werkblad in de spreadsheet worden geopend. Maar als het werkblad inmiddels verplaatst is blijft het Ole! gevoel uit. En het werkt niet in iedere applicatie. Een OLE object is in de praktijk niets meer dan een plaatje met een Dynamic Data Exchange(DDE) verwijzing naar de bron, waarvan je (net als met de "snelkoppelingen" van Windows) nooit weet of het bijbehorende bronbestand nog wel bestaat.

SOM en de WPS

Het System Object Model (1991) ging veel verder dan het Microsofts OLE. SOM is een puur object georiënteerde techniek met overerving, inkapseling en polymorfie. SOM voldoet aan de CORBA (Common Object Request Broker Architecture) normen, zodat herbruikbare softwarecomponenten via een "objecten makelaar" (ORB) op het netwerk gedistribueerd (distributed SOM, DSOM) kunnen worden. Een programmeur is met SOM dus niet aan één programmeertaal of platform gebonden.

COM+ versus Corba/Java

Op het internet verschenen twee elkaar beconcurrerende bouwstelsels om softwarecomponenten met elkaar te laten samenwerken: Microsofts COM+ en Corba/Java in de UNIX wereld. OLE en zijn opvolger ActiveX zijn onderdeel van Microsofts Component Object Model (COM) geworden. Distributed COM (DCOM) en COM+, uitbreidingen hiervan, zijn Microsoft antwoord op de door de rest van de wereld gebruikte Common Object Request Broker Architecture (CORBA) architectuur, die een raamwerk (framework) vormt voor het samenwerken van gedistribueerde componenten in heterogene netwerken.


Meer lezen: Übersicht über CORBA, SOM und DSOM, SOM Main Menu , OOPS Avenue en The System Object Model (SOM) and the Component Object Model (COM), Activex, Ole en Com, Het Gedistribueerde Object-Component Model, The Workplace Shell programming page.



WPS klassen

> Top <

SOM en de WPS

OS/2 is ontworpen als een integrerend platform. Via SOM kunnen programma's en netwerkbronnen met de WPS worden geïntegreerd. Niet alleen OS/2 programma's, maar ook DOS, X Window en MS Windows programma's. Hetzelfde geldt voor de databestanden. Voor de WPS maakt het niet uit of ze lokaal of op het netwerk staan.

Omdat OS/2 de voor de WPS belangrijke objecteigenschappen in uitgebreide attributen buiten het bestand bewaart, hoeven de door OS/2 benaderde programma's en bestanden niets van OS/2 te weten. DOS bewaart de bestandsgrootte van een bestand in het bestandssysteem. Op dezelfde manier plaatst OS/2 hun objectkenmerken in uitgebreide attributen. En omdat de SOM geen eisen stelt aan de implementatie, zullen ook vreemde applicaties zich als WPS objecten gedragen.

Zo is voor OS/2 een DOS programma een object van de klasse WPProgramFile. Deze eigenschappen kunnen lokaal in de uitgebreide attributen van het exe bestand opgeslagen worden, via het NetBIOS kan dat ook op een andere machine, maar het is wel zo veilig om er op de WPS Desktop een programma-object van te maken. In dit programma-object kunt u o.a. de opstartopties van de Virtuele DOS Machine vastleggen. De DOS applicatie weet niets van OS/2, maar de WPS weet nu genoeg van het DOS programma om ermee te kunnen werken. Als u vervolgens een document naar het programma object versleept wordt het bestand in de DOS applicatie geopend. Associeer een bestandstype of een bestandsextensie met het programma-object en OS/2 weet welke bestanden u met het programma wilt openen.

Ieder programma, map of bestand, wordt minimaal als een WPObject benaderd. Hieraan ontlenen ze hun drag en drop eigenschappen. Slepen en neerzetten van bestanden kan natuurlijk ook onder Windows. Maar alleen onder OS/2 zal een programma-object of reflectie ook bijgewerkt worden als de bestanden waarnaar ze verwijzen worden verplaatst (object tracking). Hun object-ID verleent hen persistentie.

Ook geavanceerde desktopfuncties als het slepen en neerzetten van data tussen programma's en mappen kunnen worden ondersteund. Met een WPS enhancer als DragText kan dat met vrijwel alle vensters. Andere WPS enhanced applicaties zullen hiervoor aan sjablonen gekoppelde klassen uit hun eigen WPS bibliotheken registreren. Ik denk hierbij aan de creatie van URL objecten, faxbestanden en veel meer.

Klassen

De WorkPlace Shell rangschikt de objecten in een hiërarchisch systeem van klassen. De mogelijkheden van een klasse worden bepaald door de componenten van een WPS bibliotheek. De functionaliteit van een klasse kan over meerdere DLLs verspreid zijn, maar slechts één DLL wordt als vertegenwoordiger van de klasse in OS2.INI geregistreerd. Deze verzorgt via de SOM taal (IDL) de communicatie met de overige componenten van PMShell. Een enkele DLL kan ook de IDL van meerdere WPS klassen bevatten. Zo heeft bijv. wpconfig.dll meerdere objecten in de map Configuratie/System setup.

Hiërarchische overerving, inkapseling en polymorfie

Door het systeem van hiërarchische overerving (inheritance) kunnen hogere klassen over de mogelijkheden van onderliggende klassen beschikken. Vergelijk het met regiokantoren, die gebruik maken van de basale faciliteiten van het hoofdkantoor. Maar om de organisatie flexibel te houden, mag een reorganisatie van het hoofdkantoor, niet lijden tot een desintegratie van de periferie. Evenzo moet een WPS enhancer die de klasse Map (WPFolder) nieuwe functies geeft, de functionaliteit van de tientallen gespecialiseerde subklassen als URL-, netwerk-, Launchpad en Opstartfolders intact houden. Die verschillende uitingsvormen van een map noemt men polymorfie. Essentieel is de modulaire opbouw van de hiërarchie, waardoor nieuwe componenten functies van oude componenten kunnen overnemen zonder dat het systeem in duigen valt (of opnieuw gecompileerd moet worden). Dat kan door een zwarte doos model te hanteren (inkapseling). De deelnemers (objecten) benaderen elkaar dan niet persoonlijk, maar spreken elkaar op hun functie binnen de organisatie aan.

Polymorfie

In zekere zin zijn de abstracte Klassen van de WPS te vergelijken met Plato's ideeën van de archetypen. De manipuleerbare objecten (iconen van bestanden, mappen en programma's) zijn de schaduwen die we zien. Zo zijn er op de WPS tientallen soorten mappen (bij mij tegen de dertig subklassen), maar slechts één oermap (de klasse WPFolder). Het zijn verschillende uitingen van de oerklasse WPFolder. Het "Openen als" wordt afhankelijk van de subklasse en de objectinstellingen steeds weer anders ingevuld (polymorfie). Hun gedrag wordt bepaald door de WPS klassen waartoe ze behoren.



WPS programma's

Zuivere WPS programma's zijn geen zelfstandig uitvoerbare bestanden (Exe), maar software bibliotheken. Ze draaien daarom alleen onder de WPS. Men spreekt wel van WPS enhancers. Ze bieden PMShell.exe extra functionaliteit door nieuwe klassen of vervangen van de uitvoering (implementatie) van bestaande klassen.

Registraties

Hiertoe moeten de toegevoegde WPS klassen en bijbehorende Dynamic Link Libraries (DLL bestanden) in het OS2.INI bestand geregistreerd staan. Dit is de taak van een in Rexx geschreven installatiescript of van een installatieprogramma. Vrijwel altijd creëert het script meteen de WPS objecten van de klasse. Waar het bij de registratie om gaat zijn de klassenaam, de Dynamic Link Library (DLL) waarin de IDL ("vertegenwoordiger") van de WPS klasse zich bevindt en eventueel een manipuleerbaar WPS object. Dit kan ook een sjabloon zijn.

Bij een manipuleerbare object (zoals de hiernaast afgebeelde Printer object) gaat het om een opstartbaar WPS programma en/of een instellingenblok. Bij een sjabloon (template) gaat het om een archetypisch protype van een object, die u via slepen en neerzetten op ieder gewenste plek kunt creëren.

De WPS complexiteit aanschouwelijk gemaakt: Class Manager en PMDll

Een aardige hulpmiddel om de relaties tussen objecten, klassen en DLL bestanden wat concreter te laten zien is het freeware PM programma Class Manager (classman.zip).

Het programma maakt gebruik van een oude vrobj.dll versie van 900.545 bytes. Als u de huidige vrobj.dl in het LIBPATH hebt zitten (901.857 bytes), dan kunt u de meegeleverde oude beter wissen om hardnekkige WPS vastlopers te voorkomen.

Class Mananger toont dat een Printer Spooler object een lid (instantie) is van de klasse WPSpool, die in WPPRINT.DLL beschreven is.

Als de bibliotheek niet in het LIBPATH voorkomt, moet u het volledige pad opgegeven (C:\OS2\DLL\WPPRINT.DLL).

Met Create object kunt u met Class Manager een nieuwe instantie van een object aanmaken. In dit geval van de spooler. Een verloren stationsobject herstelt u door het invoeren van Class WPDrives van PMWP.DLL en na Create object de naam Stations (of wat anders) in te voeren.

De interface van de WPSpool klasse zit in de WPPRINT.DLL code, maar deze roept op zijn beurt weer code in PMSPL.DLL aan. Dat is logisch want ook onder Presentation Manager wilt u via een spooler kunnen printen.

De uiteindelijk benodigde programmacode voor printers en hun spoolers is over nog veel meer DLL bestanden van het operating systeem verdeeld. WPPRINT.DLL roept een reeks systeembestanden aan. U kunt dit met het programma PMDll (pmdll28.zip) nagaan.

Installeer ik via de Lokale Printer Installeren Wizard een andere printer (bijv. een naar bestanden schrijvende postscript printer om PS bestanden aan te maken), dan wordt een nieuw printerobject op de Desktop aangemaakt. Hetzelfde gebeurt als ik met een Printersjabloon een nieuw printer object aanmaak. Of met ClassManager's Create object knop. In alle gevallen maak ik een nieuwe instantie van dezelfde objectklasse aan. Als een klasse netjes is geïnstalleerd, is het aanmaken van nieuwe WPS objecten met geavanceerde functies een fluitje van een cent. De ermee geassocieerde printernaam, -driver en -poort zullen verschillen, maar de spooler zal zich op dezelfde "WPSpool" manier gedragen. Deze klasse-eigenschappen zijn overgeërfd.

Class Manager laat ook zien dat u een verloren Printer Spooler object gemakkelijk kunt herstellen (Create Object). Het icon (of de lokatie van het icon) zit dan in de DLL code verstopt. U moet zijn specifieke instellingen overigens nog wel aanpassen.

Bij klassen (een abstract OO concept) en componenten (de software-onderdelen) gaat het om herbruikbare code. De ene WPS applicatie kan dus functies van de andere WPS klasse aanroepen en gebruiken.

Hier worden componenten als bouwstenen gebruikt (toolability). De klasse in de DLL wordt opnieuw aangeroepen, maar nu anders (een voorbeeld van polymorfie).

Deze flexibiliteit is kenmerkend voor de WPS. Door een bestand deel te laten maken van een bepaalde klasse (Properties / Type) geeft u hem ook de functionaliteit van die klasse.

U kunt met Create Object meerdere objecten (instanties) van een of meer willekeurige klassen aanmaken, met een eigen of een al gebruikte naam, maar altijd met een uniek ObjectID en unieke instellingen (objectstatus). Zo kunt u de ene Readme.doc als Plaintext bestempelen en de andere als Word document. De een wordt geopend met een platte tekst editor als e(dit) en de ander met StarOffice, Lotus WordPro of OpenOffice (die allen Word bestanden importeren).

Herwig Bauernfeinds Object Inspector

Recent zag ik een kloon van Stardocks Object Desktop Object Inspector: HB Object Inspector version 0.5.0c (hbinspect050c.zip).





De hiërarchische opbouw van de WPS klassen

De hiërarchische opbouw van de WPS klassen (hun taxonomie) is goed te zien in de WPS Class List van XWorkplace. Zo zijn de mogelijke gedragingen van de basisklasse WPObject (zeg maar het archetype van "de objecten") vastgelegd in PMWP. Deze bibliotheek regelt basale zaken m.b.t de WPS. XWorkPlace grijpt hier op in door de basisklasse WPObject door een nieuwe modelfolder XFldObject te vervangen.


Een WPS object kan op de vaste schijf verblijven, abstract in het OS2.INI bestand bestaan of van tijdelijke aard zijn. Hierdoor ontstaan er drie soorten objecten:

  • WPFileSystem: bestanden (WPDataFile en meer specifieke subklasseringen) en mappen (WPFolder en subklasseringen) op het bestandssysteem, waarvan de status (configuratie instellingen) in hun uitgebreide attributen wordt bewaard.

  • WPAbstract: abstracte objecten (geen bestanden). Hun status worden in de uitgebreide attributen van de onderliggende map (hun Parent ID) bewaard. Voorbeelden van abstracte objecten vindt u in Systeem en Configuratie (System Setup). In hun instellingen zal de verwijzing naar een File ontbreken.

  • WPTransient: tijdelijke objecten die na een reboot zullen verdwijnen. Na het opstarten kunnen ze opnieuw worden aangemaakt.

NB Bij een backup van de WPS moeten beide INI bestanden (OS2.INI en OS2SYS.INI) met de bestanden en de uitgebreide attributen meegenomen worden.


Belangrijk is dat nieuwe klassen reeds bestaande klassen kunnen vervangen en aanvullen. Op die manier grijpt XWorkplace op een hele reeks standaard WPS klassen in. Hier laat Object Desktops WPS class editor zien dat de standaardklasse WPKeyboard (in wpconfig.dll) door de klasse XWPKeyboard uit XFLDR.DLL is vervangen. Ook dit vernieuwde toetsenbord object (type: WPAbstract) bevindt zich in de OS/2 Systeem Configuratie folder (\Desktop\OS!2 System\System Setup).



Intermezzo: digitale samenwerking

In de hardware wordt gewerkt met logische schakelingen van transistoren. Een transistor heeft drie elektrische aansluitpunten. Een daarvan staat op een zeker moment aan of uit, afhankelijk van de voltages op de andere twee aansluitpunten. Vanwege deze logica is onze hard- en software in essentie digitaal.

Integrated circuits

Logische schakelingen die bepaalde taken goed kunnen verrichten worden samengevoegd in Integrated Circuits (ICs). Zo'n gespecialiseerde chip kan weer uit andere chips samengesteld zijn. Een voorbeeld is de Digital Signal Processor (DSP) chip die analoge in digitale signalen omzet en omgekeerd (moduleren). DSP chips die zich aan hun specificaties (taken) houden kun je ook verwisselen. Dankzij die uitwisselbaarheid kan een fabrikant van een perifeer apparaat of moederbord zijn hardware uit de componenten van zijn keuze samenstellen. Als er betere en/of goedkopere standaardchips beschikbaar komen, dan bouwen de fabrikanten die in. Hierdoor ontstaan concurrerende producten.

Inkapseling

Op die manier kan men ook software componenten vervangen. Ze zullen zich via hun Interface Definition Language (IDL) presenteren. Men spreekt van inkapseling (encapsulation). Inkapseling impliceert het verbergen van informatie achter een wel omschreven interface (data hiding). Omdat de andere onderdelen de gemeenschappelijke IDL wel verstaan is het mogelijk om via nieuwe binaries (DLL bestanden) de eigenschappen van objecten op de desktop te veranderen.

Te weinig samenwerking

Op dit moment voldoen JavaBean componenten nog het meest aan dit concept. Ze werken op ieder platform met Java runtime compiler. De universele Corba compliant SOM objecten zijn ook te realiseren onder Windows (zie: IBM SOMobjects). Microsoft ziet meer heil in haar eigen COM+ en .NET raamwerken. IBM's SOM en OpenDoc verdwenen in het archief en Microsoft haalde Java uit XP.

De status van een object

Wat een bepaald object uiteindelijk doet (zijn gedrag, zijn verschijning) hangt natuurlijk niet alleen af van de eraan gebonden programmacode (de hoofdklasse en de subklassen), maar ook van zijn specifieke configuratie instellingen (zijn status). De voor het object specifieke instellingen worden in zijn uitgebreide attributen (rechtsklikken / instellingen) vastgelegd. Bij een verhuizing worden ze naar de map van het object meegenomen. Het OS2.INI bestand bevat de meer globale systeeminstellingen (defaults).

Registratie

De objectklassen en de bijbehorende DLL's moeten geregistreerd zijn in de OS2.INI voordat de Workplace Shell er iets mee kan doen. Registratie en deregistratie vinden vaak plaats d.m.v. een REXX script (bijv. instsnd.cmd en dinstsnd.cmd in \mmos2\install). Stardocks Object Desktop heeft hiertoe een setup programma. Na het opnieuw opstarten van de WPS worden de DLL's actief en beschikt PMShell over nieuwe eigenschappen van de WPS objecten. Ongewenst gedrag kan eenvoudig verwijderd worden door de met de functionaliteit verbonden klassen te deregistreren. Omdat de aan WPS klassen gekoppelde DLL's geheugen en processortijd consumeren, kunt u de in klassen vastgelegde functionaliteit die u niet nodig heeft beter deregistreren. WPS klassen waarvan de DLL's niet terug te vinden zijn, kunnen door het programma checkini worden opgespoord en verwijderd. Deregistratie kan vaak met het registratiescript (even naar de opties kijken) of met Class Manager of XWorkplace.

In de volgende tabel ziet u waar de Workplace Shell de informatie van de enkele veelgebruikte objecten op de Werkplek vandaan haalt en bewaart.

Type object

Locatie

Inhoud

Instellingen

Programma opties

Databestand

Bestand

Bestand

Uitgebreide attributen

Programma- bestand

Bestand

Bestand

Uitgebreide attributen

Instellingen van programma

Reflectie

OS2.INI

Origineel bestand

Origineel bestand

Programma- object

OS2.INI

Origineel bestand

OS2.INI

Originele programma

Map

Directory

Directory, OS2.INI

Uitgebreide attributen

Bron: OS/2 Version 2.0 Redbooks, Volume 3: Presentation Manager and Workplace Shell

Uit deze tabel kunt u enige conclusies trekken:

De instellingen van programma's en data (rechtsklikken / Instellingen) worden ter plekke als uitgebreide attributen (extended attributes, EA's) bewaard.




Toelichting

Verplaats door de WPS gebruikte bestanden b.v.k. onder OS/2

Verplaatst u bestanden onder OS/2 dan verhuizen de uitgebreide attributen in principe mee. De WPS instellingen die in deze EA's zitten blijven dus behouden. Dit gebeurt ook als u ze verplaatst of kopieert onder de OS/2 prompt, Win-OS/2 of met een Dos bestandsbeheerder onder OS/2. In het laatste twee gevallen zorgt OS/2's DOS emulatie voor het verplaatsen van de EA's.

Maar bij verplaatsingsacties onder Ms-Dos of Windows 95, die de EA's negeren, raakt u de uitgebreide attributen altijd kwijt! Voor data in het Dos 8.3 formaat die ook via hun extensie worden geïdentificeerd is dat in mijn praktijk zelden een bezwaar. Zo nu en dan een OS/2 chkdsk op de FAT schijven ruimt de verloren gegane EA's weer op.

Maar het medium moet wel EA's ondersteunen.

Als u data of programma's onder OS/2 archiveert moet u er op letten dat de OS/ 2 archiveerder (lzh, zip) of het backup programma uitgebreide attributen ondersteunen. Let ook op het medium: diskettes ondersteunen EA's niet. Ook bepaalde stuurbestanden ondersteunen EA's niet, bijv. de vFAT driver van Steiner. Bestanden met hun EA's kunt u wel in gezipte vorm op diskettes plaatsen. Zip drives kunt u als HPFS formatteren.

Typische WPS items zoals reflecties en programmaobjecten worden vastgelegd in de OS2.INI. Ze verwijzen naar de originele bestanden.

U moet hun originelen alleen onder de WPS verplaatsen. Anders wordt hun locatie in de OS2.INI niet bijgewerkt en moet u ze opnieuw van de verplaatste originelen aanmaken

Verandert u de instellingen van een reflectie dan worden slechts de instellingen van het origineel (de EA's van het origineel) veranderd. Andere reflecties van hetzelfde object zullen die instellingen dus ook krijgen.

De instellingen van programma-objecten worden daarentegen geheel en al in het OS2.INI bestand vastgelegd. Een reflectie van een programmabestand kan zich dus geheel anders gedragen dan een programma-object van hetzelfde programmabestand! U kunt van een programma zoveel programma-objecten aanmaken als u wilt.

programma-objecten

De instellingen van programma-objecten worden vastgelegd in de OS2.INI. Indien u OS/2 op een HPFS schijf hebt geïnstalleerd blijven de door de WPS gebruikte instellingen van Dos en Windows programma's op FAT schijven veilig voor Dos en Windows defragmentatieprogramma's (zolang u deze programma's maar niet verplaatst). Uitgebreide attributen op FAT schijven blijven kwetsbaar vanwege de beperkingen van het FAT bestandssysteem (ook onder OS/2).

Praktische consequenties voor de inrichting van uw Werkplek zijn:

Programma objecten

Maak van veel gebruikte programma's op de WPS programma-objecten. Zie ook mijn tips m.b.t. de Workplace Shell om dit vlot te kunnen doen.

Van één programma kunt meerdere programma-objecten maken met ieder hun eigen instellingen (bijv. volledig scherm of venster, meer of minder geheugen, etc.). Deze versies geeft u elk een passende naam: bijv. Norton Commander FS, Norton Commander (venster).

Reflecties

Gebruikt u eenzelfde programma altijd met dezelfde instellingen, maak dan een reflectie van het programma of beter nog van zijn (enige) programma-object. Reflecties nemen veel minder beslag op de OS2.INI file (een paar honderd bytes) en als u één verandert veranderen ze allemaal met het origineel mee.

De Werkplek inrichten

> Top <

De Werkplek is eenvoudig voor uw doeleinden in te richten. U kunt dit op velerlei manieren doen. Ik geef hier weer wat mij het best bevalt.

Om te beginnen is het goed om te weten dat de Werkplek zelf een folder-object is. De betreffende map heet bij mij I:\WERKPLEK en de titel van het object is "Werkplek". Hieruit volgt ook dat de naam aan een object niet dezelfde hoeft te zijn als de naam van het bestand: Zo slaat het object "OS/2 Systeem Editor" eigenlijk op het programma \OS2\E.EXE.

De map Programma's heeft standaard de lokatie Desktop/Programma's, maar niets verhindert u om de map naar een (snellere) JFS schijf te slepen en van de nieuwe lokatie een reflectie in de map Werkplek te plaatsen. JFS ondersteunt uitgebreide attributen, dus daar is niets mis mee.

Primair voorgrondmenu

Het aanpassen van de Werkplek begint bij het aanpassen van het snelmenu dat u krijgt als u rechtsklikt op een lege plaats op de Werkplek. Met Instellingen / Menu / Acties: Primair voorgrondmenu / Toevoegen kunt u uw favoriete applicaties (objecten) invoeren. Loopt de applicatie niet omdat het pad niet gevonden wordt, probeer het dan eens met een cmd file (u plaatst het pad van uw cmd-batches natuurlijk in de config.sys).

In de map Werkplek staan bij mij de voor Warp 4 gebruikers bekende submappen: Systeem, Assistentie, Verbindingen en Programma's. Daarnaast staan er reflecties van verschillende programma- en datamappen die zich fysiek buiten de Werkplek bevinden : BIN (programma's), Data, Actueel, Download, Zip, Sslurp! (WWW-mirroring).

Data

De belangrijkste map Data bevat weer reflecties naar belangrijke datamappen op partities (FAT, HPFS, Ext2, helaas geen vFAT) elders. Waar het op neer komt is dat u met het aanmaken van reflecties op de Werkplek altijd uw eigen ordening kunt aanbrengen en daarbij niet gehinderd wordt door de fysieke ordening van data over de partities van de harde schijf.

Actueel

De map Actueel is bij mij voorbestemd voor projecten, ongelezen teksten, en andere zaken die ik t.z.t. archiveer in Data of wis.

Werkgebied

Een map kunt u als Werkgebied instellen: Rechtsklikken op de map /Instellingen / Bestand / "Werkgebied" aanvinken. De map krijgt daarmee een autostart functie. Sluit u de map af, dan sluiten automatisch alle openstaande submappen en de lopende applicaties uit die map. Heropent u de map dan wordt de voorgaande situatie hersteld (inclusief het herstarten van de eerder afgesloten applicaties). Het principe is te vergelijken met de autostart functie van de Werkplek (zie autostart). In maak er overigens geen gebruik van. Ik vind het Taakoverzicht van Ctrl-Esc (of met de Windows toetsen met de Winkey driver) wel zo handig.

Programma's

De map Programma's is in submappen verdeeld. In de submappen zitten de objecten van programma's.

Doorgaans maak ik van OS/2 programma's maar een object aan. Heb ik het programma elders ook nodig, dan maak ik een reflectie. Voordeel van een reflectie is dat u die snel aan kunt maken en zonder consequenties weer kunt wissen. Verandert u iets in de reflectie, dan wordt het oorspronkelijke object mee veranderd en alle andere reflecties ervan bovendien.

meerdere versies

Van DOS-programma's maak ik soms twee of meerdere programma-objecten aan: bijv. een spelletje dat ik met meer of minder geheugen wil gebruiken of een programma dat ik in volledig scherm wil draaien of in een venster.

U kunt programma-objecten aanmaken met verschillende opties. Denk hierbij aan Netscape en Mozilla met opties als -turbo, -browser, -mail, -edit, -dde met een bijpassende -pgebruiker (Netscape profiel voor gebruiker).

Meerdere gebruikers

Bij klassen (een abstract begrip) en componenten (de softeware-onderdelen) gaat het om herbruikbare code. U kunt met Class Manager ook extra "abstracte" WPS objecten van eenzelfde klasse aanmaken, ieder met zijn eigen naam en instellingen (objectstatus). Enige voorbeelden:

  1. U kunt meerdere Toolbars (WPLaunchpad, XCentre) aanmaken voor meerdere gebruikers, situaties of projecten.

  2. Maak aparte Toolbars met favoriete mappen en applicaties (met bijbehorende instellingen) van uw medegebruikers aan. Hiermee voorkomt u gerommel en geweeklaag over uw eigen favoriete instellingen, die duizenden iconen zien, maar niet het programma of de map die ze zoeken.

Werken met modellen

Modellen

Modellen zijn objecten die als sjabloon dienen voor het aanmaken van nieuwe objecten. Via een drag en drop actie van een model vanuit de map Modellen kunt u op iedere plaats een kopie van het model aanmaken. Het principe lijkt op dat van de sjablonen van bijv. tekstverwerkers, met dit verschil dat modellen objecten (en dus niet altijd bestanden ) zijn en dat u er niet eerst een tekstverwerker voor hoeft te openen. Dit is kenmerkend voor een object georienteerde desktop (i.t.t. een programma-georienteerde desktop).

Sommige modellen bestaan geheel uit EA's, andere bestaan (bijv. een standaardbrief) voornamelijk uit vanuit ieder OS leesbare code. U kunt dit nagaan door met een niet WPS gevoelige bestandsbeheerder naar de map I:\Werkplek\Systeem\Modellen\Lotus Word Pro SmartMaster-sjablonen\Brief\Brief1.LWP te gaan. Dit is een databestand, maar in principe kan ieder object tot model gemaakt worden, vandaar dat er printermodellen en modellen voor allerlei typen mappen zijn. Modellen die geheel uit EA's bestaan kunt u alleen onder de WPS zien. In het instellingenblok ontbreekt de Tab Bestand. Het zijn dus geen afzonderlijke bestanden.

Werken met modellen

Sleept u een model met de rechter muisknop naar een andere map dan wordt een nieuw object gecreëerd. Een gewoon object zou slechts verplaatst worden. Is het model een databestand, dan maakt u er een kopie van zonder het model attribuut. Door hierbij de Shift toets in te drukken kunt u modellen verslepen en met de Ctrl toets kopieren. Kopieën van modellen zijn vooral van belang vanwege hun aangepaste instellingen (programma-objecten) of bestandsinhoud (data-objecten).

FTP folder

ftphost.gif

ftpfolder.gif
Een mooi voorbeeld van object-georiënteerd werken is een FTP-folder. Sleep een FTP-host model naar een willekeurige map op HPFS en vul het instellingenblok in. Als u slim bent hebt u in het FTP-host model van te voren uw naam (anonymous) en wachtwoord (email adres of iets anders met een @ erin) al ingevuld. Maar het werkt ook op niet anonieme sites (zie het voorbeeld hierboven).

Modellen in projectmappen

Reflecties of kopieen van modellen zijn handig in projectmappen. Zo is het handig een model standaardbrief te hebben in uw directory Brieven.

OD's Tab Launchpad

Reflecties of kopieen van modellen op het Object Desktop Tab Launchpad maak ik door eerst hun model-attribuut uit te schakelen (Instellingen/Algemeen/Model uitvinken), daarna het model naar de tabblad te verslepen (een empty.zip is handig op op het Tab Launchpad!) en vervolgens de Model eigenschap weer te activeren.

De werkplek versnellen

> Top <



Booten

De OS/2 WPS kon met een kleine 1-2 MiB HPFS cache redelijk snel booten.

Hiervoor zijn denk ik meerdere redenen voor aan te wijzen:

  • Bootbestanden (drivers e.d.) worden maar eenmaal ingelezen.

  • De WPS is expliciet ontworpen om DLL's eenmaal in het geheugen te laden.

  • Er vinden nauwelijks lazy write schijfacties naar logbestanden plaats.

  • De wel gecachte en steeds herlezen WPS items (mappen, EA's) zijn kleine en snel opvraagbare structuren.

Wat je dan nodig hebt is een cache die de bootbestanden snel vindt (een eenvoudige en snel toegankelijke directorystructuur buffert) en ze vlot (dus read-ahead) inleest. En dat was wat de kleine HPFS cache ook vergeleken met een grotere FAT cache zeer efficiënt deed. Een 2 GiB HPFS cache buffert weliswaar minder datastructuren dan een 4 GiB vFAT cache, maar leest ze op HPFS wel sneller in. Vandaar het label High Performance File System.

Een trage WPS

Snelheidsproblemen ontstonden door gebrek aan geheugen:

  • Overcommitment van het geheugen veroorzaakte dat er geswapt moest worden.

  • Maar de vitale INI bestanden en de swapper.dat werden niet gecached.

  • De kleine cache voldeed niet om grote PM programma's (netscape, staroffice, java, vpc) en databestanden te bedienen.

  • De kleine cache voldeed niet om een via reflecties een over meerdere mappen of partities verspreide WPS snel te bedienen.

Gebrek aan geheugen en cache grootte was het hoofdprobleem. Hoewel dankzij lazy commit niets onnodig in het geheugen geladen werd, raakte de swapper.dat snel met ongebruikte WPS DLLs en andere programmacode gevuld. Om die reden werden de vitale INI bestanden en de swapper.dat niet gecached. Veiligheid speelde hierbij een rol, maar deze grote bestanden zouden de relatief kleine HPFS cache ook snel kunnen vullen. Waardoor de meest benaderde directories en bestanden op HPFS weer ongecached zouden zijn. Daarom kon het bijwerken van swapper.dat, OS2.INI en OS2SYS.INI toen beter ongecached op de achtergrond worden gedaan.

INI bestanden op een ramdisk

In de tijd dat de computers meer geheugen kregen dan zeg 64 MiB, werd het aantrekkelijk om de WPS en de OS/2 INI bestanden op een RAM schijf te plaatsen. En dat is het nog steeds. Misschien niet voor een door bootable JFS gecachte Werkplek directory, maar wel voor de INI bestanden: OS2.INI en OS2SYS.INI. Maar hoe doe je dat?

Standaard bevat de CONFIG.SYS de opdrachten:

SET USER_INI=C:\OS2\OS2.INI
SET SYSTEM_INI=C:\OS2\OS2SYS.INI

Deze bestanden moeten tijdens het booten worden verplaats naar een RAM schijf.

De RAM schijf (hier



IFS=F:\PROGRAMS\RAMFS121\RAMFS.IFS /M:2G S:1200M /CLU:8 /R

RUN=F:\PROGRAMS\RAMFS121\RAMDISK.EXE L: RAMDISK

RUN=F:\OS2\UPDINI.EXE F:\OS2\ 10

SET USER_INI=L:\OS2\OS2.INI

SET SYSTEM_INI=L:\OS2\OS2SYS.INI




Swapper.dat op een RAM schijf.

Sommige stoutmoedige OS/2 gebruikers plaatsten zelfs de swapper.dat op een RAM schijf, maar dat is houdt m.i. teveel gevaren in. Swappen doet OS/2 pas als het echt nodig is en als dat het geval is is kun je van een dynamische RAM schijf niet verwachten dat het automatische meer geheugen vrij kan maken voor een grotere swapper.dat. Want dat geheugen is er dan dus niet. En is de stabiliteit van het systeem komt in het geding. En voor een statische RAM schijf geldt: als OS/2 meer swapper.dat ruimte nodig heeft dan vooraf ingestelde statische cache aankan, dan loopt het systeem geheid vast. Maar het uitbreiden van de statische cache verhelpt dit probleem niet. Want als er door het gebruik van het extra geheugen door de RAM schijf minder geheugen vrij is, zal de swapper.dat eerder benaderd worden. Alleen een RAM disk die de swapper.dat comprimeert zou dan zin hebben. Maar dat comprimeren van de lege (sparse) uit nullen bestaande geheugenobjecten doet de OS/2 kernel ook al. In zijn interne swapper.dat. Om het swappen zoveel mogelijk te voorkomen. Kortom: laat OS/2 zijn virtuele geheugen problemen maar zelf oplossen.





Enige door mij gebruikte WPS toevoegingen

> Top <

Reflecties en iconen

De beste WPS verfraaier (WPS enhancer) bent u zelf. U schikt reflecties van objecten die u vaak gebruikt (bestanden, programma's en mappen) op uw manier. Het is tenslotte uw desktop. Iconen vindt u op Hobbes. Wees erop bedacht dat op een minder snel systeem iconen geheugen gebruiken en dat reflecties wat minder snel laden dan de originele objecten, omdat het originele object eerst opgezocht moet worden.

Een reflectie (shadow) is onder OS/2 meer dan snelkoppeling of zelfs symlink. Reflecties zijn persistent en actueel. Anders dan symlinks kunnen ze ook naar objecten op andere partities en bestandssystemen verwijzen.

Reflecties van mappen

Waar ik het meest gebruik van maak zijn reflecties van mappen. Die plaats ik op de Desktop zodat er snel toegang tot heb. In die mappen plaats ik weer reflecties naar mappen en programma's die voor die map belangrijk zijn. Bijv. in een directory met logbestanden plaats ik een reflectie naar tail. Op die manier kunt u van iedere map een mini werkplek maken.

Werkgebied

In het instellingenblok van iedere map staat onder de tab bestand (File), de optie Werkgebied (Work area). Door deze aan te vinken worden bij het sluiten van die map alle in die map geopende subdirectories en bestanden afgesloten. Opent u de map daarna weer, dan wordt de voorgaande toestand hersteld. Ik maak er weinig gebruik van, maar het is te leuk te weten dat die optie bestaat. Bedenk overigens wel dat bij het openen van bestanden OS/2 de default applicatie voor het bestandstype gebruikt (dat kan ook e zijn i.p.v. tail!).

Bloated WPS?

Niet iedereen wil evenveel franje. Over de voor- en nadelen van een te zware WPS schreef Gary Granat een prikkelende reeks artikelen in SCOUG: Seeking Ways to Get Rid of System Bloat. De beste manier om van de WPS af te komen is het PM programma Filebar als shell te gebruiken.

WPS enhancers

Voordat u van alles en nog wat installeert, moet u bedenken dat de WorkPlace Shell als een enkel meerdradig proces geladen is. Als één draad verkeerd geprogrammeerd is, kan dat consequenties hebben voor de stabiliteit van de hele werkplek. Tijdens het single input queue of single message queue probleem ligt OS/2 nog niet onderuit, maar een niet reagerende Desktop heeft wel een negatieve impact op uw werkplezier. Daarnaast gebruikt iedere WPS verfraaier fysiek en virtueel geheugen. Dit kan het opstarten van andere programma's vertragen of - bij gebrek aan virtueel adresruimte - volledig verhinderen. Zie: Geheugenbeheer van de Aurora kernel. Installeer daarom alleen wat u nodig hebt en vergeet niet de eens geïnstalleerde, maar achteraf niet benodigde features te deïnstalleren. Hoe dat moet leest u in Bibliotheken deregistreren.

WarpCenter

Het bij OS/2 Warp 4 geleverde Warp Center presenteert de objecten op een op het Windows Startmenu gelijkende manier, waardoor de objecten in de regel snel te vinden zijn.

Object Desktop

Object Desktop 2.0 van Stardock. De virtuele schermen van het Control Center, een Tab Launchpad, Keyboard Launchpad, vele Viewers, transparante Zip en Unzip via drag & drop en een verbeterd taakoverzicht. OD Professional geeft u bovendien de mogelijkheid om uw Werkplek op te slaan en objecten van PC naar PC te verplaatsen (wel dezelfde paden aanhouden). Omdat Stardock met OS/2 gestopt is, is Object Desktop soms voor een weggeefprijs te verwerven..

XWorkplace

xworkplace.gifEen uitstekende en geniale vervanger van Object Desktop en een groot deel van de WPS is Ulrich Möllers WPS enhancer XWorkplace (XWP). Het is de opvolger van XFolder. Ook hier vindt u virtuele schermen (Pagemage, nu Xpager ), een prullenbak en andere snufjes (XCenter Widgets) die uw data nog toegankelijker maken.

Bijzonder praktisch is de mogelijkheid de popup menu's aan te passen zonder te rebooten. Een herstart van de WPS desktop is genoeg. Opties voor mappen als Pack this tree (de geselecteerde map zippen) zijn standaard toegevoegd. Maar u kunt uw eigen batches en scripts aan de XWorkplace Configuration Folder toevoegen. Denk hier aan een viruscontrole met clamscan. Of een script voor een backup van de map naar een andere schijf. Onder Windows zou u hiervoor de onbegrijpelijke en maar voor een deel gedocumenteerde registry moeten editen , maar onder de object georiënteerde WPS van OS/2 kan een leek het doen.

U moet de vele mogelijkheden van XWorkplace beslist eens bekijken. Het gebruik ervan is gratis. En omdat Ulrich Möller het als open source weggaf, wordt het nog steeds ontwikkeld (http://xworkplace.netlabs.org).

Opvallend zijn de Wizard-achtige detectie en afstemhulpjes voor de config.sys (OS/2 kernel) in de configuratie folder.

XWorkplace is goed te gebruiken in combinatie met het bij OS/2 Warp 4 (en eCS) geleverde WarpCenter. XWorkplace levert ook een robuuste vervanger voor WarpCenter: XCenter.

In combinatie met andere WPS Enhancers als Object Desktop kunnen vastlopers in de WPS optreden. Ik heb i.v.m. Object Desktop de XWP instelling "Disable all folder subclassing" en "Disable undocumented menu functions" (in de sectie Paranoia) aangevinkt. Daarna deden rangschikopdrachten in de OD's enhanced folders het weer. Daarnaast werd de aan OBJDEDAT.DLL gekoppelde klasse TSEnhDataFile gederegistreerd. Hierdoor word OD's Text View weer vervangen door e.exe. Onder XWP leverde OD's Text view een bevroren Desktop op. U moet dus behoorlijk oppassen als XWP met andere WPS enhancers combineert. De lijst van foutmeldingen in xwptrap.log kan enorm groeien.

Mocht u net als ik een hekel hebben aan het verminken van iconen van reflecties (Eng: shadows) op de Windows manier - een WPS schaduw is immers geen Windows snelkoppeling (shortcut) - ga dan naar de instellingen van de X Workplace Shell en demarkeerr onder de tab Folder Views het item Mark shadow items. Onder de instellingen van de WPS (re-klikken op de WPS) stelt u onder de tab View natuurlijk wel een duidelijke andere tekstkleur voor de reflecties in, anders loopt u het risico per abuis de originele bestanden te wissen.

Een ander punt. Ik stel associaties tussen programma en extensies in met Association editor, maar als u de XWP feature Turbo Folders aanzet, werken die niet meer. Door Turbo Folders uit te vinken in de XWP setup, krijgt u uw oude associaties weer terug.

Maar omdat XWorkPlace alleen u al zoveel mogelijkheden biedt, en bovendien veel buggy WPS klassen overneemt is het gewoon de beste OS/2 desktop enhancer die er is. Geen wonder dat eComStation standaard met het op XWorkPlace gebaseerde XCenter uitkomt.

X-File

Shareware programma dat het karige "Opslaan als" menu van de meeste PM-applicaties vervangt door een ruim bemeten configureerbaar menu. Onmisbaar op een volle schijf met een ingewikkelde directorystructuur.



WPS weetjes

> Top <



Nowhere

De map NOWHERE was bedoeld voor tijdelijke objecten (WPTransient) zoals objecten van de printtaken van het printerobject (die zich overigens fysiek in /spool bevinden) en zoekresultaten van de WPS-zoekutility. Dergelijke vooral uit uitgebreide attributen bestaande objecten behoren een shutdown niet te overleven. Het Warpcenter van Warp 4 verbrak die traditie en plaatst er permanent objecten in. Sindsdien bevat de map ook objecten die een shutdown moeten overleven! De nowhere mappen laat u dus het best met rust!

Troubleshooting

Blauw scherm

Wat te doen als de Werkplek niet opstart? Om te beginnen: Geen paniek, zeker niet als u op gezette tijden reservekopieën van de werkplek heeft gemaakt. De WPS is een dynamische schil met zelfherstellende eigenschappen. OS/2 is geen Windows. Herinstallaties zijn zelden nodig.

Ctrl-Esc

De sneltoets Ctrl-Escape (Taakoverzicht) kan soms een probleemapplicatie opsporen. Als een programma niet snel genoeg reageert geeft het taakoverzicht hiervan melding ("Druk op Enter om het programma af te sluiten"). Overigens hoeft dat niet de boosdoener te zijn. Een programma als Watchcat geeft het beter aan.

CAD

Na een redelijke tijd (enige minuten) kunt een vastgelopen OS/2 afsluiten met Ctrl-Alt-Del (of met shutdown.exe) en de WPS opnieuw op laten komen. Met een Ctrl-Alt-Del worden de caches van de bestandssystemen geleegd (flush). Wijzigingen in documenten die u nog niet opgeslagen hebt bent u natuurlijk kwijt, maar verder wordt er geen schade aangericht.

Het afsluiten met CAD is altijd te verkiezen boven een harde reset. Met Ctrl-Alt-Del worden de caches en buffers voor de herstart geleegd, zodat wat nog in het buffergeheugen aanwezig is netjes op het bestandssysteem van de vaste schijf beland. Een werkende shutdown met CAD garandeert e integriteit van uw bestandssysteem. Maar als het niet lukt zal een langdurige checkdsk ze proberen te reconstrueren. En op de fout-tolerante HPFS en JFS bestandssystemen zal dit eerder lukken dan op het kwetsbare FAT bestandssysteem. Een restauratie van de laatst werkende oude toestand door checkdsk op de het file-loggende JFS bestandssysteem kan vaak snel uitgevoerd worden.

WPS herstarten

Als de WPS blijft hangen, terwijl u nog programma's hebt lopen, kunt u beter RESETWPS of een soortgelijk utility gebruiken. Deze sluit alleen de WPS af, maar niet Presentation Manager: Uw PM applicaties blijven dus lopen. Bij XWorkplace vindt u die functie onder de XWP knop als Restart desktop. Ook de in het Nederlands vertaalde CAD handler beschikt erover (W: WPS herstarten).

Taakoverzicht (PM)

Maar ook als de WPS niet werkt, kunt u met de PM hotkey Ctrl-Esc het Taakoverzicht oproepen om uw PM applicaties te bereiken en netjes af te sluiten. Verschijnen ze niet na een enkele muisklik op het taakvenster meteen in beeld, dan selecteert u ze met de muis in het Taakoverzicht, klikt met de rechter muisknop en selecteert Trapsgewijs. Hiermee kunt u de onder de WPS (eigenlijk PM) lopende virtuele schermen omzeilen. Krijgt u ze dan nog niet in beeld, dan kan het zijn dat een andere PM applicatie met extra hoge (voorgrond)prioriteit loopt. Sluit deze dan eerst af. Vaak gaat het om een PM pop-up venster dat meteenn een antwoord van u verwacht.


Lukt dit niet dan kunt u proberen in VGA te booten. Zie F3 - Primaire beeldscherm instellen op VGA en opnieuw opstarten. Subtiele bugs in videokaarten kunnen moeilijk traceerbare problemen geven. In mijn ervaring zijn ze vaak van tijdelijke aard: dus als de WPS opkomt met het standaard VGA scherm kunt u doorgaans zonder problemen de snellere videodrivers van de fabrikant installeren.

Alt-F1

Als de VGA truc niet werkt, kunt u een oudere versie van de WPS installeren. Zie: Reservekopieën in Alternatieve bootmethoden voor OS/2.


Als dit niet werkt bent u aangewezen op backupprogramma's als Robosave e.d.

Een praktijkvoorbeeld

Onderstaand voorbeeld geeft aan hoe ingewikkeld WPS problemen zijn.


Met een 512 MiB JFS cache liep mijn eCS systeem lange tijd naar tevredenheid, totdat ik op een vreemd WPS probleem stuitte.

Checking PMWP_ASSOC_CHECKSUM

        Error when writing PM_Workplace:FolderPos:242939@XFSB into the profile!
                              Press any key
        points to 3B4FB - Q:\VAR\RIP\GE_IN_EUROPA_04-01-2009_V700_<-UNABLE TO ACCESS
        DELETING PM_Workplace:FolderPos:242939@XFSB from the profile
PrfWriteProfile Failed Error 0x150F : Error: file is read-only

Wat is hier aan de hand?

Zoals bekend controleert het programma checkini de ingangen van WPS objecten in het OS2.INI bestand. Zo krijgen door de WPS geopende mappen op de vaste schijf een object ID en corresponderende instellingen. Een daarvan is de lokatie, maar tot het profiel van het object ID behoren ook zaken als de weergave van de folder. Bijvoorbeeld de geassocieerde iconen en de folder positie op het scherm. Op die manier opent OS/2 een map op de manier waarop u het hebt achtergelaten. Als het mapvenster onder de WPS verkleint hebt, verschijnt hij



Zoals checkini hierboven aangeeft waren de WPS gebruikersinstellingen opeens niet meer beschrijfbaar. Meer concreet: Het bestand OS2\OS2.INI dat de WPS gebruikersinstellingen bevat was volgens checkini ineens read-only geworden. En daarom stopte checkini met bovenstaande foutmelding (exception error). Maar volgens mijn OS/2 bestandsbeheerders waren de OS/2 INI bestanden wel beschrijfbaar. Was HPFS386 misschien het probleem? Maar ook als beide INI bestanden naar een JFS schijf kopieerde en de config.sys netjes aanpaste kwam het probleem terug.

Ik zou de foutmelding van checkini niet series nemen, als de WPS en Assoedit op dat moment responsief waren. Maar dat was helaas niet het geval. Ik stelde een nieuwe associatie van een WPS programma-object in, sloot het programma-object correct af, maar bij heropenen van het programma-object bleken mijn nieuwe instellingen niet te zijn opgeslagen. Het bleek echt dat de volgens de bestandsbeheerders het lees- en beschrijfbare bare OS2.INI bestand zich als een alleen lezen bestand gedroeg.

Ik vermoedde een probleem met het laag virtueel geheugen. Het is bekend dat gebrek aan virtuele adresruimte tegenwoordig een groter probleem is dan gebrek aan RAM. En dat de WPS hiervoor erg gevoelig is. Het programma checkini benadert via de WPS allerlei programmaobjecten en laat de WPS dus groeien door met WPS programma's geassocieerde DLL bestanden te laden. Maar bij een gebrek virtuele adresruimte zullen de DLL bestanden niet laden. En dan lopen checkini en de WPS meestal vast.

Maar na een frisse reboot met een minimaal aantal lopende applicaties direct checkini draaien loste het probleem niet op. Checkini bleef weer hangen op hetzelfde item. Ook alternatieve INI beheerders als Unitools en Xfix verhielpen het euvel niet.

Soms kon een oudere WPS backup van de eCS desktop het probleem verhelpen. Maar als dat niet ging, bleek een ROBOSAVE.CMD van de Desktop de redder in nood - ook van een defecte, dus niet door checkini te repareren desktop. Vraag me niet waarom, maar ik misschien dat de vastlopers een probleem van de WPS uitgebreide attributen zijn, die Robosave via het OS/2 systeembestand EAUTIL in een apart bestand opslaat. En volgens de regels der kunst met een ROBOREST.CMD herstelt. Maar de niet benaderbare OS2.INI kan ook een file locking probleem zijn geweest, die ROBOSAVE via ROBOUTIL weet te omzeilen.

Maar goed, nu komt de clou. Pas toen ik ineens een stabiele WPS kreeg door per abuis de JFS cache weer op 256 MiB in te stellen, werd ik me bewust van een negatieve relatie tussen de JFS cache grootte en de stabiliteit van de WPS. Een te grote JFS cache leverde vaker door de WPS onbenaderbare mappen op, zoals de map Q:\VAR\RIP\GE_IN_EUROPA_04-01-2009_V700_ met het WPS Object-ID 3B4FB hieronder:

3B4FB - Q:\VAR\RIP\GE_IN_EUROPA_04-01-2009_V700_<-UNABLE TO ACCESS

De map bevatte een door mencoder van Adobes FLV formaat in Microsofts AVI omgezet bestand van de VPRO serie In Europa. U kunt ze met met flash onder OS/2 bekijken en beter nog met Flashgot downloaden en met Mplayer bekijken. Bij schijf-intensieve operaties als decoderen is een grote JFS cache wel handig. Maar de WPS moet er niet onder lijden.


Preventie

Backups

Maak backups van de Werkplek. Zie: Reservekopieën.

Aarding

Zorg altijd voor een goede aarding van de PC. Schijven (en andere hardwarecomponenten) die "onder spanning" werken geven de verkeerde informatie door veroorzaken WPS lockups.

Chkdsk

Het uitvoeren van een CHKDSK [drive:] /F:2 is altijd aan te bevelen. Eveneens als een CHECKINI (als de WPS weer loopt). Na een CHKDSK komt de WPS soms wel spontaan op. Een CHKDSK /F:3 ruimt nog meer zaken op, maar geeft problemen als een HPFS schijf "snel" (de standaard) geformatteerd is.

Gebruik de WPS als PM applicatie

U kunt de WPS starten vanaf de opdrachtaanwijzing.

PROTSHELL=F:\OS2\PMSHELL.EXE
SET RUNWORKPLACE=F:\OS2\CMD.EXE

Vanuit CMD kunt u met "START PMSHELL" de WPS laden. Een voordeel hiervan is dat u met Watchcat een door message queue vastgelopen PMSHELL eventueel kunt killen en vanuit CMD.EXE herstarten kunt (vergelijk het een X Server onder Linux). Neem dan wel de tweede RUNWORKPLACE versie (Prg PM) in het taakoverzicht! De prg FS versie is de protected mode shell waar u niet zonder kunt.

set autostart=

Beperk het aantal applicaties in de autostart folder. WarpCenter hoort hier niet bij.

Mijn voorkeur gaat uit naar de combinatie van:

set autostart=programs, tasklist, folders
set restartobjects= startupfoldersonly

U kunt daar gerust warpcenter aan toevoegen.

Opstarten

Beperk eveneens het aantal programma's in de startup folder.

Vermoedt u hier problemen (hangende processen):

set restartobjects = no

Add-ons

Wees kritisch in het gebruik van WPS enhancers. Object Desktop (OD) en XWorkplace (XWP) maken bijv. allebei subklassen voor dezelfde mappen aan. Die van XWP staan bij mij uit (een setting in paranoia).

Tijdelijke werkplek

Als Warp de in de OS2.INI bedoelde Werkplek niet kan vinden wordt een Tijdelijke Werkplek aangemaakt. Die situatie ontstond bij mij eens doordat ik Onderdelen Installeren afbrak.

set desktop=Werkplek

De instelling SET DESKTOP=F:\Werkplek of F:\Desktop (kies uw pad) in de CONFIG.SYS kan PMShell dan helpen. Uw WPS locatie en naam (Desktop in US versies) is te controleren door op een lege plek op de Werkplek rechts te klikken: Eigenschappen / Bestand: De WPS Desktop is immers zelf ook een object.

CHECKINI /C /DF:\Werkplek

Onder de Tijdelijke Werkplek kan CHECKINI /C /DF:\Werkplek de map F:\Werkplek (niet hoofdlettergevoelig) als De werkplek herstellen.


Het volgende REXX script doet iets soortgelijks (plaats eventueel een reflectie ervan in de startup folder).


/* Poging om de werkplek te herstellen */ 
Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' 
Call SysLoadFuncs 
rrc = SysSetObjectData("F:\WERKPLEK", "OBJECTID=<WP_DESKTOP>") 


WPS HOWTO

HOWTO-wps-details - how to programmatically fight with WPS

OS/2 REXX: From Bark to Byte (31-12-1993): Rexx is de Visual Basic van OS/2.

OS/2 Configuration Techniques: "Cracking" the Workplace Shell van 12-5-1994.

The designer's model of the CUA Workplace (IBM SYSTEMSJOURNAL, VOL 31, NO 3, 1992)

WorkPlace Shell Programming In Assembler/2

> Top <
> OS/2 Index <