Filteri
close
Tip rezultata
Svi rezultati uključeni
keyboard_arrow_down
Kategorija
Stručna literatura
keyboard_arrow_down
Od
RSD
Do
RSD
Sortiraj po
keyboard_arrow_down
Objavljeno u proteklih
keyboard_arrow_down
Sajtovi uključeni u pretragu
2 sajta isključena
keyboard_arrow_down

Pratite promene cene putem maila

  • Da bi dobijali obaveštenja o promeni cene potrebno je da kliknete Prati oglas dugme koje se nalazi na dnu svakog oglasa i unesete Vašu mail adresu.
1-16 od 16 rezultata

Broj oglasa

Prikaz

format_list_bulleted
view_stream
1-16 od 16
1-16 od 16 rezultata

Prikaz

format_list_bulleted
view_stream

Režim promene aktivan!

Upravo ste u režimu promene sačuvane pretrage za frazu .
Možete da promenite frazu ili filtere i sačuvate trenutno stanje

Aktivni filteri

  • Izbačen Sajt

    www.kupindo.com
  • Izbačen Sajt

    www.papirnisvet.com

U Srbiji je uvođenje ideologije Zapada dočekano sa otporom, koji nije bio mnogo glasan, ali je veoma uporan. Narod koji je video medijske manipulacije tokom bombardovanja 1999. nije, uprkos ogromnom naporu, resetovao svoju svest. Mit Kosovskog boja i Svetog Save se pokazao jačim od najvećih medijskih imperija Zapada. Mala grupa (koja deluje skoro gerilski) intelektualaca, koja razotkriva medijske prevare, čini važan deo otpora. Zato je i ova knjiga dragoceno štivo prave, pravoslavne Srbije. Dr Branimir Nestorović I nije ovde samo reč o razotkrivanju jednog istinskog združenog zločinačkog poduhvata, čiji koreni sežu desetinama godina unazad, već i o onome na šta smo aludirali u samom naslovu ovog osvrta – gledanju na svet novim očima, sa druge strane ogledala. Učvršćivanju saznanja da ništa nije onako kako nam je godinama i decenijama predstavljano, predavano u školama i univerzitetima, nuđeno u obliku neupitnih, opšteprihvaćenih „istina”, ovenčano oreolima „respektabilnosti” i – autorovih omiljenih meta raskrinkavanja – „nauke” i „struke”. Aleksandar Pavić Čitaj dalje

Prikaži sve...
1,200RSD
forward
forward
Detaljnije

U Srbiji je uvođenje ideologije Zapada dočekano sa otporom, koji nije bio mnogo glasan, ali je veoma uporan. Narod koji je video medijske manipulacije tokom bombardovanja 1999. nije, uprkos ogromnom naporu, resetovao svoju svest. Mit Kosovskog boja i Svetog Save se pokazao jačim od najvećih medijskih imperija Zapada. Mala grupa (koja deluje skoro gerilski) intelektualaca, koja razotkriva medijske prevare, čini važan deo otpora. Zato je i ova knjiga dragoceno štivo prave, pravoslavne Srbije. Dr Branimir Nestorović I nije ovde samo reč o razotkrivanju jednog istinskog združenog zločinačkog poduhvata, čiji koreni sežu desetinama godina unazad, već i o onome na šta smo aludirali u samom naslovu ovog osvrta – gledanju na svet novim očima, sa druge strane ogledala. Učvršćivanju saznanja da ništa nije onako kako nam je godinama i decenijama predstavljano, predavano u školama i univerzitetima, nuđeno u obliku neupitnih, opšteprihvaćenih ”istina”, ovenčano oreolima ”respektabilnosti” i –autorovih omiljenih meta raskrinkavanja – ”nauke” i ”struke”. Aleksandar Pavić

Prikaži sve...
960RSD
forward
forward
Detaljnije

"Ova knjiga rezultat je teorijskog i empirijskog istraživanja koncepta intelektualnog kapital, odnosno njegovog holističkog pristupa stvaranju vrednosti preduzeća. Naučni izazov u istraživanju ovog koncepta ležu u činjenici da je za uobličavanje njegovog teorijskog okvira potrebno povezati sve relevantne teorije u kojim on pronalazi svoje utemeljenje, kao i sve aspekte njegovog proučavanja." - Iz uvoda Čitaj dalje

Prikaži sve...
1,875RSD
forward
forward
Detaljnije

Nova knjiga Dragana Vujičića „Reset V“nastavak je istraživanja uglednog novinara i publiciste u lavirintima Tajnih planova u Agendi koje su „najdublje države“ pripremile i sprovode nad svojim stanovništvom. U petoj knjizi (prethode „Taoci reseta“,“Taoci korone“,“Rest VS razuma“ i „Reset u krvi Ukrajina VS Rusija“) autor se vraća i u period u pre oko 300 godina kada je sa Darvinovom evolucijom krenu pravi veliki Reset planete. Čitaj dalje

Prikaži sve...
1,200RSD
forward
forward
Detaljnije

Nova knjiga Dragana Vujičića „Reset V“nastavak je istraživanja uglednog novinara i publiciste u lavirintima Tajnih planova u Agendi koje su „najdublje države“ pripremile i sprovode nad svojim stanovništvom. U petoj knjizi (prethode „Taoci reseta“,“Taoci korone“,“Rest VS razuma“ i „Reset u krvi Ukrajina VS Rusija“) autor se vraća i u period u pre oko 300 godina kada je sa Darvinovom evolucijom krenu pravi veliki Reset planete. Iz recenizije Siniše Ljepojevića: HRONIKA ZLA U ovom radu su sakupljena i verno predstavljena sveobuhvatna autentična svedočanstva, činjenice o celini savremenog zla koje je istovremeno i verovatno najveća obmana, prevara u istoriji… … U osnovi, reč je o kolosalnoj borbi protiv ljudske prirode, a da bi jedna potrošena zapadna politička i finansijska elita ostala dominantna u svetu. To je, međutim, uzaludan posao jer ljudsku prirodu i prirodu u celini još uvek niko nije pobedio, uzalud tehnologija. Doduše, posledice će biti velike, ali niko ne može da pobedi prirodu. I ona se, trebalo bi imati na umu, uvek osveti za narušavanje njene harmonije.

Prikaži sve...
960RSD
forward
forward
Detaljnije

