본문 바로가기

DEV

정렬 알고리즘 시각화 JAVA 소스

결론 부터 말하자만 이 프로젝트는 실패했다.

실패는 성공의 어머니라고 ... 누가 그랬던가 ? 실패한것도 경험이기때문에 흔적을 남겨놓는다.


2017년 12월 14일 오전 K씨가 다음 동영상을 보여주었다.


Sorting Algorithms in 6Minutes (6분 안에 15개의 정렬 알고리즘)

http://panthema.net/2013/sound-of-sorting/


정렬알고리즘을 이미지화 하여 보여주는데 ... 오... 이뻐 이뻐 


그리고 그걸 본인이 어제(2017-12-13) 구현 하려고 했는데 동영상처럼 단계별로 보여주는 것이 아닌

시작과 끝만 나온단다. ㅋㄷㅋㄷ


해당 동영상 하단에 동영상 개시자의 설명이 나오고 그곳의 링크를 타고 들어가 공개된 소스를 받아보았다.

sound-of-sorting 0.6.5 (current) published 2014-05-15
Source code archive: sound-of-sorting-0.6.5.tar.bz2 sound-of-sorting-0.6.5.tar.bz2 (141 KiB) Browse online
Win32 binary: sound-of-sorting-0.6.5-win32.zip sound-of-sorting-0.6.5-win32.zip (1.58 MiB)
Linux binary: sound-of-sorting-0.6.5-linux32-64.zip sound-of-sorting-0.6.5-linux32-64.zip (1.61 MiB)
dynamically linked with Debian Etch 32-/64-bit


Win32 binary 를 다운받아 풀어보니 exe 파일이 있다. 실행시켜보니 정상적으로 잘 작동한다.



다음으로 sound-of-sorting-0.6.5.tar.bz2 를 클릭해서 소스를 받아보았다.

음 ...

C++ 로 ... 만들어졌내 ?


그렇다면 ... 


1. 공개된 소스를 구동시킨다.

2. 분석

3. 자바로 만들어 재 공개 해야지 ~




왕년에 window 에서 MFC 프로그레밍을 한적이 있었던 경험이 있어서 자신있었다. 결국 실패했지만... 일단비쥬얼 스튜디오를 설치해야겠다고 생각했다.


Visual Studio 설치는 아래 블로그를 참조했다.

http://swprog.tistory.com/entry/Visual-Studio-2017-%EC%84%A4%EC%B9%98%EC%99%80-C%EC%96%B8%EC%96%B4-%EC%98%88%EC%A0%9C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%9E%91%EC%84%B1

설치 예제 블로그 가 허접하거나 없었다면 내가 했어야 하는데 설명 및 예제가 훌륭해서 skip

다운받고 설치하려니 .NET 프레임워크가 있어야 한단다.

https://go.microsoft.com/fwlink/?linkid=840938




win32 프로젝트를 하나 만들고 소스파일 복붙하니 걍 알아서 찾아들 들어가졌다.

그리고 ctrl + f5 하니 오류


사이트를 천천히 다시 읽어보았다.

The demo is implemented using the cross-platform toolkits wxWidgets and SDL, can be executed on Windows, Linux and Mac, and runs in real time.

이 데모는 크로스 플랫폼 툴킷 wxWidgets 및 SDL을 사용하여 구현되었으며, Windows, Linux 및 Mac에서 실행될 수 있으며 실시간으로 실행됩니다.


음...  wxWidgets and SDL ???


구글 검색 후 https://www.wxwidgets.org/  찾아들어가서 download 받았다.

wxWidgets 를 설치하니 별다른실행파일 없이 C 드라이브에 wxWidgets-3.1.0 폴더가 생성되어 있다.


다음 블로그들을 참조해보았다.

http://dev-skill.tistory.com/59 뭔소린지 모르겠다. 안된다.

http://liveupdate.tistory.com/198 이건 또 뭔가 ? 새로운 새상이다.

http://yiunsr.tistory.com/638 이것이 vs 위에 wxWidgets 한것 같아 보인다. ... 버전이 틀리다. 그렇다고 버전을 다운시키고 싶지 않다.


일단 wxWidgets 의 예재를 실행 시켜보려 했다.

windows SDK 버전 8.1 이 없단다. 다운받아 설치해보자..

https://developer.microsoft.com/ko-kr/windows/downloads/windows-8-1-sdk


