poniedziałek, 18 listopada 2013

Debugowanie aplikacji Android na komputerze.

Debugowanie aplikacji Android na komputerze do tej pory odbywało się bardzo wolno. Można to zmienić pobierając aplikacje Genymotion oraz Virtual-box.

1. Wchodzimy na stronę http://www.genymotion.com/
2. klikamy Sign up i tworzymy nowe konto
3. pobieramy i instalujemy aplikacje
4. logujemy się
5. pobieramy i instalujemy virtualbox
6. pobieramy obraz Android i uruchamiamy (w aplikacji Genymotion)
7. w Eclipse nasz system pojawi się na liście urządzeń.

Gratuluje programistom wykonania świetnej roboty. Jak działa Genymotion możesz zobaczyć na YouTube.


sobota, 16 listopada 2013

Tworzenie sesji krótkiej oraz długiej.

Do tego wykorzystujemy pliki cookie. Zapisujemy id sesji SESID, a następnie ustawiamy żywotność tego pliku na jeden dzień oraz 10 lat. W formularzu tworzymy Check box, z name "remember_me". Gdy to pole zostanie zaznaczone plik cookie zostanie zachowany przez przeglądarkę kolejne 10 lat, gdy pozostanie odznaczone, plik cookie zostanie usunięty za 24 godziny.

if($_POST['remember_me'] != 1){
/* 1 dzień */
    setcookie('sesid',$r['hash'], time() + (1 * 24 * 60 * 60)); //dni * godziny * minuty  * sekundy
}else{
/* 10 lat */
setcookie('sesid',$r['hash'], time() + (10 * 365 * 24 * 60 * 60)); // lata * dni * godziny...
}

W celu sprawdzenia w plikach php czy użytkownik jest zalogowany wystarczy wykorzystać warunek

if(!isset($_COOKIE['sesid'])){
// nie zalogowany
}else{
// zalogowany
       }


niedziela, 20 października 2013

Aktualizacja Samsung serii 7 do Windows 8.1 Czarny Ekran.

Po aktualizacji Samsunga serii 7 do Windowsa, 8.1 pojawia się czarny ekran. Co zrobić aby to naprawić? Mój model to 740u. Problem wynika z kart graficznych, które nie są kompatybilne z nowym systemem.


1. Wprowadzamy laptop w Safe Mod. Restartujemy i klikamy Shift + F8. Nie każdemu się to jednak uda ponieważ kombinację przycisków należy wcisnąć przed pojawieniem się loga Samsung, dlatego polecam najpierw wejść do biosu (F2), następnie wcisnąć Exit > Enter i szybko próbować wprowadzić komp w Safe Mod klikając Shift + F2. Wtedy jest więcej czasu zanim pojawi się logo Samsung.

2. W menu wybieramy opcje zaawansowane i szukamy uruchomienia komputera w trybie Awaryjnym z Obsługą sieci. Gdy uruchomimy nasz komputer wchodzimy w Panel Sterownia. Szukamy "Menadżer Urządzeń", karty graficzne AMD Radeon HD 8500M/8700M oraz Intel(R) HD Graphic 4000. Klikamy kolejno na obydwu prawym przyciskiem Właściwości > Sterownik > Odinstaluj. Karty graficzne w menadżerze powinny nam zniknąć po wykonaniu tego kroku.

3. Teraz wystarczy pobrać najnowsze sterowniki ze strony producentów.
AMDhttp://support.amd.com/en-us/download/mobile?os=Windows+7+-+64
Klikamy Latest Beta Driver. Plik ważący powyżej 200 mb.

Intel  -https://downloadcenter.intel.com/confirm.aspx?httpDown=http://downloadmirror.intel.com/23323/a08/Win64_15335.exe&lang=eng&Dwnldid=23323
Akceptujemy postanowienia licencyjne i pobieramy.

4. Gdy pobierzemy pliki, uruchamiamy ponownie komputer. Nie musimy już wchodzić w safe mod. Wyłączam oprogramowanie antywirusowa i wszystko co działa w tle a nie musi :) i instalujemy pierwszy sterownik AMD. Zgadamy się na restart komputera i instalujemy sterownik Intel.

Gotowe. Jeśli jeszcze nie zainstalowałeś Windows 8.1, a zamierzasz to zrobić, zainstaluj wcześniej sterowniki kompatybilne z Windows 8.1 aby uniknąć tego problemu.


poniedziałek, 19 sierpnia 2013

Automatyczna wysokość Twojego iframe.

Dosyć przydatne rozwiązanie. Nie zawsze wiem jak wysoki będzie mój iframe i czasem potrzebuję, by sam się rozciągnął do potrzeb strony. Ciężko to przewidzieć chociażby dlatego, że na różnym komputerze mogą być różne czcionki.



