Technologie
Wybrane środowiska programowania�na przykładzie listy csv�
Środowisko tekstowe
Przykład – spis znajomych
Arkusz kalkulacyjny może być zapisany do pliku csv
Obsługa CSV w językach skryptowych
<?php
$plik = fopen('znajomi.csv','r');
while ( $adres =
fgetcsv($plik, 0, ';') ) {
print $adres[2]."\n";
}
# -*- coding: utf-8 -*-
import csv
with open('znajomi.csv','rb') as f:
reader = csv.reader(f,
delimiter=';')
for row in reader:
print row[2];
Przykładowa zawartość znajomi.csv:
"Jan Nowski";"ul. Długa 4";"nowak@poczta.pl"
"Jan Kowalski";;"jan.kowalski@poczta.pl"
Strumień – przekierowanie wyjścia
skierowanie wyjścia z programu do pliku (>):
./adresy.py > maile.txt
komenda skierowania wyjścia do innego programu (|):
./adresy.py | php -F mailing.php
W PHP: “php -F” oznacza że strumień wejściowy znajdzie się w zmiennej $argn
Wysyłka – biblioteka PHP
Do wysyłania maili na adresy z listy można użyć gotowych bibliotek. Na przykład:
https://packagist.org/packages/swiftmailer/swiftmailer
Przy okazji możemy zapoznać się z zastosowaniem systemu budowania aplikacji z modułów Composer.
Umożliwia on ściągnięcie z internetu potrzebnych modułów, które zostają zapisane w katalogu vendor. Tworzy się tam też moduł ładujący potrzebne biblioteki (autoloader).
Wysyłka – biblioteka (composer)
composer init
…
Would you like to define your dependencies (require) interactively [yes]?
Search for a package: swiftmailer/swiftmailer
…
composer update
https://packagist.org/packages/swiftmailer/swiftmailer
Swfmailer - zastosowanie
<?php // plik par.php
$par_mail = [
'host' => ...,
'port' => "25",
'user' => ...,
'pass' => ....
];
<?php
require 'vendor/autoload.php'; // biblioteki z vendor
require_once 'par.php'; // definicja $par_mail
$adres = ‘test@poczta.pl’;
$transport = (new Swift_SmtpTransport(
$par_mail['host'], $par_mail['port']))
->setUsername($par_mail['user'])
->setPassword($par_mail['pass']);
$mailer = new Swift_Mailer($transport);
$message = (new Swift_Message('temat maila'))
->setFrom($par_mail['user'])
->setTo([$adres])
->setBody('testowy email')
// Wysyłka
$result = $mailer->send($message);
Php - strona www
<?php
require 'mailing.php';
require_once 'par.php';
if (isset($_REQUEST['adres'])) { // $_REQUEST – parametry w URL
$ret=msend($par_mail, $_REQUEST['adres'],"temat...", "treść….”);
} else {
?>
<form action="index.php">
<input name='adres' type="text"/> <input type="submit" />
</form>
<?php }
Zob. nagranie
App Inventor
Instalacja (w emulatorze):
cd ~/Android/Sdk/platform-tools
cp ~/Pobrane/test.apk .
adb install test.apk
Wrzucenie pliku csv:
cp ~/Pobrane/znajomi.csv .
adb push znajomi.csv /sdcard
Nagranie
Lazarus / Pascal
Lazarus c.d.
procedure TForm1.sendEMail(email : string);
begin
IdMessage1.Body.Append('info...');
IdMessage1.Recipients.EMailAddresses := email;
IdMessage1.Subject := 'TEMAT';
IdMessage1.From.Name := 'ja';
IdMessage1.From.Address := '...';
IdSMTP1.Connect;
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;
end;
procedure TForm1.MenuMailClick(Sender: TObject);
Var i : integer;
begin
for i:=0 to wybor.Items.Count-1 do
SendEMail(wybor.Items[i]);
end;
procedure TForm1.chkAddressChange(Sender: TField);
Var i, j : integer;
begin
if Sender.AsBoolean then begin // dodanie
i:=wybor.Items.IndexOf(sdfEmail.AsString);
if i<0 then wybor.Items.Add(sdfEmail.AsString);
end // (...)
end;
Nagranie:
Zakończenie
Najprostsze środowisko: pliki systemu operacyjnego
Przetwarzanie tekstowe.
Naturalne przejście do stron internetowych (tekst formatowany html)
Środowiska graficzne (Lazarus, App Inventor) - programowanie sterowane zdarzeniami.
Odrębnie projekt interfejsu, odrębnie logika działanie (program).
Wymaga poznania szczegółów technicznych środowiska (minimum kilka tygodni pracy w tym środowisku).