Linux,Android,C++,Python
Vim/Emacs Tak, odwieczną wojnę edytorów czas zacząć , walka pomiędzy użytkownikami Vi (Vim/Neovim) a Emacs musi trwać ;) Nie zmienia to jednak faktu, że te dwa edytory są niesamowicie popularne wsród programistów Unix/Linux, przedarło się to nawet do popkultury. Edytory te powstały w latach siedemdziesątych (oba w roku 1976), gdy interfejs graficzny i mysz nie były codziennością , jak jest to teraz. Ich obsługa sprowadza się do wprowadzania poleceń za pomocą klawiatury, sprawia to, że oba edytory wymagają na początku większego wkładu w naukę ich obsługi. Te potężne narzędzia, pozwalają na pracę z wieloma różnymi językami programowania, nie tylko Pythonem. Vi jest domyślnie obecny na większości systemów Uniksopodobnych (pewnie Twój domowy router też go ma), dlatego każdy powinien przynajmniej wiedzieć jak: otworzyć plik, dopisać coś, zapisać zmiany, zamknąć edytor. Na początek polecam otworzyć i zamknąć Vim'a . Początkującym polecam dobry tutorial i którąś z dystrybucji Emacsa (np. Spacemacs ) lub Vima ( tutaj artykuł wprowadzający do Vima i jednej z jego dystrybucji ), by ze wstępną konfiguracją było łatwiej. PyCharm To chyba najpopularniejsze środowisko programistyczne ( IDE ) wśród programistów Pythona. PyCharm bardzo często zrobi większość rzeczy za Ciebie, czasami nawet aż za dużo. Pełną listę możliwości znajdziesz na stronie producenta . W przeciwieństwie do Vima/Emacsa nie musisz poświęcać zbyt wiele czasu na naukę środowiska programistycznego, możesz po prostu zacząć programować. PyCharm jest dostępny w wersji Community za darmo, natomiast za wersję Professional trzeba już zapłacić. Jeżeli studiujesz to możesz sięgnąć po darmową licencję edukacyjną i używać PyCharma Professional , pamiętaj jednak, że: licencja zezwala na użycie niekomercyjne w celach edukacyjnych, licencję możesz odnawiać tak długo, dopóki studiujesz, nie możesz rozwijać produktów organizacji, nie możesz udostępniać swojej licencji. Firma JetBrains dostarcza równie popularne środowiska programistyczne dla innych języków, warto spojrzeć. Maszyna wirtualna Dla ułatwienia możesz skorzystać z przygotowanej przeze mnie maszyny wirtualnej dla VirtualBoxa z zainstalowanym systemem Linux i Pythonem. Otrzymujesz środowisko na którym możesz eksperymentować, a jeśli coś nie wyjdzie, to je po prostu usuniesz i zaimportujesz na nowo. Pozostaje Ci jedynie zainstalować swoje ulubione IDE i zacząć programować. Link do maszyny wirtualnej: https://chyla.org/s/vm Sumy kontrolne, którymi zweryfikujesz pobrany plik: sha256sum b24e9502a348416675e68f172db8441d5c95e209d97dd49e395747afe5e04257 md5sum bdd1f0c970fb4086c5b7bb9859df4833 Pamiętaj, by po uruchomieniu, dokonać aktualizacji. Krótkie wideo Na sam koniec nagranie omawiające początki z Pythonem i PyCharmem. Zobaczysz w nim jak uruchamiać skrypty napisane w Pythonie i napiszesz pierwszy skrypt z użyciem PyCharm'a, wszystko to oczywiście na systemie Linux.
Do repozytorium trafiają programy i bilioteki, których używam. W ten sposób wiem czy dany pakiet działa poprawnie i czy jest aktualny. Oznacza to także, że możesz nie znaleźć tu pakietu, który Ciebie interesuje. Większość pakietów to "backporty" z nowszych wersji Ubuntu albo Debiana, chociaż są też pakiety, które utworzyłem samodzielnie (np. universal-ctags). Przykładowe pakiety zawarte w repozytorium: cppcheck, emacs, universal-ctags, wireshark. Aktualną listę pakietów znajdziesz na launchpad.net . Dodanie repozytorium Ważne Pamiętaj, że: dodajesz to repozytorium na własną odpowiedzialność, te pakiety zastępują pakiety systemowe, nie mogę zagwarantować, że któryś z pakietów nie zepsuje Twojego systemu. Dodanie repozytorium do systemu sprowadza się do wykonania tych poleceń ( szczegóły opisane tutaj ): sudo add-apt-repository ppa:extk/chyla.org-repository-for-ubuntu-18.04 sudo apt-get update Polecam wykorzystać mechanizm Apt-Pinning do wyboru pakietów, które Ciebie interesują.
Dzien otwarty jest organizowany przez Wyższą Szkołę Bankową we Wrocławiu, ul. Fabryczna 29-31. Zaplanowane warsztaty i wykłady odbędą się 3 kwietnia między godziną 9:00 a 14:30. Make IT Simple 2019 to dzień otwarty poświęcony studiom informatycznym. Przed uczestnikami: ciekawe wykłady i warsztaty, wywiad z robotem EuGeniusem, gra VR, goście specjalni, konkurs. Automatyczne odpowiadanie na wiadomości z Facebooka w Pythonie Podczas moich warsztatów uczeń zostanie wprowadzony w świat języka Python i napisze swój pierwszy program odpowiadający na wiadomości z Facebooka. Na warsztaty możesz przyjść o godzinie 11:15-12:15 lub 13:20-14:20 do sali 219 w budynku B. Uwaga! Obowiązują zapisy: https://www.wsb.pl/wroclaw/make-it-simple
Pewnie większość z nas wie, że extern "C" ( language linkage ) wyłącza dekorowanie nazw funkcji (ang. name mangling ) i ustawia external linkage . Kompilator C++ dodaje dodatkowe napisy do nazwy na potrzeby, chociażby, przeciążania funkcji . A mangled name encodes a function or variable's name, scope, type, and/or temp
Zmienne te zawierają informacje takie jak: aktualny katalog roboczy (CWD, zmienna PWD), wykorzystywany interpreter języka poleceń (zmienna SHELL), położenie katalogu domowego użytkownika (zmienna HOME), katalogi, w których poszukiwane są programy (zmienna PATH).
Z uwag czysto redakcyjnych, ten tekst napisany został z myślą o Pythonie w wersji 3.6. Przeczytaj starszy post , jeśli szukasz informacji o wirtualnym środowisku w Pythonie 2 (w Pythonie 3 nadal można korzystać z omawianego tam narzędzia virtualenv ). Moduł venv odpowiedzialny za tworzenie wirtualnego środowiska dostarczany jest wraz z domyślną instalacją Pythona 3.6. W niektórych dystrybucjach Linuksa (np. Debian/Ubuntu) może być konieczne doinstalowanie dodatkowego pakietu zawierającego moduł venv . Polecenie dla dystrybucji Debian/Ubuntu instalujące moduł venv : sudo apt-get install python3-venv Utwo
Szablon aplikacji jest napisany w Pythonie 3 z użyciem Tk (interfejs graficzny), nie posiada on zaimplementowanej logiki. Okno programu składa się z rozwijanej listy miast, obrazu prezentującego stan pogody oraz etykiety z temperaturą. Całość dostępna jest w repozytorium WeatherForecastAppTemplate na GitHubie . Główne okno programu. Źródłem danych może być serwis OpenWeatherMap . Udostępnia on pełną listę obsługiwanych miast w postaci pliku tekstowego&
Datę instalacji systemu można określić na podstawie plików zawierających logi z tego procesu. W dystrybucjach bazujących na Debianie [1] znajdują się one w katalogu /var/log/installer/ , dystrybucje oparte na Fedorze [2] umieszczają logi w plikach /var/log/anaconda.* . Jeśli pliki te nie zawierają informacji o dacie instalacji, to można posłużyć się czasem ich modyfikacji: # stat /var/log/installer/lsb-release File: /var/log/installer/lsb-release Size: 152 Blocks: 8 IO Block: 4096 regular file Device: fe06h/65030d Inode: 29 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-12-14 22:28:55.406766334 +0100 Modify: 2017-12-14 22:28:55.406766334 +0100 Change: 2017-12-14 22:28:55.406766334 +0100 Birth: - Pliki z logami
Motyw dostępny jest na GitHubie oraz w repozytorium MELPA . Screenshot edytora z ustawionym motywem. Instalacja z repozytorium MELPA Upewnij się, że aktywowałeś repozytorium MELPA w swojej konfiguracji . W edytorze wywołaj package-install ( M-x package-install ). Wpisz nazwę p
Spis treści Wstęp Koncepcja generatora xrange a generator Wnioski Wstęp W Pythonie 2 dostępne są funkcje range() oraz xrange() . Wartością zwracaną przez range() jest lista kolejnych liczb całkowitych, xrange() zwraca obiekt pozwalający na wytworzenie kolejnych liczb tylko wtedy, gdy jest to potrzebne. W Pythonie 3 funkcja range() została usunięta, zastąpiła ją xrange() pod nową nazwą range()
Blog Fundacji Rozwoju Informatyki WMiI UMK , czyli FRIWEB powstał pół roku temu. Od początku biorę aktywny udział w jego rozwoju – do dziś, na łamach portalu, opublikowanych zostało 11 artykułów mojego autorstwa. Pierwsza edycja konkursu (obejmująca pierwsze pół roku działania portalu) odbyła się w dwóch kategoriach: Autor spośród studentów i pracowników UMK Autor spoza grona studentów i pracowników UMK Kryterium decydującym była sumaryczna liczba odsłon wszystkich artykułów danego autora. Nagrodą, w każdej z kategorii, jest BON o wartości 1 000 zł na wydatki na sprzęt komput
<div><!-- https://unsplash.com/photos/fQxMGkYXqFU --> Wszystkie prezentowane w artykule kody źródłowe dostępne są w repozytorium GitHub: <a class="reference external" href="https://github.com/chyla/GdbTutorial">https://github.com/chyla/GdbTutorial</a> <div class="section" id="spis-tresci"> <h2>Spis treści</h2> <ol class="arabic simple"> <li>Wstęp</li> <li>Przygotowanie oprogramowania do pracy z GDB<ul> <li>kompilacja programu z dodatkowymi symbolami</li> <li>osobny plik z symbolami</li> </ul> </li> <li>Uruchomienie aplikacji pod nadzorem GDB<ul> <li>uruchomienie z dodatkowymi symbolami</li> <li>uruchomienie ze zrzutem pamięci</li> <li>podłączenie do procesu</li> </ul> </li> <li>Debugowanie aplikacji<ul> <li>ustawienie pułapek</li> <li
<div><!-- https://unsplash.com/photos/-s8vX-XpGK4 --> <div class="section" id="spis-tresci"> <h2>Spis treści</h2> <ol class="arabic simple"> <li>Wstęp</li> <li>Podatność #AVGater</li> <li>Z podręcznika administratora</li> <li>Znane podatności w systemie Linux</li> </ol> </div> <div class="section" id="wstep"> <h2>Wstęp</h2> Bardzo ogólnie mówiąc, dowiązanie jest dodatkową nazwą (w systemie plików) na plik lub katalog. Z punktu widzenia użytkownika, różnice pomiędzy dowiązaniem a zwykłym plikiem są niemal niezauważalne — wszelkie operacje są wykonywane na oryginalnym pliku/katalogu. Możemy wyróżnić trzy rodzaje dowiązań: <ul class="simple"> <li>miękkie,</li> <li>twarde,</li> <li>directory junction.</li> </ul> Pierwsze dwa to klasyczne do
<figure></figure> <div><!-- https://unsplash.com/photos/-qxTQbjjQZI --> <div class="section" id="spis-tresci"> <h2>Spis treści</h2> <ol class="arabic simple"> <li>Wstęp</li> <li>Dodanie biblioteki do projektu</li> <li>Wiązanie w aktywności</li> <li>Wiązanie we fragmentach</li> <li>Dodatek Android ButterKnife Zelezny</li> </ol> </div> <div class="section" id="wstep"> <h2>Wstęp</h2> Podczas pisania aplikacji Android, programista jest zmuszony do powtarzania tych samych fragmentów kodu podczas tworzenia powiązania elementu GUI czy zasobu z odpowiednim polem klasy. Butter Knife eliminuje ten problem - odpowiednie wiązania tworzy się używając adnotacji. Na ich podstawie, w trakcie procesu kompilacji, generowany jest odpowiedni kod. Wykorzystanie biblioteki nie wpływa znacząco na wydajność
<figure></figure> <div><!-- https://freerangestock.com/photos/65798/the-way-forward- -pointing-the-way- -abstract-illustration.html --> <div class="section" id="spis-tresci"> <h2>Spis treści</h2> <ol class="arabic simple"> <li>Wstęp<ul> <li>przyszłość biblioteki Range</li> <li>wprowadzenie do zakresów</li> </ul> </li> <li>Algorytmy</li> <li>Adaptery</li> </ol> </div> <div class="section" id="wstep"> <h2>Wstęp</h2> Obecnie w C++ dostępne są zakresy dostarczane przez jedną z zestawu bibliotek Boost - Range v2, jednak nie nadążyła ona za szybkimi zmianami w standardzie. Jej udoskonalona wersja (v3) wykorzystuje nowe elementy języka, co podkreślają jej twórcy [3]: <blockquote> Why does C++ need another range library? Simply put, the existing solutions haven't kept up wit
Linux,Android,C++,Python
I'm a Software Developer who writes about Linux system administration; Android, C++ and Python programming.
I can help you with:
➡️ Linux system administration
➡️ programming Android apps
➡️ C++ programming
➡️ Python programming
Have a question? Contact me