w sekcji HEAD
<script language="javascript" type="text/javascript">
  function resizeIframe(obj) {
    obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  }
</script>
A w naszym iframe dodajemy  onload='javascript:resizeIframe(this);' />
<iframe name="Stack" src="http://iptak.pl/" frameborder="0" scrolling="no" id="iframe" onload='javascript:resizeIframe(this);' />

wtorek, 13 sierpnia 2013

Szybki projekt flv2mp3.pl

Witam.

niedawno rozwinąłem wraz z bratem nowy szybki projekt pod szyldem Flv2mp3. Jest to strona internetowa na której po podaniu linku do serwisu YouTube otrzymujemy link do pobrania mp3.

Projekt jest banalny w wykonaniu i składa się z kilku kroków. Potrzebujemy serwera dedykowanego i następujących bibliotek.
- youtube-dl
- lame
- ffmpeg

W mojej konfiguracji serwera był pewien problem z biblioteką lame ponieważ jest była ona dla mojego serwera z nieznanego repozytorium dlatego potrzebowałem dodać je i pobrać dostępne paczki przy pomocy apt-get update.

Bibliotekę lame wykorzystuje do ustawienia tytułu oraz okładki każdej mp3.

Po wypuszczeniu strony w wersji testowej w trakcie użytkowania pojawił się problem. Silnik youtbue-dl wymagał aktualizacji, youtube zmienił coś w swoim działaniu. Aby zapobiec temu na przyszłość dodałem zadanie Cron które wykonuje się codziennie "youtube-dl -U" i aktualizuje silnik pobierania z YouTube.

Zapraszam do zabawy ze stroną i testowania mechanizmu.


wtorek, 23 lipca 2013

Plugin BuddyPres

Podczas zabawy z pluginem BuddyPress oraz WordPress zauważyłem, że po aktywacji BuddyPress funkcja get_avatar zwraca tylko i wyłącznie Avatary w niskiej rozdzielczości pomimo wartości, które podawane są w filtrze. Poszperałem troszkę w internecie i znalazłem rozwiązanie.

Krótki kod JavaScirpt wyszukuje wszystkie elementy z klasą avatar i zamienia w linku końcówkę -bpthumb na -bpfull. Daje to fajny efekt ponieważ obrazki w rozdzielczości thumb ładowane są natychmiastowo, a wysoka rozdzielczość ładuje się zaraz po nich i zastępuje je.

Nie zapomnij o załączeniu bibliotek jQuery w sekcji head. Tutaj znajdziesz informacje jak je załączyć.


    <script>
jQuery(".avatar").each(function(){
// Replacing the -bpthumb with -bpfull for higher resolution images.
var source = jQuery(this).attr("src");
var startIndex = source.lastIndexOf("-");
var endIndex = source.lastIndexOf(".");
var removeValue = source.substring(startIndex, endIndex);
if("-bpthumb" == removeValue){
var newSource = source.replace(removeValue, "-bpfull");
jQuery(this).attr("src", newSource);
}
});
</script>


Sprawdź jak wygląda to w praktycę. Zapraszam do obejrzenia mojego nowego projektu, który jest paczką inspiracji oraz ciekawych produktów i DIY.

środa, 10 lipca 2013

Nowa Aplikacja Promocje Żabka


Nie muszę chyba mówić co to za sklep.

Aplikacja zawiera obraz aktualnych promocji w sklepach sieci Żabka oraz FreshMarket. Dzięki tej aplikacji dowiesz się co warto kupić podczas trwania promocji oraz zawsze będziesz miał aktualny wgląd do przecenionych artykułów.

Gdy pojawią się nowe promocje, aplikacja zaktualizuje się sama!

Poleć tę aplikację swoim znajomym aby wiedzieli po co warto skoczyć do Żabki! Wystarczy, że klikniesz jedno logo sieci społecznościowej lub po prostu wyślesz link znajomym poprzez mail.

poniedziałek, 8 lipca 2013

Odczytywanie daty w formacie UNIX

Gdy chcemy odczytać datę w formacie unix we flashu, pojawia sie problem. Jest na to prosty sposób.

zmiena timestamp_in_seconds to nasza data w formacie UNIX.


//unix timestamp -> human date var currDate:Date = new Date(timestamp_in_seconds*1000); //timestamp_in_seconds*1000 - if you use a result of PHP time function, which returns it in seconds, and Flash uses milliseconds         D = currDate.getDate(); M = currDate.getMonth()+ 1; //because Returns the month (0 for January, 1 for February, and so on) Y = currDate.getFullYear(); var theDate:String = (M + "/" + D + "/" + Y);

czwartek, 13 czerwca 2013

