2022/04

    [바미] 검색Form검색 이벤트 추가.

    부트스트랩 기준으로 공유합니다. 검색 form Search Node.js const express = require('express'); const app = express(); const mysql = require('mysql'); // mysql 접속 설정 const conn = mysql.createConnection({ host : 'localhost', port : '3306', user : 'user', password : 'password', database : 'DB이름' }); app.get('/search=?', function(req, res) { let sql = '사용하실 SQL 쓰시면 됩니다.'; conn.query(sql , function(err, row, fields){/..

    [바미] script 태그에 Node.js DB 데이터 넣기

    보통 Node에서 DB데이터를 가져와 ejs 파일에 넣으려 할 때 태그를 사용하여 형태로 사용하실 겁니다. 카카오 맵을 사용하다보니

    [바미] DB에 float 데이터를 저장하기.

    개발 언어에서는 실수형 데이터를 float 타입으로 선언하곤 합니다. 이 때문에 DB를 구성할 때도 실수형 데이터가 저장될 열을 FLOAT 타입으로 선언하게 되는데요. ALTER TABLE 테이블이름 ADD COLUMN 컬럼이름 FLOAT; 이런식으로 선언 시 데이터를 저장한 다음 평균을 내거나 합계를 낼 때 조금씩 차이가 나는 현상이 발생하고, 소수점이 조금 긴 데이터를 저장 시 소수점 몇자리부터 짤리는 현상을 경험하여 알게 되었습니다. 이유는 바로 FLOAT 타입이 근사 값을 저장하기 때문이였습니다. 이 부분은 FLOAT, REAL, DOUBLE PRECISION 모두 동일하였습니다. msdn에서도 다음과 같이 설명하고 있는데요. 부동 소수점 데이터는 근사 값이므로 해당 데이터 형식 범위에 있는 모든..

    [바미] Header 관련한 삽질기

    GO를 사용하여 서버를 구축하고, 운영중에 있는데 문뜩 외부에서 Postman을 사용하여 무분별한 Post가 이뤄질 때, 우리의 데이터를 파싱할 때 이것을 막는 방법이 없을까? 생각해보게 되었습니다. 물론, 내부에 필수값이 존재하기 때문에 여기서 1차적으로 걸러지지만 이런것도 언젠간 뚫리기 마련이기 때문에 좀 더 단단한 무언가가 있었으면 좋겠다 생각이 들었습니다. 물론 완벽한 보안이라는 것은 존재하지 않지만 최소한의 방어벽을 둘러보고 싶었습니다. 먼저 찾아본 것은 'X-Csrf-Token'였습니다. 거기다 고릴라 안에 있던 패키지였기 때문에 이거다! 싶었죠. https://github.com/gorilla/csrf GitHub - gorilla/csrf: gorilla/csrf provides Cross..

    [바미] 12세대 CPU가 탑재된 신형 ThinkPad 공개되었네요.

    Lenovo는 5일, 플래그십 브랜드 「X1」시리즈를 쇄신했습니다. 이 중 노트의 「ThinkPad X1」시리즈는, 「Nano」, 「Yoga」, 「Carbon」의 3 모델이 최신 제 12세대 Core가 되어, 성능이 향상되었습니다. 탑재되는 CPU 모델도 '엘더레이크-P'를 포함한 제12세대 Core이며, 최고 14코어로 구성되어 있습니다.OS는 Windows 11 Pro를 선택해 다운 그레이드권을 이용한 Windows 10 Pro나, Fedora, Ubuntu, Linux도 서포트합니다. ThinkPad X1 Nano Gen 2 ThinkPad X1 NanoGen2는 1kg 이상의 경량성을 실현한 모바일 노트입니다.2022년 4월 출하로, 가격은 1,659달러입니다. 메모리는 최대 32GB, 스토리지는..

    [바미] AMD Ryzen 7 5800X3D 게임 벤치마크

    Ryzen 7 5800X3D 프로세서의 독립적인 테스트 결과를 최초로 공개한 XanxoGaming으로부터 게임 테스트가 막 종료 되었다는 알림을 받았습니다 . 다음은 미디어가 2일 후에 해제되는 검토 금지 대상이 아니라는 알림입니다. 그들은 소매 시장에서 프로세서를 구입할 수 있었지만 페루(구입한 곳)에서 가격이 얼마인지는 명시하지 않았습니다. 공식적으로 449 USD로 출시되며, 이는 1K 단위의 Core i9-12900K MSRP보다 약 120~140 USD 저렴합니다. 웹사이트는 동일한 메모리 유형(DDR4-3200 CL14)을 사용하는 Alder Lake 시스템에 대해 5800X3D를 배치했습니다. Zen3 또는 Alder Lake 아키텍처로 구동되는지 여부에 관계없이 이는 분명히 하이엔드 시스템..

    [바미] Go의 signal에 대해 알아봅시다.

    BackEnd단에서 프로그램을 Go언어로 짜다 보면 Go 프로그램이 Unix signal을 처리해 주었으면 하는 때가 있죠. 예를 들어, SIGTERM signal을 받았을 때 적절하게 서버를 종료하는 경우나 커맨드라인 도구에서 SIGINT를 받았을 때 프로세스를 멈추는 경우가 그런 경우인데요. 오늘은 채널을 이용하여 signal을 다루는 방법을 살펴보겠습니다. 코드 package main import "fmt" import "os" import "os/signal" import "syscall" func main() { sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs, syscall.SIGINT, syscall...

    [바미] MVC, MVP, MVVM 패턴에 대해 알아봅시다.

    MVC 패턴 MVC 패턴은 크게 Model-View-Controller 3가지로 나눈 소프트웨어 개발 방법론입니다. Model : 일반적으로 DB테이블에 해당한다. 순수한 데이터로서 DB의 역할을 하거나 DB에 데이터를 요청해서 원하는 데이터를 받는 역할을 합니다. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 하고 View나 Controller에 대한 정보는 알수없습니다. View : Controller로 데이터를 받아서 클라이언트 측 기술인 html/css/javascript를 이용해 표현하는 역할을 합니다. 데이터를 따로 보관하지 않고 처리합니다. Controller : 사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, Mode..

    [바미] 서로가 서로를 필요로 할 때

    class ExamClass { constructor() { ... this.init(); } init() { this.A = new constructorA(this.B); this.B = new constructorB(this.A); this.C = new constructorC(this.A, this.B); } } 위처럼 A는 A를 생성하기 위해 B가 필요하고, B는 B를 생성하기 위해 A가 필요하는 상황이였습니다. 그 때는 ExamClass를 사용하여 해결하였습니다. class ExamClass { constructor() { ... this.init(); } init() { this.A = new constructorA(this); this.B = new constructorB(this.A); t..