Pages

Showing posts with label 0. Show all posts
Showing posts with label 0. Show all posts

Tuesday, March 10, 2015

Upcoming changes to OAuth 2 0 endpoint

Editors note: This post by Google Senior Product Manager Justin Smith has been cross-posted from the Google Code blog because we think itll be of great interest to Google Apps developers. -- Ryan Boyd

In the coming weeks we will be making three changes to the experimental OAuth 2.0 endpoint. We expect the impact to be minimal, and we’re emailing developers who are most likely to be affected.

We will be releasing these changes on November 15, 2011. This post describes the changes, their impact, and how they can be mitigated.

Change #1: Error responses for client-side web applications

The first change relates to the way errors are returned in OAuth 2.0 client-side web applications. It does not impact server-side, native, or device flows.

The current behavior of the OAuth 2.0 endpoint in certain error conditions is to return the error to the application as a query string parameter, for example:

https://www.example.com/back?error=access_denied.

The OAuth 2.0 specification indicates that the error should be returned in the fragment of the response. We are updating our OAuth 2.0 implementation to support the most recent draft of the specification. As a result, we will be changing the way we return errors to applications in the client-side flow.

As an example, today an error returns to your application as

https://www.example.com/back?error=access_denied. After this change, it will be returned as

https://www.example.com/back#error=access_denied.

There is no mitigation for this change, so your application will have to handle these types of errors in client-side script.

Change #2: Offline access as a separate parameter

The second change impacts the OAuth 2.0 server-side flow only. It does not impact client-side, native, or device flows. For context, this flow consists of the following steps:
  1. Redirect the browser to the Google OAuth 2.0 endpoint.
  2. The user will be shown a consent page.
  3. If the user consents, parse the authorization code from the query string of the response.
  4. Exchange the authorization code for a short-lived access token and a long-lived refresh token.
Once your application has obtained a long-lived refresh token (step 4), it may access a Google API at any time. This means server-side applications do not require the end-user to be present when obtaining new access tokens. We’re calling this type of access offline.

The client-side flow, in contrast, requires the user to be present when obtaining an access token. This type of access is called online.

With this change, we will be exposing online and offline access as a separate parameter that’s available only in the server-side flow.

When your application requests offline access, the consent page shown to a user will reflect that your application requests offline access and your application will receive an access and a refresh token. Once your application has a refresh token, it may obtain a new access token at any time.

When your application requests online access, your application will only receive an access token. No refresh token will be returned. This means that a user must be present in order for your application to obtain a new access token.

If unspecified in the request, online is the default.

A mitigation for this change is described at the end of this post.

Change #3: Server-side auto-approval

This change also impacts the OAuth 2.0 server-side flow only.

In the current implementation of OAuth2, every time your application redirects a user to Google, that user must give explicit consent before an authorization code is given to your application. As a result, sending a user through the flow another time requires them to see the consent screen again. Most applications don’t do this, but rather use the existing server-side flow as it was intended: a one-time association (import contacts, calendar operations, etc.) where the result is a refresh token which may be used to obtain new access tokens.

The behavior is changing to the following:
  • Users will only see the consent screen on their first time through the sequence.
  • If the application requests offline access, only the first authorization code exchange results in a refresh token.
To put it another way, consent will be auto-approved for returning users unless the user has revoked access. Refresh tokens are not returned for responses that were auto-approved.

The next section describes how to mitigate this change.