Przyspieszenie aplikacji Adobe Air dla Telefonów i PCetów


  1. W opcjach Action Script włączamy przyspieszanie GPU mode,
  2. Wstawiamy linie na początku kodu stage.quality = StageQuality.LOW;
    Dzięki temu zabiegowi film naprawdę mocno przyspieszy,
  3. Usuwamy wszystkie Flashowo dodane obiekty z filtrami. Możemy zapisać te obiekty do PNG, a następnie wrzucić do naszego programu. Filtry (cień, gradient, wypukłość...) spowalniają nasz film,
  4. Zamiast alpha = 0, stosujemy visible = false, unikamy animacji z rotacją oraz wygładzeniem. 
  5. Usuwamy wszystkie znaczniki trace("....") z kodu lub dodajemy przed nimi //,
  6. Zamieniamy i++ na i=+1 (jest to szybsza metoda),
  7. Ograniczamy użycie nawiasów kwadratowych.
    array[i]; takie zmienne zapisujemy lokalnie, jeśli wywołujemy więcej niż raz,
  8. Rezygnujemy z obliczania długości tablicy za każdym razem
    for (var i:int = 0; i< myArray.length; i++) 
    { 
    }
    
    var lng:int = myArray.length; 
     
    for (var i:int = 0; i< lng; i++) 
    { 
    }
    
    długość tablicy zapisujemy lokalnie,
  9. Pętla while w kolejności odwrotniej działa szybciej niż pętla do przodu
    var i:int = myArray.length; 
     
    while (--i > -1) 
    { 
    }
  10. Użycie do animowania obiektów biblioteki GreenSock, zamiast wbudowanych flaszowych skryptów.
  11. Należy unikać opcji Wygładzania dla animowanych obiektów, może to znacznie zwolnić animowanie. 
Źródła


wtorek, 28 maja 2013

wget - Cron, usuwanie pliku po wykonaniu

Do wykonania zadań CRON na serwerze Linux bardzo przydaje się funkcja wget, która pobiera plik na serwer. Problemem może okazać się to, że zapisuje plik na serwerze przez co mamy zawalony katalog plikami, które się wykonały. 
wget http://www.przykład.pl/twojPlik.php
Jest bardzo prosta metoda na niezapisanie wyniku tego pobrania, wystarczy dodać -O /dev/null
wget http://www.przykład.pl/twojPlik.php -O /dev/null

poniedziałek, 27 maja 2013

BobTV API dla Twojej telewizji online.

BobTV.pl telewizja online, wypuściła API dzięki, której możesz zamieścić jej kanały na swojej stronie. Wystarczy wstawić iFrame o wysokości 550px i szerokości 100% a następnie w adresie umieścić prawidłowy link.

<iframe src="http://bobtv.pl/{NAZWA KANAŁU}.embed" height="550px" width="100%" frameborder="0"></iframe>

dostępne {NAZWA KANAŁU}:
dla-dzieci
akcja
nowe-filmy
stare-filmy
muzyka
comedy
horror
dramat
dokument
scifi-fantasy

Jeśli chcesz swoim użytkownikom włączać kanał domyślnie w rozdzielczości HD za nazwą kanału dopisz hd.embed

przetestuj te kody:

  • wszystkie:
    <iframe src="http://bobtv.pl/.embed" height="550px" width="100%" frameborder="0"></iframe>


  • wszystkie w hd:
    <iframe src="http://bobtv.pl/hd.embed" height="550px" width="100%" frameborder="0"></iframe>

piątek, 17 maja 2013

Google Analytics Tracking z Ajax

Tworzymy funkcję tracker. Wcześniej prosze pamietać o dodaniu kodu śledzenia od Google Analytics zaraz po znaczniku <body>.


tracker = function() {
            if (typeof ga === 'function') {
var location = window.location.protocol +
'//' + window.location.hostname +
window.location.pathname +
window.location.search + window.location.hash;
                return ga && ga('send', 'pageview', {
                    // window.location.pathname + window.location.search + window.location.hash
                    page: decodeURI(location),
title: document.title
                });
            }
   }


