<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7986679425286454345</id><updated>2026-10-05T00:31:25.699+03:00</updated><category term="C#"/><category term="Source Code"/><category term="WPF"/><category term="XAML"/><category term="DataGrid"/><category term="Java"/><category term="Design Patterns"/><category term="LINQ"/><category term="AngularJS"/><category term="JavaScript"/><category term="Multithreading"/><category term="SQL"/><category term="TPL"/><category term="WPF Styles"/><category term="XML"/><category term="AI"/><category term="Job Interview"/><category term="Lambda Expression"/><category term="Logging"/><category term="MVVM"/><category term="MongoDB"/><category term="Regex"/><category term="WPF Animation"/><category term="AWS"/><category term="Big Data"/><category term="CLI"/><category term="Claude"/><category term="Cloud Technologies"/><category term="Codex"/><category term="Cursor"/><category term="DevOps"/><category term="Events"/><category term="Extended WPF Toolkit"/><category term="Infragistics"/><category term="JSON"/><category term="MCP"/><category term="MEF"/><category term="Machine Learning"/><category term="Microservices"/><category term="OpenSource"/><category term="Performance"/><category term="Polymorphism"/><category term="Publishing"/><category term="RESTful"/><category term="Recursion"/><category term="Redis Cluster"/><category term="Reflection"/><category term="SQLite"/><category term="Spring"/><category term="Survey"/><category term="Validation"/><category term="Visual Studio"/><category term="WCF"/><category term="WinForms"/><category term="Windows Service"/><category term="XSLT"/><category term="batch"/><category term="cmd"/><category term="robocopy"/><category term="table tennis equipment"/><title type='text'>Code Arsenal - Programming Tutorials and Code Samples</title><subtitle type='html'>CodeArsenal.Net - Programming Tutorials and Code Samples for Software Developers.&#xa;This site focused on revealing solutions for various programming problems and software engineering approaches.&#xa;You can Download Example&#39;s Source Code.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.codearsenal.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-6648916622020636432</id><published>2026-03-15T16:32:00.003+02:00</published><updated>2026-03-15T16:32:44.266+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="Claude"/><category scheme="http://www.blogger.com/atom/ns#" term="CLI"/><category scheme="http://www.blogger.com/atom/ns#" term="Codex"/><category scheme="http://www.blogger.com/atom/ns#" term="Cursor"/><category scheme="http://www.blogger.com/atom/ns#" term="MCP"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenSource"/><title type='text'>Memo - persistent, local-first memory for AI coding agents</title><content type='html'>&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;The problem with AI coding assistants: every session starts from zero.&lt;/span&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;You spend an hour with Claude figuring out how your auth flow works, why that API returns 429s under load, or how to properly configure your test database. Real progress.&lt;/span&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;Next week, different session — you&#39;re explaining it all over again.&lt;/span&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;I built &lt;a href=&quot;https://github.com/ybonda/memo&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;memo&lt;/a&gt; — a local memory layer for AI coding agents (Claude Code, Cursor, Codex, or anything MCP-compatible). It gives your AI assistant persistent, searchable memory across all sessions and projects.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgizuELepRhH1jyMMrrd-N_WN_NFz9DzqK0neqH9xnUSn3uOIro-umzlcVBp1DTgtJJfzy3gIHSzkzzYNWr4oddL8E1FB5J3H6dZMAj_afEgc9hRbwSM6A6oxF2xh5KVKQhVzlVxBRTFbgcOOuQMT4_l3rJ4Pa803RmDgqy-pv-JK0q60hkq2xrFu2QuT2/s1024/memo.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Memo&quot; border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;683&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgizuELepRhH1jyMMrrd-N_WN_NFz9DzqK0neqH9xnUSn3uOIro-umzlcVBp1DTgtJJfzy3gIHSzkzzYNWr4oddL8E1FB5J3H6dZMAj_afEgc9hRbwSM6A6oxF2xh5KVKQhVzlVxBRTFbgcOOuQMT4_l3rJ4Pa803RmDgqy-pv-JK0q60hkq2xrFu2QuT2/w213-h320/memo.jpeg&quot; title=&quot;Memo - persistent, local-first memory for AI coding agents&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;Written in Go, runs 100% locally. Nothing leaves your machine!&lt;/span&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;Uses SQLite + vector search and an on-device embedding model, so it finds relevant memories even when you phrase things differently.&lt;/span&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;/span&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;How I use it:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit; font-size: 14px; white-space-collapse: preserve;&quot;&gt;When I figure out why something works a certain way — an undocumented API quirk, a tricky config, a non-obvious design decision — I tell Claude to save it. Next time that context is needed, it&#39;s already there.&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit; font-size: 14px; white-space-collapse: preserve;&quot;&gt;When onboarding onto a new codebase, I save architecture notes and gotchas as I learn them. Weeks later, Claude already has the context instead of me re-reading the same code.&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit; font-size: 14px; white-space-collapse: preserve;&quot;&gt;Over time it becomes a personal knowledge base that your AI assistant actually uses — and it starts surfacing relevant context without you asking.&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;brew install ybonda/tap/memo&lt;/span&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;claude mcp add --scope user memo -- memo serve&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box; font-size: 14px; white-space-collapse: preserve;&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;That&#39;s it. Persistent memory across all your projects&amp;nbsp;— everything saved locally in &lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;~/.memo/memories.db&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;a href=&quot;https://github.com/ybonda/memo&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;GitHub repo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/6648916622020636432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2026/03/memo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6648916622020636432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6648916622020636432'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2026/03/memo.html' title='Memo - persistent, local-first memory for AI coding agents'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgizuELepRhH1jyMMrrd-N_WN_NFz9DzqK0neqH9xnUSn3uOIro-umzlcVBp1DTgtJJfzy3gIHSzkzzYNWr4oddL8E1FB5J3H6dZMAj_afEgc9hRbwSM6A6oxF2xh5KVKQhVzlVxBRTFbgcOOuQMT4_l3rJ4Pa803RmDgqy-pv-JK0q60hkq2xrFu2QuT2/s72-w213-h320-c/memo.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-1489024957326546560</id><published>2026-02-04T23:39:00.001+02:00</published><updated>2026-02-04T23:39:18.903+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="table tennis equipment"/><title type='text'>TTSensei — The Ultimate Table Tennis Equipment Database</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF4LFE_9r_sP7Z13NWrq9kzAiKla-SFNqjussi-hL6-_ErjTXu38AukMqRbEd0Q7WTuvonwesYSFeLT2nepz5KBlRucpmg-z7z97qPzUlFW0IqfSoeqg0kRdtTsTs1U3VeXY-qOaZE2C9k3fy1cMXv0ZsK92Ezu9HpItxMihgehyWsJFuAN4ZaNI4w2coU/s1600/ttsensei-logo.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1598&quot; data-original-width=&quot;1600&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF4LFE_9r_sP7Z13NWrq9kzAiKla-SFNqjussi-hL6-_ErjTXu38AukMqRbEd0Q7WTuvonwesYSFeLT2nepz5KBlRucpmg-z7z97qPzUlFW0IqfSoeqg0kRdtTsTs1U3VeXY-qOaZE2C9k3fy1cMXv0ZsK92Ezu9HpItxMihgehyWsJFuAN4ZaNI4w2coU/s320/ttsensei-logo.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Choosing the right table tennis blade sounds straightforward until you actually start looking. Hundreds of brands, thousands of models, and every one of them described with vague marketing language like &quot;excellent feel&quot; or &quot;offensive power.&quot; For players who want real data before spending their money, the options have always been limited — scattered forum threads, a handful of outdated review sites, and word of mouth.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;a href=&quot;https://ttsensei.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;TTSensei&lt;/a&gt; takes a completely different approach.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;What Makes TTSensei Different?&lt;/h4&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;The platform hosts one of the most detailed table tennis equipment databases you&#39;ll find anywhere. Over 2,400 blades from 100+ brands are catalogued with more than 35 specifications each — not just the basics like weight and speed class, but granular details like ply composition, layer materials, blade thickness, and construction method.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;What really stands out is how the ratings work. Each blade gets scored on speed, control, spin, and other dimensions, but every score comes with a written breakdown explaining what it means in practice. You won&#39;t just see a number — you&#39;ll understand whether a blade&#39;s speed comes from stiffness or flex, and what that implies for your technique. The rubber section works the same way, with in-depth characteristics and performance analysis that help you understand how a rubber pairs with different blades.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;More Than a Database&lt;/h4&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;a href=&quot;https://ttsensei.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;TTSensei&lt;/a&gt; has grown into a full table tennis hub. The platform tracks professional players with detailed profiles covering their equipment choices, career history, and playing styles. It provides match coverage with scores and tactical breakdowns from professional events, giving you more than just results.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;There&#39;s also a news section that keeps up with tournament outcomes, new product releases, and what&#39;s happening in the sport globally. Players can join the community forum to swap equipment opinions, discuss technique, or get advice from other enthusiasts. And for anyone looking to save money or offload gear they no longer use, &lt;a href=&quot;https://ttsensei.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;TTSensei&lt;/a&gt; runs a community marketplace where registered members can buy and sell used blades, rubbers, and accessories directly.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;Independent and Unbiased&lt;/h4&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;&lt;a href=&quot;https://ttsensei.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;TTSensei&lt;/a&gt; doesn&#39;t accept paid reviews or sponsored placements. Ratings are driven by equipment performance and data, not by who&#39;s paying for advertising. The team uses AI technologies in their research workflows to ensure consistency across thousands of products, but the priority is always accuracy over promotion.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;Worth a Bookmark&lt;/h4&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Whether you&#39;re an experienced competitive player fine-tuning your setup, a coach guiding students through equipment decisions, or a recreational player who just wants to know what the pros are using — &lt;a href=&quot;https://ttsensei.com/&quot; target=&quot;_blank&quot;&gt;TTSensei&lt;/a&gt; has something useful for you. The marketplace alone makes it worth checking out if you&#39;re on a budget.&lt;/p&gt;
&lt;p class=&quot;font-claude-response-body break-words whitespace-normal leading-[1.7]&quot;&gt;Take a look at &lt;a href=&quot;http://ttsensei.com&quot;&gt;ttsensei.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/1489024957326546560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2026/02/ttsensei.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/1489024957326546560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/1489024957326546560'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2026/02/ttsensei.html' title='TTSensei — The Ultimate Table Tennis Equipment Database'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF4LFE_9r_sP7Z13NWrq9kzAiKla-SFNqjussi-hL6-_ErjTXu38AukMqRbEd0Q7WTuvonwesYSFeLT2nepz5KBlRucpmg-z7z97qPzUlFW0IqfSoeqg0kRdtTsTs1U3VeXY-qOaZE2C9k3fy1cMXv0ZsK92Ezu9HpItxMihgehyWsJFuAN4ZaNI4w2coU/s72-c/ttsensei-logo.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-6677536021469714356</id><published>2025-04-21T19:56:00.002+03:00</published><updated>2025-04-21T19:56:22.222+03:00</updated><title type='text'>AIgregator - All AI Tools in One Place</title><content type='html'>&lt;p&gt;&amp;nbsp;We are happy to announce our new project:&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://aigregator.com&quot;&gt;AIgregator.com&lt;/a&gt;&lt;/b&gt;!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSG6QoAupgNrWWA770ofGnjXRGim5Y2z_2D0fk5l3yLcj7knjcVa-LbI3uBTPAoDzYarsjac_rUsIC0uXJgMp6LDIhpW0pbRGokM-bUkn2hd1FVSc1i0B7A5AtoXs06KAHezReeILlKZNb5Qm1wSdlFQWedhr5d064T1J9HjsFSKogHhwpdzIXGA-embPg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1778&quot; data-original-width=&quot;2366&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgSG6QoAupgNrWWA770ofGnjXRGim5Y2z_2D0fk5l3yLcj7knjcVa-LbI3uBTPAoDzYarsjac_rUsIC0uXJgMp6LDIhpW0pbRGokM-bUkn2hd1FVSc1i0B7A5AtoXs06KAHezReeILlKZNb5Qm1wSdlFQWedhr5d064T1J9HjsFSKogHhwpdzIXGA-embPg&quot; width=&quot;319&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In today&#39;s rapidly evolving AI landscape, finding the right tools can feel overwhelming. That&#39;s where &lt;a href=&quot;https://aigregator.com&quot; target=&quot;_blank&quot;&gt;AIgregator&lt;/a&gt; comes in—a simple yet powerful platform designed to simplify your search for AI solutions.&lt;/p&gt;&lt;p class=&quot;whitespace-pre-wrap break-words&quot;&gt;&lt;b&gt;AIgregator&lt;/b&gt; (&lt;a href=&quot;https://aigregator.com&quot;&gt;aigregator.com&lt;/a&gt;) serves as a centralized hub for discovering a wide range of AI tools, applications, and resources. Whether you&#39;re a professional looking for industry-specific solutions, a developer seeking new tools, or simply curious about what AI can do for you, this website offers a structured approach to navigating the AI ecosystem.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p class=&quot;whitespace-pre-wrap break-words&quot;&gt;What makes &lt;a href=&quot;https://aigregator.com/&quot; target=&quot;_blank&quot;&gt;AIgregator&lt;/a&gt; particularly useful is its organized categorization system. Users can browse through various sections including AI image generators, text tools, audio applications, and more. This classification helps visitors quickly find tools relevant to their specific needs without wading through endless search results.&lt;/p&gt;&lt;p class=&quot;whitespace-pre-wrap break-words&quot;&gt;The team behind the platform verifies and regularly updates all tools information, ensuring that users always have access to the most current details about features, pricing, and availability.&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;whitespace-pre-wrap break-words&quot;&gt;Registered users can bookmark their favorite AI tools, creating a personalized collection that&#39;s easily accessible with each visit.&lt;/p&gt;&lt;p class=&quot;whitespace-pre-wrap break-words&quot;&gt;Best of all, &lt;a href=&quot;https://aigregator.com/&quot; target=&quot;_blank&quot;&gt;AIgregator&lt;/a&gt; is completely free to use. There are no subscription fees, hidden costs, or premium tiers—the entire platform is accessible to everyone at no charge.&lt;/p&gt;&lt;p class=&quot;whitespace-pre-wrap break-words&quot;&gt;Visit &lt;a href=&quot;http://aigregator.com&quot;&gt;aigregator.com&lt;/a&gt; today and start exploring the future of AI at your fingertips!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/6677536021469714356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2025/04/aigregator-all-ai-tools-in-one-place.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6677536021469714356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6677536021469714356'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2025/04/aigregator-all-ai-tools-in-one-place.html' title='AIgregator - All AI Tools in One Place'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgSG6QoAupgNrWWA770ofGnjXRGim5Y2z_2D0fk5l3yLcj7knjcVa-LbI3uBTPAoDzYarsjac_rUsIC0uXJgMp6LDIhpW0pbRGokM-bUkn2hd1FVSc1i0B7A5AtoXs06KAHezReeILlKZNb5Qm1wSdlFQWedhr5d064T1J9HjsFSKogHhwpdzIXGA-embPg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-5042766579397876102</id><published>2018-03-28T09:23:00.001+03:00</published><updated>2018-03-28T09:27:13.294+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><title type='text'>C# 7 New Features</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
C# 7 adds a number of new features and focuses on data consumption, code simplification and performance. The biggest features have already been considered - tuples, local functions, matching with the pattern and throwing expressions. But there are other new opportunities, both large and small. They all combine to make the code more efficient and understandable, so that everyone is happy and productive.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s look at the rest of the features of the new version of C #. So! Let&#39;s start!&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Out&lt;/h3&gt;
&lt;div&gt;
Currently, in C #, using out parameters is not as flexible as we would like. Before calling a method with out parameters, you first need to declare the variables to pass to the method. Because these variables are usually not initialized (since they will be overwritten by the method), you can not use var for their declaration, so you must always specify the full type:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;PrintCoordinates&lt;/span&gt;(Point p)
{
  &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; x, y; &lt;span style=&quot;color: #888888;&quot;&gt;// have to &quot;predeclare&quot;&lt;/span&gt;
  p.GetCoordinates(&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;out&lt;/span&gt; x, &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;out&lt;/span&gt; y);
  WriteLine(&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;({x}, {y})&quot;&lt;/span&gt;);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Literals Improvements&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;var&lt;/span&gt; d = &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;123&lt;/span&gt;_456;
&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;var&lt;/span&gt; x = &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;0&lt;/span&gt;xAB_CD_EF;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
You can put this &lt;b style=&quot;background-color: yellow;&quot;&gt;_&lt;/b&gt; symbol anywhere between the numbers the right number of times to improve readability. It does not affect the value.
This separator can be used with the types byte, int, long, decimal, float and double.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Middle --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;2969384752&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Ref returns and locals
&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
You can now pass method parameters by reference (with the &lt;b&gt;ref &lt;/b&gt;modifier), you can also return them by reference, and also save them by reference in local variables.&lt;/div&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;ref&lt;/span&gt; &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;Find&lt;/span&gt;(&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; number, &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt;[] numbers)
{
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; i = &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;0&lt;/span&gt;; i &amp;lt; numbers.Length; i++)
  {
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; (numbers[i] == number)
    {
      &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;ref&lt;/span&gt; numbers[i]; &lt;span style=&quot;color: #888888;&quot;&gt;// return the storage location, not the value&lt;/span&gt;
    }
  }
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;IndexOutOfRangeException&lt;/span&gt;(&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;{nameof(number)} not found&quot;&lt;/span&gt;);
}

