Wednesday, January 23, 2019

Introduction to Android development!

Android is a popular computing platform based on the Linux® operating system. The initial commercial version of Android hit the market in 2008 in the form of a mobile phone platform, back when the most popular cell phone for a business user was the BlackBerry, when the iPhone was beginning to make meaningful waves across all sectors, and when the majority of phone users were still tapping out texts from a flip phone.
Android has “paid its dues,” so to speak, in the smartphone market for the past decade. The success of Android and iPhone devices has rendered the one-time business mobile device market leader BlackBerry to be the subject of a Bruce Springsteen song: Glory Days. Interestingly, Android’s unprecedented success has helped push BlackBerry into a diverse set of offerings, including shipping devices running the Android platform. (Kudos to the BlackBerry team for pivoting and adding value to their shareholders and the broader market despite experiencing the retreat of their earlier dominance.)
In 10 years’ time, Android has effectively become the world’s most popular operating system by a number of measures. Despite the robust popularity of the flashy and capable Apple iPhone platform, Android shipments worldwide meaningfully outpace Apple’s offerings. While Apple’s devices continue to demand an ever-increasing price point, Android devices scale the global marketplace. Yes, there are super-pricy Android models sitting next to the latest iPhone, but there are also relatively low-cost Android phones and tablets available for sale at Walmart and on Amazon.
As Android has matured, it is finding its way into a variety of devices, including televisions, projectors, automobiles, and even recreational vehicles. Want to dim the lights in your camper or activate the awning? You can use the Android-based touchscreen interface to manipulate the controls. Or, use your smartphone equipped with Bluetooth to communicate with the RV’s Android-based control system. There are many of these types of interfaces finding their way to the market. Some user experiences are simply fantastic (like drone controllers), and some are less than fantastic, like the controls in my uncle’s RV. This article introduces the Android platform and discusses how you can use it for both mobile and non-mobile applications. The ambition is to get you on a path to making awesome apps for whatever platform arena you feel called to make your contribution.

A brief history of Android

The Android platform was spawned from the efforts of an organization known as the Open Handset Alliance (OHA), which had at the outset the mission of collaborating to “build a better mobile phone.” Today, if you visit the Open Handset Alliance website, you might think that their efforts were in vain, as the latest news item dates to 2011. However, what was started with that group of carriers, hardware manufacturers, and software vendors has grown into the world’s most popular platform. Is Google the “man behind the curtain” of the OHA? Maybe, but no matter. In the decade since its introduction, Android is offered in the market by many large players across the globe and across numerous industries. Samsung, also a member of the OHA, is the leading manufacturer of smartphone devices worldwide, thanks to Android.
Although a single device (the G1 device manufactured by HTC and provisioned on the T-Mobile network) started it all, Android devices are now available in virtually every market on the planet — not just for mobile phones.
It is beyond the scope of this article, but ask yourself if there is not a correlation between (arguably) the world’s most successful Internet/search company also being the driving force behind the world’s most popular mobile platform. More eyeballs view Android devices every day worldwide than any other single computing platform.
If you want to write code that can run literally anywhere in the world, then you need to learn about the Android platform, so read on!

The Android platform

Looking at Android’s breadth of capabilities, it would be easy to confuse it with a desktop operating system. Android is a layered environment, one that is built upon a foundation of the Linux kernel and includes rich functionality. The user interface subsystem includes everything you would expect from a mature operating system environment including windows, views, and widgets for displaying common elements like edit boxes, lists, or drop-down lists. The browser is both capable for general web browsing and available for embedding directly into your own application.
In the past decade, the mobile web has been transformed by the adoption of smartphones across consumer and business applications, including Android. “Responsive” web technologies have made the utility of mobile devices greatly enhanced.
Figure 1 displays a simplified view of the Android software layers:
  • Applications: Built-in applications, such as phone, contacts, browser, and more. The specific applications vary by Android version and manufacturer. Commercial applications from marketplaces, such as Google Play, Amazon, and more. Side-loaded applications, including the ones you will build. You install these via USB cable.
  • Application frameworks, such as telephony manager, location manager, notification manager, content providers, windowing, resource manager, and more.
  • Libraries, such as graphics libraries, media libraries, database libraries, sensors, and so on.
  • The Android runtime is responsible for executing and managing applications as they run.
  • Linux Kernel, including power, file system, drivers, process management, and more.
    Figure 1. Android software layers
    The Android software layers