następnie gdy adres się zmienia w JavaScript wywołujemy funkcję tracker();

 $.address.change(function(event) {
    tracker();
}


Korzystam z biblioteki https://github.com/laukstein/ajax-seo

Efekt końcowy.



sobota, 11 maja 2013

Muzyka w tle Twojej strony (Legalnie)

Dzisiaj zastanowiłem się jak wrzucić muzykę do swojej strony w tle tak aby wszystko odbyło się legalnie.

Nic prostszego. Wystarczy...


  1. Szukamy piosenki na YouTube, klikamy umieść. Znajdujemy taki oto kod.

  2. <iframe width="560" height="315" src="http://www.youtube.com/embed/JaAWdljhD5o" frameborder="0" allowfullscreen></iframe>
  3. Edytujemy width i height na 0.
  4. Do src doklejamy ?autoplay=1&loop=10 co oznacza
  5. autoplay - włącz automatycznie
    loop - powtórz X razy. W naszym przypadku 10.

    VIOLA.
    Zobacz tutaj jak to działa. 

niedziela, 21 kwietnia 2013

Wyszukiwanie Głosowe HTML 5

Wyszukiwanie Głosowe - Przyuważone w nowej wersji Allegro.pl. Muszę przyznać, chłopaki sprostali najnowszym standardom i stronę mają na czasie. Wcześniej widziałem to na swoim telefonie w przeglądarce Chrome, muszę przyznać, że dość długo się tym bawiłem. Szybciutko przeniosłem ten mini bajer na swoją stronę. Zmiana jest elegancko obsługiwana przez przeglądarkę. Testowane na IE, Mozilla i Opera. Niestety działa tylko w chrome.


<input id="sitebar_search_header" type="text" class="search search_input" name="s" tabindex="1" placeholder="Szukaj" autocomplete="off" x-webkit-speech>

Step by Step?
  1. Do pola input dodajemy atrybut x-webkit-speech 
  2. Cieszymy się wyszukiwaniem głosowym.
Jeśli macie jakieś newsy, jak uruchomić to w innych przeglądarkach to puszczajcie w komentarzach. Poniżej zamieszczam wizualizacje. 

Klikamy w mikrofon i mówimy.
Widget wkleja wypowiedziany tekst w pole input.


sobota, 20 kwietnia 2013

Geolokalizacja w JavaScirpt

Natknąłem się niedawno na problem Geolokalizacji użytkownika odwiedzającego stronę iPtak.pl. Część linków, które umieściłem mogły działać jedynie dla widzów z Polski. Nie chciałem zaprzęgać do tego kodów PHP ponieważ zmniejszyły by wydajność dlatego postanowiłem znaleźć rozwiązanie z poziomu Java Script. Nie mógłbym tego zrobić gdyby bardzo zależało mi na zablokowaniu tej zawartości.


Wystarczy w sekcji head dodać gotowy skrypt lokalizujący
<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script>

A do naszej dyspozycji pojawiają się następujące funkcje:

geoip_country_code(); //zwraca kod państwa 
geoip_country_name(); //zwraca nazwę państwa 
geoip_city(); //zwraca nazwę miasta 
geoip_region(); //zwraca region 
geoip_region_name(); //zwraca nazwę regionu (województwa) 
geoip_latitude(); //zwraca współrzędną szerokości geograficznej 
geoip_longitude(); //zwraca współrzędną długości geograficznej 
geoip_postal_code(); //zwraca kod pocztowy



Teraz wystarczy już tylko przed znacznikiem </body> dodać kilka linijek kodu

if( geoip_country_name() != "Poland"){ alert('Treść strony w twojej lokalizacji '+
geoip_country_name() +'
jest niedostępna. ');
}


geoip_city, region, postal_code... Tych zmiennych nie można traktować poważnie.




piątek, 19 kwietnia 2013

Tylko Całe Filmy w serwisie iPtak


Całe Filmy Online i bez limitu znajdziesz tylko na iPtak.pl. Strona internetowa powstała rok temu, zaraz po wprowadzeniu przez YouTube możliwości wrzucania całych filmów. Wiatrem w żagle okazał się upadek MegaVideo, ponieważ zanotowaliśmy wtedy olbrzymi wzrost oglądalności. Dzisiaj, strona iPtak.pl jest największym katalogiem filmów YouTube w Polsce. Codziennie aktualizujemy naszą zawartość i usuwamy nie działające filmy tak aby uzyskać najwyższą jakość usługi.  Nasz facebookowy fanpage z dnia na dzień staje się coraz większy. Zapraszam do wejścia i polubienia :)

Jeśli macie jakieś propozycje na nowe funkcjonalności, zapraszam do udzielania się w komentarzach.

piątek, 12 kwietnia 2013

Zapisywanie plików cookie

Natknąłem się niedawno na problem z zapisywaniem plików cookie. Zapisywały się pięknie tylko, że na konkretniej podstronie, a nie dla głównej domeny. Teraz, dzięki ustawieniu path na główną domenę, plik cookie jest dostępny z poziomu każdej podstrony. Jeśli ktoś potrzebuje innego poziomu, zachęcam do zabawy z wartością path.

Dodam, że warto ustawić przekierowanie np z www. na bez  www, tak aby pliki cookie się nie różniły. Jest to bardzo częsty błąd i prowadzi do niespójności danych w ciasteczka.



function setCookie(cname, cvalue) {
var waznosc = new Date()
waznosc.setMonth(waznosc.getMonth()+6) //ustawiamy czas na 6 miesięcy do przodu
cexpire = waznosc;

document.cookie = cname + '=' + escape(cvalue) +
(typeof cexpire == 'date' ? 'expires=' + cexpire.toGMTString() : '') +
';path=/;domain=.adresTwojejDomeny.pl';
}

sobota, 23 marca 2013

Pilotażowy projekt BobTV

BobTV

Mam zaszczyt przedstawić wam pilotażowy projekt pt. BobTV pieszczotliwie przez twórców nazywany Grubym Bobem jaki w tym miesiącu ujrzał światło dzienne. Powiem szczerze, że moja rola ograniczała się tutaj jedynie do naniesienia graficznego layout ponieważ przygotowaną funkcjonalnością zostałem zaskoczony przez brata po powrocie z uczelni. Gruby Bob funkcjonuje od kilku dni, jednak już ma wielu zagorzałych fanów z czego jest mi niezmiernie miło.

Na czym to wszystko Polega? Puszczamy pełnometrażowe filmy, które udało się zgromadzić na witrynie iPtak. Filmy lecą jeden po drugim, w kolejności losowej jak w telewizji tyle, że bez reklam :) Gramy przez 24 godziny na różnych kanałach, z prawej strony pokazujemy co poleci następne.

