728x90

1. 글자 바꾸기

  • ctrl+H
  • ctrl+D: 특정 문자를 드래그 한 뒤, 해당 단축키를 누르면 파일 내에 동일한 문자를 가진 문자들이 순차적으로 드래그 됨


2. 단축키 설정(자동 정렬, 들여쓰기)


Preference > Key Bindings - User 창에서 설정

[
{ "keys": ["ctrl+shift+f"], "command": "reindent" , "args": { "single_line": false } }
]


3. 다중 커서: ctrl


ctrl 키를 누른 상태로 원하는 라인을 클릭


728x90
728x90

한국방송통신대학교

암복호화 로직

1. 서버에서 RSA 키 생성 모듈 작성
2. 로그인 페이지 접속 시, 공개키/개인키를 생성하여 개인키는 저장하고 공개키는 클라이언트에게 전송
3. 클라이언트에서 자바스크립트 모듈을 사용하여 공개키로 암호화
4. 서버에서 개인키로 복호화




1-2. 키 생성 후, 클라이언트에게 전송

package java.security;

@RequestMapping(“/createKeyPair.do”)
public String createKeyPair(HttpServletRequest request, ModelMap model){

    //지정된 알고리즘에 대한 KeyPairGenerator를 작성
    KeyPairGenerator generator = KeyPairGenerator.getInstance(“RSA”);

    //임의의 열쇠의 사이즈에 대한 열쇠 페어 제네레이터를 초기화
    generator.initialize(2048);
    //열쇠 페어 생성
    KeyPair keyPair = generator. genKeyPair();

    KeyFactory keyFactory = KeyFactory.getInstance(“RSA”);

    //공개키
    PublicKey publicKey = keyPair.getPublic();
    //개인키
    PrivateKey privateKey = keyPair.getPrivate();
    //세션에 개인키 넣기
    request.getSession().setAttribute(“RsaPrivateKey”, privateKey);

    RSAPublicKeySpec publicSpec = keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class);

    model.put(“modulus”, publicSpec.getModulus().toString(16));
    model.put(“publicExponent”, publicSpec.getPublicExponent().toString(16));

    return “testView”;
}


3. 클라이언트 암호화

  • 암호화 라이브러리(.js) 추가
  • 암호화 함수 생성
function encryptParam(id, pw){
    let encryptInfo ={};

    let publicKey = GenerateKey();

    encryptInfo.encId = EncryptTEA(publicKey, id);
    encryptInfo.encPw = EncryptTEA(publicKey, pw);
    encryptInfo.secKey = EncryptRSA(“${modulus}”, “${publicExponent}”, publicKey);

    encryptInfo.publicKey = publicKey;

    return encryptInfo;
}


4. 서버 복호화

  1. 클라이언트가 서버로 넘긴 암호화 파라미터 추출
  2. 세션에 담은 개인키 추출
  3. 복호화
String id = decode(encId, secKey, RsaPrivateKey);
String pw = decode(encPw, secKey, RsaPrivateKey);
public static String decode(String encMsg, String teaKey, PrivateKey rsaKey){

    String decryptMsg = “”;

    String teaKey = decryptRsa(rsaKey, teaKey);
    TEA tea = new TEA(teaKey);

    decryptMsg = tea.decrypt(encMsg);

    return decryptMsg;
    }

    private static String decryptRsa(PrivateKey privateKey, String securedValue){

    Cipher cipher = Cipher.getInstance(“RSA”);

    byte[] encryptedBytes = hexToByteArray(securedValue);
    cipher.init(Cipher.DECRYPT_MODE, privateKey);

    byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
    String decryptedValue = new String(decryptedBytes, “utf-8”);

    return decryptedValue;
}




728x90
728x90

Git 설치

https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

위 사이트에서 본인 환경에 맞는 설치 파일 다운로드 후 설치 진행

 

 

--사용자 등록
git config --global user.name "사용자명"
git config --global user.email "이메일주소"
--사용자 등록이 잘 됐는지 확인
git config --list

 

 

 

cmd창에서 git 입력 후 아래와 같은 결과가 출력되면 설치도 잘 되고 환경변수도 잘 설정 됐음

 

 

 

 


GitHub Desktop 설치

https://desktop.github.com/

 

GitHub Desktop

Simple collaboration from your desktop

desktop.github.com

위 사이트에서 본인 환경에 맞는 설치 파일 다운로드 후 설치 진행

 

 

 

🔸Create a New Repository 

 

+ Create a New Repository on your hard drive... 선택

 

 

 

  • Name: 생성할 레퍼지토리 이름
  • Description: 생성할 레퍼지토리 설명
  • Local Path: 레퍼지토리를 생성할 위치
  • README: 디렉터리나 압축 파일에 포함된 기타 파일에 대한 정보를 포함하여 함께 배포되는 파일
  • Git Ignore: 관리할 필요 없는 파일을 기술하는 파일
  • License: None(소스코드를 가져다 쓸 때 저작관 관련하여 어떤 라이선스로 이용가능한지를 명확히 기술할 파일 생성)
    • 우선 레퍼지토리 생성할 때는 Name, Description, Local Path만 입력(나머지는 나중에 파일로 추가 가능)

 

 

🔸Clone a repository

728x90
728x90

우연치 않은 기회로 인프런 첫 콘퍼런스인 인프콘에 다녀왔습니다
행사 전날까지 갈까말까 고민한게 무색할 정도로 정말 재밌게 놀다와서 글을 안 남길 수가 없더라구요
내년에도 또 열리길 바라며..🥹 후기 시작할게요!






