Projekt badawczy Polska-Namibia 2010

Problem zależności dostępu do plików od certyfikatów został rozwiązany w najnowszej wersji Javy 7.4.
Obecnie każda aplikacja Javy (również ta bez certyfikatów) ma możliwość ustawiania przez użytkownika pełnych dostępu do odczytu i zapisu bez konieczności ciągłego, żmudnego potwierdzania każdego odwołania się do systemu plików.
Java 7.4 pojawiła się już w najnowszym sofcie R1KC dla K800/810.
Przypuszczalnie pojawi się ona również we wszystkich nowych softach dla telefonów db2020.
Trzeba jednak roztropnie przydzielać takie prawa, szczególnie na etapie testowania nowej aplikacji. Crash źle napisanej aplikacji Javy w trakcie zapisu może nas zmusić w najlepszym wypadku do sformatowania karty pamięci a w najgorszym do pełnego flashowania telefonu od podstaw. Wprawdzie identyczny efekt wystąpi jeśli prawa zapisu trzeba potwierdzać za każdym razem ale przynajmniej wiemy w takim przypadku kiedy i co spowodowało ew. problemy z dalszym funkcjonowaniem telefonu.
K700i ma pamiec przydzielana dynamicznie co oznacza ze na kazdy elemnt jest przydzielana czesc z pamieci calej tel. czyli nie ma miejsca sytuacja np. z nokii (3100) gdzie na aplikacje java jest tyle miejsca ze wgrasz kilka i koniec.Tu masz cale 41 MB do dypozycji i zapychasz je czym chcesz moze to byc muzyka(MP3/MP4),wideo(3GP/MP4),gry,Motywy czy zdjecia i animacje.Wybór nalezy do Ciebie czym i jak ja zapchasz :D.
Sorry nie zauważyłem ;)
W Javie istnieje grupa typów, które są traktowane w sposób szczególny szczególny. Można o nich myśleć jak o typach "podstawowych". Przyczyną takiego traktowania jest fakt, że stworzenie obiektu przez zastosowanie operatora new - zwłaszcza obiektu małego, będącego prostą zmienną - nie jest zbyt wydajne, ponieważ operator ten przydziela pamięć na stercie. W przypadku omawianych typów Java zdaje się na wcześniejsze rozwiązanie przejmując je z C, C++. Oznacza to, że zamiast tworzyć zmienną poprzez new, tworzy się zmienną "automatyczną", która nie jest referencją. Zmienna ta przechowuje wartość i jest umieszczana na stosie, co jest znacznie wydajniejsze.
Thinking in Java. Edycja polska. Wyd. Helion
Tak więc zmienną typu char, czy int można utworzyć wykonując zwykłe przypisanie, np.:
char c = 'Java';
int i = 132;
Zmienne typu Integrer, czy Character to odpowiedniki typu char i int tworzone za pomocą operatora new, np.:
Character ch = new Character('Java');
Integrer i = new Integrer(132);
BTW Powodzenia na kolokwium...
Użytkownik matilinks edytował ten post 09 grudzień 2007, 18:00
" />max - poprostu dla mnie termin "język niskiego poziomu" ma inne znaczenie niż dla Ciebie stąd ta różnica zdań - C++ nie jest przenośny bo jest językiem w pełni kompilowanym, natomiast Java jest językiem pół-kompilowanym i pół-interpretowanym - pewnie że jest bardziej przenośna ale na monochromatycznym wyświetlaczu i tak nie zobaczysz kolorów nie zależnie czy to będzie Java czy coś innego - a i kompilator w C++ sam przydziela pamieć na stosie - a wiadomo że dynamiczna alokacja pimięci nie może być nigdy automatyczna w pełni bo nie znamy podczas pracy programu długości istanienia i ilości obiektów dynamicznych
" />Hehe ciekawa dyskusja "zorientowany obiektowo" "obiektowy"
Nie pomyslalbym że te 2 słowa mogą oznaczać co innego ;]
Ale do rzeczy, nie ma sensu dyskutowac na temat ktory jest obiektowy a ktory zorientowany obiektowo. W koncu dojdziecie do wniosku "no wiec ten jest obiektowy a ten zorientowany obiektowo" i co z tego. Szczerze mowiac Z Java niewiele mialem do czynienia, ale z tego co tu czytam jakos nie chce mi sie wierzyc ze nie ma w niej mozliwosci programowania strukturalnego, a nawet jesli, to czy ten fakt czyni jezyk Java lepszym? Poza tym mysle, ze problemy z przydzielaniem i zwalnianiem pamieci np. w C czy C++ (niekoniecznie musza byc z tym problemy) sa pozytywnym zjawiskiem, bo dzieki nim programista jest zmuszony wglebic sie temat zarzadzania pamiecia, co jest swietnym cwiczeniem na doskonalenie umiejetnosci logicznego myslenia.
A jesli chodzi o ta dyskusje to zacytuje moze:
"Mimo, że Java bazuje na języku C++, jest językiem znacznie bardziej zorientowanym obiektowo." (Thinking in Java Edycja 3, Bruce Eckel)
Wynika z tego, że Java jest również językiem zorientowanym obiektowo Fakt - bardziej niż C++. Czy istnieją w ogóle języki oparte TYLKO i WYŁĄCZNIE na obiektach?? Jeśli tak - kiepsko widzę ich przyszłość...
Poza tym - mialy byc tu jakies ciekawostki o C++ ;]
" />
">Szczerze mowiac Z Java niewiele mialem do czynienia, ale z tego co tu czytam jakos nie chce mi sie wierzyc ze nie ma w niej mozliwosci programowania strukturalnego,
W Javie nie napiszesz programu bez choćby jednego obiektu.
">a nawet jesli, to czy ten fakt czyni jezyk Java lepszym?
To, że nie pozwala na programowanie inne niż obiektowe, czy to, że Java jest w pełni obiektowa?
">Poza tym mysle, ze problemy z przydzielaniem i zwalnianiem pamieci np. w C czy C++ (niekoniecznie musza byc z tym problemy) sa pozytywnym zjawiskiem, bo dzieki nim programista jest zmuszony wglebic sie temat zarzadzania pamiecia, co jest swietnym cwiczeniem na doskonalenie umiejetnosci logicznego myslenia.
Taaaak... programiści uwielbiają ślęczeć na tropieniu trudnych do znalezienia bug'ów... Widać to w szczególności w nowoczesnych językach programowania (Java, C#, Python, Ruby, itp.), gdzie trzeba ręcznie zwalniać pamięć
">A jesli chodzi o ta dyskusje to zacytuje moze:
"Mimo, że Java bazuje na języku C++, jest językiem znacznie bardziej zorientowanym obiektowo." (Thinking in Java Edycja 3, Bruce Eckel)
Wynika z tego, że Java jest również językiem zorientowanym obiektowo Fakt - bardziej niż C++.
To jest tylko potwierdzenie tego co mówiłem - "obiektowy" = "zorientowany obiektowo".
">Czy istnieją w ogóle języki oparte TYLKO i WYŁĄCZNIE na obiektach??
Przeczytaj uważnie moją poprzednią wypowiedź.
Rozumiem, że chodzi o sklejenie dużych obrazków w jeden jeszcze większy? To moje pytanie po co? Nie lepiej trzymać w trzech mniejszych? Bo co z tego, że uda się złączyć, jak później otwieranie również może nastręczać problemów.
Poza tym temat sklejania był już poruszany na forum:
viewtopic.php?f=9&t=5156
I rozwiązanie:
http://gpsmaniak.com/new/mapy-raster.htm#2
Jeśli brak Ci zakładek, po prostu dodaj ten sam nadmiarowy wiersz/kolumnę kafelków do obu sklejanych fragmentów. Nie wiem tylko, jak ten panavue obsługuje większe zdjęcia.
Osobiście sklejałem maksymalnie obrazki o rozdzielczości ok 400MPix (26000x15000) i robiłem to swoją aplikacją napisaną w Javie. Program w sumie potrzebował prawie 2GB ramu, a pod Linuksem 32bit mogę maksymalnie przydzielić 2600MB, więc już na granicy.
Poza tym sklejałem również siatkę geotifów 1200x1200 przy pomocy GDAL do wynikowego pliku 13200x7200 i chyba praktycznie nie potrzebował dużo ramu i mógłby dużo większe kawałki skleić, ale to dość specyficzne narzędzie. Potem ten plik przekształcałem również gdal'em do 16020x14221 i również bez problemów z pamięcią.
Tiff ma tę przewagę, że nie trzeba całego pliku wczytywać, by łączyć kawałki, więc tutaj praktycznie rozmiar nie powinien mieć znaczenia, jedynie przestrzeń dyskowa.
Do hot_stuff:
Proces ładowania systemu operacyjnego polega na utworzeniu w pamięci struktur, tablic, segmentów i wiele innych, a następnie ładuje je odpowiednimi danymi i kodem (czyli "inicjalizuje") aby potem "wskoczyć" do punktu startu i zacząć wykonywać kod systemu operacyjnego.
A co do inicjalizacji, wiadomo że w C/C++ pamięć globalna jest incjalizowana automatycznie, a ta przydzielana dla programu w trakcie jego wykonania już nie i każdy program powinien to zrobić na własną rękę (i po to są konstruktory). W mojej wypowiedzi wyżej chciałem uzmysłowić że nie można traktować jako losowych wartości tych które znajdują się w nowo przydzielonej pamięci.
Program, którego poprawność działania bazuje na "śmieciach" zawartych w przydzielonej pamięci, to ŹLE napisany program. Jako dowód można by uznać że środowiska uruchomieniowe .NET i Java (a są to nowsze rozwiązania w dziedzinie programowania) "czyszczą" pamięć przed jej przydzieleniem.
A tu kod, brakuje tylko losowania, nie znam żadnej funkcji bibliotecznej do losowania liczby typu double, a C/C++ już dawnooo nie używałem.
double tab[10][10];
//losowanie (!)NIEDOKOŃCZONE
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
tab[i][j] = //tutaj generator liczby losowej double
}
// obliczanie poziomo
double poziom = 0.0;
for (int i = 0; i < 10; i++)
{
double temp = 0.0;
for (int j = 0; j < 10; j++)
temp += tab[i][j];
temp /= 10.0;
poziom += temp;
}
poziom /= 10.0;
//obliczanie pionowo
double pion = 0.0;
for (int i = 0; i < 10; i++)
{
double temp = 0.0;
for (int j = 0; j < 10; j++)
temp += tab[j][i];
temp /= 10.0;
pion += temp;
}
pion /= 10.0;
cout << "średnia poziom = " << poziom;
cout << "średnia pion = " << pion;