RESET V POLITIKA Šifra artikla: 381746 Isbn: 9788690421626 Autor : Dragan Vujičić Izdavač : ČIGOJA ŠTAMPA Nova knjiga Dragana Vujičića „Reset V“nastavak je istraživanja uglednog novinara i publiciste u lavirintima Tajnih planova u Agendi koje su „najdublje države“ pripremile i sprovode nad svojim stanovništvom. U petoj knjizi (prethode „Taoci reseta“,“Taoci korone“,“Rest VS razuma“ i „Reset u krvi Uk... Detaljnije Nova knjiga Dragana Vujičića „Reset V“nastavak je istraživanja uglednog novinara i publiciste u lavirintima Tajnih planova u Agendi koje su „najdublje države“ pripremile i sprovode nad svojim stanovništvom. U petoj knjizi (prethode „Taoci reseta“,“Taoci korone“,“Rest VS razuma“ i „Reset u krvi Ukrajina VS Rusija“) autor se vraća i u period u pre oko 300 godina kada je sa Darvinovom evolucijom krenu pravi veliki Reset planete. Iz recenizije Siniše Ljepojevića: HRONIKA ZLA U ovom radu su sakupljena i verno predstavljena sveobuhvatna autentična svedočanstva, činjenice o celini savremenog zla koje je istovremeno i verovatno najveća obmana, prevara u istoriji… … U osnovi, reč je o kolosalnoj borbi protiv ljudske prirode, a da bi jedna potrošena zapadna politička i finansijska elita ostala dominantna u svetu. To je, međutim, uzaludan posao jer ljudsku prirodu i prirodu u celini još uvek niko nije pobedio, uzalud tehnologija. Doduše, posledice će biti velike, ali niko ne može da pobedi prirodu. I ona se, trebalo bi imati na umu, uvek osveti za narušavanje njene harmonije. Ime/Nadimak Email adresa Poruka POŠALJI Kategorija POLITIKA Autor Dragan Vujičić Težina specifikacija 0.5 kg Izdavač ČIGOJA ŠTAMPA Pismo Ćirilica Povez Broš Godina 2023 Format 17,6x25 Strana 312 Obavezni kolačići čine stranicu upotrebljivom omogućavanjem osnovnih funkcija kao što su navigacija stranicom i pristup zaštićenim područjima. Sajt koristi kolačiće koji su neophodni za pravilno funkcionisanje naše veb stranice kako bi se omogućile određene tehničke funkcije i tako vam pružilo pozitivno korisničko iskustvo. Statistički kolačići anonimnim prikupljanjem i slanjem podataka pomažu vlasnicima web lokacija da razumeju kako posetioci komuniciraju sa stranicom. To su kolačići koji omogućavaju web analitiku sajta, odnosno analizu upotrebe naših stranica i merenje prometa, koje sajt sprovodi u cilju poboljšanja kvaliteta i sadržaja ponuđenih usluga. Marketinški kolačići se koriste za praćenje posetilaca putem web stranice. Koriste se za prikazivanje relevantnih oglasa korisnicima i podsticanje da učestvuju, što je važno za nezavisne izdavače i oglašavače. Sajt koristi Google Analytics kolačiće ads/ga-audiences i collect, te Facebook kolačiće fr i tr.

Prikaži sve...
1,199RSD
forward
forward
Detaljnije

Knjiga treća obuhvata: liriku najnovijeg doba, stvaranu od sredine XX do početka XXI veka na stazama izlaženja iz okvira socrealističkog ukalupljivanja tematskog plana i poetike, destrukcije oficijelne poezije, ali i liriku nastojanja da se, nadovezivanjem na prethodno nasilno prekidanje njenih značajnih tokova, vaspostavi jedinstvo emocije i svesti (kantautorska poezija; neomodernizam, neoavangarda, postmodernizam; lirika religiozno-duhovnog toka ruske poezije, i dr.). Autori: Nabokov, Šalamov, Satunovski, Galič, Glazkov, Slucki, Samojlov, Holin, Revič, Okudžava, Sapgir, Gorbovski, Burič, Jevtušenko, Voznesenski, R. Kazakova, Ajgi, Matvejeva, Vs. Njekrasov, Rejn, Krasovicki, Bobišev, Sulejmenov, Gorbanjevska, Kušner, Sosnora, Rubcov, Ahmadulina, Moric, Ufland, Visocki, Aronzon, Ovčinikov, Vl. Kazakov, Kuprijanov, Šentalinski, Prigov, Brodski, Kedrov, Primerov, Karpova, Limonov, Krivuljin, Gubanov, Stratanovski, Ohapkin, Alejnjikov, L. Rubinštejn, Kublanovski, Erl, Irtenjev, Buznik, Švarc, I. Ždanov, Sedakova, Monastirski, Vasiljkova, Birjukov, Suvorov, Lakoba, Gandlevski, Al. Poležajev, Jeromonah Roman (Matjušin), Parščikov, Kibirov, Filipov, Novikov, Glavjuk, Zastirec, Cvelj, Maksimova, Elinjin, Korf, Golubničij, Poljakov, Amelin, Gronas, Ananičev, Zamšov, Kalinjin, Mogutin, Rižij, D. Sokolov... Izbor je napravljen u želji da se iz njega može ostvariti uvid u rusku poeziju na svim etapama njenog istorijskog razvoja, ali i da se može steći slika o umetničkoj vrednosti dela ruskih pesnika obuhvaćenih ovom antologijom. . Čitaj dalje

Prikaži sve...
813RSD
forward
forward
Detaljnije

An absolutely wonderful book for someone that has tried and failed to understand functional programming. William E. Wheeler Grokking Functional Programming is a practical book written especially for object-oriented programmers. It will help you map familiar ideas like objects and composition to FP concepts such as programming with immutable data and higher-order functions. You will learn how to write concurrent programs, how to handle errors and how to design your solutions with modularity and readability in mind. And you'll be pleased to know that we skip the academic baggage of lambda calculus, category theory, and the mathematical foundations of FP in favor of applying functional programming to everyday programming tasks. At the end of the book, you'll be ready to pick a functional language and start writing useful and maintainable software. Part 1: The Functional Toolkit 1 Learning functional programming 1.1 Perhaps you picked up this book because…​ 1.2 What do you need to know before we start? 1.3 How do functions look like? 1.4 Meet the function 1.5 When the code lies…​ 1.6 Imperative vs declarative 1.7 Coffee Break: imperative vs declarative 1.8 Coffee Break Explained: imperative vs declarative 1.9 How useful is learning functional programming? 1.10 Leaping into Scala 1.11 Practicing functions in Scala 1.12 Getting our tools ready 1.13 Getting to know the Scala REPL 1.14 Writing your first functions! 1.15 How to use this book? 1.16 Summary 2 Pure functions 2.1 Why do we need pure functions? 2.2 Coding imperatively 2.3 Passing copies of the data 2.4 Breaking the code…​ again 2.5 Recalculating instead of storing 2.6 Focusing on logic by passing the state 2.7 Where did all the state go? 2.8 Difference between impure & pure functions 2.9 Coffee Break: refactoring to a pure function 2.10 Coffee Break explained: refactoring to a pure function 2.11 In pure functions we trust 2.12 Difficulty of staying pure…​ 2.13 Pure functions and clean code 2.14 Coffee Break: pure or impure? 2.15 Coffee Break Explained: pure or impure? 2.16 Using Scala to write pure functions 2.17 Practicing pure functions in Scala 2.18 Testing pure functions 2.19 Coffee Break: testing pure functions 2.20 Coffee Break Explained: testing pure functions 2.21 Summary 3 Immutable values 3.1 The fuel for the engine 3.2 Another case for immutability 3.3 Can you trust this function? 3.4 Mutability is dangerous 3.5 Functions that lie…​ again 3.6 Fighting mutability by working with copies 3.7 Coffee Break: getting burnt by mutability 3.8 Coffee Break Explained: getting burnt by mutability 3.9 Introducing shared mutable state 3.10 State’s impact on programming abilities 3.11 Dealing with the moving parts 3.12 Dealing with the moving parts using FP 3.13 Immutable values in Scala 3.14 Building our intuitions about immutability 3.15 Coffee Break: The Immutable String API 3.16 Coffee Break Explained: The Immutable String API 3.17 Hold on…​ isn’t this bad? 3.18 Purely functional approach to the shared mutable state 3.19 Practicing immutable slicing and appending 3.20 Practicing immutable slicing and appending 3.21 Summary 4 Functions as values 4.1 Implementing requirements as functions 4.2 Impure functions and mutable values strike again 4.3 Using Java Streams to sort the list 4.4 Function signatures should tell the whole story 4.5 Changing the requirements 4.6 We just pass the code around! 4.7 Using Java’s Function values 4.8 Using Function syntax to deal with code duplication 4.9 Passing user-defined functions as arguments 4.10 Coffee Break: Functions as Parameters 4.11 Coffee Break Explained: Functions as Parameters 4.12 Problems with reading functional Java 4.13 Passing functions in Scala 4.14 Deep dive into sortBy 4.15 Solving the word ranking problem using Scala 4.16 Implementing a word ranker in Scala 4.17 Practicing function passing 4.18 Implementing a word ranker in a declarative way 4.19 Passing functions to custom-made functions 4.20 Small functions and their responsibilities 4.21 Passing functions inline 4.22 Coffee Break: Passing functions in Scala 4.23 Coffee Break Explained: Passing functions in Scala 4.24 What else can we achieve just by passing functions? 4.25 Applying a function to each element of a list 4.26 Applying a function to each element of a list using map 4.27 Getting to know map 4.28 Learn once, use everywhere 4.29 Returning parts of the list based on a condition 4.30 Returning parts of the list using filter 4.31 Getting to know filter 4.32 Practicing filter 4.33 Our journey so far…​ 4.34 Don’t repeat yourself? 4.35 Is my API easy to use? 4.36 Adding a new parameter is not enough 4.37 Functions can return functions 4.38 Using functions that can return functions 4.39 Coffee Break: Returning functions 4.40 Coffee Break Explained: Returning functions 4.41 Designing functional APIs 4.42 Iterative design of functional APIs 4.43 Returning functions from returned functions 4.44 How to return functions from returned functions? 4.45 Using the flexible API built with returned functions 4.46 Using multiple parameter lists in functions 4.47 Solution: Multiple parameter lists 4.48 We have been currying! 4.49 Practicing currying 4.50 Programming by passing function values 4.51 Reducing many values into one value 4.52 Reducing many values into one value using foldLeft 4.53 Getting to know foldLeft 4.54 foldLeft varia 4.55 Practicing foldLeft 4.56 Modeling immutable data 4.57 Using case classes with higher-order functions 4.58 More concise syntax for inline functions 4.59 Summary Part 2: The Functional Techniques 5 Pipelines & Comprehensions 6 Error Handling 7 Behaviors vs Data 8 Functions and Types 9 IO 10 Data Streams 11 Concurrency 12 Testing Part 3: Applied Functional Programming 13 Case Study #1 14 Case Study #2 15 Case Study #3 About the Technology Functional programming is more than just writing the same old code in Scala, Clojure, or Haskell. To grok FP—to really get it—you need to rewire your brain to see the world differently. We're here to help you flip the switch. Grokking Functional Programming teaches you first to break down problems in a new way so you can approach them from a FP mindset. Following carefully-selected examples with thorough, carefully-paced explanations, you'll immerse yourself in FP concept by concept. Along the way, exercises, checks for understanding, and even the occasional puzzler give you opportunities to think and practice what you're learning. What's inside Designing with functions and types instead of objects Multiple learning approaches to help you grok each new concept A practical programming-first teaching style Programming with pure functions & immutable values Writing concurrent programs with a functional style Testing functional programs About the reader The book assumes that the reader has at least one year of experience developing software using a mainstream object-oriented programming language like Java. While examples use Scala, this is not a Scala book. The concepts will apply to any FP language, and no prior knowledge of Scala or FP is required. About the author Michał Płachta started using Scala commercially in 2014 and has been an active contributor to the Scala and JVM communities since. He regularly speaks at conferences, runs workshops, and organizes meetups to help others become better at functional programming. You can find his blog at michalplachta.com.

Prikaži sve...
forward
Detaljnije

Da li mislite da unosite previše šećera? Koji procenat stanovništva vaše zemlje čine imigranti? Koliko košta podizanje deteta? Koliki porez plaćaju bogati? Koliko seksualnih partnera u proseku imaju muškarci, a koliko žene? Izdvojte minut da odgovorite na ova pitanja. Bez obzira na to koliko ste obrazovani, ova knjiga će pokazati da zapravo grešite. Bobi Dafi u ovoj fascinantnoj knjizi ispituje jedan od najrasprostranjenijih savremenih problema: činjenicu da mislimo kako je sve oko nas mnogo gore nego što u stvari jeste. Kroz niz najrazličitijih socijalnih pitanja poput dnevnog unosa šećera, gojaznosti, migrantske krize, sreće, seksa i maloletničkih trudnoća, Dafi otkriva ogroman jaz koji postoji između naše percepcije i stvarnosti, kao i implikacije tog nesklada u svetu postistine. Zasnovana na istraživanju u preko četrdeset zemalja i sprovođenju brojnih anketa, knjiga Zamke percepcije istražuje kako je došlo do toga da ne znamo osnovne činjenice o svetu koji nas okružuje, postavlja pred nas izazov suočavanja s našim pretpostavkama i pomaže nam da izgradimo neophodan kritički aparat u proceni „činjenica” s kojima se svakodnevno susrećemo. „Zanimljivo i dobro potkovano informacijama. Dafi nudi smireni glas razuma u jeku naše nervoze oko sveta postistine.“ - Lord Dejvid Vilets, izvršni predsednik fondacije Resolution „Sjajno štivo koje će vam omogućiti da bolje sagledate stvarnost. Ova knjiga će vam pomoći da razumete zašto je većina stvari koje mislite verovatno pogrešna.“ - Hetan Šah, izvršni direktor Kraljevskog statističkog udruženja „Fantastično: na svakoj stranici su šokantni i prosvetljujući statistički podaci. Zamke percepcije vas lako mogu naterati da preispitate svoja najukorenjenija stanovišta.“ - Džejmi Bartlet, autor dela The People Vs Tech Čitaj dalje

Prikaži sve...
660RSD
forward
forward
Detaljnije

SVETSKI BESTSELER. NAŠA NAJPRODAVANIJA KNJIGA U PRETPLATI U POSLEDNJIH 5 GODINA. NAUČITE PYTHON - BRZO! Python intenzivni kurs je najprodavaniji vodič na svetu za programski jezik Python. Uz ovaj dinamičan i temeljan priručnik ćete za čas posla pisati programe, rešavati probleme i razvijati funkcionalne aplikacije. Počećete učenjem osnovnih koncepata programiranja, kao što su promenljive, liste, klase i petlje i vežbati pisanje čistog koda na primerima uz svaku temu. Naučićete i da pišete interaktivne programe i da testirate svoj kod pre dodavanja u projekat. Novostečeno znanje ćete primeniti u praksi, kreiranjem arkadne igrice po uzoru na Space Invaders, izgradnjom skupa vizuelizacija podataka pomoću Python-ovih praktičnih biblioteka i razvijanjem jednostavne online aplikacije. Radom uz ovu knjigu naučićete da: koristite moćne Python biblioteke i alate, uključujući pytest, Pygame, Matplotlib, Plotly i Django pravite sve složenije 2D igrice koje reaguju na komande sa tastature i miša generišete interaktivne vizuelizacije podataka iz raznovrsnih skupova podataka gradite online aplikacije koje omogućavaju korisnicima da kreiraju naloge i upravljaju svojim podacima otkanjate greške u kodu i rešavate uobičajene programerske probleme Novo u ovom izdanju: ovo treće izdanje je u potpunosti prerađeno u skladu sa novostima u Python kodu. Novosti i ažuriranja pokrivaju VS Code za obradu teksta, pathlib modul za upravljanje fajlovima, pytest za testiranje koda, kao i najnovije funkcije za Matplotlib, Plotly i Django. Ako planirate da se oprobate u programiranju, Python intenzivni kurs će vas za tren oka obučiti da pišete prave programe. Zašto čekate? Startujte mašinu i kodirajte! O autoru Eric Matthes je 25 godina predavao srednjoškolcima matematiku i fiziku, kao i uvod u Python. Sada je uključen u brojne projekte otvorenog koda i profesionalno se bavi pisanjem i programiranjem. KRATAK SADRŽAJ I DEO: OSNOVE Poglavlje 1: Početak rada Poglavlje 2: Promenljive i jednostavni tipovi podataka Poglavlje 3: Predstavljanje listi Poglavlje 4: Korišćenje listi Poglavlje 5: Iskazi if Poglavlje 6: Rečnici Poglavlje 7: Korisnički unos i while petlje Poglavlje 8: Funkcije Poglavlje 9: Klase Poglavlje 10: Fajlovi i izuzeci Poglavlje 11: Testiranje koda II DEO: PROJEKTI Poglavlje 12: Brod koji ispaljuje metke Poglavlje 13: Vanzemaljci! Poglavlje 14: Bodovanje Poglavlje 15: Generisanje podataka Poglavlje 16: Preuzimanje podataka Poglavlje 17: Korišćenje API-ja Poglavlje 18: Korišćenje radnog okvira Django Poglavlje 19: Korisnički nalozi Poglavlje 20: Stilizovanje i raspoređivanje aplikacije Dodatak A: Instalacija i rešavanje problema Dodatak B: Uređivači teksta i IDE Dodatak C: Potražite pomoć Dodatak D: Korišćenje Git sistema za kontrolu verzija Dodatak E: Rešavanje problema pri raspoređivanju Indeks

Prikaži sve...
1,800RSD
forward
forward
Detaljnije

Code in Python using Jupyter and VS Code Explore the basics of coding – loops, variables, functions, and classes Deploy continuous integration with Git, Bash, and DVC Get to grips with Pandas, NumPy, and scikit-learn Perform data visualization with Matplotlib, Altair, and Datashader Create a package out of your code using poetry and test it with PyTest Make your machine learning model accessible to anyone with the web API Python is the most widely used programming language for building data science applications. Complete with step-by-step instructions, this book contains easy-to-follow tutorials to help you learn Python and develop real-world data science projects. The “secret sauce” of the book is its curated list of topics and solutions, put together using a range of real-world projects, covering initial data collection, data analysis, and production. This Python book starts by taking you through the basics of programming, right from variables and data types to classes and functions. You’ll learn how to write idiomatic code and test and debug it, and discover how you can create packages or use the range of built-in ones. You’ll also be introduced to the extensive ecosystem of Python data science packages, including NumPy, Pandas, scikit-learn, Altair, and Datashader. Furthermore, you’ll be able to perform data analysis, train models, and interpret and communicate the results. Finally, you’ll get to grips with structuring and scheduling scripts using Luigi and sharing your machine learning models with the world as a microservice. By the end of the book, you’ll have learned not only how to implement Python in data science projects, but also how to maintain and design them to meet high programming standards. Learn the basics of developing applications with Python and deploy your first data application Take your first steps in Python programming by understanding and using data structures, variables, and loops Delve into Jupyter, NumPy, Pandas, SciPy, and sklearn to explore the data science ecosystem in Python Table of contents 1 Preparing the Workspace Technical requirements Installing Python Downloading materials for running the code Working with VS Code Beginning with Jupyter Pre-flight check Summary Questions Further reading 2 First Steps in Coding - Variables and Data Types Technical requirements Assigning variables Naming the variable Understanding data types Converting the data types Exercise Summary Questions Further reading 3 Functions Technical requirements Understanding a function Defining the function Refactoring the temperature conversion Understanding anonymous (lambda) functions Understanding recursion Summary Questions Further reading 4 Data Structures Technical requirements What are data structures? More data structures Using generators Useful functions to use with data structures Comprehensions Summary Questions Further reading 5 Loops and Other Compound Statements Technical requirements Understanding if, else, and elif statements Running code many times with loops Handling exceptions with try/except and try/finally Understanding the with statements Summary Questions Further reading 6 First Script – Geocoding with Web APIs Technical requirements Geocoding as a service Learning about web APIs Working with the Nominatim API Caching with decorators Reading and writing data Moving code to a separate module Collecting NYC Open Data from the Socrata service Summary Questions Further reading 7 Scraping Data from the Web with Beautiful Soup 4 Technical requirements When there is no API Scraping WWII battles Beyond Beautiful Soup Summary Questions Further reading 8 Simulation with Classes and Inheritance Technical requirements Understanding classes Using classes in simulation Summary Questions Further reading 9 Shell, Git, Conda, and More – at Your Command Technical requirements Shell Git Conda Make Cookiecutter Summary Questions 10 Python for Data Applications Technical requirements Introducing Python for data science Exploring NumPy Beginning with pandas Trying SciPy and scikit-learn Understanding Jupyter Summary Questions 11 Data Cleaning and Manipulation Technical requirements Getting started with pandas Working with real data Getting to know regular expressions Parsing locations Time Belligerents Understanding casualties Quality assurance Writing the file Summary Questions Further reading 12 Data Exploration and Visualization Technical requirements Exploring the dataset Declarative visualization with vega and altair Big data visualization with datashader Summary Questions Further reading 13 Training a Machine Learning Model Technical requirements Understanding the basics of ML Summary Questions Further reading 14 Improving Your Model – Pipelines and Experiments Technical requirements Understanding cross-validation Exploring feature engineering Optimizing the hyperparameters Tracking your data and metrics with version control Summary Questions Further reading 15 Packaging and Testing with Poetry and PyTest Technical requirements Building a package A few ways to build your package Testing the code so far Automating the process with CI services Generating documentation generation with sphinx Installing a package in editable mode Summary Questions Further reading 16 Data Pipelines with Luigi Technical requirements Introducing the ETL pipeline Building our first task in Luigi Understanding time-based tasks Exploring the different output formats Expanding Luigi with custom template classes Summary Questions Further reading 17 Let's Build a Dashboard Technical requirements Building a dashboard – three types of dashboard Understanding dynamic dashboards Summary Questions Further reading 18 Serving Models with a RESTful API Technical requirements What is a RESTful API? Building a basic API service Building a web page Speeding up with asynchronous calls Deploying and testing your API loads with Locust Summary Questions Further reading 19 Serverless API Using Chalice Technical requirements Understanding serverless Getting started with Chalice Setting up a simple model Building a serverless API for an ML model Building a serverless function as a data pipeline Summary Questions Further reading 20 Best Practices and Python Performance Technical requirements Speeding up your Python code Using best practices for coding in your project Beyond this book – packages and technologies to look out for Summary Questions Further reading

Prikaži sve...
forward
Detaljnije

Proces džentrifikacije predstavlja vidljiv fenomen preobražaja savremenih gradova, koji sažima nekoliko ključnih dimenzija urbane transformacije: restrukturiranje ekonomije, nove modele upravljanja i planiranja u gradovima, ali i promene obrazaca socijalne stratifikacije i promene u životnim stilovima. Restrukturiranje ekonomije na globalnom nivou (nova internacionalna podela rada i deindustrijalizacija gradova, pre svega gradova najrazvijenijih zemalja, ali i najrazvijenijih gradova regionalnih i nacionalnih urbanih sistema manje razvijenih zemalja) podrazumeva porast udela i značaja servisne ekonomije i kulturne industrije i novu ulogu prostora potrošnje u oblikovanju gradova. Novi preduzetnički model upravljanja u gradovima predstavlja napuštanje menadžerskog modela i njegovu zamenu preduzetničkim modelom (Harvi, 2005). U preduzetničkom gradu ostvaruje se partnerstvo javnog sektora sa privatnim sektorom (firmama i investitorima), a u planiranju gradova veću ulogu dobijaju brendiranje prostora i reklamiranje grada kao robe. Promena obrazaca socijalne stratifikacije (porast servisne i kreativne klase) uslovila je diverzifikaciju društvenih vrednosti i manifestaciju različitih životnih stilova u urbanom prostoru. Pojam džentrifikacije prvi put je upotrebila Ruth Glass 1964. godine u sociološkoj studiji London: Aspects of Change. Nakon toga, taj fenomen je teorijski i empirijski dosta proučavan, ali nije uspostavljena teorija džentrifikacije niti je postignuta saglasnost oko definicije ovog pojma. Najjednostavnije džentrifikacija se može definisati kao proces u kojem dolazi do menjanja fizičke strukture (stambenih) objekata, ili njihove namene (ako do tada objekti nisu sadržali stambenu funkciju), na centralnim gradskim lokacijama, koju prati promena socijalnih karakteristika ljudi kojima su ti renovirani ili novi objekti namenjeni. Džentrifikacija se posmatra kao prostorna refleksija ključnih socioekonomskih procesa u savremenom gradu jer ključne društvene promene (postfordizam i postmodernizam) uslovljavaju i oblikuju njeno ispoljavanje. U objašnjenjima procesa džentrifikacije mogu se izdvojiti dva osnovna pristupa: objašnjenja (ponude) koja polaze od strukturnih promena (restrukturiranja urbane ekonomije – kruženja kapitala) koje stvaraju prostor i imovinu pogodnu za džentrifikaciju, i objašnjenja koja polaze od tražnje – delanja (izbora) aktera koji stvaraju ili koriste džentrifikovane prostore. Idealnotipski moguće je razlikovati pionirsku, profitabilnu i posredovanu džentrifikaciju. U pionirskoj džentrifikaciji, akteri su uglavnom umetnici koji adaptiraju radni i životni prostor čime džentrifikuju susedstvo. U slučaju profitabilne džentrifikacije investitori i građevinske firme grade rezidencijalne objekte koji su namenjeni pripadnicima (nove) srednje klase (servisne i/ili kreativne klase), dok u posredovanoj džentrifikaciji proces iniciraju nacionalne ili lokalne vlasti. Namera ove knjige je analiza i sistematizacija teorijskih koncepata koji se koriste u objašnjavanju procesa džentrifikacije, prvenstveno analiza koncepata koji pripadaju opštoj odnosno urbanoj sociologiji. Analizira se način na koji su oni interpretirani, procenjuje se njihova primenjivost u različitim društvenim kontekstima, ali i njihov doprinos razumevanju ovog fenomena. Ciljevi takve analize su da se ukaže da je za razumevanje nastanka fenomena, njegovog širenja, posebno prelaska pionirske u profitabilnu džentrifikaciju neophodno kombinovanje strukturne i akterske perspektive (neomarksističkog i neoveberijanskog pristupa). Zatim, da se pokaže kako se dihotomija struktura-akteri prelama i kroz određivanje socijalnog položaja aktera džentrifikacije (džentrifikatora) u zavisnosti da li se njihov polažaj određuje strukturno (društvenim položajem), ili posredstvom životnog stila, kao oblasti individualnog izbora. Takođe, da se istakne značajan doprinos teorija kapitala (kulturnog, ekonomskog, socijalnog i simboličkog) u proučavanaju fenomena džentrifikacije. Kako je ispitivanje džentrifikacije nepotpuno bez analize socijalnih posledica na nivou susedstva i grada, pri proceni socijalnih efekata fenomena džentrifikacije (homogenizaciji susedstva, privatizaciji i fragmentaciji urbanog prostora) primenjuju se koncepti urbaniteta i socijalne kohezije. Sledeći geografiju džentrifikacije, jedan od ciljeva ove knjige je procenjivanje mogućnosti primene pojmova koji se povezuju sa fenomenom džentrifikacije u svetskim gradovima (fenomen je najizraženiji i najviše istraživan u najrazvijenijim gradovima, posebno u Njujorku i Londonu), kako bi se ukazalo da li neke socioprostorne promene u postsocijalističkim gradovima spadaju u fenomen džentrifikacije. Koncepti su uvek kontekstualizovani jer fenomen ima drugačija ispoljavanja na različitim prostorima i u različitim vremenskim periodima. Knjiga Džentrifikacija kao socioprostorni fenomen savremenog grada se sastoji iz sedam poglavlja. Nakon uvoda u drugom poglavlju Džentrifikacija kao socioprostorna refleksija ključnih socioekonomskih procesa u savremenom gradu, ukazuje se na ključne društvene promene koje uslovljavaju i oblikuju proces džentrifikacije. Osim toga, analiziraju se i bliski pojmovi urbane obnove i urbane revitalizacije. U poglavlju: Dominantni pristupi u objašnjavanju procesa džentrifikacije, džentrifikacija se osvetljava iz perspektive dva osnovna sociološka pristupa: strukturnog, pre svega, neomarksističkog i neoveberijanskog pristupa. U četvrtom poglavlju Matrice socioloških koncepata značajnih za razumevanje fenomena džentrifikacije, analiza fenomena se odvija na dva nivoa: nivo grada – transformacije urbanog prostora i individualni nivo – ponašanje džentrifikatora. U delu Struktura vs akteri analiziraju se mogućnosi primene Lefevrovog shvatanja proizvodnje prostora i Harvijevog simboličkog kapitala na prostorni aspekt fenomena džentrifikacije – grad i susedstvo. Korišćenjem Burdijeove teorije teži se razumevanju ponašanja prvih džentrifikatora (aktera tražnje), koji su značajni za pokretanje džentrifikacije (Ley, 1996, Zukin, 1989). Uloga aktera ponude (Smith, 1996) je, s druge strane, ključna za širenje procesa i nastanak profitabilne džentrifikacije. U poglavlju Klasa vs životni stil problematizuju se klasno/slojna pozicija džentrifikatora i povezanost džentrifikacije sa klasnim konstituisanjem. Zatim se, dominantno iz burdijeovske perspektive, analizira životni stil džentrifikatora. Nakon toga, u poglavlju Teorije kapitala – kulturni, ekonomski, socijalni i simbolički kapital, razmatraju se mogućnosti primene teorija kapitala (kulturnog, ekonomskog, socijalnog i simboličkog) na različite aspekte džentrifikacije. U četvrtom delu ovog poglavlja Urbanitet grada i džentrifikacija, ispituju se socijalne posledice fenomena džentrifikacije na prostor susedstva i grada, kao i povezanost džentrifikacije sa komercijalizacijom, privatizacijom i fragmentacijom gradskog prostora. U sledećem poglavlju: Diverzifikacija fenomena džentrifikacije, analiza se pomera na kontekstualnu ravan, i bavi se složenošću džentrifikacije kao globalnog i lokalnog fenomena u pogledu dve dimenzije: vremenske (faze kroz koje prolazi proces džentrifikacije) i prostorne (osobenosti procesa u gradovima različitog nivoa razvijenosti). U šestom odeljku Džentrifikacija u postsocijalističkim gradovima otvara se pitanje o specifičnosti džentrifikacije u postsocijalističkim gradovima. Namera ovog poglavlja jeste dalje određenje fenomena džentrifikacije, u pogledu neophodnih i dovoljnih uslova da se neke socioprostorne promene smatraju džentrifikacijom, posebno imajući u vidu specifičnost socioprostorne transformacije postsocijalističkih gradova. U ovom poglavlju analiza se spušta na najkonkretniji empirijski nivo, i zasniva na analizi dostupnih podataka (iz različitih izvora: statistički podaci, empirijska istraživanja, i sl.). U zaključku se sumiraju osnovni nalazi sprovedene analize.

Prikaži sve...
704RSD
forward
forward
Detaljnije

Create a RESTful web service with Spring Boot Grasp the fundamentals of dependency injection and how to use it for backend development Discover techniques for securing the backend using Spring Security Understand how to use React for frontend programming Benefit from the Heroku cloud server by deploying your application to it Delve into the techniques for creating unit tests using JUnit Explore the Material UI component library to make more user-friendly user interfaces React Hooks have changed the way React components are coded. They enable you to write components in a more intuitive way without using classes, which makes your code easier to read and maintain. Building on from the previous edition, this book is updated with React Hooks and the latest changes introduced in create-react-app and Spring Boot 2.1. This book starts with a brief introduction to Spring Boot. You’ll understand how to use dependency injection and work with the data access layer of Spring using Hibernate as the ORM tool. You’ll then learn how to build your own RESTful API endpoints for web applications. As you advance, the book introduces you to other Spring components, such as Spring Security to help you secure the backend. Moving on, you’ll explore React and its app development environment and components for building your frontend. Finally, you’ll create a Docker container for your application by implementing the best practices that underpin professional full stack web development. By the end of this book, you’ll be equipped with all the knowledge you need to build modern full stack applications with Spring Boot for the backend and React for the frontend. Unleash the power of React Hooks to build interactive and complex user interfaces Build scalable full stack applications designed to meet demands of modern users Understand how the Axios library simplifies CRUD operations Table of contents 1 Setting Up the Environment and Tools - Backend Technical requirements Setting up the environment and tools Summary Questions Further reading 2 Dependency Injection Technical requirements Introducing DI Summary Questions Further reading 3 Using JPA to Create and Access a Database Technical requirements Basics of ORM, JPA, and Hibernate Summary Questions Further reading 4 Creating a RESTful Web Service with Spring Boot Technical requirements Basics of REST Summary Questions Further reading 5 Securing and Testing Your Backend Technical requirements Spring Security Securing your backend using JWT Testing in Spring Boot Creating unit tests Summary Questions Further reading 6 Setting Up the Environment and Tools - Frontend Technical requirements Installing Node.js Installing VS Code Creating and running a React app Summary Questions Further reading 7 Getting Started with React Technical requirements Basic React components Basics of ES6 JSX and styling Props and the state Component life cycle methods Stateless components React hooks Handling lists with React Handling events with React Handling forms with React Summary Questions Further reading 8 Consuming the REST API with React Technical requirements Using promises Using the fetch API Using the axios library Practical examples Summary Questions Further reading 9 Useful Third-Party Components for React Technical requirements Using third-party React components React Table Material-UI component library Routing Summary Questions Further reading 10 Setting Up the Frontend for Our Spring Boot RESTful Web Service Technical requirements Mocking up the UI Preparing the Spring Boot backend Creating the React project for the frontend Summary Questions Further reading 11 Adding CRUD Functionalities Technical requirements Creating the list page The delete functionality The add functionality The edit functionality Other functionalities Summary Questions Further reading 12 Styling the Frontend with React Material-UI Technical requirements Using the Button component Using the Grid component Using the TextField components Summary Questions Further reading 13 Testing Your Frontend Technical requirements Using Jest Snapshot testing Using Enzyme Summary Questions Further reading 14 Securing Your Application Technical requirements Securing the backend Securing the frontend Summary Questions Further reading 15 Deploying Your Application Technical requirements Deploying the backend Deploying the frontend Using Docker containers Summary Questions Further reading 16 Best Practices What to learn next Best practices Summary Questions Further reading

Prikaži sve...
forward
Detaljnije

Teaches by example, demonstrating concepts through compelling projects that illuminate realistic use cases. From the Foreword by Gray Norton, Polymer Project, Google Web Components are a standardized way to build reusable custom elements for web pages and applications using HTML, CSS, and JavaScript. A Web Component is well-encapsulated, keeping its internal structure separate from other page elements so they don’t collide with the rest of your code. In Web Components in Action you’ll learn to design, build, and deploy reusable Web Components from scratch. Part 1: First steps 1 The framework without a framework 1.1 What are Web Components? 1.1.1 The date picker 1.1.2 The Shadow DOM 1.1.3 What do people mean when they say Web Components? 1.1.4 The problematic history of HTML Imports 1.1.5 Polymer Library and X-Tags 1.1.6 Modern Web Components 1.2 The future of Web Components 1.3 Beyond the single component 1.3.1 Web Components are just like any other DOM element 1.3.2 From individual component to application 1.4 Your project, your choice 1.5 Summary 2 Your first Web Component 2.1 Intro to HTMLElement 2.1.1 Crash course in inheritance 2.1.2 Inheritance in your favorite elements 2.2 Rules for naming your element 2.3 Defining your custom element (and handling collisions) 2.4 Extending HTMLElement to create custom component logic 2.5 Using your custom element in practice 2.6 Making a (useful) first component 2.6.1 Set up your web server 2.6.2 Writing our HTML tag 2.6.3 Creating our class 2.6.4 Adding content to our component 2.6.5 Styling our component 2.6.6 Component logic 2.6.7 Adding interactivity 2.6.8 Finishing touches 2.6.9 Improving the carousel 2.7 Notes on browser support 2.8 Summary 3 Making your component reuseable 3.1 A real-world component 3.1.1 A 3D search use case 3.1.2 Starting with an HTTP request 3.1.3 Wrapping our work up in a custom component 3.1.4 Rendering search results 3.1.5 Styling our component 3.2 Making our component configurable 3.2.1 Creating our component API with setters 3.2.2 Using our API from the outside looking in 3.3 Using attributes for configuration 3.3.1 An argument against a component API for configuration 3.3.2 Implementing attributes 3.3.3 Case sensitivity 3.4 Listening for attribute changes 3.4.1 Adding text input 3.4.2 The attribute changed callback 3.4.3 Observed attributes 3.5 Making more things even more customizable 3.5.1 Using hasAttribute to check if an attribute exists 3.5.2 Fully customizing the HTTP request URL for development 3.5.3 Best practice guides 3.5.4 Avoiding attributes for rich data 3.5.5 Property and attribute reflection 3.6 Updating the slider component 3.7 Summary 4 The component lifecycle 4.1 The Web Components API 4.2 The connectedCallback handler 4.2.1 Constructor vs. connected 4.3 The remaining Web Component lifecycle methods 4.3.1 Disconnected callback 4.3.2 Adopted callback 4.4 Comparing to React’s lifecycle 4.5 Comparing to a game engine lifecycle 4.6 Component lifecycle v0 4.7 Summary 5 Instrumenting a better web app through modules 5.1 Using the script tag to load your Web Components 5.1.1 Having to deal with many JS and CSS references 5.1.2 Tiny scripts are more organized, but make the reference problem worse 5.1.3 Including CSS for self-reliant components 5.1.4 Dependency hell 5.2 Using modules to solve dependency problems 5.2.1 Creating a musical instrument with Web Components and JS modules 5.2.2 Starting with the smallest component 5.2.3 Importing and nesting a Web Component within a Web Component 5.2.4 Using a Web Component to wrap an entire web application 5.3 Adding interactivity to our component 5.3.1 Listening for mouse movement 5.3.2 Passing data to child components 5.3.3 Making your components shake with CSS 5.4 Wrapping third-party libraries as modules 5.4.1 Frontend tooling for wrapping a module with Node.js 5.4.2 Not perfect, but does the job 5.4.3 Using the wrapped module to play some notes 5.4.4 No more audio autoplay 5.4.5 Playing the Web Harp 5.5 Summary Part 2: Ways to Improve your Component Workflow 6 Markup managed 6.1 String theory 6.1.1 When inline HTML gets ugly 6.1.2 String syntax with the backtick 6.2 Using template literals 6.2.1 Business card creator 6.2.2 Iterating design with just HTML and CSS 6.3 Importing templates 6.3.1 Keeping markup out of the main component logic 6.3.2 A module just for HTML and CSS 6.4 Template logic 6.4.1 Creating menus from data 6.4.2 More generation logic, harder automation 6.5 Element caching 6.5.1 Don’t make me query-select in my component 6.6 Smart templating 6.6.1 Using lit-html 6.6.2 Repeating with templates 6.6.3 Should you use it? 6.6.4 Injecting event listeners into markup 6.7 Updating the slider component 6.8 Summary 7 Templating your content with HTML 7.1 R.I.P. HTML Imports 7.1.1 Polyfilling HTML Imports 7.1.2 What’s inside the import 7.2 The template tag 7.2.1 Document fragments 7.2.2 Using template content 7.3 Choose your own template adventure 7.4 Dynamically loading templates 7.5 Entering the Shadow DOM with slots 7.5.1 Slots without a name 7.6 Summary 8 The Shadow DOM 8.1 Encapsulation 8.1.1 Protecting your component’s API 8.1.2 Protecting your component’s DOM 8.2 Enter the Shadow DOM 8.2.1 The shadow root 8.2.2 Closed mode 8.2.3 Your component’s constructor vs. connectedCallback 8.3 The Shadow DOM today 8.4 Summary 9 Shadow CSS 9.1 Style creep 9.1.1 Style creep into component descendants 9.1.2 Style creep into your component 9.2 Style creep solved with the Shadow DOM 9.2.1 When styles creep 9.3 Shadow DOM workout plan 9.3.1 Application shell 9.3.2 Host and ID selectors 9.3.3 Grid and list containers 9.4 Adaptable components 9.4.1 Creating the exercise component 9.4.2 Exercise component style 9.5 Updating the slider component 9.6 Summary 10 Shadow CSS rough edges 10.1 Contextual CSS 10.1.1 A small bit of interactivity 10.1.2 Contextual style 10.1.3 Workaround for host-context 10.2 Component themes 10.2.1 Shadow and deep selectors 10.2.2 CSS Variables 10.2.3 Applying CSS Variables to our demo 10.3 Using the Shadow DOM in practice (today) 10.3.1 Browser support 10.3.2 Polyfilling 10.3.3 Design systems 10.4 Summary Part 3: Putting your components together 11 A real-world UI component 11.1 Crafting a color picker 11.1.1 The components of our component 11.2 Coordinate picker component 11.2.1 The coordinate picker Web Component class 11.2.2 Coordinate picker HTML/CSS 11.2.3 Component demos 11.3 The color picker 11.3.1 Observing attribute changes for interaction 11.3.2 Responding to input fields 11.3.3 Responding to attribute changes 11.4 Adding a common design language 11.4.1 Swapping in CSS vars for a consistent design 11.4.2 Using imports for more complex CSS 11.5 Summary 12 Building and supporting older browsers 12.1 Backwards compatibility 12.1.1 Toggling the Shadow DOM 12.1.2 Comparing to polyfills 12.1.3 Shadow CSS and child elements 12.2 Building for the least common denominator 12.3 Build processes 12.3.1 Using NPM scripts 12.4 Building components 12.4.1 Why we build 12.4.2 Module bundling with Rollup 12.4.3 Running builds with npm 12.5 Transpiling for IE 12.5.1 Babel 12.5.2 CSS var ponyfill 12.6 Summary 13 Component testing 13.1 Unit testing and TDD 13.2 Web Component tester 13.2.1 Writing tests 13.3 Comparing to a standard test setup with Karma 13.3.1 Karma Web Components 13.3.2 Multiple tests in the same project 13.3.3 A note on Safari 13.4 Summary 14 Events and application data flow 14.1 Framework offerings 14.2 Events 14.2.1 Native events and WebComponentsReady 14.2.2 When custom elements are defined 14.2.3 Custom Events 14.2.4 Custom Event bubbling 14.3 Passing events through Web Components 14.3.1 Native event propagation through the Shadow DOM 14.3.2 Custom Event propagation through the Shadow DOM 14.4 Separate your data 14.4.1 Model-view-controller 14.4.2 Local storage 14.4.3 Wiring UI to the data model 14.5 Exercise playback view 14.6 Passing events with an event bus 14.6.1 Static getter event types 14.6.2 Design patterns as suggestions 14.7 Summary 15 Hiding your complexities 15.1 Looking to the Web Component future 15.2 3D and mixed reality 15.2.1 A-Frame 15.2.2 Model viewer component 15.2.3 Model-viewer + Poly search 15.2.4 AR with model-viewer 15.2.5 Your own 3D component 15.3 Video effects 15.3.1 Processing pixels with JS 15.3.2 WebGL shaders 15.4 Hand tracking and machine learning 15.5 Summary Appendixes Appendix A: ES2015 for Web Components A.1 What is ES2015? A.2 Rethinking variables with ES2015 A.2.1 Variable declaration with let A.2.2 Variable declaration with const A.2.3 Important by convention but not functionality A.3 Classes A.3.1 Constructor A.3.2 Properties A.3.3 Private properties in JS A.3.4 Getters and setters A.3.5 Static methods A.4 Modules A.4.1 Top-level objects in JS A.4.2 Module syntax for importing and exporting A.4.3 Working with multiple functions in the same module A.5 Template literals A.5.1 Inserting variables into a template literal A.6 The fat arrow A.6.1 The callback scope problem A.6.2 Losing scope in classes A.6.3 Managing scope with the fat arrow About the Technology The right UI can set your sites and web applications apart from the ordinary. Using the Web Components API, you can build Custom Elements and then add them to your pages with just a simple HTML tag. This standards-based design approach gives you complete control over the style and behavior of your components and makes them radically easier to build, share, and reuse between projects. About the book Web Components in Action teaches you to build and use Web Components from the ground up. You’ll start with simple components and component-based applications, using JavaScript, HTML, and CSS. Then, you’ll customize them and apply best design practices to maximize reusability. Through hands-on projects, you’ll learn to build production-ready Web Components for any project, including color pickers, advanced applications using 3D models, mixed reality, and machine learning. What's inside Creating reusable Custom Elements without a framework Using the Shadow DOM for ultimate component encapsulation Leveraging newer JS features to organize and reuse code Fallback strategies for using Web Components on older browsers About the reader Written for web developers experienced with HTML, CSS, and JavaScript. About the author Ben Farrell is a Senior Experience Developer at Adobe working on the Adobe Design Prototyping Team.

Prikaži sve...
forward
Detaljnije

A complete guide to the challenges and solutions in securing microservices architectures. Massimo Siani, FinDynamic Unlike traditional enterprise applications, Microservices applications are collections of independent components that function as a system. Securing the messages, queues, and API endpoints requires new approaches to security both in the infrastructure and the code. Microservices Security in Action teaches you how to address microservices-specific security challenges throughout the system. This practical guide includes plentiful hands-on exercises using industry-leading open-source tools and examples using Java and Spring Boot. About the Technology Integrating independent services into a single system presents special security challenges in a microservices deployment. With proper planning, however, you can build in security from the start. Learn to create secure services and protect application data throughout development and deployment. As microservices continue to change enterprise application systems, developers and architects must learn to integrate security into their design and implementation. Because microservices are created as a system of independent components, each a possible point of failure, they can multiply the security risk. With proper planning, design, and implementation, you can reap the benefits of microservices while keeping your application data—and your company's reputation—safe! About the book Microservices Security in Action is filled with solutions, teaching best practices for throttling and monitoring, access control, and microservice-to-microservice communications. Detailed code samples, exercises, and real-world use cases help you put what you've learned into production. Along the way, authors and software security experts Prabath Siriwardena and Nuwan Dias shine a light on important concepts like throttling, analytics gathering, access control at the API gateway, and microservice-to-microservice communication. You'll also discover how to securely deploy microservices using state-of-the-art technologies including Kubernetes, Docker, and the Istio service mesh. Lots of hands-on exercises secure your learning as you go, and this straightforward guide wraps up with a security process review and best practices. When you're finished reading, you'll be planning, designing, and implementing microservices applications with the priceless confidence that comes with knowing they're secure! Part 1: Overview 1 Microservices security landscape 1.1 How security works in a monolithic application 1.2 Challenges of securing microservices 1.2.1 The broader the attack surface, the higher the risk of attack 1.2.2 Distributed security screening may result in poor performance 1.2.3 Deployment complexities make bootstrapping trust among microservices a nightmare 1.2.4 Requests spanning multiple microservices are harder to trace 1.2.5 Immutability of containers challenges how you maintain service credentials and access-control policies 1.2.6 The distributed nature of microservices makes sharing user context harder 1.2.7 Polyglot architecture demands more security expertise on each development team 1.3 Key security fundamentals 1.3.1 Authentication protects your system against spoofing 1.3.2 Integrity protects your system from data tampering 1.3.3 Nonrepudiation: Do it once, and you own it forever 1.3.4 Confidentiality protects your systems from unintended information disclosure 1.3.5 Availability: Keep the system running, no matter what 1.3.6 Authorization: Nothing more than you’re supposed to do 1.4 Edge security 1.4.1 The role of an API gateway in a microservices deployment 1.4.2 Authentication at the edge 1.4.3 Authorization at the edge 1.4.4 Passing client/end-user context to upstream microservices 1.5 Securing service-to-service communication 1.5.1 Service-to-service authentication 1.5.2 Service-level authorization 1.5.3 Propagating user context among microservices 1.5.4 Crossing trust boundaries Summary 2 First steps in securing microservices 2.1 Building your first microservice 2.1.1 Downloading and installing the required software 2.1.2 Clone samples repository 2.1.3 Compiling the Order Processing microservice 2.1.4 Accessing the Order Processing microservice 2.1.5 What is inside the source code directory? 2.1.6 Understanding the source code of the microservice 2.2 Setting up an OAuth 2.0 server 2.2.1 The interactions with an authorization server 2.2.2 Running the OAuth 2.0 authorization server 2.2.3 Getting an access token from the OAuth 2.0 authorization server 2.2.4 Understanding the access token response 2.3 Securing a microservice with OAuth 2.0 2.3.1 Security based on OAuth 2.0 2.3.2 Running the sample 2.4 Invoking a secured microservice from a client application 2.5 Performing service-level authorization with OAuth 2.0 scopes 2.5.1 Obtaining a scoped access token from the authorization server 2.5.2 Protecting access to a microservice with OAuth 2.0 scopes Summary Part 2: Edge security 3 Securing north/south traffic with an API gateway 3.1 The need for an API gateway in a microservices deployment 3.1.1 Decoupling security from the microservice 3.1.2 The inherent complexities of microservice deployments make them harder to consume 3.1.3 The rawness of microservices does not make them ideal for external exposure 3.2 Security at the edge 3.2.1 Understanding the consumer landscape of your microservices 3.2.2 Delegating access 3.2.3 Why not basic authentication to secure APIs? 3.2.4 Why not mutual TLS to secure APIs? 3.2.5 Why OAuth 2.0? 3.3 Setting up an API gateway with Zuul 3.3.1 Compiling and running the Order Processing microservice 3.3.2 Compiling and running the Zuul proxy 3.3.3 Enforcing OAuth 2.0-based security at the Zuul gateway 3.4 Securing communication between Zuul and the microservice 3.4.1 Preventing access through the firewall 3.4.2 Securing the communication between the API gateway and microservices by using mutual TLS Summary 4 Accessing a secured microservice via a single-page application 4.1 Running a single-page application with Angular 4.1.1 Building and running an Angular application from the source code 4.1.2 Looking behind the scenes of a single-page application 4.2 Setting up cross-origin resource sharing 4.2.1 Using the same-origin policy 4.2.2 Using cross-origin resource sharing 4.2.3 Inspecting the source that allows cross-origin requests 4.2.4 Proxying the resource server with an API gateway 4.3 Securing a SPA with OpenID Connect 4.3.1 Understanding the OpenID Connect login flow 4.3.2 Inspecting the code of the applications 4.4 Using federated authentication 4.4.1 Multiple trust domains 4.4.2 Building trust between domains Summary 5 Engaging throttling, monitoring, and access control 5.1 Throttling at the API gateway with Zuul 5.1.1 Quota-based throttling for applications 5.1.2 Fair usage policy for users 5.1.3 Applying quota-based throttling to the Order Processing microservice 5.1.4 Maximum handling capacity of a microservice 5.1.5 Operation-level throttling 5.1.6 Throttling the OAuth 2.0 token and authorize endpoints 5.1.7 Privilege-based throttling 5.2 Monitoring and analytics with Prometheus and Grafana 5.2.1 Monitoring the Order Processing microservice 5.2.2 Behind the scenes of using Prometheus for monitoring 5.3 Enforcing access-control policies at the API gateway with Open Policy Agent 5.3.1 Running OPA as a Docker container 5.3.2 Feeding the OPA engine with data 5.3.3 Feeding the OPA engine with access-control policies 5.3.4 Evaluating OPA policies 5.3.5 Next steps in using OPA Summary Part 3: Service-to-service communications 6 Securing east/west traffic with certificates 6.1 Why use mTLS? 6.1.1 Building trust between a client and a server with a certificate authority 6.1.2 Mutual TLS helps the client and the server to identify each other 6.1.3 HTTPS is HTTP over TLS 6.2 Creating certificates to secure access to microservices 6.2.1 Creating a certificate authority 6.2.2 Generating keys for the Order Processing microservice 6.2.3 Generating keys for the Inventory microservice 6.2.4 Using a single script to generate all the keys 6.3 Securing microservices with TLS 6.3.1 Running the Order Processing microservice over TLS 6.3.2 Running the Inventory microservice over TLS 6.3.3 Securing communications between two microservices with TLS 6.4 Engaging mTLS 6.5 Challenges in key management 6.5.1 Key provisioning and bootstrapping trust 6.5.2 Certificate revocation 6.6 Key rotation 6.7 Monitoring key usage Summary 7 Securing east/west traffic with JWT 7.1 Use cases for securing microservices with JWT 7.1.1 Sharing user context between microservices with a shared JWT 7.1.2 Sharing user context with a new JWT for each service-to-service interaction 7.1.3 Sharing user context between microservices in different trust domains 7.1.4 Self-issued JWTs 7.1.5 Nested JWTs 7.2 Setting up an STS to issue a JWT 7.3 Securing microservices with JWT 7.4 Using JWT as a data source for access control 7.5 Securing service-to-service communications with JWT 7.6 Exchanging a JWT for a new one with a new audience Summary 8 Securing east/west traffic over gRPC 8.1 Service-to-service communications over gRPC 8.2 Securing gRPC service-to-service communications with mTLS 8.3 Securing gRPC service-to-service communications with JWT Summary 9 Securing reactive microservices 9.1 Why reactive microservices? 9.2 Setting up Kafka as a message broker 9.3 Developing a microservice to push events to a Kafka topic 9.4 Developing a microservice to read events from a Kafka topic 9.5 Using TLS to protect data in transit 9.5.1 Creating and signing the TLS keys and certificates for Kafka 9.5.2 Configuring TLS on the Kafka server 9.5.3 Configuring TLS on the microservices 9.6 Using mTLS for authentication 9.7 Controlling access to Kafka topics with ACLs 9.7.1 Enabling ACLs on Kafka and identifying the clients 9.7.2 Defining ACLs on Kafka 9.8 Setting up NATS as a message broker Summary Part 4: Secure deployment 10 Conquering container security with Docker 10.1 Running the security token service on Docker 10.2 Managing secrets in a Docker container 10.2.1 Externalizing secrets from Docker images 10.2.2 Passing secrets as environment variables 10.2.3 Managing secrets in a Docker production deployment 10.3 Using Docker Content Trust to sign and verify Docker images 10.3.1 The Update Framework 10.3.2 Docker Content Trust 10.3.3 Generating keys 10.3.4 Signing with DCT 10.3.5 Signature verification with DCT 10.3.6 Types of keys used in DCT 10.3.7 How DCT protects the client application from replay attacks 10.4 Running the Order Processing microservice on Docker 10.5 Running containers with limited privileges 10.5.1 Running a container with a nonroot user 10.5.2 Dropping capabilities from the root user 10.6 Running Docker Bench for security 10.7 Securing access to the Docker host 10.7.1 Enabling remote access to the Docker daemon 10.7.2 Enabling mTLS at the NGINX server to secure access to Docker APIs 10.8 Considering security beyond containers Summary 11 Securing microservices on Kubernetes 11.1 Running an STS on Kubernetes 11.1.1 Defining a Kubernetes Deployment for the STS in YAML 11.1.2 Creating the STS Deployment in Kubernetes 11.1.3 Troubleshooting the Deployment 11.1.4 Exposing the STS outside the Kubernetes cluster 11.2 Managing secrets in a Kubernetes environment 11.2.1 Using ConfigMap to externalize configurations in Kubernetes 11.2.2 Defining a ConfigMap for application.properties file 11.2.3 Defining ConfigMaps for keystore.jks and jwt.jks files 11.2.4 Defining a ConfigMap for keystore credentials 11.2.5 Creating ConfigMaps by using the kubectl client 11.2.6 Consuming ConfigMaps from a Kubernetes Deployment 11.2.7 Loading keystores with an init container 11.3 Using Kubernetes Secrets 11.3.1 Exploring the default token secret in every container 11.3.2 Updating the STS to use Secrets 11.3.3 Understanding how Kubernetes stores Secrets 11.4 Running the Order Processing microservice in Kubernetes 11.4.1 Creating ConfigMaps/Secrets for the Order Processing microservice 11.4.2 Creating a Deployment for the Order Processing microservice 11.4.3 Creating a Service for the Order Processing microservice 11.4.4 Testing the end-to-end flow 11.5 Running the Inventory microservice in Kubernetes 11.6 Using Kubernetes service accounts 11.6.1 Creating a service account and associating it with a Pod 11.6.2 Benefits of running a Pod under a custom service account 11.7 Using role-based access control in Kubernetes 11.7.1 Talking to the Kubernetes API server from the STS 11.7.2 Associating a service account with a ClusterRole Summary 12 Securing microservices with Istio service mesh 12.1 Setting up the Kubernetes deployment 12.1.1 Enabling Istio autoinjection 12.1.2 Clean up any previous work 12.1.3 Deploying microservices 12.1.4 Redeploying Order Processing and STS as NodePort Services 12.1.5 Testing end-to-end flow 12.2 Enabling TLS termination at the Istio Ingress gateway 12.2.1 Deploying TLS certificates to the Istio Ingress gateway 12.2.2 Deploying VirtualServices 12.2.3 Defining a permissive authentication policy 12.2.4 Testing end-to-end flow 12.3 Securing service-to-service communications with mTLS 12.4 Securing service-to-service communications with JWT 12.4.1 Enforcing JWT authentication 12.4.2 Testing end-to-end flow with JWT authentication 12.4.3 Peer authentication and request authentication 12.4.4 How to use JWT in service-to-service communications 12.4.5 A closer look at JSON Web Key 12.5 Enforcing authorization 12.5.1 A closer look at the JWT 12.5.2 Enforcing role-based access control 12.5.3 Testing end-to-end flow with RBAC 12.5.4 Improvements to role-based access control since Istio 1.4.0 12.6 Managing keys in Istio 12.6.1 Key provisioning and rotation via volume mounts 12.6.2 Limitations in key provisioning and rotation via volume mounts 12.6.3 Key provisioning and rotation with SDS Summary Part 5: Secure development 13 Secure coding practices and automation 13.1 OWASP API security top 10 13.1.1 Broken object-level authorization 13.1.2 Broken authentication 13.1.3 Excessive data exposure 13.1.4 Lack of resources and rate limiting 13.1.5 Broken function-level authorization 13.1.6 Mass assignment 13.1.7 Security misconfiguration 13.1.8 Injection 13.1.9 Improper asset management 13.1.10 Insufficient logging and monitoring 13.2 Running static code analysis 13.3 Integrating security testing with Jenkins 13.3.1 Setting up and running Jenkins 13.3.2 Setting up a build pipeline with Jenkins 13.4 Running dynamic analysis with OWASP ZAP 13.4.1 Passive scanning vs. active scanning 13.4.2 Performing penetration tests with ZAP Summary Appendixes Appendix A: OAuth 2.0 and OpenID Connect A.1 The access delegation problem A.2 How does OAuth 2.0 fix the access delegation problem? A.3 Actors of an OAuth 2.0 flow A.3.1 The role of the resource server A.3.2 The role of the client application A.3.3 The role of the resource owner A.3.4 The role of the authorization server A.4 Grant types A.4.1 Client credentials grant type A.4.2 Resource owner password grant type A.4.3 Refresh token grant type A.4.4 Authorization code grant type A.4.5 Implicit grant type A.5 Scopes bind capabilities to an OAuth 2.0 access token A.6 Self-contained access tokens A.7 What is OpenID Connect? A.8 More information about OpenID Connect and OAuth 2.0 Appendix B: JSON Web Token B.1 What is a JSON Web Token? B.2 What does a JWT look like? B.2.1 The issuer of a JWT B.2.2 The subject of a JWT B.2.3 The audience of a JWT B.2.4 JWT expiration, not before and issued time B.2.5 The JWT identifier B.3 JSON Web Signature B.4 JSON Web Encryption Appendix C: Single-page application architecture C.1 What is single-page application architecture? C.2 Benefits of a SPA over an MPA C.3 Drawbacks of a SPA compared with an MPA Appendix D: Observability in a microservices deployment D.1 The need for observability D.2 The four pillars of observability D.2.1 The importance of metrics in observability D.2.2 The importance of tracing in observability D.2.3 The importance of logging in observability D.2.4 The importance of visualization in observability Appendix E: Docker fundamentals E.1 Docker overview E.1.1 Containers prior to Docker E.1.2 Docker adding value to Linux containers E.1.3 Virtual machines vs. containers E.1.4 Running Docker on non-Linux operating systems E.2 Installing Docker E.3 Docker high-level architecture E.4 Containerizing an application E.4.1 What is a Docker image? E.4.2 Building the application E.4.3 Creating a Dockerfile E.4.4 Building a Docker image E.4.5 Running a container from a Docker image E.5 Container name and container ID E.6 Docker registry E.6.1 Docker Hub E.6.2 Harbor E.6.3 Docker cloud platforms and registries E.7 Publishing to Docker Hub E.8 Image name and image ID E.8.1 Docker images with no tags (or the latest tag) E.8.2 Docker images with a tag E.8.3 Working with third-party Docker registries E.8.4 Docker Hub official and unofficial images E.8.5 Image ID E.8.6 Pulling an image with the image ID E.9 Image layers E.10 Container life cycle E.10.1 Creating a container from an image E.10.2 Starting a container E.10.3 Pausing a running container E.10.4 Stopping a running container E.10.5 Killing a container E.10.6 Destroying a container E.11 Deleting an image E.12 Persisting runtime data of a container E.12.1 Using Docker volumes to persist runtime data E.12.2 Using bind mounts to persist runtime data E.13 Docker internal architecture E.13.1 Containerd E.13.2 Containerd-shim E.13.3 Runc E.13.4 Linux namespaces E.13.5 Linux cgroups E.14 What is happening behind the scenes of docker run? E.15 Inspecting traffic between Docker client and host E.16 Docker Compose E.17 Docker Swarm E.18 Docker networking E.18.1 Bridge networking E.18.2 Host networking E.18.3 No networking E.18.4 Networking in a Docker production deployment E.19 Moby project Appendix F: Open Policy Agent F.1 Key components in an access-control system F.2 What is an Open Policy Agent? F.3 OPA high-level architecture F.4 Deploying OPA as a Docker container F.5 Protecting an OPA server with mTLS F.6 OPA policies F.7 External data F.7.1 Push data F.7.2 Loading data from the filesystem F.7.3 Overload F.7.4 JSON Web Token F.7.5 Bundle API F.7.6 Pull data during evaluation F.8 OPA integrations F.8.1 Istio F.8.2 Kubernetes admission controller F.8.3 Apache Kafka F.9 OPA alternatives Appendix G: Observability in a microservices deployment F.1 The need for observability F.2 The four pillars of Observability F.2.1 The importance of metrics in observability F.2.2 The importance of tracing in observability Appendix H: Creating a certificate authority and related keys with OpenSSL G.1 Creating a certificate authority G.2 Generating keys for an application Appendix I: Secure Production Identity Framework for Everyone H.1 What is SPIFFE? H.2 The inspiration behind SPIFFE H.3 SPIFFE ID H.4 How SPIRE works H.5 SPIFFE Verifiable Identity Document H.5.1 X.509-SVID H.5.2 JWT-SVID H.6 A trust bundle Appendix J: gRPC fundamentals I.1 What is gRPC? I.2 Understanding Protocol Buffers I.3 Understanding HTTP/2 and its benefits over HTTP/1.x I.3.1 Request/response multiplexing and its performance benefits I.3.2 Understanding binary framing and streams in HTTP/2 I.4 The different types of RPC available in gRPC I.4.1 Understanding channels I.4.2 Understanding request metadata I.4.3 What is unary RPC? I.4.4 What is server streaming RPC? I.4.5 What is client streaming RPC? I.4.6 What is bidirectional streaming RPC? Appendix K: Kubernetes fundamentals J.1 Kubernetes high-level architecture J.1.1 Master nodes J.1.2 Worker nodes J.2 Basic constructs J.2.1 A Pod: The smallest deployment unit in Kubernetes J.2.2 A node: A VM or physical machine in a Kubernetes cluster J.2.3 A Service: an abstraction over Kubernetes Pods J.2.4 Deployments: Representing your application in Kubernetes J.2.5 A namespace: Your home within a Kubernetes cluster J.3 Getting started with Minikube and Docker Desktop J.4 Kubernetes as a service J.5 Getting started with Google Kubernetes Engine J.5.1 Installing gcloud J.5.2 Installing kubectl J.5.3 Setting up the default setting for gcloud J.5.4 Creating a Kubernetes cluster J.5.5 Deleting a Kubernetes cluster J.5.6 Switching between multiple Kubernetes clusters J.6 Creating a Kubernetes Deployment J.7 Behind the scenes of a Deployment J.8 Creating a Kubernetes Service J.9 Behind the scenes of a Service J.10 Scaling a Kubernetes Deployment J.11 Creating a Kubernetes namespace J.12 Switching Kubernetes namespaces J.13 Using Kubernetes objects J.13.1 Managing Kubernetes objects J.14 Exploring the Kubernetes API server J.15 Kubernetes resources J.16 Kubernetes controllers J.17 Ingress J.18 Kubernetes internal communication J.18.1 How kubectl run works J.18.2 How Kubernetes routes a request from an external client to a Pod J.19 Managing configurations J.19.1 Hardcoding configuration data in the Deployment definition J.19.2 Introducing ConfigMaps J.19.3 Consuming ConfigMaps from a Kubernetes Deployment and populating environment variables J.19.4 Consuming ConfigMaps from a Kubernetes Deployment with volume mounts Appendix L: Service mesh and Istio fundamentals K.1 Why a service mesh? K.1 The evolution of microservice deployments K.2.1 The Service Mesh architecture K.2.2 Service mesh implementations K.2.3 Service mesh vs. API gateway K.3 Istio service mesh K.4 Istio architecture K.4.1 Istio data plane K.4.2 Istio control plane K.4.3 Changes introduced to Istio architecture since Istio 1.5.0 release K.5 Setting up Istio service mesh on Kubernetes K.5.1 Setting up Istio on Docker Desktop K.5.2 Setting up Istio on GKE K.5.3 Limitations of Istio on GKE K.6 What Istio brings to a Kubernetes cluster K.6.1 Kubernetes custom resource definitions K.6.2 The istio-system namespace K.6.3 Control plane components K.6.4 The istio-ingressgateway Service K.6.5 The istio-ingressgateway pod K.6.6 Istio’s MeshPolicy K.7 Setting up the Kubernetes deployment K.8 Engaging Istio to STS and the Order Processing microservices K.8.1 Sidecar auto injection K.8.2 Setting up iptables rules K.8.3 Envoy sidecar proxy K.9 Running the end-to-end sample K.10 Updating the Order Processing microservice with Istio configurations K.10.1 Redeploying STS and the Order Processing microservices K.10.2 Creating a Gateway resource K.10.3 Creating a VirtualService resource for the Order Processing and STS microservices K.10.4 Running the end-to-end flow K.10.5 Debugging the Envoy proxy What's inside Microservice security concepts Edge services with an API gateway Deployments with Docker, Kubernetes, and Istio Security testing at the code level Communications with HTTP, gRPC, and Kafka About the reader For experienced microservices developers with intermediate Java skills. About the authors Prabath Siriwardena is the vice president of security architecture at WSO2. Nuwan Dias is the director of API architecture at WSO2. They have designed secure systems for many Fortune 500 companies.

Prikaži sve...
forward
Detaljnije

From start to finish, the best book to help you learn AI algorithms and recall why and how you use them. Linda Ristevski, York Region District School Board Grokking Artificial Intelligence Algorithms is a fully-illustrated and interactive tutorial guide to the different approaches and algorithms that underpin AI. Written in simple language and with lots of visual references and hands-on examples, you’ll learn the concepts, terminology, and theory you need to effectively incorporate AI algorithms into your applications. And to make sure you truly grok as you go, you’ll use each algorithm in practice with creative coding exercises—including building a maze puzzle game, performing diamond data analysis, and even exploring drone material optimization. About the Technology Artificial intelligence touches every part of our lives. It powers our shopping and TV recommendations; it informs our medical diagnoses. Embracing this new world means mastering the core algorithms at the heart of AI. About the book Grokking Artificial Intelligence Algorithms uses illustrations, exercises, and jargon-free explanations to teach fundamental AI concepts. All you need is the algebra you remember from high school math class. Explore coding challenges like detect­ing bank fraud, creating artistic masterpieces, and setting a self-driving car in motion. 0 Preface 0.1 Our obsession with technology and automation 0.1.1 We’re wired to automate 0.2 Ethics, legal matters, and our responsibility 0.2.1 Intention and impact: Understanding your vision and goals 0.2.2 Unintended use: Protecting against malicious use 0.2.3 Unintended bias: Building solutions for everyone 0.2.4 The law, privacy, and consent: Knowing the importance of core values 0.2.5 Singularity: Exploring the unknown 1 Intuition of Artificial Intelligence 1.1 What is Artificial Intelligence? 1.1.1 Defining AI 1.1.2 Understanding Data is Core to AI Algorithms 1.1.3 Viewing Algorithms as Instructions in Recipes 1.2 A Brief History of Artificial Intelligence 1.3 Problem Types and Problem-Solving Paradigms 1.3.1 Search Problems: Find a path to a solution 1.3.2 Optimization Problems: Find a good solution 1.3.3 Prediction and Classification Problems: Learn from patterns in data 1.3.4 Clustering Problems: Identify patterns in data 1.3.5 Deterministic Models: Same result each time it’s calculated 1.3.6 Stochastic/probabilistic models: Potentially different result each time it’s calculated 1.4 Intuition of Artificial Intelligence Concepts 1.4.1 Narrow Intelligence: Specific-purpose solutions 1.4.2 General Intelligence: Humanlike solutions 1.4.3 Super Intelligence: The great unknown 1.4.4 Old AI and New AI 1.4.5 Search Algorithms 1.4.6 Biology-Inspired Algorithms 1.4.7 Machine Learning Algorithms 1.4.8 Deep Learning Algorithms 1.5 Uses for Artificial Intelligence Algorithms 1.5.1 Agriculture: Optimal Plant Growth 1.5.2 Banking: Fraud Detection 1.5.3 Cybersecurity: Attack Detection and Handling 1.5.4 Healthcare: Diagnosis of Patients 1.5.5 Logistics: Routing and Optimization 1.5.6 Telecoms: Optimizing Networks 1.5.7 Games: Creating AI Agents 1.5.8 Art: Creating Masterpieces 2 Search Fundamentals 2.1 What is Planning and Searching? 2.2 Cost of Computation: The Reason for Smart Algorithms 2.3 Problems Applicable to Searching Algorithms 2.4 Representing State: Creating a framework to represent problem spaces and solutions 2.4.1 Graphs: Representing search problems and solutions 2.4.2 Representing a Graph as a Concrete Data Structure 2.4.3 Trees: The concrete structure used to represent search solutions 2.5 Uninformed Search: Looking blindly for solutions 2.6 Breadth-first Search: Look wide before looking deep 2.7 Depth-first Search: Looking deep before looking wide 2.8 Use Cases for Uninformed Search Algorithms 2.9 Optional: More About Graph Categories 2.10 Optional: More Ways to Represent Graphs 2.10.1 Incidence Matrix 2.10.2 Adjacency List 3 Intelligent Search 3.1 Defining Heuristics: Designing educated guesses 3.2 Informed Search: Looking for solutions with guidance 3.2.1 A* Search 3.2.2 Use Cases for Informed Search Algorithms 3.3 Adversarial Search: Looking for solutions in a changing environment 3.3.1 A Simple Adversarial Problem 3.3.2 Min-max Search: Simulate actions and choose the best future 3.3.3 Alpha-beta Pruning: Optimize by exploring the sensible paths only 3.3.4 Use Cases for Adversarial Search Algorithms 4 Evolutionary Algorithms 4.1 What is Evolution? 4.2 Problems Applicable to Evolutionary Algorithms 4.3 Genetic Algorithm: Life Cycle 4.4 Encoding the Solution Space 4.4.1 Binary Encoding: Represent possible solutions with zeros and ones 4.5 Creation a Population of Solutions 4.6 Measuring Fitness of Individuals in a Population 4.7 Selecting Parents Based on their Fitness 4.7.1 Steady State: Replacing a portion of the population each generation 4.7.2 Generational: Replacing the entire population each generation 4.7.3 Roulette Wheel: Selecting parents and surviving individuals 4.8 Reproducing Individuals from Parents 4.8.1 Single-point Crossover: Inheriting one part from each parent 4.8.2 Two-point Crossover: Inheriting more parts from each parent 4.8.3 Uniform Crossover: Inheriting many parts from each parent 4.8.4 Bit-String Mutation for Binary Encoding 4.8.5 Flip-Bit Mutation for Binary Encoding 4.9 Populating the Next Generation 4.9.1 Exploration vs. Exploitation 4.9.2 Stopping Conditions 4.10 Configuring the Parameters of a Genetic Algorithm 4.11 Use Cases for Evolutionary Algorithms 5 Advanced Evolutionary Approaches 5.1 Evolutionary Algorithm Life Cycle 5.2 Alternative Selection Strategies 5.2.1 Rank Selection: Even the playing field 5.2.2 Tournament Selection: Let them fight 5.2.3 Elitism Selection: Choose only the best 5.3 Real-value Encoding: Working with real numbers 5.3.1 Real-value Encoding at its Core 5.3.2 Arithmetic Crossover: Reproduce with math 5.3.3 Boundary Mutation 5.3.4 Arithmetic Mutation 5.4 Order Encoding: Working with sequences 5.4.1 Importance of the Fitness Function 5.4.2 Order Encoding at its Core 5.4.3 Order Mutation: Order/Permutation Encoding 5.5 Tree Encoding: Working with hierarchies 5.5.1 Tree Encoding at its Core 5.5.2 Tree Crossover: Inheriting portions of a tree 5.5.3 Change Node Mutation: Changing the value of a node 5.6 Common Types of Evolutionary Algorithms 5.6.1 Genetic Programming 5.6.2 Evolutionary Programming 5.7 Glossary of Evolutionary Algorithm Terms 5.8 More Use Cases for Evolutionary Algorithms 6 Swarm Intelligence: Ants 6.1 What is Swarm Intelligence? 6.2 Problems Applicable to Ant Colony Optimization 6.3 Representing State: What do paths and ants look like? 6.4 The Ant Colony Optimization Algorithm Life Cycle 6.4.1 Initialize the Pheromone Trails 6.4.2 Set up the Population of Ants 6.4.3 Choose the Next Visit for Each Ant 6.4.4 Update the Pheromone Trails 6.4.5 Update the Best Solution 6.4.6 Determine the Stopping Criteria 6.5 Use Cases for Ant Colony Optimization Algorithms 7 Swarm Intelligence: Particles 7.1 What is Particle Swarm Optimization 7.2 Optimization Problems: A slightly more technical perspective 7.3 Problems Applicable to Particle Swarm Optimization 7.4 Representing State: What do particles look like? 7.5 Particle Swarm Optimization Life Cycle 7.5.1 Initialize the Population of Particles 7.5.2 Calculate the Fitness of Each Particle 7.5.3 Update the Position of Each Particle 7.5.4 Determine the Stopping Criteria 7.6 Use Cases for Particle Swarm Optimization Algorithms 8 Machine Learning 8.1 What is Machine Learning? 8.2 Problems Applicable to Machine Learning 8.2.1 Supervised learning 8.2.2 Unsupervised learning 8.2.3 Reinforcement learning 8.3 A Machine Learning Workflow 8.3.1 Collecting and Understanding Data: Know your context 8.3.2 Preparing Data: Clean and wrangle 8.3.3 Training a Model: Predicting with Linear Regression 8.3.4 Testing the Model: Determine the accuracy of the model 8.3.5 Improving Accuracy 8.4 Classification with Decision Trees 8.4.1 Classification Problems: Either this or that 8.4.2 The Basics of Decision Trees 8.4.3 Training Decision Trees 8.4.4 Classifying examples with decision trees 8.5 Other Popular Machine Learning Algorithms 8.6 Use Cases for Machine Learning Algorithms 9 Artificial Neural Networks 9.1 What are artificial neural networks? 9.2 The perceptron: A representation of a neuron 9.3 Defining artificial neural networks 9.4 Forward propagation: Using a trained ANN 9.5 Back propagation: Training an ANN 9.5.1 Phase A: Setup 9.5.2 Phase B: Forward propagation 9.5.3 Phase C: Training 9.6 Options for activation functions 9.7 Designing artificial neural networks 9.7.1 Inputs and outputs 9.7.2 Hidden layers and nodes 9.7.3 Weights 9.7.4 Bias 9.7.5 Activation functions 9.7.6 Cost function and learning rate 9.8 Artificial neural network types and use cases 9.8.1 Convolutional neural network 9.8.2 Recurrent neural network 9.8.3 Generative adversarial network 10 Reinforcement Learning with Q-Learning 10.1 What is reinforcement learning? 10.1.1 The inspiration for reinforcement learning 10.2 Problems applicable to reinforcement learning 10.3 The life cycle of reinforcement learning 10.3.1 Simulation and data: Make the environment come alive 10.3.2 Training with the simulation using Q-learning 10.3.3 Testing with the simulation and Q-table 10.3.4 Measuring the performance of training 10.3.5 Model-free and model-based learning 10.4 Deep learning approaches to reinforcement learning 10.5 Use cases for reinforcement learning 10.5.1 Robotics 10.5.2 Recommendation engines 10.5.3 Financial trading 10.5.4 Game playing What's inside Use cases for different AI algorithms Intelligent search for decision making Biologically inspired algorithms Machine learning and neural networks Reinforcement learning to build a better robot About the reader For software developers with high school–level algebra and calculus skills. About the author Rishal Hurbans is a technologist, founder, and international speaker.

Prikaži sve...
forward
Detaljnije
Nazad
Sačuvaj