VoIP a serwisy używające tonowego wybierania DTMF (np. mBank)

Od ponad 2 lat korzy­sta­my w domu z VoIP (naj­pierw był to Halo­net, a teraz IPFon) zamiast sta­cjo­nar­ne­go tele­fo­nu. Ostat­nio — jako że prze­sze­dłem na Linu­xa i musia­łem zain­sta­lo­wać Win­dows w maszy­nie wir­tu­al­nej, co wią­za­ło się z tele­fo­nicz­ną akty­wa­cją w Micro­sof­cie — oka­za­ło się że są pro­ble­my z korzy­sta­niem z wybie­ra­nia tono­we­go — zaska­ki­wa­ło tyl­ko co któ­reś wci­śnię­cie kla­wi­sza, więc akty­wa­cja (9 grup po 6 cyfr!!) Win­dow­sa oka­za­ła się niewykonalna.

Tech­ni­cy z IPFo­na dora­dzi­li taką pro­stą zmia­nę w usta­wie­niach bram­ki VoIP:

DTMF Tx METHOD zmie­nić z AUTO na INFO

Pomo­gło!

[en] Running CodeIgniter controller methods from external application

Gosh, this blog gets too tech­ni­cal 🙁 I guess I need to start wri­ting some kind of non-IT jour­nal here. You know, the teena­ge-pink-blog style 😉

Any­way, more for my own reference.

Code­Igni­ter is a nice and nonin­tru­si­ve PHP appli­ca­tion fra­me­work that I’ve grown to like and use it (also com­mer­cial­ly). The pro­blem is inte­gra­ting its MVC with exter­nal appli­ca­tions such as CMSes.

Here­’s a quick hack I’ve done to make this possible:

1. Cre­ate „exter­nal” sub­di­rec­to­ry under „sys­tem” direc­to­ry of Code­Igni­ter installation.
2. Pla­ce atta­ched files there.
3. Open „system/libraries/Loader.php” file and patch it like this: find line 681 and change

global $OUT;
$OUT->set_output(ob_get_contents());

to

global $OUT;
if (!isset($OUT)) $OUT = $GLOBALS['ci_external_out'];
$OUT->set_output(ob_get_contents());

4. For exam­ple of use, see atta­ched index.php file, basi­cal­ly to call a con­trol­ler method, just do this:

require_once 'ciexternal.php';
echo ci_external('controller', 'method');

MySQL, JDBC a polskie krzaczki

Insta­lu­ję MySQL 5.1, two­rzę na nim bazę danych i usta­wiam jej kodo­wa­nie zna­ków na UTF‑8.

W javo­wym kodzie wszyst­kie strin­gi są w Uni­co­de. Rze­czy, któ­re wczy­tu­ję z pli­ku XML są w nim w UTF‑8.

Przez JDBC wrzu­cam je do bazy, pobie­ram z powro­tem i… zamiast pol­skich krzacz­ków mam ????? :>

Roz­wią­za­nie — dopi­sać do con­nec­tion strin­ga JDBC:

jdbc:mysql://serwer:3306/baza?useUnicode=true&characterEncoding=UTF‑8

Krop Spam — permanently stop spam in your blog comments

I’ve been tired of com­ment spam at my blogs (I also use Word­Press as a CMS engi­ne so com­ment spam is even more pain in the ass) so I have cre­ated a method to stop it. My method pro­ved to be very effi­cient and doesn’t need any human inte­rac­tion (whi­le plu­gins such as Aki­smet requ­ire blog owner to perio­di­cal­ly look thro­ugh spam fol­der to check if the­re are­n’t any fal­se posi­ti­ves). I have deci­ded to wrap it up in a plugin.

How does it work?

Well, I’ve noti­ced that spam­bots usu­al­ly direc­tly attack the wp-comments-post.php script that is a Word­Press com­ment pro­ces­sing script. Some (but this is real­ly rare) spam­mers also try to par­se the WWW page and when they find a <form> the­re, they just blin­dly fill it in and submit.

If you look into any Word­Press tem­pla­te sour­ce code, you’ll find that the­re is a <texta­rea name=„comment”> some­whe­re insi­de. This is a text field for com­ment con­tent that user enters. Spam­mers just fill it in with garbage.

What my plu­gin does is chan­ge this <texta­rea> name to some­thing meanin­gless for spam­mers (by default its „komen­ta­rzyk” which means „a lit­tle com­ment” in Polish 😉 ). This way, whe­ne­ver a spam­mer attacks your wp-comments-post.php direc­tly, he doesn’t fill now requ­ired „komen­ta­rzyk” field and the com­ment is not added. More­over, my plu­gin leaves the <texta­rea name=„comment” in the sour­ce code, but makes it small (1 row and 1 column only) and tries to hide it thro­ugh CSS (display: none) so human user will pro­ba­bly not fill that field in. Spam­mers don’t bother to check texta­re­a’s size nor do they under­stand CSS, so even when they par­se your webpa­ge, they not only fill in requ­ired „komen­ta­rzyk” field, but also fill in the „com­ment” field (becau­se they fill in just eve­ry­thing they find). This way they let your blog now they are bad people — if „com­ment” field is fil­led in, pro­ba­bly machi­ne fil­led in your com­ment form inste­ad of human. So we refu­se the com­ment to be added.

So, how to install the plugin?

