🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #16875

Re: Groovy

#16875
From: Seweryn Habdank-Wojewódzki
Date: Wed, 16 May 2007 21:55
91 lines
6009 bytes
Witam

Piotr Kobzda wrote:

> Rzeczony wcześniej String np. jest w Javie immutable, nie dlatego, że
> implementujący go zaufali dobrej woli programistów, ale dlatego, że ma
> _zabezpieczone_ wnętrze.

Ale powiedz mi, o co chodzi z takim bezpieczeństwem. Kto napada Twoją
aplikację w takim sensie. Jak dostaję/kupuję jakąś bibliotekę, to czy moim
pierwszym odruchem jest wywalenie jej do góry nagami?
 
> Wiesz co mógłby zrobić servlet na dużym serversze, gdyby takiej
> gwarancji nie było?  Zagrozić mógłby potencjalnie nie sobie, ale
> wszystkim hostowanym aplikacjom.

Ale, jak? Nie kapuję jak może zagrozić. Jest napisany skompilowany,
przetestowany, co się może wydażyć?

> Tymczasem, podobnie jak Stringa, nie boję się przekazać obcemu kodowi
> unmodifiableSet(), czy czegokolwiek chronionego dostępem, bez obawy, że
> coś się z tym niedobrego stanie, czy choćby i niechcący, zrobi mi ktoś
> coś złego "w środku"...

No widzisz unmodifable, rozumiane jako const, czy jako immutable?

>> Wydaje mi się, że nie o to chodzi w programowaniu i w bezpieczeństwie.
> 
> Nie wiem o co chodzi w programowaniu.  To jednak o czym mówimy, to
> _bezpieczeństwo_, jakkolwiek Ty byś na to nie patrzył.

To znaczy właśnie nie kapuję jakie to jest bezpieczeństwo i przez czym?
Jeżeli przed błędami programistów, to jaktycznie problemem w kodzie C++ są
rzutowania wzięte z C.

Reszta ewentualnych szkód nie dzieje się przez przypadek. Więc nie wiem
przed czym mam się zabezpieczać.

> Oczywiście, bezpieczeństwo nie na tym się kończy, tu dopiero tak
> naprawdę się zaczyna (o czym we wskazanych wcześniej papierach też sporo
> jest...).  Bez tego jednak, nie ma sensu iść dalej...

Rozumiem. Ale nadal nie rozumiem zagrożenia, które teoretycznie coś może
wnieść do C++ z zewnątrz. Pomijam kwestię, że Ty możesz wnieść jakieś
śmieci w swoim kodzie. Chodzi mi o to co może zrobić ktoś z zewnątrz?
 
> Żaden ze znanych mi systemów na taką swobodę nie pozwala.

DOS? Systemy, a w zasadzie loadery programów na małe procki.

> Tu mówimy jednak o dość precyzyjnych zabiegach, które na poziomie C++ są
> możliwe. Na poziomie platformy Javy (oczywiście, nie tylko) nie.

Nie; czy trudno? To jest różnica. Bo jeśli trudno, to złośliwiec też Ci
sypnie aplikację.

Poza tym cały czas zapominasz o bardzo prostym fakcie, że języki wysokiego
rzędu nie sa tak wszędobylskie jak C i C++.

Zauważ, że na komórki jest JVM ME, ale nie jest tak, że ona eliminuje
system. Zanim odpalisz JVM, to starują ci normalne programy napisane w C i
C++. Szczególnie silny tu jest Symbian OS, który ma całkiem dobry
kompilator C++ - nie znam jego biblioteki standardowej, ale komnpilator
jest ok jak na taki mały sprzęt. Poza tym JVM ME to nie za dużo potrafi.

A ostatnia sprawa to kwestia wykorzystania naturalnych zasobów danego
systemu/sprzętu. JVM dość unifikuje systemy i sprzęt (z tym są kłopoty), bo
JVM w ogóle ma problem ze sprzętem, ale to pominę skupię się na samym
systemie. Są rzeczy specyficzne dla windowsa i dla unixa, i jak chcesz je
użyć, to szybko kończysz na JNI, czy się mylę? 

