본문 바로가기

스터디

Rails あれこれ https://rails-study.net/if/ https://www.rubylife.jp/ini/inherit/index3.html >このページ、英語もある。たぶん。 https://railsguides.jp/active_record_validations.html https://qiita.com/nullkal/items/accc5d62836a930b3cd9 https://qiita.com/kidach1/items/46a6e49b6306655ccd64 あとでまとめる! https://qiita.com/mochio/items/45b9172a50a6ebb0bee0 https://stackoverflow.com/questions/3264751/what-does-the-t-tag-mean-in-ruby-on-rails 더보기
VagrantBox + CentOS+ Ruby on Rails 참고 (일문)https://qiita.com/orangeboy/items/29cf53139efe86eaa14b MySQL 쪽 문제가 있어서 아래도 참고함https://stackoverflow.com/questions/8456300/mysql2-so-libmysqlclient-r-so-15-cannot-open-shared-object-file-no-such-file 하ㅠㅠ 또 삽질 엄청 했네 중간에 *.conf 파일 같은게 아예 존재조차 안해서 뭔가 했더니 sudo vi ~~ 로 그냥 해당 경로에 생성해주면 되는거였음. 아파치 쪽 설치할 때도 passenger-install-apache2-module명령어 쳐주고 Almost there! 나올때까지 얌전히 엔터쳐주어야 함.복사해서 만들어주라 하는건 복사해.. 더보기
함수, 배열, 포인터 보호되어 있는 글입니다. 더보기
변수,상수 보호되어 있는 글입니다. 더보기
C언어. 목차. 보호되어 있는 글입니다. 더보기
값에 의한 전달보다는 상수객체 참조자에 의한 전달이 나음 Effect C++ / 항목20. 값에 의한 전달보다는 상수객체 참조자에 의한 전달이 나음 한참 전에 봤던건데 다시 볼 필요가 있을 것 같아서 정리. 함수로 객체를 넘길때 그냥... 뭐, int, char 같은거면 괜찮은데 사용자 정의 타입의 객체를 넘길때는 비용이 좀 든다. 그리고 상속관계에 있는 객체를 넘길경우는 때에 따라서 위험할 때도 있음. 그러니까 이럴 경우 struct A {int len, char data[1024], int flag , . . . }void printA {A _a}{. . . } >> 넘긴 객체와 별개로, printA 함수 내에서 새로 매개변수의 A객체가 생성되고(생성자 호출), 이 함수가 끝날때 A객체가 소멸되고(소멸자 호출)... A객체가 기본제공 타입만으로 이루어진 객.. 더보기
이것저것 요 몇주간 본것 봐야할것이 잔뜩 늘었다ㅋㅋㅋㅋ그래서 정리. 1. 서버에서 들어온 패킷에 대한 구분을 할때 switch case를 잔뜩 써 주는 것 보다는 if~elseif로 적당히 끊어서 switch-case를 쓰는게 좋다.이건 생각지도 못한 부분인데, swtich-case는 내가 아는 한 위에서부터 차례차례 case를 비교하면서 내려간다. 그래서 일반적으로 자주 호출되는 case를 위에 써주는데, 패킷은 대개 수십, 수백개 쯤 있으니 이걸 전부 하나의 switch-case에 몰아넣으면 너무 과도하게 많은 케이스 체크가 필요하게 됨.그래서 뭐, 0부터 50번까지의 패킷, 50번부터 100번까지의 패킷, 이런 식으로 구분해서 switch-case를 쓰는 것도 괜찮은 방법인 것 같다. 2. SP가 저장 프로.. 더보기
IOCP - ServerSide 사실 웹상에는 먼저 이걸 공부한, 은혜로운 선배들이 잘 정리해둔 글을 엄청 많이 찾아볼 수 있다. 구현 자체야 충분히 다른 깔끔하고 훌륭한 포스트를 참고한다면 얼마든지 가능하지만, 이해에 측면에 있어서는 과연? 그 어떤 강의나 포스트를 보아도 결국 이해해야하는 것은 자기 자신이기 때문에 자신만의 언어로 정리해둘 필요가 있다. 정리를 하는 중에는 분명히 덜 이해한 부분도 튀어나오고, 좀 더 궁금해지는 부분도 생기기 마련. 그래서 시간을 들여서 정리를 한번 해보려고 함. 일단 서버사이드. 개념적인 이론적인 설명은 생략하고 구현 중심으로 설명함.개념적인 설명은 여기 이 시리즈! [링크] 이해에 많이 도움이 됨. 구현적인 부분에서 IOCP는 쉽게 말해서버소켓 생성, 주소값 할당, 클라이언트 Accept, Rec.. 더보기
IOCP를 사용한 서버 라이브러리 제작 1. 다음부터는 이런 귀찮은 일련의 작업들에게서 벗어나기 위해 만들었다. 저번에 이벤트 방식으로 한번 만들어두긴 했는데, 확실히 다른 작업을 또 진행할때 소켓 할당하고 뭐 주소값 넣고.. 이런 귀찮은 작업들이나 더 나아가서 Send나 Recv가 필요할 때도 그 많은 인자값들을 일일히 넣어주지 않아도 되고... 다 만든 건 아직 아닌데 기초적인 기능들은 다 구현했고 사용자 편의성만 좀 높여주면 된다. 지금은 좀 거지같다. 2. 서버 사이드 * CreateServerSocket 함수를 호출하면 자동으로 내부에 CompletionThread풀과 접속 가능한 유저 리스트 등을 생성한다. 클라이언트 접속은 acceptEx를 쓰기 때문에 미리 유저 정보와 소켓등을 할당해둔다. * Accept/Recv/Send 등의.. 더보기
AcceptEX 개객기야 IOCP 정리 포스팅은 언제 하지(..) 아무튼 채팅서버를 만들었으니 lib 만드는 작업을 하는데 Accept 에서 막혔다. Accept는 타임아웃 같은게 없다. 고작 이 Accept 하나 때문에 쓰레드를 하나 더 만드는 건 '공부'차원에서도 몹시 좋지 않은 느낌이라 안써봤던 AcceptEx를 써보기로 했다. 참고한 사이트AcceptEx 풀 예제: http://yongpa.tistory.com/20 구조에 대한 이해: http://bestmin.tistory.com/180 난관을 이래저래 겪었는데... 1. 클라가 접속을 했는데도 GetQueuedCompletionStatus 가 overlapped 주소값을 정상적으로 내뱉질 않음.-> AcceptEx 의 마지막 인자에는 overlapped 객체의 주소값.. 더보기