Android boasts a healthy array of connectivity options including wifi, Bluetooth, NFC, and of course cellular connections on every network that you can imagine. Location-based services power popular mapping and navigation apps. Digital cameras have essentially retreated up-market due to the quality of the cameras found in modern smartphones. Android supports multiple cameras with the ability to capture full motion video. One of my favorite classes of applications is machine vision, where applications use the camera as an input device to perform inspections for manufacturing. Voice-based services make the modern Android device a virtual personal assistant.
If you can dream it, you can program it on the Android platform!
Clearly, Android is a capable computing platform, so let’s see what kinds of applications Android can run.

Application architecture

An important aspect of the Android application environment is that Android applications have historically been written in the Java™ programming language. However, you can also write them in a relatively new programming language from Google called Kotlin. This article focuses exclusively on Java, but Kotlin is gaining momentum and you might consider taking a closer look. Between the trend toward “newer is better” in programming languages (for example, Swift is overtaking Objective-C for iOS/Apple development) and the ongoing legal battle over where Java can or cannot be used, Kotlin will likely be the leading language for Android within a few years.
For now, Java is the incumbent technology. If you’re just starting out, Java is a safe place to work for a couple of reasons. First, there is a decade’s worth of Android resources on the web focused on Java. Second, Java is a language that still has life in it for other platforms – particularly server-side web technologies. As a classic object-oriented programming language, Java skills still matter.
While it might not matter at this point, there are some interesting details around how Android applications come to life from their underlying source code. Again, in this article, our focus is on Java programming.
Java source code is compiled and formatted into bytecode, which represents the logic of an application but not the specific instructions for a particular hardware device. Similar to traditional Java environments, early versions of Android operated by converting these so-called bytecodes to hardware-specific executable code. This conversion magic is accomplished by using a Just-In-Time (JIT) compiler and takes place each and every time the application is executed. Once the JIT compiler has converted the code, it is executed in a virtual machine known as the Dalvik VM.
Beginning with Android version 4.4 (KitKat), the Dalvik VM has been replaced. The JIT compiler converts bytecodes to executable code directly on the device at runtime each time the application runs; the new approach is called Ahead-of-Time (AOT) compilation. With AOT compilation, the byte code is converted only once when the application is installed. This slows down the one-time activity of installing the application but gains the benefit of faster execution at run time when it really matters.
With AOT, we enjoy faster runtime experience with lower RAM requirements at the expense of more storage requirements. Considering the incessant decline in the cost of storage, this is an agreeable direction to move in for our mobile applications. Figure 2 contrasts the old and the new execution environments.
Figure 2. Dalvik VM versus Android runtime
Dalvik VM

Fundamentals of Android development

Regardless of the moving pieces of how applications get converted from source code to running code, from a programming perspective, there are some fundamentals to understand when starting out with Android development.
An Android application consists of one or more of the following four classifications:
  • Activities: An application that has a visible user interface is implemented via an activity. When you select an application from the Home screen or application launcher, an activity is started.
  • Services: You can use a service for any application that needs to persist for a long time, such as a network monitor or update-checking application.
  • Content providers: The easiest way to think about content providers is to view them as a database server. A content provider’s job is to manage access to persisted data, such as the contacts on a phone. If your application is very simple, you might not necessarily create a content provider, however if you are building a larger application or one which makes data available to multiple activities and/or applications, a content provider is the proscribed means of accessing your data.
  • Broadcast receivers: You can launch an Android application to process a specific element of data or respond to an event, such as receiving a text message.
An Android application is deployed to a device along with a file named AndroidManifest.xml. This file is required for every Android application and is essentially the cheat sheet that tells the operating system exactly how to interact with your application. The AndroidManifest.xml includes both the required class names and types of events that the application is able to process as well as the required permissions that the application needs to run. For example, if an application requires access to the network to download a file, this permission must be explicitly stated in the manifest file. Or, perhaps an application needs to access the camera. The user needs to approve that also. This approach of declaratively telling the user what the application is going to use is essential in this day of increasing privacy and security concerns. While you can quickly just accept software licenses, it is important that you pay close attention to what an app is requesting to access.
Enough background…let’s have a look at the development environment required to build an Android application.

Exploring Android Studio