Dlaczego akurat w ten sposób? Ponieważ nie każdy ma czas lub chęć szperać i wybierać jakiś film... Czasem po prostu mamy ochotę zrelaksować się przy czymkolwiek co chodź na chwile odciągnie nasze myśli od rzeczywistości.

Zapraszam do sprawdzenia projektu BobTv.pl oraz na blog patrona tego projektu FreshFrog.pl

sobota, 16 marca 2013

Szerokość komentarzy facebookowych w procentach.

Wystarczy dodać w sekcji head poniższy kod. Wymusza on rozciągnięcie komentarzy do 100% szerokości. Możliwe, że z czasem przestanie działać ponieważ face namiesza coś nowego w osadzaniu. Wtedy wystarczy wejść w przeglądarce np chrome w badanie strony (F12) i poszukać znaczników w jakich osadzony jest kod.  Następnie dodajemy je do "fb-comments, .fb-comments span, .fb-comments iframe" po przecinku np. ", div.nowyZnacznik". Reszta pozostanie bez zmian.

.
 <style>
fb-comments, .fb-comments span, .fb-comments iframe {
width:100% !important;
}
</style> 

OVH, tym razem atak Hakerski.

Wychodzi na to, że puki co najwięcej piszę o awariach serwerów w OVH. Cóż na to poradzę, nie jest oczywiście to spowodowane tym, że ich nie lubię lub czymś podobnym, po prostu ostatnio zwalają się strasznie na głowę.

Od niedawna pracuje z moim bratem nad serwisem, który Hostował będzie wiele seriali online. Całość umieściliśmy na serwerze wirtualnym. Skrypt pobierający linki zaplanowaliśmy wywoływać co minute, tak też zrobiliśmy dodając zadanie CRON do naszego serwera dedykowanego na którym leży iPtak.pl. Dlaczego taka chińska metoda? Otóż serwery wirtualne w OVH pozwalają na zadania CRON wywoływane minimum co godzinę. Bardzo to ograniczające.

Wszystko działało bardzo sprawnie, aż do czasu gdy pewnego popołudnia strona wyrzuciła złowieszczy komunikat FORBIDDEN 403. Na początku sądziliśmy, że powaliliśmy prawa plików. Jednak w panelu  OVH pojawiła się tajemnicza wiadomość.

Szanowni Pa?stwo, 

Korzystaj? Pa?stwo z hostingu OVH przypisanego do domeny
serialowisko.pl.

Informujemy, ?e status hostingu zosta? zmieniony na
"DESACTIVE". 
Oznacza to, ?e hosting nie jest aktywny. 

Przyczyna zmiany statusu jest nast?puj?ca:
attack on ip : xxx.xxx.xxx.xxx & xxx.xxx.xxx.xxx

Aby przywr?ci? status "OK", nale?y skontaktowa? si? z
pomoc?
OVH odpowiadaj?c na to zg?oszenie. 


Biuro Obs?ugi Klienta OVH
Od razu odpisałem na tą wiadomość
Witam,
 
 jest to nasz skrypt, wywoływany przez CRON serwera
 dedykowanego, który również należy do nas. Skrypt
 wywołuje się Co minute, zwiększyliśmy czas do 5 minut.
 
 
 Używamy go ponieważ na wirtualu max to co godzinę.
 
 Proszę nie wyłączać serwera FTP przez uprzedniej
 informacji. 
Odpowiedź jaka otrzymałem świadczy o tym, że nikt nie próbował nawet przeczytać mojej odpowiedzi.

