[Web apps] Voli.Faktury

If you have a small company in Poland and you need to create an invoice sometimes maybe you are looking for an simple and easy tool when you can do this from web.

I also have this problem, but because i’m a software developer, i don’t like to use existing software and i like to do something my own. Specially if there is good occasion to build something interesting and test some exiting technologies 😀

So i did invoicing software which is available here and here is a screen.

faktura

In this tool you can create your invoice, save it and use it later. You don’t need to create database of clients or products, because if you want to create an invoice for someone who you already did just copy this invoice and paste it in new one. Idea is to have as less functionality as possible and make it to use as easy as it is.

Because it is still in beta stage, if you will register and want to use it, then let me know this because i need to know if i should care about your data.

Ok, some technical information. Here is done some of my favorite (for now;)) software technic and i did something what i personally call “onion programming”. We have following liers:

1. Data – data are stored in NoSQL Document database called Ndatabase. It is easy and great solution for embeded concept – just one library try it!!!

2. data access lier is ASP.NET MVC 4 application

3. data exchange lier it is JSON communication

4. data presentation lier is HTML with Bootstrap and jQuery

5. data binding is MVVM model supported by Knockout-js – great option if you have an experience with WPF or silverlight. Using Knockout and jQuery programming web applications is so easy as building fat client applications in WPF or WindowsForms.

If you have any technical questions or suggestions to this project, please let me know and i will try to answer you.

 

[iOS app] MaxVideo.pl client application

Since some time in App store you can find and test my client application for MaxVideo.pl service.

This service is video storage service where users can store their own movies and can share this movies to friends by sending direct link to it. Web site policy is to do not have any search feature because all files are private users files and only users can decide who can or who can not watch their movies.

I wanted their movies for my different and private project so we made a “deal” they will give me access to their api and i will make an application for them.

So now if you have our own movies on MaxVideo or you have friends who store movies there you can watch it directly on your iphone or ipad. Only what you need to have is valid account.

Application is available for free in App Store – have fun and leave comment if you want 🙂

In this project i used may favorite technology (for now) for programming mobile devices – it is combination of PhoneGap, jquery and jquerymobile.

20130213-213631.jpg

If you have an android device and you want to use this application on android you can try this apk. I don’t use android any more so i don’t know if everything is working ok, but this is compiled PhoneGap project for android with my app, so feel free to test it and let me know if it works or not.

 

[New ideas] second approach to shopping presentation software

Second version of my idea about shop presentation software. This time it is small parser of web shop of polish H&M, Just go there and hit F4 and put H&M product number, Or – this is coolest – scan QR code with your mobile phone and you can select one of few example codes to display. Have fun 🙂
Only one note – remember it is still prototype and only a presentation of idea.

Here is link to find and test this software

Zrzut_ekranu_08.02.2013_20_10when you will open mobile application just select one of example article numbers and information of it will be shown for 10 seconds on monitor screen remotely

Here is how mobile page looks like.

20130209-213934.jpg
When you will select category from main menu then you will see products from this category.

20130209-213945.jpg
Now you need to select product which you want to see on big screen.

Of course your “big screen” can be whatever from 80 inches TV set to iPad.

[Pomysły] taki sobie mały pomysł po wizycie w sklepie

Byłem z moją żoną w sklepie dwa dni temu i tam spotkałem kilka plakatów, które miały zachęcać do kupna produktów. A co gdyby te plakaty zastąpiono je tym: http://goluda.pl/apps/keydown/ naciśnijcie 1+enter lub 2+enter lub 3+enter i zobaczcie co się stanie 😀

A teraz wyobraźcie sobie, że nie naciskacie klawiatury ale skanujecie metkę od ubrania!!!!

Plan lekcji na iPhone już trafił do App store

Od jakiegoś czasu pracowałem nad odświeżoną wersją mojego programu do planu lekcji i dzisiaj w końcu trafił on do App Store.

Mamy nowy design in nową funkcjonalność, więc tutaj krótka lista co teraz program potrafi:

  • Obsługuje dowolną liczbę uczniów (dzieci)
  • każdy z uczniów może mieć zdefiniowany dowolny plan godzin lekcyjnych (kiedy lekcje się kończą lub zaczynają)
  • przy tworzeniu planu lekcji na konkretny dzień można rozpocząć od wstawienia standardowego planu godzin i wtedy tylko wypełnić już kolejne lekcje, a niepotrzebne godziny usunąć
Teraz kilka screenów z aplikacji:
Czekam na wasze opinie, komentarze i pomysły co by tu jeszcze zmienić.

Iphone Contact Exporter

Wczoraj pojawił się mały problem. Michał kombinował jak by tu wydłubać kontakty z Iphone ale jednocześnie nie synchronizować go z niczym. Pomyślałem, że dobrym pomysłem byłoby wyeksportowanie kontaktów do pliku CSV i przesłanie ich mailem. Potem można już z tym zrobić co się chce.

Napisałem więc prostą aplikację i wrzucę kawałki kodu źródłowego, bo może ktoś jeszcze będzie chciał z tego skorzystać.

Na początek importy:

