Semantic Analysis 까지가 front end이고 이제 code generation 하기 전의 최적화 과정이다. [용어정리]Intermediate Representation (IR)말그대로 중간 표현 으로, 어떤 frontend, backend를 쓰는 동일한 optimizer를 쓸 수 있다.High-Level Assembly 아래 설명에서는 high level assembly를 사용한다고 가정한다.register가 무한개가 있고,control 구조는 assembly와 비슷하며operation code를 쓰나 일부는 higher level이다.IgenIR를 위한 Code generation으로 igen(e, t)이면 e를 레지스터 t로 넣는 데 필요한 코드를 뜻한다.이때 register를 무한개..
Storage Class Selection Problem레지스터 파일에 저장할지, 메모리에 저장할지 결정하는 문제보통 Global, Static들은 memory에, Local 중에 composite type(Struct, array 같은 것들)은 메모리에, 다른 것들은 레지스터에 넣는다고 한다.Optimize 할 때는 할 때는 unlimited register로 가정했고, code generation 할 때는 all memory approach로 생각했었다.근데 이제는 unlimited register가 아니라 실제 배정을 해보는 단계Recall : Liveness Analysis 이거를 다시 생각해 보는 이유는 서로 같은 시점에 live 하지 않으면 레지스터를 공유할 수 있기 때문이다.Liveness ..
Redismysql vs. mariadbnosql vs. RDMS평소 궁금했던 개념들을 정리해보려고 한다.각각 사용해 본 경험으로 적은 것은 아니니 참고..바랍니다. Redis레디스의 가장 큰 특징은 데이터들이 주 메모리에 저장되는 것이다.- 그래서 가볍고 빠르다. 디스크에서 가져오는 것보다 메모리에서 가져오는 것이 훨씬 빠르기 때문에또한 key-value 형태로 저장된다. 한줄로 정리하자면, 시스템 메모리를 사용하는 key-value 데이터 스토어이다. 이걸 어디에 쓰느냐! 캐싱, 세션관리 같은 곳에 사용해 속도를 높일 수 있다.따라서 보조 데이터베이스로 사용하면서 서비스 속도를 높이는 데 사용할 수 있다. MySQL vs. MariaDBmysql 개발자들이 나가서 mariadb를 만들었다... 이런 ..
오늘 프로젝트 백엔드 서버 구축을 위해서 이것저것 검색해 보았다. 백엔드 API를 만들어보는건 처음이어서 이게 맞나.. 하면서 검색했는데 일단 우리는 Flask를 이용해서 개발하기로 했고, JAVA에서는 DAO, DTO를 이용한 개발이 주류인 반면Python에서는 SQLAlchemy(ORM)을 사용한 개발이 더 활발해 보였다. ORM 은 Prisma 를 할 때 처음 들었는데Object Relational Mapper라고 SQL문을 작성하지 않아도 대신 알아서 작성해 준다. 대신 복잡한 쿼리문이나 성능이 안좋을 수 있다는 한계가 있지만빠른 개발에 한몫한다. 그래서 Flask 를 사용하니까 Flask-SqlAlchemy 와문서화와 편리함를 위해 flask-smorest 를 사용하려고 한다. 우테코처럼..
xcode에 iphone 연결해서 실험하려는 데자꾸 xcode will continue when the operation completes. 라고 뜨면서 무한 대기가 뜨는 것 아닌가...! 유선으로 잘 연결했고 하루 전만 해도 연결했는데!!!그 이유는 VPN 에 있었다. 학교 가상머신 접속하려고 켜놨던 VPN을 끄고 연결하니까 바로 연결..VPN이 문제였군..
java에서 class 를 만들고그 내용으로 sort 하고 싶을때 comperator를 쓰면된다. 오늘 소프티어 시험 보면서 알게 된 사실^^ (누가 시험 보면서 공부하냐...- 나) 시험때 적었던 코드는 기억이 안나서 지피티한테 예시 하나 만들어달라고 했다. import java.util.ArrayList;import java.util.Comparator;import java.util.List;class Item { private String name; private int value; public Item(String name, int value) { this.name = name; this.value = value; } public String ..
어우 여러 언어로 코테 준비 하려고 하니, input 부터 막힌다...가볍게 몸풀겸 쉬운 문제 하나 input 은 bufferedReader를 사용한다. 근데 꼭 try, catch문을 써야 에러가 안뜬다. import java.io.*;import java.util.*;public class Main { public static void main(String[] args) { try{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String input = bf.readLine(); System.out.println(input); } ..
원래 mac에 mysql이 깔려있었는데, opt/homebrew/bin 에 있는mysql 파일도 다 지우고 uninstall mariabd 하고 다시 깔았는데도 계속 에러떠서봤더니 opt/homebrew/var 에 있는 mysql 파일 지웠더니 성공했다휴! 꽤 오랫동안 시간을 써버렸군 ㅜㅜㅜ