RPH - blog

Blog programisty

Vim jako edytor programisty

Opublikowany: Niedziela 05.06.2016
0

Nie będzie to unikalny post, w sieci można znaleźć całą masę tekstów promujących Vima jako edytor dla programisty. Pomimo to, chciałbym zaprezentować swoją konfigurację, której używam na codzień, głównie do pisania kodu C++.

Vim jest edytorem, który używam zarówno w pracy, jak i w domu. Być może, zostanę, przez zwolenników Vima, oskarżony o herezję, ale używam również innych edytorów. Zacząłem używać edyotra Emacs, posiada on narzędzie do organizowania życia jakim jest Org mode. W pracy używam też Eclipse, a to z tego względu, że projekt nad którym pracuję składa się z kilku milionów linii kodu, co byłoby ciężko ogarnąć korzystając tylko z Vima oraz narzędzi uniksowych. Niemniej uważam, że Vim jest najlepszym edytorem tekstu, a za pomocą zestawu kilku wtyczek można zrobić z niego IDE dla języka C++. Tworząc własne projekty używam właśnie Vima.

Czytaj dalej...

Jak to jest z pamięcią człowieka?

Opublikowany: Wtorek 22.03.2016
0

Dzisiaj przypomniał mi się jeden moment z wykładu algorytmów. Prowadzący, aby oszacować czas działania jakiegoś algorytmu, zadał pytanie, ile to jest logarytm przy podstawie 2 z miliona?

Bardzo szybko udzieliłem odpowiedzi, pomimo tego, że nie pamiętałem dokładnie jaki jest wynik logarytmu. O dziwo zapamiętałem mój tok myślenia, który był dość szybki.

A więc tak, milion bajtów to około megabajt, procesor intel 8086 potrafił zaadresować maksymalnie 1 megabajt pamięci, czyli milion bajtów. Ten sam procesor posiada 20 linii adresowych. Do tego pamiętałem informację o tym, że jak obliczyć jaką ilość pamięci można zaadresować przy pomocy danej ilości bitów, a to jest obliczane właśnie przy pomocy logarytmu przy podstawie dwa. Zatem logarytm przy podstawie dwa z miliona to właśnie 20.

To zadziwiające jak zaskakujący potrafi być umysł :)

Czytaj dalej...

Błędy w implementacjach C++

Opublikowany: Niedziela 20.03.2016
1

W ostatnim tygodniu znalazłem dwa błędy w implementacjach C++. Mówiąc implementacja C++ mam na myśli i kompilator i bibliotekę standardową.

Znalezienie pierwszego z nich jest następstwem mojego błędu. Klasa umożliwiała dostęp do jednego ze swojch pól - sety przez dostęp do iteratorów. Kod był podobny do poniższego:

Czytaj dalej...

Generyczny wzorzez dekoratora i debugowanie OpenGL

Opublikowany: Czwartek 14.01.2016
0

Pomysł wpadł mi do głowy o godzinie 2 nad ranem. Pomimo tego że o 6:30 miał zadzwonić budzik, aby obudzić mnie do pracy, poświęciłem godzinę aby zamienić koncepcję w kawałek kodu. Ale może od początku, zacząłem się uczyć OpenGL. Niestety w moim programie cały czas występował błąd OpenGL: invalid enum. I nie mogłem go znaleźć.

Zastosowałem więc wzorzec dekoratora, aby po każdym wywołaniu funkcji OpenGL występowało sprawdzenie czy wystąpił błąd. Opracowane przeze mnie rozwiązanie jest na tyle ogólne, że bez problemu może zostać zastosowane do rozwiązania innych problemów.

Czytaj dalej...

C++, operatory pre i post inkrementacji w nowoczesnych kompilatorach

Opublikowany: Czwartek 07.01.2016
0

Bardzo popularnym zaleceniem dla programistów C++, jest rada, aby tam gdzie jest tylko możliwe używać operatora pre inkrementacji, zamiast post inkrementacji, szczególnie w pętlach.

Zalecenie to znajduje się w dokumencie Collaborative Collection of C++ Best Practices, w rozdziale przeznaczonym wydajności: https://github.com/lefticus/cppbestpractices/blob/master/08-Considering_Performance.md#prefer-i-to-i

Dobre wyjaśnienie dlaczego należy tak postępować znajduje się na blogu Gynvael Coldwind: C/C++ szybkość i++ oraz ++i once more, reply (niestety link do kodzimy.net, który jest tam umieszczony nie działa).

Zatem, operator pre inkrementacji, w przeciwieństwie do operatora post inkrementacji, nie tworzy tymczasowej kopii obiektu. Jest tak dla typów, które nie są typami podstawowymi, ale np. iteratorami.

Ponieważ nowoczesne kompilatory potrafią bardzo agresywnie optymalizować kod wynikowy, tak, że wygenerowanego kodu asemblerowego jest mniej niż kodu C++ z którego powstał (jaskrawy przykład tu: A flexible lexicographical comparator for C++ structs ), postanowiłem sprawdzić jak to dziś wygląda w praktyce.

Czytaj dalej...

Tilda + mosh + tmux

Opublikowany: Środa 09.12.2015
0

Praca w trybie tekstowym nie jest prostym zadaniem. Sprawa jest utrudniona gdy trzeba połączyć się ze zdalnym hostem i na nim wykonywać dużo operacji. Pracując na lokalnym komputerze oczywiście można uruchomić wiele emulatorów terminala i tymi wieloma sesjami zarządzać jak zwykłymi aplikacjami okienkowymi.

Łącząc się ze zdalnym hostem bardzo często istnieje potrzeba korzystania z wielu sesji lub zapisywania stanu terminala po rozłączeniu. Za pomocą trzech narzędzi wymienionych w tytule można złożyć całkiem przyjemne środowisko, które ułatwi pracę na zdalnym serwerze.

Dodatkowo w tym artykule zobaczysz jak skonfigurować tmuxa, aby wyglądał tak jak tu:

tmux w akcji

Czytaj dalej...

Początek

Opublikowany: Czwartek 03.12.2015
0

Hej, będzie to mój pierwszy post na tym blogu. Niestety, nie będzie krótki, na samym początku chcę opisać według mnie ważne rzeczy.

Tytuł wpisu należy interpretować na dwa sposoby. Początek jako pierwszy w wpis na blogu oraz Początek jako początki moich zainteresowań informatyką.

Zatem post będzie prezentował te dwa tematy.

Czytaj dalej...
  • 1