Rzecznik Play umieścił na swoim blogu informacje o promocji świątecznej. Po przeczytaniu tej wiadomości nawet się ucieszyłem wysyłam SMSa i dostaję 50zł na rozmowy i SMS/MMSy. Jedynym warunkiem było to aby na koncie znajdowało się 30zł.
Niestety uśmiech z twarzy znikł mi gdy pobrałem regulamin, z którego wynika że nie dostajemy 50zł a kupujemy sobie pakiet 50zł za 30zł :(
Aktywna jest w tej chwili również inna promocja w ramach której za 10zł możemy kupić pakiet 30zł.
Nawet dziecko zauważyłoby, że to jakiś przekręt...
piątek, 25 listopada 2011
poniedziałek, 21 listopada 2011
C# - asynchroniczne pobieranie pliku
Aby pobrać plik z internetu nie blokując przy tym głównego wątku można użyć metody DownloadFileAsync z klasy WebClient. Można również dodać obsługę eventów aby wyświetlać postęp i wykryć kiedy plik został pobrany w całości. Przykładowy kod poniżej.
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
WebClient wc = new WebClient();
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
wc.DownloadFileAsync(new Uri(textBox1.Text), sfd.FileName);
}
}
void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Pobieranie ukończone");
}
Gotowy projekt do pobrania: DownloadAsync.zip
I na koniec jeszcze jedna uwaga. Chociaż metoda jest asynchroniczna to i tak może na chwilę zablokować główny wątek. Dzieje się tak ponieważ przed pobraniem pliku konieczna jest zamiana adresu na IP i dzieje się to wewnątrz funkcji, która niestety jest blokująca. Aby temu zapobiec wystarczy (o ile to możliwe) zamiast nazwy podać IP.
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
WebClient wc = new WebClient();
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
wc.DownloadFileAsync(new Uri(textBox1.Text), sfd.FileName);
}
}
void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Pobieranie ukończone");
}
Gotowy projekt do pobrania: DownloadAsync.zip
I na koniec jeszcze jedna uwaga. Chociaż metoda jest asynchroniczna to i tak może na chwilę zablokować główny wątek. Dzieje się tak ponieważ przed pobraniem pliku konieczna jest zamiana adresu na IP i dzieje się to wewnątrz funkcji, która niestety jest blokująca. Aby temu zapobiec wystarczy (o ile to możliwe) zamiast nazwy podać IP.
czwartek, 27 października 2011
Google+ dla użytkowników Google Apps
W końcu można korzystać z Google+ w Google Apps. Swoją drogą dziwne posunięcie ze strony Google, że nowe usługi są udostępniane dla tych użytkowników (moim zdaniem najwierniejszych, bo część usług w swojej domenie powierzają właśnie im), są udostępniane tak późno.
Niestety aby Google+ było dostępne we własnej domenie trzeba je najpierw ręcznie włączyć (szczegóły na http://www.google.com/support/a/bin/answer.py?answer=182442&hl=pl). Odkryłem to w sumie przez przypadek. Szkoda, że nie są wysyłane e-maile do użytkowników z tą informacją (przynajmniej ja nie dostałem).
Niestety aby Google+ było dostępne we własnej domenie trzeba je najpierw ręcznie włączyć (szczegóły na http://www.google.com/support/a/bin/answer.py?answer=182442&hl=pl). Odkryłem to w sumie przez przypadek. Szkoda, że nie są wysyłane e-maile do użytkowników z tą informacją (przynajmniej ja nie dostałem).
wtorek, 4 października 2011
Aero2 - pierwszy test
Dziś listonosz dostarczył kartę więc czas na pierwsze testy. Nie zdążyłem się jeszcze zaopatrzyć w modem na USB więc posłużyłem się moją Nokią 5230.
Włożyłem kartę do telefonu jednak nie zalogował się automatycznie. Postanowiłem więc ręcznie wybrać sieć. Na liście dostępnych pojawiła się sieć Aero2 ale po jej wybraniu telefon po dłuższej chwili odpyskował tylko komunikatem: "Brak dostępu".
Postanowiłem więc podejść trochę inaczej do tematu. Uruchomiłem na komputerze Nokia Ovi Suite skonfigurowałem połączenie internetowe (APN: darmowy) i spróbowałem się połączyć. O dziwo połączył się bez problemów.
No to przyszła pora na testy prędkości (http://www.speedtest.net/) Przetestowałem kilka serwerów i wyszło mniej więcej tak:
Bez rewelacji ale najważniejsze, że działa - przyda się w kryzysowych sytuacjach.
Włożyłem kartę do telefonu jednak nie zalogował się automatycznie. Postanowiłem więc ręcznie wybrać sieć. Na liście dostępnych pojawiła się sieć Aero2 ale po jej wybraniu telefon po dłuższej chwili odpyskował tylko komunikatem: "Brak dostępu".
Postanowiłem więc podejść trochę inaczej do tematu. Uruchomiłem na komputerze Nokia Ovi Suite skonfigurowałem połączenie internetowe (APN: darmowy) i spróbowałem się połączyć. O dziwo połączył się bez problemów.
No to przyszła pora na testy prędkości (http://www.speedtest.net/) Przetestowałem kilka serwerów i wyszło mniej więcej tak:
- Pingi ok 300ms
- Download 0,25Mb/s
- Upload 0,05Mb/s
Bez rewelacji ale najważniejsze, że działa - przyda się w kryzysowych sytuacjach.
czwartek, 29 września 2011
Aero2 - darmowy internet ciąg dalszy
Dziś dostałem e-maila z informacją, że karta została dziś wysłana. Widać szybciej im to idzie niż planowali. Zgodnie z informacją na stronie powinni wysłać ok 10 października, więc pozytywna niespodzianka.
Trzeba się teraz rozejrzeć za jakimś modemem na USB.
Trzeba się teraz rozejrzeć za jakimś modemem na USB.
czwartek, 15 września 2011
Windows 8 - do pobrania ze strony Microsoftu
Na stronie Microsoftu pojawiła się do pobrania wersja deweloperska Windowsa 8 : http://msdn.microsoft.com/en-us/windows/apps/br229516
środa, 14 września 2011
C# - parsowanie double z kropką i przecinkiem
Różne programy różnie zapisują liczbę zmiennoprzecinkową. Jedne używają kropki w celu oddzielenia części ułamkowej od części całkowitej. Na dodatek ten sam program może różnie zapisywać w zależności od ustawień systemu w którym jest uruchomiony.
Napisałem więc prostą funkcję, która próbuje skonwertować stringa do double:
Napisałem więc prostą funkcję, która próbuje skonwertować stringa do double:
private static double GetDouble(string value)
{
double res;
if (!double.TryParse(value,NumberStyles.Any, CultureInfo.CurrentCulture, out res))
{
if (!double.TryParse(value, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out res))
{
if (!double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out res))
{
res = double.NaN;
}
}
}
return res;
}
Subskrybuj:
Posty (Atom)