gpt와 검색을 버무려서~

 

pip로 대~~~충 flask 설치하고

Flask 에 static_url_path와 static_folder 를 설정해서 정적으로 서빙할 경로를 지정한다.

template_folder는 template engine를 위한 경로 같긴한데, 지금은 그걸 하려는게 아니니 패스~ 하고

 

/ 로 요청이 들어오면 index.html을 던지도록 라우터 하나 설정하고

나머지는 자동으로 static 경로 하위에서 제공

그리고 /api 쪽은 별도로 라우터 지정해서 2개의 api를 생성해준다.

 

/app.py

from flask import Flask, jsonify, render_template

app = Flask(__name__,
            static_url_path='', 
            static_folder='static',
            template_folder='templates')

@app.route('/')
def serve_index():
    return app.send_static_file('index.html')

# REST API 라우트
@app.route('/api/hello')
def api_hello():
    return jsonify({"message": "Hello, this is a REST API response!"})

# 또 다른 REST API
@app.route('/api/sum/<int:a>/<int:b>')
def api_sum(a, b):
    return jsonify({"a": a, "b": b, "sum": a + b})


if __name__ == "__main__":
    # 디버그 모드 실행
    app.run(debug=True)

 

/static/index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Flask Static + REST API</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>Hello Flask</h1>
    <p>이 페이지는 Flask가 제공하는 정적 웹입니다.</p>

    <button onclick="callApi()">API 호출</button>
    <p id="result"></p>

    <script>
        async function callApi() {
            const res = await fetch("/api/hello");
            const data = await res.json();
            document.getElementById("result").innerText = data.message;
        }
    </script>
</body>
</html>

 

/static/test.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Flask Static + REST API</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>this is test</h1>
</body>
</html>

 

/static/style.css

body {
    font-family: sans-serif;
    background: #f0f0f0;
    padding: 20px;
}
h1 {
    color: darkblue;
}

 