&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt;[] array = { &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;15&lt;/span&gt;, -&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;39&lt;/span&gt;, &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;7&lt;/span&gt;, &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;14&lt;/span&gt;, -&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;12&lt;/span&gt; };
&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;ref&lt;/span&gt; &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; place = &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;ref&lt;/span&gt; Find(&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;7&lt;/span&gt;, array); &lt;span style=&quot;color: #888888;&quot;&gt;// aliases 7&#39;s place in the array&lt;/span&gt;
place = &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;9&lt;/span&gt;; &lt;span style=&quot;color: #888888;&quot;&gt;// replaces 7 with 9 in the array&lt;/span&gt;
WriteLine(array[&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;4&lt;/span&gt;]); &lt;span style=&quot;color: #888888;&quot;&gt;// prints 9&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
This is useful for returning specific fields from large data structures. For example, a game can contain its data in a large pre-distributed array of structures (to avoid pauses in garbage collection). Now methods can return a reference directly to such a structure through which the calling method can read and modify it.&lt;br /&gt;
&lt;br /&gt;
There are some security limitations:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;You can return only those links that are &quot;safe to return&quot;: only those that were sent to you, and those that point to fields in objects&lt;/li&gt;
&lt;li&gt;Local &lt;b&gt;ref &lt;/b&gt;variables are initialized in a specific storage location and can not be changed to point to another&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Returned generic types in async methods&lt;/h3&gt;
&lt;br /&gt;
&lt;div&gt;
Until now, async methods in C# have to either return void, Task, or Task &amp;lt;T&amp;gt;. C# 7 allows you to define other types in such a way that they can be returned from the asynchronous method. The return type must still match the asynchronous pattern, which means that the GetAwaiter method must be available. A concrete example: in the .NET Framework, a new ValueTask type is added, allowing you to use this new language feature&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Since Task and Task &amp;lt;T&amp;gt; are reference types, allocating memory in performance-affecting segments (especially when allocating memory in limited cycles) can seriously reduce performance. Support for generic return value types allows you to return a small meaningful type instead of a reference type, so you can prevent excessive allocation of memory.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #bb0066; font-weight: bold;&quot;&gt;Program&lt;/span&gt;
{
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;static&lt;/span&gt; Random rnd;

  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;Main&lt;/span&gt;()
  {
    Console.WriteLine(&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;You rolled {GetDiceRoll().Result}&quot;&lt;/span&gt;);
  }

  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;async&lt;/span&gt; ValueTask &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;GetDiceRoll&lt;/span&gt;()
  {
    Console.WriteLine(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;...Shaking the dice...&quot;&lt;/span&gt;);
    &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; roll1 = &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;await&lt;/span&gt; Roll();
    &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; roll2 = &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;await&lt;/span&gt; Roll();
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; roll1 + roll2;
  }

  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;async&lt;/span&gt; ValueTask &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;Roll&lt;/span&gt;()
  {
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; (rnd == &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;null&lt;/span&gt;)
    rnd = &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; Random();

    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;await&lt;/span&gt; Task.Delay(&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;500&lt;/span&gt;);
    &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; diceRoll = rnd.Next(&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;7&lt;/span&gt;);
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; diceRoll;
  }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/5042766579397876102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2018/03/c-sharp-7-new-features.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/5042766579397876102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/5042766579397876102'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2018/03/c-sharp-7-new-features.html' title='C# 7 New Features'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-8335358315067412040</id><published>2018-02-22T19:03:00.000+02:00</published><updated>2018-03-05T14:08:28.142+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS"/><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Big Data"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Technologies"/><category scheme="http://www.blogger.com/atom/ns#" term="DevOps"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Machine Learning"/><category scheme="http://www.blogger.com/atom/ns#" term="Microservices"/><category scheme="http://www.blogger.com/atom/ns#" term="Publishing"/><title type='text'>Become a Published Author on CodeFlex.co</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({
          google_ad_client: &quot;ca-pub-7648239438261494&quot;,
          enable_page_level_ads: true
     });