무수히 많은 오류 ... wxWidgets .... 모르니  모를수 밖에 ? 알때까지 하는거다


https://forums.wxwidgets.org/viewtopic.php?p=142017#p142017 

찾다 찾다 위 링크에 들어가서 영어를 번영 한 번역문을 보고 시키는대로 따라해보았다.... 


Re: link error in Visual Studio 2010

Postby doublemax » Thu Mar 29, 2012 4:21 pm

Using monolithic libs is very unusual under Windows and none of the samples use it, so i would suggest against it.

Also, tutorials and wiki pages get out of date pretty quickly, so here's my recommendation on how to proceed:

Get the latest source package from the wxWidgets site. Unless you have a specific reason to use 2.8.x, go for 3.0.1 (or whatever the latest version is) as it comes with more up-to-date project files for Visual Studio.

Make sure you get the source package with DOS line endings, VS doesn't under stand Unix line endings.

After unpacking, navigate to <wxdir>/build/msw/ and open "wx_vc10.sln".

You usually need to build only two different configuratons:
"debug" and "release" for static linking of wxWidgets (my recommendation)
or
"DLL debug" and "DLL release" to build wxWidgets into DLLs.

These should build out of the box. When building the "DLL" versions, you might have to build several times, as some libaries depend on others, but the build order is incorrect.

If the libraries build correctly, navigate to <wxdir>/samples/minimal/ and open "minimal_vc9.vcproj". Select the same configuration that you used for the library and build.

If that was successful, copy the minimal sample and start your own project from there.
Last edited by doublemax on Wed Aug 06, 2014 8:58 am, edited 1 time in total.
Use the source, Luke!

Re : Visual Studio 2010의 링크 오류

Postby doublemax»2012 년 3 월 29 일 목요일 오후 4:21


모 놀리 식 libs를 사용하는 것은 Windows에서 매우 드문 경우이며 샘플 중 아무 것도 사용하지 않으므로 반대 의견을 제시합니다.


또한 튜토리얼과 wiki 페이지는 꽤 빨리 구식이됩니다. 그래서 진행 방법에 대한 제 권장 사항은 다음과 같습니다.


wxWidgets 사이트에서 최신 소스 패키지를 다운로드하십시오. 2.8.x를 사용해야하는 구체적인 이유가없는 한 Visual Studio의 최신 프로젝트 파일이 포함되어 있으므로 3.0.1 (또는 최신 버전이 무엇이든간에)으로 이동하십시오.


DOS 줄 끝이있는 소스 패키지를 얻으십시오. VS는 Unix 줄 끝을 기다리지 않습니다.


포장을 풀고 <wxdir> / build / msw /로 이동 한 다음 "wx_vc10.sln"을 엽니다.


일반적으로 두 가지 구성 만 구성해야합니다.

wxWidgets의 정적 연결을위한 "디버그"및 "릴리스"(필자의 권장 사항)

또는

"DLL 디버그"및 "DLL 릴리스"를 사용하여 wxWidgets를 DLL에 빌드합니다.


이것들은 상자 밖으로 만들어야합니다. "DLL"버전을 빌드 할 때 일부 라이브러리는 다른 라이브러리에 종속되기 때문에 여러 번 빌드해야하지만 빌드 순서가 잘못되었습니다.


라이브러리가 올바르게 빌드되면 <wxdir> / samples / minimal /로 이동하고 "minimal_vc9.vcproj"를 엽니다. 라이브러리 및 빌드에 사용한 구성과 동일한 구성을 선택하십시오.


이것이 성공했다면, 최소한의 샘플을 복사하고 거기에서 자신의 프로젝트를 시작하십시오.

2014 년 8 월 6 일 오전 8:58 am, doublemax에 의해 마지막으로 편집 됨. 총 1 회 편집 됨.

근원을 사용하십시오, 루크!


구글 번역기 돌려서 

[포장을 풀고 <wxdir> / build / msw /로 이동 한 다음 "wx_vc10.sln"을 엽니다.] 이부분과

[<wxdir> / samples / minimal /로 이동하고 "minimal_vc9.vcproj"를 엽니다.] 이 부분 설명대로 한 후 

minimal 에 위 sound-of-sorting-0.6.5.tar.bz2 압축을 풀어 다운 받은 소스를 통째로 집어 넣고 컴파일 해 보았다.




