Robert.BrainUsers.net

Programowanie

Najkrótszy informatyczny żart świata? "Programista PHP". Ale ja się nie obrażam na ignorantów, tylko robię swoje. ;)

Jak wyłączyć autoodtwarzanie filmów na gazeta.pl i tvn24.pl?

Wkurzają was filmiki na portalach Gazety Wyborczej albo TVN24? I słusznie. Dlatego napisałem rozszerzenie do przeglądarki Google Chrome, które raz na zawsze wyłączy autoodtwarzanie filmów na stronach internetowych korzystających z natywnej obsługi <video> w HTML5. Jeśli chcesz kontynuować odtwarzanie takiego filmu, wystarczy że klikniesz na czerwony przycisk, który pojawi się nad filmem.

Filmy i reklamy oparte o Flasha da się wyłączyć poprzez zwyczajne wyłączenie wtyczki Adobe Flash. Ponadto Google zapowiedziało, że będzie niedługo blokować Flasha w swojej przeglądarce ze względu na liczne luki bezpieczeństwa, dlatego filmy i reklamy oparte o Flasha nie stanowią dziś problemu a reklamodawcy i agencje internetowe przerzucają się na nowoczesną obsługę video. Jednak do blokowania natywnego tagu <video> w HTML5 w Chrome Store nie powstała jeszcze żadna wtyczka. Mam nadzieję że moje rozszerzenie zapełni tą niszę.

Plugin działa jedynie dla tagu <video> w HTML5 i nie zamierzam nim blokować Flasha - ponieważ Flasha można wyłączyć ręcznie w ustawieniach przeglądarki.

Rozszerzenie dla przeglądarki Google Chrome

Dodatek dla przeglądarki Opera

JavaScript: pobieranie zaznaczeń fragmentu tekstu i pozycja karetki kursora

Krótka wzmianka o metodzie document.getSelection().

document.getSelection().focusNode - ostatnio kliknięty węzeł.
document.getSelection().focusNode.data - zawartość tekstowa tego węzła.
document.getSelection().toString() - tekst zaznaczenia.
i wiele innych możliwości...

Kanał YouTube Studia Filmowego Kadr - przełomowy krok w przyszłość

W sieci szerokim echem odbija się fakt rozpoczęcia współpracy z YouTube przez Studio Filmowe KADR oraz założenie kanału, na którym opublikowane zostały filmy znajdujące się w kanonie polskiej kinematografii. Dotychczas oglądanie filmów na YouTube i ogólnie w Internecie wiązało się z pewnym niepokojem, czy odbiorca aby na pewno nie łamie prawa. Dlatego też opublikowanie tak wielu filmów w całości budzi obawy o prawa autorskie. Jednakże wyjaśnienie tego kroku przez KADR daje nam pełen ogląd sytuacji - rozwiewa wszelkie obawy i daje nadzieję na lepszy Internet.

Metoda szablonowa (Template method pattern) - behawioralny wzorzec projektowy

Metoda szablonowa rozwiązuje problem implementacji algorytmu, który działa w nie do końca znanym środowisku i przy nieustalonych parametrach. Zdarza się, że programista musi napisać część systemu, która ma działać według ściśle określonego schematu - jednakże musi być na tyle uniwersalna, aby szczegóły implementacji móc określić później w klasach dziedziczących. To tak jakby podać komuś przepis na ciasto, ale nie określając czy będzie z rodzynkami czy z kremem.

Laboratorium Roberta

Oprócz oficjalnych witryn i aplikacji WWW które zbudowałem w pracy zawodowej, hobbystycznie zajmuję się szukaniem interesujących rozwiązań IT poprzez agregację ogólnodostępnych w Internecie danych oraz odkrywanie zastosowań istniejących API i bibliotek.

Pomysły opisane poniżej zostały przeze mnie zaprogramowane, często w formie ekstremalnie eksperymentalnej lub niedziałającej jeszcze w pełni prawidłowo.

Analiza leksykalna

Jestem w trakcie pisania w Javie obfuskatora dla języka JavaScript i potrzebowałem zapoznać się z tematyką analizy leksykalnej. Znalazłem stronę Marcina Kubicy z Uniwersytetu Warszawskiego, na której publikuje on treści swoich wykładów, m. in. wykład Języki formalne i automaty, JFA. Chwała mu za to!

Aby wykonać operację zaciemniania kodu JavaScript muszę w jakiś sposób go parsować i odnaleźć identyfikatory, które da się zaciemnić. Z pomocą przychodzi analiza leksykalna. Wystarczy podzielić kod wyrażeniami regularnymi na leksemy - dyskretne (niepodzielne) fragmenty konkretnego typu (np. słowo kluczowe, operator, identyfikator, białe znaki, komentarze). Jeśli cały kod będzie reprezentowany przez leksemy, będę mógł w prosty sposób wyciągnąć z niego i obfuskować identyfikatory a także usunąć niepotrzebne fragmenty (komentarze, białe znaki).

Czytaj także: Zaciemnianie kodu źródłowego

Zaciemnianie kodu źródłowego

Tworzenie aplikacji internetowych i programowanie w językach skryptowych takich jak PHP czy JavaScript stereotypowo uznawane jest za coś błachego i nieskomplikowanego. Jednakże język jako narzędzie nie jest tutaj istotny, tylko sposób jego wykorzystania i efekty jakie przynosi. Jeśli napisany program wprowadza innowacje, autor nie zawsze chce się dzielić cennym algorytmem. Tymczasem interpretowane języki skryptowe nie są w żaden sposób zabezpieczone przed analizą osób trzecich, co powoduje zagrożenia ze strony konkurencji. Kod źródłowy aplikacji zainstalowanej na serwerze klienta może łatwo wycieknąć, a JavaScript wysyłany bezpośrednio do przegladarki jest dostępny dla każdego. Z pomocą przychodzi dziedzina, którą z angielska zwie się obfuskacją (obfuscation) lub po prostu - zaciemnianiem kodu.

Lithium Framework - świeże podejście do PHP

Jakiś czas temu kilku ludzi pracujących nad świetnym frameworkiem CakePHP postanowiło utworzyć nową gałąź (fork) tego projektu, która będzie w pełni korzystać ze wszystkich dobrodziejstw PHP w wersji 5.3 takich jak przestrzenie nazw, funkcje anonimowe i domknięcia. Dodatkowo zmieniono kilka konwecji, opracowano system filtrów dla metod, uproszczono pewne procedury, tworząc w ten sposób nowy twór nazwany Lithium.

Maraton programistyczny dla webdeveloperów - Hackfest #3

W najbliższy piątek odbędzie się trzecia edycja Hackfest - maratonu programistycznego dla deweloperów aplikacji internetowych. Celem wydarzenia jest stworzenie w drużynach max. 3-osobowych startupu napisanego w 48 godzin od podstaw. W ramach eventu odbędą się także prelekcje na temat technologii internetowych oraz e-biznesu.

PHP: parsowanie wielu dokumentów XML ze strumienia

Problem: otwieram połączenie socket (TCP) jako klient i co minutę otrzymuję ze strumienia dokument XML, bez zamykania tego połączenia. Dokumenty te nie są rozdzielone żadnym separatorem.