Dla dostępu do książki adresowej potrzebujemy:

#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>

Do wysłania emaila będziemy potrzebować jeszcze:

#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

Dodatkowo trzeba dodać w deklaracji naszego view controllera obsługę protokołu <MFMailComposeViewControllerDelegate>

Kod do importu książki adresowej wygląda tak:

- (IBAction)Import:(id)sender {
    ABAddressBookRef ab=ABAddressBookCreate();
    CFArrayRef people=ABAddressBookCopyArrayOfAllPeople(ab);
    CFIndex ii=ABAddressBookGetPersonCount(ab);
    NSString *wszystko=@"";
    for(int i=0;i<ii;i++)
    {
        ABRecordRef record=CFArrayGetValueAtIndex(people, i);
        NSString   *FirstName=(__bridge NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty);
        NSString   *LastName=(__bridge NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty);
        NSArray *Email=(__bridge NSArray *)ABMultiValueCopyArrayOfAllValues(ABRecordCopyValue(record, kABPersonEmailProperty));
         NSArray *Phone=(__bridge NSArray *)ABMultiValueCopyArrayOfAllValues(ABRecordCopyValue(record, kABPersonPhoneProperty));

        NSString *outputRecord=[NSString stringWithFormat:@"%@; %@; %@; %@\n",FirstName,LastName,[self arrayToString: Email],[self arrayToString: Phone]];

        wszystko=[wszystko stringByAppendingString:outputRecord];
    }

    [OutputContactList setText:wszystko];
}

Zaimportowane kontakty z będą zapisane jako tekst oddzielany średnikami – po jednej linii na kontakt. Importuję tylko pola: imię, nazwisko, wszystkie numery telefonów i wszystkie adresy e-mail.

Na końcu przygotowane dane wrzucam do TextView OutputContactList

W związku z tym, że numery telefonów i emaile są przechowywane w tablicy zrobiłem sobie jeszcze jedną pomocnicza funkcję:

- (NSString *)arrayToString:(NSArray *)ar
    {
        NSString *s=@"";
        int i=0;
        if([ar count]>0)
        {
        for(NSString *pozycja in ar)
        {
            i=i+1;
            s=[[s stringByAppendingString:pozycja] stringByAppendingString:@";"];
        }
        }
        for (int j=i;  j <= 3 ;j++)
        {
            s=[s stringByAppendingString:@";"];
        }
        return s;
    }

Przekształca ona tablice na ciąg 4 elementów oddzielanych średnikami – jak tablica jest mniejsza to dopełnia ją – zakładam, że nie będę miał więcej numerów telefonów lub adresów email.

Pozostaje jeszcze wysłanie emaila z danymi:

- (IBAction)sendMail:(id)sender {
    MFMailComposeViewController *mailController=[[MFMailComposeViewController alloc]init];
    [mailController setMailComposeDelegate:self];
    [mailController setMessageBody:[OutputContactList text] isHTML:NO];
    [mailController setSubject:@"Sending contacts"];
    NSArray *recp=[[NSArray alloc]initWithObjects:[emailAddress text], nil ];
    [mailController setToRecipients:recp];
    [self presentModalViewController:mailController animated:YES]; 
}

Ten kod otworzy okienko i przygotuje e-mail do wysłania.

Pozostaje jeszcze obsłużenie zamknięcia okna:

-(void ) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    [controller dismissModalViewControllerAnimated:YES];
}

I właściwie gotowe.

Efekt końcowy u mnie wygląda mniej więcej tak:

 

Jeżeli macie pytania to zapraszam do komentowania

Voli.PicasaDownloader

Mój kolega Krzysiu prosił mnie już jakiś czas temu, żeby rozwiązać jego drobny problem z Picasą. Chodzi o to, że ma tam wiele albumów ze zdjęciami i nie ma pomysłu w jaki sposób ściągnać je wszystkie na dysk aby utworzyć sobie kopię.

Dzisiaj postanowiłem “zaprzyjaźnić” się z Google API i okazało się, że sprawa nie jest specjalnie skomplikowana. Udało mi się napisać prostą aplikację, której jedynym zadaniem jest zapisanie zdjęć z picasy na lokalny dysk do lokalnego folderu. Aplikacja tworzy subfoldery o nazwach katalogów i tam zapisuj wszystkie zdjęcia.

Pomyślałem sobie, że komuś jeszcze może się to przydać dlatego wrzucam dla wszystkich – miłego używania. Link do aplikacji (acha – ważna rzecz – aplikacja działa pod windows i jest publikowana przez click once – jak nie będzie się chciała zainstalować to spróbujcie IE wtedy zawsze działa).

Oczywiście czekam na opinie – jak zawsze 🙂

Aktualizacja żużla

W ubiegłym tygodniu zaktualizowałem mojego parsera do strony zuzelend.com i dzięki temu aplikacja do żużla znowu działa. Widziałem, że sporo ludzi wchodzi tu i szukając właśnie aplikacji do żużla dla Androida. Szkoda, że nie zostawiacie żadnych komentarzy. Fajnie byłoby wiedzieć czy aplikacja działa czy nie.

Tutaj dla przypomnienia: