Autor Wątek: [WinAPI] Podwójne buforowanie  (Przeczytany 14764 razy)

Offline Xion

  • Redaktor
    • xion.log

  • +1
# Styczeń 15, 2014, 20:37:10
Przy okazji - feature'em, który wydaje mi się być nieproporcjonalnie mało popularny w stosunku do jego przydatności, jest wielokursor.
Żartujesz? Wiele kursorów to jeden z głównych powodów dla których Sublime stał się popularny.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Rokuzo

  • Użytkownik
    • Masz na sprzedaż klucze do cs go?

# Styczeń 15, 2014, 20:52:00
I tak uważam, że Visual Studio jest znacznie przyjemniejsze od wszystkich wyżej wymienionych :)

Offline ShadowDancer

  • Redaktor

  • +1
# Styczeń 15, 2014, 22:38:51
Żartujesz? Wiele kursorów to jeden z głównych powodów dla których Sublime stał się popularny.
Czym się różni wielokursor od "refactor" i podobnych?

Offline Lobsang Rampa

  • Użytkownik
    • Global Epidemic

  • +1
# Styczeń 15, 2014, 23:16:24
Dla mnie dobre środowisko (niekoniecznie zintegrowane) to przede wszystkim dobry edytor, a potem dobre podpowiadanie. Dev nie miał żadnego z nich.

Dobry edytor to poziom, który reprezentuje Vim, Emacs czy Sublime (akurat ten ostatni nie jest tak potężny, jak pierwsze dwa, ale i nie wymaga takiej nauki). Przede wszystkim chodzi tu o możliwości manipulacji tekstem, ale także kolorowanie (i dobry color theme).

Przy okazji - feature'em, który wydaje mi się być nieproporcjonalnie mało popularny w stosunku do jego przydatności, jest wielokursor.
Xender, co Ci zrobiło to biedne środowisko, że się na nie tak zawziąłeś ;) zresztą w tej chwili mało kto chyba już z niego korzysta. Nie można mięć tez zarzutów do autorów wspomnianej książki, że użyli w roli przykładu tego akurat środowiska co, jak sugerujesz czyniłoby ich mniej wiarygodnymi. Nie oceniałbym programisty po szacie jego, eeee, to znaczy po środowisku jego :P

Ja sam co do środowiska w którym piszę programy nie jestem wybredny, napisałem sporo kodu w ASM korzystając tylko z prostych edytorów tekstu dostępnych w DOS-owym Norton Commanderze i Dos Navigatorze + pliki wsadowe automatyzujące kompilację, pisałem w Fortranie korzystając tylko z kolorowania składni i... żyję ;)

Korzystałem z edytora Dos-owego Turbo Pascala odpalanego w emulatorze PC-Task na gołej Amidze 1200 (napisałem tak całą pracę dyplomową w technikum). Całość działała tak wolno, ze widziałem jak rysują się element po elemencie okienka i... żyję ;D

Pisałem tez programy i skrypty korzystając tylko z linuxowego "vi" i kompilatora gcc, i jest to jedyne "środowisko", którego nie lubiłem, edycja kodu za pomocą skrótów klawiszowych nie była przyjemna, choć znałem osoby (administratorzy Unixa/Linuxa), które miały w tym edytorze niebywałą biegłość.

Także jak przyszła epoka środowisk w pełni graficznych, to w porównania do tego co było wcześniej
to były one jak manna z nieba ;D A jak się pojawił DevCpp, to na swój czas nie był znowu taki zły, dało się pracować i od początku był darmowy, darmowa wersja VS pojawiła się chyba później (choć nie jestem pewny).

I tak uważam, że Visual Studio jest znacznie przyjemniejsze od wszystkich wyżej wymienionych :)
Również mi się bezproblemowo na nim pisało i miło go wspominam :)

Podstawowe pytanie - skoro Dev nie stwarza problemów, to czemu teraz korzystasz z C::B?
To oczywiste, bo jest lepszy. Parę osób mnie namawia w tej chwili na Eclipse, ale się w tym CodeBlocks-u już zasiedziałem, poza tym nie robię znowu jakiś wielkich objętościowo projektów, do moich małych robótek C::B mi styka :)
« Ostatnia zmiana: Styczeń 15, 2014, 23:21:20 wysłana przez Lobsang Rampa »

Offline Xirdus

  • Redaktor

  • +1