The easiest way to get started with developing Android applications is to download the Android Studio application suite. You can download a copy of Android Studio for your preferred platform (Windows®, Mac OS X, or Linux) from the Android developers site. Android Studio includes tools for managing multiple platform-specific features with the sdkmanager and the ability to test your application on either a real device or the emulator.
There are older generations of development tools, including Android Developer Tools (ADT), which is the predecessor to Android Studio, and Eclipse with an Android Developer Tools plug-in, which was the predecessor to ADT. In essence, Android Studio is the third generation of the Android Integrated Developer Environment (IDE). There are also command-line tools and various continuous integration toolchains that permit the building of Android applications.
This article assumes that you are using Android Studio. Coding in Java within Android Studio is intuitive because it provides a rich Java environment, including context-sensitive help and code suggestion hints. After you compile your Java code cleanly, the components of Android Studio make sure all of the application is packaged properly, including the AndroidManifest.xml file.
Let’s take a quick look at the contents of the SDK.
The sdkmanager, which ships as an integrated experience of Android Studio, manages the download of the numerous elements of the Android SDK. Figure 3 shows a subset of the SDK installed on a Mac.
Figure 3. Android SDK
The Android Emulator
Note that a common experience with Android development is that you might wind up with multiple versions of the SDK installed because you will likely target multiple versions of Android devices with your application. The sdkmanager assists you in making a choice regarding which SDKs to select. The Android tools that are available are a bit overwhelming if you dig deep enough. However, as a beginner, don’t worry about all the details until you find that you need a specific version. After a couple of dives into the process, it will become familiar to you.
You can run Android applications on a real device or on the Android Emulator, which ships along with the Android SDK. Figure 4 shows the Android Emulator’s home screen.
Figure 4. Android Emulator
Using the adb shell command
Next, let’s take a little closer look at the adb utility, which is the Android Debug Bridge. adb supports many optional command line arguments that provide powerful features, such as copying files to and from the device. With the shell command-line argument, you can connect to the phone itself and issue rudimentary shell commands. Figure 5 demonstrates the use of the adb shell command against a real device connected to a Windows laptop via a USB cable.

What is Ethical Hacking?

Ethical Hacking sometimes called as Penetration Testing is an act of intruding/penetrating into system or networks to find out threats, vulnerabilities in those systems which a malicious attacker may find and exploit causing loss of data, financial loss or other major damages.  The purpose of ethical hacking is to improve the security of the network or systems by fixing the vulnerabilities found during testing. Ethical hackers may use the same methods and tools used by the malicious hackers but with the permission of the authorized person for the purpose of improving the security and defending the systems from attacks by malicious users.
Ethical hackers are expected to report all the vulnerabilities and weakness found during the process to the management.

Why Study Spoken English??

Learn English Speaking Course - How To Speak English Fluently
This course will help students transform their intermediate English into advanced!
A complete step by step video guide to transforming their intermediate listening and English speaking from intermediate to advanced !
This course will help you become an advanced speaker of English - you will learn how to speak English fluently!
When English speakers speak quickly, they break the grammar rules !!!
In this course you will learn step by step how to use and understand these little contractions when you learn English.
FULL SUBTITLES AND CAPTIONS for complete course and PDF downloads for home study!
You will learn all the secrets to be able to speak English fluently and understand like a native speaker!
The course is very student focused and makes it easy to learn English. The videos all have practice exercises for you to train your English pronunciation and listening.
What will you learn with this course?
  • your English listening skills will improve dramatically
  • you will practice English speaking in structured exercises
  • you will feel more confident to speak English and communicate 
  • You will learn English intermediate grammar, including advanced conditionals
Who is the course for?
  • Students who are intermediate students but want to take the next step with English speaking
  • Students who are preparing to visit or study in an English speaking country
  • Students who are already living and working in an international environment and want to communicate in English fluently
Instructor
Expert English teacher Terry Mc Gonigle has been teaching students from all over the world for 10 years in Language schools and online.
He has helped people from all over the world achieve success with their English, helping people get better jobs with their English or adapt to living in a new country.
Today he creates video materials for his online students who want to improve their English fluency.
This Course Also Comes With:
✔ Lifetime Access to All Future Updates and new videos added to the course
✔ Fast & Friendly Support in the Q&A section
✔ A 30 Day "No Questions Asked" Money Back Guarantee!
COURSE REQUIREMENTS
You will need to have intermediate English as the course is in 100% English.
complete captions and subtitles available for every video
The course will give you a complete review of the intermediate grammar as well as teaching you the secrets of spoken English.
#speakenglishfluently #englishspeakingcourse #learnenglish
Who this course is for:
  • Students who already have intermediate English who want to learn to understand and speak more like native speakers of English
  • Anyone wanting to learn English speaking for work or study
  • Anyone who wants to learn how to speak English fluently