보시다시피 사람이 정말 많았어요
그래서 행사장에 들어선 순간 집에 가고 싶다는 생각이 들었답니다🙃 이런 콘퍼런스 참여는 난생 처음이라 더 그랬던 거 같아요
그치만 오프닝이 끝나자마자 이 분위기에 완.벽.적.응




그래서 저도 쉬는 시간마다 다른 분들처럼 기업부스에 줄을 서서 여러가지 선물을 받았답니다✌️
(제가 받아온 선물은 맨 마지막에 추가해놓았으니 궁금하신 분들 확인 해주세욧)

사진 속 기업들 외에도 야놀자, 토스, 오늘의 집 등이 있었어요
참여 기업들이 엄청 빵빵하쥬? 역시 네카라쿠배!




이번 콘퍼런스의 전체 시간표입니다
2022 인프콘의 주제에 맞게 주니어 개발자들에게 도움이 될만한 발표들이 정말 많았어요
마음 같아선 모든 발표를 듣고 싶었으나 그럴 수 없기에 추리고 추려 6개의 발표를 듣고 왔답니다
개인적으로 얄코님 발표 듣고 싶었는데 아쉬웠어요🥲




한정수 개발자님은 본인의 경험담을 연차 별로 쪼개서 해당 연차에 했던 좋았던 선택과 후회되는 선택을 얘기해주셨어요
추천해주신 넥스트 스텝 - TDD, 클린 코드 강의 꼭 들어보겠습니다






한주승 개발자님은 테스트가 서툰 주니어 개발자들 위해 테스트 방법에 대해 말씀해주셨습니다
그 중에 원인을 찾을 때는 (외부)인터페이스를 먼저 테스트하라는 말이 가장 와닿았습니다
최근에 타 시스템에서 연계 받아오는 금액 데이터가 안 맞았는데 제가 관리하는 시스템을 제일 먼저 쥐잡듯이 테스트해서 시간 버린게 생각이 났거든요^^;






서지연 개발자님은 대표적인 코드리뷰 방식인 GitHub의 Pull Requests 말고 다른 코드 리뷰 방식인Stacked Changes를 설명해주셨습니다
제 공부 목록에 추가 되었네요🥲






김민준 개발자님은 개발자의 셀프 브랜딩에 관하여 설명해주셨습니다
블로그, 유튜브, 강의, 책 출판 등 자신만의 콘텐츠를 만들라는 말씀을 따라서 앞으로 열심히 블로그 하겠습미다!






강동한 개발자님은 Node.js와 10년을 함께하면서 얻은 것들에 대해 얘기해주셨습니다
노드에 대한 진심어린 애정이 느껴지는 발표였어요!
저는 아직 Node.js를 사용해 본 적은 없지만 궁금해서 들어봤습니당





마지막으로 1타 강사 강영한 개발자님은 개발자로서 성장하는 방법과 이직, 취업을 위한 이력서 꿀팁을 알려주셨습니다
프로젝트만 나열한 이력서 얘기할 때 뜨끔했어요
제 얘기거든요…🐥
다음 이력서에는 담당 프로젝트에서 발생한 문제를 해결한 방법에 대해 자세히 기술해놓으려구요!






이렇게 많이 뭘 받아올 줄 몰랐는데 행복🎁
앞으로 이런 콘퍼런스 자리가 생기면 무조건 신청하려고요! 너무 재밌었어요!

 

 

 

 

728x90
728x90
  • 포털 사이트마다 크롤러 봇이 있는데 네이버는 Yeti
  • 크롤러는 robot.txt (크롤링이 가능한지에 대한 규칙을 작성해둔 문서)를 제일 먼저 읽어서 해당 사이트가 크롤링이 가능한 것을 확인하면 해당 사이트에 관한 정보를 가져가서 포털 사이트에 전달함
  • sitemap.xml: 크롤러가 좀 더 쉽게 내 사이트를 탐색할 수 있도록 도와줌!

 

1. 네이버 웹마스터 도구에 내 사이트 등록

https://searchadvisor.naver.com/

 

네이버 서치어드바이저

네이버 서치어드바이저와 함께 당신의 웹사이트를 성장시켜보세요

searchadvisor.naver.com

접속 후 웹 마스터 도구 클릭

url 입력 -> 사이트소유확인 (두가지 방법 중 하나 선택해서 서버에 업로드한 다음) -> 사이트 소유확인 재 접속하여 소유확인 클릭 => 사이트 등록 끝!

 

2. 검색 관련 문서 제출

내가 등록한 사이트 클릭 -> 검증 클릭 -> robot.txt 클릭 -> robot.txt 간단 생성 - 모든 검색 로봇 & 수집 허용 -> 다운로드 클릭 -> 내 프로젝트에 넣어줌

 

sitemap generator 검색 -> https://www.xml-sitemaps.com/

 

Create your Google Sitemap Online - XML Sitemaps Generator

Installable version We offer a server-side script written in PHP language that you can install on your server and create sitemap for your website. The script doesn't have the limit on number of pages included in sitemap, although server resources required

www.xml-sitemaps.com

접속 후 내 사이트 url 입력 & start 클릭 -> sitemap detail 클릭 -> 다운로드 xml! -> 다운로드한 파일 내 플젝에 넣고 서버 재기동 

 

웹마스터도구 재접속해서 robots.txt 정보에서 수집요청 클릭 

 

요청 탭 - 사이트맵 제출 -> url 입력 부분에 sitemap.xml 입력하고 확인 클릭!

 

728x90

+ Recent posts