This semester went so fast and we are reaching the finals week soon. Our goal was to finish our Unix project as soon as we can so that we can study for our exams. Our project incorporates a mixture of command line interfacing and parsing data from on line. Our group is building a “fantasy football application” in Python. When the user logs in with his user name and password, the data from his fantasy football team will be displayed. This is done by parsing the data that is available on yahoo sports web page when a registered user logs in. The data is then displayed accordingly based on user preferences. We still haven’t finished the park of User interface through command line, but we are pretty much sure that we could finish this by this weekend. In addition, I am also working on the processes home work, but it seems really tough.
In ECE3574, we have finished our project on temperature calibration using message passing. I was not able to complete the whole thing even after taking a day of extension. Our next project is finding primer numbers using Qt designer. Hopefully, I will finish this assignment along with the Unix assignment.
My latest project in ECE 3574 is about cooperative process. The purpose of our assignment to communicate between 2 different files which includes 5 processes altogether. Cooperative process is the idea of of passing/retrieving information within the processes. There are two ways that this can be done:
1) Shared Memory
In shared memory, all communicating processes must establish a region of shared memory. Each processes then reads/writes to this shared memory location. It is important to make sure that two processes may read and write at the same time. A classic example of shared memory problem could be encountered during a producer consumer problem. The producer produces while the consumer consumes the information. The best place to put the data would be in the shared memory location which could be accessed by both the producer and consumer.
There is no memory allocated in message passing. A small mail box with a corresponding mail box number is attached to the processes. The processes send and receive data through this mailbox. A communication link must be established for two processes to communicate. My current project focus of Message Passing which utilizes Posix Message Queues.
While doing research for the futures paper, I found some information about FTP. FTP is also called as File Transfer Protocol. We are aware that Unix is a server based operating system. There is one central server and the data of this server can be accessed by several other computers which have access to the parent server. Often times, the access is restricted by enforcing a user name and/or a password. Each computer is like a branch where the server acts as the root of this tree.
FTP is the way to transfer data to and from these server. It can be very beneficial in office where the main data might need to be accessed by all the employees. There is a list of FTP commands that could be found on Google. Some of these commands are:
DELE: Delete File
MKD: Make directory, etc.
All these commands are typed in the Linux terminal. There are several other ways of transferring files and FTP is one of the major and famous one out there.
Look at this link for several other FTP commands:
Even though I used make in ECE3574, I never really knew what was going inside of it. We compiled the programming in QT by typing
1) qmake -project
The three above commands compiled all the C++ and header files, and created an application which was run by ./(application name). After doing the homework for Unix, I finally learned what goes inside of a make file. Make might not be beneficial when compiling one or two files, but it is very helpful in real world problems where it is required to compile 100’s of files. It saves time and time is a big factor in large companies. I initially struggled doing the make file, but the exercise on make assisted a lot and made the whole concept look fairly easy.
I also finished my Tic-Tac-Toe game for ECE 3574. It took a considerable amount of time, but the functionality of the program was working fine. The project required us to save passwords as Sha1 encryption. I initially did not how to encrypt this message, but upon reading QT’s documents, it made the projects seem easy. Regardless, it took a considerable amount of time. In addition to that, we are also learning about process and threads. These concepts are fairly “alien” to me, since I have never used them.
Also, I believe that the format of this class is perfect. The fact that its a point based system enables us to not work on all the projects, yet still get a good grade. I am just worried, because I haven’t even reached 300 points. These are my updates for this week.
Even though we haven’t had our class for two weeks, the midterm and other projects helped me a lot to learn Ubuntu Operating System, Ubuntu terminal, Python etc. There is still a long way to go, but I am in the process of getting there. In addition, we got our grades for the first exam. I got a better grade that what I anticipated. Looking at the schedule, I see that we are behind in schedule, mostly in projects. I have been experimenting with some new Unix commands in the terminal. Data/ files manipulation in Ubuntu is so much easier than windows in Unix terminal. Shortcut keys such as cp and mv enables you to make copies and pasted them in directories which can also be created by typing mkdir. I am looking forward to do more assignments in C++.
For ECE 3574, I completed my first GUI project. It was a simple QWidget which had four buttons. Each button had a signal which connected to a corresponding slot and performed associated action. In addition to that, our 2nd GUI project was assigned as well. HW5 demands us to implement a log in page where the information is stored in password.dat file. If the user enters the password correctly, the user is then directed to play a tic-tac-toe game. Meanwhile, there are other frames which could register a new user, change password, display welcome screen, etc. This project might be tough, but using Unix Philosophies of modularity might simplify this project. These are my updates for this week. Check back next week for more updates.
We finally had our first midterm for ECE 2524. Before the day of the exam, I went over the lecture notes and sample exercises for the exam. I felt pretty confident, but the exam did not end up what I was expecting. Downloading the file, working on the file i.e. solving all the questions, and uploading the file back up on scholar took too long. In addition, the instructions/questions or the guidelines for the exam were so long that it took about 20-25 minutes to read and comprehend the questions. I did not think that the exam was tough, but the time spent on others things did not allow me to work on the actual test. As a result, I had to rush through the exam and make guesses through out the exam. There was also a part where the function to record script wasn’t right. It took me three tries to figure out that the syntax was wrong, so I was not able to show my work for question 4. Since this class is a point based system, I believe that I could still get a decent grade if possible an A, if I do well on the other projects.
As far as ECE 3574, we got our first GUI assignment. The project doesn’t seem that difficult, if we use the QT creator, but the instructions specify us not to use it. In addition, we have to use signal and slots to map the corresponds parent elements of the Qwidget to its child elements. I think this might be tricky. Well, these are my updates for this week. Please check back next week for more updates.
The first few Python projects weren’t as difficult as the latest homework(homework 4). Despite having a decent knowledge in Python syntax, homework 4 is taking a fair bit of time. We have to create a mini language in Python. The basic functionality of the program involves getting keywords from the user commands and executing them such as adding files, removing, sort, search, etc. So far I have implemented two of the functions and it was very tough doing that. Initially, I created a list to store the data. I later realized that this could improved by having a dictionary which stores two values for each node of the list instead of one. This enables us to have the data variable name in one field and the content in the other. After making slight modifications to the existing code, I was able to implement it using both list and a Dictionary. I am planning on finishing this project today or tomorrow based on my workload.
For the first time, I have projects due for Software Engineering and Unix within two days. The project for Unix is due on Wednesday and the project for Software engineering is due on Friday. For the software engineering project, I have to loop across Directories and print out files and associated memory of each files and directories. The Qt libraries have several built in functions that we can use to iterate through the directories and files.
Previously, the sound was not working while I was on the Unix system. After doing some research and installing some drives, it was finally working. I later realized that the sound was not coming from the head phone jack. Presently, I am working on that issues. These are my updates for week 3/4> Please check back next week for a new post.
Upon installing Ubuntu over the summer, I was excited to test its functionality. I was eager to see if there were any differences between Ubuntu’s terminal and Microsoft Dos. This excitement only lasted for two days as Ubuntu was not able to boot when I started the computer. I installed Ubuntu 12.04 by following the directions on their home page. The error message said “missing wubuilder…”, and the computer froze on the log in screen. I did some research by reading several blogs, but ended up with no simple solution. Consequently, I decided to re install Ubuntu. It worked normal as before, but I decided to Await till the class begin so that I won’t mess up again.
The first day of class was more about history and the fundamentals of Unix. I was disappointed to learn about the history, but I realized that it was the best way to start. On the weekend, I sat down and completed the first exercise which taught the basic commands. The commands were straight forward and easy to learn. I also believe that this class would help me get a better grade in ECE 3574(Into to Software Engineering) which also uses Unix. My first week of actual Unix experience went really well and I am eager to learn more command and the application of Unix in multiple disciplines.