tag:blogger.com,1999:blog-11474408594530925102024-03-06T03:17:49.940+05:30Work FearlessSohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.comBlogger223125tag:blogger.com,1999:blog-1147440859453092510.post-53347170568116924592021-04-13T22:42:00.001+05:302021-04-13T22:45:14.891+05:30Types of NoSQL Database<p style="text-align: justify;"><b>NoSQL</b> database stands for "Not Only SQL" or "Not SQL." Though a better term would be "NoREL", NoSQL caught on. Carl Strozz introduced the NoSQL concept in 1998.</p><p style="text-align: justify;">Traditional RDBMS uses SQL syntax to store and retrieve data for further insights. Instead, a NoSQL database system encompasses a wide range of database technologies that can store structured, semi-structured, unstructured and polymorphic data. Let's understand about NoSQL with a diagram in this NoSQL database tutorial:</p><div class="separator" style="clear: both; text-align: center;"><img border="0" data-original-height="367" data-original-width="687" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLLKO1la1Kb4yw6q3BJone8chcOP_20bZm1paE3pqm23WtpJ1is242UTyC_V5TLSzbiaAJhfGuRMSYAjTQJr9bU_lj4A7tde0TRIRbHBsm_EyZfYBnBLZxidYHt3wBDTFpsNd_GOACG6s/s16000/NoSQLTutorial.png" style="border: none;" /></div><p style="text-align: justify;">Several different varieties of NoSQL databases have been created to support specific needs and use cases. These fall into four main categories:</p><p style="text-align: justify;"><b>Key-value data stores: </b>Key-value NoSQL databases emphasize simplicity and are very useful in accelerating an application to support high-speed read and write processing of non-transactional data. Stored values can be any type of binary object (text, video, JSON document, etc.) and are accessed via a key. The application has complete control over what is stored in the value, making this the most flexible NoSQL model. Data is partitioned and replicated across a cluster to get scalability and availability. For this reason, key value stores often do not support transactions. However, they are highly effective at scaling applications that deal with high-velocity, non-transactional data.</p><p style="text-align: justify;"><b>Document stores: </b>Document databases typically store self-describing JSON, XML, and BSON documents. They are similar to key-value stores, but in this case, a value is a single document that stores all data related to a specific key. Popular fields in the document can be indexed to provide fast retrieval without knowing the key. Each document can have the same or a different structure.</p><p style="text-align: justify;"><b>Wide-column stores: </b>Wide-column NoSQL databases store data in tables with rows and columns similar to RDBMS, but names and formats of columns can vary from row to row across the table. Wide-column databases group columns of related data together. A query can retrieve related data in a single operation because only the columns associated with the query are retrieved. In an RDBMS, the data would be in different rows stored in different places on disk, requiring multiple disk operations for retrieval.</p><p style="text-align: justify;"><b>Graph stores:</b> A graph database uses graph structures to store, map, and query relationships. They provide index-free adjacency, so that adjacent elements are linked together without using an index.</p><p style="text-align: justify;">Multi-modal databases leverage some combination of the four types described above and therefore can support a wider range of applications.</p><p style="text-align: justify;"><br /></p>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-90018144937748801032021-03-31T20:49:00.002+05:302021-03-31T20:50:18.889+05:30Top programming languages to learn<p style="text-align: justify;">Coding skills are not something that can be gained in an hour or two. It comes with time and can take a lot of time in the industry to get a hang of programming languages. </p><p style="text-align: justify;">With so many programming languages available in the market, beginners are confused in choosing the right path. It is essential to understand the path the software developer will take to get the optimum and practical results.</p><p style="text-align: justify;">To give you a better understanding of where to start, here are the top programming languages that the beginner programmer must be familiar with.</p><p style="text-align: justify;"><b>1. Python</b><br />It is one of the most programming languages that is recommended to learn due to its high popularity and easy syntax. It’s often said that Python’s syntax is clear, intuitive, and almost English-like, which makes it a popular choice for beginners. The programming language is famous due to the wide range of applications in high-level and general-purpose programming languages emphasizing code readability.</p><p style="text-align: justify;"><b>2. JavaScript</b><br />This is the programming language that is ruling the market with its wide range of applications, ease to learn, and compatibility with other languages. The programming language is easy to implement over the client-side for functionalities as well as server-side. Although JavaScript is primarily a front-end language run on the browser, it can also be used on the server-side through Node.js to build scalable network applications. Node.js is compatible with Linux, SunOS, Mac OS X, and Windows.</p><p style="text-align: justify;"><b>3. C/C++</b><br />This is the lower-level programming language that is used to develop several major platforms like Linus, Windows, etc. C is a procedural programming language that is ideally best for beginners.</p><p style="text-align: justify;"><b>4. C#</b><br />Like C++, C# (pronounced C Sharp) is a general-purpose, object-oriented language built on the foundations of C. It was originally designed by Microsoft as part of its .NET framework for building Windows applications. C# uses a syntax that’s similar to other C-derived languages such as C++, so it’s easy to pick up if you’re coming from another language in the C family. C# is not only the go-to for Microsoft app development, but it’s also the language mobile developers use to build cross-platform apps on the Xamarin platform. Additionally, anyone who is interested in VR development should consider learning C#. C# is the recommended language for building 3D and 2D video games using the popular Unity game engine, which produces one-third of the top games on the market.</p><div class="separator" style="clear: both; text-align: center;"><img border="0" data-original-height="1592" data-original-width="2048" height="498" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTDkCYyOJndqFP31oZDW3TAmHSYuYE39XQQsVOHiKqqysw3hHvxIzXgzDlqiReVyC_yWCW7XrECjWSYFG4j79QViZNKTxegTjVTmOUa6IvIS4Pcs6BbMwCHt7izngpXWd9eqTsr9tT8zo/w640-h498/Programming-Languages-to-Learn-v1.jpg" style="border: none;" width="640" /></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-35650204527985085292021-02-05T05:57:00.002+05:302021-04-13T21:59:28.798+05:30Angular 11 Features<p style="text-align: justify;">Angular 11 was released on Nov 11, 2020. Angular, Google’s JavaScript (TypeScript) framework for building web applications mobile or desktop. Highlights include stricter types, router performance improvements, and automatic inlining of fonts.</p><p style="text-align: justify;">Other improvements in Angular 11 include:</p><p></p><ul style="text-align: left;"><li style="text-align: justify;">Performance improvements and new APIs, with the parallel function making it easier to work with asynchronous actions in tests by enabling multiple asynchronous interactions with components in parallel.</li><li style="text-align: justify;">Stricter types are added for DatePipe and number pipes, to catch misuses such as passing an Observable or an array.</li><li style="text-align: justify;">Improved reporting and logging.</li><li style="text-align: justify;">An update to the Angular Language Service, providing a more powerful and more accurate experience.</li><li style="text-align: justify;">An update to Hot Module Replacement (HMR) support leverages the CLI to allow enablement of HMR when starting an application with ng serve.</li><li style="text-align: justify;">Experimental Webpack 5 support offers a path to faster builds with persistent disk caching and smaller bundles thanks to CommonJS tree-shaking.</li><li style="text-align: justify;">TSLint has been deprecated, with project creators recommending migration to ESLint.</li><li style="text-align: justify;">For the Angular compiler, keySpan would be added to the Variable node.</li><li style="text-align: justify;">The router in Angular 11 would change the default value of relativeLinkResolution from “legacy” to “corrected.” The migration updates RouterModule configurations that use the default value to now specifically use “legacy” to prevent breakages during updating.</li><li style="text-align: justify;">In a fix to the core, a Trusted Types policy is being introduced in the development mode. It allows arbitrary unsafe conversions to Trusted Types to support development features. Also, a module is being added to create a Trusted Types policy for use internally by Angular.</li><li style="text-align: justify;">New initialNavigation options are being added to legacy functionality.</li><li style="text-align: justify;">For code refactoring in the router, the type of parameter in navigateByUrl and createUrlTree is being adjusted to be more accurate.</li><li style="text-align: justify;">To improve router performance, ngDevMode can be used to tree-shake error messages.</li><li style="text-align: justify;">For service-worker, an UnrecoverableStateError notification is being added, fixing an issue in which a broken state would arise where only parts of an application would load properly. This situation has arisen when the browser has evicted eagerly cached assets from the cache that cannot be found on the server anymore.</li><li style="text-align: justify;">Support is removed for the Microsoft IE 9 and IE 10 browsers as is IE mobile support.</li><li style="text-align: justify;">ISO week-numbering year formats support is being added to formatDate.</li><li style="text-align: justify;">For the compiler-cli, interfaces are being defined that can be used for TemplateTypeChecker. Performance improvements have been made to compiler-cli, also.</li><li style="text-align: justify;">For the core, a migration is being added that finds all imports and calls to the deprecated async function @angular/core/testing and replaces them with waitforasync.</li><li style="text-align: justify;">null is now included in the types of .parent.</li><li style="text-align: justify;">A multitude of bug fixes are planned, including an improvement to typing of common pipes and another fix to ensure TestBed is not instantiated before the override provder.</li><li style="text-align: justify;">TypeScript 3.9 support has been removed from the compiler. An upgrade to TypeScript 4.0 is advised.</li></ul><p></p>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-31571052536147733722021-01-29T00:47:00.001+05:302021-04-13T21:59:36.701+05:30AWS Lambda Layers<div style="text-align: justify;"><div>Serverless developers frequently import libraries and dependencies into their AWS Lambda functions. While you can zip these dependencies as part of the build and deployment process, in many cases it’s easier to use layers instead. You can configure your Lambda function to pull in additional code and content in the form of layers. A layer is a .zip file archive that contains libraries, a custom runtime, or other dependencies. With layers, you can use libraries in your function without needing to include them in your deployment package. Layers let you keep your deployment package small, which makes development easier. You can avoid errors that can occur when you install and package dependencies with your function code. You can create layers, or use layers that AWS or an AWS customer has published. Layers support resource-based policies for granting layer usage permissions to specific AWS accounts, AWS Organizations, or all accounts.</div><div>Layers are extracted to the /opt directory in the function execution environment. Each runtime looks for libraries in a different location under /opt, depending on the language. Structure your layer so that function code can access libraries without additional configuration. You can also use the AWS Serverless Application Model (AWS SAM) to manage layers and your function's layer configuration.</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-19951845237378272332021-01-01T03:30:00.001+05:302021-01-01T03:30:04.707+05:30New Year Greetings 2021<div class="separator" style="clear: both; text-align: center;"><img border="0" data-original-height="635" data-original-width="738" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-40tvC0yn621x0caJ1_yBHBnbORf5XVG9LOHOyAUKnQyY3hDvx-ja4gflhU1Dp16kvRItRhCiHJOQqrdfNC_6OLzHXGlHPaXaDplIRsm1C8Rsyerqcp9Ohf9_4bBWfxRH82ziHI6I16s/s16000/happy+new+year+2021.jpg" style="border: none;" /></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-54125535572511228312020-12-29T22:29:00.005+05:302020-12-29T22:30:50.980+05:30AWS CloudShell<p style="text-align: justify;">AWS CloudShell is a browser-based shell that makes it easy to securely manage, explore, and interact with your AWS resources. CloudShell is pre-authenticated with your console credentials. Common development and operations tools are pre-installed, so no local installation or configuration is required. With CloudShell, you can quickly run scripts with the AWS Command Line Interface (AWS CLI), experiment with AWS service APIs using the AWS SDKs, or use a range of other tools to be productive. You can use CloudShell right from your browser and at no additional cost.</p>
<p style="text-align: justify;"><b>Benefits</b></p>
<p style="text-align: justify;"><b>No extra credentials to manage</b><br />
CloudShell inherits the credentials of the user signed in to the AWS Management Console, so there's no need to spend extra effort managing credentials locally.</p>
<p style="text-align: justify;"><b>Always up to date</b><br />
CloudShell provides a fully managed Amazon Linux 2 environment that has the latest versions of popular tools already installed and updated. You don't need to patch the environment or update the pre-installed tools.</p>
<p style="text-align: justify;"><b>No cost</b><br />
CloudShell provides you with a browser-based shell to run scripts and commands. It includes 1 GB of persistent storage per Region at no extra cost to you. You only pay for the AWS resources you use with CloudShell to create and run your applications.</p>
<p style="text-align: justify;"><b>Customizable</b><br />
With 1 GB of persistent storage per Region, you can store scripts, files, configuration preferences, and additional tools in your home directory. You can begin working immediately, without customizing your environment every time you use the shell.</p>
<p>Link: <a href="https://aws.amazon.com/cloudshell/" target="_blank">https://aws.amazon.com/cloudshell/</a></p>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-11009715862055743782020-11-02T15:30:00.015+05:302020-11-18T23:00:34.850+05:30Snowflake - Tasks<p style="text-align: justify;">
User-defined tasks allow scheduled execution of SQL statements. Tasks run according to a specified execution configuration, using any combination of a set interval and/or a flexible schedule using a subset of familiar cron utility syntax. Tasks currently run in user-specified warehouses but will eventually run in a serverless environment using Snowflake-supplied compute resources. Currently, a task can execute a single SQL statement, including a call to a stored procedure. Tasks can be combined with table streams for continuous ELT workflows to process recently changed table rows. Streams ensure exactly once semantics for new or changed data in a table. Tasks can also be used independently to generate periodic reports by inserting or merging rows into a report table or perform other periodic work.
</p>
<p style="text-align: justify;"><b>Task Scheduling</b><br />
There is no event source that can trigger a task; instead, a task runs on a schedule, which can be defined when creating a task (using CREATE TASK) or later (using ALTER TASK). Snowflake ensures only one instance of a task with a schedule (i.e. a standalone task or the root task in a tree of tasks) is executed at a given time. If a task is still running when the next scheduled execution time occurs, then that scheduled time is skipped.
</p>
<p style="text-align: justify;"><b>Task History</b><br />
Query the TASK_HISTORY table function to verify the task did not run. It is possible that the task ran successfully but the SQL statement in the task definition failed. In particular, note the scheduled and completed times, as well as any error code and message. If the task has a parent task (in a tree of tasks), verify whether the parent task completed successfully.
</p>
<p style="text-align: justify;">
There is a 60 minute default limit on a single run of a task. This limitation was implemented as a safeguard against non-terminating tasks.
</p><p style="text-align: justify;">Link: <a href="https://docs.snowflake.com/en/user-guide/tasks-intro.html" target="_blank">https://docs.snowflake.com/en/user-guide/tasks-intro.html</a></p>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-35948191885421757862020-10-26T22:58:00.003+05:302020-11-18T23:01:05.587+05:30Snowflake - Stored Procedures<div>
<div style="text-align: justify;">Unlike MS SQL server, Snowflake's stored procedures are written in JavaScript. A stored procedure returns a single value. Although you can run SELECT statements inside a stored procedure, the results must be used within the stored procedure, or be narrowed to a single value to be returned.</div>
<div style="text-align: justify;">Snowflake stored procedures use JavaScript and, in most cases, SQL:</div>
<ul style="text-align: left;">
<li style="text-align: justify;">JavaScript provides the control structures (branching and looping).</li>
<li style="text-align: justify;">SQL is executed by calling functions in a JavaScript API.</li>
</ul>
<div style="text-align: justify;">Stored procedures allow:</div>
<ul style="text-align: left;">
<li style="text-align: justify;">Procedural logic (branching and looping), which straight SQL does not support.</li>
<li style="text-align: justify;">Error handling.</li>
<li style="text-align: justify;">Dynamically creating a SQL statement and execute it.</li>
<li style="text-align: justify;">Writing code that executes with the privileges of the role that owns the procedure, rather than with the privileges of the role that runs the procedure. This allows the stored procedure owner to delegate the power to perform specified operations to users who otherwise could not do so. However, there are limitations on these owner’s rights stored procedures.</li>
</ul>
<div style="text-align: justify;">One common use for stored procedures is to automate a task that requires multiple SQL statements and is performed frequently.</div>
<div style="text-align: justify;">Snowflake API consists of JavaScript objects and the methods in those objects.</div>
<div style="text-align: justify;">Link: <a href="https://docs.snowflake.com/en/sql-reference/stored-procedures-api.html" target="_blank">https://docs.snowflake.com/en/sql-reference/stored-procedures-api.html</a><br /></div>
</div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-51259818797158357252020-06-02T05:44:00.002+05:302020-06-02T05:45:52.641+05:30Multi-tenant Application<div style="line-height: 1.5; text-align: justify;">According to the definition available online is "Multi-tenancy is an architecture in which a single instance of a software application serves multiple customers". The term "software multitenancy" refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. Systems designed in such manner are often called shared (in contrast to dedicated or isolated). A tenant is a group of users who share a common access with specific privileges to the software instance. With a multitenant architecture, a software application is designed to provide every tenant a dedicated share of the instance - including its data, configuration, user management, tenant individual functionality and non-functional properties. Multitenancy contrasts with multi-instance architectures, where separate software instances operate on behalf of different tenants.</div>
<div style="line-height: 1.5; text-align: justify;"><b style="line-height: 1.5;">Types of multi-tenant architecture:</b></div>
<div style="line-height: 1.5; text-align: justify;">There are three main multi-tenancy model types, all with varying levels of complexity and costs. A single, shared database schema is a multi-tenancy model with a multi-tenant database. This is the simplest form out of the three and is a relatively low cost for tenants because of the use of shared resources. This form uses a single application and database instance to host tenants and store data. Using a single, shared database schema allows for easier scaling; however, operational costs can be higher.</div>
<div style="line-height: 1.5; text-align: justify;">Another multi-tenant architecture includes the use of a single database with multiple schemas. This tenant system uses a single application instance with individual databases for each tenant. In addition, this architecture has a higher cost with more overhead with each database. It is a valuable architecture when data from different tenants need to be treated differently -- such as if they had to go through different geographic regulations.</div>
<div style="line-height: 1.5; text-align: justify;">The third type of multi-tenant architecture hosts data in multiple databases. This model is relatively complex in terms of management and maintenance, but tenants can be separated by a chosen criterion.</div>
<div style="line-height: 1.5; text-align: justify;">
In cloud computing, the meaning of multi-tenant architecture has broadened because of new service models that take advantage of virtualization and remote access. A software-as-a-service (SaaS) provider, for example, can run one instance of its application on one instance of a database and provide web access to multiple customers.
In such a scenario, each tenant's data is isolated and remains invisible to other tenants. Multi-tenancy can also be implemented in multi-tier systems such as an SAP system.</div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-9382024266246347822020-02-26T05:19:00.001+05:302020-02-26T05:19:23.454+05:30ASP.NET Core Middleware<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
ASP.NET Core introduced a new concept called <b>Middleware</b>. Middleware is software that's assembled into an app pipeline to handle requests and responses. Each component:<br />
<ul>
<li>Chooses whether to pass the request to the next component in the pipeline.</li>
<li>Can perform work before and after the next component in the pipeline.</li>
</ul>
</div>
<div style="text-align: justify;">
Request delegates are used to build the request pipeline. The request delegates handle each HTTP request. Request delegates are configured using Run, Map, and Use extension methods. An individual request delegate can be specified in-line as an anonymous method (called in-line middleware), or it can be defined in a reusable class. These reusable classes and in-line anonymous methods are middleware, also called middleware components. Each middleware component in the request pipeline is responsible for invoking the next component in the pipeline or short-circuiting the pipeline. When a middleware short-circuits, it's called a terminal middleware because it prevents further middleware from processing the request.</div>
<div style="text-align: justify;">
In the classic ASP.NET, HttpHandlers and HttpModules were part of request pipeline. Middleware is similar to HttpHandlers and HttpModules where both needs to be configured and executed in each request.</div>
<div style="text-align: justify;">
Typically, there will be multiple middleware in ASP.NET Core web application. It can be either framework provided middleware, added via NuGet or your own custom middleware. We can set the order of middleware execution in the request pipeline. Each middleware adds or modifies http request and optionally passes control to the next middleware component.</div>
<div style="text-align: justify;">
<b>1. Use</b>: chain multiple request delegates together. The next parameter represents the next delegate in the pipeline. You can short-circuit the pipeline by not calling the next parameter.</div>
<div style="text-align: justify;">
<b>2. Run:</b> delegates don't receive a next parameter. The first Run delegate is always terminal and terminates the pipeline.</div>
<div style="text-align: justify;">
<b>3. Map:</b> extensions are used as a convention for branching the pipeline. Map branches the request pipeline based on matches of the given request path. If the request path starts with the given path, the branch is executed.</div>
</div>
Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-2112310790475589742020-01-29T04:49:00.001+05:302020-01-29T04:49:26.375+05:30RxJS library<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">Reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. RxJS (Reactive Extensions for JavaScript) is a library for reactive programming using observables that makes it easier to compose asynchronous or callback-based code. RxJS is a library for composing asynchronous and event-based programs by using observable sequences. It provides one core type, the Observable, satellite types (Observer, Schedulers, Subjects) and operators inspired by Array#extras (map, filter, reduce, every, etc) to allow handling asynchronous events as collections.</div><div style="text-align: justify;">RxJS provides an implementation of the Observable type, which is needed until the type becomes part of the language and until browsers support it. The library also provides utility functions for creating and working with observables. These utility functions can be used for:<br />
<ul><li>Converting existing code for async operations into observables</li>
<li>Iterating through the values in a stream</li>
<li>Mapping values to different types</li>
<li>Filtering streams</li>
<li>Composing multiple streams</li>
</ul></div><div style="text-align: justify;">The essential concepts in RxJS which solve async event management are:<br />
<ul><li>Observable: represents the idea of an invokable collection of future values or events.</li>
<li>Observer: is a collection of callbacks that knows how to listen to values delivered by the Observable.</li>
<li>Subscription: represents the execution of an Observable, is primarily useful for cancelling the execution.</li>
<li>Operators: are pure functions that enable a functional programming style of dealing with collections with operations like map, filter, concat, reduce, etc.</li>
<li>Subject: is the equivalent to an EventEmitter, and the only way of multicasting a value or event to multiple Observers.</li>
<li>Schedulers: are centralized dispatchers to control concurrency, allowing us to coordinate when computation happens on e.g. setTimeout or requestAnimationFrame or others.</li>
</ul></div><div style="text-align: justify;"><br />
</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-5564502643596627212020-01-02T00:20:00.000+05:302020-01-02T00:20:01.468+05:30New Year Greetings 2020<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><img border="0" style="border: none;" data-original-height="1280" data-original-width="1280" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Ov9LFRyHcXp9-Z9TH_TFhVYXBnu4jUczVgB_JPvJQdiDkdKGEESC-keH2oydGMVotMlR4Wrt0E-PCiSDtgJXEsT5esLlZbtXS8Ur7kmKvt42rmy0-yQ_NuAZVam1iLmeACKa7dmxpvQ/s640/Happy_New_Year_2020__03602.1568408759.jpg" width="640" /></div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-27327478491187752019-12-20T05:34:00.000+05:302020-01-03T05:35:08.261+05:30Blockchain<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">A blockchain is a growing list of records, called blocks, that are linked using cryptography. Each block contains a cryptographic hash of the previous block, a timestamp, and transaction data. At its most basic level, blockchain is literally just a chain of blocks, but not in the traditional sense of those words. When we say the words “block” and “chain” in this context, we are actually talking about digital information (the “block”) stored in a public database (the “chain”).</div><div style="text-align: justify;">Blockchain is a cryptographically secured, time-stamped, public and distributed database of every bitcoin transaction that has ever occurred on the network. "Distributed" here means that the information in the blockchain is broadcast to and recorded by every node in the network. There is no one central database. Any user can refer to this list of transactions and check exactly what how many bitcoins have ever belonged to any specific address at any point in time. This way the system is transparent, double-spending is prevented, and there is no need for a trusted central authority.</div><div style="text-align: justify;">The goal of blockchain is to allow digital information to be recorded and distributed, but not edited. That concept can be difficult to wrap our heads around without seeing the technology in action, so let’s take a look at how the earliest application of blockchain technology actually works.</div><div style="text-align: justify;">Blockchain technology was first outlined in 1991 by Stuart Haber and W. Scott Stornetta, two researchers who wanted to implement a system where document timestamps could not be tampered with. But it wasn’t until almost two decades later, with the launch of Bitcoin in January 2009, that blockchain had its first real-world application.</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-22670157839389709902019-11-01T07:00:00.000+05:302019-11-01T07:00:02.380+05:30 Integrate Qlik Sense with Web Application<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">Qlik Sense apps, sheets and visualizations can be embedded in for example:</div><ul style="text-align: left;"><li style="text-align: justify;">Portals</li>
<li style="text-align: justify;">Web applications</li>
<li style="text-align: justify;">Intranet and Extranet sites</li>
</ul><div style="text-align: justify;">There are different ways of embedding the Qlik Sense content:</div><ul style="text-align: left;"><li style="text-align: justify;">iFrame integration using the URL Integration APIs</li>
<li style="text-align: justify;">Div integration using the JavaScript libraries</li>
<li style="text-align: justify;">Standard Qlik Sense charts and custom visualization extensions can be created programmatically without having to be built in the Qlik Sense UI first, using the qlik-visual web component</li>
</ul><div style="text-align: justify;"><b>Mashups overview</b></div><div style="text-align: justify;">In the context of web development, a mashup is a web page or web application that uses content from more than one source to create a single new service displayed in a single graphical interface.</div><div style="text-align: justify;">The Capability APIs enable you to easily and quickly integrate with your Qlik Sense objects to produce enriched results that were not necessarily the original reason for producing the source app in Qlik Sense. You can reuse Qlik Sense visualizations, including your custom extensions, and you can also make use of Qlik Sense data and calculations.</div><div style="text-align: justify;">By using active content, your visualizations are updated when state changes. You can also subscribe to data and change the state through the visualizations.</div><div style="text-align: justify;">In short it works like the following:</div><div style="text-align: justify;"> You open a WebSocket to Qlik associative engine using the qlik.openApp method.</div><div style="text-align: justify;"> Objects use the same WebSocket, that is the same session, which means they are connected.</div><div style="text-align: justify;"> Qlik Sense objects work just as they do in the Qlik Sense client.</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-5565093465007259272019-10-22T21:04:00.001+05:302019-10-22T21:04:44.452+05:30Qlik<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Qlik (formerly known as Qliktech) is a software company whose main products are QlikView and Qlik Sense, both software for business intelligence and data visualization.</div>
<div style="text-align: justify;">
<b>Qlik View:</b></div>
<div style="text-align: justify;">
QlikView is a data analysis and visualization tool which enables users to fetch, integrate, process and analyze data from varied sources. We can use it for developing data models, analytical applications, dashboards, visualizations to create analytical reports and deliver it to end-users via Access point. Through the access point, end-users can access data, carry out searches, create data models, associations, visualizations etc. to analyze data and discover data trends.</div>
<div style="text-align: justify;">
Features of QlikView</div>
<div style="text-align: justify;">
Dynamic BI ecosystem (Interaction with dynamic apps and dashboards)</div>
<div style="text-align: justify;">
Default and custom connectors</div>
<div style="text-align: justify;">
Data visualizations</div>
<div style="text-align: justify;">
Capable of building guided analytics applications and dashboards</div>
<div style="text-align: justify;">
Guided and advanced analytics</div>
<div style="text-align: justify;">
<b><br /></b>
<b>Qlik Sense:</b></div>
<div style="text-align: justify;">
Qlik Sense is a self-service data discovery and analysis tool which focuses on ease of use for the user. It provides a modern and interactive user interface where you can use the tools for modeling and managing data, creating visualizations, layouts, and stories. It is not very technical in its approach and thus very user-friendly.</div>
<div style="text-align: justify;">
Features of Qlik Sense:</div>
<div style="text-align: justify;">
Smart search options like Google and associative functions</div>
<div style="text-align: justify;">
Fast and reliable connections to multiple data sources</div>
<div style="text-align: justify;">
Drag and drop visualizations</div>
<div style="text-align: justify;">
Generate personalized reports and detailed, interactive dashboards</div>
<div style="text-align: justify;">
Self-service data discovery</div>
</div>
Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-22349622168492205662019-09-06T22:54:00.000+05:302019-09-06T22:54:43.454+05:30HttpClient - a closer look (C#.Net)<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">HttpClient is the new and improved way of doing HTTP requests and posts, having arrived with .Net Framework 4.5. It provides a base class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.</div><div style="text-align: justify;">HttpClient is preferred over HttpWebRequest due to async methods available out of the box and you would not have to worry about writing begin/end methods. Basically when you use async call (using either of the class), it will not block the resources waiting for the response and any other request would utilize the resources to make further calls. Another thing to keep in mind that you should not be using HttpClient in the 'using' block to allow reuse of same resources again and again for other web requests.</div><div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">Recommend use:</div><ul style="text-align: left;"><li style="text-align: justify;">If all the operations for a service share the same set of default headers, then have an instance of HttpClient for each endpoint that your application is communicating to.</li>
<li style="text-align: justify;">If an endpoint requires different header for each HTTP method, then you’ll need to create an instance of HttpClient for each combination of verb+ endpoint.</li>
</ul></div><div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">These client classes should be made Singleton across the application or the HttpClient variable should be declared private static readonly within the Client class. This will allow you to:</div><ul style="text-align: left;"><li style="text-align: justify;">Benefit from the performance optimizations provided by connection pooling;</li>
<li style="text-align: justify;">Avoid running out of available ports due to connections in TIME_WAIT state if the server gets heavy load;</li>
<li style="text-align: justify;">Use default BaseAddress and HTTP Headers for each service your application integrates to</li>
</ul></div><div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">If you are getting either below errors, you may need to check the default security protocol used by HttpClient:</div><ul style="text-align: left;"><li style="text-align: justify;">One or more errors occurred.</li>
<li style="text-align: justify;">An error occurred while sending the request.</li>
<li style="text-align: justify;">The underlying connection was closed: An unexpected error occurred on a receive.</li>
<li style="text-align: justify;">The client and server cannot communicate, because they do not possess a common algorithm.</li>
</ul></div><div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">To resolve this issue, you can use:</div></div><div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;"><pre style="-webkit-text-stroke-width: 0px; background-color: #f8f9fa; border: 1px solid rgb(234, 236, 240); color: black; font-family: monospace, Courier; font-size: 14px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; line-height: 1.3em; orphans: 2; padding: 1em; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px;">using System.Net;
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;</pre></div></div><div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">As,</div></div><div dir="ltr" style="text-align: left;" trbidi="on"><ul style="text-align: left;"><li style="text-align: justify;">It needed for .Net 4.5 because Tls12 is not a default protocol.</li>
<li style="text-align: justify;">You need to write the above code only once within the application. (For example within Global.asax > Application_Start within Web application or equivalent in Winforms application)</li>
<li style="text-align: justify;">For .Net 4.6 and above, Tls12 is a default protocol so it is not needed.</li>
</ul></div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-90757559490574618392019-08-14T00:09:00.000+05:302019-08-14T00:22:29.947+05:30Data Warehouse vs Database<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">Data warehouses and Databases are both relational data systems, but were built to serve different purposes. A data warehouse is built to store large quantities of historical data and enable fast, complex queries across all the data, typically using Online Analytical Processing (OLAP). A database was built to store current transactions and enable fast access to specific transactions for ongoing business processes, known as Online Transaction Processing (OLTP).</div><div dir="ltr" style="text-align: left;" trbidi="on"><table cellpadding="4" cellspacing="0" style="border: 1px solid rgb(213, 213, 211); margin-left: 0px; margin-right: auto; text-align: justify; width: 100%;"><tbody align="left">
<tr><th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); border-right: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 16%;">Parameter</th><th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); border-right: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 42%;">Database</th><th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 42%;">Data Warehouse</th></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Purpose</td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Is designed to record</span></td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Is designed to analyze</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Processing Method</td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">The database uses the Online Transactional Processing (OLTP)</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Data warehouse uses Online Analytical Processing (OLAP)</span></td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Usage</span></td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">The database helps to perform fundamental operations for your business</span></td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Data warehouse allows you to analyze your business</span></td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Tables and Joins</span></td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Tables and joins of a database are complex as they are normalized</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Table and joins are simple in a data warehouse because they are denormalized</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Orientation</td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Is an application-oriented collection of data</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">It is a subject-oriented collection of data</span></td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Storage limit</span></td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Generally limited to a single application</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Stores data from any number of applications</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Availability</td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Data is available real-time</span></td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Data is refreshed from source systems as and when needed</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Usage</td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">ER modeling techniques are used for designing</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Data modeling techniques are used for designing</span></td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Technique</span></td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Capture data</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Analyze data</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Data Type</span></td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Data stored in the Database is up to date</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Current and Historical Data is stored in Data Warehouse May not be up to date</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Storage of data</td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Flat Relational Approach method is used for data storage</span></td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Data Ware House uses dimensional and normalized approach for the data structure Example: Star and snowflake schema</td></tr>
<tr><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><span style="text-align: justify;">Query Type</span></td><td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Simple transaction queries are used</td><td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">Complex queries are used for analysis purpose</td></tr>
</tbody></table></div><div dir="ltr" style="text-align: left;" trbidi="on"><br />
</div><div dir="ltr" style="text-align: left;" trbidi="on"><span style="font-size: x-small;">Links: <br />
<a href="https://panoply.io/data-warehouse-guide/the-difference-between-a-database-and-a-data-warehouse" target="_blank">https://panoply.io/data-warehouse-guide/the-difference-between-a-database-and-a-data-warehouse</a><br />
<a href="https://www.guru99.com/database-vs-data-warehouse.html" target="_blank">https://www.guru99.com/database-vs-data-warehouse.html</a></span></div><div dir="ltr" style="text-align: left;" trbidi="on"><br />
</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-42959198881101098952019-07-20T05:03:00.000+05:302019-07-20T05:03:37.503+05:30Angular 8 Features<div dir="ltr" style="text-align: left;" trbidi="on"> <div style="text-align: justify;"> Angular 8 was released on May 28, 2019. Angular is the most popular platform for developing client-side (front-end) mobile and desktop web apps or SPAs. With the new release, it enabled many major partner launches such as NativeScript (a framework for building native mobile apps with Angular), Angular Console (console for running Angular projects on your system),@angular/fire (for integrating Firebase with Angular) and StackBlitz (an online IDE for Angular) along with new features Differential loading for all application code, Dynamic imports for lazy routes, Web workers, TypeScript 3.4 support, and Angular Ivy as an opt-in preview.<br />
</div> <div style="text-align: justify;"> <b>Preview of Ivy</b><br />
</div> <div style="text-align: justify;"> A preview version of Ivy is now available for testing. Ivy is a new rendering engine that will produce smaller bundle sizes. But it's not recommended to start using it in production not just yet. Angular Ivy opt-in preview includes:<br />
<ul> <li>Generated code that is easier to read and debug at runtime.</li>
<li>Faster re-build time.</li>
<li>Improved payload size.</li>
<li>Improved template type checking.</li>
<li>Backwards compatibility.</li>
</ul> </div> <div style="text-align: justify;"> <b>TypeScript 3.4</b><br />
</div> <div style="text-align: justify;"> Angular 8.0 now supports TypeScript 3.4, and even requires it.<br />
</div> <div style="text-align: justify;"> <b>Web Workers</b><br />
</div> <div style="text-align: justify;"> Angular CLI 8, web workers are taken into consideration when building the production bundles which helps increase the performance. Angular CLI 8 provides now one bundle for every web worker.<br />
</div> <div style="text-align: justify;"> <b>Differential loading</b><br />
</div> <div style="text-align: justify;"> With differential loading, two bundles are created when building for production: a bundle for modern browsers that support ES2015+ and a bundle for older browsers that only support the ES5 version of JavaScript. The correct bundle will be loaded automatically by the browser, thanks to the support of ES6 modules in newer browsers.<br />
</div> <div style="text-align: justify;"> <b>Lazy Loading</b><br />
</div> <div style="text-align: justify;"> The Angular Router has always supported lazy loading but now wiht Angular 8 the support for dynamic EcmaScript imports is added.<br />
</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-53598769028240931752019-06-11T21:44:00.001+05:302019-06-11T22:29:56.155+05:30AWS Fargate<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">AWS Fargate is a compute engine for Amazon ECS that allows you to run containers without having to manage servers or clusters. With AWS Fargate, you no longer have to provision, configure, and scale clusters of virtual machines to run containers. This removes the need to choose server types, decide when to scale your clusters, or optimize cluster packing. AWS Fargate removes the need for you to interact with or think about servers or clusters. Fargate lets you focus on designing and building your applications instead of managing the infrastructure that runs them.<br />
<br />
Amazon ECS has two modes: </div><ul style="text-align: left;"><li>Fargate launch type </li>
<li>EC2 launch type</li>
</ul><div style="text-align: justify;">With Fargate launch type, all you have to do is package your application in containers, specify the CPU and memory requirements, define networking and IAM policies, and launch the application. EC2 launch type allows you to have server-level, more granular control over the infrastructure that runs your container applications. </div><div style="text-align: justify;">With EC2 launch type, you can use Amazon ECS to manage a cluster of servers and schedule placement of containers on the servers. Amazon ECS keeps track of all the CPU, memory and other resources in your cluster, and also finds the best server for a container to run on based on your specified resource requirements. You are responsible for provisioning, patching, and scaling clusters of servers. You can decide which type of server to use, which applications and how many containers to run in a cluster to optimize utilization, and when you should add or remove servers from a cluster. EC2 launch type gives you more control of your server clusters and provides a broader range of customization options, which might be required to support some specific applications or possible compliance and government requirements.<br />
<br />
Link: <a href="https://aws.amazon.com/fargate/" target="_blank">https://aws.amazon.com/fargate/</a></div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-72723019028465920802019-05-23T23:40:00.000+05:302019-05-23T23:40:05.923+05:30Visual Studio 2019<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Version Number: 16.1</div>
<div style="text-align: justify;">
Summary of What's New in Visual Studio 2019:</div>
<ul style="text-align: justify;">
<li>IDE</li>
<ul style="text-align: left;">
<li>Visual Studio IntelliCode is now generally available and comes installed with any workload that supports C#, C++, TypeScipt/JavaScript, or XAML.</li>
<li>We have added Per-Monitor Awareness support.</li>
<li>New codefixes are available for C#.</li>
<li>Most Recently Used has been added to Visual Studio Search.</li>
</ul>
<li>Debugger</li>
<ul style="text-align: left;">
<li>Source Link authentication improvements have been implemented.</li>
<li>We have added nuget.org symbol server to the list of default symbol servers.</li>
<li>Time Travel Debugging preview now includes exception stepping support.</li>
</ul>
<li>Extensibility</li>
<ul style="text-align: left;">
<li>We have removed the need for .resx file in VSIX projects (BuildTools update).</li>
<li>VSIX Project template now uses the new SDK version.</li>
</ul>
<li>Performance</li>
<ul style="text-align: left;">
<li>You can now experience optimizations to improve the solution load time of very large solutions.</li>
<li>Template authors can add custom tags to their templates.</li>
<li>There is now CodeLens support for custom UI.</li>
<li>We have provided updates to Language Server Protocol implementation.</li>
<li>We have updated behavior for switching between solutions, folders, and other views.</li>
</ul>
</ul>
</div>
Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-65291710283056093652019-04-11T21:34:00.002+05:302019-06-11T22:30:06.227+05:30Snowflake : Data Encryption<div dir="ltr" style="text-align: left;" trbidi="on">Snowflake provides best-in-class key management, which is entirely transparent to customers. <br />
<br />
<b>End-to-end encryption (E2EE)</b> is a form of communication in which no one but end users can read the data. In Snowflake, this means that only a customer and the runtime components can read the data. No third parties, including Snowflake’s cloud computing platform or any ISP, can see data in the clear. E2EE minimizes the attack surface. In the event of a security breach of the cloud platform, the data is protected because it is always encrypted, regardless of whether the breach exposes access credentials indirectly or data files directly, whether by an internal or external attacker.<br />
<br />
<b>Client-side encryption</b> provides a secure system for managing data in cloud storage. Client-side encryption means that a user encrypts stored data before loading it into Snowflake. The cloud storage service only stores the encrypted version of the data and never includes data in the clear.<br />
<br />
Document Link: <a href="https://docs.snowflake.net/manuals/user-guide/security-encryption.html" target="_blank">https://docs.snowflake.net/manuals/user-guide/security-encryption.html</a></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-1676665645535916812019-03-27T06:40:00.000+05:302019-06-11T22:30:16.867+05:30Sharing Data Securely in Snowflake<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;">Secure Data Sharing enables sharing selected objects (tables, secure views, and secure UDFs) in a database in your account with other Snowflake accounts. The principle participants in any data sharing relationship are the provider and one or more consumers. Snowflake enables the sharing of databases through shares, which are created by data providers and "imported" by data consumers. All database objects shared between accounts are read-only (i.e. the objects cannot be modified or deleted, including adding or modifying table data).<br />
With Secure Data Sharing, no actual data is copied or transferred between accounts. All sharing is accomplished through Snowflake’s unique services layer and metadata store. This is an important concept because it means that shared data does not take up any storage in a consumer account and, therefore, does not contribute to the consumer’s monthly data storage charges. The only charges to consumers are for the compute resources (i.e. virtual warehouses) used to query the shared data.<br />
In addition, because no data is copied or exchanged, Secure Data Sharing setup is quick and easy for providers and access to the shared data is instantaneous for consumers:<br />
<ul style="text-align: left;"><li>The provider creates a share of a database in their account and grants access to specific objects (i.e. tables, secure views, and secure UDFs) in the database. One or more accounts are then added to the share, which can include your own accounts (if you have multiple Snowflake accounts).</li>
<li>On the consumer side, a read-only database is created from the share. Access to this database is configurable using the same, standard role-based access control that Snowflake provides for all objects in the system.</li>
</ul>Shares are named, first-class Snowflake objects that encapsulate all of the information required to share a database. Each share consists of:<br />
<ul style="text-align: left;"><li>The privileges that grants access to the database and the schema containing the objects to share.</li>
<li>The privileges that grant access to the specific objects (tables, secure views, and secure UDFs).</li>
<li>The consumer accounts with which the database and its objects are shared.</li>
</ul>Once a database is created (in a consumer account) from a share, all the shared objects are accessible to users in the consumer account. Shares are secure, configurable, and controlled 100% by the provider account:<br />
<ul style="text-align: left;"><li>New objects added to a share become immediately available to all consumers, providing real-time access to shared data.</li>
<li>Access to a share (or any of the objects in a share) can be revoked at any time.</li>
</ul>Link: <a href="https://docs.snowflake.net/manuals/user-guide/data-sharing-intro.html" target="_blank">https://docs.snowflake.net/manuals/user-guide/data-sharing-intro.html</a></div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-54310146742888961692018-12-31T23:30:00.000+05:302018-12-31T23:31:13.623+05:30New Year Greetings 2019<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="separator" style="clear: both; text-align: center;"> <img border="0" data-original-height="180" data-original-width="586" height="196" style="border: none;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3XP4SP-bcCoVXy_D3K9dnfI81zk-G_7FW-xX_WlGR722sqMCjKjZkduLcCTycCjc82dURxrJncPeZ82YGUOZnl5zVQ2nZPjUWdkpjw2kClLBZ6XFNszULw2tofz0j7AdzxH8G7v7shO4/s640/Happy-New-Year-2019-Banner-3-e1534966808693.png" width="640" /><br />
<img border="0" data-original-height="900" data-original-width="1600" height="360" style="border: none;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPYHYreQ8TygiQarQEj2ZKk8kll8uo6qkHYpf40IzPv4BzLpDBdn-F1vCsdTAt5ChMgrA8w1WtF7h7pnc2aUtTUHMyIw7VfTJ4-FRE2qDZ9QDGjAssD8SKEs3Xg0IbTIDWpG8xBX56VIk/s640/2019-1920x1080-happy-new-year-balloons.jpg" width="640" /><br />
</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-53691553442287523882018-12-31T17:00:00.000+05:302018-12-31T17:00:06.783+05:30GitHub vs. Bitbucket vs. AWS CodeCommit<div dir="ltr" style="text-align: left;" trbidi="on">
<table cellpadding="4" cellspacing="0" style="border: 1px solid rgb(213, 213, 211); margin-left: 0px; margin-right: auto; text-align: left; width: 100%;"> <tbody align="left">
<tr>
<th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); border-right: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 10%;"></th>
<th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); border-right: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 30%;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA_gb-vnx-RMIAj7bT_yJKjcZePk-c8dRPIuOwPsfqhO9bTGyjaSR-izYAmlgbzpdTrxI3egK95CpQwPcDi_L55Hh1wJBOAZsjqNatemKdeXLG1mnLdqBOst_CzITWzSz4kptjSzSQPuk/s200/github.png" style="border: none;" width="93" /></div>
<div style="text-align: center;">
GitHub</div>
</th>
<th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); border-right: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 30%;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1FF1HtmKLDZHgAAv7R8XvQT3jSJCfI2jYRSuWKMkXvic6W4zdfhVHDsFumkOfeG9ofMmR2HNGLMYbm5O98KBk0-Ok1r-I2FXgUeS57fwdswcSadWJYH83oRopb4wDYdhAok2jhZdmzfA/s1600/bitbucket.png" style="border: none;" width="93" /></div>
<div style="text-align: center;">
Bitbucket</div>
</th>
<th style="background-color: white; border-bottom: 1px solid rgb(213 , 213 , 211); vertical-align: middle; width: 30%;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnAIXvJ7JeEPs1TjM7twU5ORmB53Z8LxPGJ4GIh92m158K5vhIu3chF3lbN1lJas9FmjPgAM0SWI8SRVAhAtK1rx2UVF6ZIu8dM0LpIK2w_NeIKPp5fIcngFTchLA2jCFQY6EvnZerLCc/s1600/codecommit.png" style="border: none;" width="93" /></div>
<div style="text-align: center;">
AWS CodeCommit</div>
</th>
</tr>
<tr>
<td style="border-right: 1px solid rgb(213, 213, 211); vertical-align: top;"><b>Description</b></td>
<td style="border-right: 1px solid rgb(213, 213, 211); vertical-align: top;">GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Over three million people use GitHub to build amazing things together.</td>
<td style="border-right: 1px solid rgb(213, 213, 211); vertical-align: top;">Bitbucket gives teams one place to plan projects, collaborate on code, test and deploy, all with free private Git repositories. Teams choose Bitbucket because it has a superior Jira integration, built-in CI/CD, & is free for up to 5 users.</td>
<td style="vertical-align: top;">CodeCommit eliminates the need to operate your own source control system or worry about scaling its infrastructure. You can use CodeCommit to securely store anything from source code to binaries, and it works seamlessly with your existing Git tools.</td>
</tr>
<tr>
<td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><b>Pros</b></td>
<td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">• Open source friendly<br />
• Easy source control<br />
• Nice UI<br />
• Great for team collaboration<br />
• Easy setup<br />
• Issue tracker<br />
• Remote team collaboration<br />
• Great community<br />
• Great way to share<br />
• Pull request and features planning</td>
<td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">• Free private repos<br />
• Simple setup<br />
• Nice ui and tools<br />
• Unlimited private repositories<br />
• Affordable git hosting<br />
• Integrates with many apis and services<br />
• Reliable uptime<br />
• Nice gui<br />
• Pull requests and code reviews<br />
• Very customisable</td>
<td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">• Free private repos<br />
• IAM integration<br />
• Pay-As-You-Go Pricing<br />
• Repo data encrypted at rest<br />
• Amazon feels the most Secure<br />
• I can make repository by myself if I have AWS account<br />
• Faster deployments when using other AWS services<br />
• Does not support web hooks yet!<br />
• AWS CodePipeline integration<br />
• Codebuild integration</td>
</tr>
<tr>
<td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;"><b>Cons</b></td>
<td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">• Expensive for lone developers that want private repos<br />
• Relatively slow product/feature release cadence<br />
• Owned by micrcosoft<br />
• API scoping could be better</td>
<td style="border-right: 1px solid rgb(213, 213, 211); border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">• Not much community activity<br />
• Difficult to review prs because of confusing ui<br />
• Quite buggy<br />
• Managed by enterprise Java company</td>
<td style="border-top: 1px solid rgb(213, 213, 211); vertical-align: top;">• UI sucks<br />
• No fork</td>
</tr>
</tbody>
</table>
</div>
Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0tag:blogger.com,1999:blog-1147440859453092510.post-8249384279136404912018-12-31T09:37:00.000+05:302018-12-31T09:37:34.905+05:30Distributed Version Control System<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;"><b>Snapshots, Not Differences -</b> The major difference between Git and any other VCS (Subversion and friends included) is the way Git thinks about its data. Conceptually, most other systems store information as a list of file-based changes. These other systems (CVS, Subversion, Perforce, Bazaar, and so on) think of the information they store as a set of files and the changes made to each file over time (this is commonly described as delta-based version control).</div><div style="text-align: justify;"><b>Nearly Every Operation Is Local - </b>Most operations in Git need only local files and resources to operate — generally no information is needed from another computer on your network. If you’re used to a CVCS where most operations have that network latency overhead, this aspect of Git will make you think that the gods of speed have blessed Git with unworldly powers. Because you have the entire history of the project right there on your local disk, most operations seem almost instantaneous. </div><div style="text-align: justify;">DVCS clients not only check out the latest snapshot of the directory but they also fully mirror the repository. If the server goes down, then the repository from any client can be copied back to the server to restore it. Every checkout is a full backup of the repository. Git does not rely on the central server and that is why you can perform many operations when you are offline. You can commit changes, create branches, view logs, and perform other operations when you are offline. You require network connection only to publish your changes and take the latest changes.</div><div style="text-align: justify;"><b>DVCS Terminologies</b><br />
<b>Local Repository</b><br />
Every VCS tool provides a private workplace as a working copy. Developers make changes in their private workplace and after commit, these changes become a part of the repository. Git takes it one step further by providing them a private copy of the whole repository. Users can perform many operations with this repository such as add file, remove file, rename file, move file, commit changes, and many more.<br />
<b>Working Directory and Staging Area or Index</b><br />
The working directory is the place where files are checked out. In other CVCS, developers generally make modifications and commit their changes directly to the repository. But Git uses a different strategy. Git doesn’t track each and every modified file. Whenever you do commit an operation, Git looks for the files present in the staging area. Only those files present in the staging area are considered for commit and not all the modified files.</div></div>Sohan Fegadehttp://www.blogger.com/profile/12158621776282905507noreply@blogger.com0