You can mess up git working directory by merges, mistakes etc. and ends up with lots of unwanted untracked files,
You can use .gitignore to discard those files from the working directory, but that is not the only available option. .gitignore is perfect option to discard .project, target, .swp files permanently from the working directory. But what if we want to discard few files just once.
git clean is the solution, you can decorate this command by providing various parameters. Here in this post I'm focusing only -d, -n and -f options.
-d, will do a dry run on the working directory, so you can find out what are the files/directories going to be removed.
If you provide the -f option and remove -n based on the permission, this will actually perform the task of removing those listed files.
Make sure to double check while performing this trick.
Saturday, April 18, 2015
Monday, April 13, 2015
Access Raspberry Pi GPIO over internet
In my previous post I wrote about this neat framework for Raspberry Pi, WebIOPi. I was able to change the INPUT/OUTPUT direction, set status of the R Pi's GPIO remotely, over the local network.
In order to access WebIOPi over the internet we can use a simple tool called Weaved. You might have already installed "Weaved" during the WebIOPi installation else sign up here to get detailed instructions.
Follow instructions here to configure Weaved on top of your Raspberry Pi.
After configuring, you can list all devices as in above screen-shot and select the device you need to control. I only have one device registered here "media-center". I can get the publicly available URL of my device to control GPIO Pins over internet.
Still I will be able to access WebIOPi interface over the local network too.
I tried my same old example of measuring voltage difference between Ground PIN and PIN #12.
In order to access WebIOPi over the internet we can use a simple tool called Weaved. You might have already installed "Weaved" during the WebIOPi installation else sign up here to get detailed instructions.
Follow instructions here to configure Weaved on top of your Raspberry Pi.
After configuring, you can list all devices as in above screen-shot and select the device you need to control. I only have one device registered here "media-center". I can get the publicly available URL of my device to control GPIO Pins over internet.
Still I will be able to access WebIOPi interface over the local network too.
I tried my same old example of measuring voltage difference between Ground PIN and PIN #12.
WebIOPi - Raspberry Pi IoT framework
I spent hours with WebIOPi framework today and decided to keep this note as a future reference.
Few days back I decided to create a RPi media center where I can play media files available within any device connected to my home network. I used WebIOPi to control GPIO and communicate with my RPi back and forth remotely from my mobile device.
How to install WebIOPi
You need python and make sure to install python before moving forward.
i) You can directly download install from the pi store.
ii) I took the second method, Downloaded WebIOPi from sourceforge and execute,
tar xvzf WebIOPi-0.7.1.tar.gz
cd WebIOPi-0.7.1
sudo ./setup.sh
webiopi-0.7.1 is the latest version available at the moment.
After installing run sudo /etc/init.d/webiopi start to start the webIOPi service.
Let's do some basic stuff to see our installation progress. If you haven't specify the port number webIOPi service will start on the port 8000. So let's find the IP address of the RPi and browse, http://192.168.1.104:8000. Provide webiopi as the username and raspberry as the password.
Click on the GPIO Header link and browse, So i'm using Raspberry Pi B+ and this is the GPIO pin layout.
Let's use 1, 2, 6 PINs and verify this voltage values. I'm going to use a multimeter, two crocodile probes and two jumper cables for this.
Connect negative end to the ground PIN(6) and positive end to the PIN #1. Following is my voltage reading.
Disconnect the positive end from PIN 1 and connect to PIN #2,
There is a slight difference in the voltage reading, this can be due to the fact that I'm using wireless network adapter, mouse, keyboard attached to my RPi.
Let's toggle the WebIOPi OUT/IN button to change the GPIO direction/pin to change the output state and check multimeter reading one more time. For this I'm going to use PIN #12 so connected positive probe to the PIN #12. Then switched GPIO direction ans outout status like this.
This is my multimeter reading,
Great! Now I can control my Raspberry Pi's GPIO remotely. But here I accessed WebIOPi interface over the local network. I will put a note on "How to access WebIOPi interface over internet" very soon.
Wednesday, April 8, 2015
Working with forked git repo- proper way to sync- part2
After writing my previous blog post, I played around with github UI a bit and found another method to sync forked repository with the original. So decided to write down those steps here.
1. Browse your forked repository. I'm using https://github.com/udarakr/carbon-store/ repository which I have forked from https://github.com/wso2/carbon-store. You can notice the organization difference by looking at the URL.
You can notice that my carbon-store fork is 71 commits behind the original.
Then press the Pull Request link and you will get something similar to the following.
Since my fork is 1 commit ahead, by default github suggests me to create pull request using this commit. But my intension is different here.
So click head fork drop down and select a different one. Other than the one selected at the moment. So I choose splinter/carbon-store and this is my outcome. (Don't worry about this step, you can select whatever you want. This is a trick to change base fork to head fork and vice versa)
Now click on the base fork and select your forked repository/branch and then change head fork to the original. You will get something similar to the following.
Now press the Create pull request button and open a pull request.
Since I have 71 commits involved in this pull request I have to scroll a bit to find the Merge pull request button.
Press Confirm merge and you are done !!
Now if I browse my forked repository, I can see that I'm no more behind the original repo :)
1. Browse your forked repository. I'm using https://github.com/udarakr/carbon-store/ repository which I have forked from https://github.com/wso2/carbon-store. You can notice the organization difference by looking at the URL.
You can notice that my carbon-store fork is 71 commits behind the original.
Then press the Pull Request link and you will get something similar to the following.
Since my fork is 1 commit ahead, by default github suggests me to create pull request using this commit. But my intension is different here.
So click head fork drop down and select a different one. Other than the one selected at the moment. So I choose splinter/carbon-store and this is my outcome. (Don't worry about this step, you can select whatever you want. This is a trick to change base fork to head fork and vice versa)
Now click on the base fork and select your forked repository/branch and then change head fork to the original. You will get something similar to the following.
Now press the Create pull request button and open a pull request.
Since I have 71 commits involved in this pull request I have to scroll a bit to find the Merge pull request button.
Press Confirm merge and you are done !!
Now if I browse my forked repository, I can see that I'm no more behind the original repo :)
Working with forked git repo- proper way to sync
Thought of writing this simple post after seeing one of my colleagues way of updating forked git repo. This guy used to delete the forked repo and fork again to get latest updates (:D Yes I'm talking about you).
The proper way of syncing is pretty simple (may be not simple as delete/fork method). Let me explain this in two steps.
1. Configure remote repo for our fork
git remote -v command will list the existing remote repositories.
Now run git merge upstream/release-2.0.0. this makes my local release-2.0.0 branch sync with the upstream repository.
The proper way of syncing is pretty simple (may be not simple as delete/fork method). Let me explain this in two steps.
1. Configure remote repo for our fork
git remote -v command will list the existing remote repositories.
udara@udara-home:~/wso2/git/fork/carbon-apimgt$ git remote -vYou can add a new remote repository by providing git remote add upstream command.
origin git@github.com:udarakr/carbon-apimgt.git (fetch)
origin git@github.com:udarakr/carbon-apimgt.git (push)
udara@udara-home:~/wso2/git/fork/carbon-apimgt$ git remote add upstream git@github.com:wso2/carbon-apimgt.gitNow if I run the git remote -v command again,
udara@udara-home:~/wso2/git/fork/carbon-apimgt$ git remote -v2. In order to sync your fork run git fetch upstream command.upstream is the name you provided earlier while configuring the remote.
origin git@github.com:udarakr/carbon-apimgt.git (fetch)
origin git@github.com:udarakr/carbon-apimgt.git (push)
upstream git@github.com:wso2/carbon-apimgt.git (fetch)
upstream git@github.com:wso2/carbon-apimgt.git (push)
udara@udara-home:~/wso2/git/fork/carbon-apimgt$ git fetch upstreamMake sure you switch to the correct branch (in my exercise it's release-2.0.0) . You can verify that by running git branch -a command.
remote: Counting objects: 355, done.
remote: Compressing objects: 100% (173/173), done.
remote: Total 355 (delta 48), reused 5 (delta 5), pack-reused 80
Receiving objects: 100% (355/355), 256.29 KiB | 56.00 KiB/s, done.
Resolving deltas: 100% (53/53), done.
From github.com:wso2/carbon-apimgt
* [new branch] master -> upstream/master
* [new branch] release-1.3.0 -> upstream/release-1.3.0
* [new branch] release-1.3.1 -> upstream/release-1.3.1
* [new branch] release-1.3.2 -> upstream/release-1.3.2
* [new branch] release-1.3.3 -> upstream/release-1.3.3
* [new branch] release-1.9.0 -> upstream/release-1.9.0
* [new branch] release-2.0.0 -> upstream/release-2.0.0
Now run git merge upstream/release-2.0.0. this makes my local release-2.0.0 branch sync with the upstream repository.
udara@udara-home:~/wso2/git/fork/carbon-apimgt$ git merge upstream/release-2.0.0
Updating a68742d..4000cbd
Fast-forward
.../org/wso2/carbon/apimgt/api/APIProvider.java | 29 ++
.../wso2/carbon/apimgt/impl/APIProviderImpl.java | 466 ++++++++++++++++++++-
.../src/main/resources/config/rxts/api.rxt | 107 ++---
.../resources/apipublisher/scripts/apipublisher.js | 29 +-
4 files changed, 548 insertions(+), 83 deletions(-)
Friday, April 3, 2015
Simple Optocoupler sample (Introduction to Optocouplers)
What is an Optocoupler? It allows you to connect two circuits which do not share a common power source. There is a small LED inside which will illuminate to close and internal switch when you apply voltage. So this will act as a switch in the second circuit.
I'm going to use following simple arduino sketch to blink a LED connected to a different circuit with the use of a 4N35 optocoupler.
After uploading above sketch to my arduino following is my outcome :)
I'm going to use following simple arduino sketch to blink a LED connected to a different circuit with the use of a 4N35 optocoupler.
int optocouplerPin = 2;I have prototyped following circuit and connected one end to an arduino uno at the same time other end to a 3V power source.
void setup()
{
pinMode(optocouplerPin, OUTPUT);
}
void loop()
{
digitalWrite(optocouplerPin, HIGH);
delay(1000);
digitalWrite(optocouplerPin, LOW);
delay(1000);
}
After uploading above sketch to my arduino following is my outcome :)
Labels:
4N35,
arduino,
DIY,
electronics,
hobby,
optocoupler,
prototype,
sketch
Subscribe to:
Posts (Atom)