Basi Computer Information!

A computer is an electronic machine that processes information—in other words, an information processor: it takes in raw information (or data) at one end, stores it until it's ready to work on it, chews and crunches it for a bit, then spits out the results at the other end. All these processes have a name. Taking in information is called input, storing information is better known as memory (or storage), chewing information is also known as processing, and spitting out results is called output.
Imagine if a computer were a person. Suppose you have a friend who's really good at math. She is so good that everyone she knows posts their math problems to her.  Each morning, she goes to her letterbox and finds a pile of new math problems waiting for her attention. She piles them up on her desk until she gets around to looking at them. Each afternoon, she takes a letter off the top of the pile, studies the problem, works out the solution, and scribbles the answer on the back. She puts this in an envelope addressed to the person who sent her the original problem and sticks it in her out tray, ready to post. Then she moves to the next letter in the pile. You can see that your friend is working just like a computer. Her letterbox is her input; the pile on her desk is her memory; her brain is the processor that works out the solutions to the problems; and the out tray on her desk is her output.
Once you understand that computers are about input, memory, processing, and output, all the junk on your desk makes a lot more sense:
How computers work: Simple line artwork explaining the structure of a computer system, showing how a computer links input, output, storage/memory, and processing
Artwork: A computer works by combining input, storage, processing, and output. All the main parts of a computer system are involved in one of these four processes.
  • Input: Your keyboard and mouse, for example, are just input units—ways of getting information into your computer that it can process. If you use a microphone and voice recognition software, that's another form of input.
  • Memory/storage: Your computer probably stores all your documents and files on a hard drive: a huge magnetic memory. But smaller, computer-based devices like digital cameras and cellphones use other kinds of storage such as flash memory cards.
  • Processing: Your computer's processor (sometimes known as the central processing unit) is a microchip buried deep inside. It works amazingly hard and gets incredibly hot in the process. That's why your computer has a little fan blowing away—to stop its brain from overheating!
  • Output: Your computer probably has an LCD screen capable of displaying high-resolution (very detailed) graphics, and probably also stereo loudspeakers. You may have an inkjet printer on your desk too to make a more permanent form of output.

What is Web Design?

Web design refers to the design of websites that are displayed on the internet. It usually refers to the user experience aspects of website development rather than software development. Web design used to be focused on designing websites for desktop browsers; however, since the mid-2010s, design for mobile and tablet browsers has become ever-increasingly important.
A web designer works on the appearance, layout, and, in some cases, content of a website. Appearance, for instance, relates to the colors, font, and images used. Layout refers to how information is structured and categorized. A good web design is easy to use, aesthetically pleasing, and suits the user group and brand of the website. Many webpages are designed with a focus on simplicity, so that no extraneous information and functionality that might distract or confuse users appears. As the keystone of a web designer’s output is a site that wins and fosters the trust of the target audience, removing as many potential points of user frustration as possible is a critical consideration.
Two of the most common methods for designing websites that work well both on desktop and mobile are responsive and adaptive design. In responsive design, content moves dynamically depending on screen size; in adaptive design, the website content is fixed in layout sizes that match common screen sizes. Preserving a layout that is as consistent as possible between devices is crucial to maintaining user trust and engagement. As responsive design can present difficulties in this regard, designers must be careful in relinquishing control of how their work will appear. If they are responsible for the content as well, while they may need to broaden their skillset, they will enjoy having the advantage of full control of the finished product.

What is Graphic Design?