Mitigation of offline access (#2) and auto-approval (#3) changes

If you want to keep the existing behavior in your server-side applications, include the approval_prompt=force and access_type=offline parameters in an authorization code request.

For example, if the following is a target URL for obtaining an authorization code today:
https://accounts.google.com/o/oauth2/auth?
client_id=21302922996.apps.googleusercontent.com&
redirect_uri=https://www.example.com/back&
scope=https://www.google.com/m8/feeds/&
response_type=code
You can maintain the current behavior by changing the target URL to:
https://accounts.google.com/o/oauth2/auth?
client_id=21302922996.apps.googleusercontent.com&
redirect_uri=https://www.example.com/back&
scope=https://www.google.com/m8/feeds/&
response_type=code&
access_type=offline&
approval_prompt=force
You may start including these parameters in authorization code requests today.

Questions?

If you have any questions or comments, please post on the OAuth 2.0 Group (https://groups.google.com/forum/#!forum/OAuth 2.0-dev). We will be actively monitoring that group and will work to respond quickly.

Justin Smith

Justin Smith is a Product Manager who works on authentication and authorization technologies at Google. He enjoys woodworking, cycling, country music, and the company of his wife (not necessarily in that order).

Read more »

Monday, March 9, 2015

Python OAuth 2 0 Google Data APIs

Since March of this year, Google has supported OAuth 2.0 for many APIs, including Google Data APIs such as Google Calendar, Google Contacts and Google Documents List. Googles implementation of OAuth 2.0 introduces many advantages compared to OAuth 1.0 such as simplicity for developers and a more polished user experience.

We’ve just added support for this authorization mechanism to the gdata-python-client library-- let’s take a look at how it works by retrieving an access token for the Google Calendar and Google Documents List APIs and listing protected data.

Getting Started

First, you will need to retrieve or sync the project from the repository using Mercurial:

hg clone https://code.google.com/p/gdata-python-client/

For more information about installing this library, please refer to the Getting Started With the Google Data Python Library article.

Now that the client library is installed, you can go to your APIs Console to either create a new project, or use information about an existing one from the API Access pane:

Getting the Authorization URL

Your application will require the user to grant permission for it to access protected APIs on their behalf. It must redirect the user over to Googles authorization server and specify the scopes of the APIs it is requesting permission to access.

Available Google Data API’s scopes are listed in the Google Data FAQ.

Heres how your application can generate the appropriate URL and redirect the user:

import gdata.gauth

# The client id and secret can be found on your API Console.
CLIENT_ID =
CLIENT_SECRET =

# Authorization can be requested for multiple APIs at once by specifying multiple scopes separated by # spaces.
SCOPES = [https://docs.google.com/feeds/, https://www.google.com/calendar/feeds/]
USER_AGENT =

# Save the token for later use.
token = gdata.gauth.OAuth2Token(
client_id=CLIENT_ID, client_secret=CLIENT_SECRET, scope= .join(SCOPES),
user_agent=USER_AGENT)

# The “redirect_url” parameter needs to match the one you entered in the API Console and points
# to your callback handler.
self.redirect(
token.generate_authorize_url(redirect_url=http://www.example.com/oauth2callback))

If all the parameters match what has been provided by the API Console, the user will be shown this dialog:

When an action is taken (e.g allowing or declining the access), Google’s authorization server will redirect the user to the specified redirect URL and include an authorization code as a query parameter. Your application then needs to make a call to Google’s token endpoint to exchange this authorization code for an access token.

Getting an Access Token

import atom.http_core

url = atom.http_core.Uri.parse_uri(self.request.uri)
if error in url.query:
# The user declined the authorization request.
# Application should handle this error appropriately.
pass
else:
# This is the token instantiated in the first section.
token.get_access_token(url.query)

The redirect handler retrieves the authorization code that has been returned by Google’s authorization server and exchanges it for a short-lived access token and a long-lived refresh token that can be used to retrieve a new access token. Both access and refresh tokens are to be kept private to the application server and should never be revealed to other client applications or stored as a cookie.

To store the token object in a secured datastore or keystore, the gdata.gauth.token_to_blob() function can be used to serialize the token into a string. The gdata.gauth.token_from_blob() function does the opposite operation and instantiate a new token object from a string.

Calling Protected APIs

Now that an access token has been retrieved, it can be used to authorize calls to the protected APIs specified in the scope parameter.

import gdata.calendar.client
import gdata.docs.client

# Access the Google Calendar API.
calendar_client = gdata.calendar.client.CalendarClient(source=USER_AGENT)
# This is the token instantiated in the first section.
calendar_client = token.authorize(calendar_client)
calendars_feed = client.GetCalendarsFeed()
for entry in calendars_feed.entry:
print entry.title.text

# Access the Google Documents List API.
docs_client = gdata.docs.client.DocsClient(source=USER_AGENT)
# This is the token instantiated in the first section.
docs_client = token.authorize(docs_client)
docs_feed = client.GetDocumentListFeed()
for entry in docs_feed.entry:
print entry.title.text

For more information about OAuth 2.0, please have a look at the developer’s guide and let us know if you have any questions by posting them in the support forums for the APIs you’re accessing.



Alain Vongsouvanh profile | events

Alain is a Developer Programs Engineer for Google Apps with a focus on Google Calendar and Google Contacts. Before Google, he graduated with his Masters in Computer Science from EPITA, France.

Updated 9/30/2011 to fix a small typo in the code

Read more »

Monday, March 2, 2015

e Learning 2 0 Workshop Stephen Downes

  • Link to Stephen Downes Homepage
  • All His Papers
  • All His Presentation Slides + KL Workshop Slides
  • Blogs - OLDaily & Half an Hour

Web 1.0 = Read
Web 2.0 = Read -Write
Web 3.0 = Read -Write - Research
Web 4.0 = Read -Write - Research - Rambo!

At last I got to meet Stephen Downes in person and attend one of his workshops. Better yet, due to a secret arrangement (Not telling!) I got to become his personal bodyguard (I mean assistant) during this 2-day workshop in Kuala Lumpur (14th - 15th January). You can see me on the picture happily holding tightly to the handheld laser gun (I mean camera!).

In this e-Learning 2.0 workshop facilitated by Stephen (who actually entitled it Web 2.0 in Learning), participants explored a full range of web 2.0 tools, and discussed (including group activities) how these tools could facilitate more effective communication, collaboration and learning. The intention was to explore the underlying technologies and to develop a sense of what to expect in the future.

NEW DISCOVERIES?
The thing about attending workshops facilitated by people like Stephen is that you can be sure of discovering a lot of new learning stuff on the way. Here are new learning tools and sites that I discovered during this great workshop:

  • Gliffy - A free web-based diagram editor.
  • Zoho - Offers a suite of online web applications geared towards increasing your productivity and offering easy collaboration.
  • LiveJournal - A free service for your journaling and blogging.
  • Bebo - Allows users to share photos with music, and blogs, and draw on members White Boards.
  • Pixer - Lets you manipulate, edit, enhance and apply filters to your digital pictures using only your web browser.
  • Ustream.tv - You can broadcast your own live video show for free. You only need a computer device, camera and solid Internet connection. Not bad!
  • Worldbridges - A community of communities that use homegrown webcasting and other new media technologies to help people connect, learn, & collaborate.
  • EdTechTalk - A community of educators interested in discussing and learning about the uses of educational technology. They webcast several live shows each week.

In addition, we discussed many other web 2.0 learning tools such Ning (Social Networking), Second Life ( 3D virtual world) and Wikispaces, which I have already explored, but are worth mentioning here (Check out the slides to discover the rest!).

Not only did we discover new tools from Stephen, he also discovered a few new learning tools from us, including:

  • WiZiQ - Free Hosted Virtual Classroom platform.
  • CamStudio - Free Screen Recording Software.
  • eSnips - Get 5GB of free space to upload and share your files, photos, videos and music.

In other words, no matter how brilliant we are, we can always learn and discover stuff from others. Therefore, I would argue that Stephen Downes is brilliant, because he knows this and practices it all the time (Any logic here!).

However, of all the things I discovered, learned and explored during the workshop, I personally found the reading resources shared the most valuable to my learning mind. I suppose it is easier to find a new tool or site (at least for me!), than discover a great article or paper among millions. Anyway, here is a list of a few of those relevant and mind enriching writings, which Stephen recommended us to explore further (Check out the slides to discover the rest! 2nd time!):

  • The Cluetrain Manifesto - Markets are about conversations (an e-Book by several authors). If you are lazy, at least read the 95 theses to get some idea.
  • E-Learning 2.0 - (Stephen Downes)
  • What is Web 2.0 - The web as platform. Design patterns and business models for the next generation of software (Tim OReilly).
  • Educational Blogging - (Stephen Downes)
  • How to Be Heard - (Stephen Downes)
  • The Long Tail - Why the future of business is selling less of more (Clay Shirky/Chris Anderson).
  • MySpace is My Identity Space - (Danah Boyd)
  • Wisdom of Crowds - (James Surowiecki)

And the juicy list of excellent reading resources (especially about blogging and social networks) goes on and on (Check out the slides to discover the rest! 3rd time lucky!). As I had not read many of these recommended reading resources before, it was a thrill to discover them.

LESSONS LEARNED
Since, I was his personal assistant and camera man during the 2-day workshop, I really got to zoom in on Stephen Downes and discover more about him (I am not sure if the video recordings I took are up to mark, though! First time!). I suppose I can go on here (until the break of dawn!), writing about all the things I observed and learned from him, but I will only highlight a few important lessons I learned here, which we all can take note and actually do something about.

Even Stephen Downes does not know everything about e-learning, and he does not see that as a weakness either (opportunity to learn more!). Instead, he gets excited when someone in the crowd knows something he doesnt (a challenge, too!), and wants to learn about it straight away. Since we have a computer and Internet connection, lets explore the possibilities together using Google, right now (Why wait!).

In other words, it is alright to say I dont know, when a participant or student asks a question, which we dont know the answer to. If no one participating in the session knows, we can always explore it together using Google, or whatever search tool we find relevant for the task (or get back to the question later, when we have an answer). If we take that kind of attitude and approach into our learning environments, we will not fear questions (essence of creative and critical thinking!), and students will eventually not fear to ask questions (mind of inquiry). Both the educators and student will benefit! You will learn more (about the content, students and yourself!), and students will not only learn more, but be more active in the learning process, taking responsibility and improving their ability to ask questions. Even before we discover a problem, or conceptualize a great idea (which might lead to an invention or innovation), we need to ask questions (Zooming in on the right or AHA ones!). Questions might seem like a threat first, but if you learn how to love them, and deal with them head-on, the rest is a ball :)

In terms of conducting a workshop (lecture, tutorial, etc.), I learned that you must always be able to quickly adapt the sessions (or classes) to the learning expectations and needs of the participants, and be able to revise and reform your workshop activities on-the-fly to ensure a more effective and relevant learning experience. Sometimes, participants might not even know what they really want, but you still have to explore through relevant questions early on, and by using your emotional, observational, and analytical intelligence (e.g. What do you know about____? What are your past experiences with ____? What do you want to learn? ) . Even if you fail to satisfy their learning expectations and needs, they will most likely appreciate your efforts to tailor and customize the learning event. I suppose the main challenge will be to meet all the participants learning expectations and needs. But that is a challenge we have to deal with, if we want to be an effective educator. And by using web 2.0 technologies like blogs, wikis, social networking sites, virtual worlds, etc. appropriately, and getting participants involved in creating, remixing, mashing-up and sharing knowledge, we are probably moving forward.
In short, we need to get everyone involved in exploring, discovering, learning, doing, reflecting, creating, and sharing knowledge and ideas. By doing so, we are nurturing their ability to learn (how to learn!). If you are able to spark, participants or students will take care of the rest.

FUTURE LEARNING DIRECTIONS?
Stephen identifies five (5) main future directions of learning (and e-learning) in his slides. I have added some of my thoughts to these five directions.
  • Learning as Creation - We increasingly learn by creating/remixing knowledge, products and services during the learning process (not only consuming), with the assistance of increasingly more powerful and user-friendly learning tools.
  • Social Learning - We learn by interacting with others locally and around the world, which is increasingly being enabled more efficiently and effectively with the assistance of technology (Global Collective Intelligence). Imagine participating in global learning communities and getting access to some of the greatest minds on this planet with just a few clicks. Here I am talking to Jay Cross, Jane Knight, Joseph Hart, Stephen Downes and Clayton Wright on Skype. The only cost is basically our time.
  • Personal Learning Environment - People will increasingly be able to construct their own customized and convenient learning spaces, which integrates all their informal and formal learning tools. In other words, we might soon say goodbye to LMS, LCMS, portals, etc., sooner than we realize. They will probably exist, but we will hardly visit them, and mostly read their news feeds from our all-to-one learning dashboards. One User ID and Password! One Learning Space! Tons of Learning Tools! All are communicating with one another! We can get all our relevant updates from one learning space, and we can update all our learning tools with one update (Create once, publish many). WOW! That is cool!
  • Immersive Learning - Augmented reality and 3D virtual worlds with fully immersive tools enabling every sense of our body to engage in the learning process. It also reflects that we will increasingly be able to construct cost-effective simulated learning environments that are close to the real thing. We are able to do and practice things in safe virtual learning environments that we could only dream about in the past (e.g. manage Google, build spaceships, teleport to Mars, discuss global warming with Al Gore, and engage in past civilizations). In short, we can stimulate all our senses to fully immerse ourselves in safe virtual learning environments that are similar, or close replications of the real ones. Practice without getting physically hurt (though, we might get a bit of mental stress!).
  • The Living Arts (Things You Really Need to Learn) - We dont follow strictly the requirements and needs of PhD, Masters, Bachelor and Diploma programs, programs are instead tailored to our relevant learning needs, and we are empowered to construct our own learning opportunities and environments that enable and motivate us to find and fulfill our learning potential. Why learn something that we never use, or want to know?

In addition to learning a lot of stuff from Stephen, I learned a lot from more than 40 participants both from the corporate and the education (mostly Higher Education) sectors in Malaysia (picture below). Interestingly, we are also planning to start an official e-Learning community (whereby we physically meet on regular occasions) in Malaysia, and if you are interested to find out more about that, please join or visit our new Malaysian e-Learning Community in Facebook (you need a Facebook account to join).

Finally, I would like to thank FIK International for organizing a great workshop.

Oh, I forgot (this post is getting long!)! You might be wondering why Stephen and the Myau picture. Well, during the first day of the workshop we all suddenly heard the sound of cat (Myau), and Stephen probably thought he was going a bit nutty, or the jet lag was really getting to him (which it was, I suppose!). However, it was only a ringtone to one of the participants, and we all had a great laugh! So, the picture is in memory of this funny informal learning incident. Myau!!!

In conclusion, I am glad that I attended the workshop (and became Stephens workshop assistant), and got to know Stephen better. These are the kind of learning experiences that spark our motivation to learn and explore more. Yeah, now I am also a certified e-Learning 2.0 specialist (by attendance). If you are interested to learn more, please give me a buzz :)

Read more »

Thursday, February 26, 2015

PDF Creator 0 8 Excellent Free

Link to PDF Creator & Home page
"PDFCreator (0.8) is a free tool to create PDFs easily from nearly any application. With the PDFCreator Printer driver you turn any program into a PDF-machine"
Improvements (in Version 0.8):
  • Security! PDFCreator can handle either security settings from AFPL Ghost above 8.14 or can use then program pdfenc from Steven Lee.
  • Improved printer driver handling
  • 2 new variables: OptionsEnable and OptionsVisible (a simple protection to save the options - useful for administrators) Set this variables manually in the file PDFCreator.ini to save the options.
  • Email Clients: Succesfully tested with MS Outlook, Outlook Express, Thunderbird, Eudora,
  • Pegasus Mail (WsendTo.exe), The Bat!, Foxmail, Sylpheed-Claws, IncrediMail Problems with: Ak-Mail, GeMail, Postguard, Vivian Mail
  • Add PDF document properties Keywords and Subject
  • You can add printable files (also via Drag and Drop) and through the windows explorer context menu.
  • Added Commandline parameter PF: Convert a printable file in a pdf document example: pdfcreator.exe -PF"c:autoexec.bat"
  • Update check from PDFCreator Menu.
Read more »

Sunday, February 15, 2015

Friday, February 13, 2015

TeamViewer v9 0 23724 Server Enterprise full version with crack


Review:
Today, TeamViewer announces a new beta version of its popular remote control software for Windows, Mac and Linux PCs. The latest release, named TeamViewer 9 Beta, introduces new features aimed at businesses, developers and end-users as well as security improvements.

The most noteworthy security addition in TeamViewer 9 Beta is two-factor authentication. It allows users to add an extra layer of protection to their accounts by using security codes, that can be sent to their mobile devices and, alternatively, generated by dedicated mobile apps. On Macs, TeamViewer 9 also adds the option to increase the password strength in QuickSupport.

"TeamViewer has always been focused on remote support functionality", says the companys head of product management Kornelius Brunner. "With TeamViewer 9, we are going back to the roots and offering even better features for support teams in companies large and small".

Service Queue is a new TeamViewer 9 Beta feature aimed at IT staffs, that provides the option to assign, manage and share requests for immediate support. Users who join remote support sessions can now use a unique code, that is created specifically for that session, instead of having to exchange a username and password. The unique code can be distributed as a link.

The software adds the option to save customized customer modules with the companys branding (for Host, QuickJoin or QuickSupport) in the TeamViewer Management Console. The modules can be tailored, as needed, to a customer, group or support provider. The customers will receive the latest TeamViewer version, following any modifications.

TeamViewer 9 Beta introduces tab support. This allows users to open multiple remote control sessions and view multiple displays in a single window. Tabs can flash, indicating new activity.

Wake-on-LAN is now supported, allowing users to trigger a remote wake of the PCs they wish to control. The feature only works between devices connected to the same local network.

In TeamViewer 9 Beta users can take advantage of a univeral clipboard, which allows them to copy and paste content from their current device to a remotely-controlled one (files, folders, text and tables are supported). The formatting is carried over.

Using an FTP server, the software allows users to send files to devices and contacts without initiating remote control sessions. This offers an alternative to cloud-based storage services in such instances.

Specifically for Mac users, TeamViewer 9 Beta also adds the file box for quick sharing while using the software and the option to add a disclaimer when creating customized QuickSupport modules, which users have to accept before launching the software.

TeamViewer 9 Beta informs users of any new notifications in the Computers & Contacts area. The notifications include alerts for TeamViewer monitoring, ITBrain, new service cases, new contact requests and service cases assigned to the user. Read more

Download
Link 1 ; Link 2

File password: 4hBest.blogspot.com

Note: How to Download
Read more »

C Program to calculate roots of quadratic equation ax 2 bx c 0


#include<iostream.h>
#include<conio.h>
#include<math.h> //to claculate square root


void main()
{
clrscr();   //to clear the screen
float root1,root2,a,b,c,d;
cout<<"Quadratic Equation is ax^2=bx+c=0";
cout<<"  Enter values of a,b and c:";
cin>>a>>b>>c;


d=(b*b)-(4*a*c);
if(d>0)
{
     cout<<"
Two real and distinct roots";

     root1=(-b+sqrt(d))/(2*a);
     root2=(-b-sqrt(d))/(2*a);
     cout<<"
Roots are "<<root1<<" and "<<root2;

}


else
if(d==0)
{
      cout<<"
Two real and equal roots";

      root1=root2=-b/(2*a);
      cout<<"
Roots are "<<root1<<" and "<<root2;

}
else
   cout<<"
Roots are COMPLEX and IMAGINARY....!!!";

getch(); //to stop the screen
}

Read more »

Wednesday, February 11, 2015

KARAOKE SOUND TOOLS 1 0 15 FULL VERSION WITH SERIAL KEY


Karaoke Sound Tools 1.0.15 allow you to:
  • Remove vocals from a song
  • Change the key of a song to better suit your voice
  • Change the tempo of a song to make it easier to sing
  • Process MP3, WAV, BIN, and MP3G (MP3 and CDG) file formats
  • Combine multiple songs to create a karaoke song medley
  • Clip karaoke songs to remove dead air
Karaoke Sound Tools 2 is an easy-to-use vocal and voice remover, karaoke key and tempo changer for audio processing. It contains of three modules:
Process:


Vocal remover to remove vocal parts from CD recordings
  • control the amount of bass and treble processing
  • remove vocals from non-centered recordings using balance
  • adjust karaoke voice removing level and output attenuation
  • create multiplex tracks (with vocal in the left and instrumental part in the right channel)
Key changer to adjust a song to singer’s voice
  • change the pitch in the -12 to +12 semitone (half-note steps) range
  • after processing, music instruments have no chipmunk or time speed up or down, holding the tempo the same as if the original studio recorded in your key
  • you can process karaoke songs with lyrics (BIN and MP3G)
Tempo changer to speed up or slow down a song

  • change the tempo of a song from two times slower to twice as fast
  • our tempo changer retains the original key of a song
  • you can process karaoke songs with lyrics – they will be adjusted to stay in sync
Merge:   Merge allows to combine several karaoke songs into one karaoke medley.
  • combine any number of MP3+G, ZIP, or BIN files
  • remove silence (dead air) between songs

Clip:   Clip allows to remove starting and ending part of a CD+G song.
  • process any number of MP3+G, ZIP, or BIN files at once
  • remove silence (dead air) at the beginning or at the end of a song
  • remove the beginning of a song and start at the exact moment (this can be used to remove logos or images from songs)

Download

click to begin

9 MB

I hope you like it......!
Read more »