Chciałem sam napisać, żeby się wreszcie czegoś nauczyć z frontendu ;d Ale dzięki za odpowiedź!
Wersja do druku
Chciałem sam napisać, żeby się wreszcie czegoś nauczyć z frontendu ;d Ale dzięki za odpowiedź!
Możesz popatrzeć na kod lazyloadera bez jquery i w ten sposób ogarnąć jak widoczność się sprawdza, a dalej faktycznie doczyt ajaksem ale tego boję się ruszać na razie, chociaż fajnie by było
@mądrzyludzieodwebdev ; jak była dyskusja o wzorcach projektowych to ktoś wspominał o mvvc, chciałem coś więcej ogarnąć, ale gugiel nie jest sklonny do współpracy, ma ktoś jakieś materiały dla człowieka, który nie rozumie jak zapakowac ten cały szit w klasy nawet? :p
@up
Mvvc? w sensie MVC czy MVVM?
a może i tak
hmm...
tak, mvvm, pewnie dlatego gugiel nie pomagał
ach ta moja pamięć xD
no w każdym razie tak, to to
no mniejsza, ja myślę nad REALNĄ separacją, i w sumie jest ona możliwa, ale trzeba się sporo narobić, zwłaszcza w wypadkach ifAdmin showMore(), jednak da się. chyba
na pewno pomaga podejście od szczegółu do ogółu, łączysz klocki typu "comment" i potem wsadzasz do widoku jako jeden z argumentów konstruktora ich tablicę?
ostatnio na tym się zawiesiłem
i przy okazji: na msdn jest mvvc opisany
Siema, pisze tu ktoś na androida? ;d
Zdarzyło się ;d
@Kusterek ; Ty jako kto pracujesz atm?
cs na andromeda, świat się kończy...
kompilujesz do natywnego czy jakaś maszyna .net wyladuje razem z apka czy co?
na nowej maszynce jest ok
ale jak cs kompilujesz do natywnego a java chodzi na dalviku i do tego ma swoje humory i do tego inne niż java na desktopie to...
:kappa
fakt, że maszynka jak jest dobra to zoptymalizuje pod konkretną maszynę, a prekompilowany do natywnego kod może mieć masę legacy i nie wykorzystywać 95% nowych instrukcji wręcz
moj pierwszy kalkulatorr, wiem ze dla was to ch**, ale ja licze nonstop i ciesze jak dziecko :DKod:#include <iostream>
#include <cstdlib>
int main()
{
int wybor;
std::cout << "Wybierz liczbe odpowiadajacej danemu typowi dzialania jaki chcesz wykonac: " << std::endl;
std::cout << "1-Dodawanie" << std::endl;
std::cout << "2-Odejmowanie" << std::endl;
std::cout << "3-Mnozenie" << std::endl;
std::cout << "4-Dzielenie" << std::endl;
std::cout << "Wybierz cyfre odpowiadajaca danemu typowi dzialania: ";
std::cin >> wybor;
switch(wybor)
{
case 1:
int liczba1, liczba2;
std::cout << "Wybrales dodawanie" << std::endl;
std::cout << "Podaj pierwsza liczbe: ";
std::cin >> liczba1;
std::cout << "Podaj druga liczbe: ";
std::cin >>liczba2;
std::cout << "Obliczam: " << liczba1+liczba2 << std::endl;
break;
case 2:
int liczba3, liczba4;
std::cout << "Wybrales odejmowanie" << std::endl;
std::cout << "Podaj pierwsza liczbe: ";
std::cin >> liczba3;
std::cout << "Podaj druga liczbe: ";
std::cin >>liczba4;
std::cout << "Obliczam: " << liczba3-liczba4 << std::endl;
break;
case 3:
int liczba5, liczba6;
std::cout << "Wybrales mnozenie" << std::endl;
std::cout << "Podaj pierwsza liczbe: ";
std::cin >> liczba5;
std::cout << "Podaj druga liczbe: ";
std::cin >>liczba6;
std::cout << "Obliczam: " << liczba5*liczba6 << std::endl;
break;
case 4:
int liczba7, liczba8;
std::cout << "Wybrales dzielenie" << std::endl;
std::cout << "Podaj pierwsza liczbe: ";
std::cin >> liczba7;
std::cout << "Podaj druga liczbe: ";
std::cin >>liczba8;
std::cout << "Obliczam: " << liczba7/liczba8 << std::endl;
break;
default:
std::cout << "Zgredzie! Mozesz wybrac tylko liczbe od 1 do 4. Koniec obliczania, waflu" << std::endl;
}
system ("pause");
return 0;
}
<tanczy>
@up
jestem z Ciebie dumny ;P
Tylko popraw tam jedna rzecz. Jak masz dzielenie to sproboj wykonac: liczba1 = 7, liczba2 = 2. Wynik? Pewnie zły, no nie? Jak myslisz jak wykonać poprawnie te działanie?
@topic
głupia sprawa, C++ walidacja danych, można wpisać tylko 1 i 2.
Ten kod nie działa, przepuszcza np 's' i się buguje dalej program ;s WTF?Kod:do
{
cin>>clear();
cin>>sync();
cin>>orientacja;
}while(!isdigit(orientacja) || orientacja<1 || orientacja>2);
To teraz zrob to jak nalezy i powyciagaj dzialania do osobnych funkcji - dodawanie, odejmowanie, mnozenie dzielenie :P
Zrob do tego zeby program po zrobieniu dzialania znowu wyswietlil menu, i wylaczal aplikacje dopiero jak w menu podasz 0. Jak podasz jakis napis, ma wyswietlic znowu menu.
A co do samego kodu. Niepotrzebnie robisz zmienne liczba1 do liczba2. Wystarcza ci w kazdym dzialaniu tylko 2 zmienne :P Co prawda i tak w kazdym wypadku nie tworza sie 8 zmiennych tylko 2.
Sprobuj tez zrobic potegowanie do x potegi :P Czyli podajesz podstawe i wykladnik. Latwe do zrobienia :)
Pozatym to spoko formatujesz kod, czytelny jest. Duzy plus od poczatku ze nie robisz tego na odpierdol :P
@edit
nope, nie ma editu xd
Niewiele robiłem w C#, ale tam nie ma 'explicit' bloków synchronized jak w Javie - odpowiednikiem tego jest anotacja:
A z tego co widzę (a przynajmniej doc mi tak mówi) nie jest to operacja z taką anotacją.Kod:[MethodImpl(MethodImplOptions.Synchronized)]
Niemniej jednak, dopóki używasz osobnych iteratorów per wątek i nie mutujesz tego dictionary, to oczywiście możesz bezkarnie po nim przejeżdżać ;).
EDIT. Nie zapomnij jednak o jakimś odpowiedniku rwlocka (bo w C głównie bawiłem się wątkami, sorki ;P) w przypadku, gdy Twój przypadek użycia pasuje do jakiegoś modelu producent/konsument - czyli ktoś mutuje kolekcję, a Ty ją czytasz na bieżąco ;).
Pozdrawiam
Killavus
Tak swoją drogą, czy tylko ja uważam annotacje za badziew łamiący w chuj konwencji programistycznych? @Killavus ;
Mutuje , w sensie że zmieniam? No właśnie, możliwe jest, że któryś wątek coś doda, coś usunie, więc skoro one mają locka na dany dictionary, to chyba to szukanie też powinno, bo nigdy nie wiadomo kiedy add i find polecą na raz, right?
Co do anotacji: nikt Ci tego lepiej nie wytłumaczy jak Greg Young, serdecznie polecam:
http://www.infoq.com/presentations/8...de-refactoring
Tak, to syf. ;)
Mutuje, w sensie że zmieniam. Czytanie danych przez wiele wątków jest względnie bezpieczne - chyba że czytanie powoduje warunki uboczne takie jak np. w drzewach splay. W przeciwnym wypadku czytaj do woli bez locków. Jeżeli jednak dodajesz np. elementy, musisz już zapewnić pewnego rodzaju synchronizację - read/write lock się do tego bardzo dobrze nadaje. Inna metoda (pochodząca bardziej z FP) to duplikacja kolekcji i operowanie na nowej przy zmianach - wtedy wątki 'w trakcie' nie wiedzą, że cokolwiek się zmieniło, a nowe czytania czytają już nową kolekcję.
PS Co to za irytujący ficzer forum, że dodaje mi jakieś NIEDOZWOLONY_CIAG_ZNAKOW w randomowych miejscach? :P
Pozdrawiam
Killavus
na java code formatting covention, sama w sobie nie jest taka zła, o ile ją dobrze pisać
Dodam jeszcze artykuł gościa, którego mam poniekąd z autorytet w PHP :P
http://r.je/php-annotations-are-an-abomination.html
Tak więc - nie używajcie annotacji, one ssą!
@zakius ;
Nie rozumiem dlaczego klepanie wątków z obszarem krytycznym jest przykre :P
Bo czasami trzeba przy tym włączyć te głęboko ukryte obszary mózgu odpowiedzialne za myślenie, a nie tylko klepanie warunków jak w większości aplikacji użytkowych (chociaż te z drugiej strony są dość nudne :/)
also: prypomnialem sobie: sekcja krytyczna to się chyba najladniej nazywa
[C#] Jak w zgrabny sposób liczyc wywołania danej metody? Coś oprocz dodawania pola statycznego w klasie ;s
zmienna globalna :kappa
ale serio to się chyba inaczej nie da, możesz rzucać do bazy apdejtem, przy każdym wywołaniu insert do tabeli z auto incrementem, pisać do pliku
ale chyba lepiej wybrać mniejsze zło
Ajć, myslalem ze jest cos jeszcze o czym nie wiedziałem ;s
Kolejna sprawa, mam metodę publiczną która wywołuje jedna z prywatnych: getAndroidColor, getUIColor. Obie te metody zwraca różne typy: System.Android oraz UIColor. I teraz co ma zwracac ta moja metoda publiczna, która je wywołuje? :D
Może byte[] ?? W ogole jakie jest zastosowanie byte[] ?
Osobno dla obiektów czy niezależnie od instancji?
Osobno dla obiektów - dekorator po interfejsie
Niezależnie od instancji - dekorator po interfejsie + zmienna statyczna
@up
Ujednolicasz interfejs:
Kod:struct MyColor {
private int rgb;
public int RGB {
get {
return this.rgb;
}
}
public MyColor(System.Android color) {
//Mielisz dane z System.Android do RGB
}
public MyColor(UIColor color) {
//Mielisz dane z UIColor do RGB.
}
}
@up
własnie ten dekorator mi sie obił o uszy :P
Co do zamiany Colorw na strukture MyColor z polem RGB typu INT to potem zczytywać to np tak:
No i kolejne pytanko jak dobrze uzywac?Kod:Color c = Color.FromArgb(mb.RGB);
mam sobie metode:Kod:throw new NotImplementedException ();
i chce ja sobie wykonacKod:public IList<Note> Sort()
{
throw new NotImplementedException ();
}
tylko ze to mi sie nie wykona bez returna po za try{}, cos chyba zle robie nie?Kod:public static IList<Note> Sort()
{
try{
return NoteRepositoryADO.Sort ();
}
catch(NotImplementedException notImp)
{
Console.WriteLine (notImp.Message);
}
}
@Kusterek ;
Wyjątka używasz jak każdego innego.
Czyli:
1) W danym kodzie, gdy wykonujesz metodę, o której wiesz, że jej interfejs może wyrzucić dany wyjątek, a wiesz jak go obsłużyć, tworzysz block try - catch
2) Jeśli nie wiesz jak obsłużyć wyjątku, to najprawdopodobniej nie jest to Twoja odpowiedzialność i pozwalasz wyjątkowi iść wyżej gdzieś, gdzie ktoś będzie wiedział jak to zrobić.
Przykład ( trochę z dupy ale musiałem wymyśleć jakiś prosty scenariusz ) xD
Wyobraź sobie że masz klasę , która jest reprezentacją przyjęcia ( no takiego urodzinowego np xD ), no i generalnie implementacja tego ,,przyjęcia" zakłada, że na tym przyjęciu będzie ,,ktoś śmieszny" który będzie rozbawiał publikę :P
Teraz masz interfejs Funny i dwie przykładowe implementacje ( w tym jedna wyrzuca wyjątek bo nie jest gotowa ) :Kod:class Party {
private Funny funnyGuy;
public Party(Funny funnyGuy) {
this.funnyGuy = funnyGuy;
}
public void makeParty() {
this.funnyGuy.doFunnyThings();
}
}
Teraz musisz zastanowić się nad tym, czy nasza klasa Party powinna potrafić obsłużyć wyjątek ,,NotImplementedException" ? Konkretniej, pytanie brzmi - czy Nasza klasa przyjęcia powinna umieć poradzić sobie z sytuacją , kiedy dany ,,rozśmieszacz" nie będzie zaimplementowany?Kod:interface Funny {
void doFunnyThings();
}
class FunnyMcDonaldClown : Funny {
public void doFunnyThings() {
Console.WriteLine("I'm the McDonald guy and I'm doing a lot of funny things!");
}
}
class FunnyComedian : Funny {
public void doFunnyThings() {
throw new NotImplementedException();
}
}
Moim zdaniem np nie - użycie kodu który nie jest zaimplementowany to moim zdaniem błąd i taki dependency nie powinien być nigdy wstrzyknięty. Dlatego, jeśli wyjątek zostanie wyrzucony, zostawiam go, aby poleciał dalej.
Ale jeśli, np zdefiniowalibyśmy wyjątek w stylu:
I zadalibyśmy to pytanie ponownie, brzmiałoby ono: ,,Czy nasza klasa przyjęcia powinna umieć obsłużyć sytuację, w której rozśmieszacz nie jest śmieszny?" - i tu odpowiedź brzmi tak.Kod:class NotFunnyException : Exception { }
Więc kod wyżej w klasie Party można zmodyfikować na:
I jeszcze apropo Twojego zapytania - skoro catchujesz dany wyjątek, to znaczy, że umiesz go obsłużyć i poprowadzić metodę tak, aby zadziałała poprawnie ( to znaczy - aby zwróciła oczekiwany rezultat, w tym wypadku potrafi zwrócić IList<Note>. Oczywiście, możesz też wyrzucić wyjątek dalej, ale generalnie rzucanie tego samego wyjątku dalej uważam za antipattern, bo można to po prostu złapać gdzieś wyżej, zamiast łapać po dwa razy. )Kod:public void makeParty() {
try {
this.funnyGuy.doFunnyThings();
} catch(NotFunnyException) {
this.funnyGuy.kickOut(); //Nie chce mi sie juz modyfikowac interfejsu, ale mam nadzieje ze rozumiesz ocb :P
}
}
Reasumując:
1. Wyjątki sa po to, by wskazać, że coś jest poza normalnym działaniem danego obiektu/metody.
2. Kod, który wywołuje daną metodę, powinien sam na podstawie interfejsu który calluje ocenić, czy potrafi daną sytuacje wyjątkową obsłużyć.
3. Po obsłużeniu wyjątku, jesteśmy zobowiązani prowadzić daną metodę normalnie dalej , co oznacza, że musimy zwrócić dany typ danych ( albo wywołać inny wyjątek :P )
Uff. Mam nadzieję , że pomogłem xD
Nie. Używałem pthreadów, które są POSIXowym API i są bardzo logiczne - jedyny problem to po prostu zrozumienie problemów współbieżności. Do WinAPI nie podchodzę nigdy bez podręcznego zestawu do chemioterapii. C jest właśnie sympatyczniejsze - atomowość instrukcji jest dobrze opisana w semantyce języka itp.
PS Jeżeli nie używa się sekcji krytycznych to ogólnie rzadko kiedy opłaca się korzystać z wątków - generują niepotrzebne problemy, a wystarczy zwykły tandem fork-and-exec ;).
Pozdrawiam
Killavus
Jak mi się interfejs wieszal na tyle, że nie mogłem cancel kliknąć to dałem workera i po sprawie :p
ej panowie, co mam wklepać do cssa jak chcę żeby maksymalna szerokość obrazu wynosila szerokość strony a jak jest mniejszy żeby został? albo jak chociaż diva w którym jest ograniczyć do szerokości strony to już max-width 100% starczy chyba? bo jak div nie ma limitu to wychodzi poza ekran...
no niestety jak obraz jest szerszy od ekranu to daje swoje 100% a nie ekranu, no i chciałem żeby małych nie rozciągało dlatego max-width używam, ale właśnie żeby nie wychodził poza ekran :/
box-sizing:border-box ? czy responsive web i media quaries bo też chyba nie rozumiem xd
używając jedynie htlm(5) i css(3) chcę zrobić żeby obrazek: wyświetlał się na środku jeśli jest mniejszy niż szerokość ekranu (działa) i downscalował się do szerokości ekranu jeśli jest większy ("działa" jeśli wpiszę wartość w px)
box-sizing samo w sobie chyba nie pomoże co? bo mi nie pomogło :p
nie bo myślałem o czym innym xd
sprawdziłem i coś takiego śmiga
Kod:img
{
max-width: 100%;
display: block;
margin: auto;
}
Mordeczki, podstawy pascala i pythona znam, ale chciałbym nauczyć się czegoś, co nie jest używane przez starych grubych informatyków tylko więc jakie propozycje macie?
C++? java?
sluchajcie robilem dwa zadanka z petli do...while
http://i60.tinypic.com/2igkc50.png
pierwszy podpunkt zrobilem tak
Macie jakies zastrzezniea uwagi ws w/w kodu?Kod:#include <iostream>
#include <cstdlib>
int main()
{
int liczba;
do
{
std::cout << "Podaj liczbe 33, aby zakonczyc program." << std::endl;
std::cout << "Podaj liczbe: ";
std::cin >> liczba;
if (liczba==33)
{
std::cout << " " << std::endl;
std::cout << "Podales poprawna liczbe." << std::endl;
std::cout << "Koniec" << std::endl;
}
else
std::cout << "Podales zla liczbe. Sprobuj ponownie" << std::endl;
}while (liczba != 33);
system ("pause");
return 0;
I drugi zadanie z ktorym czesciowo sobie poradzilem, ale jestem juz zmeczony i nie mam pomyslu jak je wykonac.
I chcialbym, aby pod "case 0" podstawic komende, aby zamknac program, nawet gdyby ta komenda byla wsrodku koduKod:#include <iostream>
#include <cstdlib>
int main()
{
int liczba;
do
{
std::cout << "Podaj liczbe 33, aby zakonczyc program." << std::endl;
std::cout << "Podaj liczbe: ";
std::cin >> liczba;
if (liczba==33)
{
std::cout << " " << std::endl;
std::cout << "Podales poprawna liczbe." << std::endl;
std::cout << "Koniec" << std::endl;
}
else
std::cout << "Podales zla liczbe. Sprobuj ponownie" << std::endl;
}while (liczba != 33);
system ("pause");
return 0;
I jeszcze jedno chcialbym aby zabezpieczyc program przed wpisywaniem np. liter zamiast liczb, probowalem cos kombinowac z if...else ,ale nic mi nie przychodzi do glowy. na int nie zwracajcie uwagi zamienie u siebie na float
dzieki
kurde
może samo zadziała (na czym testowałeś?) ale jak mam popupa to średnio
mamgdzie w $nav może być kod za jedną lub dwie strzałki w styluKod:<div id='popup_content'>
{$nav}
<div id='popup_center'>
<img onclick=op('popup') src='static/comic/{$r->image}' alt='asdf' class='popimg'>
</div>
</div>
i jak to gówno ostylować żeby było jak mówię, bo samo rzucenieKod:<nav id='nextPhoto'><a href='gallery/picture/{$next->id}/box'>→</a></nav>
nołpKod:img{
max-width: 100%;
display: block;
margin: auto;
}
@Ander Twenty ; cpp, cs, java
@Tatasek ; powtarzam: double nie float
sprawdzanie znaków mrobiłem kiedyś taki używasz w stylu double temp=Get_parametr("Podaj rok urodzenia: ",1995,1980,"Rok musi zawierac sie w przedziale 1980-1995"); ale to chyba overkill troszkę, no ale działaKod:double Get_parametr(char *str, double high, double low, char *err)
{
char input[50];
char *wsk;
double data;
bool enable;
do{
enable = false;
for(char *temp = str;*temp;*(++temp))
cout << *temp;
cin >> input;
for(wsk = &input[0];*wsk;*(++wsk)){
if(!((*wsk >= 48 && *wsk <= 57) || *wsk == 46 || *wsk == 45))
enable = true;}
data = atof(input);
if(data > high)
enable = true;
if(data < low)
enable = true;
if(enable){
for(char *temp = err;*temp;*(++temp))
cout << *temp;
if(*err !=0)
cout << endl;}
}while(enable);
return data;
}
@up
widzialem fajny kurs Ruby w promocyjnej cenie.... 7000 zł xD