[링크 : https://stackoverflow.com/questions/20646822/how-to-serve-static-files-in-flask]

 

 

$ python3 app.py
 * Serving Flask app 'app'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 997-788-229

 

웹에서 접속하면 아래처럼 뜨는데

보니 template 엔진을 이용해서 치환하도록 해놨어서 css가 안 읽혔군

127.0.0.1 - - [29/Sep/2025 10:48:26] "GET / HTTP/1.1" 304 -
127.0.0.1 - - [29/Sep/2025 10:48:26] "GET /{{%20url_for('static',%20filename='style.css')%20}} HTTP/1.1" 404 -

 

그럼 template 안쓸꺼니 수정해보자

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Flask Static + REST API</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>Hello Flask</h1>
    <p>이 페이지는 Flask가 제공하는 정적 웹입니다.</p>

    <button onclick="callApi()">API 호출</button>
    <p id="result"></p>

    <script>
        async function callApi() {
            const res = await fetch("/api/hello");
            const data = await res.json();
            document.getElementById("result").innerText = data.message;
        }
    </script>
</body>
</html>

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Flask Static + REST API</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>this is test</h1>
</body>
</html>

 

이쁘게 잘나온다. 그런데 처음 접속하면 static web이라도 제법 느린데 캐싱이 안되나?

 

localhost:5000/

localhost:5000/index.html

localhost:5000/test.html

localhost:5000/api/hello

localhost:5000/api/sum/2/3

'Programming > python(파이썬)' 카테고리의 다른 글

python switch-case -> match-case  (0) 2025.10.11
python __name__  (0) 2025.09.29
python simsimd  (0) 2025.08.28
python 원하는 버전 설치 및 연결하기  (0) 2025.08.26
pip 패키지 완전 삭제하기  (0) 2025.08.13
Posted by 구차니
Programming/web 관련2025. 9. 5. 17:42

'Programming > web 관련' 카테고리의 다른 글

restful API  (0) 2025.07.15
html custom tag  (0) 2025.05.14
polypill  (0) 2025.03.05
css 캐로젤  (0) 2024.11.12
webgl + three.js를 이용한 GL 공부하기 (feat 클로드)  (0) 2024.10.18
Posted by 구차니

python 자체적으로 auto vectorization을 지원하는지 모르겠고

-O2 밖에 안되서 어떻게 될지 모르겠지만 혹시나 cython 이라던가 이쪽에서 지원하지 않을가 해서 검색해보니

먼가 하나 나와서 테스트 중

 

설치는 간단하고

# pip3 install simsimd
Collecting simsimd
  Downloading simsimd-6.5.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.metadata (70 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.5/70.5 kB 758.3 kB/s eta 0:00:00
Downloading simsimd-6.5.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (563 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 563.2/563.2 kB 4.6 MB/s eta 0:00:00
Installing collected packages: simsimd
Successfully installed simsimd-6.5.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[링크 : https://pypi.org/project/simsimd/]

 

확인도 간단한데

그나저나.. arm aarch64 에서는 neon이 활성화 되는데

10세대 모바일 프로세서에서는 왜.. haswell 이라고 하나만 활성화 될까? skylake 정도는 활성화 되어야 하는거 아닌가?

imx8mp aarch64 i7-10510U x64
>>> import simsimd
>>> print(simsimd.get_capabilities())
{'serial': True, 'neon': True, 'sve': False, 'neon_f16': False, 'sve_f16': False, 'neon_bf16': False, 'sve_bf16': False, 'neon_i8': False, 'sve_i8': False, 'haswell': False, 'skylake': False, 'ice': False, 'genoa': False, 'sapphire': False, 'turin': False, 'sierra': False}
>>> import simsimd
>>> print(simsimd.get_capabilities())
{'serial': True, 'neon': False, 'sve': False, 'neon_f16': False, 'sve_f16': False, 'neon_bf16': False, 'sve_bf16': False, 'neon_i8': False, 'sve_i8': False, 'haswell': True, 'skylake': False, 'ice': False, 'genoa': False, 'sapphire': False, 'turin': False, 'sierra': False}
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple pml ept_mode_based_exec
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data retbleed eibrs_pbrsb gds bhi

 

그런데 dot 이랑 cosine이랑 무슨 차이지 계산한 값이 많이 다른 느낌인데..

simsimd.cos()는 1 에서 빼줘야 맞다.

Posted by 구차니
Programming/node.js2025. 8. 26. 17:08

app.asar 이라는 파일이 있어서 찾아보니 electron의 컴파일(?)된 파일이라고 한다.

압축되어 있다는데 data 파일로만 나와서 zip 등으로 풀순 없고

npx asar extract 명령을 통해서 특정 디렉토리에 풀면된다.

 

$ npx asar extract app.asar asarResources
Need to install the following packages:
  asar
Ok to proceed? (y) 
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated @types/minimatch@6.0.0: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed.
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.

[링크 : https://til.jooy2.com/language/javascript/library-and-frameworks/electron/unpack-asar-file-format]

[링크 : https://richong.tistory.com/447]

 

$ asar pack app app.asar --unpack *.node

[링크 : https://www.electronjs.org/docs/latest/tutorial/asar-archives]

'Programming > node.js' 카테고리의 다른 글

node + selenium = lynx (feat GPT)  (1) 2026.04.09
node excel export  (0) 2024.07.18
web qr decoder  (0) 2024.04.04
node.js 웹소켓 채팅 서버 예제  (0) 2022.07.14
ubuntu 18.04 / nodej.s 18.x 실패  (0) 2022.05.19
Posted by 구차니

ppa 추가해서 원하는 버전 설치하고, update-alternatives로 연결하면 된다.

 

sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.7

[링크 : https://askubuntu.com/questions/1251318/how-do-you-install-python3-7-to-ubuntu-20-04]

 

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1

[링크 : https://sosodev.tistory.com/entry/Python-pyenv-특정-버전을-설치하기-Ubuntu]

Posted by 구차니
Programming/openGL2025. 8. 20. 19:14

'Programming > openGL' 카테고리의 다른 글

openGL display list, deprecated  (0) 2025.08.20
visual studio 2002 에서 openGL 예제 실행  (0) 2025.07.30
openGL light  (0) 2025.07.30
openGL shade  (0) 2025.07.30
openGL 은선제거  (0) 2025.07.29
Posted by 구차니
Programming/openGL2025. 8. 20. 19:12

예전 openGL 책보다가 매번 해보지 못했던 부분인데

[링크 : http://www.gisdeveloper.co.kr/?p=76]

 

deprecated 되었다고 한다.

Note that these features were deprecated in 3.0, and actually removed in 3.1 (but still provided compatibility via an ARB extension). In OpenGL 3.2, they moved these features into a 'compatibility' profile that is optional for driver writers to implement.

[링크 : https://stackoverflow.com/questions/4113989/why-were-display-lists-deprecated-in-opengl-3-1]

 

오래되긴 했네..

OpenGL 3.1

출시일: 2009년 3월 24일

[링크 : https://ko.wikipedia.org/wiki/OpenGL]

'Programming > openGL' 카테고리의 다른 글

openGL VAO ABO  (0) 2025.08.20
visual studio 2002 에서 openGL 예제 실행  (0) 2025.07.30
openGL light  (0) 2025.07.30
openGL shade  (0) 2025.07.30
openGL 은선제거  (0) 2025.07.29
Posted by 구차니

패키지를 삭제했는데 바로 재설치가 되서

캐시되었다는 말을 검색해보니 cache purge를 통해 완전히 날리고 설치할수 있다고 한다.

 

해보니 확실히 처음부터 하긴 한다.

$ time CMAKE_BUILD_PARALLEL_LEVEL=3 pip3 uninstall --break-system-packages -v dlibFound existing installation: dlib 20.0.0
Uninstalling dlib-20.0.0:
  Would remove:
    /home/minimonk/.local/lib/python3.12/site-packages/_dlib_pybind11.cpython-312-aarch64-linux-gnu.so
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/INSTALLER
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/METADATA
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/RECORD
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/WHEEL
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/licenses/LICENSE.txt
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/top_level.txt
    /home/minimonk/.local/lib/python3.12/site-packages/dlib/__init__.py
    /home/minimonk/.local/lib/python3.12/site-packages/dlib/__pycache__/__init__.cpython-312.pyc
  Will actually move:
    /home/minimonk/.local/lib/python3.12/site-packages/_dlib_pybind11.cpython-312-aarch64-linux-gnu.so
    /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/
    /home/minimonk/.local/lib/python3.12/site-packages/dlib/
Proceed (Y/n)? y
  Removing file or directory /home/minimonk/.local/lib/python3.12/site-packages/_dlib_pybind11.cpython-312-aarch64-linux-gnu.so
  Removing file or directory /home/minimonk/.local/lib/python3.12/site-packages/dlib-20.0.0.dist-info/
  Removing file or directory /home/minimonk/.local/lib/python3.12/site-packages/dlib/
  Successfully uninstalled dlib-20.0.0

real    0m4.584s
user    0m2.585s
sys     0m0.381s

$ time CMAKE_BUILD_PARALLEL_LEVEL=3 pip3 install --break-system-packages -v dlib
Using pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)
Defaulting to user installation because normal site-packages is not writeable
Collecting dlib
  Using cached dlib-20.0.0-cp312-cp312-linux_aarch64.whl
Installing collected packages: dlib
Successfully installed dlib-20.0.0

real    0m4.876s
user    0m4.363s
sys     0m0.347s


pip3 cache purge
Files removed: 54

 

[링크 : https://ufris.tistory.com/61]

'Programming > python(파이썬)' 카테고리의 다른 글

python simsimd  (0) 2025.08.28
python 원하는 버전 설치 및 연결하기  (0) 2025.08.26
pip install cmake build multi core support  (0) 2025.08.13
python 빌드 정보  (0) 2025.08.04
python용 얼굴탐지, 인식  (0) 2025.08.04
Posted by 구차니

pip로 설치되는 녀석중 빌드가 필요한 녀석이 있는데

dlib가 원인을 알수 없으나(?) odroid-c2 / armbian 에서 1코어만 빌드하지만

nxp imx8mp evk 에서는 3코어로 빌드해서 어떤 옵션을 주어야 되는지

웬만한건 다 검색하고 해봐도 안되서 cmake 환경변수로 찾아보니 먼가 나왔고 시도하니 된다!

 

$ pip3 install  --break-system-packages -v dlib
  Invoking CMake build: 'cmake --build . --config Release -- -j1'
  [  1%] Building CXX object dlib_build/CMakeFiles/dlib.dir/base64/base64_kernel_1.cpp.o

 

CMAKE_BUILD_PARALLEL_LEVEL=4 pip3 install  --break-system-packages -v dlib
  Invoking CMake build: 'cmake --build . --config Release -- -j4'
  [  3%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bit_stream/bit_stream_kernel_1.cpp.o
  [  3%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bigint/bigint_kernel_2.cpp.o
  [  2%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bigint/bigint_kernel_1.cpp.o

[링크 : https://cmake.org/cmake/help/latest/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html#cmake-build-parallel-level]

'Programming > python(파이썬)' 카테고리의 다른 글

python 원하는 버전 설치 및 연결하기  (0) 2025.08.26
pip 패키지 완전 삭제하기  (0) 2025.08.13
python 빌드 정보  (0) 2025.08.04
python용 얼굴탐지, 인식  (0) 2025.08.04
python struct  (0) 2024.12.13
Posted by 구차니
Programming/C++ STL2025. 8. 12. 17:30

c의 runtime 줄여서 crt0.o에 대응하는게 libstdc++.a 이려나?

 

/opt/st/stm32cubeide_1.16.0/plugins/cohttp://m.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.linux64_1.0.200.202406132123/tools/arm-none-eabi/lib/arm/v5te/hard$ ls -al
합계 21968
drwxrwxr-x 3 root root    4096  9월  6  2024 .
drwxrwxr-x 4 root root    4096  9월  6  2024 ..
-rw-rw-r-- 1 root root     573  6월 29  2024 aprofile-validation-v2m.specs
-rw-rw-r-- 1 root root     557  6월 29  2024 aprofile-validation.specs
-rw-rw-r-- 1 root root     555  6월 29  2024 aprofile-ve-v2m.specs
-rw-rw-r-- 1 root root     539  6월 29  2024 aprofile-ve.specs
drwxrwxr-x 2 root root    4096  9월  6  2024 cpu-init
-rw-rw-r-- 1 root root    1580  6월 29  2024 crt0.o
-rw-rw-r-- 1 root root     195  6월 29  2024 iq80310.specs
-rw-rw-r-- 1 root root 1086406  6월 29  2024 libc.a
-rw-rw-r-- 1 root root  976432  6월 29  2024 libc_nano.a
-rw-rw-r-- 1 root root 5084062  6월 29  2024 libg.a
-rw-rw-r-- 1 root root 4641052  6월 29  2024 libg_nano.a
-rw-rw-r-- 1 root root    8432  6월 29  2024 libgloss-linux.a
-rw-rw-r-- 1 root root  477808  6월 29  2024 libm.a
-rw-rw-r-- 1 root root   26770  6월 29  2024 libnosys.a
-rw-rw-r-- 1 root root   19298  6월 29  2024 librdimon-v2m.a
-rw-rw-r-- 1 root root   19298  6월 29  2024 librdimon-v2m_nano.a
-rw-rw-r-- 1 root root   19270  6월 29  2024 librdimon.a
-rw-rw-r-- 1 root root   19270  6월 29  2024 librdimon_nano.a
-rw-rw-r-- 1 root root   17354  6월 29  2024 librdpmon.a
-rw-rw-r-- 1 root root 5670032  6월 29  2024 libstdc++.a
-rw-rw-r-- 1 root root    2527  6월 29  2024 libstdc++.a-gdb.py
-rw-rw-r-- 1 root root 3727838  6월 29  2024 libstdc++_nano.a
-rw-rw-r-- 1 root root  303506  6월 29  2024 libsupc++.a
-rw-rw-r-- 1 root root  239794  6월 29  2024 libsupc++_nano.a
-rw-rw-r-- 1 root root     960  6월 29  2024 linux-crt0.o
-rw-rw-r-- 1 root root     121  6월 29  2024 linux.specs
-rw-rw-r-- 1 root root     740  6월 29  2024 nano.specs
-rw-rw-r-- 1 root root     626  6월 29  2024 nano_c_standard_cpp.specs
-rw-rw-r-- 1 root root     277  6월 29  2024 nosys.specs
-rw-rw-r-- 1 root root     192  6월 29  2024 pid.specs
-rw-rw-r-- 1 root root    2348  6월 29  2024 rdimon-crt0-v2m.o
-rw-rw-r-- 1 root root    2372  6월 29  2024 rdimon-crt0.o
-rw-rw-r-- 1 root root     730  6월 29  2024 rdimon-v2m.specs
-rw-rw-r-- 1 root root     628  6월 29  2024 rdimon.specs
-rw-rw-r-- 1 root root    1624  6월 29  2024 rdpmon-crt0.o
-rw-rw-r-- 1 root root     147  6월 29  2024 rdpmon.specs
-rw-rw-r-- 1 root root     976  6월 29  2024 redboot-crt0.o
-rw-rw-r-- 1 root root    5868  6월 29  2024 redboot-syscalls.o
-rw-rw-r-- 1 root root    6119  6월 29  2024 redboot.ld
-rw-rw-r-- 1 root root     192  6월 29  2024 redboot.specs
-rw-rw-r-- 1 root root     426  6월 29  2024 standard_c_nano_cpp.specs

'Programming > C++ STL' 카테고리의 다른 글

cpp pure virtual function  (0) 2026.02.20
cpp 그래픽 라이브러리  (0) 2025.04.22
cpp 기본 인자 prototype  (0) 2025.03.28
cpp std::to_string(int)  (0) 2025.02.20
cpp string 끝에 한글자 지우기  (0) 2025.02.06
Posted by 구차니