Prezentacja, która miała miejsce 7 marca 2018 w Poznaniu. Wykonanie: Adam Matysiak (HighSolutions). Czemu warto zainteresować się chatbotami? Jak tworzyć chatboty w PHP i Laravelu? Jak połączyć z Messengerem? Jakie są nowości?
Zhakuj swojego Wordpressa, WordUP Trojmiastosecman_pl
Prezentacja na WordUP Trójmiasto poświęcona metodom testowania bezpieczeństwa tworzonych przez deweloperów dodatków do Wordpressa. W prezentacji skontrowano się na wybranych atakach na aplikacje webowe: SQL injection, XSS, Upload PHP shell
Prezentacja opisuje różne techniki optymalizacji aplikacji ASP.NET. Omawiane są role poszczególnych warstw wpływających na wydajność - od optymalizacji kodu po stronie klienta (techniki stosowane na poziomie kodu HTML i JavaScript) przez różne poziomy stosowania cache, wybrane ustawienia konfiguracyjne IIS aż po same techniki optymalizacji na poziomie kodu ASP.NET.
Red Green Hotfix – złudne poczucie bezpieczeństwa w testachThe Software House
Presentation from Uszanowanko Programowanko meetup - www.meetup.com/Uszanowanko-Programowanko/events/221770025/
Czasami poczucie dobrze spełnionego obowiązku po uruchomieniu wszystkich testów jest złudne. Nawet doświadczonym developerom zdarza się pisać hotfixy. W jaki sposób zapewnić sobie spokój i zminimalizować konieczność pisania kolejnych poprawek? W trakcie prezentacji omówione zostaną przykłady dobrze i źle napisanych testów oraz przedstawione będą sytuacje, w których trudne jest rozpoznanie potencjalnych problemów mogących wyniknąć w przyszłości.
Prezentacja z konferencji Mobilization 2014.
Abstrakt:
Na rzeczywistych przykładach pokażę jak wygląda proces oceny bezpieczeństwa aplikacji mobilnych. Zobaczymy m.in. jak wykrywać słabości związane z przechowywaniem danych na urządzeniu, nieprawidłowości w transmisji, oraz najgroźniejsze - błędy w API po stronie serwera (np. błędy logiczne, kontroli dostępu, REST). Jednocześnie okaże się jakie techniki utrudniają ataki, jaki jest faktyczny wpływ na ryzyko poszczególnych podatności, oraz jakie zabezpieczenia warto zastosować w różnych aplikacjach.
Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"HighSolutions Sp. z o.o.
Prezentacja z 19.05.2022 roku / Laravel Poland Meetup #22 - edycja online
Wykonanie: Miłosz Dziurzyński (HighSolutions)
Temat: Kilka slajdów o castowaniu atrybutów w Eloquent
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2019-09-05 w Poznaniu.
Wykonanie: Marek Tenus (HighSolutions)
Temat: "Speed up web API with Laravel and Swoole using Docker"
Prezentacja, która miała miejsce 2019-04-04 na Dniach Kariery w Poznaniu.
Wykonanie: Adam Matysiak (HighSolutions)
Temat: "Turkusowe organizacje. Nowoczesny styl zarządzania"
Zhakuj swojego Wordpressa, WordUP Trojmiastosecman_pl
Prezentacja na WordUP Trójmiasto poświęcona metodom testowania bezpieczeństwa tworzonych przez deweloperów dodatków do Wordpressa. W prezentacji skontrowano się na wybranych atakach na aplikacje webowe: SQL injection, XSS, Upload PHP shell
Prezentacja opisuje różne techniki optymalizacji aplikacji ASP.NET. Omawiane są role poszczególnych warstw wpływających na wydajność - od optymalizacji kodu po stronie klienta (techniki stosowane na poziomie kodu HTML i JavaScript) przez różne poziomy stosowania cache, wybrane ustawienia konfiguracyjne IIS aż po same techniki optymalizacji na poziomie kodu ASP.NET.
Red Green Hotfix – złudne poczucie bezpieczeństwa w testachThe Software House
Presentation from Uszanowanko Programowanko meetup - www.meetup.com/Uszanowanko-Programowanko/events/221770025/
Czasami poczucie dobrze spełnionego obowiązku po uruchomieniu wszystkich testów jest złudne. Nawet doświadczonym developerom zdarza się pisać hotfixy. W jaki sposób zapewnić sobie spokój i zminimalizować konieczność pisania kolejnych poprawek? W trakcie prezentacji omówione zostaną przykłady dobrze i źle napisanych testów oraz przedstawione będą sytuacje, w których trudne jest rozpoznanie potencjalnych problemów mogących wyniknąć w przyszłości.
Prezentacja z konferencji Mobilization 2014.
Abstrakt:
Na rzeczywistych przykładach pokażę jak wygląda proces oceny bezpieczeństwa aplikacji mobilnych. Zobaczymy m.in. jak wykrywać słabości związane z przechowywaniem danych na urządzeniu, nieprawidłowości w transmisji, oraz najgroźniejsze - błędy w API po stronie serwera (np. błędy logiczne, kontroli dostępu, REST). Jednocześnie okaże się jakie techniki utrudniają ataki, jaki jest faktyczny wpływ na ryzyko poszczególnych podatności, oraz jakie zabezpieczenia warto zastosować w różnych aplikacjach.
Similar to Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan (16)
Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"HighSolutions Sp. z o.o.
Prezentacja z 19.05.2022 roku / Laravel Poland Meetup #22 - edycja online
Wykonanie: Miłosz Dziurzyński (HighSolutions)
Temat: Kilka slajdów o castowaniu atrybutów w Eloquent
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2019-09-05 w Poznaniu.
Wykonanie: Marek Tenus (HighSolutions)
Temat: "Speed up web API with Laravel and Swoole using Docker"
Prezentacja, która miała miejsce 2019-04-04 na Dniach Kariery w Poznaniu.
Wykonanie: Adam Matysiak (HighSolutions)
Temat: "Turkusowe organizacje. Nowoczesny styl zarządzania"
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2018-12-06 w Poznaniu.
Wykonanie: Adam Matysiak (HighSolutions)
Temat: "Laravel Telescope - niezastąpione narzędzie do debugowania"
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2018-10-04 w Poznaniu.
Wykonanie: Marek Tenus (HighSolutions)
Temat: "Praktyczne użycie Repository Pattern w Laravel cz. I"
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2018-05-24 w Poznaniu. Wykonanie: Adam Matysiak (HighSolutions). Czemu tworzyć biblioteki Open Source i jak je stworzyć w Laravelu. Na przykładzie paczki Eloquent Sequence.
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2018-04-25 w Poznaniu. Wykonanie: Marek Tenus (HighSolutions).
Jak zainstalować i skonfigurować Dockera? Czym się różni od innych rozwiązań? Jakie są korzyści z korzystania z Dockera?
How business and IT should cooperate with each other to verify business model...HighSolutions Sp. z o.o.
Presentation of Adam Matysiak from workshops conducted during Startup Poznań 2018.
The aim of the presentation was to show the diversity of business models, ways to verify business ideas, and the ability to test a business model before work on MVP begins.
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...HighSolutions Sp. z o.o.
Prezentacja Adama Matysiak z warsztatów przeprowadzonych w trakcie Startup Poznań 2018.
Celem prezentacji było pokazanie różnorodności modeli biznesowych, sposobów weryfikacji pomysłów na biznes, a także możliwości testowania modelu biznesowego zanim zacznie się prace nad MVP.
Presentation that took place in Poznań, 07.03.2018. Why chatbots are interesting? How to start develop chatbots in PHP, Laravel? What is possible in Messenger?
Prezentacja, która miała miejsce 2018-03-07 w Poznaniu. Wykonanie: Amadeusz Kozłowski (HighSolutions). Czy to koniec front-end frameworków jak Bootstrap? Jak wygląda konfiguracja w Tailwind CSS?
Prezentacja, która miała miejsce 2018-03-07 w Poznaniu. Wykonanie: Marek Tenus (HighSolutions). Podstawy tworzenia Form Requestów w miejsce standardowego obiektu Request. Opis zalet i wad takiego rozwiązania.
Prezentacja podczas konferencji narodowej AIESEC Polska. O tym kiedy założyć firmy, jaką formę wybrać, jakie stoją wyzwania, a także jak rozpisać model biznesowy i na czym się skupić.
4. Do czego możemy je wykorzystać?
- Automatyczne/interaktywne deploymenty
- Działania DevOps
- Wsparcie sprzedaży (E-commerce)
- Wsparcie działu obsługi klienta
- Brand marketing
- Promocja bloga/treści
- Usługi typu self-service
- Fun
- … ?
13. Usłysz i odpowiedz...
plik botman.php w katalogu routes
$botman->hears('Kto dziś wygra mecz?', function ($bot) {
$bot->reply('LECH!');
});
// Process incoming message
$botman->listen();
14. Przesłanie do kontrolera
$botman->hears('Kto dziś wygra mecz?', 'SomeNamespaceLechController@respondAboutWinningToday');
class LechController {
public function respondAboutWinningToday($bot) {
$bot->reply('Oczywiście, że KKS!');
}
}
15. Parametry i wyrażenia regularne
$botman->hears('lubię {team}', function ($bot, $team) {
$bot->reply('Twoja ulubiona drużyna to: '. $team);
});
$botman->hears('.*(KKS|Lech|Poznań|Kolejorz).*', function ($bot) {
$bot->reply('Zdobyte mistrzostwa Polski: 1983, 1984, 1990, 1992, 1993, 2010, 2015');
});
$botman->hears('Chcę kupić ([0-9]+) bilet(y|ów)', function ($bot, $number) {
$bot->reply($number .' - tyle biletów zamawiam dla Ciebie. Proszę czekać...');
});
16. Można też przyjmować załączniki
$bot->receivesImages(function($bot, $images) {
foreach ($images as $image) {
$url = $image->getUrl(); // The direct url
$title = $image->getTitle(); // The title, if available
$payload = $image->getPayload(); // The original payload
}
});
17. Odpowiadanie
$botman->hears('Kto dziś wygra ważny mecz?', function (BotMan $bot) {
$bot->reply("LECH!");
$bot->reply("Kto?");
$bot->typesAndWaits(2); // 2 sekundy pokazuje, że pisze...
$bot->reply("LECH!");
});
18. Odpowiadanie obrazkiem
use BotManBotManMessagesAttachmentsImage;
use BotManBotManMessagesOutgoingOutgoingMessage;
$botman->hears('Pokaż herb', function (BotMan $bot) {
// Create attachment
$attachment = new Image('https://www.lechpoznan.pl/view/basic/images/favicon/facebook_200x200.png');
// Build message object
$message = OutgoingMessage::create('Herb Lecha Poznań')
->withAttachment($attachment);
// Reply message object
$bot->reply($message);
});
20. Konwersacje
class AccountRegisterConversation extends Conversation
{
protected $name;
protected $email;
public function run()
{
$this->askName();
}
public function askName()
{
$this->ask('OK, jak się nazywasz?', function(Answer $answer) {
$this->name = $answer->getText();
$this->say('Dziękuję za odpowiedź: '. $this->name);
$this->askEmail();
});
}
public function askEmail()
{
$this->ask('Podaj proszę adres e-mail by dokończyć rejestrację', function(Answer $answer) {
$this->email = $answer->getText();
// ... sending e-mail
$this->say('Dziękuję. Mail z potwierdzeniem został wysłany na: '. $this->email);
});
}
}
22. Pytania z opcjami wyboru
public function askForNextMatchWinner()
{
$question = Question::create('Kto wygra mecz w niedzielę?')
->fallback('Nie udało się odpowiedzieć...')
->callbackId('who_will_win_next_match')
->addButtons([
Button::create('Lech')->value('lech'),
Button::create('Jagiellonia')->value('jaga'),
]);
$this->ask($question, function (Answer $answer) {
// Detect if button was clicked:
if ($answer->isInteractiveMessageReply()) {
$selectedValue = $answer->getValue(); // will be either 'lech' or 'jaga'
$selectedText = $answer->getText(); // will be either 'Lech' or 'Jagiellonia'
}
});
}
23. Pytania ze wzorcami
public function askWhoWillWinNextMatch()
{
$this->ask('Kto w niedzielę wygra mecz? Lech czy Jagiellonia?', [
[
'pattern' => 'kks|lech|poznań|kolejorz',
'callback' => function () {
$this->say('Świetnie, że nadal w nas wierzysz!');
}
],
[
'pattern' => 'jagiellonia|białystok|jaga',
'callback' => function () {
$this->say(':(. Nadzieja umiera ostatnia!');
}
]
]);
}
24. Dane użytkownika
/**
* Retrieve User information.
* @param IncomingMessage $matchingMessage
* @return UserInterface
*/
public function getUser(IncomingMessage $matchingMessage)
{
return new User($matchingMessage->getSender());
}
// Access user
$user = $bot->getUser();
28. Testowanie
/** @test */
public function test_simple_reply()
{
$this->bot
->receives('Kto dziś wygra mecz?')
->assertReply('LECH!');
}
/** @test */
public function test_image_reply()
{
$this->bot
-
>receivesImage(['https://www.lechpoznan.pl/view/basic/images/favicon/facebook_200x200.png'])
->assertReply('To jest logo Lecha Poznań');
}
29. Testowanie
/** @test */
public function test_conversation()
{
$this->bot
->receives('Kto dziś wygra ważny mecz?')
->assertReplies([
'LECH!',
'Kto?',
])->receives('LECH')
->assertReply('Alleluja, alleluja...');
}
35. Messenger / Generic Template
$bot->reply(GenericTemplate::create()
->addElements([
Element::create('BotMan Documentation')
->subtitle('All about BotMan')
->image('http://botman.io/img/botman-body.png')
->addButton(ElementButton::create('visit')
->url('http://botman.io')
)
->addButton(ElementButton::create('tell me more')
->payload('tellmemore')
->type('postback')
),
Element::create('BotMan Laravel Starter')
->subtitle('This is the best way to start...')
->image('http://botman.io/img/botman-body.png')
->addButton(ElementButton::create('visit')
->url('https://github.com/botman/botman')
),
])
);
36. Messenger / List Template
$bot->reply(ListTemplate::create()
->useCompactView()
->addGlobalButton(ElementButton::create('view more')->url('http://buildachatbot.io'))
->addElement(
Element::create('BotMan Documentation')
->subtitle('All about BotMan')
->image('http://botman.io/img/botman-body.png')
->addButton(ElementButton::create('tell me more')
->payload('tellmemore')->type('postback'))
)
->addElement(
Element::create('BotMan Laravel Starter')
->subtitle('This is the best way to start...')
->image('http://botman.io/img/botman-body.png')
->addButton(ElementButton::create('visit')
->url('http://botman.io')
)
)
);
37. Messenger / Media Template
$bot->reply(MediaTemplate::create()
->element(MediaAttachmentElement::create('image')
->addButton(ElementButton::create('Tell me more')
->type('postback')
->payload('Tell me more'))
->addButton(ElementButton::create('Documentation')
->url('https://botman.io/'))));