Dear customer,

You definitely need a security component on your module.

To fix this flaw it is necessary to delete infected
files which were responsible for these attacks.

You need to mention on this ticket that you are going to
fix the problem

However if you are not able to find the problem, we can
carry out a diagnosis for 20 Euros.

  The diagnosis will not fix the problem but it will give
you all the details related to the issue that caused the
suspension of your service. 
The diagnosis might give you the directions to fix the
problem and we could also offer to fix it for you. 
Otherwise it will be your responsibility to fix the issue. 


If you agree to carry out a diagnosis, please confirm it by

replying on this ticket.  

Kind regards
Emma H 

Zabawne jest to, że OVH każe mi usunąć zarażone pliki kiedy w moim ftp jest pusto ponieważ go dezaktywowali. Czekam na rozwój sytuacji, wysłałem ponownie zgłoszenie, może tym razem przeczytają. Dodam, te jaja trwają już 3 dzień i jak na moje oko powinni w jakiś sposób to wynagrodzić. Oczywiście nie łudzę się, że to zrobią.

Jeśli masz swoje przygody z OVH to zapraszam do podzielenia się nimi w komentarzu.

niedziela, 17 lutego 2013

OVH, odpowiedź na awarie.

Z dumą stwierdzam, że wysysaliśmy wirtualny serwer OVH przez okrągły rok czasu. Dzisiaj te piękne czasy zakończyły się gdy OVH wytypowało nasz serwis iPtak.pl jako jeden z pośród 160, które najmocniej obciążają wirtualne serwery OVH i jak najszybciej powinny zostać przeniesione na serwery dedykowane.

http://forum.ovh.com/showthread.php?t=86802

OVH broni się, podając, że mają przeciążone Klastry na którym znajduje się strona. Nie trudno jednak zauważyć, że od 4 dni ktoś najzwyczajniej przyciął możliwości serwera wirtualnego na, którym przebywamy.   Z dnia na dzień skrypt który wykonywał się przez rok bez żadnej awarii zaczyna szwankować jeszcze grubo przed godzinami szczytu!

Czyżby była to nowa polityka radzenia sobie z klientami, którzy na maxa wykorzystują wirtualne serwery?

Nie ma jednak tego złego co by na dobre nie wyszło. Od jutra Ptaszek będzie śmigał na nowym serwerze dedykowanym, spodziewam się wzrostu wydajności oraz zadowolenia ze strony użytkowników. Mam nadzieje też, że możliwości jakie niesie ze sobą dedyk zostaną w pełni wykorzystane.

sobota, 16 lutego 2013

OVH, tani hosting.

Kilka słów o usługach OVH.

Pewnie każdy kto zajmuje choć się troszkę web designem lub programowaniem słyszał co nieco na temat OVH. Jest bardzo kuszący jeśli chodzi o miesięczny transfer ponieważ jest on nieograniczony! Zastanówmy się zatem w jaki sposób serwerownie OVH są w stanie zapewnić nam ten nieograniczony transfer. 

Otóż wiele hostingów jak mniemam jest praktycznie niewykorzystywanych ponieważ jak wszyscy doskonale wiemy jeden hosting = jedna domena. Co za tym idzie? Kolejna domena, to kolejne ~120 zł, które musimy wydać na hosting.

Jest to idealny chwyt marketingowy jeśli chodzi o malutkie strony, które mają kilkanaście odwiedzin dziennie ponieważ wykorzystanie takiego wirtuala jest wtedy zerowe.  Co dzieje się gdy na wirtualu pojawia się ogromna strona generująca ogromny ruch? OVH z pewnością nie jest wtedy zadowolone ponieważ musi dbać o nasz hosting, który mocno obciąża ich serwery, a dostarcza jedynie 10 zł miesięcznie, jednak OVH jest w stanie to zrobić z niewykorzystanego transferu przez całą rzesze malutkich stron generujących zerowe obciążenie. 

Dzisiaj spotkała mnie awaria jednego z hostingów. Przewidywany piątkowy ruch 380k odsłon spadł do 110k. Niemiła niespodzianka... Gdy wszedłem na stronę i próbowałem się skontaktować z Działem Technicznym spotkała mnie kolejna niemiła niespodzianka, a mianowicie kontakt dostępny jest tylko PON - PIĄTEK. Jedyne co mi pozostało to zgłoszenie awarii. (14.40). Jestem ciekaw jak szybko rozwiążą ten problem i z pewnością opisze to w kolejnej notce. Puki co stwierdzę, że niedostępny dział techniczny w weekendy świadczy o amatorskim podejściu do klientów serwerów wirtualnych. 

