https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/members/developer-advocates/qmacro.xml SAP Community - DJ Adams 2024-02-26T00:30:05.616605+00:00 python-feedgen DJ Adams in SAP Community https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-3/ev-p/13582522 Back to basics with SAP Cloud Application Programming Model (CAP) - part 3 2024-01-26T16:53:04.373000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>In this episode 3 of our series, we continue to explore the basics of CAP with Node.js. We pick up where we left off last time, and investigate starting up a basic CAP server with cds watch to discover the amazing features that it gives us. Everyone welcome, especially beginners, come and join us for friendly chat and curiosity-driven learning-by-doing!</SPAN></P><P><SPAN>If you want to develop along with this new series, you may want to check out "Developing CAP in containers - three ways" which will help you get started:&nbsp;<A href="https://qmacro.org/blog/posts/2024/01/15/developing-cap-in-containers-three-ways/" target="_blank" rel="noopener nofollow noreferrer">https://qmacro.org/blog/posts/2024/01/15/developing-cap-in-containers-three-ways/</A></SPAN></P> 2024-01-26T16:53:04.373000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-1/ec-p/13584542#M413 Re: Back to basics with SAP Cloud Application Programming Model (CAP) - part 1 2024-01-29T09:54:37.815000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>Here are the resources mentioned in this episode:</SPAN></P><UL><LI>Capire (CAP docu): <A href="https://cap.cloud.sap/docs/" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/ </A></LI><LI>Presence on the Fediverse: <A href="https://hachyderm.io/@qmacro" target="_blank" rel="nofollow noopener noreferrer">https://hachyderm.io/@qmacro</A></LI><LI>Battlestation 2024: <A href="https://qmacro.org/blog/posts/2024/01/09/battlestation-2024/" target="_blank" rel="nofollow noopener noreferrer">https://qmacro.org/blog/posts/2024/01/09/battlestation-2024/</A></LI><LI>Bret Fisher Docker and DevOps: <A href="https://www.youtube.com/@BretFisher" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/@BretFisher</A>&nbsp;</LI><LI>SAP Business Application Studio and Code - OSS: <A href="https://blogs.sap.com/2022/11/15/sap-business-application-studio-now-powered-by-code-oss/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2022/11/15/sap-business-application-studio-now-powered-by-code-oss/</A></LI></UL> 2024-01-29T09:54:37.815000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-4/ev-p/13592800 Back to basics with SAP Cloud Application Programming Model (CAP) - part 4 2024-02-02T14:50:17.818000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>In this episode 4 of our series, we continue to explore the basics of CAP with Node.js, digging deeper into cds watch and how we can manage our CDS definitions. Everyone welcome, especially beginners, come and join us for friendly chat and curiosity-driven learning-by-doing!</SPAN></P><P><SPAN>If you want to develop along with this new series, you may want to check out "Developing CAP in containers - three ways" which will help you get started:&nbsp;<A href="https://qmacro.org/blog/posts/2024/01/15/developing-cap-in-containers-three-ways/" target="_blank" rel="noopener nofollow noreferrer">https://qmacro.org/blog/posts/2024/01/15/developing-cap-in-containers-three-ways/</A></SPAN></P> 2024-02-02T14:50:17.818000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-3/ec-p/13592961#M428 Re: Back to basics with SAP Cloud Application Programming Model (CAP) - part 3 2024-02-02T15:58:44.690000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>Here are the resources mentioned in this episode:</SPAN></P><UL><LI>This week's SAP Developer News, brought to you by the Developer Advocates&nbsp;<A href="https://www.youtube.com/watch?v=iYDlgVh8IgI" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/watch?v=iYDlgVh8IgI</A>&nbsp;</LI><LI>The container image definition and dev container instructions for our "CAP Back To Basics" (CAPB2B) work&nbsp;<A href="https://github.com/qmacro/capb2b" target="_blank" rel="noopener nofollow noreferrer">https://github.com/qmacro/capb2b</A>&nbsp;</LI><LI>The&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1387241">@Sap</a>/cds-dk package on NPM&nbsp;<A href="https://www.npmjs.com/package/@sap/cds-dk" target="_blank" rel="noopener nofollow noreferrer">https://www.npmjs.com/package/@sap/cds-dk</A>&nbsp;(now at 7.6.0)</LI><LI>CAP release info on Capire&nbsp;<A href="https://cap.cloud.sap/docs/releases/" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/releases/</A>&nbsp;including Jan 2024 for 7.6.0&nbsp;<A href="https://cap.cloud.sap/docs/releases/jan24" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/releases/jan24</A>&nbsp;</LI><LI>The ESLint plugin for CAP&nbsp;<A href="https://www.npmjs.com/package/@sap/eslint-plugin-cds" target="_blank" rel="noopener nofollow noreferrer">https://www.npmjs.com/package/@sap/eslint-plugin-cds</A>&nbsp;(installed via cds add lint)</LI><LI>The CDS Lint Rules&nbsp;<A href="https://cap.cloud.sap/docs/tools/lint/rules" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/tools/lint/rules</A>&nbsp;including the specific "no dollar prefixed names" rule <A href="https://cap.cloud.sap/docs/tools/lint/rules#no-dollar-prefixed-names" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/tools/lint/rules#no-dollar-prefixed-names</A>&nbsp;</LI><LI>VS Code Save / Auto Save settings&nbsp;<A href="https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save" target="_blank" rel="noopener nofollow noreferrer">https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save</A>&nbsp;</LI><LI>DWIM (Do What I Mean) and Perl:&nbsp;<A href="https://blogs.perl.org/users/buddy_burden/2014/02/perl-and-me-part-10-what-we-talk-about-when-we-talk-about-dwim.html" target="_blank" rel="noopener nofollow noreferrer">https://blogs.perl.org/users/buddy_burden/2014/02/perl-and-me-part-10-what-we-talk-about-when-we-talk-about-dwim.html</A>&nbsp;</LI><LI>Simon Peyton Jones&nbsp;<A href="https://simon.peytonjones.org/" target="_blank" rel="noopener nofollow noreferrer">https://simon.peytonjones.org/</A>&nbsp;</LI><LI>Exploring Verse, Haskell, Language Design and Teaching (with Simon Peyton Jones) (where he says "desugars")&nbsp;<A href="https://www.youtube.com/watch?v=UBgam9XUHs0" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/watch?v=UBgam9XUHs0</A>&nbsp;also available as a podcast&nbsp;<A href="https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy56ZW5jYXN0ci5jb20vZi9vU24xaTMxNi5yc3M/episode/ZjM2NzgwZDAtYWVjNC00N2QwLWJlYjMtNjg5ZWMzNjk2NTEy" target="_blank" rel="noopener nofollow noreferrer">https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy56ZW5jYXN0ci5jb20vZi9vU24xaTMxNi5yc3M/episode/ZjM2NzgwZDAtYWVjNC00N2QwLWJlYjMtNjg5ZWMzNjk2NTEy</A>&nbsp;</LI><LI>Remy Sharp and nodemon:&nbsp;<A href="https://remysharp.com/2014/01/20/nodemon-1-0" target="_blank" rel="noopener nofollow noreferrer">https://remysharp.com/2014/01/20/nodemon-1-0</A></LI><LI>Apache httpd and the tradition of the index.html default:&nbsp;<A href="https://httpd.apache.org/docs/trunk/getting-started.html#content" target="_blank" rel="noopener nofollow noreferrer">https://httpd.apache.org/docs/trunk/getting-started.html#content</A>&nbsp;</LI><LI>Capire's "Hello World!" section which has the "say" service definition with the "hello" function&nbsp;<A href="https://cap.cloud.sap/docs/get-started/hello-world" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/get-started/hello-world</A>&nbsp;</LI><LI>OData V4 and CAP talk, which includes a section on actions and functions&nbsp;<A href="https://github.com/qmacro/odata-v4-and-cap" target="_blank" rel="noopener nofollow noreferrer">https://github.com/qmacro/odata-v4-and-cap</A>&nbsp;</LI><LI>Protocol annotations (such as&nbsp;@rest) and serving services&nbsp;<A href="https://cap.cloud.sap/docs/node.js/cds-serve#protocol" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/node.js/cds-serve#protocol</A>&nbsp;</LI><LI>Release notes from Jun 2023 describing the change to default service paths (why there's now an /odata/v4 prefix)&nbsp;<A href="https://cap.cloud.sap/docs/releases/archive/2023/jun23#changed-default-service-path" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/releases/archive/2023/jun23#changed-default-service-path</A>&nbsp;</LI><LI>The safety (no side effects) and idempotency of HTTP GET&nbsp;<A href="https://restfulapi.net/idempotent-rest-apis/" target="_blank" rel="noopener nofollow noreferrer">https://restfulapi.net/idempotent-rest-apis/</A>&nbsp;</LI><LI>The&nbsp;@impl annotation&nbsp;<A href="https://cap.cloud.sap/docs/node.js/core-services#specified-by-impl-annotation-or-impl-configuration" target="_blank" rel="noopener nofollow noreferrer">https://cap.cloud.sap/docs/node.js/core-services#specified-by-impl-annotation-or-impl-configuration</A>&nbsp;</LI></UL><P>&nbsp;</P> 2024-02-02T15:58:44.690000+01:00 https://community.sap.com/t5/sap-codejam-blog-posts/successful-double-codejam-in-wroclaw-and-warsaw/ba-p/13599303 Successful double CodeJam in Wroclaw and Warsaw 2024-02-08T12:26:33.730000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>I'm at Warsaw airport on my journey home after a great few days in Poland. My first flight is already delayed so I have a bit of time at the gate to write up some notes.</P><P>I arrived in Wroclaw, in the west of Poland, on Sunday, and met up with my good friend, Developer Advocate colleague, local resident and fellow beer and food enthusiast<SPAN>&nbsp;</SPAN><A href="https://www.linkedin.com/in/witalij/" target="_blank" rel="noopener nofollow noreferrer">Witalij Rudnicki</A>, where we visited the<SPAN>&nbsp;</SPAN><A href="https://100mostow.pl/en/wroclaw/" target="_blank" rel="noopener nofollow noreferrer">100 Bridges Brewery</A>. What a great start!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="witalij-dj-stu-mostow-brewery.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62719iC4CDE16272F44B57/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="witalij-dj-stu-mostow-brewery.jpg" alt="witalij-dj-stu-mostow-brewery.jpg" /></span></P><H2 id="toc-hId-965950915">Wroclaw</H2><P>On the following day (Monday) I arrived at the Capgemini offices in Wroclaw, greeted by Dominik in a room that was perfect for a day of learning and networking. It was a full house, not surprising given the CodeJam topic, which was the SAP Cloud Application Programming Model ("CAP" to us humans). It's such a fascinating and very capable framework, built with love, enthusiasm and skill, which is evident in both its philosophy and its codebase.</P><P>If you're interested in checking out the content of the CAP CodeJam that I ran, it's available publicly (like all our other CodeJams) on GitHub:<SPAN>&nbsp;</SPAN><A href="https://github.com/SAP-samples/cap-service-integration-codejam/" target="_blank" rel="noopener nofollow noreferrer">Service Integration with SAP Cloud Application Programming Model</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="wroclaw-codejam-participants.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62720iBA47910F67BDB9CD/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="wroclaw-codejam-participants.jpg" alt="wroclaw-codejam-participants.jpg" /></span></P><P><SPAN>There were plenty of refreshments, including that classic developer fuel, pizza, which we devoured half way through the exercises</SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="wroclaw-food.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62721i437E068DB87BBDE3/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="wroclaw-food.png" alt="wroclaw-food.png" /></span></SPAN></P><H2 id="toc-hId-769437410">Warsaw</H2><P>The next day was a travel day, where Witalij drove us the almost 400km to Warsaw, in time to do a couple of cool things that evening. After checking into our respective hotels, we headed to the<SPAN>&nbsp;</SPAN><A href="https://applemuzeumpolska.pl/en/main-page/" target="_blank" rel="noopener nofollow noreferrer">Apple Museum</A>. Such a wonderful exhibition of Apple memorabilia, from a private collector, it was fascinating to look at everything from a replica of the original Apple I, through the classic Apple II range, and all the way through to today. I spotted an Apple III which is the computer that features in the super Hands-on SAP Dev stickers designed and produced by the great<SPAN>&nbsp;</SPAN><A href="https://www.linkedin.com/in/rsletta/" target="_blank" rel="noopener nofollow noreferrer">Ronnie Sletta</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="apple-iii-sticker.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62718iDBFC323534A27DDC/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="apple-iii-sticker.png" alt="apple-iii-sticker.png" /></span></P><P><SPAN>What made this an even better experience was that the museum was hosted inside a renovated factory from an older industrial era, and there were lots of factory artifacts preserved. Inside this factory was also&nbsp;</SPAN><A href="https://uwaga-piwo.ontap.pl/" target="_blank" rel="noopener nofollow noreferrer">a great beer place</A><SPAN>&nbsp;which was the location for an SAP Stammtisch that Witalij had also organised. Cheers!</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="stammtisch.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62716i3B7FCE4429F1284B/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="stammtisch.jpg" alt="stammtisch.jpg" /></span></P><P><SPAN>And then the following day, we all met up at the KMD Poland offices for another CodeJam, on the same topic. Again, it was a full house, over a different but equally great room layout, and just like Wroclaw on Monday, the participants worked hard on the exercises, got to know each other, asked great questions and contributed valuable opinions too. The key ingredients to a successful CodeJam, I'd say.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="warsaw-codejam-participants.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62715i6A73CBB7CC7CE053/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="warsaw-codejam-participants.jpg" alt="warsaw-codejam-participants.jpg" /></span></P><H2 id="toc-hId-572923905">Wrapping up</H2><P>One of the most enjoyable aspects of this trip for me was being looked after by Witalij. He showed me some great places, helped me find and experience some great food - traditional Polish food and indeed Georgian cuisine too. He even helped me find my way around both cities, and see some sights.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="georgian-cuisine.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62717i9301F1B39C5D01EE/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="georgian-cuisine.png" alt="georgian-cuisine.png" /></span></P><P><SPAN>If you're interested in hosting a CodeJam, head on over to this blog post:&nbsp;</SPAN><A href="https://community.sap.com/t5/sap-codejam-blog-posts/so-you-want-to-host-a-codejam-everything-you-need-to-know/ba-p/221415" target="_blank">So, You Want to Host a CodeJam! Everything you need to know</A><SPAN>, and I'll perhaps see you at the next one!</SPAN></P><HR /><P><A href="https://qmacro.org/blog/posts/2024/02/08/successful-double-codejam-in-wroclaw-and-warsaw/" target="_self" rel="nofollow noopener noreferrer">Originally published on qmacro.org</A></P> 2024-02-08T12:26:33.730000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-4/ec-p/13600391#M434 Re: Back to basics with SAP Cloud Application Programming Model (CAP) - part 4 2024-02-09T11:17:07.827000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>Here are the resources mentioned in this episode:</SPAN></P><UL><LI><SPAN><SPAN>This week's SAP Developer News, a special edition for </SPAN></SPAN>International Day of Women and Girls in Science&nbsp;<A href="https://www.youtube.com/watch?v=Ny0a0OQjtOU" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/watch?v=Ny0a0OQjtOU</A>&nbsp;</LI><LI>Canal route planning&nbsp;<A href="https://canalplan.uk/index.html" target="_blank" rel="nofollow noopener noreferrer">https://canalplan.uk/index.html</A>&nbsp;</LI><LI>(Capire) CAP January 2024 release notes&nbsp;<A href="https://cap.cloud.sap/docs/releases/jan24" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/releases/jan24</A>&nbsp;</LI><LI>The Open Telemetry plugin&nbsp;<A href="https://www.npmjs.com/package/@cap-js/telemetry" target="_blank" rel="nofollow noopener noreferrer">https://www.npmjs.com/package/@cap-js/telemetry</A></LI><LI>International Day of Women and Girls in Science&nbsp;<A href="https://www.un.org/en/observances/women-and-girls-in-science-day/" target="_blank" rel="nofollow noopener noreferrer">https://www.un.org/en/observances/women-and-girls-in-science-day/</A>&nbsp;</LI><LI>February Developer Challenge - CAP Plugins: Week 1&nbsp;<A href="https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-1/m-p/13597835" target="_blank">https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-1/m-p/13597835</A>&nbsp;</LI><LI>Best of cap-js&nbsp;<A href="https://bestofcapjs.org/" target="_blank" rel="nofollow noopener noreferrer">https://bestofcapjs.org/</A>&nbsp;</LI><LI>TripPin - New OData V4 Sample Service&nbsp;<A href="https://www.odata.org/blog/trippin-new-odata-v4-sample-service/" target="_blank" rel="nofollow noopener noreferrer">https://www.odata.org/blog/trippin-new-odata-v4-sample-service/</A>&nbsp;</LI><LI>The configuration which includes the definition of extensions installed inside our dev container&nbsp;<A href="https://github.com/qmacro/capb2b/blob/main/.devcontainer/devcontainer.json" target="_blank" rel="nofollow noopener noreferrer">https://github.com/qmacro/capb2b/blob/main/.devcontainer/devcontainer.json</A>&nbsp;</LI><LI>SAP CDS Language Support extension for VS Code&nbsp;<A href="https://marketplace.visualstudio.com/items?itemName=SAPSE.vscode-cds" target="_blank" rel="nofollow noopener noreferrer">https://marketplace.visualstudio.com/items?itemName=SAPSE.vscode-cds</A></LI><LI>(Capire) Providing Initial Data&nbsp;<A href="https://cap.cloud.sap/docs/guides/databases#providing-initial-data" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/guides/databases#providing-initial-data</A>&nbsp;</LI><LI>(Capire) CAP is Open and Opinionated - Zero Lock-In&nbsp;<A href="https://cap.cloud.sap/docs/about/#open-and-opinionated" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/about/#open-and-opinionated</A>&nbsp;</LI><LI>(Capire) Use cds add data&nbsp;<A href="https://cap.cloud.sap/docs/guides/databases#use-cds-add-data" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/guides/databases#use-cds-add-data</A>&nbsp;</LI><LI>David Heinemeier Hansson (creator of Ruby on Rails)&nbsp;<A href="https://en.wikipedia.org/wiki/David_Heinemeier_Hansson" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/David_Heinemeier_Hansson</A>&nbsp;</LI><LI>CDS database service for Postgres&nbsp;<A href="https://www.npmjs.com/package/@cap-js/postgres" target="_blank" rel="nofollow noopener noreferrer">https://www.npmjs.com/package/@cap-js/postgres</A>&nbsp;</LI><LI>Douglas Adams&nbsp;<A href="https://en.wikipedia.org/wiki/Douglas_Adams" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Douglas_Adams</A></LI><LI>Iain Banks&nbsp;<A href="https://en.wikipedia.org/wiki/Iain_Banks" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Iain_Banks</A>&nbsp;</LI><LI>module.exports in Node.js&nbsp;<A href="https://nodejs.org/api/modules.html#moduleexports" target="_blank" rel="nofollow noopener noreferrer">https://nodejs.org/api/modules.html#moduleexports</A>&nbsp;</LI><LI>The DRY (Don't Repeat Yourself) software development principle&nbsp;<A href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Don%27t_repeat_yourself</A>&nbsp;</LI><LI>(Capire) Common Types and Aspects&nbsp;<A href="https://cap.cloud.sap/docs/cds/common" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/cds/common</A>&nbsp;</LI></UL> 2024-02-09T11:17:07.827000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-5/ev-p/13600538 Back to basics with SAP Cloud Application Programming Model (CAP) - part 5 2024-02-09T13:47:28.775000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>In this episode, we look more into basic CDS service and entity definitions, and dig into aspects, types, and start looking at relating entities. Everyone welcome, especially beginners, come and join us for friendly chat and curiosity-driven learning-by-doing!</SPAN></P> 2024-02-09T13:47:28.775000+01:00 https://community.sap.com/t5/sap-codejam/service-integration-with-sap-cloud-application-programming-model-st-leon/ev-p/13601698 🇩🇪 Service integration with SAP Cloud Application Programming Model (St Leon-Rot, DE) 2024-02-11T16:35:30.816000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <DIV class=""><P>This SAP CodeJam introduces attendees to service integration with the SAP Cloud Application Programming Model (CAP). Specifically, the Node.js flavor of CAP is used.</P><P>During this event, you'll become acquainted with how external services can be integrated and consumed from within a CAP project. In working through the exercises you'll also become comfortable with various facilities that CDS offers for declaring, relating and exposing entities, and familiar with how the SAP Cloud SDK covers connectivity and destinations, supporting such integration scenarios with CAP.</P><P>This is an&nbsp;<STRONG>in-person event</STRONG>&nbsp;<STRONG>only</STRONG>&nbsp;(not virtual) and is planned for<SPAN>&nbsp;</SPAN><STRONG>Mon 03 Jun 2024 in St Leon-Rot, Germany</STRONG>. It is part of the <A href="https://code-connect.dev/" target="_self" rel="nofollow noopener noreferrer">Code Connect 2024</A> event that is running for most of the week. The event will be at the SAP Campus in St Leon-Rot. <STRONG>Note that the exact campus building is yet to be confirmed</STRONG>.</P><P>The instructor is Developer Advocate<SPAN>&nbsp;</SPAN><A href="https://qmacro.org/" target="_self" rel="nofollow noreferrer noopener">DJ Adams</A>.&nbsp;</P><P><SPAN>There are essential prerequisites that&nbsp;<STRONG>must be completed by every attendee, before arriving at the event location</STRONG>. They are documented here:&nbsp;<A href="https://github.com/SAP-samples/cap-service-integration-codejam/blob/main/prerequisites.md" target="_self" rel="nofollow noopener noreferrer">https://github.com/SAP-samples/cap-service-integration-codejam/blob/main/prerequisites.md</A>.</SPAN></P><P><SPAN>If you wish to attend, please indicate that using the "I'm attending" facility on this page.</SPAN></P><P><SPAN><EM>For more information on SAP CodeJam events, to ask questions, and to chat with your fellow attendees, head over to the&nbsp;<A href="https://groups.community.sap.com/t5/sap-codejam/gh-p/code-jam" target="_self" rel="noopener noreferrer">SAP CodeJam group</A>.</EM></SPAN></P></DIV> 2024-02-11T16:35:30.816000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/utilizing-rest-client-vscode-extension-with-certificate-authentication/bc-p/13602119#M168958 Re: Utilizing REST Client (VSCode Extension) with Certificate Authentication 2024-02-12T09:55:16.002000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Nice blog post!</P> 2024-02-12T09:55:16.002000+01:00 https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-1/m-p/13605245#M2026530 Re: February Developer Challenge - CAP Plugins: Week 1 2024-02-14T15:44:43.812000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-02-14 at 14.43.55.png" style="width: 550px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/65325i436743CA4BB0CAF2/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2024-02-14 at 14.43.55.png" alt="Screenshot 2024-02-14 at 14.43.55.png" /></span></P> 2024-02-14T15:44:43.812000+01:00 https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-2/m-p/13605263#M2026531 Re: February Developer Challenge - CAP Plugins: Week 2 2024-02-14T15:52:18.300000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-02-14 at 14.51.24.png" style="width: 985px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/65332i36A645C06771D648/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2024-02-14 at 14.51.24.png" alt="Screenshot 2024-02-14 at 14.51.24.png" /></span></P><P>For the bonus part:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-02-15 at 10.35.43.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/65863i2F9686F439FF6C4E/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="Screenshot 2024-02-15 at 10.35.43.png" alt="Screenshot 2024-02-15 at 10.35.43.png" /></span></P><P> </P><P>&nbsp;</P> 2024-02-14T15:52:18.300000+01:00 https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-2/m-p/13606735#M2026565 Re: February Developer Challenge - CAP Plugins: Week 2 2024-02-15T15:34:43.065000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Searching GitHub is a good skill to master! There's so much great material on CAP and everything there, that being able to pinpoint something or fish out an example of how to do something that the one that can wield search effectively has an advantage over those that can't. Plus you need to recognise and sift through CAP code examples to find the solution, so that's CAP specific! <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P> 2024-02-15T15:34:43.065000+01:00 https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-2/m-p/13606741#M2026566 Re: February Developer Challenge - CAP Plugins: Week 2 2024-02-15T15:40:39.802000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>If I may be so bold and offer a bit of a clue to those looking to complete the bonus part of this week's task. The search facility on GitHub is fantastic, and with the help of search modifiers, you can narrow in on what you're looking for with ease.&nbsp;</P><P>The base search is at&nbsp;<A href="https://github.com/search" target="_blank" rel="nofollow noopener noreferrer">https://github.com/search</A>&nbsp;and the <A href="https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax" target="_self" rel="nofollow noopener noreferrer">query language</A> includes parameters that allow you to specific the context of your search. For example, you might want to set the `org` to `SAP-samples` and the `type` to `code`, and perhaps the `path` to something else, while looking for the things that&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/139">@thomas_jung</a>&nbsp;hinted at in the bonus description <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P><P>You should end up with a very specific URL that you can GET in your browser, and there are (at the time of writing) only two results, both of which have code that you can use.</P><P>Good luck!&nbsp;</P> 2024-02-15T15:40:39.802000+01:00 https://community.sap.com/t5/application-development-blog-posts/opening-files-from-the-terminal-in-bas-dev-spaces/ba-p/13606953 Opening files from the terminal in BAS dev spaces 2024-02-15T18:02:26.696000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>In the comments to&nbsp;</SPAN><A href="https://www.youtube.com/watch?v=1ywiOaGVA5w" target="_blank" rel="noopener nofollow noreferrer">episode 4 of our back to basics series of live stream episodes on CAP, on the Hands-on SAP Dev show</A><SPAN>, there was a question on my use of&nbsp;</SPAN>code<SPAN>&nbsp;in VS Code, which, when invoked in the terminal (e.g.&nbsp;</SPAN>code services.cds<SPAN>) opens the file directly in a VS Code editor window, like this:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="vscode-open-file.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/66097iB237FF443FD1889F/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="vscode-open-file.gif" alt="vscode-open-file.gif" /></span></SPAN></P><P>The question was about<SPAN>&nbsp;</SPAN>code<SPAN>&nbsp;</SPAN>being recognised in SAP Business Application Studio (BAS) dev spaces.</P><P>Basically, while<SPAN>&nbsp;</SPAN>code<SPAN>&nbsp;</SPAN>is not a command that's available in dev spaces, there's a BAS-specific command<SPAN>&nbsp;</SPAN>basctl<SPAN>&nbsp;</SPAN>which has a couple of options, one of which is<SPAN>&nbsp;</SPAN>--open. Here are some examples, taken from the usage text:</P><P>&nbsp;</P><pre class="lia-code-sample language-text"><code>Examples $ basctl --open http://sap.com $ basctl --open http://localhost:8082/tmp $ basctl --open file:///home/user/projects/proj1/myfile.txt $ basctl --open /myfile.txt $ basctl --open ./myfolder/myfile.txt</code></pre><P>&nbsp;</P><P>So while there isn't a<SPAN>&nbsp;</SPAN>code<SPAN>&nbsp;</SPAN>command, you can use<SPAN>&nbsp;</SPAN>basctl --open<SPAN>&nbsp;</SPAN>to get something similar. I say similar, because for some reason I cannot yet fathom (my small brain, again) it opens the file in a new column. Anyway, here's what it looks like in action:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="basctl-open-file.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/66099i8BA8180320BE42A4/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="basctl-open-file.gif" alt="basctl-open-file.gif" /></span></P><P>(I've asked internally about this behaviour, and will update this blog post with anything I find out.)</P><P>The nice thing about what<SPAN>&nbsp;</SPAN>basctl<SPAN>&nbsp;</SPAN>offers perhaps is the ability to invoke framework commands, via an additional<SPAN>&nbsp;</SPAN>--command<SPAN>&nbsp;</SPAN>option, like this:<SPAN>&nbsp;</SPAN>basctl --command workbench.action.openSettings.</P><P>The question also asked about my use of<SPAN>&nbsp;</SPAN>tree, and noted its lack of availability in BAS dev spaces. This is simple to address, if not entirely straightforward. I got<SPAN>&nbsp;</SPAN>tree<SPAN>&nbsp;</SPAN>working in my dev space, as you can see:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tree-in-bas-dev-space.png" style="width: 683px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/66101i224A4F195ADAD200/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="tree-in-bas-dev-space.png" alt="tree-in-bas-dev-space.png" /></span></P><P>I did this by copying in a<SPAN>&nbsp;</SPAN>tree<SPAN>&nbsp;</SPAN>binary (and ensuring the execution bit was set). Where did I get that<SPAN>&nbsp;</SPAN>tree<SPAN>&nbsp;</SPAN>binary from? Well, first, I looked what the architecture of the dev spaces was, via<SPAN>&nbsp;</SPAN>uname<SPAN>&nbsp;</SPAN>(I've added whitespace for readability):</P><P>&nbsp;</P><pre class="lia-code-sample language-shell"><code>user: user $ uname -a Linux workspaces-ws-nvzxc-deployment-9f9b9b656-sfdh5 5.15.135-gardenlinux-cloud-amd64 SMP Debian 5.15.135-0gardenlinux1 (2023-10-12) x86_64 GNU/Linux</code></pre><P>&nbsp;</P><P>I also checked what distribution the environment was based on:</P><P>&nbsp;</P><pre class="lia-code-sample language-shell"><code>user: user $ cat /etc/issue Debian GNU/Linux 12 \n \l</code></pre><P>&nbsp;</P><P>Basically, it's Debian 12 on x86_64 architecture. Classic. So then I created a quick container from a Debian 12 based container image, via a<SPAN>&nbsp;</SPAN><A href="https://qmacro.org/blog/posts/2024/01/26/exploring-codespaces-as-temporary-dev-containers/" target="_blank" rel="noopener nofollow noreferrer">codespace</A><SPAN>&nbsp;</SPAN>that I spun up for the purpose, and copied the<SPAN>&nbsp;</SPAN>tree<SPAN>&nbsp;</SPAN>binary out of there to my local filesystem, like this:</P><P>&nbsp;</P><pre class="lia-code-sample language-shell"><code>gh codespace cp 'remote:/usr/bin/tree' .</code></pre><P>&nbsp;</P><P>I then copied that binary to the dev space by dragging it into the Explorer window, and then set the execution bit with<SPAN>&nbsp;</SPAN>chmod +x $HOME/tree.</P><P>Job done!</P><P>(<A href="https://qmacro.org/blog/posts/2024/02/15/opening-files-from-the-terminal-in-bas-dev-spaces/" target="_self" rel="nofollow noopener noreferrer">Originally published on qmacro.org</A>)</P> 2024-02-15T18:02:26.696000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-5/ec-p/13607877#M456 Re: Back to basics with SAP Cloud Application Programming Model (CAP) - part 5 2024-02-16T14:35:46.519000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>Here are the resources mentioned in this episode:</SPAN></P><UL><LI><SPAN>This week's SAP Developer News <A href="https://www.youtube.com/watch?v=lwuuWkWk_Lk" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/watch?v=lwuuWkWk_Lk</A></SPAN></LI><LI><SPAN>This week's task in this month's Developer Challenge on CAP plugins&nbsp;<A href="https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-2/td-p/13605065" target="_blank">https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-2/td-p/13605065</A></SPAN></LI><LI><SPAN>Back to basics with SAP CAP Node.js playlist&nbsp;<A href="https://www.youtube.com/playlist?list=PL6RpkC85SLQBHPdfHQ0Ry2TMdsT-muECx" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/playlist?list=PL6RpkC85SLQBHPdfHQ0Ry2TMdsT-muECx</A></SPAN></LI><LI>Opening files from the terminal in BAS dev spaces&nbsp;<A href="https://qmacro.org/blog/posts/2024/02/15/opening-files-from-the-terminal-in-bas-dev-spaces/" target="_blank" rel="nofollow noopener noreferrer">https://qmacro.org/blog/posts/2024/02/15/opening-files-from-the-terminal-in-bas-dev-spaces/</A>&nbsp;</LI><LI>(Capire) Common Types and Aspects&nbsp;<A href="https://cap.cloud.sap/docs/cds/common" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/cds/common</A>&nbsp;</LI><LI>The expression "Turtles all the way down"&nbsp;<A href="https://en.wikipedia.org/wiki/Turtles_all_the_way_down" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Turtles_all_the_way_down</A>&nbsp;</LI><LI>(Capire) Parsing and Compiling Models&nbsp;<A href="https://cap.cloud.sap/docs/node.js/cds-compile" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/node.js/cds-compile</A>&nbsp;</LI><LI>Abstract syntax trees&nbsp;<A href="https://en.wikipedia.org/wiki/Abstract_syntax_tree" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Abstract_syntax_tree</A></LI><LI>OData operations (a V2 related document but still relevant)&nbsp;<A href="https://www.odata.org/documentation/odata-version-2-0/operations/" target="_blank" rel="nofollow noopener noreferrer">https://www.odata.org/documentation/odata-version-2-0/operations/</A>&nbsp;</LI><LI>DDL (Data Definition Language)&nbsp;<A href="https://www.ibm.com/docs/en/radfws/9.6.1?topic=scripts-generating-ddl" target="_blank" rel="nofollow noopener noreferrer">https://www.ibm.com/docs/en/radfws/9.6.1?topic=scripts-generating-ddl</A>&nbsp;</LI><LI>Vim emulation for Visual Studio Code&nbsp;<A href="https://marketplace.visualstudio.com/items?itemName=vscodevim.vim" target="_blank" rel="nofollow noopener noreferrer">https://marketplace.visualstudio.com/items?itemName=vscodevim.vim</A>&nbsp;</LI><LI>REST Client for VS Code&nbsp;<A href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client" target="_blank" rel="nofollow noopener noreferrer">https://marketplace.visualstudio.com/items?itemName=humao.rest-client</A>&nbsp;</LI><LI>PR that removes Dockerfile and defines everything for our dev container in devcontainer.json&nbsp;<A href="https://github.com/qmacro/capb2b/pull/1" target="_blank" rel="nofollow noopener noreferrer">https://github.com/qmacro/capb2b/pull/1</A>&nbsp;</LI><LI>Exercise 11 of the Service integration with CAP CodeJam&nbsp;<A href="https://github.com/SAP-samples/cap-service-integration-codejam/tree/main/exercises/11-associate-local-remote-entities" target="_blank" rel="nofollow noopener noreferrer">https://github.com/SAP-samples/cap-service-integration-codejam/tree/main/exercises/11-associate-local-remote-entities</A>&nbsp;</LI><LI>The REST Client instructions in test.http, demonstrating the QUERY, READ, CREATE and DELETE OData operations and showing the CAP server handles default all behaviour for us!&nbsp;<A href="https://github.com/qmacro/capb2b/blob/main/test.http" target="_blank" rel="nofollow noopener noreferrer">https://github.com/qmacro/capb2b/blob/main/test.http</A>&nbsp;</LI></UL> 2024-02-16T14:35:46.519000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-6/ev-p/13607897 Back to basics with SAP Cloud Application Programming Model (CAP) - part 6 2024-02-16T14:45:49.657000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>In this episode, we head back to our CDS definitions, stare at the cuid aspect and what it implies, and then start improving our Books and Authors entity definitions. Everyone welcome, especially beginners, come and join us for friendly chat and curiosity-driven learning-by-doing!</SPAN></P> 2024-02-16T14:45:49.657000+01:00 https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-3/m-p/13615751#M2026696 Re: February Developer Challenge - CAP Plugins: Week 3 2024-02-22T13:13:44.700000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Main task: showing change tracking of the Books entity's title element:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-02-22 at 12.05.39.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/69288iEF974814E299048E/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-02-22 at 12.05.39.png" alt="Screenshot 2024-02-22 at 12.05.39.png" /></span></P><P>Bonus: showing change tracking of the Books entity's author element, but ensuring that the value of the name element from the Association to Authors is shown, rather than just the ID from the managed association's foreign key field (author_ID):</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-02-22 at 12.09.18.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/69291iAE31E932F5B33FC0/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-02-22 at 12.09.18.png" alt="Screenshot 2024-02-22 at 12.09.18.png" /></span></P> 2024-02-22T13:13:44.700000+01:00 https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-3/m-p/13615756#M2026697 Re: February Developer Challenge - CAP Plugins: Week 3 2024-02-22T13:18:26.405000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>OK folks, so how many of you here went for the beautiful approach that CAP offers, moreover _encourages_, which is the ability to separate concerns?</P><P>In other words, who annotated the definitions in `db/schema.cds` directly, and who created a separate new CDS file and used the `annotate` directive (<A href="https://cap.cloud.sap/docs/cds/cdl#the-annotate-directive" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/cds/cdl#the-annotate-directive</A>)?&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/139">@thomas_jung</a>&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/107">@ajmaradiaga</a>&nbsp;and I would love to know!&nbsp;</P> 2024-02-22T13:18:26.405000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-6/ec-p/13616853#M470 Re: Back to basics with SAP Cloud Application Programming Model (CAP) - part 6 2024-02-23T10:51:45.912000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P>Hi there - this is not the right place to ask a question - please head over to <A href="https://community.sap.com/t5/technology-q-a/qa-p/technology-questions" target="_self">Technology Q&amp;A</A> and ask there, tagging it with SAP Cloud Application Programming Model too. Please also make sure you supply more detail - as it stands, it would be quite hard to give you an answer anyway. Good luck!</P> 2024-02-23T10:51:45.912000+01:00 https://community.sap.com/t5/sap-community/back-to-basics-with-sap-cloud-application-programming-model-cap-part-6/ec-p/13616909#M471 Re: Back to basics with SAP Cloud Application Programming Model (CAP) - part 6 2024-02-23T11:39:11.690000+01:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><SPAN>Here are the resources mentioned in this episode:</SPAN></P><UL><LI><SPAN>This week's SAP Developer News&nbsp;<A href="https://www.youtube.com/watch?v=hHPTbdgvvFk" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/watch?v=hHPTbdgvvFk</A></SPAN></LI><LI><SPAN>SAP CodeTalk playlist&nbsp;<A href="https://www.youtube.com/playlist?list=PL6RpkC85SLQB4SrWDL_VpeZnDJ1pcLRpA" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/playlist?list=PL6RpkC85SLQB4SrWDL_VpeZnDJ1pcLRpA</A></SPAN></LI><LI>Edge Integration Cell playlist&nbsp;<A href="https://www.youtube.com/playlist?list=PL6RpkC85SLQAy8g4peerZFjOu9Hxf4TyZ" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/playlist?list=PL6RpkC85SLQAy8g4peerZFjOu9Hxf4TyZ</A>&nbsp;</LI><LI>February Developer Challenge on CAP plugins, week 3&nbsp;<A href="https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-3/td-p/13614397" target="_blank">https://community.sap.com/t5/application-development-discussions/february-developer-challenge-cap-plugins-week-3/td-p/13614397</A>&nbsp;</LI><LI>The small repo accompanying this series, now containing `test.http`&nbsp;<A href="https://github.com/qmacro/capb2b" target="_blank" rel="nofollow noopener noreferrer">https://github.com/qmacro/capb2b</A>&nbsp;</LI><LI>(Capire) Aspect `cuid`&nbsp;<A href="https://cap.cloud.sap/docs/cds/common#aspect-cuid" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/cds/common#aspect-cuid</A>&nbsp;</LI><LI>RFC Request For Comments&nbsp;<A href="https://en.wikipedia.org/wiki/Request_for_Comments" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Request_for_Comments</A></LI><LI>Atom Publishing Protocol RFC5023&nbsp;<A href="https://datatracker.ietf.org/doc/html/rfc5023" target="_blank" rel="nofollow noopener noreferrer">https://datatracker.ietf.org/doc/html/rfc5023</A>&nbsp;</LI><LI>HTTP 1.1 RFC2616&nbsp;<A href="https://datatracker.ietf.org/doc/html/rfc5023" target="_blank" rel="nofollow noopener noreferrer">https://datatracker.ietf.org/doc/html/rfc5023</A></LI><LI>UUID RFC4122&nbsp;<A href="https://datatracker.ietf.org/doc/html/rfc4122" target="_blank" rel="nofollow noopener noreferrer">https://datatracker.ietf.org/doc/html/rfc4122</A>&nbsp;</LI><LI>Nomenclature&nbsp;<A href="https://en.wikipedia.org/wiki/Nomenclature" target="_blank" rel="nofollow noopener noreferrer">https://en.wikipedia.org/wiki/Nomenclature</A>&nbsp;</LI><LI>(Capire) Domain Modeling - Prefer Canonic Keys&nbsp;<A href="https://cap.cloud.sap/docs/guides/domain-modeling#prefer-canonic-keys" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/guides/domain-modeling#prefer-canonic-keys</A>&nbsp;</LI><LI>(Capire) Built-in Types&nbsp;<A href="https://cap.cloud.sap/docs/cds/types#built-in-types" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/cds/types#built-in-types</A>&nbsp;</LI><LI>Crypto: randomUUID() method in Node.js&nbsp;<A href="https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID" target="_blank" rel="nofollow noopener noreferrer">https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID</A>&nbsp;</LI><LI>Bash "here strings" with `&lt;&lt;&lt;`&nbsp;<A href="https://tldp.org/LDP/abs/html/x17837.html" target="_blank" rel="nofollow noopener noreferrer">https://tldp.org/LDP/abs/html/x17837.html</A>&nbsp;</LI><LI>(Capire) SQLite - Persistent Databases&nbsp;<A href="https://cap.cloud.sap/docs/guides/databases-sqlite#persistent-databases" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/guides/databases-sqlite#persistent-databases</A>&nbsp;</LI><LI>The <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/163398">@cap</a>-js/sqlite package on NPM&nbsp;<A href="https://www.npmjs.com/package/@cap-js/sqlite" target="_blank" rel="nofollow noopener noreferrer">https://www.npmjs.com/package/@cap-js/sqlite</A></LI><LI>(Capire) cds.utils - Method: uuid()&nbsp;<A href="https://cap.cloud.sap/docs/node.js/cds-utils#uuid" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/node.js/cds-utils#uuid</A>&nbsp;</LI><LI>(Capire) Tools - cds repl&nbsp;<A href="https://cap.cloud.sap/docs/tools/#cds-repl" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/tools/#cds-repl</A>&nbsp;</LI></UL> 2024-02-23T11:39:11.690000+01:00