본문 바로가기

개발235

java, python, js, html, css에서 들여쓰기 space 크기에 대한 개인적 의견 개요 js 작업 중인데, 역시 탭 크기에 대한 고민이 발생되었다. 탭 vs space 이 부분은 사실상 종결된 부분으로, space(공백)으로 구성하는 것이 낫다. '탭 문자'의 특징이 소스 코드 작성이라는 것과 애매하게 안 맞는 부분이 있기 때문인 것인데, 에디터에서 탭 키를 눌렀을 때 공백이 들어가게 지원되면서, 이 문제가 해결이 된 셈이다. 원래는 탭 키를 누르면 탭 문자(\t, U+0009, 등) 들어가게 되는데, 소스 코드에 이것을 포함하고, 컴파일이든 런타임이든에서 이것을 인식시켜야 하고, 이런 저런 이슈가 있는데. html 문서 내에 탭 문자가 들어갔을 때, 브라우저에서 어떤 식으로 표현해야할 지 등 여러 가지 문제가 혼합되어버릴 수 있다. 개발하는 관점에서는 편리하겠지만, 작.. 2024. 2. 24.
[python, django] 'save_m2m' save_m2m에 대해서 알아보자. https://github.com/django/django/blob/main/django/forms/models.py django/forms/models.py에서 500라인 즈음에 BaseModelForm클래스의 def save메소드를 살펴보자. if commit: # If committing, save the instance and the m2m data immediately. self.instance.save() self._save_m2m() else: # If not committing, add a method to the form to allow deferred # saving of m2m data. self.save_m2m = self._save_m2m ret.. 2023. 12. 22.
용어에 대해서) code, source code 개요 얼마 전에 무심코 고민을 한 적이 있다. python 코드들을 정리해서 github에 비공개 저장소로 올리는 중이었는데, 저장소 이름을 뭘로 할까 고민을 하게 되었다. 'python_sources', 'python_codes', ... 문득 드는 생각에, source와 code의 의미에 대해 다시 한 번 생각해보게 되었다. 그래서 영어로 검색해보고 나서 느낀 점은, 외국애들이 받아들이기에 code라는 단어는 우리가 생각하던 것과 의미가 달랐다. 예를 들어, ascii code라거나, 전쟁 중에 주고 받는 통신 암호 코드 같은 것을 code로 생각하는 듯했다. 별로 개의치 않고 사용하는 사람들은 code라고 쓰긴 하는데, 문법에 예민한 외국애들은 프로그래밍과 관련되어서 c.. 2022. 9. 29.
라라벨 Laravel 에 대해서 알아보기 Laravel 라라벨 공식 사이트 : https://laravel.com/ 라이선스 : MIT (https://github.com/laravel/laravel 하단을 참조) Docs : https://laravel.com/docs/master Composer : https://packagist.org/packages/laravel/laravel Git https://github.com/laravel/laravel https://github.com/laravel/framework 라라벨과 내가 기억하는 PHP 진영의 역사 '라라벨 프레임워크'는 PHP 진영에서 마지막 보루라고 볼 수 있는 프레임워크이다. 기존에 여러 프레임워크가 등장하고 소멸했지만, PHP쪽에서는 그럴싸한 물건이 없었다. 먼.. 2021. 9. 20.
laravel breeze 와 jetstream 간단히 보자면, 라라벨에서 인증 기능 구현을 위해 지원하는 스타터 키트는 현재 둘로 나뉘어졌다. (예전에는 어떻게 구현했드라..) 하나는 breeze 이고, 다른 하나는 jetstream 이다. 단순히 단어의 의미로 접근하자면. breeze (순풍, 미풍)이고 jetstream (제트기류; 기상예보에서 가끔 나오는 제트기류)이다. 여기서 breeze는 기능을 최소화하려고 하고, jetstream은 기능을 많이 넣으려고 한다라고 눈치 챌 수가 있을 것이다. 공식 문서를 간단히 대충 살펴보면 이런 내용을 볼 수 있다. breeze * 예전 방식처럼 로그인, 로그아웃, 이메일 인증, 비밀번호 초기화 등을 지원한다. * composer 로 붙일 때는 'composer require laravel/breeze -.. 2021. 9. 14.
Numpy 의 Axis 옵션에 대한 정리. 개요 쉬운 듯 하면서... 보면볼수록 헛갈린다. 기왕 정리하는 김에 포스팅하도록 한다... (쓰면서도 헛갈림...) 배열 수준별로 테스트해보자 2차원 배열에서 # 2차원 배열에서 axis 사용 import numpy as np a = np.array([[10, 20, 30], [15,7,55], [5,33,12]]) print(np.max(a, axis=0)) # [15 33 55] # 열 기준 (위아래로 큰 것들) print(np.max(a, axis=1)) # [30 55 33] # 행 기준 (옆으로 큰 것만 추림) 3차원 배열에서 import numpy as np arr = [[[30, 15, 11], [27, 35, 23], [ 6, 1, 8], [17, 24, 32]], [[ 3, 4, 36],.. 2021. 5. 7.
[파이썬] mysqlclient 모듈 설치 오류 : Running setup.py install for mysqlclient ... error 개요 윈도우 환경 & 파이썬 32 비트 에서 'mysqlclient' 모듈을 설치할 때 오류가 발생할 수 있다. 오류 로그 Running setup.py install for mysqlclient ... error ERROR: Command errored out with exit status 1: command: '~\venv\scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\~\\AppData\\Local\\Temp\\pip-install-~\\~8\\setup.py'"'"'; __file__='"'.. 2021. 4. 10.
Laravel mysql rownum 을 이용한 update DB::statement(DB::raw('set @rownum:=0')); SAFolder::join(DB::raw( '(select id, @rownum:=@rownum+1 as rownum from sa_folders where parent_id = ? and archive_id = ? order by `index`) as t2'),'t2.id','=','sa_folders.id') ->setBindings([$parentId, $archiveId], 'join') ->update(['sa_folders.index'=> DB::raw('t2.rownum')]); 사용했던 구문인데 필요하실.. 2021. 1. 31.
[Android] java.lang.NoClassDefFoundError: aewt 다음과 같은 로그 FATAL EXCEPTION: Firebase-Messaging-Intent-Handle Process: com.google.android.youtube, PID: 17241 java.lang.NoClassDefFoundError: aewt at aewu.b(PG:1) at duc.a(PG:230) at duc.get(PG:247) 'Nokia Nokia 1' 와 'Huawei P8 青春版' 기종에서 주로 발생하는 듯 하다. '사전 출시 보고서'에서 볼 수 있다. 참조 https://forums.expo.io/t/fatal-exception-firebase-messaging-intent-handle/45041/7 https://github.com/firebase/quickstart-un.. 2020. 12. 14.
[라라벨] route:list 가 깨져서 나올 때. 보통 'laravel-debugbar'가 원인이 되는 경우가 있는 듯 하다. 여러줄로 쪼개져서 나오는 현상이 나타난다. 라우트 정보를 간략히 보기 php artisan route:list -c 컬럼을 지정해서 보기 php artisan route:list --columns=method --columns=uri --columns=name --columns=action 2020. 12. 8.