Np. użycie użądzeń unixowych, czy typowych raw unix socket, albo sprawa
pracy z ramdyskami. ale nie izolowanymi od systemu. Bo w JVM możesz zrobić
ramdysk i możesz tam nawet zapuścić kompilację kodu i w ogóle różne rzeczy.
Jednak ZTCW do tego ram dysku nie ma dostępu żaden inny proces systemowy.
Albo dalej kazdy system ma swoje komendy wywłaszczające zadania. Jak to
użyć? Raz z kolegą na linuksie odpaliliśmy sterownik który pracował w cyklu
100kHz, czyli odczyt danych, wyznaczenie sterowania, przekazanie sterowania
na zewnątrz zabierało 10[us]. Ale po każdym takim teście sterowania, które
nie było wykonywane a muzo, tylko na żywym sprzęcie (drivery do lasera),
zegar systemowy czasu rzeczywistego (dla RTlinuxa) opóźniał się o czas
eksperymentu. Już nie mówię o innych usługach systemu, które wisiały. Itd.
itp. są rzeczy których Java nie oferuje, bo nie powinna. A ja właśnie
takich spraw dotykam i dlatego wolę mieć niebezpieczny jezyk C++ czy C,
który kiedy potrzebuję usłuży mi nisko osadzonymi w systemie usługami.

Pozdrawiam.

-- 
|\/\/|   Seweryn Habdank-Wojewódzki
 \/\/
Technical Details
Message-ID: <f2fudp$4kd$1@news.vectranet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail
References: <f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <f298ag$b63$1@news.vectranet.pl> <f29mdl$m5f$1@inews.gazeta.pl> <f2aa6n$cp8$1@news.vectranet.pl> <f2ad64$auv$1@inews.gazeta.pl> <f2afqc$i98$1@news.vectranet.pl> <f2ahqh$6n8$1@inews.gazeta.pl> <f2ara9$dj2$1@inews.gazeta.pl> <f2at2s$tu6$1@news.vectranet.pl> <f2au65$lsi$1@inews.gazeta.pl> <f2f094$s7p$2@inews.gazeta.pl> <f2fhdn$mq3$1@news.vectranet.pl> <f2fq3r$ifq$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail
From: Seweryn Habdank-Wojewódzki <shw_mail@wp.pl>
Newsgroups: pl.comp.objects
Subject: Re: Groovy
Date: Wed, 16 May 2007 23:55:52 +0200
Organization: VectraNET - http://www.vectranet.pl
Lines: 92
Message-ID: <f2fudp$4kd$1@news.vectranet.pl>
References: <f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <f298ag$b63$1@news.vectranet.pl> <f29mdl$m5f$1@inews.gazeta.pl> <f2aa6n$cp8$1@news.vectranet.pl> <f2ad64$auv$1@inews.gazeta.pl> <f2afqc$i98$1@news.vectranet.pl> <f2ahqh$6n8$1@inews.gazeta.pl> <f2ara9$dj2$1@inews.gazeta.pl> <f2at2s$tu6$1@news.vectranet.pl> <f2au65$lsi$1@inews.gazeta.pl> <f2f094$s7p$2@inews.gazeta.pl> <f2fhdn$mq3$1@news.vectranet.pl> <f2fq3r$ifq$1@inews.gazeta.pl>
Reply-To: shw_mail@wp.pl
NNTP-Posting-Host: 82.139.21.12
Mime-Version: 1.0
X-Trace: news.vectranet.pl 1179352313 4749 82.139.21.12 (16 May 2007 21:51:53 GMT)
X-Complaints-To: usenet@news.vectranet.pl
NNTP-Posting-Date: Wed, 16 May 2007 21:51:53 +0000 (UTC)
User-Agent: KNode/0.10.4
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit