F # [2] లో బీర్వే-ఆధారిత ప్రోగ్రామింగ్

పరిచయం

ఈ బ్లాగ్ పోస్ట్‌లో, మునుపటి బ్లాగ్ పోస్ట్ నుండి మేము వదిలిపెట్టిన చోట మేము కొనసాగుతాము. మేము ఈ క్రింది వాటిని చేయాలనుకుంటున్నాము:

  1. మితిమీరిన హార్డ్-కోడెడ్ మంబో జంబోస్ ఏదీ కొనసాగకుండా అక్షరాస్యతను కాన్ఫిగర్ చేయండి. ప్రక్రియ ప్రారంభమైనప్పుడు మొంగోడిబి నుండి MLab ద్వారా లోడ్ చేయబడిన మా కాన్ఫిగరేషన్లను మేము సేవ్ చేస్తాము. హార్డ్-కోడెడ్ విలువ మాత్రమే మొంగో సర్వర్‌కు కనెక్ట్ చేయడానికి ఉపయోగించే కనెక్షన్ స్ట్రింగ్.
  2. అనేక బ్రూవరీస్ కోసం పైప్లైన్ అమలు కోసం షెడ్యూలర్ యొక్క సాధారణీకరణ.
  3. సమయానికి అమలు చేయడానికి ప్రక్రియను ప్లాన్ చేయండి.
  4. మొంగోడిబిపై శాశ్వత గీతలు.

మేము ఎక్స్‌పెక్టో వాడకాన్ని పరీక్షిస్తాము మరియు ఈ సిరీస్‌లోని మూడవ బ్లాగ్ పోస్ట్‌లో లాగరీ ద్వారా లాగింగ్‌ను జోడిస్తాము.

సన్నాహాలు

నో డిఫెరెన్స్ కేసు చికిత్స గురించి నేను అట్లే రుడ్షాగ్ నుండి గొప్ప చిట్కా అందుకున్నాను. నో డిఫెరెన్స్ కేసును మేము విజయవంతం చేయాలి. తేడా కనిపించకపోతే, ఏ వచనాన్ని పంపవద్దు.

మా సవరించిన లోపం మాడ్యూల్ ఇప్పుడు ఇలా ఉంది:

ఫంక్షన్‌ను పోల్చండి, ఇది ప్రస్తుత మరియు మునుపటి స్క్రాచ్ మధ్య వ్యత్యాసాన్ని లెక్కిస్తుంది.

సెట్ వ్యత్యాసం యొక్క కార్డినాలిటీ ఆధారంగా టెక్స్ట్ పంపాలా వద్దా అని నోటిఫికేషన్ ఫంక్షన్ ఇప్పుడు నిర్ణయించాలి.

పైప్‌లైన్ యొక్క సాధారణీకరణ దిశను నిర్ణయించడానికి "డేటా" అని పిలువబడే మా డేటా సెట్‌కు కొత్త "స్ట్రింగ్" రకం మూలకాన్ని కూడా చేర్చుతాము, అది తరువాత హైలైట్ అవుతుంది.

చిరోన్ కోసం నవీకరించబడిన రికార్డ్ రకం మరియు స్టాటిక్ ఎలిమెంట్స్‌తో కూడిన మా బీర్ఇన్‌ఫో.ఎఫ్ఎస్ ఫైల్ ఇప్పుడు ఇలా ఉంది:

కాన్ఫిగరేషన్ మరియు సాధారణీకరణ

అన్ని హార్డ్-కోడెడ్ అక్షరాస్యతలను వదిలించుకుందాం మరియు పైప్‌లైన్‌ను కేవలం అలసిపోయిన చేతులకు బదులుగా బ్రూవరీస్ జాబితాకు సాధారణీకరించండి. ఇప్పటివరకు మేము సాధారణ భాగాలను వేరు చేసే మంచి పని చేసాము. మేము బాగా చేయగలము! అన్ని కాన్ఫిగరేషన్‌లను క్లౌడ్‌కు తరలించి పైప్‌లైన్‌ను సాధారణీకరించండి.

నిర్మాణం

అన్ని కాన్ఫిగరేషన్ వివరాలను ఉంచడానికి మేము MLab యొక్క ఉచిత శ్రేణిని ఉపయోగిస్తాము. మొదట మేము "బీర్ వేరియోంటెడ్ ప్రోగ్రామింగ్" అనే డేటాబేస్ను సృష్టించి, కాన్ఫిగరేషన్ సేకరణను చేర్చుతాము. ఇది చాలా సరళమైన ప్రక్రియ. MLab యూజర్ ఇంటర్ఫేస్ అద్భుతమైనది! మీకు ఏమైనా సమస్యలు ఉంటే, దయచేసి నన్ను సంప్రదించడానికి సంకోచించకండి.

కాన్ఫిగరేషన్ సేకరణ ప్రారంభంలో మా ట్విలియో వివరాలతో ఒక పత్రాన్ని కలిగి ఉండాలి. మేము ఇక్కడ మరిన్ని ఫీల్డ్‌లను జోడించాలనుకుంటే తరువాత నిర్ణయించవచ్చు.

ఒకసారి నిర్వహించిన తర్వాత, కాన్ఫిగరేషన్ సేకరణ ఇలా కనిపిస్తుంది:

_ "_ నేను చేస్తాను": {id oid: 5976bcc1734d1d6202aa1556}, "MyPhoneNumber": "మీ ఫోన్ నంబర్", "AccountSID": "మీ ట్విలియో ఖాతా సిడ్", "AuthToken": "మీ ట్విలియో ఆత్ టోకెన్", "SendingPhoneNumber": "మీదే twilio పంపే ఫోన్ నంబర్ "}

డేటాబేస్తో కమ్యూనికేషన్

తరువాత మనం ప్యాకేజీ ద్వారా మొంగోషార్ప్‌డ్రైవర్ మరియు మొంగోడిబి.ఎఫ్‌షార్ప్ రిఫరెన్స్‌ను జోడిస్తాము. దీన్ని ఎలా చేయాలో మీకు తెలియకపోతే, దయచేసి మునుపటి పోస్ట్‌ను చదవండి, ఇందులో ప్యాకేజీని ఉపయోగించడం గురించి సమాచారం ఉంటుంది మరియు డిపెండెన్సీలు విజయవంతంగా ప్రస్తావించబడిందో లేదో తనిఖీ చేయండి.

లోపం మాడ్యూల్‌కు ముందు, మేము "Common.fs" ఫైల్‌లో "Db" అనే క్రొత్త మాడ్యూల్‌ను సృష్టిస్తాము, ఇది మా డేటాబేస్-సంబంధిత ఫంక్షన్లన్నింటినీ కలిగి ఉంటుంది. అదనంగా, పోల్చండి మాడ్యూల్‌లో మేము ఇంతకుముందు పనిచేసిన JSON ఫైల్ యొక్క డీసరియలైజేషన్ / సీరియలైజేషన్ కోసం అన్ని కోడ్ తొలగించబడుతుంది.

కనెక్షన్ స్ట్రింగ్ మాత్రమే హార్డ్-కోడెడ్. [మీరు సృజనాత్మకంగా ఉండాలనుకుంటే, మీరు దానిని FSharp.Configuration లైబ్రరీని ఉపయోగించి కాన్ఫిగరేషన్ ఫైల్‌లో ఉంచవచ్చు.]

మొత్తం మీద, Db మాడ్యూల్ ఇలా కనిపిస్తుంది:

మొంగో + F # CRUD గురించి మరిన్ని వివరాలను నా మునుపటి బ్లాగ్ పోస్ట్‌లో చూడవచ్చు, మీరు ఇక్కడ చూడవచ్చు. మరియు కాన్ఫిగరేషన్‌తో సవరించిన అలారం మాడ్యూల్ ఇప్పుడు ఇలా ఉంది:

సాధారణీకరణం

సారాయి-నిర్దిష్ట కోడ్ సారాయి-నిర్దిష్ట పార్సర్‌లో మరియు సారాయి కోసం పైప్‌లైన్‌ను కలిగి ఉన్న ప్రధాన ఫంక్షన్ ఫైల్‌లో ఉంది. బ్రూవర్ పేరు ఆధారంగా Json ఫైల్‌ను సృష్టించడానికి పోలిక మాడ్యూల్‌ని మార్చాలి.

మార్చబడిన బీర్వే ఓరియంటెడ్ ప్రోగ్రామింగ్ మాడ్యూల్ ఇప్పుడు ఇలా ఉంది:

పోల్చండి మాడ్యూల్‌లో మార్చబడిన పోలిక ఫంక్షన్ ఇప్పుడు ఇలా ఉంది:

ప్లానర్

తదుపరి దశలో టైమర్‌పై సారాయి పైప్‌లైన్‌లను అమలు చేయడానికి షెడ్యూలర్‌ను ఏర్పాటు చేయడం. దీని కోసం మేము ప్యాకేజీ ద్వారా ప్రణాళిక కోసం క్వార్ట్జ్.నెట్‌ను డౌన్‌లోడ్ చేస్తాము.

ఈ F # స్నిప్పెట్ తరువాత, మేము అన్ని సారాయిల ద్వారా వెళ్ళడానికి ప్రణాళికాబద్ధమైన ప్రక్రియను సులభంగా సెటప్ చేయవచ్చు మరియు ప్రతి 2 సెకన్ల వివరాలను ఎప్పటికీ విశ్లేషించవచ్చు.

మేము మా బీర్ సేకరణతో ఫిడేల్ చేయము, కానీ కంపెనీ స్థాయిలో బీర్ బాజూకాను పొందే ప్రక్రియను చేయండి.

నిరంతర గీతలు

