Niektórzy są leniwi i niezorientowani, więc krótka informacja dla tych, którzy lubią programować, chcą się poduczyć lub sprawdzić w programowaniu (C, C++, Pascal): za tydzień rusza kolejna edycjakonkursu programistycznego (dead link) organizowanego przez Asseco Business Solutions (dead link)

Czytaj dalej...

Skracacz SMSów.

09 kwietnia, 2008

Ludziom zdarza się wysyłać SMSy. Założenie jest takie, by w możliwie małej objętościowo formie (koszt, limity wysłanych przez bramkę, łatwość odczytu przez odbierającego) przekazać maksimum informacji. Szczególnie przy okazji awarii takich, jak wczorajsza w Szczecinie warto minimalizować objętość. ;) Poniższy skrypt przedstawia sposób na skrócenie długości wiadomości w SMSach wysyłanych za pomocą polecenia sms z pakietu sms-pl (wersje na inne dystrybucje i systemy do znalezienia we własnym zakresie, ale opisany niżej algorytm jest uniwersalny i można go z powodzeniem stosować do wszystkich SMSów.

Czytaj dalej...

Kod, który zawsze potrzebowałem i zawsze stosowałem workaroundy. Chodzi o rozrzucenie wartości do n tablic. Przydatne przy fork(), gdzie każdy proces dostaje do obróbki swoją tablicę. Poniżej przykład, jak ładnie, szybko i deterministycznie rozrzucić te wartości.

 
#!/usr/bin/perl -w
use strict;
 
my $na_ile=5;
my @a=();
my $tmp=1;
my %data=();
 
# generujemy tablicę ze 104 elementami
for (my $i=1;$i<=104;$i++){
        push @a,$i;
}
 
# rozrzucamy elementy tablicy @a na $na_ile tablic
# $data{$tmp} to referencja do tablicy...
foreach my $value (@a){
        push @{$data{$tmp}},$value;
        print "wrzucam $value na $tmp\n";
        $tmp++;
        if ($tmp >= $na_ile){
                $tmp=1;
        }
}
 
# wyświetlanie
foreach my $tabela (sort keys %data){
        print "wyswietlam tablice nr $tabela\n";
        foreach (@{$data{$tabela}}){
                print "$_\n";
        }
}
 
 

Nawiasem, use strict i -w dla niewprawionego to wzywanie. ;/ Ale bez tego z fork() się nie poszaleje. ;)

Opssesja czyli niewypał.

27 listopada, 2005

Zapewne pisałem nie raz o Opssesji (dead link), zachwalając ją. Tym razem był niewypał. Podwójny, że tak to ujmę - z jednej strony kompletnie mi nie poszło (nie ma się co dziwić, tak to jest, jak się ostatnio widzi Pascala i C cztery miesiące wcześniej i zero przygotowania, a dzień wcześniej impreza...), z drugiej - koszmarne problemy techniczne były. Ale po kolei...

Start miał nastąpić o 13:00 i faktycznie, pewnie o tej godzinie pojawiły się zadania na serwerze. Natomiast do pierwszego zadania udało mi się dobić o 13:10. Wysłanie zadania zajęło też sporo czasu (jakieś 10-15 minut). No i oczekiwanie na status. Jak to ujął kumpel dłużej się te zadania wysyła, niż pisze. Koniec końców o godz. 15 z groszami, po zapoznaniu się ze wszystkimi zadaniami, stwierdziłem, że daję sobie spokój. I słusznie, bo potem serwer leżał zupełnie jeszcze i koniec końców termin przesyłania zgłoszeń został przesunięty na 21:00 (w sumie słusznie). W efekcie najlepiej wyszli na tym ludzie, którzy szybko ściagnęli treść zadań i robili je, testując w domu, a nie wysyłając na bieżąco. W sumie, takie sprawy też warto brać pod uwagę. ;-)

Podsumowując: organizatorom nie wyszło - zainteresowanie ich przerosło tym razem (mam nadzieję, że się nie zrażą, tylko poprawią infrastrukturę tak, żeby następne zawody przebiegały bez zakłóceń, bo zawody są bardzo fajne i cieszę się, że są), chociaż uratowali sytuację na tyle, na ile mogli. Nic nie usprawiedliwia jednak mojego fatalnego wyniku. Trzeba się wziąć za C i algorytmy.

C

12 lipca, 2005

No i w końcu zabrałem się za naukę kolejnego języka programowania. Padło na C, do którego kiedyś kupiłem książkę. No i oczywiście dla wprawy robię sobie zadanka z konkursu algorytmicznego (dead link), które całkiem znośnie idą. Paru podstawowych rzeczy już się nauczyłem, teraz trzeba wziąć się na poważnie za typy zmiennych, operacje na stringach itp.

A język jak język... W sumie myślałem, że bardziej Pascal będzie, a to bardziej Perl, tylko niestety deklarować trzeba wszytko. ;-/

Hm. Przyjrzałem się zadaniu, które 'powinno działać' i oczywiście, że nie ma prawa działać. Po prostu 2^31-1 to nie 65 tys. z groszami. Ech, żebym zauważył, to od razu widziałbym rozwiązanie (takie eleganckie). Tak to jest, jak się człowiek nie wysypia.

Hm, nie dla mnie takie ekspresy. Z 10 zadań, które można było zrobić, zabrałem się za 4, z czego jedno zostało uznane (zrobione dobrze). Zadań, które oceniam jako 'do zrobienia' było 5, przy czym na jednym (Nadajniki) poległem ze zrozumieniem treści (za mały test dla mnie był), w drugim nie rozgryzłem algorytmu (Szyfr - ech, logika...), Lublin - Kraków rzucał po wysłaniu błędem uruchomienia (dziwne, algorytm był prymitywny i wolny, ale wyglądał na bezpieczny i u mnie nie robił problemów), na Chomiki Edka nie starczyło czasu, a Czekoladkę zrobiłem (i jestem z rozwiązania zadowolony, bo mało liczy).

Podsumowując: jak się wyszło z wprawy (a wyszło się okrutnie), to lepsze konkursy dłuższe. Ale i tak fajnie było. O.

Przed konkursem.

25 czerwca, 2005

No i zero przygotowań, startuję na żywca. Dopiero co się zarejestrowałem, zerknąłem na zeszłoroczne zadania (hmm... trudne) i chyba spać. Nawet kompilator mam w innej wersji, ale liczę, że to będzie nieistotne. Wyspać się i do boju jutro.

Konkurs programistyczny.

22 czerwca, 2005

Konkurs ( http://opss.safo.biz ), czyli to, co tygrysy lubią najbardziej. Oczywiście, nauczony doświadczeniami z Pogromców Algorytmów, nie liczę na zajęcie wysokiego miejsca, bo do tego wymagane byłyby przynajmniej parotygodniowe przygotowania. Ale człowiek w takim konkursie wiele się uczy. O organizacji pracy, o programowaniu, o testowaniu programów. O sobie samym też. No i jest to zabawne, przede wszystkim. Czyli w sobotę 5h zabawy będzie, a co najlepsze, znajomi ze SzLUUG też wezmą udział.

Jednak małe przygotowania będzie trzeba zrobić. W szczególności popatrzyć, jaki mają format danych wejściowych i wyjściowych i przygotować procedurki na tę okoliczność. Oraz środowisko zmontować jakieś ładne (Kate da radę chyba...) Jejku, w Pascalu nie pisałem z 2 lata...