1 of 16

Technologie

Wybrane środowiska programowania�na przykładzie listy csv�

2 of 16

Środowisko tekstowe

  • Wejście i wyjście jest tekstem.
  • Wyjście – najczęściej polecenie „print”.
  • Na wejściu mogą być parametry (z linii komend) lub pliki.
  • Plik csv – plik tekstowy, który ma swoją strukturę (wiersze składające się z pól rozdzielonych znakiem „delimiter”).
  • Teksty mogą być przekazywane między programamu bez zapisywania do plików (>, |)

3 of 16

Przykład – spis znajomych

Arkusz kalkulacyjny może być zapisany do pliku csv

4 of 16

Obsługa CSV w językach skryptowych

  • PHP

<?php

$plik = fopen('znajomi.csv','r');

while ( $adres =

fgetcsv($plik, 0, ';') ) {

print $adres[2]."\n";

}

  • Python

# -*- 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"

5 of 16

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

6 of 16

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).

7 of 16

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

8 of 16

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);

9 of 16

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 }

10 of 16

Zob. nagranie

11 of 16

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

12 of 16

Nagranie

13 of 16

Lazarus / Pascal

14 of 16

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;

15 of 16

Nagranie:

16 of 16

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).