Developers use GitHub together with a number of other platforms, to communicate with each other on issues, pull requests, deployment statuses, and other updates. We want to integrate GitHub with other platforms to make it easier for developers and teams to collaborate around their projects from whatever context they work in. We’ve had a GitHub + Slack integration for years, and today we are excited to announce that we’re expanding our portfolio, with a new GitHub + Microsoft Teams integration, now available in public beta.
To get access to this new integration, head over to the Microsoft Teams app store and install GitHub (Preview), or directly install from here.
Getting started
There’s a lot to be excited about with this integration, including the ability to close/reopen issues and comment on issues/pull requests right in Teams. But, first things first, you’ll want to link your GitHub and Teams accounts. To link your accounts, authenticate to GitHub using a @github signin command.
Let’s see what else you can do with this integration!
Customizing your experience
Get notifications for only the organizations and repositories you care about. You can subscribe to get notifications for an organization or repository’s activity using the @github subscribe [organization]/[repository] command. To unsubscribe to notifications from a repository, use @github unsubscribe [organization]/[repository]
Viewing current details
Your team can see all the essentials details on a GitHub activity posted in a Microsoft Teams channel. The notification card you see for any pull request or issue always reflects the current state from GitHub along with other metadata like checks, descriptions, labels, assignees, and reviewers.
Turning conversations into actions
Any new event that happens on a pull request or issue (like comment/review/close/merge etc.) is added as a reply to the parent card. This helps in retaining the context and promotes collaboration. And you can turn discussions into actions on GitHub, directly from Teams. You can perform actions like:
Open a new issue
Close and reopen existing issues
Comment on issues and pull requests
Unfurling your links
When you share links to GitHub activities in the channel, more details are automatically extracted and shown as a preview in your Teams channel. Check it out:
Staying in touch
We’re looking forward to hearing your feedback on the new integration. Please share any feedback you might have here. For more information, visit teams.github.com and/or our product documentation page today.
Open-source developers are not in it for the money. They create amazing software projects we all use every day, spending hundreds, if not thousands of hours of their spare time in the process. The reward? Recognition, a sense of accomplishment and bragging rights on their next job interview. This was enough for most developers for a long time, but in the past couple of years, and as commercial usage of open-source increased, we’ve seen growing frustration among developers, who are flooded by requests, bugs and questions – from people using their code for free. Some developers even got threats (!) from disgruntled users, demanding the developers fix a bug or implement a new feature they needed.
This frustration is increased, when developers see their open source projects are used to generate revenue for companies, while they are getting nothing for their talent, work and efforts. It seems unfair, and rightfully so. Developers need a way of getting the resources they need, to keep developing their projects. They need to be able to afford the time to work on their projects, get hosting servers, pay others to help out and more. Without any form of compensation from the people using their code – that is just not sustainable in the long run. So, the goal is not to get rich. The goal is getting the resources to build better software. Monetization is the way to achieve that goal.
The Challenges
Monetization is something that is usually out of the scope of what developers are interested in, and usually requires dealing with non-programming tasks such as setting up billing, handling payment processing and taxes, addressing legal issues and more. Because of the complexity involved, a lot of developers just give up before even trying. They don’t want to worry about financials and other corporate nightmares. They want to write code – not run a software company.
Besides the complexities of charging users for using their code, there are other aspects that make things even more complicated – how do you incentivize your users to pay while keeping your code open source? How do deal with other developers who contributed code to your project? Should they be compensated as well?
It’s a complicated task, and there are not a lot of easy solutions.
Why Not Use Donations?
To meet the monetization challenges, several donation platforms have emerged, offering developers to ask for donations from users using their code. That seems like the proper thing to do. If you are using a project for free and make money using it, you should be happy to donate to its creator, right? The reality is, unfortunately, that the overwhelming majority of companies using open source, do not donate at all. Because of the inherent nature of donations, being non-mandatory, no one has a strong incentive to donate, let alone on an ongoing basis. This makes donations a very limited way of monetizing, and many developers who tried it report that their revenue from donations is marginal, if not zero. Donations are an all-carrot-no-stick approach, and if developers need a steady stream of revenue to afford to make their projects better – they need something they can rely on. They need a stick to go with their carrot.
A New Way to Monetize
To overcome the barriers mentioned above, we at xs:code came up with a solution, that we believe can help make monetization so simple, that any open-source developer can start doing it today. xs:code is a platform that allows developers to offer subscription-based access to a private repository the keep on their Github account. Usually, open-source projects are kept in a public repository, freely accessible by anyone.
Our platform allows developers to keep another version of their project, that is connected to xs:code, and accessible only for users who pay for a subscription. The developer can decide how the two versions are different, and keep developing on Github as usual. The platform handles everything from billing, payment processing, invoicing and legal. The trick here is to make a smart decision on how the paid and free versions differ, so users have an incentive to pay. There are several options to do that, each with its own advantages.
Dual Licensing vs. Freemium
One option is often referred to as “dual licensing”. The developer keeps a version with a copyleft license (such as GPL) on his public Github repository, and the exact same code, with a permissive license (such as MIT), on his private repository. GPL licensed code, usually means the code cannot be used in commercial software, as it requires to change the entire code around it to GPL as well. That means companies using the open-source code will need to make their entire code base open source, and that is usually not viable most companies. MIT licensed code, can be used freely, no restrictions apply. If a company wants to use an open-source project with an MIT license, they would need to buy a subscription on xs:code.
Another option, usually called “freemium” or “Open core”, means that the developer keeps a “Lite” version on his Public repository, and another “Pro” or “Premium” version on his private repository. The “Pro” version can have more features, better support, paid hosting, or whatever the developer wants to offer.
There are many other options to separate the paid and free versions, and developers are only limited by their imagination and creativity to come up with ways to offer value to their brand new paying customers.
Paying Contributors
Code contributions are one of the key elements that made open source so incredible. When developers from all over the world contribute their time and talent to help make projects better – we all win. When the developer of a project starts to generate revenue from his code, it only makes sense the developers who contributed would also be entitled to their fair share. xs:code makes that simple, by allowing developers to grant contributors a percentage of their revenue. We see this as not only fair, but essential for keeping contributors motivated, and offering new contributors an opportunity to benefit from helping with making a project better.
Conclusion
Open source is an incredible thing. But without proper compensation for developers and contributors, it might not last – and that is bad for everyone involved in software development. In order to keep open source alive, a clear path of compensation for developers is crucial. I truly hope that our humble contribution to this cause would help make open source better – for all of us.
Interested in monetizing your project? Visit xscode.com
Notepad is among the most popular applications, and that is why Microsoft has included it in every version of Windows. It has a long history, and it has maintained a simple and clean interface. The simplicity of this text editor I use, and that is why most people have developed a preference over it. But wait? The developers keep on making improvements to suit your needs.
There is another text editor outside notepad, which is notepad ++. It has a bunch of features that allow you to complete more complex tasks. It has syntax folding, syntax highlighting when writing code and multi editing. Once you are in a good position to use notepad++ you will need WinRAR to help you compress storage required to store data by removing unnecessary data to pave the way for what you want to save. You can simply get it at rocketfiles.com.
Therefore with such an amazing text editor, you will not miss having its alternatives, and that is why in this article I will focus on its alternatives.
7 Best Notepad++ Alternatives
1. Brackets
his is a typical Text editor that offers unique tools for front end web developers and designers. It offers the following features:-
Features
It has support for an extension
It offers a live preview, which implies you can edit the code using the editors and as well preview it in the browser within the editor.
It is among the popular text editor across all the platforms since it is capable of supporting various programming languages. It is highly responsive such that it automatically resizes tab size when you open multiple tabs.
Features
It offers complete keyboard support
It is an open-source
It is not mandatory to purchase the license
No costs during installation
Pros
It has auto-indentation feature
It is easy to install and use
It has intelligence sense features
Cons
It lacks git plugins.
3. Atom
It is a free open source editor with lots of features. It is compatible with Linux, Windows, and Mac OS.
Features
It can autocomplete texts
It automatically identifies codes
It provides syntax highlighting
Pros
It is easy to install
Free, open-source editor
It offers several plugins to enhance its reflectiveness
It has an elegant interface
Cons
It is a bit slower when you compare to the other editors
It is large in size
4. Visual Studio Code
This is also another popular text editor that can support multiple programming languages. It is compatible with various operating systems, and it offers competent community support.
Features
It has an inbuilt feature which is done signed for file comparison
It is an open-source editor
It offers an inbuilt Git support
It can be installed across multiple operating systems
It supports user commands
Pros
It is easily customizable
It is light in weight
5. Netbeans
This is yet another text editor that is majorly used for Java development. It is an Integrated Development Environment that is based on the concept of modularity.
Features
It can autocomplete various texts
It automatically detects the codes
It has syntax highlighting features
Pros
It offers easy debugging feature
It is an open-source text editor
It is based on the modular concept
It is an ant-based project system
It can support maven
Cons
It is heavy
It offers less skin customization
6. TextMate
This is a typical text editor, which is an alternative for notepad++, and it can be used for general purposes. Here are some of its dominant features:-
Features
It is customizable
It provides syntax highlighting
It autocompletes texts
It automatically identifies codes
Pros
It has a live preview feature
It can list function in the current document
Cons
It can only be installed in Mac OS.
7. TextPad
This text editor was initially developers to be used in Microsoft OS by Helios Software solution. To be able to use it, you will have to purchase it.
Features
Supports multiple programming languages
It is capable of maintaining block indent
You can scroll multiple files synchronically
It offers automatic code identification
It automatically integrates JDK
Conclusion
Notepad++, which is available and free at rocketfiles.com, is popular because of its unique features. There are also alternatives that I have listed in this article that can actively perform similar tasks. You can use any of these editors for programming or general purposes. The good thing about most of these text editors is that they are easy to install and use. Most of them are also free except text pad, which you have to purchase it before using it. Generally, most of these text editors can compliment notepad ++ perfectly.
A local database is very essential for developing small scale C# applications, because it doesn’t requires a server to store the data. So this article is on how to connect and use C# local database.Well I am pretty sure that most of you would thing, what is a Local Database? A local database is database which can be used locally on a computer, it doesn’t require a server. The advantage of using a local database is you can easily migrate your project from one computer to another (you don’t need to setup/configure a database server). Microsoft provides local database within visual studio which is often called as SQLCE (CE stands for compact edition).
So let’s get started!
1. First of all create a new project in C# (make sure you select the Netframe version above 3.5, because local database is supported in Netframe version 4.0 or above).
2. Now right click your project under solution explorer -> select add new item.
3. A new window will be popped up, search for local database and add it.
4. Again a new window will be popped up which ask up to choose a Database Model select Dataset and hit Next & hit Finish.
5. Now we have added a local database in our C# application.
6. Now we need to establish our connection between our local database & C# application.
7. So simply add a button from toolbox and change the text to Start Connection.
8. Double click your form and import the following:
using System.Data.SqlServerCe;
Note: If you are facing an error then watch the video tutorial.
9. Double click the button and add the following code:
SqlCeConnection Conn=new SqlCeConnection(//specify the connection string here)
10. In order to find the connection string, go to solution explorer and open app.config file.
11. In the above screenshot you can see the connection string just copy it and paste it here inside the brackets.
SqlCeConnection Conn=new SqlCeConnection(//specify the connection string here)
12. We are almost done now we just need to open the connection so just double click the button and add the following code:
In this tutorial we are going to use a bit of graphics class to design a C# analog clock. We have also used a timer to continuously move our clock’s pointer.
Concept
We will first initialize some angle values to second, minute, hour hand.
Then draw the clock using the graphics class, save it as a bitmap variable and load it in the picturebox.
Finally Use the timer to move the second hand.
Instructions
Create a new windows form applicaton project in visual c#.
Add a picture box on the form.
Double click the form to switch to code view.
Delete all the existing code and paste the code given below.
C# Analog Clock Program
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AnalogClock
{
public partial class Form1 : Form
{
Timer t = new Timer();
int WIDTH = 300, HEIGHT = 300, secHAND = 140, minHAND = 110, hrHAND = 80;
//center
int cx, cy;
Bitmap bmp;
Graphics g;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//create bitmap
bmp = new Bitmap(WIDTH + 1, HEIGHT + 1);
//center
cx = WIDTH / 2;
cy = HEIGHT / 2;
//backcolor
this.BackColor = Color.White;
//timer
t.Interval = 1000; //in millisecond
t.Tick += new EventHandler(this.t_Tick);
t.Start();
}
private void t_Tick(object sender, EventArgs e)
{
//create graphics
g = Graphics.FromImage(bmp);
//get time
int ss = DateTime.Now.Second;
int mm = DateTime.Now.Minute;
int hh = DateTime.Now.Hour;
int[] handCoord = new int[2];
//clear
g.Clear(Color.White);
//draw circle
g.DrawEllipse(new Pen(Color.Black, 1f), 0, 0, WIDTH, HEIGHT);
//draw figure
g.DrawString("12", new Font("Arial", 12), Brushes.Black, new PointF(140, 2));
g.DrawString("3", new Font("Arial", 12), Brushes.Black, new PointF(286, 140));
g.DrawString("6", new Font("Arial", 12), Brushes.Black, new PointF(142, 282));
g.DrawString("9", new Font("Arial", 12), Brushes.Black, new PointF(0, 140));
//second hand
handCoord = msCoord(ss, secHAND);
g.DrawLine(new Pen(Color.Red, 1f), new Point(cx, cy), new Point(handCoord[0], handCoord[1]));
//minute hand
handCoord = msCoord(mm, minHAND);
g.DrawLine(new Pen(Color.Black, 2f), new Point(cx, cy), new Point(handCoord[0], handCoord[1]));
//hour hand
handCoord = hrCoord(hh % 12, mm, hrHAND);
g.DrawLine(new Pen(Color.Gray, 3f), new Point(cx, cy), new Point(handCoord[0], handCoord[1]));
//load bmp in picturebox1
pictureBox1.Image = bmp;
//disp time
this.Text = "Analog Clock - " + hh + ":" + mm + ":" + ss;
//dispose
g.Dispose();
}
//coord for minute and second hand
private int[] msCoord(int val, int hlen)
{
int[] coord = new int[2];
val *= 6; //each minute and second make 6 degree
if (val >= 0 && val <= 180)
{
coord[0] = cx + (int)(hlen * Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
else
{
coord[0] = cx - (int)(hlen * -Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
return coord;
}
//coord for hour hand
private int[] hrCoord(int hval, int mval, int hlen)
{
int[] coord = new int[2];
//each hour makes 30 degree
//each min makes 0.5 degree
int val = (int)((hval * 30) + (mval * 0.5));
if (val >= 0 && val <= 180)
{
coord[0] = cx + (int)(hlen * Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
else
{
coord[0] = cx - (int)(hlen * -Math.Sin(Math.PI * val / 180));
coord[1] = cy - (int)(hlen * Math.Cos(Math.PI * val / 180));
}
return coord;
}
}
}
Http protocol supports the following methods to retrieve data such as get, post, put, delete etc. In this article, I will tell you about the difference between GET and POST methods.
These methods are basically used to get and send any data. Because of these methods, the request-response between server and client exist. To send data streams we use these two methods. GET and POST are the most common HTTP methods.
Difference between GET and POST Method
GET
POST
We add parameters in URL and get data in response.
Send additional data from the client or browser to the server.
Sends data as part of URI (uniform resource identifier)
Sends data as HTTP content.
get return same results every time.
The post method implements in that way it changes with every request.
We can send limited data in the header.
We can send a large amount of data because its part of the request body.
It is not much secure because data is exposed to URL and we can easily bookmark it and send it.
It is more secure because data is passed in the request body and user not able to bookmark it
You can cache the data.
You cannot cache post request data.
GET is bounded by the max. URL length continued by the browser and web server.
POST doesn’t have such conditions.
GET is used to request data from a particular resource.
POST is used to send info to a server to create/update a resource.
parameters passed in URL
parameters passed in body
This is not happening in get method.
Use POST for destructive things such as creation, editing, and deletion.
get is used for fetching documents.
post used for updating data.
in get we pass things like customer id, uId to get a response.
post request sends information to server like customer info, file upload etc.
Check out the example of both requests.
GET Request:
GET https://api.github.com/users/{name}
Here you can pass name according to that you will get data.
GET https://api.github.com/users/sniper57
POST Request:
In this you will have to send content-type such as multipart/form-data, application/json, application/x-www-form-urlencoded and object or data that you have to pass in body.
Host: foobar.example
Content-Type: application/json
Object- [{name1:value1},{name2:value2}]
In this you are posting JSON data to API.
Comment down below if you have any queries related to get vs post methods.
Proper programming style significantly reduces maintenance costs and increases the lifetime and functionality of software. Most software disasters are rooted in poor style of programming. In this article I am listing out the 8 best rules that lead to a better programming style.
Readability
Good code is written to be easily understood by colleagues. It is properly and consistently formatted and uses clear, meaningful names for functions and variables. Concise and accurate comments describe a natural decomposition of the software’s functionality into simple and specific functions. Any tricky sections are clearly noted. It should be easy to see why the program will work and reason that it should work in all conceivable cases.
Maintainability
Code should be written so that it is straightforward for another programmer to fix bugs or make changes to its functionality later. Function should be general and assume as little as possible about preconditions. All important values should be marked as constants which can be easily changed. Code should be robust to handle any possible input and produce a reasonable result without crashing. Clear messages should be output for input which is not allowed.
Comments
Comments are the first step towards making computer program human readable. Comments should explain clearly everything about a program which is not obvious to a peer programmer. The volume of comments written is meaningless, quality is all that counts.Block comments are written using /* comments */ style. They should go at the top of every source file and generally include your name, the date your code was written and overall description of the purpose of that program. Block comments should also precede most functions with a description of the function’s purpose; these can be omitted for very short, obvious functions only.Inline comments are written as //comments, they should go near important lines of code within functions or with variables when they are initialized.
Naming
Names given to classes, variables, and functions should be unambiguous and descriptive. Other guidelines for naming are:
Capitalization is used to separate multi-word names: StoneMasonKarel.
The first letter of a class name is always capitalized: GraphicsProgram
The first letter of a function or variable name is always in lowercase: setFilled().
The names x and y should only be used to describe coordinates.
The names i, j, and k should only be used as variables in for loops.
Other one-letter names should be avoided: area = base * height instead of a = b * h.
Names of constants are capitalized, with underscores to separate words: BRICK_COLOR.
Use abbreviations with caution. max instead of maximum is fine, but xprd instead of crossProduct is a problem.
Indentation
Indentation is used to clearly mark control flow in a program. Within any bracketed block, all code is indented in one tab. This includes the class body itself. Each additional for, while, if, or switch structure introduces a new block which is indented, even if brackets are omitted for one line statements. For if statements, any corresponding else statements should line up
White Space
White space is meaningless to compilers, but should be used consistently to improve readability. Typically three blank lines are left in between functions. Individual blank lines are used within functions to separate key sections. Use of spaces varies as well, but inserting one space usually make expression more readable; next = 7 * (prev – 1) is clear than next=7*(prev-1).
Function Usage
Function should be short and accomplish a clear, specific task. As much as possible they should be considered “black boxes” which do not depend on anything except their parameters and can be handle any possible input gracefully. A common rule of thumb is the “Ten Line Rule”, usually function longer than ten lines are trying to do too much and should be simplified.Another important aspect of functions is that any repeated segments of code should be made into a separate function. This will shorten your program and improve readability.
Output
A final, overlooked aspect of good programming style is how our program output results and information to users. Part of writing professional looking programs is providing clear instructions and results to the users of our programs. This means proper English with no spelling error conditions. One must always assume that writing programs to be used by somebody with no understanding of computer programming whatsoever.If you liked the article then please share it!
You should have a good understanding of basics of the programming language in which you are working or learning. If your basic concepts are strong then you can solve complex problems by breaking it into smaller problems. Your code should be neat and well structured, so that if you start working with the code after few months then you can easily know where you left off.
2. Practice a Lot
We all know the fact that “practice makes a man perfect”. For improving your skills you have to practice thousands of hours. There are plenty of ways for practicing, like you can solve problems from good programming books or find online programming contests. There are many awesome websites like codechef.com, topcoder.com, etc where you can practice.
3. Be Amenable to Change
Technology is changing very rapidly so you have to aware of such changes. You should make sure that the projects or technologies on which you are working are not outdated. For becoming a better programmer you should always engage yourself in learning new things.
4. Read a Lot
The more you read, the more you learn. Read good programming books, articles, documentations. The best way for reading and learning programming is to join various programming forums and contests.
5. Help Others
Join great forums like stackoverflow.com where you can help other programmers by answering there questions. By helping others you can find answers of your own questions. You can also ask questions in the forums and get your problems solved; this will help you to become better programmer. These were few tips that will surely help you in becoming a better programmer. If you have any other tips then please mention it in the comment section.
The ASP.Net Development has arguably redefined and restructured the ambit of web application development. The new age capabilities of the platform created by Microsoft has features abound of developers to let them think out of the box and create something that paves way for innovation. Creating exclusive application become a prospect rather too realistic and as more number of developers and development companies lean towards ASP.NET, we are sure to witness better and faster web apps.
The framework is also continuously changing and it is being made sure that there are regular upgrades. For an enterprise providing the ASP.NET development services to a client – locally or offshore – it is imperative to keep glued to those changes and let them not surprise them and the clients. To upgrade themselves to the changes, developers need to rise up to the occasion and raise their skill levels and optimize the way they work. There are ways to do so, and those ways are met with certain challenges as well. But they also produce favorable results for businesses. So, here is how you can proceed to hone your results as a developer:
Make Handling the Requests an Asynchronous Exercise
The customary practice in ASP.Net Development is managing the incoming request synchronously. While this kind of process has its set of benefits, you cannot set priorities with this practice, which leads to mismanagement of time. As the requests are placed in a queue, there is a method to how they are handled. So far, so good, but the lack of prioritization only works the other way for you – the wrong way that is. By using asynchronous pages, you can reduce the total request handling time and let more important applications to run first.
Use the Browser’s Tools and Extensions
The browsers like Google Chrome and Mozilla Firefox comes with their own set of tools to help developers spend less time in writing darn-out codes and plug their applications with incredible features. The oversight leaded to ignoring these tools will only lead to increased time in developing apps and probably lesser efficiency as well. Look for the tools that are relevant to the app and leverage them in the best way you can.
Pool the connections to Free up Some Resources
The way applications are connected to the database eats up a lot of resources, which can otherwise be saved by the more optimized practice of connecting pooling. It also helps the TCP connections, though keeping an eye towards discrepancies like connection leaks becomes more imperative.
Do not Keep Debuggers Running at All Times
While ASP.NET works in a great way to make sure the errors do not creep in and go unnoticed through the use of various debuggers and tracers to let you know, they also have an impact over the application development speed metrics. If you keep them on, the debuggers will render the whole process slow and bring a marked difference in the way applications are being executed. This further impacts the performance – a not too desirable prospect by any stretch. As and when you need it, you can switch on the debuggers to locate and correct the errors to make sure they don’t surface at run-time.
Make the Most of Cache Class
Developers, both beginners and experts, often undermine the importance of the cache class. In fact, they ignore the benefits that the overall caching mechanism can provide them with. This mechanism is highly important for making a backup of resources while classifying their validity. The cache class makes this process be carried out with ease. As and when an object is not allowed to cache, the callbacks are summoned. With a nod to the growing evolvement of ASP.NET, developers feel the heat to stay abreast to the latest and most resourceful practices. And if they happen to be a part of a large scale ASP.NET development company, there is an escalated urgency.