Co nowego na forum?

Cyjon OS Off-Topic 2017-08-22 01:07
Ile zarabiacie? Kariera wczoraj, 10:13

Karolina Karolina dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

1 minuta temu @Klojtex no i masz rację, od 2 klasy liceum mieszkam sam, ale czasu się nie cofnie,...

zohn dodał komentarz w Przesyłanie zmiennej z pliku php do pliku JavaScript

2 minuty temu Próbowałem Twojego pierwszego sposobu i wywala mi: "Uncaught ReferenceError: $ is no...

grzegorz_so dodał post w Jak zaprojektować bazę danych. Żółtodziób

2 minuty temu @Haskell , @autor Poza tym zastanawiam się nad sensem tabeli części ciała, czy tam b...

Klojtex dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

3 minuty temu Oj, człowieku... I dlaczego masz potrzebę obrażania oponenta w momencie, gdy względn...

Karolina Karolina dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

6 minut temu @Klojtex nie to moja i tylko moja zasługa idioto, bo ja ja zrobię coś złego ty napis...

dualjack dodał post w Inna klasa html/css w zależności od przeglądarki?

9 minut temu https://github.com/DamonOehlman/detect-browser https://github.com/lancedikson/bowser...

grzegorz_so dodał post w Jak zaprojektować bazę danych. Żółtodziób

10 minut temu w projekcie bazy brakuje bardzo ważnej tabeli łączącej salony ze świadczonymi usługa...

drorat1 dodał post w Laravel vs Yii2

13 minut temu Porównanie na vschart: http://vschart.com/compare/yii2/vs/laravel Yii ma fajne narzę...

Karolina Karolina dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

19 minut temu @Julian ogarnij się, nie jestem kobietą

Julian_ dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

19 minut temu Nie jesteś zdana na siebie. Ludzie z reguły chcą dobra innych ludzi, a Pan Bóg się n...

Juhas dodał komentarz w Kwestie projektowe - kompozyt

20 minut temu Napisałem właśnie dlatego, bo wiem, że mam problem. Ale nie wiem, jak to dobrze zrob...

GregoryI dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

20 minut temu Właśnie, że zatrzymałeś się na tym forum na cały dzień koleś...

Karolina Karolina dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

23 minuty temu @Julian i ja muszę przyznać z przykrością, że o nim nie myślę, bo minęło już 10 lat,...

Karolina Karolina dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

24 minuty temu @Julian nie nie można mieć koniec rozmowy

Julian_ dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

24 minuty temu w pewnym sensie można mieć. To co myślisz o nim jest pewną relacją.

Karolina Karolina dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

26 minut temu to nie zmienia faktu, że nie można mieć z nim żadnych relacji

Julian_ dodał komentarz w Czy rodzicom, którzy wciskali kit w stylu "Ucz się ucz, bo nauka...

26 minut temu @Karolina Karolina: to nie zmienia tego, że nadal możesz go kochać i czcić.

Popularne wpisy na mikroblogu

jarekr000000
wczoraj, 18:27

Na scalaworld Aaron Levin pokazał type level routing dla servera http. To kolejny krok po podejsciu funkcyjnym.To daje jednoczesnie testowalnosc podejscia funkcyjnego i łatwe metadane (np swagger) jak w annotacjach. A o po poprawnosc dba kompilator. Mózg r**y.

yarel

Przypomniało mi się jak zobaczyłem XMLa pierwszy raz w życiu. "Po co to komu?" A dziś już wiem ;-) Może kiedyś przyjdzie czas i na "type level routing" ;-)

Pixello

Ja zobaczyłem xml pierwszy raz w życiu i pomyślałem wtf, patrzę na starego csproja i dalej myślę wtf :|

karolinaa
2017-09-18 10:58

Dlaczego GNU Linux?

Wczoraj w godzinach popołudniowych tj. dokładnie o 17:44 czasu UTC+2 - 17 września 2017 roku minęło 26 lat od wydania pierwszej wersji jądra Linux. Tak, pierwsza wersja jądra Linux została udostępniona publicznie 17 września 1991 dla architektury komputera PC, wykorzystującego mikroprocesor o architekturze IA-32. Do jądra dołączono narzędzia systemowe zwane też „Development Kit” oraz biblioteki z projektu GNU, aby otrzymać nadający się do użytku system operacyjny. GNU to podstawowe narzędzia systemowe z projektu GNU (do teraz nie udało im się napisać kompletnego jądra, ale narzędzia owszem).

System GNU Linux jest obecnie wykorzystywany od okrętów atomowych, po lodówki i smartwatche. Jest to przykład skalowalności, stabilności i wygrywu nauki nad wszystkim.
Dodatkowo ważna rzecz - system GNU Linux jest całkowicie darmowy. Czyli tak jak powinno być w naukowym socjaliźmie. Tymczasem co czujecie kiedy instalujecie Windows?

czysteskarpety

@xfin: To be, k****, or not to be! ;)

vpiotr

Dlaczego ludzie wciąż zadają to pytanie, skoro odpowiedź już jest: https://youtu.be/5nlhm5rrfbg?t=40s

furious programming
wczoraj, 19:55

Generyki we Free Pascalu coraz bardziej zaczynają mnie denerwować – straszanie toporny jest ten mechanizm… Pierwsza wkurzająca rzecz to sposób używania zmiennych, przechowujących referencje do list generycznych.