&lt;/script&gt;
&lt;br /&gt;
&lt;a href=&quot;http://codeflex.co/&quot;&gt;Codeflex.co&lt;/a&gt;&amp;nbsp;is a software development &amp;amp; DevOps community web portal that allows to every developer become a recognized expert in the field by publishing their articles directly on &lt;a href=&quot;http://codeflex.co/&quot; target=&quot;_blank&quot;&gt;CodeFlex website&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/Pna1ZdyV3kg/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;450&quot; src=&quot;https://www.youtube.com/embed/Pna1ZdyV3kg?feature=player_embedded&quot; width=&quot;728&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h1 style=&quot;background-color: white; border: 0px none; color: #333333; font-family: Helvetica; font-size: 36px; font-weight: 400; line-height: 1em; list-style: none; margin: 25px 0px 10px; outline: none; padding: 0px;&quot;&gt;
What are your benefits?&lt;/h1&gt;
&lt;ul style=&quot;background-color: white; border: 0px none; color: #333333; font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 15px; list-style: none; margin: 0px 0px 25px 10px; outline: none; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;You’ll reach a worldwide audience of targeted readers.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;You’ll build your reputation as an expert in the software development and DevOps.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;Recruiters from the best companies will be impressed by your expertise - you&#39;ll get your job easily.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;You’ll improve your writing skills.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;You’ll contribute to the community, sharing is caring.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;color: #333333; font-family: &amp;quot;tahoma&amp;quot; , &amp;quot;arial&amp;quot; , &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h1 class=&quot;name post-title entry-title&quot; itemprop=&quot;itemReviewed&quot; itemscope=&quot;&quot; itemtype=&quot;http://schema.org/Thing&quot; style=&quot;background-color: white; border: 0px none; color: #333333; font-family: Oswald, arial, Georgia, serif; font-size: 28px; font-weight: 400; list-style: none; margin: 0px 0px 10px; outline: none; padding: 0px;&quot;&gt;
&lt;span itemprop=&quot;name&quot; style=&quot;border: 0px none; list-style: none; margin: 0px; outline: none; padding: 0px;&quot;&gt;Submission Guidelines&lt;/span&gt;&lt;/h1&gt;
&lt;div class=&quot;post-meta&quot; style=&quot;background-color: white; border-bottom-color: rgb(242, 242, 242); border-image: initial; border-left-color: initial; border-right-color: initial; border-style: none none solid; border-top-color: initial; border-width: 0px 0px 1px; color: #aaaaaa; font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 10px; list-style: none; margin-bottom: 10px; margin-top: 7px; outline: none; padding: 0px 0px 5px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px none; clear: both; color: #333333; font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px; list-style: none; margin: 0px; outline: none; padding: 0px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;entry&quot; style=&quot;background-color: white; border: 0px none; color: #333333; font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 15px !important; line-height: 1.5; list-style: none; margin: 0px; outline: none; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px none; list-style: none; outline: none; padding: 0px 0px 1em;&quot;&gt;
The&amp;nbsp;&lt;a href=&quot;http://www.javacodegeeks.com/join-us/w4g&quot; style=&quot;border: 0px none; color: #326693; list-style: none; margin: 0px; outline: none; padding: 0px; text-decoration-line: none; transition: all 0.2s ease-in-out;&quot;&gt;C&lt;/a&gt;odeFlex&amp;nbsp;articles may be of any topic but related to the technology field. We would love to publish articles in various categories including, but not limited to, programming languages, iOS/Android development, software architecture, open source, DevOps techniques etc.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;border: 0px none; list-style: none; outline: none; padding: 0px 0px 1em;&quot;&gt;
The newest technologies like Big Data, AI, Machine Learning, Microservices, Cloud Technologies, DevOps are more than welcomed.&lt;/div&gt;
&lt;div style=&quot;border: 0px none; list-style: none; outline: none; padding: 0px 0px 1em;&quot;&gt;
Please follow the guidelines below when submitting an article:&lt;/div&gt;
&lt;ul style=&quot;border: 0px none; list-style: none; margin: 0px 0px 25px 10px; outline: none; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;The article you provide has to be exclusively written for CodeFlex.co.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;Only unique content is allowed. In case the content is found to be duplicated, article will be rejected.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;The article should be of at least 250 words.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;The article has to be sent in MS Word format or similar (e.g. OpenOffice).&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;If applicable, your article should include also images such as diagrams, charts, graphs etc Images should be of the standard types (JPG, PNG, GIF. The images have to be embedded in your document.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;Please ensure copyright laws are followed on all images and content taken from web. Always provide appropriate credits to the original site or the owner if necessary.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;When your article is published you are welcomed to reply to any visitor’s comments. This will provide more exposure and engagement for your article.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;Any comment or topic that is insulting, abusive, sexual, offensive or breaks the law will not be tolerated.&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;CodeFlex team retain the right to reject any article that does not comply to the aforementioned guidelines without further explanation.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;border: 0px none; list-style: none; outline: none; padding: 0px 0px 1em;&quot;&gt;
Your submitted article should also include:&lt;/div&gt;
&lt;ul style=&quot;border: 0px none; list-style: none; margin: 0px 0px 25px 10px; outline: none; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;Title (Mandatory)&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;Keywords (Optional)&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;References (Optional)&lt;/li&gt;
&lt;li style=&quot;border: 0px none; list-style: disc outside none; margin: 0px 0px 5px 10px; outline: none; padding: 0px;&quot;&gt;About the author (Mandatory) - Your name, links, bio and if you wish your photo to be published.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;border: 0px none; list-style: none; outline: none; padding: 0px 0px 1em;&quot;&gt;
Please note that currently you are not allowed to directly publish your article. All submitted articles are reviewed and moderated first before they are published.&lt;br /&gt;
&lt;br /&gt;
&lt;h1 class=&quot;name post-title entry-title&quot; itemprop=&quot;itemReviewed&quot; itemscope=&quot;&quot; itemtype=&quot;http://schema.org/Thing&quot; style=&quot;border: 0px none; font-family: oswald, arial, georgia, serif; font-size: 28px; font-weight: 400; list-style: none; margin: 0px 0px 10px; outline: none; padding: 0px;&quot;&gt;
&lt;span itemprop=&quot;name&quot; style=&quot;border: 0px none; list-style: none; margin: 0px; outline: none; padding: 0px;&quot;&gt;Send your articles to:&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class=&quot;name post-title entry-title&quot; itemprop=&quot;itemReviewed&quot; itemscope=&quot;&quot; itemtype=&quot;http://schema.org/Thing&quot; style=&quot;border: 0px none; font-family: oswald, arial, georgia, serif; font-size: 28px; font-weight: 400; list-style: none; margin: 0px 0px 10px; outline: none; padding: 0px;&quot;&gt;
&lt;span itemprop=&quot;name&quot; style=&quot;border: 0px none; list-style: none; margin: 0px; outline: none; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBIb2w0fvCu0MotHzEBF2_D3D-bxhsNVFYC1KrYy7S5xxWgwStJDd50fATyQo5DpHFVYNkpcRMSIPOaFwz8hA8x2c8VYUTCoVrfsgwIbe1eWK6SfxHuO456TlC8ucBhVgZZu6L7ytfmPYd/s1600/codeflex-favicon.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;135&quot; data-original-width=&quot;774&quot; height=&quot;55&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBIb2w0fvCu0MotHzEBF2_D3D-bxhsNVFYC1KrYy7S5xxWgwStJDd50fATyQo5DpHFVYNkpcRMSIPOaFwz8hA8x2c8VYUTCoVrfsgwIbe1eWK6SfxHuO456TlC8ucBhVgZZu6L7ytfmPYd/s320/codeflex-favicon.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/8335358315067412040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2018/02/become-published-author-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8335358315067412040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8335358315067412040'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2018/02/become-published-author-programming.html' title='Become a Published Author on CodeFlex.co'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Pna1ZdyV3kg/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-8865748072751843075</id><published>2018-02-22T14:51:00.002+02:00</published><updated>2018-02-22T14:54:48.149+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Java File to String in one Line</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
This is the shortest version of how to read a file and convert it to String in Java:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #0c0c0c; color: #a9b7c6; font-family: &#39;Courier New&#39;; font-size: 9.8pt;&quot;&gt;&lt;span style=&quot;color: #86a6c7;&quot;&gt;String &lt;/span&gt;myFile = &lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
try&lt;/span&gt;{
    myFile = &lt;span style=&quot;color: #cc7832;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #6196d6;&quot;&gt;String&lt;/span&gt;(&lt;span style=&quot;color: #86a6c7;&quot;&gt;Files&lt;/span&gt;.&lt;span style=&quot;color: #cf2b90; font-style: italic;&quot;&gt;readAllBytes&lt;/span&gt;(&lt;span style=&quot;color: #86a6c7;&quot;&gt;Paths&lt;/span&gt;.&lt;span style=&quot;color: #cf2b90; font-style: italic;&quot;&gt;get&lt;/span&gt;(myFile.txt)) )&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;
}
&lt;span style=&quot;color: #cc7832;&quot;&gt;catch &lt;/span&gt;(&lt;span style=&quot;color: #86a6c7;&quot;&gt;IOException &lt;/span&gt;e)
{
    e.&lt;span style=&quot;color: #b48656;&quot;&gt;printStackTrace&lt;/span&gt;()&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;
}&lt;/pre&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/8865748072751843075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2018/02/java-file-to-string-in-one-line.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8865748072751843075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8865748072751843075'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2018/02/java-file-to-string-in-one-line.html' title='Java File to String in one Line'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-8293858803324644927</id><published>2016-10-09T17:35:00.000+03:00</published><updated>2017-06-07T23:24:54.672+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><title type='text'>C# 6.0 First Look</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.701961); font-family: &amp;quot;source sans pro&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;Check out new features in C# 6.0.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.701961); font-family: &amp;quot;source sans pro&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.701961); font-family: &amp;quot;source sans pro&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;Enjoy!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.701961); font-family: &amp;quot;source sans pro&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/YHWCFeE2L-4/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;450&quot; src=&quot;https://www.youtube.com/embed/YHWCFeE2L-4?feature=player_embedded&quot; width=&quot;728&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.701961); font-family: &amp;quot;source sans pro&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/8293858803324644927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/10/c-60-first-look.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8293858803324644927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8293858803324644927'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/10/c-60-first-look.html' title='C# 6.0 First Look'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/YHWCFeE2L-4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-4457196642679055320</id><published>2016-09-26T08:12:00.001+03:00</published><updated>2016-09-26T08:12:18.456+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Redis Cluster"/><title type='text'>Redis Cluster Setup</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4602852119&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Redis is NoSQL key-value in-memory distributed data store. It can be used as super-fast database, cache or message broker.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Please check out this very useful article about Redis Cluster Setup on Linux:&amp;nbsp;&lt;a href=&quot;http://codeflex.co/configuring-redis-cluster-on-linux/&quot;&gt;Configuring and Running Redis Cluster on Linux&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://codeflex.co/configuring-redis-cluster-on-linux/&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;345&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1172L41fVlXrjuRrvugeuv1bFvIk7Uj-8lATCbB2tg4MjOTNU7VNMdy6VDD3W0paYJshBySWkvdvH_Q6YURL68tjiGlix-Z_S_t48jmcD7YL4jxyNHxnh33lm_06z9rhKcLUrTWtq70XU/s400/redis-cluster-setup.png&quot; title=&quot;Redis Cluster Setup&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/4457196642679055320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/09/redis-cluster-setup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4457196642679055320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4457196642679055320'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/09/redis-cluster-setup.html' title='Redis Cluster Setup'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1172L41fVlXrjuRrvugeuv1bFvIk7Uj-8lATCbB2tg4MjOTNU7VNMdy6VDD3W0paYJshBySWkvdvH_Q6YURL68tjiGlix-Z_S_t48jmcD7YL4jxyNHxnh33lm_06z9rhKcLUrTWtq70XU/s72-c/redis-cluster-setup.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-4006467231663659974</id><published>2016-02-21T11:01:00.001+02:00</published><updated>2016-02-21T11:06:37.657+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Lambda Expression"/><title type='text'>Java 8 Finding Specific Element in List with Lambda</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
As you probably know in Java 8 we can use Lambda expression for different manipulations with collections.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRkY6w_0SnabizQZ4XrrZvrLkHiAGhyGQjzTUXOl4o_Fbh_2xddora5xJhfN4hGqmdzr0ZNpWQqRXgNcGrUl4fyD-icmzPlPQ-fPUVXeNdLbzDRuZNhA4DFmqzQlrU1tha9UGDcojNo3xs/s1600/java8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;java8-lambda-expression&quot; border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRkY6w_0SnabizQZ4XrrZvrLkHiAGhyGQjzTUXOl4o_Fbh_2xddora5xJhfN4hGqmdzr0ZNpWQqRXgNcGrUl4fyD-icmzPlPQ-fPUVXeNdLbzDRuZNhA4DFmqzQlrU1tha9UGDcojNo3xs/s200/java8.png&quot; title=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you have a List with some custom objects inside and you want to find specific element in it you can use &lt;i&gt;stream().filter&lt;/i&gt; procedure of Lambda instead of &lt;i&gt;ForEach&lt;/i&gt; as you probably used to. Below is a simple example of this case.
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;List&amp;lt;RepositoryFile&amp;gt; fileList = response.getRepositoryFileList();
RepositoryFile file1 = fileList.stream().filter(f -&amp;gt; f.getName().contains(&lt;span class=&quot;str&quot;&gt;&quot;my-file.txt&quot;&lt;/span&gt;)).findFirst().orElse(&lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;);&lt;/pre&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So here we have filtered entire collection by specific condition. Notice that due to &lt;i&gt;orElse(null)&lt;/i&gt; at the end of the expression if no file was found then Lambda will return &lt;i&gt;null.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/4006467231663659974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/02/java-list-find-element-lambda.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4006467231663659974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4006467231663659974'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/02/java-list-find-element-lambda.html' title='Java 8 Finding Specific Element in List with Lambda'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRkY6w_0SnabizQZ4XrrZvrLkHiAGhyGQjzTUXOl4o_Fbh_2xddora5xJhfN4hGqmdzr0ZNpWQqRXgNcGrUl4fyD-icmzPlPQ-fPUVXeNdLbzDRuZNhA4DFmqzQlrU1tha9UGDcojNo3xs/s72-c/java8.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-3405199252352559836</id><published>2016-02-18T11:36:00.000+02:00</published><updated>2016-02-18T11:37:14.750+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="Regex"/><title type='text'>Java JSON Parser Example with Regex</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Recently I came across with problem where I needed to recognize and parse custom exception message inside JSON on Java server side. For that particular problem I used Regex.&lt;/div&gt;
&lt;br /&gt;
The JSON response format is like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1pUH_R_lJivZWE1QEyUQYQD_59lZFZuBlt9FS2c3XKmJf6JsNeaOiDLUiCcZIm3k2PqVKAob-dg81WSMciKHUVR15YurPVPR9sYh5LNye7u4b3vVjVFbXhnhaOLgqS4XLYH5Io47z-PM/s1600/json-with-exception-example.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;json-with-exception-message&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1pUH_R_lJivZWE1QEyUQYQD_59lZFZuBlt9FS2c3XKmJf6JsNeaOiDLUiCcZIm3k2PqVKAob-dg81WSMciKHUVR15YurPVPR9sYh5LNye7u4b3vVjVFbXhnhaOLgqS4XLYH5Io47z-PM/s1600/json-with-exception-example.png&quot; title=&quot;JSON with Exception message&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
And this is the code:&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; checkException(String response) throws ApiException {
        
    String errorCode = &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;;
    String message = &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;;
    Map&amp;lt;String, String&amp;gt; properties = &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;;

    Pattern errorCodePattern = Pattern.compile(&lt;span class=&quot;str&quot;&gt;&quot;\&quot;code\&quot;\\s*:\\s*\&quot;([^,]*)\&quot;,&quot;&lt;/span&gt;);
    Pattern messagePattern = Pattern.compile(&lt;span class=&quot;str&quot;&gt;&quot;\&quot;message\&quot;\\s*:\\s*\&quot;([^,]*)\&quot;,&quot;&lt;/span&gt;);
    Pattern statusPattern = Pattern.compile(&lt;span class=&quot;str&quot;&gt;&quot;\&quot;status\&quot;\\s*:\\s*\&quot;(FAILURE)\&quot;&quot;&lt;/span&gt;);        

    Matcher errorCodeMatcher = errorCodePattern.matcher(response);
    Matcher messageMatcher = messagePattern.matcher(response);
    Matcher statusMatcher = statusPattern.matcher(response);        

    boolean errorCodeFlag = errorCodeMatcher.find();
    boolean messageFlag = messageMatcher.find();
    boolean statusFlag = statusMatcher.find();                

    &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (errorCodeFlag &amp;amp;&amp;amp; messageFlag &amp;amp;&amp;amp; statusFlag) {
        
        Pattern propertiesPattern = Pattern.compile(&lt;span class=&quot;str&quot;&gt;&quot;\&quot;properties\&quot;\\s*:\\s*\\[(\\{[^\\]]*)&quot;&lt;/span&gt;);
        Pattern propertiesValuePattern = Pattern.compile(&lt;span class=&quot;str&quot;&gt;&quot;\&quot;value\&quot;\\s*:\\s*\&quot;([^\&quot;]*)\&quot;&quot;&lt;/span&gt;);
        Pattern propertiesKeyPattern = Pattern.compile(&lt;span class=&quot;str&quot;&gt;&quot;\&quot;key\&quot;\\s*:\\s*\&quot;([^\&quot;]*)\&quot;&quot;&lt;/span&gt;);

        Matcher propertiesMatcher = propertiesPattern.matcher(response);
        
        boolean propertiesFlag = propertiesMatcher.find();
        
        boolean keyFlag = &lt;span class=&quot;kwrd&quot;&gt;false&lt;/span&gt;;
        boolean valueFlag = &lt;span class=&quot;kwrd&quot;&gt;false&lt;/span&gt;;
        
        errorCode = errorCodeMatcher.group(1);
        message = messageMatcher.group(1);

        System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;\nJSON response contains exception:\n&quot;&lt;/span&gt;);
        System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;code:        &quot;&lt;/span&gt; + errorCode);
        System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;message:     &quot;&lt;/span&gt; + message);
        System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;status:      &quot;&lt;/span&gt; + statusMatcher.group(1));

        &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (propertiesFlag) {

            properties = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; HashMap&amp;lt;String, String&amp;gt;();
            String propertiesData = propertiesMatcher.group(1);

            Matcher keyMatcher = propertiesKeyPattern.matcher(propertiesData);
            Matcher valueMatcher = propertiesValuePattern.matcher(propertiesData);

            keyFlag = keyMatcher.find();
            valueFlag = valueMatcher.find();

            System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;properties:    &quot;&lt;/span&gt;);
            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (keyFlag &amp;amp;&amp;amp; valueFlag &amp;amp;&amp;amp; keyMatcher.groupCount() == valueMatcher.groupCount()) {
                &lt;span class=&quot;kwrd&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; i = 1; i &amp;lt;= keyMatcher.groupCount(); i++) {
                    System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;key: &quot;&lt;/span&gt; + keyMatcher.group(i) + &lt;span class=&quot;str&quot;&gt;&quot;  value: &quot;&lt;/span&gt; + valueMatcher.group(i));
                    properties.put(keyMatcher.group(i), valueMatcher.group(i));
                }
            }
            System.&lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;str&quot;&gt;&quot;&quot;&lt;/span&gt;);
        }
        &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ApiException(errorCode, message, properties);
    }
}&lt;/pre&gt;
The output:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP8XVW8Jbgil_1FoG3qXbWchJxC-Cgvy0l-nkWkgsaZEWJfChcrucS28iKKzRRbqhEz9R90MLGk1xvRuRRbPCYL-ms165sZFA-aD0iLd0C-GIB93Z-1XiFPKafycW23RGU7f1bV-Vdbz5E/s1600/json-parser-output.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;json-parser-output&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP8XVW8Jbgil_1FoG3qXbWchJxC-Cgvy0l-nkWkgsaZEWJfChcrucS28iKKzRRbqhEz9R90MLGk1xvRuRRbPCYL-ms165sZFA-aD0iLd0C-GIB93Z-1XiFPKafycW23RGU7f1bV-Vdbz5E/s1600/json-parser-output.png&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/3405199252352559836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/02/java-json-parser-example-regex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/3405199252352559836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/3405199252352559836'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/02/java-json-parser-example-regex.html' title='Java JSON Parser Example with Regex'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1pUH_R_lJivZWE1QEyUQYQD_59lZFZuBlt9FS2c3XKmJf6JsNeaOiDLUiCcZIm3k2PqVKAob-dg81WSMciKHUVR15YurPVPR9sYh5LNye7u4b3vVjVFbXhnhaOLgqS4XLYH5Io47z-PM/s72-c/json-with-exception-example.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-7176851521765726204</id><published>2016-02-17T19:05:00.001+02:00</published><updated>2016-02-17T19:05:14.307+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS"/><title type='text'>AngularJS Binding Syntax and Examples</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
AngularJS bindings cheat sheet:&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;One-way(data source -&amp;gt; view target):&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;{{expression}}&lt;/li&gt;
&lt;li&gt;[target] = &quot;expression&quot;&lt;/li&gt;
&lt;li&gt;bind-target = &quot;expression&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;One-way(view target -&amp;gt; data source):&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;(target) = &quot;statement&quot;&lt;/li&gt;
&lt;li&gt;on-target = &quot;statement&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Two-way:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;[(target)] = &quot;expression&quot;&lt;/li&gt;
&lt;li&gt;bindon-target = &quot;expression&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Now let&#39;s see some real life AngularJS binding examples:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Property:&lt;/span&gt;
&lt;style type=&quot;text/css&quot;&gt;
.csharpcode, .csharpcode pre
{
 font-size: small;
 color: black;
 font-family: Consolas, &quot;Courier New&quot;, Courier, Monospace;
 background-color: #ffffff;
 /*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #a31515; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
 background-color: #f4f4f4;
 width: 100%;
 margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;img&lt;/span&gt; [&lt;span class=&quot;attr&quot;&gt;src&lt;/span&gt;] = &lt;span class=&quot;kwrd&quot;&gt;&quot;carImageUrl&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;car-detail&lt;/span&gt; [&lt;span class=&quot;attr&quot;&gt;car&lt;/span&gt;]&lt;span class=&quot;kwrd&quot;&gt;=&quot;currentCar&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;car-detail&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;div&lt;/span&gt; [&lt;span class=&quot;attr&quot;&gt;ngClass&lt;/span&gt;] = &lt;span class=&quot;kwrd&quot;&gt;&quot;{selected: isSelected}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Event:&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;button&lt;/span&gt; (&lt;span class=&quot;attr&quot;&gt;click&lt;/span&gt;) = &lt;span class=&quot;kwrd&quot;&gt;&quot;onSave()&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;Save&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;button&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;car-detail&lt;/span&gt; (&lt;span class=&quot;attr&quot;&gt;deleted&lt;/span&gt;)&lt;span class=&quot;kwrd&quot;&gt;=&quot;onCarDeleted()&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;car-detail&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;myClick&lt;/span&gt; (&lt;span class=&quot;attr&quot;&gt;myClick&lt;/span&gt;)&lt;span class=&quot;kwrd&quot;&gt;=&quot;clicked=$event&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;click me&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Two-Way:&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;input&lt;/span&gt; [(&lt;span class=&quot;attr&quot;&gt;ngModel&lt;/span&gt;)]&lt;span class=&quot;kwrd&quot;&gt;=&quot;carName&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Attribute:&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;button&lt;/span&gt; [&lt;span class=&quot;attr&quot;&gt;attr&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;aria-label&lt;/span&gt;]&lt;span class=&quot;kwrd&quot;&gt;=&quot;help&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;help&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;button&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Class:&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;div&lt;/span&gt; [&lt;span class=&quot;attr&quot;&gt;class&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;special&lt;/span&gt;]&lt;span class=&quot;kwrd&quot;&gt;=&quot;isSpecial&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;Special&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Style:&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;button&lt;/span&gt; [&lt;span class=&quot;attr&quot;&gt;style&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;color&lt;/span&gt;] = &lt;span class=&quot;kwrd&quot;&gt;&quot;isSpecial ? &#39;red&#39; : &#39;blue&#39;&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/7176851521765726204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/02/angularjs-binding-syntax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/7176851521765726204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/7176851521765726204'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/02/angularjs-binding-syntax.html' title='AngularJS Binding Syntax and Examples'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-8100290295763901479</id><published>2016-02-15T19:25:00.002+02:00</published><updated>2016-02-15T19:26:55.247+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>What is Interpolation in AngularJS</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
Interpolation is such a process&amp;nbsp;when&amp;nbsp;AngularJS fetches a calculated string into the text between HTML element tag and within attribute assignments.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Let&#39;s see example of interpolation:&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;
.csharpcode, .csharpcode pre
{
 font-size: small;
 color: black;
 font-family: Consolas, &quot;Courier New&quot;, Courier, Monospace;
 background-color: #ffffff;
 /*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #a31515; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
 background-color: #f4f4f4;
 width: 100%;
 margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;h3&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
   {{title}}
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;img&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;src&lt;/span&gt; = &lt;span class=&quot;kwrd&quot;&gt;&quot;{{myImageUrl}}&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;h3&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In this example&amp;nbsp;&lt;i&gt;&lt;span style=&quot;text-align: left;&quot;&gt;{{myImageUrl}}&lt;/span&gt;&amp;nbsp;&lt;/i&gt;first is been evaluated by AngularJS and only then it converts it to a string. And remember that template expression cannot refer to anything in the global namespace.&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/8100290295763901479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/02/what-is-interpolation-in-angularjs.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8100290295763901479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8100290295763901479'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/02/what-is-interpolation-in-angularjs.html' title='What is Interpolation in AngularJS'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-7546201115230544419</id><published>2016-01-14T18:32:00.002+02:00</published><updated>2016-07-22T08:03:09.127+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Survey"/><title type='text'>How to Become a Software Developer</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you come over this post I&#39;d like to cheer you and say that you are the very special person!&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Why? Because you probably a software developer, or might want to become one.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
There are a list of steps that are required to obtain a recognized professional qualification. The necessary conditions, you become a professional in the relevant field. I did not mean that it is easy to become a doctor, but everyone knows how to do it!&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghB2TuOEfb9oNHVAUqGk4Ugo0_LtPhudBnHB6W9vFVC9yzyKu-O7AA3oNJHW-iNM3YUjGUKG1NdHI5vaXkmv_KO0X1zuCm6A9RigmdfPO1iK-RNB0pLixJKu35uDyU1uAaJEyaX0tGzOwn/s1600/how_to_become_a_doctor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;how-to-become-a-doctor-google-results&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghB2TuOEfb9oNHVAUqGk4Ugo0_LtPhudBnHB6W9vFVC9yzyKu-O7AA3oNJHW-iNM3YUjGUKG1NdHI5vaXkmv_KO0X1zuCm6A9RigmdfPO1iK-RNB0pLixJKu35uDyU1uAaJEyaX0tGzOwn/s1600/how_to_become_a_doctor.png&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now ask Google «how to become a software developer.&quot; Answers like that I used, are reduced to vague platitudes: &quot;learn a programming language,&quot; &quot;Participate in the creation of open source,&quot; &quot;join the local community of programmers.&quot;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
There is no clear plan for building a career or any guarantees about when or whether you will become a professional at all, not a word about how you will manage to get a paying job in the future!&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirfnqbbPZzhrn-uzKeZJmp0CZtzYGv4ICN0jx5MLbnoBWStrXjsPL9Di8Kg81Nyr_r5eWfqizA3daUsYNpwnG85P28nFpdhPrSiV_KkCrf3PtSmkunwa8KOYt50hkADFWu_rRL7nqmd9gs/s1600/how_to_become_a_software_developer.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;how-to-become-a-software-developer-google-results&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirfnqbbPZzhrn-uzKeZJmp0CZtzYGv4ICN0jx5MLbnoBWStrXjsPL9Di8Kg81Nyr_r5eWfqizA3daUsYNpwnG85P28nFpdhPrSiV_KkCrf3PtSmkunwa8KOYt50hkADFWu_rRL7nqmd9gs/s1600/how_to_become_a_software_developer.png&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Check out the results of a survey of software developers conducted by Stack Overflow in 2015:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFAbf8CuCdEiIA1wTkta8JDe9Quj0TVSoZZY9Rd_C1tyM0S3WPEXoY_AIaiHg0WxPrkd0D23z0jS4UCq6R07whzNiXii8UV3XmF-wtGwadOrGGPpjDRm1DflfpBcQE0m0tiuZ3aS4eu_0F/s1600/stackoverflow_2015_software_developers_survey.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;stackoverflow-2015-software-developers-education-survey&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFAbf8CuCdEiIA1wTkta8JDe9Quj0TVSoZZY9Rd_C1tyM0S3WPEXoY_AIaiHg0WxPrkd0D23z0jS4UCq6R07whzNiXii8UV3XmF-wtGwadOrGGPpjDRm1DflfpBcQE0m0tiuZ3aS4eu_0F/s1600/stackoverflow_2015_software_developers_survey.png&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As you can see here guys, most of software developers are self-taught. Only a third of respondents received a diploma in computer science or in some related field.&lt;br /&gt;
&lt;br /&gt;
What I&#39;m trying to say here is that a software developer is such a beast that can learn anything and able to adapt to anything!&lt;br /&gt;
&lt;br /&gt;
And what do you think about all this? Guys share your thoughts in comments!&lt;/div&gt;

&lt;div class=&quot;widget Poll&quot; id=&quot;Poll1&quot;&gt;
&lt;h2 class=&quot;title&quot;&gt;
Where did you learn programming?&lt;/h2&gt;
&lt;div class=&quot;widget-content&quot; id=&quot;widget-content&quot;&gt;
&lt;iframe allowtransparency=&quot;true&quot; frameborder=&quot;0&quot; height=&quot;340&quot; name=&quot;poll-widget-494679345165778194&quot; src=&quot;https://www.google.com/reviews/polls/display/-494679345165778194/blogger_template/run_app?txtclr=%235d5d5d&amp;amp;lnkclr=%23d83128&amp;amp;chrtclr=%23d83128&amp;amp;font=normal+normal+12px+Verdana,+Geneva,+sans-serif&amp;amp;hideq=true&amp;amp;purl=http://www.codearsenal.net/&quot; style=&quot;border: none; width: 100%;&quot;&gt;&lt;/iframe&gt;

&lt;div class=&quot;clear&quot;&gt;
&lt;/div&gt;
&lt;span class=&quot;widget-item-control&quot;&gt;
&lt;span class=&quot;item-control blog-admin&quot;&gt;
&lt;a class=&quot;quickedit&quot; href=&quot;https://www.blogger.com/rearrange?blogID=7986679425286454345&amp;amp;widgetType=Poll&amp;amp;widgetId=Poll1&amp;amp;action=editWidget&amp;amp;sectionId=sidebar-right-1&quot; onclick=&quot;return _WidgetManager._PopupConfig(document.getElementById(&amp;quot;Poll1&amp;quot;));&quot; target=&quot;configPoll1&quot; title=&quot;Edit&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;18&quot; src=&quot;//img1.blogblog.com/img/icon18_wrench_allbkg.png&quot; width=&quot;18&quot; /&gt;
&lt;/a&gt;
&lt;/span&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;clear&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/7546201115230544419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2016/01/how-to-become-software-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/7546201115230544419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/7546201115230544419'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2016/01/how-to-become-software-developer.html' title='How to Become a Software Developer'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghB2TuOEfb9oNHVAUqGk4Ugo0_LtPhudBnHB6W9vFVC9yzyKu-O7AA3oNJHW-iNM3YUjGUKG1NdHI5vaXkmv_KO0X1zuCm6A9RigmdfPO1iK-RNB0pLixJKu35uDyU1uAaJEyaX0tGzOwn/s72-c/how_to_become_a_doctor.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-4860503272799041186</id><published>2015-10-26T15:47:00.001+02:00</published><updated>2015-10-28T09:31:28.091+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="batch"/><category scheme="http://www.blogger.com/atom/ns#" term="cmd"/><category scheme="http://www.blogger.com/atom/ns#" term="robocopy"/><title type='text'>Windows Batch Script for Incremental Backup</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Recently I faced with the problem when I wanted to do a backup of some directory just by one click. I didn&#39;t want to rename or change something manually each time I need to do a backup. All I want is just copy the content of one folder to some destination many times by one single mouse click.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This means that each time I run a backup I want my script to check if there already exist some previous backup folder and if yes then to increment it&#39;s name and actually perform the backup. Thus if I will run the script 5 times then the destination directory will look like this:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMaBkPfOtAA22v-r1JRfWC3aiMAV8-JjDd_vHpJS_z35hH5JpEJEYTyJhUkqOfp9PHQ5ormYirLcs1dAr0Uq55kir8AH3J4qKwqpMSHmKATCcxHPxUC-WOvfCmQfmtpCt58PZFE45MWQDo/s1600/incremental-backup-folders-structure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;incremental-backup-folders-structure&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMaBkPfOtAA22v-r1JRfWC3aiMAV8-JjDd_vHpJS_z35hH5JpEJEYTyJhUkqOfp9PHQ5ormYirLcs1dAr0Uq55kir8AH3J4qKwqpMSHmKATCcxHPxUC-WOvfCmQfmtpCt58PZFE45MWQDo/s1600/incremental-backup-folders-structure.png&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well I must confess it was not easy to find a solution for this relatively simple task. Therefore I decided to put a result of my research here in order to do someone&#39;s life easier.&lt;br /&gt;
Here is a Windows batch script that will do incremental backup for you:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;@echo off&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;copy content of this folder&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;set source=c:\temp\test\1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;to this destination&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;set dest_path=c:\temp\test\2\&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;this command works for UNC paths. &#39;cd&#39; works only on local paths.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;pushd %dest_path%&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;this block handles incrimentation.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;for the first time this block will create &quot;Backup1&quot; directory&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;otherwise it will create directory with incremented name&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;setlocal enableDelayedExpansion&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;set &quot;dest_folder_name=Backup&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;set &quot;n=0&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;for /f &quot;delims=&quot; %%F in (&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp;&#39;2^&amp;gt;nul dir /b /ad &quot;%dest_folder_name%*.&quot;^|findstr /xri &quot;%dest_folder_name%[0-9]*&quot;&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;) do (&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp;set &quot;name=%%F&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp;set &quot;name=!name:*%dest_folder_name%=!&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp;if !name! gtr !n! set &quot;n=!name!&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;set /a n+=1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;set final_destination=&quot;%dest_path%%dest_folder_name%%n%&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;md %final_destination%&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;robocopy %source% %final_destination% /E /R:3 /W:10 /FFT /NP /NDL&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;popd&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;@echo on&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Create a batch execution file with &lt;i&gt;bat &lt;/i&gt;extension, copy paste this script into it, change source and destination paths and run it.&lt;br /&gt;
Enjoy!
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/4860503272799041186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2015/10/windows-batch-script-incremental-backup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4860503272799041186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4860503272799041186'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2015/10/windows-batch-script-incremental-backup.html' title='Windows Batch Script for Incremental Backup'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMaBkPfOtAA22v-r1JRfWC3aiMAV8-JjDd_vHpJS_z35hH5JpEJEYTyJhUkqOfp9PHQ5ormYirLcs1dAr0Uq55kir8AH3J4qKwqpMSHmKATCcxHPxUC-WOvfCmQfmtpCt58PZFE45MWQDo/s72-c/incremental-backup-folders-structure.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-4131973130293528196</id><published>2015-10-15T11:48:00.000+03:00</published><updated>2015-10-15T14:00:13.586+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="RESTful"/><category scheme="http://www.blogger.com/atom/ns#" term="Source Code"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Java Spring Restful Web Service with Configurable MongoDB</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Today I&#39;ll show you how to build &lt;a href=&quot;http://www.codearsenal.net/search/label/Java&quot; target=&quot;_blank&quot;&gt;Java&lt;/a&gt; RESTful Web Service that uses MongoDB database for storing and retrieving data. The service is written using Java Spring 4 technology.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In this project I will show how to configure MongoDB database parameters in java properties file and how to consume it using Java Spring. If you&#39;re new to MongoDB then I suggest to read my previous article on &lt;a href=&quot;http://www.codearsenal.net/2015/10/how-to-install-and-run-mongodb-in-windows.html&quot; target=&quot;_blank&quot;&gt;How to Install and Run MongoDB on Windows&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
I will not describe in details maven &lt;i&gt;pom.xml&lt;/i&gt; structure just because you can simply download the whole project by clicking on the download link at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
Here is the structure of the project:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_DxtRKuaLW0NcsK39TOATPm6WE6VhNdtpIPXYl9ClH_dad6EwmA00px2pL0QMZq6x6cZ5IbgZlXTO0iKWAAZX7rHIGxzRDVk1Q4khYakJPjg7SzKmEKLYe0BxDZHEm9JDdgvDYFDqejZE/s1600/spring-rest-webservice-mongodb-project-structure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;spring-rest-webservice-mongodb-project-structure&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_DxtRKuaLW0NcsK39TOATPm6WE6VhNdtpIPXYl9ClH_dad6EwmA00px2pL0QMZq6x6cZ5IbgZlXTO0iKWAAZX7rHIGxzRDVk1Q4khYakJPjg7SzKmEKLYe0BxDZHEm9JDdgvDYFDqejZE/s320/spring-rest-webservice-mongodb-project-structure.png&quot; title=&quot;Project Structure&quot; width=&quot;261&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ok, so what this all about?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We got here &lt;i&gt;Person&lt;/i&gt; class which represent our domain object to be persistent to MongoDB.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span style=&quot;color: #646464;&quot;&gt;@Document&lt;/span&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Person&amp;nbsp;{
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@Id&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;id;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;name;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Integer&amp;nbsp;age;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;country;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Person(){}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Person(String&amp;nbsp;name,&amp;nbsp;Integer&amp;nbsp;age,&amp;nbsp;String&amp;nbsp;country){
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setName(name);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setAge(age);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setCountry(country);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;getId()&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;id;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;setId(String&amp;nbsp;id)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;this&lt;/span&gt;&lt;/strong&gt;.id&amp;nbsp;=&amp;nbsp;id;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;getName()&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;name;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;setName(String&amp;nbsp;name)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;this&lt;/span&gt;&lt;/strong&gt;.name&amp;nbsp;=&amp;nbsp;name;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Integer&amp;nbsp;getAge()&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;age;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;setAge(Integer&amp;nbsp;age)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;this&lt;/span&gt;&lt;/strong&gt;.age&amp;nbsp;=&amp;nbsp;age;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;getCountry()&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;country;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;setCountry(String&amp;nbsp;country)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;this&lt;/span&gt;&lt;/strong&gt;.country&amp;nbsp;=&amp;nbsp;country;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;toString()&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;[&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;getName()&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;,&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;getAge()
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;,&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;getCountry()
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;]&quot;&lt;/span&gt;;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
}&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;PersonRepository&lt;/i&gt; class is responsible for actual operations via MongoDB for the &lt;i&gt;Person&lt;/i&gt;. In our case these are:&amp;nbsp;&lt;i&gt;addPerson&lt;/i&gt;,&amp;nbsp;&lt;i&gt;getPersonByName&lt;/i&gt;,&amp;nbsp;&lt;i&gt;getAllPersons&lt;/i&gt;,&amp;nbsp;&lt;i&gt;deletePerson &lt;/i&gt;and&amp;nbsp;&lt;i&gt;updatePerson&lt;/i&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span style=&quot;color: #646464;&quot;&gt;@Repository&lt;/span&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;PersonRepository&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;final&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;PERSON_COLLECTION_NAME&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;person&quot;&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@Autowired&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;MongoTemplate&amp;nbsp;mongo;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;addPerson(Person&amp;nbsp;person){
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;(!mongo.collectionExists(Person.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;)){
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mongo.createCollection(Person.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mongo.insert(person,&amp;nbsp;PERSON_COLLECTION_NAME);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Person&amp;nbsp;getPersonByName(String&amp;nbsp;name)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;mongo.findOne(Query.query(Criteria.where(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;).is(name)),&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Person.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;PERSON_COLLECTION_NAME);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;List&lt;person&gt;&amp;nbsp;getAllPersons()&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;mongo.findAll(Person.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;PERSON_COLLECTION_NAME);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Person&amp;nbsp;deletePerson(String&amp;nbsp;name)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person&amp;nbsp;person&amp;nbsp;=&amp;nbsp;mongo.findOne(Query.query(Criteria.where(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;).is(name)),&amp;nbsp;&lt;/person&gt;&lt;br /&gt;
&lt;person&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Person.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;PERSON_COLLECTION_NAME);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mongo.remove(person,&amp;nbsp;PERSON_COLLECTION_NAME);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;person;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Person&amp;nbsp;updatePerson(String&amp;nbsp;name,&amp;nbsp;Person&amp;nbsp;person)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Query&amp;nbsp;query&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Query();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query.addCriteria(Criteria.where(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;).is(name));
&lt;br /&gt;&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Update&amp;nbsp;update&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Update();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update.set(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;,&amp;nbsp;person.getName());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update.set(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;age&quot;&lt;/span&gt;,&amp;nbsp;person.getAge());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update.set(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;country&quot;&lt;/span&gt;,&amp;nbsp;person.getCountry());
&lt;br /&gt;&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mongo.updateFirst(query,&amp;nbsp;update,&amp;nbsp;Person.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;person;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;}&lt;/person&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As you can see from the code above I use here &lt;i&gt;MongoTemplate&lt;/i&gt;&amp;nbsp;and notice the&amp;nbsp;&lt;span style=&quot;background-color: white; color: #646464; font-family: &#39;Courier New&#39;, Courier; font-size: 13.3333px;&quot;&gt;@Autowired&lt;/span&gt;&amp;nbsp;Spring annotation. Now let&#39;s see our &lt;i&gt;AppConfig &lt;/i&gt;class:&lt;/div&gt;

&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Middle --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;2969384752&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span style=&quot;color: #646464;&quot;&gt;@Configuration&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #646464;&quot;&gt;@ComponentScan&lt;/span&gt;(basePackages&amp;nbsp;=&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;com.codearsenal.*&quot;&lt;/span&gt;&amp;nbsp;})
&lt;br /&gt;
&lt;span style=&quot;color: #646464;&quot;&gt;@PropertySource&lt;/span&gt;(value=&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;classpath:config.properties&quot;&lt;/span&gt;,&amp;nbsp;ignoreResourceNotFound=&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;)
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;AppConfig&amp;nbsp;{
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@Autowired&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Environment&amp;nbsp;env;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@Bean&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;MongoTemplate&amp;nbsp;mongoTemplate()&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;throws&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Exception&amp;nbsp;{
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;db_host&amp;nbsp;=&amp;nbsp;env.getProperty(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;mongodb.host&quot;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;db_port&amp;nbsp;=&amp;nbsp;env.getProperty(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;mongodb.port&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;db_name&amp;nbsp;=&amp;nbsp;env.getProperty(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;mongodb.db&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MongoClient&amp;nbsp;mongo&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;MongoClient(db_host,&amp;nbsp;Integer.valueOf(db_port));
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MongoDbFactory&amp;nbsp;mongoDbFactory&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SimpleMongoDbFactory(mongo,&amp;nbsp;db_name);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;MongoTemplate(mongoDbFactory);
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
}&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Here in &lt;i&gt;AppConfig &lt;/i&gt;I set up &lt;i&gt;MongoTemplate &lt;/i&gt;configurations.&amp;nbsp;&lt;span style=&quot;background-color: white; color: #646464; font-family: &#39;Courier New&#39;, Courier; font-size: 13.3333px;&quot;&gt;@PropertySource&amp;nbsp;&lt;/span&gt;annotation tells to Spring to load properties file&amp;nbsp;&lt;i&gt;config.properties. &lt;/i&gt;Inside &lt;i&gt;config.properties&lt;/i&gt; I specified my MongoDB connection settings:&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mongodb.host=127.0.0.1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mongodb.port=27017&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mongodb.db=codearsenal_db
&lt;br /&gt;
&lt;br /&gt;
Now let&#39;s see &lt;i&gt;PersonController &lt;/i&gt;class. This is the entry point of all requests from client to our server.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;span style=&quot;color: #646464;&quot;&gt;@Controller&lt;/span&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;PersonController&amp;nbsp;{
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;final&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Logger&amp;nbsp;logger&amp;nbsp;=&amp;nbsp;LoggerFactory
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.getLogger(PersonController.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;);
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@Autowired&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;PersonRepository&amp;nbsp;personRepository;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@RequestMapping&lt;/span&gt;(value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;/&quot;&lt;/span&gt;,&amp;nbsp;method&amp;nbsp;=&amp;nbsp;RequestMethod.GET)
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;home(Locale&amp;nbsp;locale,&amp;nbsp;Model&amp;nbsp;model)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;This&amp;nbsp;is&amp;nbsp;Default&amp;nbsp;Home&amp;nbsp;REST&amp;nbsp;page.\n\n&amp;nbsp;The&amp;nbsp;client&amp;nbsp;locale&amp;nbsp;is&amp;nbsp;{}.&quot;&lt;/span&gt;,
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;locale);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Date&amp;nbsp;date&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Date();
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DateFormat&amp;nbsp;dateFormat&amp;nbsp;=&amp;nbsp;DateFormat.getDateTimeInstance(DateFormat.LONG,
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DateFormat.LONG,&amp;nbsp;locale);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;formattedDate&amp;nbsp;=&amp;nbsp;dateFormat.format(date);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.addAttribute(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;serverTime&quot;&lt;/span&gt;,&amp;nbsp;formattedDate);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;status&quot;&lt;/span&gt;;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@RequestMapping&lt;/span&gt;(value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;/persons&quot;&lt;/span&gt;,&amp;nbsp;method&amp;nbsp;=&amp;nbsp;RequestMethod.GET)
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@ResponseBody&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;MultiplePersonResponse&amp;nbsp;getAllPersons()&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;getAllPersons()...&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;person&gt;&amp;nbsp;persons&amp;nbsp;=&amp;nbsp;personRepository.getAllPersons();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MultiplePersonResponse&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;MultiplePersonResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;persons);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;...getAllPersons()&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@RequestMapping&lt;/span&gt;(value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;/person/{name}&quot;&lt;/span&gt;,&amp;nbsp;method&amp;nbsp;=&amp;nbsp;RequestMethod.GET)
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@ResponseBody&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SinglePersonResponse&amp;nbsp;getPersonByName(
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@PathVariable&lt;/span&gt;(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;)&amp;nbsp;String&amp;nbsp;name)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;getPersonByName()...&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person&amp;nbsp;myPerson&amp;nbsp;=&amp;nbsp;personRepository.getPersonByName(name);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(myPerson&amp;nbsp;!=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;returned:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;myPerson.toString());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;else&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;name&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;,&amp;nbsp;NOT&amp;nbsp;FOUND!&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SinglePersonResponse&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SinglePersonResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;myPerson);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;...getPersonByName()&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@RequestMapping&lt;/span&gt;(value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;/person/delete/{name}&quot;&lt;/span&gt;,&amp;nbsp;method&amp;nbsp;=&amp;nbsp;RequestMethod.DELETE)
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@ResponseBody&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse&amp;nbsp;deletePersonByName(&lt;span style=&quot;color: #646464;&quot;&gt;@PathVariable&lt;/span&gt;(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;)&amp;nbsp;String&amp;nbsp;name)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;deletePersonByName()...&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BasicResponse&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person&amp;nbsp;person&amp;nbsp;=&amp;nbsp;personRepository.deletePerson(name);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(person&amp;nbsp;!=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;deleted:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;person.toString());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;,
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Successfully&amp;nbsp;deleted&amp;nbsp;Person:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;person.toString());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;else&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;name&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;,&amp;nbsp;NOT&amp;nbsp;FOUND!&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;false&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Failed&amp;nbsp;to&amp;nbsp;delete&amp;nbsp;name:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;name);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;...deletePersonByName()&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@RequestMapping&lt;/span&gt;(value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;/person/update/{name}&quot;&lt;/span&gt;,&amp;nbsp;method&amp;nbsp;=&amp;nbsp;RequestMethod.PUT)
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@ResponseBody&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse&amp;nbsp;updatePersonByName(&lt;span style=&quot;color: #646464;&quot;&gt;@PathVariable&lt;/span&gt;(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;)&amp;nbsp;String&amp;nbsp;name,
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@ModelAttribute&lt;/span&gt;(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;person&quot;&lt;/span&gt;)&amp;nbsp;Person&amp;nbsp;person)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;updatePersonByName()...&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BasicResponse&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person&amp;nbsp;myPerson&amp;nbsp;=&amp;nbsp;personRepository.updatePerson(name,&amp;nbsp;person);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(myPerson&amp;nbsp;!=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;updated:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;myPerson.toString());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;,
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Successfully&amp;nbsp;updated&amp;nbsp;Person:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;myPerson.toString());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;else&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;name&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;,&amp;nbsp;NOT&amp;nbsp;FOUND!&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;false&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Failed&amp;nbsp;to&amp;nbsp;update&amp;nbsp;Person:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;name);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;...updatePersonByName()&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@RequestMapping&lt;/span&gt;(value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;/person/addPerson&quot;&lt;/span&gt;,&amp;nbsp;method&amp;nbsp;=&amp;nbsp;RequestMethod.POST)
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #646464;&quot;&gt;@ResponseBody&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse&amp;nbsp;addPerson(&lt;span style=&quot;color: #646464;&quot;&gt;@RequestBody&lt;/span&gt;&amp;nbsp;Person&amp;nbsp;person)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;addPerson()...&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BasicResponse&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(person.getName()&amp;nbsp;!=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;person.getName().length()&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;adding:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;person.toString());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;personRepository.addPerson(person);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;,
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Successfully&amp;nbsp;added&amp;nbsp;Person:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;person.getName());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;else&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Failed&amp;nbsp;to&amp;nbsp;insert...&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resp&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;BasicResponse(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;false&lt;/span&gt;&lt;/strong&gt;,&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Failed&amp;nbsp;to&amp;nbsp;insert...&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;..addPerson()&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;resp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;}&lt;/person&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ok, now we&#39;re ready to launch our Tomcat server to see how all this thing works, but first we should start MongoDB database server. Read my previous post if you do not know how to do this -&amp;nbsp;&lt;a href=&quot;http://www.codearsenal.net/2015/10/how-to-install-and-run-mongodb-in-windows.html&quot; style=&quot;text-align: justify;&quot; target=&quot;_blank&quot;&gt;How to Install and Run MongoDB on Windows&lt;/a&gt;&lt;span style=&quot;text-align: justify;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Let&#39;s test our application, First we&#39;ll add a new person to our system, I will use &lt;a href=&quot;https://www.getpostman.com/&quot; target=&quot;_blank&quot;&gt;Postman&lt;/a&gt; to simulate JSON requests. Just make sure that Tomcat and MongoDB servers are running.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;i style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;addPerson&lt;/b&gt;&lt;/i&gt;&lt;span style=&quot;font-style: italic; text-align: justify;&quot;&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Request method: POST&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL:&amp;nbsp;&lt;/span&gt;http://localhost:8080/CodeArsenalApplication/person/addPerson&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JSON:
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;name&quot;&lt;/span&gt;:&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Yuri&quot;&lt;/span&gt;,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;age&quot;&lt;/span&gt;:35,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;country&quot;&lt;/span&gt;:&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;USA&quot;&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUvPPN1_KIJ5mjWqPkT7FrhNccu0b5gTUz1X__yv9FSPafW7OC67sa48WNKYdfRc8uiJ9vtVplMq860HjWWSG_-u4t5HXLhzhYzDDDokHXvtZpnhTixNsEXySlR0ArHghHlQZnSwOFEXRH/s1600/Postman-addPerson-rest-request.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Postman-addPerson-rest-request&quot; border=&quot;0&quot; height=&quot;435&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUvPPN1_KIJ5mjWqPkT7FrhNccu0b5gTUz1X__yv9FSPafW7OC67sa48WNKYdfRc8uiJ9vtVplMq860HjWWSG_-u4t5HXLhzhYzDDDokHXvtZpnhTixNsEXySlR0ArHghHlQZnSwOFEXRH/s640/Postman-addPerson-rest-request.png&quot; title=&quot;addPerson request&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
JSON response from the server:
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;success&quot;&lt;/span&gt;:&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;message&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Successfully&amp;nbsp;added&amp;nbsp;Person:&amp;nbsp;Yuri&quot;&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
Now &amp;nbsp;we can run &lt;a href=&quot;http://robomongo.org/&quot; target=&quot;_blank&quot;&gt;Robomongo&lt;/a&gt; to ensure that the person was really added to the database:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSFaYOREsPYjhEx479A_OrRd7LkV2Z9Mxku4WuSh_uzAuKjc7vwbsfKps4ZgcfTmSGvIFMsKSYSdlVdTkeZ_NfMRn2f0FgCBjkpZaBEJc5sajd4noEUPNd6J2hEYiQrQ1R3_JqJu4KAxCe/s1600/mongodb-person-table.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;mongodb-person-table&quot; border=&quot;0&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSFaYOREsPYjhEx479A_OrRd7LkV2Z9Mxku4WuSh_uzAuKjc7vwbsfKps4ZgcfTmSGvIFMsKSYSdlVdTkeZ_NfMRn2f0FgCBjkpZaBEJc5sajd4noEUPNd6J2hEYiQrQ1R3_JqJu4KAxCe/s640/mongodb-person-table.png&quot; title=&quot;MongoDB Person table&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;getPersonByName&lt;/i&gt;&lt;/b&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxS_aLhoYVjWmKT-dswmIni7uajKrB3aWxaPXiTUlhB3UuUxC1KAdzB5b7gu9j1sWR2NvwkaooyNhU7gDC6mw_eeqHezOfp0MUnIL379ACXfs36A0TmgMeBAoUrBKKEkefr7zv4I08HEFB/s1600/Postman-getPersonByName-rest-request.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Postman-getPersonByName-rest-request&quot; border=&quot;0&quot; height=&quot;458&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxS_aLhoYVjWmKT-dswmIni7uajKrB3aWxaPXiTUlhB3UuUxC1KAdzB5b7gu9j1sWR2NvwkaooyNhU7gDC6mw_eeqHezOfp0MUnIL379ACXfs36A0TmgMeBAoUrBKKEkefr7zv4I08HEFB/s640/Postman-getPersonByName-rest-request.png&quot; title=&quot;getPersonByName request&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the same manner you can test other APIs.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you have any questions you&#39;re welcome to ask in the comments section.&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/download/1044ngvk5d0182m/spring-rest-webservice-mongodb.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Download&amp;nbsp;spring-rest-webservice-mongodb project&lt;/a&gt;&amp;nbsp;(Eclipse/Maven).
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/4131973130293528196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2015/10/java-spring-restful-web-service-mongodb.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4131973130293528196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4131973130293528196'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2015/10/java-spring-restful-web-service-mongodb.html' title='Java Spring Restful Web Service with Configurable MongoDB'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_DxtRKuaLW0NcsK39TOATPm6WE6VhNdtpIPXYl9ClH_dad6EwmA00px2pL0QMZq6x6cZ5IbgZlXTO0iKWAAZX7rHIGxzRDVk1Q4khYakJPjg7SzKmEKLYe0BxDZHEm9JDdgvDYFDqejZE/s72-c/spring-rest-webservice-mongodb-project-structure.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-6647534938658380162</id><published>2015-10-12T18:36:00.001+03:00</published><updated>2015-10-12T18:53:47.990+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><title type='text'>How to Install and Run MongoDB on Windows</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4602852119&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This particular article is for those who are going to install and run MongoDB database for the first time.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;First, download MongoDB from official &lt;a href=&quot;http://www.mongodb.org/downloads&quot; target=&quot;_blank&quot;&gt;MongoDB website&lt;/a&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Once you done Unzip and put its content to your location, for instance &lt;i&gt;C:\MongoDB\&amp;nbsp;&lt;/i&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;This is how MongoDB server directory tree looks like after extraction&lt;/li&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYvpKbtmo4tm8aP8omcVu9HS3hqNSQN1TQ6FBthA3Tqr4k_uKUzbTsfYajYfk_WhHi9k5oUK6h73CuqIHVVi69UidZKzzz0NO2KQFCj7G_YeZFFoI4U1eGXiQMZuVVfyX_XFF1qmaGNx5t/s1600/mongodb-directory-structure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;mongodb-directory-structure&quot; border=&quot;0&quot; height=&quot;155&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYvpKbtmo4tm8aP8omcVu9HS3hqNSQN1TQ6FBthA3Tqr4k_uKUzbTsfYajYfk_WhHi9k5oUK6h73CuqIHVVi69UidZKzzz0NO2KQFCj7G_YeZFFoI4U1eGXiQMZuVVfyX_XFF1qmaGNx5t/s200/mongodb-directory-structure.png&quot; title=&quot;MongoDB directory structure&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;li&gt;Then go to&amp;nbsp;&lt;i&gt;C:\MongoDB\Server\config\&amp;nbsp;&lt;/i&gt;and create MongoDB configuration file - &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;mongo.config&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Fill in corresponding data, for example this is content of my&amp;nbsp;&lt;i&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mongo.config&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;:&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
&lt;br /&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;## database directory&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbpath = c:\MongoDB\Server\data&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;## database port number&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;port = 27017&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;## logs will be created here&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logpath = c:\MongoDB\Server\logs\mongo.log&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;Now you&#39;re ready to run your MongoDB server! Last thing to do is to create a shortcut to&amp;nbsp;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;mongod.exe&lt;/i&gt;&amp;nbsp;&lt;/span&gt;(&lt;i&gt;C:\MongoDB\Server\3.0\bin\mongod.exe&lt;/i&gt;), with following parameter:&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--config C:\mongodb\server\config\mongodb.conf&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
This is it! Now, by clicking on this shortcut you&#39;re starting MongoDB server with parameters you set previously in &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;mongo.config&lt;/i&gt;&lt;/span&gt; file.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I also suggest to use &lt;a href=&quot;http://robomongo.org/&quot; target=&quot;_blank&quot;&gt;Robomongo&lt;/a&gt; management tool for observing data in your MongoDB. It is free.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Enjoy codding and if you got any questions please do not hesitate to ask in the comments!&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Good Luck!&amp;nbsp;&lt;/div&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4113276799&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/6647534938658380162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2015/10/how-to-install-and-run-mongodb-in-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6647534938658380162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6647534938658380162'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2015/10/how-to-install-and-run-mongodb-in-windows.html' title='How to Install and Run MongoDB on Windows'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYvpKbtmo4tm8aP8omcVu9HS3hqNSQN1TQ6FBthA3Tqr4k_uKUzbTsfYajYfk_WhHi9k5oUK6h73CuqIHVVi69UidZKzzz0NO2KQFCj7G_YeZFFoI4U1eGXiQMZuVVfyX_XFF1qmaGNx5t/s72-c/mongodb-directory-structure.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-4076758996004198875</id><published>2015-03-23T13:10:00.000+02:00</published><updated>2016-02-16T13:50:22.167+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns"/><category scheme="http://www.blogger.com/atom/ns#" term="Job Interview"/><title type='text'>C# Dependency Injection Simple Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
People are often confused about what Dependency Injection is and when they might need or want to use it. Some time ago I wrote an article &lt;a href=&quot;http://www.codearsenal.net/2013/03/dependency-injection-in-csharp-autofac.html&quot; target=&quot;_blank&quot;&gt;Managing Dependency Injection in C# with Autofac&lt;/a&gt; which explains how to manage DI in C#, but today I want to show by simple code sample what actually Dependency Injection is.&lt;br /&gt;
&lt;br /&gt;
Imaging situation where you have a class, let&#39;s say Employee, and two or more different loggers for that class. Each logger prints messages in his own particular way and you want to have control of which logger to use for Employee during its instantiation.&lt;br /&gt;
&lt;br /&gt;
Just take a look at this code and I&#39;m sure you will get the idea of Dependency Injection:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; Employee
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; Employee(ILogger logger)
    {
        logger.WriteToLog(&lt;span class=&quot;str&quot;&gt;&quot;New employee created&quot;&lt;/span&gt;);
    }
}

&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;interface&lt;/span&gt; ILogger
{
    &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; WriteToLog(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; text);
}

&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; LoggerOne : ILogger
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; WriteToLog(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; text)
    {
        Console.WriteLine(text);
    }
}

&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; LoggerTwo : ILogger
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; WriteToLog(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; text)
    {
        Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;***********\n {0}\n***********&quot;&lt;/span&gt;, text);
    }
}&lt;/pre&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Now let&#39;s instantiate an Employee with two different loggers:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;Employee employee1 = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Employee(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; LoggerOne());
Employee employee2 = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Employee(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; LoggerTwo());&lt;/pre&gt;
&lt;br /&gt;
And the output:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;New employee created

*******************
New employee created
*******************&lt;/pre&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div class=&quot;fb-comments&quot; data-href=&quot;http://www.codearsenal.net/2016/01/how-to-become-software-developer.html&quot; data-width=&quot;728&quot; data-numposts=&quot;5&quot;&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/4076758996004198875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2015/03/c-sharp-dependency-injection-simple.html#comment-form' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4076758996004198875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4076758996004198875'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2015/03/c-sharp-dependency-injection-simple.html' title='C# Dependency Injection Simple Example'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-2771647009834754068</id><published>2014-11-27T11:43:00.000+02:00</published><updated>2015-10-16T11:12:22.142+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>How to Avoid Any Global Variables in JavaScript</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In JavaScript, objects and functions, are also variables. And any variable declared outside a function has global scope. You probably heard that because JavaScript is a dynamically type language global variables are bad and that they easily become source of confusion and bugs. So how can we avoid of creating any global variable, but still have our code executed?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
There is such technic, it&#39;s called Immediately Invoked Function Expression (IIFE).&lt;/div&gt;
&lt;br /&gt;
Suppose we have this JavaScript code:
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;var func = function(){
  
  console.log(&quot;entering func&quot;);
  
  var counter = 0;
  
  var innerFunc1 = function(){
    counter += 1;
    console.log(&quot;innerFunc1: &quot; + counter);
  }
  
  var innerFunc2 = function(){
    counter += 1;
    console.log(&quot;innerFunc2: &quot; + counter);
  }
  
  return {
    inner1: innerFunc1,
    inner2: innerFunc2,
  };
}

var f = func();
f.inner1();
f.inner2();&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So here we have two global variables - &lt;i&gt;func&lt;/i&gt; and &lt;i&gt;f&lt;/i&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now I&#39;ll show how to run this code without creating ANY global variable by applying IIFE.&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;pre class=&quot;csharpcode&quot;&gt;(function() {
  var func = function() {

    console.log(&quot;entering func&quot;);

    var counter = 0;

    var innerFunc1 = function() {
      counter += 1;
      console.log(&quot;innerFunc1: &quot; + counter);
    }

    var innerFunc2 = function() {
      counter += 1;
      console.log(&quot;innerFunc2: &quot; + counter);
    }

    return {
      inner1: innerFunc1,
      inner2: innerFunc2,
    };
  }

  var f = func();
  f.inner1();
  f.inner2();

}());&lt;/pre&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So actually we wrapped our code inside anonymous function that immediately invokes itself or in other words Immediately Invoked Function Expression (IIFE).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The code still executes exactly as it did before but with creating no global variables at all.
&lt;br /&gt;
Happy codding! :)&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/2771647009834754068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2014/11/immediately-invoked-function-expression.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/2771647009834754068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/2771647009834754068'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2014/11/immediately-invoked-function-expression.html' title='How to Avoid Any Global Variables in JavaScript'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-541557383870416907</id><published>2014-11-03T15:20:00.001+02:00</published><updated>2015-10-15T11:48:29.219+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Source Code"/><category scheme="http://www.blogger.com/atom/ns#" term="WPF"/><category scheme="http://www.blogger.com/atom/ns#" term="XAML"/><title type='text'>WPF Customized ComboBox with Non Existing Value</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
How do you show a non existing value inside a WPF ComboBox? Good question! And the sad truth is that you just cannot do it! WPF ComboBox shows only the values that are in its ItemSource.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But don&#39;t worry, today I&#39;ll show you a workaround to this problem. In this particular example inside a ComboBox will be shown a phantom value and when user clicks on it and choose another value from the list he will be prompted to confirm in order to give him a chance not to loose this phantom value in case if he clicked on the ComboBox by mistake.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXhtE3fZLHxTqdYh2uugSTlFW3a3N5L6or1v-PprygjY4CqDocDJblhZEo84MwDPF0F4XLJUgcMqGpM-LtHftwf4jJITG-UVQ7VXfxvbs3uJBssw6Kf99_IUd7u9N20ZIJC_nymYUDBSYh/s1600/wpf-custom-combobox-with-phantom-value.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img alt=&quot;WPF Customized ComboBox with Phantom Value&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXhtE3fZLHxTqdYh2uugSTlFW3a3N5L6or1v-PprygjY4CqDocDJblhZEo84MwDPF0F4XLJUgcMqGpM-LtHftwf4jJITG-UVQ7VXfxvbs3uJBssw6Kf99_IUd7u9N20ZIJC_nymYUDBSYh/s1600/wpf-custom-combobox-with-phantom-value.png&quot; title=&quot;WPF Customized ComboBox with Phantom Value&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The trick is that I create additional custom ComboBox with TextBlock, binding it to the original one and overlaying it.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Check out the main window XAML:
&lt;/div&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ComboBox&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;x:Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;OriginalComboBox&quot;&lt;/span&gt;
          &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;3&quot;&lt;/span&gt;
          &lt;span class=&quot;attr&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Top&quot;&lt;/span&gt;
          &lt;span class=&quot;attr&quot;&gt;ItemsSource&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding Employees}&quot;&lt;/span&gt;
          &lt;span class=&quot;attr&quot;&gt;SelectedValue&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;

&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;phantom:PhantomValueComboBoxUserControl&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;3&quot;&lt;/span&gt;
                                      &lt;span class=&quot;attr&quot;&gt;SelectedOptionText&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding Selected, Mode=OneWay}&quot;&lt;/span&gt;
                                      &lt;span class=&quot;attr&quot;&gt;RelatedComboBox&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding ElementName=OriginalComboBox}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Now let&#39;s see the XAML of the Phantom ComboBox:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;UserControl&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;x:Class&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;PhantomComboBoxExample.PhantomValueComboBoxUserControl.PhantomValueComboBoxUserControl&quot;&lt;/span&gt;
      &lt;span class=&quot;attr&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;/span&gt;
      &lt;span class=&quot;attr&quot;&gt;xmlns:x&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;/span&gt;
      &lt;span class=&quot;attr&quot;&gt;xmlns:mc&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&lt;/span&gt; 
      &lt;span class=&quot;attr&quot;&gt;xmlns:d&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;/span&gt; 
      &lt;span class=&quot;attr&quot;&gt;xmlns:phantom&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;clr-namespace:PhantomComboBoxExample.PhantomValueComboBoxUserControl&quot;&lt;/span&gt;
      &lt;span class=&quot;attr&quot;&gt;mc:Ignorable&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;d&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt;  &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt;  &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ComboBox&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;x:Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;MainComboBox&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Stretch&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;ToolTipService&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;ToolTip&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                     AncestorType=phantom:PhantomValueComboBoxUserControl}, 
                     Path=PhantomToolTip}&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBlock&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;IsHitTestVisible&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;False&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;x:Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Watermark&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;Visibility&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding ElementName=MainCombo, Path=SelectedIndex}&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding RelativeSource={RelativeSource Mode=FindAncestor,
                    AncestorType=phantom:PhantomValueComboBoxUserControl}, 
                    Path=SelectedOptionText}&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;FontStyle&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Italic&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;Foreground&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;DarkSlateGray&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;5,4,25,2&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Left&quot;&lt;/span&gt;
               &lt;span class=&quot;attr&quot;&gt;Margin&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding ElementName=MainCombo, Path=Margin}&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;UserControl&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Middle --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;2969384752&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
And all the magic is in code behind:&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;readonly&lt;/span&gt; DependencyProperty RelatedComboBoxProperty =
            DependencyProperty.Register(&lt;span class=&quot;str&quot;&gt;&quot;RelatedComboBox&quot;&lt;/span&gt;, &lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(ComboBox), 
            &lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(PhantomValueComboBoxUserControl), &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;, RelatedComboBoxChangedCallback));

&lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; RelatedComboBoxChangedCallback(DependencyObject dependencyObject, 
                    DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; thisControl = dependencyObject &lt;span class=&quot;kwrd&quot;&gt;as&lt;/span&gt; PhantomValueComboBoxUserControl;
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; relatedCombo = dependencyPropertyChangedEventArgs.NewValue &lt;span class=&quot;kwrd&quot;&gt;as&lt;/span&gt; ComboBox;
    &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (relatedCombo != &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; thisControl != &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;)
    {
        thisControl.FontFamily = relatedCombo.FontFamily;
        thisControl.FontSize = relatedCombo.FontSize;
        thisControl.MainComboBox.Style = relatedCombo.Style;
        thisControl.Margin = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Thickness(0);
        thisControl.HorizontalAlignment = relatedCombo.HorizontalAlignment;
        thisControl.MainComboBox.HorizontalAlignment = relatedCombo.HorizontalAlignment;
        thisControl.MainComboBox.VerticalAlignment = relatedCombo.VerticalAlignment;
        thisControl.VerticalAlignment = relatedCombo.VerticalAlignment;
        relatedCombo.SelectionChanged += (sender, args) =&amp;gt;
        {
            thisControl._internalIndexChange = &lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;;
            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (relatedCombo.SelectedIndex &amp;lt; thisControl.MainComboBox.Items.Count)
            {
                thisControl.MainComboBox.SelectedIndex = relatedCombo.SelectedIndex;
            }
            thisControl._internalIndexChange = &lt;span class=&quot;kwrd&quot;&gt;false&lt;/span&gt;;
        };

        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; mb = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; MultiBinding
        {
            Converter = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; MathToVisibilityMultiConverter(),                 
        };

        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; mb1 = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Binding
        {
            Source = relatedCombo,
            Path = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; PropertyPath(&lt;span class=&quot;str&quot;&gt;&quot;SelectedIndex&quot;&lt;/span&gt;)
        };

        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; mb2 = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Binding
        {
            Source = thisControl,
            Path = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; PropertyPath(&lt;span class=&quot;str&quot;&gt;&quot;SelectedOptionText&quot;&lt;/span&gt;)
        };

        mb.Bindings.Add(mb1);
        mb.Bindings.Add(mb2);
        thisControl.SetBinding(VisibilityProperty, mb);
        
        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; b1 = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Binding
        {
            Source = relatedCombo,
            Path = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; PropertyPath(&lt;span class=&quot;str&quot;&gt;&quot;IsEnabled&quot;&lt;/span&gt;)
        };
        thisControl.SetBinding(IsEnabledProperty, b1);

        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; b2 = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Binding
        {
            Source = relatedCombo,
            Path = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; PropertyPath(&lt;span class=&quot;str&quot;&gt;&quot;ItemsSource&quot;&lt;/span&gt;)
        };
        thisControl.SetBinding(ItemsSourceProperty, b2);
    }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #5d5d5d; font-family: Verdana, Geneva, sans-serif; font-size: 13px; line-height: 18.4799995422363px;&quot;&gt;Enjoy!&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/download/t2nvvbxcnhwxn4j/PhantomComboBoxExample.zip&quot; rel=&quot;nofollow&quot; style=&quot;background-color: white; color: #949494; font-family: Verdana, Geneva, sans-serif; font-size: 13px; line-height: 18.4799995422363px; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Download the source code&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #5d5d5d; font-family: Verdana, Geneva, sans-serif; font-size: 13px; line-height: 18.4799995422363px;&quot;&gt;&amp;nbsp;(Visual Studio 2013 project).&lt;/span&gt;&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/541557383870416907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2014/11/wpf-customized-phantom-combobox.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/541557383870416907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/541557383870416907'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2014/11/wpf-customized-phantom-combobox.html' title='WPF Customized ComboBox with Non Existing Value'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXhtE3fZLHxTqdYh2uugSTlFW3a3N5L6or1v-PprygjY4CqDocDJblhZEo84MwDPF0F4XLJUgcMqGpM-LtHftwf4jJITG-UVQ7VXfxvbs3uJBssw6Kf99_IUd7u9N20ZIJC_nymYUDBSYh/s72-c/wpf-custom-combobox-with-phantom-value.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-5943607670600527279</id><published>2014-03-20T16:20:00.000+02:00</published><updated>2014-03-20T16:20:01.571+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Lambda Expression"/><title type='text'>Java 8 Lambda Expressions Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4602852119&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Finally &lt;a href=&quot;http://www.oracle.com/&quot; target=&quot;_blank&quot;&gt;Oracle&lt;/a&gt; officially presented Java 8. A key feature of Java 8 - Support for lambda expressions that allow developers to effectively apply the simultaneous computation and callback functions in programming, especially in the popular cloud applications. Function can be treated as method arguments, and code as data, which makes the final results more compact.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Java Lambda syntax is pretty similar to what we know in C#.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Let&#39;s see.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;Starting a new Thread:&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Thread(()&amp;nbsp;-&amp;gt;&amp;nbsp;{&amp;nbsp;System.out.println(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Java&amp;nbsp;8&amp;nbsp;Lambda&quot;&lt;/span&gt;);&amp;nbsp;}).start();&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Working with Collections:
&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
List&amp;lt;Employee&amp;gt;&lt;employee&gt;&amp;nbsp;employees&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;ArrayList&amp;lt;&amp;gt;();
&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;employees.add(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Employee(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;John&quot;&lt;/span&gt;));
&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;employees.add(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Employee(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Robert&quot;&lt;/span&gt;));
&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;employees.add(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Employee(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Anna&quot;&lt;/span&gt;));&lt;/employee&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Iteration:
&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
employees.forEach(e&amp;nbsp;-&amp;gt;&amp;nbsp;e.setAge(35));&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Filter:
&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
List&amp;lt;Employee&amp;gt;&lt;employee&gt;&amp;nbsp;filtered&amp;nbsp;=&amp;nbsp;employees.stream().parallel().filter
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(f&amp;nbsp;-&amp;gt;&amp;nbsp;f.getName().equals(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Anna&quot;&lt;/span&gt;)&amp;nbsp;||&amp;nbsp;f.getName().equals(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;John&quot;&lt;/span&gt;))
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.collect(Collectors.toList());
&lt;br /&gt;
&lt;br /&gt;Optional&amp;lt;Employee&amp;gt;&lt;employee&gt;&amp;nbsp;findFirst&amp;nbsp;=&amp;nbsp;employees.stream()
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.filter(e&amp;nbsp;-&amp;gt;&amp;nbsp;e.getName().equals(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Anna&quot;&lt;/span&gt;)).findFirst();&lt;/employee&gt;&lt;/employee&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Parallelism:
&lt;/u&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
List&amp;lt;Employee&amp;gt;&lt;employee&gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;employees.stream()
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.parallel()
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.filter(p&amp;nbsp;-&amp;gt;&amp;nbsp;p.getAge()&amp;nbsp;&amp;gt;&amp;nbsp;18).collect(Collectors.toList());&lt;/employee&gt;&lt;/div&gt;
&lt;br /&gt;
Happy codding friends! :)
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4113276799&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/5943607670600527279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2014/03/java8-lambda-expressions-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/5943607670600527279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/5943607670600527279'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2014/03/java8-lambda-expressions-example.html' title='Java 8 Lambda Expressions Example'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-6732558331601650909</id><published>2014-03-16T15:49:00.000+02:00</published><updated>2014-11-05T10:03:22.087+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Logging"/><title type='text'>Best Logging for Java - Logback with SLF4J </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you&#39;re looking for good logging mechanism for Java I suggest you to use &lt;a href=&quot;http://www.slf4j.org/&quot; target=&quot;_blank&quot;&gt;SLF4J&lt;/a&gt; Facade with &lt;a href=&quot;http://logback.qos.ch/&quot; target=&quot;_blank&quot;&gt;Logback&lt;/a&gt;. For my opinion it&#39;s the best combination for logging in Java. Today I will show how to configure your Java project in order to use SLF4J Logback logging framework to print logs to console and file output.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCw76otGtyzs7gTUot4Jf3ZW5IRPWIs7_m2IjzHeBMgweKCmMhZRRD2rzQD0LDxZPhBdcYZV1F39h-4ntSYAHS3UNIRzlp_atCT0fEgxcglSqNHi6AgyzTWh8PHaMqQ6MKNiswhJejwGhy/s1600/slf4j-logo.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img alt=&quot;Logback with SLF4J&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCw76otGtyzs7gTUot4Jf3ZW5IRPWIs7_m2IjzHeBMgweKCmMhZRRD2rzQD0LDxZPhBdcYZV1F39h-4ntSYAHS3UNIRzlp_atCT0fEgxcglSqNHi6AgyzTWh8PHaMqQ6MKNiswhJejwGhy/s1600/slf4j-logo.jpg&quot; title=&quot;Simple Logging Facade for Java&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
First, download &lt;a href=&quot;http://www.slf4j.org/download.html&quot; target=&quot;_blank&quot;&gt;SLF4J files&lt;/a&gt; and &lt;a href=&quot;http://logback.qos.ch/download.html&quot; target=&quot;_blank&quot;&gt;Logback files&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Add these files to your CLASSPATH:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;slf4j-api-X.X.X.jar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;logback-core-X.X.X.jar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;logback-classic-X.X.X.jar&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Now look how simple is to use Logback! In the code all you need is this:
&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;LogbackFun&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;final&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Logger&amp;nbsp;logback&amp;nbsp;=&amp;nbsp;LoggerFactory.getLogger(LogbackFun.&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;);
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logback.info(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Test&amp;nbsp;info&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logback.debug(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Test&amp;nbsp;debug&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logback.trace(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Test&amp;nbsp;trace&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logback.warn(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Test&amp;nbsp;warn&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logback.error(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Test&amp;nbsp;error&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
}
&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Ok, how to configure the log settings? Very simple! When the program starts this what&#39;s going on: 
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Logback tries to find a file called logback.groovy in the CLASSPATH&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;If no such file is found, Logback looking for file called logback-test.xml in the CLASSPATH&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;If no such file is found, it checks for the file logback.xml in the CLASSPATH&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;If neither file is found, Logback configures itself automatically using the BasicConfigurator which will print logs to the console&lt;/li&gt;
&lt;/ol&gt;
So, we create &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;logback.xml&lt;/span&gt; file and put it in CLASSPATH directory (src folder). Now let&#39;s take a look on the file content:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;appender&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;FILE&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;ch.qos.logback.core.rolling.RollingFileAppender&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;logs/mylog.log&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;rollingPolicy&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;ch.qos.logback.core.rolling.FixedWindowRollingPolicy&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;fileNamePattern&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;logs/mylog.%i.log.zip&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;fileNamePattern&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;minIndex&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;1&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;minIndex&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;maxIndex&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;3&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;maxIndex&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;rollingPolicy&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;

      &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;triggeringPolicy&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;maxFileSize&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;5MB&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;maxFileSize&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;triggeringPolicy&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;encoder&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;pattern&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;%date{YYYY-MM-dd HH:mm:ss} %level [%thread] %logger{10} [%file:%line] %msg%n&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;pattern&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;encoder&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;appender&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;

  &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;appender&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;STDOUT&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;ch.qos.logback.core.ConsoleAppender&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;encoder&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;pattern&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;%msg%n&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;pattern&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;encoder&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;appender&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;

  &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;trace&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;appender-ref&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;FILE&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;appender-ref&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;STDOUT&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Simply brilliant stuff! Appender tells where to print the log and contains its configurations. Here we have two appenders. One is for printing logs to a file and the second one is for printing into console. We can also set the pattern of the message, the log level set to trace here. RollingPolicy allows to control the file behavior - maximum file size, naming convention etc.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is it! As simple as that!&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you have any questions please don&#39;t hesitate to ask in the comments section. Good luck!&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/6732558331601650909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2014/03/slf4j-logback-java-logging.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6732558331601650909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/6732558331601650909'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2014/03/slf4j-logback-java-logging.html' title='Best Logging for Java - Logback with SLF4J '/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCw76otGtyzs7gTUot4Jf3ZW5IRPWIs7_m2IjzHeBMgweKCmMhZRRD2rzQD0LDxZPhBdcYZV1F39h-4ntSYAHS3UNIRzlp_atCT0fEgxcglSqNHi6AgyzTWh8PHaMqQ6MKNiswhJejwGhy/s72-c/slf4j-logo.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-5444411369372409992</id><published>2014-03-16T11:20:00.000+02:00</published><updated>2014-11-06T11:31:59.889+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="SQLite"/><title type='text'>SQLite4Java Select, Update Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4602852119&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
Recently I started to work on some small Java project where I need to read and update data on SQLite data base. I searched for some good SQLite wrapper for Java and finally decided to use SQLiteJava wrapper. I found it more intuitive and faster than JDBC driver. Today I&#39;ll show how to use it in your Java application.&amp;nbsp;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRJ0s7ARebX-bv5X4mNJTbdpbcV9kLTvoI9wJBmYBX8xyCFOHZoZV-crUBjVU3jkYfeu3RQh2nUz1BtomeDBmhp9gLO8LqNvVONPlTdHpIr3Zpnf9TKmRFrfqeZNRJRwClBvivwW53V6R0/s1600/sqlite4java.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;SQLite4Java&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRJ0s7ARebX-bv5X4mNJTbdpbcV9kLTvoI9wJBmYBX8xyCFOHZoZV-crUBjVU3jkYfeu3RQh2nUz1BtomeDBmhp9gLO8LqNvVONPlTdHpIr3Zpnf9TKmRFrfqeZNRJRwClBvivwW53V6R0/s1600/sqlite4java.png&quot; height=&quot;98&quot; title=&quot;SQLite4Java&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
First of all you&#39;ll need to download SQLite4Java wrapper files from &lt;a href=&quot;https://code.google.com/p/sqlite4java/downloads/list&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Once you&#39;re done do this:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white; font-family: Monaco, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, monospace; font-size: 12px;&quot;&gt;sqlite4java.jar&amp;nbsp;&lt;/span&gt;put it on your CLASSPATH&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Lucida Console, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;sqlite4java-win32-x64.dll&amp;nbsp;&lt;/span&gt;&lt;/span&gt;put in the same directory with the jar file&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Lucida Console, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;sqlite4java-win32-x86.dll&amp;nbsp;&lt;/span&gt;&lt;/span&gt;put in the same directory with the jar file&lt;/li&gt;
&lt;br /&gt;
I created SQLite4Java.java class which handles all my activities via SQLite file:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.io.File;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.util.ArrayList;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;com.almworks.sqlite4java.SQLiteConnection;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;com.almworks.sqlite4java.SQLiteConstants;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;com.almworks.sqlite4java.SQLiteException;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;com.almworks.sqlite4java.SQLiteStatement;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLite4Java&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteConnection&amp;nbsp;_db;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;private&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;_delimiter&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;[,]&quot;&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLite4Java(String&amp;nbsp;inputFile)&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;throws&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteException&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_db&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteConnection(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;File(inputFile));
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_db.open(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;true&lt;/span&gt;&lt;/strong&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;selectSingle(String&amp;nbsp;query,&amp;nbsp;String&amp;nbsp;args)&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;throws&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteException&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SQLiteStatement&amp;nbsp;st&amp;nbsp;=&amp;nbsp;_db.prepare(query);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String[]&amp;nbsp;parameters&amp;nbsp;=&amp;nbsp;args.split(_delimiter);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;value&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;try&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;for&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;parameters.length;&amp;nbsp;i++)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.bind(i&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;parameters[i]);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;columnsCount&amp;nbsp;=&amp;nbsp;st.columnCount();
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(columnsCount&amp;nbsp;&amp;gt;&amp;nbsp;1)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Error:&amp;nbsp;More&amp;nbsp;than&amp;nbsp;a&amp;nbsp;single&amp;nbsp;column!&quot;&lt;/span&gt;);
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(st.step())&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;type&amp;nbsp;=&amp;nbsp;st.columnType(0);
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;switch&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(type)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;case&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteConstants.SQLITE_INTEGER:
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;String.valueOf(st.columnInt(0));
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;case&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteConstants.SQLITE_TEXT:
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;st.columnString(0);
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;default&lt;/span&gt;&lt;/strong&gt;:
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;break&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;catch&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(e.getMessage());
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;finally&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.dispose();
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;value;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;ArrayList&lt;string&gt;&amp;nbsp;selectMany(String&amp;nbsp;query,&amp;nbsp;String&amp;nbsp;args)&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;throws&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteException&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SQLiteStatement&amp;nbsp;st&amp;nbsp;=&amp;nbsp;_db.prepare(query);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String[]&amp;nbsp;parameters;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(!args.isEmpty()&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;args&amp;nbsp;!=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters&amp;nbsp;=&amp;nbsp;args.split(_delimiter);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;for&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;parameters.length;&amp;nbsp;i++)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.bind(i&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;parameters[i]);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ArrayList&lt;string&gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;ArrayList&lt;string&gt;();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;try&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;columnsCount&amp;nbsp;=&amp;nbsp;st.columnCount();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(columnsCount&amp;nbsp;&amp;gt;&amp;nbsp;1)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;Error:&amp;nbsp;More&amp;nbsp;than&amp;nbsp;a&amp;nbsp;single&amp;nbsp;column!&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;null&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;while&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(st.step())&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;type&amp;nbsp;=&amp;nbsp;st.columnType(0);
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;switch&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(type)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;case&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteConstants.SQLITE_INTEGER:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.add(String.valueOf(st.columnInt(0)));
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;break&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;case&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteConstants.SQLITE_TEXT:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.add(st.columnString(0));
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;break&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;default&lt;/span&gt;&lt;/strong&gt;:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;break&lt;/span&gt;&lt;/strong&gt;;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;catch&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(e.getMessage());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;finally&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.dispose();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;list;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;boolean&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;updateSingleField(String&amp;nbsp;query,&amp;nbsp;String&amp;nbsp;args)&amp;nbsp;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;throws&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLiteException&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_db.exec(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;BEGIN&amp;nbsp;TRANSACTION;&amp;nbsp;&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SQLiteStatement&amp;nbsp;st&amp;nbsp;=&amp;nbsp;_db.prepare(query);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String[]&amp;nbsp;parameters&amp;nbsp;=&amp;nbsp;args.split(_delimiter);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;try&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;for&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;int&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;parameters.length;&amp;nbsp;i++)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.bind(i&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;parameters[i]);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.step();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_db.exec(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;COMMIT;&quot;&lt;/span&gt;);
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;catch&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(SQLiteException&amp;nbsp;e)&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(e.getMessage());
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;finally&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st.dispose();
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;return&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;success;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;br /&gt;}
&lt;/string&gt;&lt;/string&gt;&lt;/string&gt;&lt;/div&gt;
&lt;br /&gt;
So what we got here?&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Constructor receives a path to the SQLite data base file and opens connection.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;selectSingle&lt;/span&gt; method receives query and arguments separated by comma delimiter and returns single value (In my project I need to work only with single fields, but you can edit the method in order to be able to handle data with multiple columns)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;selectMany&lt;/span&gt; method is similar to previous with only difference that it returns a list of strings. I also check the value type and always cast it to String&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;updateSingleField&lt;/span&gt; updates single field in data base.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Here how you use it:

&lt;br /&gt;
&lt;div style=&quot;background: #FFFFFF; color: black; font-family: Courier New, Courier; font-size: 10pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;br /&gt;
SQLite4Java&amp;nbsp;sqlite&amp;nbsp;=&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SQLite4Java(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;c:\\db\\db&quot;&lt;/span&gt;);
&lt;br /&gt;
String&amp;nbsp;value&amp;nbsp;=&amp;nbsp;sqlite.selectSingle(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;SELECT&amp;nbsp;_title&amp;nbsp;FROM&amp;nbsp;_issue&amp;nbsp;WHERE&amp;nbsp;id&amp;nbsp;=&amp;nbsp;?&quot;&lt;/span&gt;,&amp;nbsp;4);
&lt;br /&gt;
sqlite.updateSingleField(&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;update&amp;nbsp;_issue&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;set&amp;nbsp;_indicator&amp;nbsp;=&amp;nbsp;strftime(&#39;%Y%m%d%H%M%f&#39;,&amp;nbsp;&#39;now&#39;)&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;where&amp;nbsp;_issue.id&amp;nbsp;=&amp;nbsp;?&quot;&lt;/span&gt;,&amp;nbsp;3);&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
You can customize this class for your purposes and use it in your application. Good luck!
&lt;/div&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-7648239438261494&quot; data-ad-slot=&quot;4113276799&quot; style=&quot;display: inline-block; height: 90px; width: 728px;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/5444411369372409992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2014/03/java-sqlite-select-update-sqlite4java.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/5444411369372409992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/5444411369372409992'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2014/03/java-sqlite-select-update-sqlite4java.html' title='SQLite4Java Select, Update Example'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRJ0s7ARebX-bv5X4mNJTbdpbcV9kLTvoI9wJBmYBX8xyCFOHZoZV-crUBjVU3jkYfeu3RQh2nUz1BtomeDBmhp9gLO8LqNvVONPlTdHpIr3Zpnf9TKmRFrfqeZNRJRwClBvivwW53V6R0/s72-c/sqlite4java.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-8149642177142167605</id><published>2013-12-18T11:01:00.000+02:00</published><updated>2013-12-18T11:10:07.762+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Multithreading"/><category scheme="http://www.blogger.com/atom/ns#" term="TPL"/><title type='text'>C# Multithreading Loop with Parallel.For or Parallel.ForEach</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4602852119&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Loop is such a trivial and so frequently used thing. And sometimes loops just killing performance of the whole application. I want the loop perform faster, but what can I do?&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Starting from .NET Framework 4 we can run loops in parallel mode using &lt;span style=&quot;color: #2b91af; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;.For&lt;/span&gt; method instead of regular &lt;span style=&quot;color: #2b91af; font-family: Courier New, Courier, monospace; font-size: 13px;&quot;&gt;&lt;span style=&quot;line-height: 19.5px;&quot;&gt;for&lt;/span&gt;&lt;/span&gt; or&amp;nbsp;&lt;span style=&quot;color: #2b91af; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;.ForEach&amp;nbsp;&lt;/span&gt;instead of regular&amp;nbsp;&lt;span style=&quot;color: #2b91af; font-family: Courier New, Courier, monospace; font-size: 13px;&quot;&gt;&lt;span style=&quot;line-height: 19.5px;&quot;&gt;foreach&lt;/span&gt;&lt;/span&gt;. And the most beautiful thing is that .NET Framework automatically manages the threads that service the loop!&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
But don&#39;t expect to receive performance boost each time you replace your&amp;nbsp;&lt;span style=&quot;color: #2b91af; font-family: Courier New, Courier, monospace; font-size: 13px;&quot;&gt;&lt;span style=&quot;line-height: 19.5px;&quot;&gt;for&lt;/span&gt;&lt;/span&gt;&amp;nbsp;loop with&amp;nbsp;&lt;span style=&quot;color: #2b91af; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;.For&lt;/span&gt;, especially if your loop is relatively simple and short. And keep in mind that results will not come in proper order because of parallelism.
&lt;/div&gt;
&lt;br /&gt;
Now let&#39;s see the code.  Here is our regular loop:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; i = 1; i &amp;lt; 1000; i++)
{
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; result = HeavyFoo(i);
    Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;Line {0}, Result : {1} &quot;&lt;/span&gt;, i, result);
}&lt;/pre&gt;
And here is how we write it with &lt;span style=&quot;color: #2b91af; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;.For&lt;/span&gt;:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;Parallel&lt;/span&gt;.For(1, 1000, (i) =&amp;gt;
{
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; result = HeavyFoo(i);
    Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;Line {0}, Result : {1} &quot;&lt;/span&gt;, i, result);
});&lt;/pre&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Same story with &lt;span style=&quot;color: #2b91af; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; line-height: 19.5px;&quot;&gt;.ForEach&lt;/span&gt;:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt;(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; s &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; stringList)
{
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; result = HeavyFoo(s);
    Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;Initial string: {0}, Result : {1} &quot;&lt;/span&gt;, s, result);
}

&lt;span class=&quot;kwrd&quot;&gt;Parallel&lt;/span&gt;.ForEach(stringList, s =&amp;gt;
{
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; result = HeavyFoo(s);
    Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;Initial string {0}, Result : {1} &quot;&lt;/span&gt;, s, result);
});&lt;/pre&gt;
Use with caution! :)
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4113276799&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/8149642177142167605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2013/12/csharp-multithreading-loop-parallel-for.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8149642177142167605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/8149642177142167605'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2013/12/csharp-multithreading-loop-parallel-for.html' title='C# Multithreading Loop with Parallel.For or Parallel.ForEach'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-7543434946783323931</id><published>2013-12-01T09:40:00.001+02:00</published><updated>2013-12-08T07:39:48.091+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Source Code"/><category scheme="http://www.blogger.com/atom/ns#" term="WPF"/><category scheme="http://www.blogger.com/atom/ns#" term="XAML"/><title type='text'>WPF MultiBinding Example (MultiValueConverter)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4602852119&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As you probably know the main key of &lt;a href=&quot;http://www.codearsenal.net/2012/04/what-is-wpf.html&quot;&gt;WPF&lt;/a&gt; is binding. We bind WPF control to a property and data flows from business logic to UI and vice versa. But what if we need to bind several properties to a single control and depending on the state of these properties we will decide what to display? This technique called MultiBinding.&lt;br /&gt; MultiBinding in WPF is always accompanied with MultiValueConverter. Inside it we define the logic that will decide what value to pass to our WPF control.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Today I&#39;ll show a simple example of MultiBinding in WPF. In my sample application I have three &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBox &lt;/span&gt;controls and a single &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBlock&lt;/span&gt;. I want to achieve this scenario: I want to show the text in the &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBlock&lt;/span&gt;, but only if each of three &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBoxes &lt;/span&gt;contain some text.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoV-9gpFuQiHxFu2rEEmjZcI0A_oyQOxPKolgJylRfawh-EIxOXieIGs04R9stfsEqx8AnNNE30Od3D4aaNHQrR_ZrJ__mRY79ztv4QPXFxyH6Oxop4zVHs2FtZeF1Tol_gnwKZCiaDZ6/s1600/wpf-multibinfing.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;WPF MultiBinding Sample Application&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoV-9gpFuQiHxFu2rEEmjZcI0A_oyQOxPKolgJylRfawh-EIxOXieIGs04R9stfsEqx8AnNNE30Od3D4aaNHQrR_ZrJ__mRY79ztv4QPXFxyH6Oxop4zVHs2FtZeF1Tol_gnwKZCiaDZ6/s1600/wpf-multibinfing.PNG&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;First, take a look at our XAML:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Window&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;x:Class&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;WPF_MultiBinding.MainWindow&quot;&lt;/span&gt;
        &lt;span class=&quot;attr&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;/span&gt;
        &lt;span class=&quot;attr&quot;&gt;xmlns:x&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;/span&gt;
        &lt;span class=&quot;attr&quot;&gt;Title&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;CodeArsenal.net&quot;&lt;/span&gt;
        &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;158&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Width&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;245&quot;&lt;/span&gt;
        &lt;span class=&quot;attr&quot;&gt;xmlns:local&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;clr-namespace:WPF_MultiBinding&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Window.Resources&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;local:MultiValueConverter&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;x:Key&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;MultiValueConverter&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Window.Resources&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ColumnDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Width&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;10&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ColumnDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Width&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;65&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ColumnDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Width&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;10&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;RowDefinition&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;

        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBox&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;textBoxOne&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;0&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;20&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;MaxLength&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;8&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt;
                 &lt;span class=&quot;attr&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding TextOne, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
        
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBox&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;textBoxTwo&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;20&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;MaxLength&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;8&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt; 
                 &lt;span class=&quot;attr&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding TextTwo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
        
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBox&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;textBoxThree&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;20&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;MaxLength&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;8&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt;
                 &lt;span class=&quot;attr&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{Binding TextThree, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBlock&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;textBlockOutput&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;4&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Grid&lt;/span&gt;.&lt;span class=&quot;attr&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;2&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBlock.Text&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
                &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;MultiBinding&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Converter&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;{StaticResource MultiValueConverter}&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Binding&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Path&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;TextOne&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Binding&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Path&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;TextTwo&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Binding&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;Path&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;TextThree&quot;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;MultiBinding&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBlock.Text&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;TextBlock&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Grid&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;Window&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
Did you notice that we bind three properties and define &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Converter &lt;/span&gt;for the &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBlock&lt;/span&gt;? By the way here is our &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ViewModel&lt;/span&gt;:
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Middle --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;2969384752&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; ViewModel : INotifyPropertyChanged
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; ViewModel() { }

    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;
    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; _textOne;
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; TextOne 
    {
        &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt; { &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; _textOne; } 
        &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;
        {
            _textOne = value;
            NotifyPropertyChanged(&lt;span class=&quot;str&quot;&gt;&quot;TextOne&quot;&lt;/span&gt;);
        } 
    }

    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; _textTwo;
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; TextTwo
    {
        &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt; { &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; _textTwo; }
        &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;
        {
            _textTwo = value;
            NotifyPropertyChanged(&lt;span class=&quot;str&quot;&gt;&quot;TextTwo&quot;&lt;/span&gt;);
        } 
    }

    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; _textThree;
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; TextThree
    {
        &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt; { &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; _textThree; }
        &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;
        {
            _textThree = value;
            NotifyPropertyChanged(&lt;span class=&quot;str&quot;&gt;&quot;TextThree&quot;&lt;/span&gt;);
        } 
    }

    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; NotifyPropertyChanged(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; propertyName)
    {
        &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (PropertyChanged != &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;)
        {
            PropertyChanged(&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;, &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; PropertyChangedEventArgs(propertyName));
        }
    }
}&lt;/pre&gt;
As you can see nothing special here. Just three properties for our &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBoxes&lt;/span&gt;. The real key feature of &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;MultiBinding &lt;/span&gt;is &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Converter&lt;/span&gt;. We must implement &lt;span style=&quot;background-color: white; color: #2b91af; font-family: Consolas; font-size: 13px;&quot;&gt;IMultiValueConverter&lt;/span&gt; interface that allows us to apply our custom logic. The logic is pretty simple - I combine all the text that comes from &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;TextBoxes&lt;/span&gt;, but only when all three of them contain text.
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; MultiValueConverter : IMultiValueConverter
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt; Convert(&lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt;[] values, Type targetType, &lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt; parameter, CultureInfo culture)
    {
        &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; one = values[0] &lt;span class=&quot;kwrd&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;;
        &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; two = values[1] &lt;span class=&quot;kwrd&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;;
        &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; three = values[2] &lt;span class=&quot;kwrd&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;;
        &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt;(!&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;.IsNullOrEmpty(one) &amp;amp;&amp;amp; !&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;.IsNullOrEmpty(two) &amp;amp;&amp;amp; !&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;.IsNullOrEmpty(three))
        {
            &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; one + two + three;
        }
        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;;
    }

    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt;[] ConvertBack(&lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt; value, Type[] targetTypes, &lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt; parameter, CultureInfo culture)
    {
        &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; NotImplementedException();
    }
}&lt;/pre&gt;
Enjoy! &lt;a href=&quot;http://www.mediafire.com/download/v6imlnwavocvh08/WPF_MultiBinding.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Download the source code&lt;/a&gt; (Visual Studio 2013 project). 
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4113276799&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/7543434946783323931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2013/12/wpf-multibinding-example.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/7543434946783323931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/7543434946783323931'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2013/12/wpf-multibinding-example.html' title='WPF MultiBinding Example (MultiValueConverter)'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoV-9gpFuQiHxFu2rEEmjZcI0A_oyQOxPKolgJylRfawh-EIxOXieIGs04R9stfsEqx8AnNNE30Od3D4aaNHQrR_ZrJ__mRY79ztv4QPXFxyH6Oxop4zVHs2FtZeF1Tol_gnwKZCiaDZ6/s72-c/wpf-multibinfing.PNG" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986679425286454345.post-4612042325353377933</id><published>2013-11-27T15:05:00.000+02:00</published><updated>2013-11-27T20:10:50.891+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="MEF"/><category scheme="http://www.blogger.com/atom/ns#" term="Source Code"/><title type='text'>MEF Simple Application in C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Up --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4602852119&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I believe the best way to learn something new is to learn by simple and easy to understand example. Once you got the principles you can always proceed to more complex stuff. So today I&#39;ll show a simple example of &lt;a href=&quot;http://www.codearsenal.net/search/label/MEF&quot; target=&quot;_blank&quot;&gt;MEF&lt;/a&gt; that will give you the basics.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Managed Extensibility Framework (&lt;a href=&quot;http://www.codearsenal.net/search/label/MEF&quot; target=&quot;_blank&quot;&gt;MEF&lt;/a&gt;) is a component of .NET 4 and it allows to developer to build extensible applications. Imagine situation when you have some application and you know that in the future you will want to add more features to it, but you don&#39;t know exactly what and when they will be added, or may be you want another developer to develop new feature and integrate it seamlessly into the main application. So it looks like we need some module structured application here, right? And this is exactly what MEF provides.&lt;br /&gt;
Now to our sample application. When user starts it he asked to enter a string and a command (name of operation) he want to apply on that string. Once it&#39;s done the program will print the result string. So every operation we want to be a separate module. Enough bla bla! Let&#39;s see the code! :)&lt;br /&gt;
&lt;br /&gt;
First, the &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Core&lt;/span&gt; class which is a part of the main application. &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Core&lt;/span&gt; class concentrates and launches all available extensions:&lt;/div&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;interface&lt;/span&gt; ICore
{
    String PerformOperations(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data, &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; command);
}

[Export(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(ICore))]
&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; Core : ICore
{
    [ImportMany]
    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; IEnumerable&amp;lt;Lazy&amp;lt;IOperation, IOperationCommand&amp;gt;&amp;gt; _operations;

    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; PerformOperations(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data, &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; command)
    {
        &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (Lazy&amp;lt;IOperation, IOperationCommand&amp;gt; i &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; _operations)
        {
            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (i.Metadata.Command.Equals(command))
                &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; i.Value.Operate(data);
        }
        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;str&quot;&gt;&quot;Unrecognized operation&quot;&lt;/span&gt;;
    }
}&lt;/pre&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;IOperation &lt;/span&gt;interface describes the operation itself and &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;IOperationCommand &lt;/span&gt;describes the command name of operation:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;interface&lt;/span&gt; IOperation
{
    &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; Operate(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data);
}

&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;interface&lt;/span&gt; IOperationCommand
{
    String Command { &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt;; }
}&lt;/pre&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Middle --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;2969384752&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
Now look how simple is to write new operations. First one turn the input string into upper case, second one turns all the characters to lower case and the third one reverses the string:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;[Export(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(MEF_Example.IOperation))]
[ExportMetadata(&lt;span class=&quot;str&quot;&gt;&quot;Command&quot;&lt;/span&gt;, &lt;span class=&quot;str&quot;&gt;&quot;upper&quot;&lt;/span&gt;)]
&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; UpperCase : MEF_Example.IOperation
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; Operate(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data)
    {
        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; data.ToUpper();
    }
}

[Export(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(MEF_Example.IOperation))]
[ExportMetadata(&lt;span class=&quot;str&quot;&gt;&quot;Command&quot;&lt;/span&gt;, &lt;span class=&quot;str&quot;&gt;&quot;lower&quot;&lt;/span&gt;)]
&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; LowerCase : MEF_Example.IOperation
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; Operate(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data)
    {
        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; data.ToLower();
    }
}

[Export(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(MEF_Example.IOperation))]
[ExportMetadata(&lt;span class=&quot;str&quot;&gt;&quot;Command&quot;&lt;/span&gt;, &lt;span class=&quot;str&quot;&gt;&quot;reverse&quot;&lt;/span&gt;)]
&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; Reverse : MEF_Example.IOperation
{
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; Operate(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data)
    {
        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;(data.ToCharArray().Reverse().ToArray());
    }
}&lt;/pre&gt;
Now all we need is to initialize our application, here how we do it:
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;internal&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; Program
{
    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; CompositionContainer _compositionContainer;

    [Import(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(ICore))]
    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; ICore core;

    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; Program()
    {
        &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; agregateCatalog = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; AggregateCatalog();
        agregateCatalog.Catalogs.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; AssemblyCatalog(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(Program).Assembly));
        agregateCatalog.Catalogs.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; DirectoryCatalog(&lt;span class=&quot;str&quot;&gt;&quot;Extensions&quot;&lt;/span&gt;));

        _compositionContainer = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; CompositionContainer(agregateCatalog);

        &lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;
        {
            &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;._compositionContainer.ComposeParts(&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;);
        }
        &lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt; (CompositionException compositionException)
        {
            Console.WriteLine(compositionException.ToString());
        }
    }

    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; Main(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;[] args)
    {
        Program program = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Program();
        &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; data, command;
        while (&lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;)
        {
            Console.Clear();
            Console.Write(&lt;span class=&quot;str&quot;&gt;&quot;Please enter data:    &quot;&lt;/span&gt;);
            data = Console.ReadLine();
            Console.Write(&lt;span class=&quot;str&quot;&gt;&quot;Please enter command: &quot;&lt;/span&gt;);
            command = Console.ReadLine();
            Console.Write(&lt;span class=&quot;str&quot;&gt;&quot;Result: &quot;&lt;/span&gt; + program.core.PerformOperations(data, command));
            Console.ReadLine();
        }
    }
}&lt;/pre&gt;
This is it! As you see the code is pretty simple. This is how looks the application output:
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI5kDmy75L1jdGXAeFXXNI1MhyphenhyphenvdGlFRilOdLoS1nyLV1BzqAo8vI9WWExEmbez0IMFVnQo4mKMZZUE3UG8J18Iyis8HeTh-QYVdb73dbT9SsRYODzdfDCqi7T_bkBiyvaAx0C8Ml_AiY4/s1600/Output.PNG&quot; imageanchor=&quot;1&quot;&gt;&lt;img alt=&quot;MEF Simple Application Output&quot; border=&quot;0&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI5kDmy75L1jdGXAeFXXNI1MhyphenhyphenvdGlFRilOdLoS1nyLV1BzqAo8vI9WWExEmbez0IMFVnQo4mKMZZUE3UG8J18Iyis8HeTh-QYVdb73dbT9SsRYODzdfDCqi7T_bkBiyvaAx0C8Ml_AiY4/s320/Output.PNG&quot; title=&quot;MEF Simple Application Output&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/download/t54vdp4v9b3ptch/MEF_Example.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Download the source code&lt;/a&gt; (Visual Studio 2013 project).
&lt;br /&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- CodeArsenal-728x90-Leaderboard_Down --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:728px;height:90px&quot;
     data-ad-client=&quot;ca-pub-7648239438261494&quot;
     data-ad-slot=&quot;4113276799&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.codearsenal.net/feeds/4612042325353377933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.codearsenal.net/2013/11/csharp-mef-simple-application.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4612042325353377933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7986679425286454345/posts/default/4612042325353377933'/><link rel='alternate' type='text/html' href='http://www.codearsenal.net/2013/11/csharp-mef-simple-application.html' title='MEF Simple Application in C#'/><author><name>Yuri Bondarenko</name><uri>http://www.blogger.com/profile/15738790480296752137</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI5kDmy75L1jdGXAeFXXNI1MhyphenhyphenvdGlFRilOdLoS1nyLV1BzqAo8vI9WWExEmbez0IMFVnQo4mKMZZUE3UG8J18Iyis8HeTh-QYVdb73dbT9SsRYODzdfDCqi7T_bkBiyvaAx0C8Ml_AiY4/s72-c/Output.PNG" height="72" width="72"/><thr:total>3</thr:total></entry></feed>