Reklama
Nepřihlášený uživatel | Zaregistrovat se
 

Téma:

Počítače a Internet

Spravuje:

running



Reklama



Diskuze o cemkoliv jablecnem, co je moc specificke na klub japka, ale moc se nehodi do klubu objective c. Nechci suplovat klub japka, spis diskutovat/ptat se na veci, co se tam nevejdou.

Povolena je i diskuze o pro aplikacich jako Final Cut atd. (je ale otazka, jestli vam nekdo odpovi) - diskuzi o iLife radsi nechte v Japkach.

odkazy (mozna pribudou):
10.5 support
reference library
apple mailing listy

ocs sine ira et studio  OCSite
(Mac OS X Server 10.6, kdyby to bylo podstatné.)
ocs sine ira et studio  OCSite
Čte to tady ještě někdo vůbec?

Každopádně, mám problém s převodem HTML na PDF. Mám na to tool, který v zásadě interně bez GUI otevře HTML a vytiskne jej do PDF, používá na to NSPrintOperation, protože jinak to (nakolik mi je známo) nejde (pokud jo, budu vděčný za odkaz).

Normálně funguje normálně; ale když jej pustím na serveru ze serverové aplikace, která je psaná v Javě a spouštěná přes launchd v dedikovaném kontu (jež samozřejmě není přihlášeno, ani se přihlásit nemůže, jde o konto appserver určené právě a pouze na toto), nefunguje a ohlásí

Thu Feb 23 03:08:18 wo.fskprojektova.cz html2pdf[67798] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged. _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL. 2017-02-23 03:08:19.411 html2pdf[67798:903] Printing failed because PMSessionBeginPageNoDialog() returned -30871. 2017-02-23 03:08:19.424 html2pdf[67798:903] Error (1002) creating CGSWindow
Což by celkem dávalo smysl; nepřihlášený uživatel se k WS nedostane, tisk bez WS nefunguje (což je hloupé a nešikovné, ale dejme tomu, že to tak je z historických důvodů a nikdo neměl čas a dost silný důvod to předělávat), ale ty divné věci teprve začnou.

Protože když ten tool spustím přímo z launchd (pomocí prakticky stejného plistu, jímž se spouští ta výše zmíněná serverová aplikace; jen je tam samozřejmě navíc LaunchOnlyOnce, jinak se liší akorát v cestách k executable a k logu), pak sice ohlásí “FAILED TO establish...”, ale následně už nedojde na “Printing failed because...” — namísto toho proběhne bez problémů a PDF vygeneruje přesně jak má.

Poznámka: zkusil jsem ten tool nahradit scriptem, který nejprve zavolá id a pak teprve tool, abych se ujistil, že všechna práva a uidy a guidy a tak dále jsou přesně stejné. Jsou přesně stejné v obou případech.

Už toto chování jeví se mi poněkud WTF, ale: když jsem to viděl, předělal jsem ten tool na kombinaci serveru, který skutečně převádí, a klienta, který si ten převod od serveru vyžádá skrze DO. To samo o sobě samozřejmě funguje bez problémů, DO jsou spolehlivé a chodí... ale:

Když ten server spustím přes launchd, pak po “FAILED TO establish...” pro změnu opět dojde na “Printing failed because...” a nevygeneruje nic, přesně stejně, jako když se to volalo z té javské serverové aplikace přímo (ta místo toho samozřejmě volá klienta). Když přesně týž tool (týž build, prostě jeden a týž program) spustím s launchd s odlišnými parametry, kdy namísto čekání na DO to PDF generuje přímo — funguje to (ohlásí “FAILED TO establish...”, nedojde na “Printing failed because...”, PDF se vygeneruje).

Pro to generování se v obou případech (když je vyvoláno argumenty nebo když je vyvoláno zprávou DO) používá týž kód, a v obou případech to běží v hlavním vlákně.

Tuší někdo aspoň přibližně, co se tam k čertu rohatému může dít?!? :-O

 
hroch32 jakz takz 
No, to je asi to, co jsem potřeboval vědět :-) Díky.
ocs sine ira et studio  OCSite
Co, probůh, je na tom k vysvětlování?

Na "serveru" povolíš remote login (v klientu SysPref/Sharing, server na to asi bude mít service někde, ten z hlavy neumím a teď mi tu neběží).

Na "klientu" pak použiješ ssh (man ssh) s nějakým kontem, které na "serveru" existuje -- a v jeho rámci prostě děláš cokoli, co bys mohl jinak v shellu dělat lokálně... Pokud bys potřeboval také přenášet nějaké soubory tam či zpět, man scp.

hroch32 jakz takz 
Jj, to jsem si tak říkal. Navede mě někdo na dokument, kde by to bylo vysvětlené/popsané pro totální LAMY?
ocs sine ira et studio  OCSite
ssh?
hroch32 jakz takz 
Jaký je, prosímpěkně, nejjednodušší způsob spouštění procesů na jiném Macu na síti? Screen sharing nepřipadá v úvahu a jeden Mac je PPC a druhý Intel.
 