# Styczeń 16, 2014, 00:22:17
Xender, co Ci zrobiło to biedne środowisko, że się na nie tak zawziąłeś ;)
Nie wiem jak u Xendera, ale u mnie w licealnej klasie wszyscy się na Deva wk***iali bo cin.get(), getchar(), getch() i wszystkie inne sposoby zapauzowania programu na chwilę powodowały, że trzeba było wcisnąć enter od dwóch do dwunastu razy. A przy nauce programowania to jedna z najczęściej stosowanych funkcji.

Offline Lobsang Rampa

  • Użytkownik
    • Global Epidemic

# Styczeń 16, 2014, 01:42:47
Nie wiem jak u Xendera, ale u mnie w licealnej klasie wszyscy się na Deva wk***iali bo cin.get(), getchar(), getch() i wszystkie inne sposoby zapauzowania programu na chwilę powodowały, że trzeba było wcisnąć enter od dwóch do dwunastu razy. A przy nauce programowania to jedna z najczęściej stosowanych funkcji.
Dawno to już było (z 7 lat chyba), ale jakoś nie zapadły mi w pamięć tego typu problemy (tez mieliśmy w pracy przez jakiś czas DevCpp w laboratoriach), generalnie w laboratoriach informatycznych to cuda potrafią się dziać na komputerach ;D

Osobiście, to na DevCpp głównie z wxWidgets się bawiłem plus jakieś drobiazgi na konsole.
Btw. znalazłem przed chwilą, że pojawił się kontynuator tego środowiska o nazwie wxDev-C++ ukierunkowany właśnie na współpracę z wxWidgets, ale nie testowałem (nie mam już teraz takiej potrzeby).
« Ostatnia zmiana: Styczeń 16, 2014, 01:51:47 wysłana przez Lobsang Rampa »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Styczeń 16, 2014, 11:25:00
Cytuj
Nie wiem jak u Xendera, ale u mnie w licealnej klasie wszyscy się na Deva wk***iali bo cin.get(), getchar(), getch() i wszystkie inne sposoby zapauzowania programu na chwilę powodowały, że trzeba było wcisnąć enter od dwóch do dwunastu razy. A przy nauce programowania to jedna z najczęściej stosowanych funkcji.
To brzmi nie tyle jak problem ze środowiskiem, co z kompilatorem/biblioteką standardową. Czyli wina GCC/MinGW, nie samego DevC++.

Offline Xirdus

  • Redaktor

# Styczeń 16, 2014, 21:39:13
To brzmi nie tyle jak problem ze środowiskiem, co z kompilatorem/biblioteką standardową. Czyli wina GCC/MinGW, nie samego DevC++.
Z tym że Dev niezbyt chce działać z nowym gcc (tak, próbowałem - sparaliżowałem na dwa dni pół pracowni). Z resztą instaluje się Deva, więc błąd kompilatora to wina Deva ;)

Offline Xender

  • Użytkownik

  • +2
# Styczeń 16, 2014, 22:41:26
Czym się różni wielokursor od "refactor" i podobnych?
1. Jest bardziej uniwersalny - np. mając wiele kursorów w kolejnych liniach można automatycznie wyrównać je do najbardziej wysuniętego poprzez dodanie odpowiedniej liczby spacji przed pozostałymi - w Sublu jest od tego osobny plugin*
2. W przeciwieństwie do refaktoringu z Eclipse CDT, zawsze działa (tamten wykrzaczał się w jakiejś ?połowie? przypadków).

* A instalacja pluginów czy to w Sublu, czy w Emacsie to miodzio - w Sublu trzeba wcześniej zainstalować Package Control, a instalacja dodatków sprowadza się do C-S-p<ret>pi<ret>hasło_szukania_w_repozytorium(i nawigacja strzałkami między wynikami)<ret>. W Emacsie jest jeszcze łatwiej, bo manager paczek jest już wbudowany.
Przeklikiwanie się przez GUI w Eclipse, żeby coś dointalować, to PITA w porównaniu z tym.

To oczywiste, bo jest lepszy. Parę osób mnie namawia w tej chwili na Eclipse, ale się w tym CodeBlocks-u już zasiedziałem, poza tym nie robię znowu jakiś wielkich objętościowo projektów, do moich małych robótek C::B mi styka :)
Jeśli miły Ci RAM i szybkość/niezawodność edytora, to raczej nie warto się bawić w Eclipse (szczególnie do C++, do Javy ponoć sprawdza się lepiej).

BTW: O tym zapomniałem - C::B też ma wielokursor, tylko nie jest włączony domyślnie - trzeba się doklikać w ustawieniach (a przynajmniej było tak, kiedy ostatnio nań patrzyłem).