Dodam, że jeśli OVH stwierdzi, że zgłoszony przeze mnie problem nie jest po ich stronie to obciąży mnie kwotą 90 zł moją wiadomość do nich. Porównując to z roczną opłatą za serwer (120 zł) jest to ogromna kwota. 

Jeśli masz swoje własne opinie na temat OVH, zapraszam do dzielenia się nimi w komentarzach. 

wtorek, 29 stycznia 2013

Wczytywanie Liczby DEC i HEX w asemblerze.

Wczytywanie liczby dziesiętnej w asemblerze. (od 4 do 5 znaków na 16 bitów)

  1. Wczytaj cyfrę (pojedynczy znak ASCII)
    xor  bx,bx
    mov  ah,0
    int  16h
  2. Odejmij od cyfry '0' by z ASCII przejść do cyfry.
    sub   ax,'0'
    push  ax
  3. Przemnóż miejsce gdzie już jest liczba razy 10
    mov  ax,10
    mul  bx
    mov  bx,ax

    pop  ax
  4. Dodaj do miejsca gdzie jest już liczba kolejną cyfre.
    add  bx,ax
Liczba jest zapisywana bo rejestru bx. Całość możemy nazwać np jako readDEC i puścić w loop 4-5 razy jeśli chcemy wczytać liczbę 16 bitową. Przy 5 obrocie pętli jc (jesli flaga carry) wyrzucamy błąd ponieważ własnie przekroczyliśmy 16 bitów w naszej zmiennej i funkcja nie wykonała się poprawnie. 


Wczytywanie liczby HEX szesnastkowej w asemblerze. (dokładnie 4 znaki, każdy po 4 bity)

  1. Wczytaj cyfrę.
    mov  cx,4

    xor  bx,bx

    wczytaj:
    mov  ah,0
    int  16h
  2. Dozwól by były to cyfry i litery tylko 0-9, A-F
    cmp  al,'0'
    jb   wczytaj

    cmp  al,'9'
    jbe  dalej9

    cmp  al,'A'
    jb   wczytaj;

    cmp  al,'F'
    jbe  dalejF;
  3. Z ASCI do Cyfry lub Litery
    dalej9:
    sub  al,'0'

    dalejF:
    sub  al,'F'
  4. Przekręć miejsce gdzie są już liczby SHL o 4 bity w lewo i dodaj nowa cyfrę.
    shl  bx,4
    add  bx,ax

    loop wczytaj; zakręć wszystkim 4 razy

niedziela, 27 stycznia 2013

Wywoływanie funkcji przez jej nazwę w Action Script 3

Call a function by its name in AS3, mówiąc prościej wywołanie funkcji poprzez jej nazwę String. Sposób może się przydać gdy wczytujemy funkcje z pliku XML. Aby nie opisywać każdego z przypadków możemy użyć tej prostej metody. Działą w Action Script 3.


var functionName:String = "getDetails";

var instance1:MyObject = new MyObject();

instance1[functionName]( tutaj parametry funkcji );
function getDetails(s:String){
   return s;
}


Umieszczam ponieważ dużo się naszukałem zanim znalazłem to rozwiązanie. 

sobota, 26 stycznia 2013

Pobieranie treści ze strony. Przykład filmweb.

Wstęp... Czyli coś co możesz pominąć >>


Pobieranie treści strony to musi być wcale mozolne jeśli użyjemy do tego głowy. Widziałem wiele przykładów, które wykorzystują wyrażenia regularne, sam kiedyś ich używałem, tak więc sprawdziłem to empirycznie. Jest to bardzo skomplikowany sposób, łatwo się w nim pogubić, ponieważ wszystkie elementy DOM strony traktujemy jako ciąg znaków. Zaprezentuje wam alternatywną metodę, która wykorzystuje jQuery i porusza się po elementach DOM strony (jest wiele wiele szybsza). Nie pokaże wam jak robi się to przy pomocy wyrażeń regularnych ponieważ szkoda mi czasu, poza tym przestałem ich używać.

Krok pierwszy

Pierwszą rzeczą jaką musimy zrobić to załadować stronę z której chcemy wyciągnąć informacje do iframe. Tutaj ważna uwaga, aby dostać się do treści iframe adres musi być na tej samej domenie. Jak to zrobić skoro nasza domena to naszadomena.pl, a treść strony, którą chcemy pobrać znajduje się pod adresem filmweb.pl? Istnieje prosta metoda (Cross-Domain), musimy zrobić plik pobierz.php na naszym serwerze, który pobierze treść filmweb.


<?php

$after = $_GET['after'];

// Pobiera filmweb z parametrami after. 
$file = file_get_contents('http://www.filmweb.pl/'.$after, false);

echo $file;
?>

korzystanie z tego pliku będzie następujące.
Adres http://www.filmweb.pl/film/Niemo%C5%BCliwe-2012-586390 
odpowiada adresowi http://twojadomena.pl/?after=film/Niemo%C5%BCliwe-2012-586390

