-
Notifications
You must be signed in to change notification settings - Fork 5
Backlog 1
raisercostin edited this page Jun 27, 2017
·
2 revisions
- programatically load/save users to ForgeRock in ForgeRockUsersDao class.
- choose json library/or manual
- choose http library
- read username and email columns
- read ignoring a header
- read with swapped columns but with same names: username, email, ...
- Import 100 users from a csv file ( http://edoceo.com/utilitas/csv-file-format )
- Project built with maven.
- Make a test with junit that checks user creation.
- Make test pass.
- csv library ~ stackoverflow.com > Questions > 10462507 > Any-good-library-to-read-and-write-csv-files
- read users from a file
- write users to a file
- Export 100 users to a csv file.
- Generate 100 users to a csv file.
- - add the project to
user/<username>branch. The project means: pom.xml, java sources and java test sources. - - to read Chapter 2 from Test Driven Development
- - read csv files. Some advice: https://dzone.com/articles/how-to-read-csv-files-in-java
- configure Travis Continuous Integration Server
- CsvExporter and CsvExporter2 to merge (according to DRY)
- add headers with username/email to csv, to survive column addition/deletion/move
username,count,email,bla bla,dada a,1,ae,a,a b,2,be,b,b c,3,ce,c,c - optional - try to merge after file/folder renames/movement.
- Comenzi:
cat c:\tools\cmder\config\.history
#git checkout -b user/andrei origin/user/costin
mvn eclipse:eclipse
git checkout origin/user/costindfsasdfas
git checkout -b user/andrei origin/user/costingdsfgfdsgd
git checkout master
git merge user/costin
git commit -am "refactored"
curl
curl -X GET --header 'Accept: application/json' --header 'X-Requested-With: Swagger-UI' 'http://dcs-xps:8080/openidm/managed/user?_queryId=query-all'
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin"
mvn eclipse:eclipse -DdownloadSources
#git checkout -b user/andrei origin/user/costingdsfgfdsgd
#git checkout -b user/andrei origin/user/costingit pull
git add -A
git status
git commit -am "improve features"
git push
git pull
git branch -a
curl -X GET ^
curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'If-None-Match: *' --header 'X-Requested-With: Swagger-UI' -d '{ \
"_id": "200", \
"mail": "raisercostin+dcsi3%40gmail.com", \
"userName": "costin3", \
"sn": "sn200", \
"givenName": "costin3name" \
---------------------------
cmd
- Go to the project path using:
cd %PATH% - Be aware that the project was cleaned so you should compile it first.
mvn compile exec:java -Dexec.mainClass=ro.dcsi.internship.App - Setup the project to work with your IDE. For eclipse, use:
mvn eclipse:eclipse
-
prereq
-
java installed
- to start idm server
-
maven installed
- to have a prj with maven
-
cmder installed for windows
- to be able to use curl like in bash
-
git installed
- to have curl
-
-
check server
-
install idm
-
check connection
- server
- user
- openidm-admin
- pass
- openidm-admin
-
-
What can be fixed from a security point of view?
- change the admin password
- change the admin username
- remove access via http
- use a secure connection
- add access via https
-
start a maven project
-
maven-archetype-quickstart
-
mvn archetype:generate
-
options
-
java8
- java8
- 7: remote -> org.spilth:java8-junit4-quickstart
- 2
-
quickstart
- maven-archetype-quickstart
-
-
config
- groupId: ro.roweb.dcsi
- artifactId: intern
- version: 1.0-SNAPSHOT
- package: ro.roweb.dcsi
-
-
choose the best generated one
- compare via totalcmd
- folders
- files
- change some
- compare via totalcmd
-
generate eclipse project for maven
-
import project in eclipse
-
stake on ide wars
- eclipse
- IntelliJ IDEA
- netbeans
-
start adding git versioning
-
Import 100 users from a csv file.
- Project built with maven.
- Make a test with junit that checks user creation.
- Make test pass.
- csv library
-
Export 100 users to a csv file.
-
What if we have 1 000 000 users?
-
Add cli client. A console with some parameters.
-
steps
-
GET http
- +HTTP
-
app security
- user
- identity
- authentication
- authorization
- user
-
infrastructure security
- PKI arhitecture
- SSL
- TLS
-
- +HTTP
-
GET REST json
- +JSON
- +REST
-
PUT/CREATE
- +refactor
-
CRUD SWAGGER
- YML
- as document
- as client
- as server
-
HATEOAS
-
- Home
- Advices
- Development Algorithm
- Who's who
- Software Books
- Career, salary, salariu, brut, net, Levels
-
Tools
- Health
- Physical Tools
- Environment Tools
- File Tools
- Source Tools
- Information Tools
- Collaboration Tools
- Infrastructure Tools
- Language Tools
-
Concepts as Tools spec maturity
- Classes of Objects, Development Algorithm/mantra/practices
- Streaming Tools
- Process Tools psychology, analytical paralysis
- Special
- fiddler kotlin,javascript,scala
- translator scala->kotlin, java->kotlin
- Guides
- Asking for Help
- Aspects
- Security
- Server & Networking load balancing,
-
Principles & Guidelines
- PLS - Principle of Least Surprise (aka no puzzlers)
- SRP - Single Responsibility Principle
- KISS - Keep It Simple
- YAGNI - You aint gona need it
- DRY - Dont Repeat Yourself
- Fail Fast
- OCP - Open Closed
- POE - Premature Optimization is Evil
- LSP - Liskov Substitution Principle
- DIP - Dependency Inversion Principle / Inversion of Control
- Hollywood Principle - Don't call us We call you
- Tell Don't Ask
- Event sourcing
- NIHS - Not invented here syndrome
- Patterns - idioms, best practices, code smells
-
Intro to Problems - common problems: cache, logging, config, representing date, time, money
- Intro to Libraries - reactive, reactor, commons, collections, apache, guava, logging, config, time, test, junit, vavr, immutable, lombok, mapping, mapstruct, time, joda, cache, Guava, Caffeine, and cache2k
- Intro to DateTime
- Intro to Logging
- Intro to Concurrency - thread, parallelism
- Intro to I18N - internationalization, encoding, unicode, big indian, little indian, ascii, utf, utf8, utf16, formatting, parsing, transliteration, charset, localization, time, timezone, zone id, zone offset, GMT
- Intro to Numbers - rounding, ceil, floor, base, integer, decimal, precision, mantis, exponent, significant, statistics
- Java Idioms
- Concepts
- Code Changes refactor, format, eol, bugfix, newfeature
- Convention Over Configuration
- Continuous Integration
- Continuous Delivery
- Code License
- Fluent Interface
- Semantic Versioning
- Take It Offline
- Flow
- Languages
- Hardening
- Smells
-
Intros
- Intro to Paradigms Object Oriented, Functional, Procedural, Asynchronous
- Intro to Logic
- Intro to Product UX, UI, business, technical, backend, frontend
- Intro to Roles
- Intro to Decision Levels : business, financials, domain, product, architecture, high level design, low level design, coding, debugging, quality, roles, stakeholders
- Intro to Steps
- Intro to Software Architecture
- Intro to Software Design
- Intro to UML state machine diagram, class diagram, sequence diagram
- Intro to Graphical Design
- Intro to Performance bigO, algorithm complexity
- Intro to Agile
- Intro to Scripting
- Intro to Shell execution, environment, registry, powershell, cmd, cmder, linux, bash, ash, csh, zsh, ksh
- Intro to Wiki
-
Intro to Building
- Intro to DevMachine
- Intro to Git
- Intro to Maven
- Intro to Docker
- Intro to Hosting Deploy, nameserver, hostname, registrar, ssl, ddns, dns, naked domain, wildcard domain, email, smtp, pop3, imap, DKIM, SPF, spam
-
Intro to Landscapes Language Environments, Web Landscape
- Intro to JVM Landscape
-
Intro to Javascript Landscape
- Intro to Javascript
- Intro to Typescript binding, implicit, explicit, default (global), callsite, lambda, callback, function, promise, async await
- Intro to Node javascript, npm, yarn
- Intro to DotNet Landscape C# csharp
- Intro to Golang
- Intro to Ruby
- Intro to Python
- Coding Style
- Phases
-
Intro to Quality - QA, Quality Assurance, code quality, bugs, bug levels, metabugs
- Intro to Tests
-
Test Driven Development TDD, mantra
- Domain-and-Test-Driven-Design Advanced topics
- Intro to Coding defensive, offensive, preconditions, postconditions
- Intro to Debugging
- Intro to Profiling, Intro to Performance
- Intro to Code Review
-
Intro to Quality - QA, Quality Assurance, code quality, bugs, bug levels, metabugs
- Intro to Functional
- Intro to Computers memory, cpu, hardware, neuman, computer science, devices
- Intro to OFM
- Intro to Databases Intro to Database Migration ORM, ObjectRelationalMapping, Hibernate, JPA, ebeanorm
- Advanced in Databases - optimistic lock, pessimistic lock
- Intro to WebDevelopment - tcp, http
- Data Structures & money
- Intro to Virtualization
- Admin section
- Intro to Types value, record, case class, alias
- Intro to Layers - frontend,ui,ux
- Intro to Culture - teams, psychology, principles, behaviour
- Intro to 41 - aboriginal linux, google whitepapers
- Intro to Security - ssl, handshake, tsl, https, basic auth, tokens, refresh, jwt tokens, access, refresh
- Intro to Crypto
- Advanced
- Advanced Java
- Circuit Breaker, retry, bulkhead, RateLimit, resilience
- Immutable, purity, pure functions, functional style
- Identification Surrogate vs Natural Keys, database, rest, microservice
- Infrastructure devops, docker, containers, kubernetes, k8s, private cloud, continous deployment
- Resources
- Project Templates
- Ships
- Ship10 - 2021-Aug
- Ship 1 - 2017-May
- Ship 2 - 2017-June
- Ship 3 - 2017-July
-
Ship 4 - 2017-September
- Team 4
- Team 4 Reloaded
- Backlog 4
- Sprint 4.1 old
- Sprint 4.1 Home old
- Sprint 4.2 old
- Sprint 4.2 Home old
- Sprint 4.3 old
- Sprint 4.3 Home old
- Sprint 4.4 old
- Sprint 4.4 Home old
- Sprint 4.5 old
- Sprint 4.5 Home old
- Sprint 4.6 old
- Sprint 4.6 Home old
- Sprint 4.7 old
- Sprint 4.7 Home old
- Sprint 4.8 old
- Sprint 4.8 Home old
-
Non software
- Physical Tools - home tooling