takže to byla špatně nainstalovaná knihovna. To macovský peklo s install_name_tool mne nepřestává dráždit až k slzám.
hroch32 jakz takz 
Je to určitě blbost, ale to pořadí knihoven určuješ Ty? Zkusil bych ji případně hodit jinam než na poslední místo. Ověříš si, jestli je to nějakou chybou týkající se té knihovny nebo ten krám zvoře vždycky poslední. Ale je to fakt asi kravina...
linkování a bundle
mám unixovou/linuxovou aplikaci (Qt4, qscintilla2, cmake), kterou se snažím naportovat na mac. A protože se v tom prd vyznám, nevěřícně koukám na následující: knihovny jsou cmake nalezeny korektně včetně include, vše se přeloží, ale když všechno nasypu do "bundle", tak se rozsypou cesty ke knihovnám. Příklad:

-- Libs (cmake found): 
        /opt/local/lib/libQtCore.dylib
        /opt/local/lib/libQtGui.dylib
        /opt/local/lib/libQtXml.dylib
        /opt/local/lib/libQtNetwork.dylib
        /opt/local/lib/libqscintilla2.dylib 

...
make
... linkovani:
/usr/bin/c++    -Wl,-search_paths_first -headerpad_max_install_names  ...vynechany seznam .o souboru... 
    -o juffed.app/Contents/MacOS/juffed  libjuff.a
    /opt/local/lib/libQtCore.dylib /opt/local/lib/libQtGui.dylib 
    /opt/local/lib/libQtXml.dylib /opt/local/lib/libQtNetwork.dylib     
   /opt/local/lib/libqscintilla2.dylib 
...

rimmer:build-bundle pvanek$ otool -L juffed.app/Contents/MacOS/juffed 
juffed.app/Contents/MacOS/juffed:
        /opt/local/lib/libQtCore.4.dylib (compatibility version 4.7.0, current version 4.7.0)
        /opt/local/lib/libQtGui.4.dylib (compatibility version 4.7.0, current version 4.7.0)
        /opt/local/lib/libQtXml.4.dylib (compatibility version 4.7.0, current version 4.7.0)
        /opt/local/lib/libQtNetwork.4.dylib (compatibility version 4.7.0, current version 4.7.0)
        libqscintilla2.5.dylib (compatibility version 5.4.0, current version 5.4.1)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)

proč je zvýrazněný řádek bez absolutní cesty ke knihovně? Následné "fixup bundle" skripty knihovnu nenajdou a pochopitelně bundle neopraví (cp do bundle a oprava na @executable_path/../MacOS/libqscintilla2.5.dylib)

Zajímavé je, že se to začalo objevovat po upgrade Leopard-Snow Leopard a bohužel taky zároveň se změnou Qt4 a macportů.

Nápady, co je špatně?

 
hroch32 jakz takz 
OK, díky moc, kouknu na to. Folder Actions jsem tak nějak předpokládal, ale bo o nich moc nevím, tak jsem se do nich nechtěl pouštět dřív, než budu mít jistotu, že to s nima jde :)
Reakce na | Vlákno  
ocs sine ira et studio  OCSite
Hm... buďto vhodně nastavit ACL (pozor, v klientském OSu jsou standardně vypnuté, dokud je pro daný volume nezapneš, můžeš se divit, proč nefungují), nebo použít Folder Actions. O jednoduchém unix-level řešení bych nevěděl.
hroch32 jakz takz 
Asi by nebyl problém najít na internetu, ale třeba mi to někdo vysvětlí po lopatě :) Jak mám zajistit, aby když hodím soubor do konkrétní složky (v /Users/Shared, ale to je nepodstatné), tento měl stejná práva jako daná složka? To přece na Unixu musí jít :) Díky.
 
ocs sine ira et studio  OCSite
(Pokud někdo víte něco o jádře a KEXTech, jukněte mi prosím sem, dík!)
 
Protoze to tva kokmbinace operacniho systemu a externiho filesystemu neumoznuje. V mem pripade to bylo videt v logu pokud jsem si zapnul "verbose", bylo tam plno hlasek "cannot set time on destination file".
ocs sine ira et studio  OCSite
P.S. samozřejmě synchronizuji na externí disk.
ocs sine ira et studio  OCSite
To by mohlo být ono, dík! (Ještě jsem se k tomu nedostal, vyšívám teď na něčem jiném, ale toto vypadá velmi pravděpodobně. Proč ale ksakru rsync při zálohování nezachová i ten time?!? No, to je jedno...)
tvuj PRIPAD
 
(Mam Linux, rsync pouzivam bezne) Pokud jde o dva adresare v jednom filesystemu, tak to skutecne defaultne funguje jak popsal shaga. Neprovadis nahodou ten rsync pres sit nebo na externi disk? Pak je velmi pravdepodobne, ze TIME pri kopirovani neni zachovan, tudiz zazalohovane soubory maji TIME rovny okamziku, kdy byly zalohovany. Zkus pouzit option -u (pak nebudou znovu zalohovany ty soubory, u kterych jejich zaloha ma vyssi TIME nez original, coz bude asi tvuj priklad). Pri zalohovani na NAS jsem to musel takto vyresit.
Reakce na | Vlákno  
ocs sine ira et studio  OCSite
Tak jsem možná blbej, ale mně ho to důsledně počítá?!? Resp. možná nepočítá, to nevím, ale rozhodně z nějakého důvodu checkuje (nezměněný) gigabytový soubor mnohonásobně déle, než (také nezměněný) kilobytový, přitom by to mělo být obojí stejně rychlé. Ale díky, ještě to znovu ověřím, možná někde něco přehlížím nebo dělám blbě...