Btw. znalazłem przed chwilą, że pojawił się kontynuator tego środowiska o nazwie wxDev-C++ ukierunkowany właśnie na współpracę z wxWidgets, ale nie testowałem (nie mam już teraz takiej potrzeby).
Code::Blocks też ma dobre wsparcie dla wxWidgets (jest na nim napisany i ma wizualny edytor do wxowego GUI). Więc chyba można śmiało powiedzieć, że jest lepszy od Deva pod (prawie?) każdym względem.

To brzmi nie tyle jak problem ze środowiskiem, co z kompilatorem/biblioteką standardową. Czyli wina GCC/MinGW, nie samego DevC++.
GCC się rozwija, MinGW z pewnym lagiem, ale paczkuje nowe wersje. Tylko Dev (nie wiem, jak wxDev) z powodu braku wsparcia był dostępny zbundlowany z antycznym GCC.

Offline Lobsang Rampa

  • Użytkownik
    • Global Epidemic

# Styczeń 16, 2014, 23:40:56
Jeśli miły Ci RAM i szybkość/niezawodność edytora, to raczej nie warto się bawić w Eclipse (szczególnie do C++, do Javy ponoć sprawdza się lepiej).
Polecano mi go w kontekście łatwiejszego zarządzania dużym projektem, ale sam nie zgłębiałem tematu, na razie jakoś ogarniam to co mam używając C::B :)

BTW: O tym zapomniałem - C::B też ma wielokursor, tylko nie jest włączony domyślnie - trzeba się doklikać w ustawieniach (a przynajmniej było tak, kiedy ostatnio nań patrzyłem).
Ano właśnie, jak się używa tego wielokursora, bo przyznam bardzo by mi się taki "feauture" przydał w pracy :) ? W C::B jak zaznaczam np. jakąś zmienną, to wszystkie wystąpienia tej zmiennej w pliku są zaznaczone na czerwono, czy to ma związek z wielokursorem ? W opcjach czegoś takiego jak "wielokursor" nie znalazłem, jest "Multiple Selections" ale on umożliwia zaznaczanie z CTRL różnych fragmentów kodu i jednoczesne jego nadpisywanie, ale to chyba nie o to chodzi ?

Code::Blocks też ma dobre wsparcie dla wxWidgets (jest na nim napisany i ma wizualny edytor do wxowego GUI). Więc chyba można śmiało powiedzieć, że jest lepszy od Deva pod (prawie?) każdym względem.
Wiem, sam w tej chwili używam do wxWidgest właśnie C::B, choć nie korzystam z Form Buildera czy jak to się tam nazywa a projekty wolę zakładać od zera.

Cytuj
GCC się rozwija, MinGW z pewnym lagiem, ale paczkuje nowe wersje. Tylko Dev (nie wiem, jak wxDev) z powodu braku wsparcia był dostępny zbundlowany z antycznym GCC.
GCC jest chyba też najbardziej aktualny z dostępnych kompilatorów jeśli chodzi o nowości w standardzie C++ (tak jakbym akurat z nich korzystał ;P ).

Offline Xender

  • Użytkownik

  • +1
# Styczeń 17, 2014, 00:04:39
Ano właśnie, jak się używa tego wielokursora, bo przyznam bardzo by mi się taki "feauture" przydał w pracy :) ?
Sprawdź sam ;). Na stronie głównej Subla jest animacja z kilkoma przykładami - https://sublimetext.com/

W C::B jak zaznaczam np. jakąś zmienną, to wszystkie wystąpienia tej zmiennej w pliku są zaznaczone na czerwono, czy to ma związek z wielokursorem ?
Jakiś związek ma - w sublu ctrl-d dodaje do wielozaznaczenia następne wystąpienie ostatniego zaznaczenia. Jeśli twórcy C::B nie pokpili sprawy, to powinien tam być skrót robiący coś podobnego.
Zaznaczanie wszystkich identycznych fragmentów pozwala szybko się połapać (chociaż subl zaznacza tylko fragmenty będące pełnymi słowami, ale przy ctrl-d matchowane są wszystkie substringi. Wkurzające dla jednoliterowych nazw zmiennych (np. przy próbie zmiany 'i' na 'j')).

W opcjach czegoś takiego jak "wielokursor" nie znalazłem, jest "Multiple Selections" ale on umożliwia zaznaczanie z CTRL różnych fragmentów kodu i jednoczesne jego nadpisywanie, ale to chyba nie o to chodzi ?
To właśnie to.
GCC jest chyba też najbardziej aktualny z dostępnych kompilatorów jeśli chodzi o nowości w standardzie C++ (tak jakbym akurat z nich korzystał ;P ).
Clang idzie chyba ramię w ramię z GCC. Za to Visual przy wprowadzaniu C++11 nieco lagował.

