Przejdź do głównej zawartości

Dla programistów leniuszków. Javascript

W czasie poświątecznego tygodnia, z racji braku poniedziałku, postanowiłem przetłumaczyć z Wujka Boba coś krótkiego. Ale jak sprawdzić, który wpis w blogu jest najkrótszy?

Spróbuję to sobie zautomatyzować.

Odpalam przeglądarkę Chrome.
Wchodzę na dowolny wpis w blogu:
Po lewej stronie mam menu z linkami do artykułów:



Odpalam sobie konsolę developerską przez klawisz F12

Klikam zakładkę "Console"



Skorzystam z bardzo szybkiego i popularnego frameworku Vanilla JS http://vanilla-js.com/ :)

Dumnie wyprodukowane przy pomocy:

Żeby wrzucić wszystkie linki do tablicy:

allLinks = document.getElementsByTagName('a');

Żeby wyświetlić wszystkie linki z tej tablicy:

for (i = 0; i < allLinks.length; i++) {
    console.log (allLinks[i].href);
}

Żeby otworzyć jakąś stronę w tle muszę:

Stworzyć obiekt AJAX:

var r = new XMLHttpRequest();

Skonfigurować go:

r.open("GET", allLinks[3], true);

Zdefiniować funkcję na wypadek sukcesu żądania (na razie wyświetlam rozmiar strony):

r.onreadystatechange = function () {
  if (r.readyState != 4 || r.status != 200) return;
  console.log(r.responseText.length);
};

i wypuścić psy:

r.send()


Oczom moim ukazał się rozmiar zdalnej strony:

32266


A teraz tylko zrobić to dla wszystkich linków, za każdym razem sprawdzając czy dany rozmiar jest najmniejszy:

allLinks = document.getElementsByTagName('a');

var currentSmalest = 99999999999;

for (i = 0; i < allLinks.length; i++) {  
 var r = new XMLHttpRequest();
 r.open("GET", allLinks[i], false);
 
 r.onreadystatechange = function () {
      if (r.readyState != 4 || r.status != 200) return;
 
   if (r.responseText.length < currentSmalest){
     currentSmalest = r.responseText.length;
     console.log("Current smalest: " + currentSmalest +", " + allLinks[i].href); 
   }
    };

 r.send();

}


No dobra mój fantastyczny skrypt znalazł mi stronę z powitaniem.

Current smalest: 17711, http://blog.cleancoder.com/


Nie jest to najdłuższa strona ;). Dodam kod omijający tę stronę w funkcji anonimowej podłączonej do r.onreadystatechange :

....
if(allLinks[i].href === "http://blog.cleancoder.com/") return;
....


Teraz wynik jest ciekawszy:

Current smalest: 18911, http://blog.cleancoder.com/uncle-bob/2013/05/27/TransformationPriorityAndSorting.html

Tam jest zamieszczony komiks:



 Na razie nie chcę tłumaczyć tego komiksu, a więc idę do wyniku wyżej:

Current smalest: 19157, http://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html


Tam jest przysięga programisty, już to przetłumaczyłem :) Idę dalej:

Current smalest: 21418, http://blog.cleancoder.com/uncle-bob/2017/03/06/TestingLikeTheTSA.html


Świetny wybór mój drogi skrypcie.
Krótkie, treściwe, niezbyt stare, o TDD i polemika z DHH.



Strzał w dziesiątkę.
Zabieram się za tłumaczenie :)

Komentarze

Popularne posty z tego bloga

Kursy IT na Pluralsight. Dlaczego warto?

Bardzo sobie cenię kursy na Pluralsight. Mam wrażenie, że każdy kurs, który przeszedłem na tej platformie, w dużym stopniu podniósł moje zdolności. Wiem, dostęp do tej platformy nie jest tani, ale w mojej ocenie warty swojej ceny. To nie jest reklama, ale forma entuzjazmu jaki mam do tej formy samodoskonalenia. O to kilka punktów pokazujących ofertę tego serwisu i dlaczego warto skorzystać: Pluralsight to kursy z Javascript, C#, Java, Angular, Python, MySQL i wielu innych technologii i umiejętności. Kursy na Pluralsight w większości mają wyższą jakość niż te, które możemy znaleźć na przykład na YouTube. Są wyselekcjonowane, mają wysoką jakość dźwięku i obrazu. Często wgryzają się głęboko w dany problem daleko poza standardowe „Hello World” danej technologii. Twórcy Pluralsight to często osoby znane ze świata IT i konferencji branżowych, jak: Scott Hanselman, Microsoft John Somnez, SimpleProgrammer.com John Skeet, Google Pluralsight udostępnia funkcjonalność ścieżek – paths....

Bicie piany

Czy słyszałeś o tym gościu, który powiedział, że Object Oriented to przeżytek? No nie. Następny. Co powiedział? Opisał wszystkie obietnice OO, i jak żadna z nich tak naprawdę nigdy nie została spełniona i o tych wszystkich możliwościach OO, które kosztują więcej, niż są warte i że funkcjonalne programowanie jest lepsze i ... Phi. Tak słyszałem już to wcześniej. No, więc OO jest martwe, leży i kwiczy i możemy przejść dalej. Przejść dalej do czego? Co? No do NASTĘPNEJ WIELKIEJ RZECZY oczywiście. Aaaa, do tego. Czy wiesz już co to jest? Nie bałdzo, ale jestem podekscytowany na myśl o mikroserwisach; jaram się Elixirem; i słyszałem, że React jest fantastyczny; i ... Tak, tak. Bicie piany. Dałeś się nabrać na bicie piany. Co? Co masz na myśli. Przecież mamy takie wspaniałe czasy. Tak naprawdę postrzegam te czasy jako depresyjne. Ale dlaczego? Przecież co kilka dni wyskakują nowe wspaniałe technologie! Wspinamy się na coraz wyższe szczyty. Phi. To, co tak napraw...

Podstawy Programowania Funkcyjnego Epizod 3

Czy wszystkie Zasady Się Zmieniają? Kiedy tylko zaczynamy używać nowego paradygmatu , porównujemy z nim nasze dotychczasowe zasady i nawyki. Pytamy siebie czy te wszystkie zasady i nawyki są poprawne w kontekście tego nowego paradygmatu. Rozważ, dla przykładu: Test Driven Development . Czy nadal jest poprawne w Programowaniu Funkcyjnym? Jeżeli tak, to jak się do tego zabierzesz? Poniższy tekst jest luźnym tłumaczeniem wpisu bloga Roberta Cecila "Wujka Boba" Martina z dnia 07 stycznia 2013 ze strony: https://blog.cleancoder.com/uncle-bob/2013/01/07/FPBE3-Do-the-rules-change.html Proszę o komentarze, jeżeli ta luźność jest zbyt daleko posunięta. Aby odpowiedzieć sobie na to pytanie spróbujmy napisać prosty funkcyjny program: Word Wrap (zawijanie tekstu). Wymagania są proste. Mając napis złożony ze słów, oddzielonych pojedynczymi spacjami...