Przygotowanie Html

Gdy przygotujemy nasz plik zabieramy się za stworzenie pliku ładującego naszego iframa oraz przeglądającego jego zawartość. W tym miejscu musimy dodać do naszego pliku w sekcji head bibliotekę jQuery.

<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

Następnie w sekcji body dodajemy iframe ze stroną, która chcemy pobrać.


<iframe src="http://naszadomena.pl/pobierz.php?after=film/Niemo%C5%BCliwe-2012-586390" style="display:none;"></iframe>

Przygotowanie JavaScirpt

Oraz kod Java Scirpt, który czeka na załadowanie iframe, a następnie przeszukuje go pod kątem potrzebnych nam informacji. W tym przykładzie wykorzystałem selektory jQuery oraz funkcję contents(), która pozwala mi dobrać się do wnętrza iframe. 

<script>
window.onload = function() {
$iframe = $('iframe').contents();

alert( $iframe.find('div.posterLightbox > a > img').attr('src') ); //adres miniatury
alert( $iframe.find('div.filmTitle h1 > a').text() ); // tytuł
alert( $iframe.find('span#filmYear').text() ); // rok wydania
alert( $iframe.find('div.pageBox > p.text.longText').text() + $iframe.find('div.pageBox > span.fullText hide').text() ); // pełen opis filmu
alert( parseFloat($iframe.find('span.filmRate > strong').text()) ); // ocena filmu

}
</script>



PS. nie wiem w jakiej czasoprzestrzeni będziesz czytał ten post... Dlatego uprzedzam się, że selektory mogą się zmienić dla wszystkich tych danych. Selektory napisałem w dniu (2013 - 01 - 26). Ich aktualizacja jest znacznie prostsza i szybsza niż w przypadku wyrażeń regularnych. Wierze, że z odrobiną determinacji sobie poradzisz. Pytania zostaw w komentarzu.

piątek, 25 stycznia 2013

Kupony McDonald's



Przygotowałem dla Ciebie darmową aplikację,

która pozwoli Ci zaoszczędzić w restauracjach McDonald's,
Ja i wszyscy moi znajomi korzystamy z niej od niedawana!

Wystarczy, że pobierzesz ją na swojego smart-fona, 
a kupon ze zniżką pokażesz na ekranie telefonu, przy kasie.
Z aplikacją KUPONY McDonald's kupisz

Frytki, a drugie dostaniesz gratis za 5,70 zł
Dwa Cheeseburgery za 5 zł
Kurczak McNuggets, a drugie dostaniesz gratis za 8,60 zł
Big Mac ze średnimi frytkami za 10 zł
McChicken ze średnimi frytkami za 10 zł
Dwa Cheeseburgery, mały napój małe frytki za 10 zł
Dwa Kurczakburgery, mały napój małe frytki za 10 zł
McMuffin Jajko i Bekon, Mała Kawa za 6 zł
Truskawkowy Poemat, Małe Cappuccino lub Małe Cafe Late za 11 zł
Mała kawa do zestawu powiększonego Gratis
Kappy Meal + Kurczak McNuggets 6sz. za 15 zł
Dwa Happy Meale za 18 zł
McZestaw Powiększony + McNuggets 6 sztuk za 20 zł
McZestaw Powiększony + Happy Meal za 21 zł
Dwa McZestawy Powiększone za 25 zł
Dwa McZestawy Powiększone + Dwa Happy Meal za 39 zł

Aplikacja działa w każdej polskiej restauracji McDonald's.
Do tej pory działa w Android. Więcej systemów wkrótce.

Poniżej kilka screenów. Zapraszam do pobierania!


screen

screen

screen

Hello World

Cześć,

Założyłem tego bloga by pisać o prozaicznych problemach, na które ciężko było mi znaleźć odpowiedź w internecie, ciekawych bibliotekach na które się natknąłem oraz własnych sukcesach w pisaniu stron internetowych i Aplikacji Mobilnych.

Programuje przede wszystkim w Action Script 3 (Adobe Air), Java Script, analogicznie Html, CSS i wszystkie temu podobne webowe bajery. Jako student Informatyki spotykam się również z innymi językami... Dlatego też, chwilkę swojej uwagi zamierzam poświęcić Assemblerowi, który nie tak dawno bardzo mnie zmęczył.

Jeśli szukasz ciągłości to raczej jej tutaj nie znajdziesz. Ten blog będzie wykopaliskiem sztuczek i szybkich podpowiedzi.

PS. Jako, że dotychczas pisałem jedynie maile odruchowo, wpis zakończyłem Pozdrawiam Serdecznie, Eliasz. :)

Hello World