Zresztą:
http://gcc.gnu.org/projects/cxx1y.html
http://clang.llvm.org/cxx_status.html

Offline Lobsang Rampa

  • Użytkownik
    • Global Epidemic

# Styczeń 17, 2014, 00:42:44
Dzięki Xender :)

Jeśli twórcy C::B nie pokpili sprawy, to powinien tam być skrót robiący coś podobnego.
Zastanawiam się, czy czasem jednak nie pokpili ;D W manualu jest tylko mowa o zaznaczaniu myszką różnych fragmentów kodu i ich jednoczesnej edycji, wiele to chyba nie przyspiesza pracy w stosunku do standardowego kopiuj / wklej (w obu przypadkach trzeba zaznaczyć ręcznie fragment kodu). Nie znalazłem też żadnego skrótu, który by zaznaczał kolejne / wszystkie wystąpienia jakiegoś fragmentu kodu.

Jeszcze jutro się pobawię, może coś przeoczyłem.
« Ostatnia zmiana: Styczeń 17, 2014, 00:45:11 wysłana przez Lobsang Rampa »

Offline ShadowDancer

  • Redaktor

  • +1
# Styczeń 17, 2014, 00:46:24
Na stronie głównej Subla jest animacja z kilkoma przykładami
No nie wiem, jak dla mnie to nie jest coś niesamowitego. W visualu wciskam sobie F2, wpisuje nazwę i zmienna nazywa się inaczej, podobnie zmiana jakiegoś tekstu to zaznaczam, wpisuje regexa i enter, a jeśli to nie wystarczy to zawsze jest do tego jakiś plugin.

Offline Lobsang Rampa

  • Użytkownik
    • Global Epidemic

# Styczeń 17, 2014, 01:04:02
No nie wiem, jak dla mnie to nie jest coś niesamowitego. W visualu wciskam sobie F2, wpisuje nazwę i zmienna nazywa się inaczej, podobnie zmiana jakiegoś tekstu to zaznaczam, wpisuje regexa i enter, a jeśli to nie wystarczy to zawsze jest do tego jakiś plugin.
W C::B do globalnej zmiany nazw zmiennych jest funkcja "rename symbols" działająca podobnie jak opisane przez Ciebie F2 w Visualu, a przydałoby się coś do lokalnej zmiany fragmentów kodu występujących w paru miejscach, coś jak "znajdź i zamień" w edytorach tekstu użyte na jakimś fragmencie kodu,  myślałem, że ten wielokursor się nada, ale chyba w C::B będzie on trochę kłopotliwy w użyciu.
« Ostatnia zmiana: Styczeń 17, 2014, 01:06:03 wysłana przez Lobsang Rampa »

Offline Xion

  • Redaktor
    • xion.log

  • +1
# Styczeń 17, 2014, 01:54:47
Cytuj
No nie wiem, jak dla mnie to nie jest coś niesamowitego. W visualu wciskam sobie F2, wpisuje nazwę i zmienna nazywa się inaczej, podobnie zmiana jakiegoś tekstu to zaznaczam, wpisuje regexa i enter, a jeśli to nie wystarczy to zawsze jest do tego jakiś plugin.
Nawet jeśli dobrze posługujesz się regexami do szukania i zastępowania tekstu, to i tak w bardziej skomplikowanych przypadkach spędzisz sporo czasu na formułowaniu odpowiedniego zaklęcia. A czasami będziesz jeszcze musiał raz czy dwa razy wcisnąć Ctrl+Z, bo nie przewidziałeś wszystkich przypadków brzegowych za pierwszym razem.

Wielokrotne kursory to jakby wizualny interfejs do regexowego Find & Replace, z uaktualnianiem tekstu w czasie rzeczywistym. Zamiast pamiętać, że $ pasuje do końca linijki, można po prostu wcisnąć End. Albo Home zamiast ^. Albo używać Ctrl+strzałek do poruszania się między słowami, itp. itd. Mimo że komendy będą dla każdego kursora takie same, w każdym przypadku będzie się on poruszał inaczej, zależnie od lokalnego kontekstu. Żeby osiągnąć ten sam efekt w przypadku regexów, trzeba by sporo tego kontekstu wciągnąć do wyrażenia.
Dodatkowy bonus to naturalne przejście od operacji na jednym wierszu do wielu. Regexpy mają z tym często problem (choćby z tego trywialnego powodu, że pola do ich wpisywania są zazwyczaj jednolinijkowe).