|IndyWatch Education Feed Archiver|
IndyWatch Education Feed was generated at Community Resources IndyWatch.
4 Testing Methods Which Are Mandatory For Any Software
Software testing is the art of investigating a software in a systematic fashion so as to find deep-rooted defects in it. In addition to that, software testing also checks the quality and correctness of the software. After the errors are identified, it becomes easier to develop a bug-free and user-friendly software.
Now, as you know, even a small defect can cause the entire software to crash. If a software crashes, it can cause a great deal of damage. Proper testing methods can prevent this.
The testing process can identify any defect, bug or error. It is best to introduce software testing right from the initial phase of the software development cycle. All the successful software development companies adhere to this. They consider testing to be an important part of the development cycle. Also, automated testing is gaining popularity over manual testing. Automated testing is quicker and more accurate as compared to manual testing.
But, before we move any further, there are three software test cases which you should know about:
Now, that you have a clear understanding of these terms, lets move on to the various types of software testing.
Well, there are many types of testing which software companies use. Each testing type has its own features, advantages, and d...
Previously, on How to get started with Tesseract, I gave you a practical quick-start tutorial on Tesseract using Python. It is a pretty simple overview, but it should help you get started with Tesseract and clear some hurdles that I faced when I was in your shoes. Now, Im keen on showing you a few more tricks and stuff you can do with Tesseract and OpenCV to improve your overall accuracy.
In the previous story, I didnt bother going into details for the most part. But if you liked the first story, here comes the sequel! So where did we leave off?
Ah, we had a brief overview of rescaling, noise removal, and binarization. Now, its time to get down to details and show you a few settings you can play with.
The images that are rescaled are either shrunk or enlarged. If youre interested in shrinking your image, INTER_AREA is the way to go for you. (Btw, the parameters fx and fy denote the scaling factor in the function below.)
img = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
On the other hand, as in most cases, you may need to scale your image to a larger size to recognize small characters. In this case, INTER_CUBIC generally performs better than other alternatives, though its also slower than others.
img = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)
If youd like to trade off some of your image quality for faster performance, you may want to try INTER_LINEAR for enlarging images.
img = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)
Its worth mentioning that there are a few blur filters available in the OpenCV library. Image blurring is usually achieved by convolving the image with a low-pass filter kernel. While filters are usually used to blur the image or to reduce noise, there are a few differences between them.
After convolving an image with a normalized box filter, this simply takes the average of all the pixels under the kernel area and replaces the central element. Its pretty self-explanatory, I guess.
img = cv.blur(img,(5,5))
This works in a similar fashion to Averaging, but it uses Gaussian kernel, instead of a normalized box filter, for convolution. Here, the dimensions of the kernel and standard deviations in both directions can be determined independently. Gaussian blurring is very useful for re...
Its far from a secret that Tesseract is not an all-in-one OCR tool that recognizes all sort of texts and drawings. In fact, this couldnt be further from the truth. If this was a secret, Ive already spoiled it and its already too late to go back anyway. So, why not dive deep into Tesseract and share few tips and tricks that could improve your results?
Really, though. I do appreciate all those developers who contribute to open-source projects without expecting any benefits in return. After all, they provide us with capabilities that are relatively difficult for individuals to achieve, such as creating Deep Neural Networks via TensorFlow without much of the hassle. Who would have thought that Machine Learning would be as accessible as it is today?
Tesseract, too, helps us accomplish simple OCR tasks with a significant success rate, and is completely open-source. In this post, Ill try to get you going with Tesseract and hopefully help you clear some of the hurdles that you might face while working with it.
Even though there are a quite few options in the field, for example OCRopus, Tesseract still seems to be the first choice for most free riders. Well, that all adds up if you consider Tesseract is still being developed by the Google community and has constantly grown over time. However, if youve had experience with Tesseract before, you might have noticed that Tesseract is likely to disappoint you when it comes to image pre-processing or custom font training.
Leaving custom font trainings for a later discussion, for now, Ill be mainly focusing on going over the basics to get you started with Tesseract. First, lets quickly go over the installation.
Ill be using HomeBrew, a package manager, to install Tesseract libraries. After installing HomeBrew, you should prompt the following command.
$ brew install tesseract
Or, you could also do the same thing with MacPorts if you wish.
$ sudo port install tesseract
On Ubuntu, its quite simple as well.
$ sudo apt-get install tesseract-ocr
For Windows, you can download the unofficial installer from the official GitHub Repository. What a sentence, eh?
To verify if Tesseract is successfully installed, you can hit your terminal and type the following.
$ tesseract -v
If you receive a few lines of prompt similar to the one below, your Tesseract is installed correctly. Otherwise, you might want to check what has...
The second question asked by the NYA on behalf of the All Party Parliamentary Group.
What are the key issues and challenges faced by young people being addressed by current youth service provisions?
Have we got a vision of the future that is optimistic and democratic? This fundamental question facing society at large is one most keenly felt by young people, for whom life is increasingly precarious. After four decades of the neoliberal emphasis on the self-sufficient individual and the rule of the market young people are to be found in the mire of its contradictions, not least the the consequences of the policy of austerity upon families and communities. The impact of cuts in Public Services have been particularly disproportionate on what we once knew as the Youth Service, The figures of these cuts are now well known, so we dont need to repeat them here, suffice to say there is a dearth of places for the free association of young people, of spaces to explore and create for themselves collectively visions of their future, to struggle with the issues they experience whether this be lack of meaningful employment, concerns about climate change, dilemmas in their personal and home life, sexual choices, opportunities for arts, music or sport or needing somewhere to live. In short there is a lack of provision, wherein young people explore self-critically the purpose and direction of their lives
Currently, we are all aware of the increase in concern over the mental health of young people their anxiety,, their loneliness, their failure to be happy or well....
Sometimes, we want our users to log in using their existing credentials from third-party applications such as Facebook, Twitter, Google and so on. In this article, we are going to look into authentication of an ASP.NET Core app using Twitter.
Open Visual Studio and select File >> New >> Project. After selecting the project, a New Project dialog will open. Select .NET Core inside Visual C# menu from the left panel. Then, select ASP.NET Core Web Application from available project types. Put the name of the project as DemoTwitterAuth and press OK.
After clicking on OK, a new dialog will open asking to select the project template. You can observe two drop-down menus at the top left of the template window. Select .NET Core and ASP.NET Core 2.0 from these dropdowns. Then, select the Web application(Model-View-Controller) template. Click on the Change Authentication button, and a Change Authentication dialog box will open. Select Individual User Account and click OK. Now, click OK again to create your web app.
Before running the application, we need to apply migrations to our app. Navigate to Tools >> NuGet Package Manager >> Package Manager Console.
It will open the Package Manager Console. Put in the Update-Database command and hit enter. This will update the database using Entity Framework Code First Migrations.
Press F5 to run the application. You can see a home page as shown below.
Note the URL from the browser address bar. In this case, the URL is http://localhost:51763/. We need this URL to configure our Twitter App, which we will be doing in the next section.
Sometimes, we want our users to log in using their existing credentials from third-party applications, such as Facebook, Twitter, Google, and so on. In this article, we are going to look into authentication of an ASP.NET Core app using a Google account.
Open Visual Studio and select File >> New >> Project. After selecting the project, a New Project dialog will open. Select .NET Core inside the Visual C# menu from the left panel. Then, select ASP.NET Core Web Application from the available project types. Put the name of the project as GoogleAuth and press OK. Refer to this image.
After clicking OK, a new dialog will open asking you to select the project template. You can observe two drop-down menus at the top left of the template window. Select .NET Core and ASP.NET Core 2.0 from these dropdowns. Then, select the Web application(Model-View-Controller) template. Click on the Change Authentication button, and a Change Authentication dialog box will open. Select Individual User Account and click OK. Now, click OK again to create our web app.
Before running the application, we need to apply migrations to our app.
Navigate to Tools >> Nuget Package Manager >> Package Manager Console.
It will open the Package Manager Console. Put in the Update-Database command and hit enter. This will update the database using Entity Framework Code First Migrations.
Press F5 to run the application. You will see a homepage, as shown below.
Note the URL from the browsers address bar. In this case, the URL is http://localhost:51792/. We need this URL to configure our Google app, which we will be doing in the next section.
While working on a project, I ran into an issue in my code. I was attempting to define multiple HTML elements into a collection and then change those elements based on some preset conditions. I struggled for roughly four hours of coding time (across two days) debugging my code and trying to figure out why I wasnt getting my desired outcome.
In this article, I assume a few things to be true:
In the event I have assumed too much, I have provided links to relevant material within the article that I hope will be helpful.
You can dig a hole with your hands, but its much easier and more efficient to do it with a shovel.
To that end, I hope to hand you a shovel after youve read this article.A long-exposure shot of a group of people on a beach with children digging a deep hole by Khrt Williams on Unsplash
Ive had the question, Which element selector should I use? several times. Until now, I havent had much desire or need to learn the difference as long as my code produced the desired result. After all, what does the color of the taxi matter as long as it gets you to your destination safely and in a timely mannerright?
Lets start with some of the ways to select...
Last month my brother reinvigorated my love for Conways Game of Life with some ridiculous videos on YouTube. I loved itId heard of the Game of Life while I was at university, but had never really looked at it in depth. I started doing a little research and, as I learned more about the famous cellular automata, I decided to build my own version.
Optimizing code can be tricky. Identifying performance issues in a complex system can be hard to do. Deciding how to fix them can be a challenge, too. In this article I want to share my journey through optimizing my code, some tactics I used, and tricks I learned to help you optimize your own webapps.
The first rule of performance optimization is: test your assumptions. If you built the system, you probably have some good ideas of where to start looking for problems . But, before you start changing code, you should prove yourself right (or wrong). Nothing is quite as unsatisfying as making painful and complex changes to your code only to discover it runs at exactly the same speed as before.
The best place to start is with a measurement of some kind. Decide what optimized is, then measure the optimizedness of your app. I wanted to improve frame rate, so I decided to aim for a 20ms clock cycle on my laptop for a pretty high resolution grid. Once I decided on my metric, I had to measure my apps current (slow) performance.Pretty high resolution.
The path of the self-taught developer is tough and clouded with uncertainty. There is no straight line from newbie to career programmer. Because of this, I believe all self-taught developers have a unique story to tell.
In this article, Ive shared a few stories and lessons learned from my time teaching myself programming. Hopefully reading about my experiences will help you reflect on your past and motivate you moving forward.
When I first started learning to program, I never had the intention of making a career out of it. I just wanted to make a specific app.
My journey started when I was a senior in college. I just finished Richard Bransons book Losing my Virginity, and I was probably reading too much TechCrunch. I was pumped up full of entrepreneurial energy. I was constantly reading about how college kids were receiving massive amounts of investment for their mobile app ideas. I thought I could be one of those people.
One day, while walking in-between classes, an app idea hit me. The specifics of the app arent important. The point is, the idea was unique and had a lot of growth potential (at least in my mind).
I was convinced that Id found the next big thing. I was consumed by the idea and stopped paying attention to lectures. My excitement for the idea quickly grew to the point where I felt the need to take action.
There was one big problem. My idea was a mobile app and I didnt know anyone who could build mobile apps.
So I thought what the hell. How hard could programming be? I was losing interest in my major and I was spending a lot of time playing Xbox. I could allocate some of my free time towards building this mobile app.
Sometimes being naive helps you take action when you normally wouldnt.
What we had was a college student with no programming, business, or design experience trying to learn Android so he could build a complex app. I guess thats what you get when you mix a big idea with the Silicon Valley hype machine.
I wish I could tell you things went well from here.
I bought a few books on Android development and spent many hours in my room trying to duct-tape this app together. I didnt care how the app worked. I just wanted a finished product, if that meant copying and pasting code from any source I could find.
I thought I could get away with learning very little about programming. I became too focused on the end result. The light at the end of the tunnel kept driving me forward.
Time went on and the app turned into a Frankenstein of copy and pasted code. The app didnt have many features and it barely ran without crashing.
It wasnt until I accidentally got into a Computer Science class that I realized that maybe I should focus more on learning. My inability to program lead me to abandon my initial app i...
A question I get a lot from my CS students at The Forge is why I often use sets instead of plain old arrays in interview problems.
To answer that question, we have to understand the fundamental differences between a set and an array.
If you are a visual learner and prefer a video explanation, heres a 3 minute video that explains the answer (albeit in less depth).
Arrays were one of the first data structures I learned how to use.
Not only are they a fundamental data structure used in almost every coding application, but theyre fairly easy to understand as well.
It wasnt until way later in my software career that I got introduced to the arrays strange, but magical, cousin:
Sets are like arrays except theyre not.
Lets take a more in-depth look.
The elements in a set are stored quite differently than that of an array.
The way a set stores its elements is by Hashing.
The array would simply find the next available index, unless otherwise specified, and place the element in that index.Our A gets an index of 0 since its the first element.
With hashing, however, things look a bit different.
Hashing is the act of taking in input (x), distorting it with a specific hash function (h), and getting a final output (y).
Basically h(x) = (y)
Looks a bit confusing right?
Dont worry! This should clear things up.
An easy example of a hashing function (h) could be appending asdf to the end of your input (x).
If (x) is A and appending asdf is (h), the output (y) would simply be as follows:
A + asdf Aasdf
So Aasdf would be our (y).
A set uses hashing to decide where to store your input (x).
In a nutshell, a set takes your input...
Im writing a letter to my friend. You should read it. He studies Computer Science, and he hates it. I build React Apps and I love it. I want him to love it too. First, let me set the tone with a little imagery.
I am writing to you in the dark, cluttered room of my fathers mancave. Its hardly that. The only thing in here that would make it a mancave is his assorted pipe tobacco and hand-carved pipes. As I sit at my computer, I can hear crickets chirping in the night, and since it rained yesterday, the croaking of frogs is more of a roar than anything else. I am glad to grow up in an environment such as this.
Today has been one of those days. You know, the kind where your thoughts scream out at you from deep inside your mind. Those thoughts have been about a friend of mine. He studies computer science at a university hotter than hell itself, and where every Walmart greeter knows the name of the Rodriguez Seven (its an inside joke. Maybe youll be a part of one some day (and thats a quote from The Office)).
Hes exhausted and limping to the finish line. Computer Science has held him hostage with the allure of a wealthy future. We all see the appeal. Who wouldnt want to ship code for Amazon, or build React 17? In most of my dreams, Im working with Will Smith as Agent L, writing React components powerful enough to reduce a lumbering cockroach-man to powder. We all have these dreams. But in the day to day, it is so easy to become bogged down with drudgery and learning.
I write this letter to my friend, and he knows who he is. I love him dearly and I hope that he continues on the incredible path of computer science before him. I invite the world to see what it takes to love (and excel in) Programming. Do take these words to heart.
No one will ever arrive at their desired location without knowing what that location is. Programming is no different. Every keyboard cowboy from Reddit to Facebook say, You must learn X before you can understand Y.
Whether on Twitter, or Stack Overflow, theres more than enough controversy over what to learn. The university is accommodating to learning, yes. But the community is screaming at u...
Can you imagine a platform where you could access the advice and wisdom of developers from all around the world? That is exactly what Stack Overflow is for programming and why its a vital tool for you as a developer.
Stack Overflow is what I consider a collective encyclopedia in the form of online forums with knowledge and experiences shared by developers across the world. Developers help other developers solve problems that they face during their software development projects.
This platform is so powerful that I felt it was vital to introduce it to those exactly like you, who are embarking on this amazing journey to learn computer science and programming.
Collaboration makes great ideas change the world. Stack Overflow has transformed the way developers across the globe solve problems, and find the information they need for their projects.
If you try to Google an error thrown by your code or simply a question related to coding, Im 99.99% sure that you will find a very similar (if not the same) question already asked and answered on Stack Overflow by developers who are probably thousands of miles away from you.
Really impressive, right? Lets dive deeper into why this platform is so powerful!
Your true potential as a developer unleashes when you are able to find the right information at the right moment for your current project. Only then are you completely free to apply your new knowledge to new domains with enough confidence to create something really amazing.
This is where the true power of Stack Overflow lies: it allows you to be as creative as possible while learning and experimenting, without the risk of running into a dead end when there are no answers to your questions.
By adapting existing answers that you find on Stack Overflow to your own projects, you will develop a skill that is incredibly valuable. You will learn how to face new challenges by creatively applying existing resources to new circumstances.
The only source of knowledge is experience.Albert Einstein
Kubernetes is one of the most exciting technologies in the world of DevOps these days. It has attracted a lot of attention over the last few years. The reason for its instantaneous fame is the mighty containers.
Docker Inc. brought containers to the lime light with their impeccable marketing of an amazing product. Docker laid the foundation for the wide-spread use of containers, although container technology outdates it. Yet because of Docker, the use of Linux containers has become more prevalent, cementing the foundation for container orchestration engines.
Enter Kubernetesdeveloped by Google using years of experience running a world class infrastructure on billions of containers. Kubernetes was an instant hit, and starting this year, Docker Inc. has packaged Kubernetes as an additional orchestration engine alongside Docker Swarm.
From now on, Kubernetes will be a part of the Docker community and Docker Enterprise Edition. Sounds pretty cool, huh? The best of both worlds packaged together as a single binary.
Kubernetes, k8s, or kube, is an open source platform that automates container operations. It eliminates most of the existing manual processes, which involve the deploying, scaling, and managing of containerized applications. Phew! thats a lot of work.
With Kubernetes, you can cluster groups of hosts running containers together. Kubernetes helps you manage those clusters. These clusters can span the public, private, and hybrid cloudsand who knows, the Star War universe one day.
Kubernetes was developed and designed by the engineering team at Google. Google has long been a contributor to container technology. Alongside being vocal about its use of container technology, Kubernetes is the technology behind Googles cloud service offerings.
Google deploys more than 2 billion containers a week. All powered by an internal platform called Borg (sounds more like some Orc warlord from Mordor, but no). Borg was the predecessor to Kubernetes. The lessons learned by Google working with Borg over the years became the guiding force behind Kubernetes.
Kubernetes makes everything associated with deploying and managing containerised applications a joy. Kubernetes automates rollouts, rollbacks, and monitors the health of deployed services. This prevents bad rollouts before things actually go bad.
Additionally, Kubernetes can scale services up or down b...
Were excited to share a round-up of the newest courses and Specializations in the Coursera catalog so you can learn from the worlds top universities and leading companies anytime, anywhere. Whether you want to become a sales expert or learn how to be happier by taking the most popular course ever offered at Yale University, weve got you covered. Start your summer off right with a new course or Specialization:
1. The Art of Sales: Mastering the Selling Process Northwestern University
Selling is a critical skill that will accelerate your success at work and is useful for someone in any field. Craig Wortmann, Specialization instructor and clinical professor at the Kellogg School of Management at Northwestern University will teach you the tools needed to become a high performing seller.
I know some people shy away from the word selling and thats okay, call it whatever youd like. Youre still trying to influence an outcome whether its selling a product, or doing well in a job interview, honing these skills will benefit anyone and everyone. Craig Wortmann
2. Crisis at the Border Teach-Out University of Michigan
The American media has extensively covered the controversy surrounding the Trump Administrations implementation of a zero tolerance immigration policy. The policy has resulted in the detention of migrant families seeking asylum in the United States and has separated children from their families.
This Teach-Out will help you focus on key dimensions central to this issue, providing context on the policy, legal, and health implications of the family separation and detainment policies and what the new Executive Order may mean for the future.
3. The Science of Well-Being Yale University
Ive already talked about how I personally got a software engineer job at Google in a few videos on my programming-education YouTube channel called CS Dojo.
However, a lot of people still ask me about how to get a job at Google as a software engineer. So, heres my article explaining the strategy I would use.
You can use the same strategy to get a software engineering job not just at Google, but also at other top tech companies like Amazon, Microsoft, and Facebook.
In this article, Im going to show you the 6 step process for landing a job at one of these companies. Along the way, Im also going to discuss:
Okay, lets get started!
This is the absolute minimum qualification you need to become a software engineer.
For this, Id recommend you get started with an interactive website such as Codecademy and freeCodeCamp. You can learn most of the programming fundamentals from these sites. I also heard that SoloLearn is good, too.
After that, I would use video tutorials to learn more advanced topics. I recommend websites like YouTube, Pluralsight, Lynda.com and Udemy for this. On these websites, you should be able to find tutorials on topics like:
depending on your interest.
After youve followed a few programming tutorials, you should build a few personal projects to practice using what youve learned.
For this, you should find something youre interested in building.
For example, if you like photography, maybe you can build a portfolio site for all your photos. If you like trading stocks, maybe you can build a system that analyzes stock charts for you. Or, if you enjoy problem-solving, you can try com...
In the first article, I introduced dotfiles. In this one, well cover their development and management.Photo by Jens Jakob on Unsplash
Note: This is the second article in the series and discusses more advanced aspects of dotfile management. To learn about what dotfiles are and the very fundamentals of dotfile management, read the first article.
In the last article, we added a few aliases and functions to the .bash_profile and the .bashrc file. We also learned that those arent the only dotfiles available for us to customize.
This article focuses on making our approach to dotfile management more sophisticated and scalable. At this point, there is one important thing you need to bear in mind from this point onwards. Dotfiles are a matter of personal preference, and so is their management. You should manage them your way. This article only provides general guidelines and common ways to deal with recurring tasks in dotfile management.
Start with creating a directory for your dotfiles and cd into it. I like to have mine in the Projects folder in my home directory, but this is up to you:
$ mkdir ~/Projects/dotfiles
$ cd ~/Projects/dotfiles
This is where well have all our dotfiles. Lets start by making this a git repository.
$ git init
Lets start by moving the .bash_profile from the HOME directory to our new dotfiles directory.
$ mv ~/.bash_profile ~/Projects/dotfiles/.bash_profile
Lets commit this file.
$ git commit -am "Added .bash_profile"
And there you have it! This is exactly how youd work on any other project, and thats exactly how you should manage your dotfiles.
But if you start another terminal instance, youll notice that your setup is broken! The terminal doesnt source your .bash_profile or .bashrc from a custom folder, as these files are expected to be found in the home directory.
So we need a way to keep our dotfiles...
Dotfiles are generally preceded by a dot(.)
Note: This is a very basic, introductory article. If you already know the fundamentals of dotfile management, Id recommend you read my second article.
As developers, we strive to minimize the time we spend on redundant things, like setting up our environment, writing boilerplate code, and basically not doing anything that does not concern the fun part of coding - building new stuff.
In this context, imagine a perfect world where tiny commands carry out incredibly complex tasks tailored to your needs, where you could buy a new laptop today and install all the tools and packages you need and setup your development environment with nothing but a couple of terminal commands, and where everything is magic.
This digital fairyland can be made, and with ease. And there is a name for this magic: dotfiles.
Without further ado, lets unravel the secrets of the dotfiles!
Note: This article assumes that youre working with a Unix-like operating system and it relies heavily on Unix terminal commands and shell scripting. If youre not familiar with these, I recommend learning the basics and coming back here. Heres a primer to shell scripting.
In UNIX-like systems, a lot of configuration files and the like are preceded with a dot(.). These files are hidden by the OS by default, and even the ls command doesnt reveal their presence (well get to how to find these files in a bit). Since these files are preceded by a dot, theyre called dotfiles. Duh.
So how do we find these legendary files if theyre hidden by default? Pop open a terminal and do this:
Note: The $ sign is not meant to be typed in the terminal. It represents the fact that the text after it is supposed to be typed in a terminal prompt.
$ cd ~
$ ls -a
So what does this do?
The first command ( cd ~ ) moves into the home directory (the ~ symbol represents the home directory). The home directory is where most of your config files are found. So we move there first.
The second command lists the files and folders in the current directory. But theres some magic here. The -a flag instructs the command to include hidden files in the list.
Bingo! We can now see the dotfiles!
Usually, the first file that most people modify when they enter the world of dotfiles is the .bash_profile or the .bashrc. And for good reason. This file is loaded when you start your terminal, and its commands are executed at terminal startup.
The first question asked by the NYA on behalf of the All Party Parliamentary Group.
What is the role of youth work in addressing the needs and opportunities for young people?
There are many different versions of youth work and it is highly likely the Committ...
|IndyWatch Education Feed Archiver|
IndyWatch Education Feed was generated at Community Resources IndyWatch.
Resource generated at IndyWatch using aliasfeed and rawdog