Zabawa z kalkulatorem – automacik.

Sama idea zabawy w porozumiewanie się kalkulatorem została przybliżona tutaj (dawniej był w tym miejscu link, ale obecnie 404), i zapowiedziałem automacik. Oto i on.

#!/usr/bin/perl

$file="/usr/share/dict/polish";
$regexp='^[osildebzjkhbgr]+$';
$regexp_strict='^([osiebzlkbg]+|[osiebzlhbg]+|[osiebzlrbg]+|[osjebzlkbg]+ \
|[osjebzlhbg]+|[osjebzlrbg]+|[dsiebzlkbg]+|[dsiebzlhbg]+|[dsiebzlrbg]+ \
|[dsjebzlkbg]+|[dsjebzlhbg]+|[dsjebzlrbg]+)$';
$strict=1;

if ($strict){
$regexp=$regexp_strict;
}

open(F,$file);
while (){
if (/$regexp/o){
chomp;
print "$_ ";

y/odilkhrszebjg/0011444523879/;

@tmp=split //;
$num=0;
while (@tmp){
$lit = pop @tmp;
if ((! $num) && ($lit =="0")){
print "$lit.";
}
else{
print $lit;
}
$num++;
}
print $/;
}
}
close (F);

Zmienna $file to oczywiście pełna ścieżka do pliku z wyrazami (jeden per linię), które sprawdzamy. W tym przypadku systemowy słownik języka polskiego. Zmienna $strict określa, czy chcemy, aby dana cyfra określała w obrębie wyrazu tylko jedną literę.

Jako wynik otrzymujemy gotowe do wpisania na kalkulator ciągi cyfr. Skrypcik jest b. prosty, pisany na szybko, więc możliwe są błędy. Za ich wskazanie będę wdzięczny. Have fun!

UPDATE: Poprawiony błąd zgłoszony przez inS.

UPDATE2: Poprawiony błąd w linii s/[g]/9/; -> s/[g]/9/g;

UPDATE3: Wdałem się we flame o językach programowania, co zmobilizowało mnie do lekkiego sprzątnięcia (tr zamiast kilku s) i optymalizacji kodu (/o) – jest jakieś 15% szybciej, choć nie o to w tym chodzi.

Jak wysyłać SMSy z CLI?

Jak pisałem jakiś czas temu, PlusGSM zmienił bramkę, przez co dotychczasowe narzędzia nie działają. Bez słania SMSów z CLI żyje się niewygodnie, więc stanęło na płatnej bramce i skrypciku do słania SMSów własnej produkcji.

Za namową znajomego postanowiłem skorzystać nie z darmowej bramki Plusa, a z serwisu SMSCenter. Z jednej strony jest to rozwiązanie płatne (6 gr/sztuka), z drugiej – dostarcza do wszystkich polskich sieci, nie tylko Plusa (przydatne przy obecnych migracjach). No i pozwala na wysłanie SMS przez wywołanie odpowiedniego URLa, co znakomicie ułatwia wysyłanie.

Wad rozwiązania też jest parę. Od przekazywania treści SMSów firmie trzeciej (jakichś tajnych rzeczy nie wysyłam, więc olać), przez brzydką prezentację, po konieczność pilnowania środków na koncie (przy zejściu poniżej 10 zł system ostrzega, ciekawe czy przy złotówce też to zrobi – mam nadzieję, że tak).

Jakości i stabilności serwisu nie oceniam – za krótko używam. Znajomy twierdzi, że OK, a z krótkich testów wynika, że SMSy docierają b.szybko.

Póki co, dostępna jest pierwsza, napisana w 10 minut, brzydka wersja skryptu, wykorzystująca wget. Jedyna zaleta, to fakt, że działa. Zdecydowanie trzeba parę rzeczy poprawić/przepisać (choćby dodać obsługę plików konfiguracyjnych). Dla chętnych dostępne jest API bramki. Sam skrypt dostępny jest na stronie domowej smssender.pl (och, jaka szumna nazwa).

Publikuję, bo to dobry motywator. Czekam na wszelkie uwagi/zgłoszenia błędów. Dziś pół godzinki zeszło na walkę z materią, czyli bugami (edytor!) i upierdliwościami (nie pozwalają dodać .gz!) w blox.pl ;/