చివరగా, మా స్క్రాప్‌లను అదే మొంగోడిబి డేటాబేస్‌లో "బీర్‌వే-ఓరియెంటెడ్ ప్రోగ్రామింగ్" తో సేవ్ చేసే అవకాశాన్ని చేద్దాం.

ఇతర సారాయి పార్సర్‌లను సులభంగా జోడించగలిగేలా మేము మా ప్రక్రియను సాధారణీకరించిన అదే కారణంతో, ఒక ఫైల్‌లో మరియు వెలుపల JSON సీరియలైజేషన్ మరియు డీసియలైజేషన్‌ను తొలగించిన తర్వాత బ్రూవర్ పేరు ఆధారంగా డేటాబేస్ యొక్క సేకరణలకు పేరు పెడతాము. కలిగి.

మొదట, బీర్ఇన్ఫో రికార్డ్ రకాన్ని తిరిగి తనిఖీ చేయడం ద్వారా మరియు చిరోన్ ఆధారిత స్టాటిక్ ఎలిమెంట్లను తొలగించిన తరువాత BsonObjectId MongoDb ID ని జోడించడం ద్వారా అన్ని పాత JSON సీరియలైజేషన్ మరియు డీసియలైజేషన్ భాగాలను తొలగించండి.

క్రొత్త బీర్ఇన్ఫో మాడ్యూల్ ఇలా ఉంది:

మీరు గమనించినట్లయితే, F # వన్ సృష్టించబడిన C # మొంగోడిబి డ్రైవర్‌తో సరిపోలడానికి మేము "బీర్స్" రకాన్ని FSharp జాబితా నుండి "One" గా "System.Generic.Collections" గా మార్చాము.

చిరోన్‌కు సూచన అవసరం లేనందున మేము ఇప్పుడు దాన్ని తొలగిస్తాము. ఇది చేయుటకు, కమాండ్ పాలెట్ [Cmd + Shift + P] ను తెరిచి, fsproj ఫైల్ను తెరిచిన తరువాత, PAKET యొక్క తొలగింపు సూచనకు ఈ క్రింది విధంగా నావిగేట్ చేయండి:

చిరోన్‌కు సూచన తొలగించబడిన తర్వాత, క్రొత్త ఐడిలను సృష్టించడానికి మరియు మునుపటి స్క్రాప్‌ను పొందటానికి సంబంధించిన కొన్ని పద్ధతులను మా డిబి మాడ్యూల్‌కు జోడిస్తాము.

సారాయి పేరుతో సేకరణను పొందడానికి ప్రయత్నిస్తున్నప్పుడు మినహాయింపు సంభవిస్తే, దాన్ని బ్లాక్ తో పున ate సృష్టి చేయడానికి ప్రయత్నం జరుగుతుంది.

చివరి స్క్రాప్‌ను పట్టుకోవడం ద్వారా స్క్రాప్‌లను పోల్చండి మాడ్యూల్ నుండి డిబి మాడ్యూల్‌కు ఉంచే సంక్లిష్టతను మేము తగ్గించాము. చివరి స్క్రాప్ శూన్యంగా ఉందో లేదో మేము తనిఖీ చేస్తాము [మేము ఫస్ట్‌ఆర్డిఫాల్ట్ () ను ఉపయోగిస్తున్నప్పుడు శూన్యతను తనిఖీ చేయడానికి దానిని ఒక వస్తువుగా మార్చిన తర్వాత.

మా నవీకరించబడిన TiredHandsScraper.scrape ఫంక్షన్ ఇప్పుడు ఇలా ఉంది:

GetBeerNamesFromTiredHands ఫంక్షన్ ఇలా ఉంది:

అదనంగా, మా పోల్చండి మాడ్యూల్ గణనీయంగా సరళీకృతం చేయబడింది:

మా స్క్రాప్‌లు కొనసాగడం చాలా బాగుంది, ఇది టైర్‌హ్యాండ్స్ సేకరణలోని మా పత్రాలను తనిఖీ చేయడం ద్వారా నిర్ధారించబడుతుంది:

తీర్మానం

కాన్ఫిగరేషన్‌ను జోడించడం, సాధారణీకరించడం, ప్రణాళిక చేయడం మరియు నిర్వహించడం ద్వారా మేము ఖచ్చితంగా చాలా దూరం వచ్చాము. ఇప్పటికే చెప్పినట్లుగా, ఈ శ్రేణిలోని తదుపరి మరియు చివరి పోస్ట్‌లో కొన్ని పరీక్షలు మరియు లాగింగ్ ఉన్నాయి, ఈ ఒకసారి సరళమైన అనువర్తనాన్ని పూర్తిగా అభివృద్ధి చెందినదిగా మార్చడానికి.

మీ అభిప్రాయాన్ని స్వీకరించడానికి నేను ఎల్లప్పుడూ సంతోషంగా ఉన్నాను!