1. Down­lo­ad the Krop Spam plu­gin and unzip it into your Word­Press wp-con­ten­t/plu­gins directory.
2. Ena­ble the plu­gin in Word­Press admin.
3. Open up wp-comments-post.php in your favo­ri­te text edi­tor and find a line that says:

$comment_content = trim($_POST['comment']);  

4. Repla­ce this line with fol­lo­wing fragment:

if(trim($_POST['comment']) != '') wp_die( __('Sorry, small comments field should be left empty - it\'s a spam trap.'));
$comment_content = trim($_POST['komentarzyk']);

5. You’re done 🙂

I have tested the plu­gin with few Word­Press the­mes found on the inter­net and it works cor­rec­tly. The only plu­gi­n’s requ­ire­ment is that it needs to have access to any tem­po­ra­ry direc­to­ry (usu­al­ly /tmp) on the server. It’s almost always possi­ble. If not — talk to you provider.

How efficient is it?

I have been using this method at my Kar­ko­no­sze page sin­ce a few mon­ths ago and it decre­ased the num­ber of spam I rece­ive from 20 – 30 a week to 1 in 3 mon­ths. The­re­’s no guaran­tee it will work for you though 😉

Porady remontowe: przygotowania

Jeśli dro­gi Czy­tel­ni­ku — tak jak ja nie­ca­ły rok temu — pla­nu­jesz w domu gene­ral­ny (albo i mniej­szy) remont, myślę że mogę Ci pod­po­wie­dzieć parę istot­nych rze­czy. Być może dzię­ki moim pora­dom unik­niesz nie­po­trzeb­ne­go stre­su, a może i wydat­ków. A przede wszyst­kim unik­niesz błę­dów, któ­re ja popełniłem 🙂

Przygotowania

  • Zmierz dokład­nie każ­dą ścia­nę i każ­dy kąt w miesz­ka­niu i spo­rządź jego plan na papie­rze mili­me­tro­wym. Jeśli masz taki plan od admi­ni­stra­cji budyn­ku — nie wierz mu; na moim, pod­pi­sa­nym przez archi­tek­ta, pla­nie wymia­ry róż­ni­ły się od rze­czy­wi­sto­ści nawet o 15 – 30cm. Może to nie jest bar­dzo dużo, ale może spo­wo­do­wać, że np. nie zmie­ści Ci się w łazien­ce wybra­na wanna.
  • Możesz sko­rzy­stać z pro­gra­mów kom­pu­te­ro­wych wspo­ma­ga­ją­cych pro­jek­to­wa­nie takich, jak Kit­chen­Draw, Flo­or­Plan czy nawet Auto­CAD — ale do jed­ne­go remon­tu nie war­to moim zda­niem wyda­wać na nie pie­nię­dzy i tra­cić cza­su na ich naukę. Zamiast tego przejdź się po skle­pach z mebla­mi, AGD, itp. i pozbie­raj kata­lo­gi. Możesz tak­że pobu­szo­wać po inter­ne­cie. Na pod­sta­wie wymia­rów spo­rządź rysun­ki sprzę­tów i mebli, któ­re chcesz umie­ścić w miesz­ka­niu w takiej samej ska­li, w jakiej zro­bi­łeś plan i wytnij je z papie­ru — będziesz mógł je do woli prze­sta­wiać i przymierzać 😉
  • Jeśli robisz remont gene­ral­ny, nie bój się wybu­rza­nia, prze­su­wa­nia czy dosta­wia­nia ścian dzia­ło­wych. Układ — zwłasz­cza budo­wa­nych z wiel­kiej pły­ty — miesz­kań rzad­ko jest prze­my­śla­ny i na ogół wie­le moż­na popra­wić. Pomyśl np. czy nie będzie dobrze małą kuch­nię połą­czyć z poko­jem dzien­nym w for­mie anek­su kuchen­ne­go, co powięk­szy całe pomiesz­cze­nie. Wybu­rze­nie ścia­ny nie jest bar­dzo dro­gie — a gene­ral­ny remont robisz na lata. Sta­wia­nie nowych ścia­nek i róż­ne­go rodza­ju mur­ków jest tanie — a wydzie­le­nie funk­cjo­nal­nej czę­ści pomiesz­cze­nia przy ich pomo­cy może dać nawet nie­wiel­kie­mu pomiesz­cze­niu spo­rą daw­kę uni­wer­sal­no­ści — np. możesz wydzie­lić w sypial­ni kącik do pra­cy lub ukryć za ścian­ką buczą­cą lodów­kę w anek­sie kuchen­nym. W ścian­kach takich możesz tak­że zro­bić pół­ki i umie­ścić cie­ka­we oświe­tle­nie, co doda pomiesz­cze­niu uroku.
  • Pamię­taj, że papier znie­sie wszyst­ko — nie żałuj cza­su na wymy­śle­nie swo­je­go miesz­ka­nia. Weź pod uwa­gę, ile osób w nim miesz­ka, czy są małe dzie­ci, czy potrzeb­ne jest miej­sce do nauki, do pra­cy, wypo­czyn­ku… Pooglą­daj cza­so­pi­sma poświę­co­ne wystro­jo­wi wnętrz — są one kopal­nią cie­ka­wych pomysłów. 

Ciąg dal­szy nastąpi…

Zaszufladkowano do kategorii Porady