reminderbot's People
reminderbot's Issues
Code review notes [in Czech]
1. README.md example input:
"please remind me by mail about mom's birthsday present at 30th May in the morning" nefunguje.
2. Neco k Dockerfilu
(jak uz jsi asi poznamenal v README.md) to co v nem delas opravdu neni best practice. Idea Docker image se nememi a mas porad stejne chovani; doporucuji si neco precist o multistage docker files. V prvni pomocne image s JDK a GRADLE si zbuildis (uber) JARko a to to ve finalni image s JRE jen spustis.
Tez iteraticni zpousteni pomoci bash scriptu ma mirne mouchy (nespousti se presne po 5ti minutach ale po 5 minutach + runtime programu); mozna by bylo stalo pouvazovat o nejake nejake java cron like knihovne.
3. Timezone
Kdyz jsem to skousel spustit tak jsem si nabehnul na time-zonu protoze v dockeru se pouzil UTC (cili casy byli o 2 hodiny posunute) mozna by mohl mit uzivatel specifikovanou vlastni timezonu v konfiguraci?
4. Ke kodu, celkove se mi libil.
a) neni uplne nejstastnejsi, ze logiku pro parsovaci textoveho vstupu nemas na jednom miste v jedne tride. Vetsinu parsujes v https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/Parser.java#L28 ale komu se nastavuje pripominka a jak se ma notifikovat se resi v https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/IdentityManager.java#L57-L84
b) Tento konkretni if: https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/IdentityManager.java#L57 se mi nelibil protoze vede na duplikaci kodu. Mimo jine branch nejsou ekvivalentni ( "me by email" to podle mne neda). Kod by si zaslouzil zrefaktorovat.
c) Visibility: v podstate ignoruje nastavovani visibility fieldu (nekde to za tebe resi anotace @value) ale treba https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/endpoints/email/EmailMessage.java#L15-L16 a https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/IdentityManager.java#L17-L18 https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/IdentityManager.java#L46 ale i jinde pouzivas defaultni visibilitu coz urcite neni dobre. Spis bych ocekaval private pripadne protected.
d) https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/endpoints/email/EmailEndpoint.java#L35 myslim ze obvykle se pouziva starttls pro non SSL conections v pripade SSL conections asi neni potreba. Docela me prekvapilo ze to fungovalo se seznamem a SSL smtp connections. Melo by to asi byt soucasti configurace jestli se ma pouzit nebo ne.
e) https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/endpoints/email/EmailEndpoint.java#L151 zvazil bych pridani "Re: " do subjectu odpovedi
f) https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/endpoints/email/EmailMessage.java#L42 Nejspis je jednoduzsi a efektivnejsi najit prvni vyskyt \n and pouzit susbstring. (plain old java :-) nez pouzit streamy.
g) https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/storage/User.java#L23 Zde bych ocekaval jako typ Interface, tedy Map misto HashMap
h) https://github.com/vakabus/reminderbot/blob/master/src/main/java/cz/vakabus/reminderbot/storage/User.java#L27 Tento radek, nejspis muze vyhodit vyjikmu, NPE ( v pripade ze bych v jsonu mela polozku pole null, ale to jsem netestoval) a pokud byde pole imalu prazdne pak muzes dostat vyjimku z iteratoru. Navic, pokud by ten Set (jako value mapy) byl HashSet, tak se ti emailova adresa mohla menit mezi behy programu, coz asi neni nejlepsi vlastnost. Myslim, ze by diky tomu mohli remindery chodit na ruzne emailove adresy. Nejjednoduzsim resenim asi bude mit specialni polozku v konfiguraci primary_email, jako email kam se maji posilat emaily s notifikaceme.
5. Storage
Delsi dobu jsem premyslel jestli je rozumne si pamatovat remendery tak, ze je mas jako neprectene zpravy v mailboxu (misto toho aby se to ukladalo po naparsovani v nejakem konfiguraku),
ale nakonec si myslim, ze to pro email neni spatna volba. Ale asi by jsi narazil, kdyby jsi delal Slack bota, tam by asi tento "trick" nefungoval.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.