Graphic design, also known as communication design, is the art and practice of planning and projecting ideas and experiences with visual and textual content. The form it takes can be physical or virtual and can include images, words, or graphics. The experience can take place in an instant or over a long period of time. The work can happen at any scale, from the design of a single postage stamp to a national postal signage system. It can be intended for a small number of people, such as a one-off or limited-edition book or exhibition design, or can be seen by millions, as with the interlinked digital and physical content of an international news organization. It can also be for any purpose, whether commercial, educational, cultural, or political.
Design that’s to be experienced in an instant is the easiest to recognize. Designers arrange type, form, and image on posters, advertisements, packages, and other printed matter, as well as information visualizations and graphics for newspapers and magazines.
This kind of design is often confused with illustration, but while an illustrator creates or draws an image in response to an idea, a designer combines illustrations, photographs, and type in order to communicate an idea. One way to understand this is to consider the difference between a furniture maker and an interior designer. One makes a specific object for a specific purpose, while the other thinks about how all of the objects and surfaces of a room create an environment for the person moving through it. Good illustrators are often capable designers and vice versa, making it harder to distinguish between the two practices.
Motion graphics are equally predetermined and crafted but are meant to be experienced over a fixed time span, like the opening credits of a movie or an online video that explains part of a newspaper article. They usually go beyond the visual, curating and cueing sound to moving vector graphics, photographs, and video. The difference between motion graphics and videography or animation is the same as the difference between two-dimensional graphics and illustration. Motion graphics combine animation, videography, and typography for a communicative purpose, and this combination over time and the space of the screen constitutes the design.
Whether physical or digital, books and magazines are meant to be enjoyed over time, during which the reader has control over the pace and sequence of the experience. In books, the content usually comes before the design, while in magazines, the design is a structure that anticipates written and visual content that hasn’t yet been created. Some commercial websites or exhibition catalogues also fit in this category, as do digital or physical museum displays that show information that doesn’t change. All have content in a suggested order that has been thought about ahead of time, but the user or reader finds his or her own path through the material.
Many designers also produce systems that are meant to be experienced over time but aren’t confined to the making of objects. Wayfinding, a form of environmental graphics, refers to branding and signage applied throughout and on buildings or outdoor areas like parks or highways. While each sign or symbol in wayfinding is a work of design, together they form a larger system that helps people navigate while maintaining a sense of the character of where they are. The design of the system—the relationships among all of those parts—is where the designer brings greatest value.
The larger category of environmental graphics includes any design that connects a person to a place, extending to and overlapping with dynamic displays, didactic type and imagery, and creative placemaking. A wall of terminals that show arriving and departing flights, a digital display on the facade of a building that shows stock prices, an inspirational quote in a building lobby, and a placard explaining a historical place or landmark are all examples of environmental graphics.
Similar to wayfinding, branding pulls together all of the artifacts of a commercial or institutional brand, like a business card, a sign, a logo, or an advertisement, into a visual system. How those are experienced over time is the design work. No part is created without considering the other parts or without thinking about how the target customer will first encounter the brand and then develop a relationship with that brand over time. In the twentieth century, a consumer often had just a few touchpoints for a brand. For example, if you were to fly somewhere, you would see expressions of the airline on your ticket, at the gate, on the plane, on the uniforms of the flight attendants, and on various printed items on the plane, like the blankets, napkins, or in-flight magazines. Perhaps you would have seen a print or television ad. Today, your experience still includes all of these items, but now it begins well before you arrive at the airport, when you buy your ticket on the airline’s website and receive an email confirmation, and carries through to a safety video and interactive options on board. Once you’ve arrived at your destination, you may also receive follow-ups by email asking about your experience on the trip or inviting you to further interact with the brand. This expansion of touchpoints overlaps with almost every medium and considers a much longer span of engagement with the customer.*
Designers are also responsible for interactive designs where the content changes as it gets updated, as well as screen interfaces that help people navigate through a lot of information. Interaction design differentiates itself from other kinds of design by adding another consideration: responding to the actions of the viewer or user. Editorial design for web and mobile is the most tangible example, including websites and mobile apps for publication. Some digital design involves the presentation of rapidly changing streaming information, also known as data visualization, creating both interactive and non-interactive interfaces. Product design refers to the design of digital products, which are digital services, tools, or platforms that can be brought to market. The term is confusing because for several decades “product design” has referred only to industrially produced physical items like radios, benches, and bicycles and has been used interchangeably with “industrial design.” Related to software design, product design requires knowledge both about how computers process, sort, and display information as well as how humans interface with computers. Many companies and the designers who work for them aim for their products to be used by large numbers of people around the world, so they often rely on widely accepted design patterns and metaphors and prioritize usability and functionality over aesthetic expression. For large or complex projects, different designers may work on the user interface (UI), which refers to the affect and layout of what the user sees in the moment, and the user experience (UX), or the total experience of users over time as they move through websites or mobile apps.
Depending on the scale of the context in which a designer works, the work may include one, some, or all of these things in the course of a year. Larger companies, agencies, teams, or studios may employ a number of specialists, while smaller studios and groups may need to have each individual capable, if not an expert, in multiple areas. Higher-level creative direction or managerial positions usually require expertise in at least two additional areas beyond basic competence in design: domain expertise (knowing what is happening in a particular business sector) and further knowledge and experience in team management or client relations. While having a job in design requires knowledge in only one area, having a career in design requires expertise in more than one medium and more than one area of the design process.

Tuesday, January 22, 2019