this course is about open source. to do the open source work, the important things are interest, communication, finding bugs, coding, and testing.
I learnt how to use git and github. the git commands:
- git clone
- git remote
- git checkout
- git status
- git diff
- git add file
- git commit
- git push
- git log
- git branch
- git rm
- git fetch
- git pull
- git merge
- git rebase
- git show
- git grep
- git reset
how to fix bugs:
- reproduce the bug, usually following the instruction.
- position the bug, using the key words and git grep to locate the posibility bug
- debug the project to confirm the bug
- fix the bug
- test the code
- push the fixed code to git, ask a pull request
some tools to format the code:
eslint, travisCI, heroku, codycy
this project was the one I wanted to do most. But I failed. It is too complex.
it cost me too much time to do it. I do not have enough time to do the third one.
first, to build the notepad++ is difficult. It cost me almost two days to complete this. reading the instructors, and the discussion of the problem. I find that issue #1228 solved the problem. (https://github.com/notepad-plus-plus/notepad-plus-plus/issues/1228) After following the instruction step by step, I could build the project at last.
the bug I wanted to fix is “‘default directory’ setting is ineffective #5064” (https://github.com/notepad-plus-plus/notepad-plus-plus/issues/5064). the bug can be reproduced. in preferenceDlg.cpp I found these three classes may be useful.
- DefaultNewDocDlg _defaultNewDocDlg;
then I go to save as page. I want to find if there is relation of the saving path and the classes. none
I searched the “new” file page. still cannot trace where the current fold comes from.
the default fold should be stored in somewhere, and each time when the “new file” runs, it should check whether the setting is default fold or the current fold and using the setting to open a new file. The “new file” should be the most important route to solve the problem. Unfortunately, a wired thing happened: I can not reproduce the bug anymore. I had to give up this issue. and because this project is too big, I do not have enough time to do another one.
I found this project in github.com using c++, latest. And I think I can do the second problem. I spent a whole day to finish it.
the problems are the follows:
- char* or string
- rand() and srand
- calculate the index
- string split and convert to int
- getline(cin, string)
- design the class.
with the help of google I solved them.
the rest is the git things. it is easy.
these two tools are used to check the code format. useful tools. use git account to log in and when there is pull request, it will check the code.
the pull request
HoundCI did not find anything, but Codacy found. They are using different rules.
They all use the default standard format. If you use the different format, you have to use the .hound.yml to config.
The reason I choose this project is C++.
Until now, the biggest challenge is compiling. After cloning the project, the next step is running the project. Following the README, building the notepad++.exe first. Oops, the error is ‘TRACKER : error TRK0005: Failed to locate: “CL.exe”‘. Looking for the solution online. The possible solutions are 1. %PATH% environment variable. 2. VS should install the c++ desktop tools. 3. No cl.exe in the installation directory. 4.”Platform Toolset”, under project Properties > General settings, is set to the correct Visual Studio version. Under each solution, there is someone said that it worked. So I tried one by one. Only the last one was fit for this project. This error is because these are too many versions of VS installed on the computer. For some unknown reasons, the platform toolset is not using the right version.
The second error is ” The Windows SDK version 8.1 was not found.”. This one is simple. As the error above, just using the project properties> General settings, change to the right Windows SDK version.
notepad++ compiled completely.
Now To build SciLexer.dll with boost: follow the instruction, first download the Boot source code v1.55, run BuildBoost.bat with -x64. run nmake. I stuck at the last step of running nmake. I check the issue of the project. There are altogether 4 issues about the nmake. Read them one by one. At last, I found that ClaudiaFrank gave the very detail solution of compiling the Scilexer.dll.
Just in case you wanna give it another try with VS2017, the steps I’ve done are
- Download/Clone npp repository to your harddisk
- Start VS 2017
- Open Project/Solution and open the file
Confirm the question about GIT soure control
-> now you should see that Notepad++ (Visual Studio 2015 – Windows XP) has been added to Solution Explorer
- add scintilla project by right clicking Solution->Add->Existing project
and open file DOWNLOADED_REPO\notepad-plus-plus\scintilla\win32\SciLexer.vcxproj
- Save current solution
- update boost nuget packages
Tools->Nuget Package Manager->Manage Nuget Packages for solution
and confirm to update the two boost packages
wait some time until you see the ========== Finished ========== message
- open file DOWNLOADED_REPO\notepad-plus-plus\scintilla\win32\SciLexer.vcxproj in Notepad++
and delete the 4 lines referring to boost 1.58 -> save it
- confirm to reload solution in VS2017
- right click on SciLexer project -> Build ==>> done
I did all, but finally, when I compile the two projects, they all failed. There is one link error and one “no ‘object’ file generated “.
The second job will be upload some templates of resume in HTML format.
This job needs more research. I need to look for the templates online and learn how the template designed. Then design a set of template myself.
I wanted to add the timetable of the courses to Seneca blackboard. But I can not get the data. The Seneca website does not have the API. I have to change my mind.
If I open the default page of Seneca website and want to login to my email, I have to login to the blackboard first. After login, there is the email link. It is not convenient. So I want to add the email link to the default page of Seneca web page and make it as an extension for chrome.
After the hacktoberfest, I make progress in the following areas:
- using gitt
- fixing bugs
- adding features
During the last term, I used git to do the group project of PRJ666. I only can clone and push. Sometimes I even can not push. I have to send my work to another group member to help me to submit the codes. Now I can use git skillfully. I still need more practice.
To fix a bug, the first thing is to reproduce the bug. Then locate the codes which make the bug. Understand how the bug forms. Then fix the bug. Finally, test the code. Most important things are reproducing, locating, testing.
To add features, it is important to understand how the feature works. Follow the design and look for the help online. Of course, testing is necessary.
Check the issue list regularly. Discuss with others. Test the project to look for the bugs.
This one is really easy. I do not have to much time to do a complicated one because I have two midterms this week.
When the owner merged the project, he kept the two file which is not necessary.
For me, just go back to master branch, pull from the remote upstream master, go to branch issue-8, delete the file, commit it again and start a new pull request.
This one is really difficult to do.
I am not familiar with the audio processing.
The first thing is looking for the library of the audio processing. There are many libraries about Fast Fourier Transform(FFT). Finally, I decided to use “Accord” because I found that this one was the most similar to the design after I tested it.
The second is download the library, and study how to use it.
The third is coding. Input a wave file, read data from it, use FFT to transform the data, get the output data, display the data. (use “ScottPlot” to display.)
The last thing is testing. use the inverse Fast Fourier Transform(IFFT) to test. If the data of output IFFT is same with the data of input FFT, the Fast Fourier Transform is successful.
The most difficult is reading the wave file. I have to process the head file first. After the head, the data is used as the input of FFT.
The limitation of this program is now it can only process the .wav file.