앜 !!! 이번엔 SDL 이 없단다.

http://www.libsdl.org/download-1.2.php

dll 이 다운받아졌고 추가는 다음 url 을 참조 했다. http://tibyte.kr/231




자 ... 거의 끝나간다 !! 내 ... 인내심이 ...



식별자 "__builtin_ctz"이(가) 정의되어 있지 않습니다.


__builtin_ctz 은 gcc 에서 재공 되는 내장 함수 ...


gcc 에서 재공되는 컴파일을 사용했구나 ... 이건 어떻게 하는걸까 ?


Visual Studio Code 와 MinGW를 사용하여 C/C++ 개발 환경 만들기

http://webnautes.tistory.com/1158

Visual Studio Code 좋아는 보이는데 이것은 또 다른 도전이고 점점 산으로 가는듯 하여 일단 스킵


여기에 리눅스 설정이 나온다.

아 ... 이건 또 뭔가 ? 좋은 내용인것 같지만 이것역시 스킵


검색하다가 다음 결과를 얻었다.

https://github.com/ejnahc/APSS/blob/master/16.BitMask/BitmaskUnion.cpp


그렇다. gcc/g++ 에서 사용하는 function 이라면 Visual C++ 용도 있겠지!!


__builtin_ctz 를 사용해서 문제되는 소스를 수정해서 다시 컴파일



이 오류 메시지 보는 순간


이글이 끝나는 순간이다. 이런 메시지는 ... 느낌상 안좋다. 처음부터 어디서 부터 잘못되었는지 감잡을 수 없게 되었다.

다시 원점으로 돌아와서 이제야 소스를 다시 보았다.

어찌생각해보면 이걸 가장 먼저 발견해야했을지도 모르겠다.

Makefile 의 존재 ... 이건 아니다.

Makefile 이 있다는것은 컴파일쪽에 뭔짓을 했는지 저걸 열어서 분석해봐야한다는거다.

이 Makefile 은 하나로 안끝난다. src 폴더 안에도 또 있다. 그렇다는건 이 둘이 서로 대화하면서 컴파일할거 같은데 이건 아니다.


다시 본질 원점으로 돌아가서 이짓을 왜하고 있는지 되집어 보았다.


난 단지 정렬알고리즘을 그래프로 시각화 한 java 소스를 얻고 싶다.



그렇게 원점으로 돌아와 다시 유트브로 돌아와 해당 동영상을 다시 봤다.


그리고 우측 다음 동영상 쪽에 더 그럴싸한 동영상을 찾았다. 2017-12-17

https://www.youtube.com/watch?v=ZZuD6iUe3Pc


Viktor Bohush 2014.4.24

source code : https://github.com/vbohush/SortingAlgorithmAnimations


github 에서 소스코드 다운받고 eclipse 열고 java 프로젝트 하나 만든 후 소스 복붙하고 run 해보았다.

걍 동작한다.

그리고 내가 원하던대로 알고리즘들을 모두 보여주고 한눈에 비교된다. 이편이 더 낳다.

정렬하면서 소리나는거 ... 음... 소리 ? 이건 그냥 버릴란다.


각 정렬 별 정의를 설명할 자신은 없어서 정렬검색결과를 링크한다.

Selection Sort : 선택정렬

Shell Sort : 셸 정렬

Insertion Sort : 삽입 정렬

Merge Sort : 합병 정렬

Quick Sort : 퀵 정렬

Heap Sort : 힙 정렬

Bubble Sort : 거품 정렬

Comb Sort : 빗 정렬 ???

Cooktail Sort : 칵테일 정렬




교훈 ?

오두방정 떨지 말것

충분히 정말 충분히 검색할 것


결국 실패로 끝났지만. 언젠가 makefile 이거 한번 징하게 파리라 ... 오픈소스는 분석은 안할지라도 최소한 돌릴 수는 있고 싶다.


'DEV' 카테고리의 다른 글

XLGantt(엑셀간트) | 엑셀 일정관리  (2) 2018.01.02
[ORACLE] MERGE INTO SEMPLE  (0) 2018.01.02
9. Camera Calibration (카메라 보정)  (0) 2017.12.10
8. Object Detection (객체 감지)  (0) 2017.12.10
7. Image Segmentation (이미지 분할)  (0) 2017.12.10