Dla przykładu – chcemy użyć listy generycznej do przechowywania instancji poniższej klasy:

type
  TEntry = class(TObject)
  {..}
  public
    Data: Integer;
  end;

Teraz deklaracja zmiennej dla listy. W stylu Delphi – ale z użyciem dostępnego typu kontenera – było by to tak jak poniżej, ale wyrzuci błąd kompilacji (treść w komentarzu):

var
  Entries: TFPGObjectList<TEntry>;  // Error: Generics without specialization cannot be used as a type for a variable

No dobrze, dodajmy magiczne słówko spezialize:

var
  Entries: spezialize TFPGObjectList<TEntry>;

Taki kod zostanie poprawnie skompilowany, jednak nie mam zielonego pojęcia skąd mam teraz wydłubać konstruktor, aby utworzyć instancję takiej listy. Nie mam określonego typu danych (jawnej klasy), więc trzeba by jakiejś magii, może ze słówkiem specialize, może z generic, a może z czymś innym, jednak różne konfiguracje zawodzą.

Pewnym obejściem jest po prostu zadeklarowanie osobnego typu, z którego będzie możliwe wywołanie konstruktora:

type
  TEntries = specialize TFPGObjectList<TEntry>;
var
  Entries: TEntries;
begin
  Entries := TEntries.Create();
  {..}

No i fajnie – kod się kompiluje, listę da się utworzyć. Po problemie? Nie… :]


Tak utworzona klasa TEntries co prawda potrafi już przechowywać obiekty klasy TEntry, jednak dostęp do nich jest nieco utrudniony. Załóżmy, że chcemy uzyskać dostęp do pierwszego obiektu listy i np. wpisać dane do zmiennej TEntry.Data. Odpowiedni zapis wygląda tak:

Entries[0].Data := $FF; // lub Entries.Items[0].Data := $FF;

Kod jest poprawny, kompiluje się, działa. Gdzie jest problem? W domyślnej właściwości Items. W klasie TFPGObjectList zdefiniowana jest w taki sposób, że zwraca lub modyfikuje T, czyli nie wiadomo co:

property Items[Index: Integer]: T read Get write Put; default;

Kompilator nie widzi problemu i najwyraźniej podczas kompilacji pod to T podstawia sobie klasę, której obiekty moja lista przechowuje. Jednak mechanizm kompletowania kodu gubi się – po klepnięciu kropki po nawiasach z indeksem elementu, powinno pojawić się okienko completion box i coś podpowiedzieć, ale wyrzuca błąd:

Entries[0].  // Error: illegal qualifier . found

Zapewne mechanizm ten dalej widzi typ elementu jako T (no bo tak jest zdefiniowany w klasie bazowej), więc nie może nic podpowiedzieć, a że pisanie kodu bez funkcji kompletowania jest niewygodne, dlatego też trzeba to naprawić. Znów małe obejście – można nadpisać właściwość Items, konkretyzując typ na jakim ma operować:

type
  TEntries = class(spezialize TFPGObjectList<TEntry>)
  public
    property Items[AIndex: Integer]: TEntry read Get write Put; default;
  end;

Na szczęście można skorzystać z istniejących metod pełniących rolę akcesora i mutatora, czyli metod Get i Put, a całość ustawić jako właściwość domyślną, całkowicie przykrywając poprzedniczkę. Plus jest też taki, że w okienku do kompletowania kodu będzie sugerowało naszą (skonkretyzowaną) właściwość Items, a do tej bazowej nie będzie dawać dostępu.

Nazwa takiej właściwości może być inna – nie musi to być akurat Items.


No, w tym momencie da się mieć własną listę generyczną, da się utworzyć jej instancję, kod będzie się kompilował i kompletowanie kodu nie będzie się dławić. Mam nadzieję, że w przyszłości coś się w tej materii zmieni, bo nie jest to zbyt wygodne w obsłudze. Już za kilka tygodni opublikowana zostanie wersja 1.8 środowiska – zobaczymy co nowego się pojawi.

#free-pascal #lazarus

vpiotr

@furious programming: W Delphi 7 robiło się generyki przez $I i nie narzekałem :) A tu masz to opisane - w jednym krótkim kawałku kodu: http://wiki.freepascal.org/Generics

furious programming

@i486: widzisz w tym jakiś problem?

@kAzek: to pisze ktoś, kto niedawno wrócił z bana za wyzywanie ludzi od „miernot”.

@vpiotr: znam ten artykuł, czytałem ich wiele na ten temat. Generyków używam, choć nie mam do nich przekonania, ze względu na wymienione kombinacje i trochę bugów w środowisku. Zwróć też uwagę na to, że ten artykuł nie wyjaśnia mojego jedynego pytania z tego wpisu (jak utworzyć listę generyczną, nie deklarując wcześniej konkretnego typu danych). Delphi w temacie generyków jest znacznie lepsze. :]

several
2017-09-18 13:47

Prezentacja tematu zwiazanego z C++ nie jest kompletna jesli nie zejdziemy do struktury pamieci i nie zaczniemy przesuwac wskaznikow :) 4developers Gdansk

Burdzi0

Mało sobie karku nie zwichnąłem

several

@Burdzi0: dodawałem z telefonu i nawet nie sprawdziłem :) 4p przekręcało mi obraz, lokalnie na kompie jest ok, przyciąłem i teraz jest jak powinno być.