Po prostu techblog
Bez kategorii
C – ściągawka z biblioteki string.h
maj 6th
Jako że ostatnio sporo piszę w C i widzę że sporej grupie osób raczej niezbyt fajnie to wychodzi. No to jako że mam chwilę wolnego czasu postanowiłem napisać taki oto bryk.
Jak czytać?
Ze względu na to że nie chcę mi się pisać jakiś strasznie długich artykułów, będę całą składnie opisywał raczej skrótowo. Więc zalecam zapoznanie się z tym jak wygląda funkcja w języku C. Ze względu na oszczędność mojego i Twojego czasu, nie będę się bawił w pisanie kodu który się kompiluje – sam go musisz upakować w funkcje main.
Repetytorium z tablic
Tworząc stringa, czyli ciąg znaków, musimy utworzyć tablicę znaków. Można ją zadeklarować na dwa sposoby statycznie i dynamicznie. W pierwszym podczas deklarowania zmiennej musimy podać jej wielkość (ile znaków może przyjąć). Gdy nie wiemy jaka będziemy wartość naszej zmiennej deklarujemy ją tak:
char tablica[12]; //Tablica przyjmie maksymalnie 11 znaków + NULL ('\0')
W przypadku gdy wiemy jaką zmienną przyjmie wartość podczas kompilacji i wiemy że na 100% nie przekroczy ona pierwotnej długości, to deklarujemy ją tak:
char* tablica = "Siemka!"; //Tablica przyjmie maksymalnie 7 znaków + NULL ('\0'), co daje 8 elementów w tablicy.
Ten przykład nie będzie działał – próbujemy do przypisać wartość, do tablicy która nie ma zaalokowanej pamięci.
char* tablica2; tablica = "Siemka!"; // w tym momencie system wywali "Naruszenie ochrony pamięci"
Po prostu tworzymy wskaźnik na tablicę, ale nie określiliśmy jej wymiaru. Dlatego między tymi dwoma linijkami powinna być gdzieś funkcja malloc – która dynamicznie zarządza pamięcią.
strlen
strlen jest funkcją która zwraca długość łańcucha znaku (char*). Zwracana jest liczba całkowita typu int (bo czy ktoś kiedyś widział pół literki?). Przykładowe użycie:
char* zmienna_z_tekstem = "Siemka!";
int dlugosc;
dlugosc = strlen(zmienna_z_tekstem);
printf("%i", dlugosc); //Wypisze 7
Ogólnie zasada działania jest chyba prosta jasna i przyjemna. Długość można wykorzystać do określenia rozmiaru tablicy, ilości iteracji w pętli…
strcmp
Fukcja strcmp ma za zadanie zobaczyć czy ciągi znaków są sobie równe. Jako że C jest strasznie niskopoziomowe i nie można po prostu porównać dwóch ciągów znaków. Wyrażenie:
char* zmienna1 = "Siemka!"; char* zmienna2 = "Siemka!"; if(zmienna1 == zmienna2)
zawsze zwróci fałsz. Wiec trzeba użyć jakieś funkcji, która odwali za na czarną robotę (oczywiście można napisać niezbyt skomplikowaną pętle, która będzie porównywać każdy znak po kolei, ale… po co). strcmp zwraca zawsze 0, gdy oba ciągi są sobie równe. Np taki kod:
char* zmienna1 = "Siemka!";
char* zmienna2 = "Siemka!";
if(strcmp(zmienna1, zmienna2)==0)
printf("Działa!");
Oczywiście funkcja zwraca inne wartości niż 0 i także one coś znaczą, więc zapraszam do dokumentacji.
strchr
Ta oto funkcja szuka pierwszego wystąpienia znaku w ciągu znaków począwszy od początku. Zwraca ona wskaźnik na ten element, i to w dodatku typu void – więc żeby coś sensownego z tego wyciągnąć trzeba trochę pokombinować. Oczywiście gdy szukana literka w ciągu nie występuje – zwracany jest NULL.
char tablica[100];
int znak;
char *wskaznik;
scanf("%99s", &tablica); //pobieranie maksymalnie 100 znaków
while(getchar()!='\n'); //czyszczenie bufora - po co to i jak to działa, znajdziesz w dalszej części.
scanf("%c", &znak); //pobieram kod szukanego znaku
//Odnajdywanie znaku w ciągu
if(wskaznik = (char*) strchr(tablica, znak)) //sprawdzanie czy występuje znak, zrzutowanie na char* i przypisanie go do wskaźnika
printf("Znalazłem znak %c w ciągu %s i to jest literka numer %i\n", znak, tablica, wskaznik - tablica + 1);
else
printf("Nieznalazłem znaku %c w ciągu %s\n", znak, tablica);
Jak widać aby odczytać pozycję na której znajduje się znak trzeba odjąć wskaznik, który wskazuje na dalszy element tablicy niż pierwotny od pierwotnej tablicy i mamy zliczanie pozycji, ale od 0. Dodajemy 1 wychodzi forma czytelna dla normalnego Kowalskiego. Warto oczywiście poczytać trochę o wskaźnikach jeśli nie rozumiesz, o czy teraz do ciebie mówię
Czyszczenie bufora
Na koniec pierwszej części chciałbym wytłumaczyć po co czyścic bufor. I co to właściwie jest. Mianowicie w poprzednim programie z strcmp, pobieram z scanf tylko i wyłącznie 99 znaków. Wszystko działa super, dopóki użytkownik nie wpiszę ich więcej niż 99. Spróbuje usunąć linijkę z tą dziwną pętlą i skompilować i uruchomić program. I powiedzmy zamist %99s napisać %5s i podać ciąg 7 znaków. Brawo – przepełniłeś bufor klawiatury! Wszystkie znaki nadmiarowe zamiast pójść do zmiennej, zostały gdzieś w programie i tylko czekają na kolejnego scanf/gechar, by go wypełnić. No to może przekierujmy te znaki do jakiejś nicości?
while(getchar()!='\n');
Pętle nie ma ciała i wykonuje się tak długo, aż nie napotka na znak ‘\n’ (Który był wprowadzony jako ostatni (ENTER)). Dzięki temu nasz kod chodzi jak w szwajcarskim zegarku.
Jutro postaram się dopisać drugą część, która opisze pozostałe funkcje operujące na stringach.
Maxton – nowa strona WWW
sty 28th
Zakończyłem pracę na nową stroną internetową, zespołu muzycznego Maxton.
Tym razem nie pisałem własnego CMSa od podstaw, lecz użyłem sprawdzonego i elastycznego rozwiązania jakim jest WordPress. Jego obsługa jest dużo prostsza niż „dużych” rozwiązań jak Joomla czy Drupal, więc każdy poradzi sobie z aktualizacją treści – nawet osoby nieobeznane specjalnie z tematem.
Motyw jest mój, autorski. Został on napisany w taki sposób, aby maksymalnie ułatwić jego późniejszą modyfikacje. Nowocześnie i niestandardowo rozwiązany problem menu umożliwia łatwą nawigacje.
W projekcie wykorzystałem sporo rożnego rodzaju gotowych wtyczek, co przyczyniło się do jego szybszego powstania. Dzięki temu mogłem się skupić na najważniejszym zadaniu z mojego puntu widzenia – grafice. Starałem się stworzyć wszystko sam od podstaw, korzystając jedynie z ogólnodostępnych obrazów. Mogę powiedzieć że jest to najlepsza strona jaką do tej pory stworzyłem.
Chrome OS – zabawka od Google
gru 4th
Google postanowiło stworzyć własny system operacyjny. Więcej technicznych detali możecie znaleźć tutaj, ja się skupię raczej na wrażeniach z krótkiego testowania tego dziwnego tworu.
W teorii miało być pięknie – wywalamy wszystkie programy, zostawiając tylko przeglądarkę. Pełni ona funkcje środowiska uruchomieniowego dla aplikacji webowych, jak i menadżera okien (zakładek). Dodajmy do tego uruchomienie systemu w trybie tylko do odczytu i mamy coś dziwnego…
Mianowicie kiedy mamy dostęp do sieci, to wszytko działa ładnie i pięknie. Picassa przechowuje nasze zdjęcia, Gmail maile, a Google Docs dokumenty + masa możliwości wynikających z faktu dostępu do internetu.
Ale co się dzieje, gdy na skutek awarii, oszczędności czy po prostu braku sygnału będziemy offline? Na przykład podczas długiej podróży pociągiem? Żadnego filmu nie obejrzymy, nie poczytamy sobie ebooka oraz nie posłuchamy muzyki, bo nie będziemy mieli lokalnego dostępu do ani jednego pliku! Ot i cały problem.
No ale w przyszłości internet będzie takim samym dobrem jak woda czy prąd, więc teraz skupmy się na wygodzie obsługi. System jest bardzo prosty pod tym względem – jedno spojrzenie i już wiem, co gdzie jest i jak działa. Problem przyszedł, gdy postanowiłem „komputer” wyłączyć… Jak? Nie ma żadnego przycisku w systemie który odpowiada za tą funkcje. Oczywiście na netbooku będzie fizyczny przycisk wyłączania, lecz ja musiałem niestety wyłączyć go z buta że tak powiem… Przełączanie okien, menadżer – wszystko działa prawie idealnie, panowie od Googla zrobili duży postęp. Przydałaby się jakaś przeglądarka plików, bo czasem naprawdę będzie trzeba coś zapisać na dysk twardy. Pierwsze wrażenie oczywiście pozytywne.
Poniżej przedstawiam parę zrzutów ekranu z tego ciekawego systemu.
Śledzik i informatyczni debile
wrz 17th
Najpierw były Dzieci Neostrady. Każdy ich zna, wiele osób padło ich ofiarą, szczególnie moderatorzy i administratorzy for internetowych. Brak znajomości netykiety pokutował w skutkach – bany leciały, 12 latkowie nie odpuszczali. Teraz mamy rok 2009, społeczeństwo „informatyczne”. Niby jest ok.
Jakiś czas temu Nasza Klasa wprowadziła nową usługę pod nazwą Śledzik. Taki Twitter, czy komunikator. Już pomijam użyteczność tej funkcjonalności czy ogólnie opinii. Bądź co bądź użytkownicy nie byli zbyt szczęśliwi. Ich pierwsza reakcja to typowe WTF. Potem znalazł się jakiś anonimowy krzykacz rozpowszechniając łańcuszek który z powodu „inteligencji” użytkowników nk oraz nieznajomości netykiety rozpowszechnił się na część znajomych. Dzięki temu „wspaniałemu” ruchowi społecznemu śledzik ogólnie się zasyfił i nie da się z niego korzystać… Jak można wierzyć że wpis może wyłączyć jakąś usługę… Jak można paść ofiarą osób które wyłudzają sms-y na sumę 20 zł na gg. Jak można nie instalować antywirusa?
Podsumowując to największy epiczny fail polskiej informatyzacji.
Windows 7 x64 – rzut okiem
sie 28th
Postanowiłem sprawdzić jak spisuje się finalna wersja Windows 7. Jako że jescze nie używałem 64 bitowego Windowsa, postanowiłem przetestować jak takie środowisko się zachowuje.
System został zainstalowany, więc szukam wersji x64 moich ulubionych programów. Firefox – nie ma, kodeki – nie ma (dostępne wersje testowe), Gry – nie ma, MS Office x64 – nie mam, sterowniki do karty TV – nie ma. Ogólnie programów jak na lekarstwo, w dodatku nie mogę sobie TV obejrzeć. Częściowe rozwiązanie tych wszystkich problemów zajęło mi 2 godziny, dalej grzebać mi się nie chce. Walka z kodekami jest straszna, trzeba używać jakiś enablerów i innych teog typu narzędzi, a i tak nie ma pewności czy napisy będą działać w WMP 12. Oczywiście mogę sobie zainstalować VLC, ale po co, skoro najnowszy WMP jest fenomenalny.
Mam nadzieje że producenci kodeków nie zaśpią na premierę Windowsa 7, i dopracują je w taki sposób, aby nie było problemów z ich instalacja pod Windows 7.
Aplikacje które pomogły mi częściowo rozwiązać ten problem znajdziecie na tej stronie Natomiast osoby które posiadają system 64bitowy, powinni zainstalować jeszcze to.
Migracja z Orange do Play w 24h – odcinek drugi, nieostatni
lip 7th
Wczoraj na napisałem że mam zamiar przejść w 24h z Orange do Play. Na razie czekam i pewnie potrwa to trochę czasu. Pomarańczowi dalej lecą w kulki i nie rozpatrzyli jeszcze mojego wniosku. Bądź co bądź jestem i tak w lepszej sytuacji niż ekipa z telepolis, bo przewidziałem całą sytuacje i zarejestrowałem mój numer odpowiednio wcześniej
„Szczęśliwi” posiadacze numerów zarejestrowanych w Erze i Playu faktycznie przenoszą numery w 24h, lecz cała reszta jest niestety pozbawiona tej możliwości. Pytanie brzmi czemu Centertel i Polkomtel są nieprzygotowani do zmiany prawa? Przecież mieli na to sporo czasu…
Migracja z Orange do Play w 24h – odcinek pierwszy
lip 6th
W związku z nowelizacją prawa telekomunikacyjnego, wprowadzającego na operatorów obowiązek darmowego przenoszenia numerów w jeden dzień roboczy, postanowiłem przenieść swój numer z Orange POP do Play Fresh.
Dziś o w okolicach godziny 18 postanowiłem sprawdzić jak sprawnie wszystko działa. Pierwszą gafę zaliczył Play – w salonie w Galerii Przymorze zostałem poinformowany o tym że nie działa ichni system informatyczny. Na szczęście byłem na rowerku i podjechałem do Galerii Bałtyckiej. Tam miły pan wszystko mi wyjaśnił, złożyłem 4 podpisy (w reklamie mówili jeden
) i na razie czekam.
Nie wiem ile będę czekał, bo Orange wraz z Plusem coś kombinuje i napisali podanie do UKE o zawieszenie tej możliwości. Znając życie pewnie urząd im odmówi, kierując się dobrem konsumentów, ale na chwile obecną cała szybka procedura jest „wstrzymana”.
A na dole screen, który pokazuje ile jeszcze drogi musi minąć, zanim będę się cieszył z nowej, tańszej taryfy.
Własny film DVD? No problem
maj 30th
Oczywiście gdy masz czas i chęci. Niedawno wróciliśmy z 4 dniowego wypadu do Borówna. Impreza była ostra, zostało kilka GB zdjęć i 2,5 godziny materiału filmowego. Trzeba było jakoś złożyć to w całość – pytanie brzmi czym?
Montaż
Movie Maker Beta z pakietu Live nie nadaje się na razie do użytku, więc automatycznie odpada. Wybrałem więc trial Adobe Premier Cs3. Montaż w sumie jest prosty, potrzebowaliśmy jednak chwilę z kumplem na obcykanie potężnych możliwości tego programu. Po zmontowaniu ogólnego materiału, dodaliśmy prosto efekty specjalne, flashbacki, przejścia, napisy i podłożyliśmy muzykę w kluczowych momentach. Niestety nie obyło się bez baboli – nie wiedzieć czemu w jednym miejscu muzyka się nie dodała, pojawiła się jedna, niepotrzebna spacja w podpisie zdjęcia i zamiast „Dzień 2″ jest „Dzień 3″
Lecz nikt się o to jeszcze się nie przypruł zbytnio, więc problemu „nie ma”. Montaż materiału wyrwał nam z życiorysu 3 dni, spowodował parę przekleństw (crtl+s to święta rzecz) i jedną kłótnie. Rendering filmu trwał łącznie godzinę (78 minut materiału).
Authoring DVD
To się chyba jakoś tak nazywa. Film trzeba było podzielić na rozdziały i dodać fajne menu. Bardzo proste i fajne narzędzie jest wbudowane zarówno w Windows 7 jak i Vistę. Niestety dodaje on rozdziały według własnego widzimisię i trzeba było coś wykombinować. Po przewertowaniu internetu znalazłem parę programów – jeden się nie nadawał do tego celu, drugi to multimedialny kombajn a trzeci wykrzaczył się po 5 minutach działania. Z pomocą przyszedł DVD Lab 2 PRO, też w wersji trial. Bardzo ciekawa aplikacja, lecz ponownie przytłoczył mnie natłok funkcji. Jako że ciśnienie niektórych osób na film było tak gigantyczne, że przedłużanie tego na następny dzień skończyło się niewątpliwie linczem, trzeba było działać. Szybko przeczytałem jakiś tutorial w internecie, zrobiłem eleganckie menu i byłem zadowolony. Niestety zaznaczyłem opcję, która miała poprawić trafność rozdziałów – niestety zadziałało to w drugą stronę.
Podsumowując dla chcącego nic trudnego.




Najnowsze komentarze