Knowledge List
- Software development
- Data sciense / Machine learning
- Databases
- Security
- Cloud platforms
- Techdocs
- Finance
- Articles
- Monitoring
- DevOps
- Company’s dev blogs
- IoT
- Hardware
1. Software development
1.1 Architecture
1.1.1 Onion
1.1.2 Hexagonal
1.1.3 Clean
1.1.4 Manifests
- The Twelve-Factor App
- The Reactive Manifesto
- The API Mandate by Jeff Bezos
- All teams will henceforth expose their data and functionality
through service interfaces.
- Teams must communicate with each other through these
interfaces.
- There will be no other form of interprocess communication
allowed: no direct linking, no direct reads of another team’s data
store, no shared-memory model, no back-doors whatsoever. The
only communication allowed is via service interface calls over the
network.
- It doesn’t matter what technology they use. HTTP, Corba,
Pubsub, custom protocols – doesn’t matter. Bezos doesn’t care.
- All service interfaces, without exception, must be designed from
the ground up to be externalizable. That is to say, the team must
plan and design to be able to expose the interface to developers
in the outside world. No exceptions.
- Anyone who doesn’t do this will be fired.
- Thank you; have a nice day!
1.2 Principles
1.2.1 SOLID
- SRP: Single responsibility principle
- OCP: Open/closed principle
- LSP: Liskov substitution principle
- ISP: Interface segregation principle
- DIP: Dependency inversion principle
1.2.2 Law of Demeter: principle of least knowledge
1.2.3 DRY: Don’t repeat yoyrself
1.2.4 SSOT: Single source of truth
1.2.5 CQRS: Command Query Responsibility Segregation
1.2.6 Event sourcing
- Articles
- Soft
- prooph - CQRS and EventSourcing Infrastructure for PHP
1.3 Programming paradigm
- Imperative
- Object-oriented
- Procedural
- Declarative
Articles:
1.4 Concurrency
1.5 Patterns
Articles
1.6 Message bus
- Servers
- Gearman
- RabbitMQ
- Durability
- Excchanges: direct, fanout, topic, headers
- Cli tools: rabbitmqadmin
- ZeroMQ
- Kafka
- Libraries
- bernard - Multi-backend PHP library for creating background jobs for later processing
- Articles
1.7 Cache
1.8 Search engines
1.9 Auth
1.10 RPC
1.11 Server push
Techniques
Implementations
- http://socket.io/ - frontend and backend (node.js) library
- Faye - publish-subscribe messaging system based on the Bayeux protocol. It provides message servers for Node.js and Ruby, and clients for use on the server and in all major web browsers.
- Nginx modules:
1.12 Testing
1.12.1 Unit testing
- PHP
- PHPSpec - A php toolset to drive emergent design by specification
- Codeception
- Mockery - Simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework.
1.13 Web protocols
1.14 Distributed computing
2. Data sciense / Machine learning
2.2 Machine learning
- Distributed Random Forest (DRF)
- Generalized Linear Model (GLM)
- Naive Bayes Classifier
- Stacked Ensembles
- Gradient boosting
- Wikipedia
- xgboost - Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Flink and DataFlow
- Unbalanced data dealing
2.3 Deep learning / Neural networks
Tools:
- Tensorflow
- Keras - high-level neural networks API, capable of running on top of TensorFlow, CNTK, or Theano.
2.4 OCR
2.5 Conversational AI / Natural-language processing
Conversational AI:
Bot frameworks:
Articles:
2.6 Visualization
- Tableau
- Periscope Data
- Looker
- jupyter notebook
3. Databases
3.1 Theory
3.1.1 CAP: Consistency, Availability, Partition tolerance
3.1.2 ACID: Atomicity, Consistency, Isolation, Durability
In contrast to BASE.
3.1.3 BASE: Basically Available, Soft state, Eventual consistency
In contrast to ACID.
3.1.3 MVCC: Multiversion concurrency control
3.2 Normlization
3.3 Joins
3.4 Partitions
3.5 Triggers
3.6 Indexes
3.7 Storage
- Row-based
- Column-based
- NoSQL
- Document-based
- Key-value
- Column
- Graph
3.8 Processing
3.8.1 OLTP: On-line Transaction Processing
3.8.2 OLAP: On-line Analytical Processing
3.9 Database scema migration
- http://www.liquibase.org/
- https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html
3.10 Articles and tutorials
4. Security
4.1 Cryptography
4.2 XSS
4.3 CSRF
4.4 SQL injection
5.1 Amazon Web Services
- localstack - Develop and test your cloud apps offline.
5.2 Microsoft Azure
5.3 Google Cloud
5.4 Corezoid
6. Techdocs
6.1 Static site generator
6.2 API dods
- RAML - RESTful API Modeling Language (RAML) makes it easy to manage the whole API lifecycle from design to sharing. It’s concise - you only write what you need to define - and reusable. It is machine readable API design that is actually human friendly.
- Swagger - Design is the foundation of your API development. Swagger makes API design a breeze, with easy-to-use tools for developers, architects, and product owners.
7. Finance
8. Articles
9. Monitoring
9.1 Logging
Usecases
9.2 Monitoring
- Pinba - MySQL storage engine that acts as a realtime monitoring/statistics server for PHP using MySQL as a read-only interface.
- StatsD + Graphite
- InfluxDB - Time Series Platform
- prometheus
- fluentd
Usecases
10. DevOps
- Infrastructure automation
- Ansible
- Puppet
- Chef
- Capistrano
- Process management:
- HashiCorp
11. Company’s dev blogs
12. IoT
12.1 MQTT: Message Queuing Telemetry Transport
12.2 Network management
- ThingsBoard
- https://github.com/thingsboard/thingsboard
- NiFi
13. Hardware
13.1 GSM / Radio
13.2 ESP8266