아. 까먹고 있다가 들어가봤더니 역시나 마감 ㅠㅠ
먼가 문자로 알림 올때 빵빵하게 준다고 하더니
헐.. 신청못해서 아쉽네 ㅠㅠ
'개소리 왈왈 > 자전거' 카테고리의 다른 글
간만에 자전거 (0) | 2024.02.17 |
---|---|
라이트 손..상? (0) | 2023.05.21 |
라이트 청소 (0) | 2021.10.26 |
붕어가 되었군 -_ㅠ (0) | 2021.06.06 |
자전거 라이트 + 배터리 도착! (0) | 2021.05.06 |
아. 까먹고 있다가 들어가봤더니 역시나 마감 ㅠㅠ
먼가 문자로 알림 올때 빵빵하게 준다고 하더니
헐.. 신청못해서 아쉽네 ㅠㅠ
간만에 자전거 (0) | 2024.02.17 |
---|---|
라이트 손..상? (0) | 2023.05.21 |
라이트 청소 (0) | 2021.10.26 |
붕어가 되었군 -_ㅠ (0) | 2021.06.06 |
자전거 라이트 + 배터리 도착! (0) | 2021.05.06 |
머 확정은 아니지만 조금만 삐긋하게 되면
전세계 인류문명은 졸지에 50년 이상은 후퇴하게 되지 않을까 라는 걱정이 든다.
세계의 공장 중국을 중심으로 대량생산 대량소비를 패러다임으로
분업화되어 물류가 이를 하나로 묶어 지구촌을 유지해왔는데
한국만 국지적으로 생각하면
현재 요소 전량 수입으로 인한 요소수 문제가 불궈지며
극단적으로는 화물 운송이 멈추고 집 근처에 배달되던 식료품들 마저도 오지 못하게 되는 형국이 되진 않을까 걱정된다.
그리고 그 와중에 기름값, LNG 값이 폭등한다고 난리인데
물류와 겹쳐 겨울 동사자가 대량발생하거나,
최소한 작년 같은 쾌적한(?) 난방을 기대할 수 없게 되는건 아닐까 우려된다.
중국의 경우 환경을 포기하고 석탄을 열심히 때서 전기를 만들었는데
부품부족 사태와 연계하여, 수리 가능한 부붐의 점점 부족해지고 어느순간 최첨단 생산설비들이 하나둘씩 고장나면
낮은 단계의 생산만 가능하게 되고 그런식으로 퇴보하게 되다 보면
정말 손으로 갈아서 하나하나 만들기 시작해 다시 지금의 문명을 이루는데 까지 꽤나 오랜 시간이 걸리기 되지 않을까?
그 동안은 지금을 당연하게 느끼는 세대들에게 있어 문명붕괴 수준이 아닐까 생각된다.
그리고 요소가 부족하다고 난리인데, 비료는(!) 공기에서 추출한다고 알았었거늘.. (응?)
석탄과 같은 화석연료를 이용하여 요소를 만들고, 그걸 이용해 비료를 만들었다고 하면
비료의 부족으로 생산량이 급락하고, 보릿고개가 다시 오는게 되는건 먼일이 아닐지도 모르겠다.
LNG 급등에 전력단가 58%↑.. 허리휘는 한전
[링크 : https://news.v.daum.net/v/20211108150833365]
中석탄공급·전력난해소·요소가격 하락, 韓요소수 대란 숨통 트일까
오랫만에 정치 늬우스 (2) | 2021.12.23 |
---|---|
코로나 5천 돌파 (0) | 2021.12.01 |
휴가 1일차 (0) | 2021.10.27 |
노태우 전 대통령 89세 별세 (0) | 2021.10.26 |
누리호 성공 (0) | 2021.10.21 |
라즈베리 파이 pico의 GPIO를 이용하여
MEMS 마이크의 PDM 출력을 이용해 PDM을 PCM으로 변환하고(openPDM2PCM)
USB device 장치로 인식시켜 사운드 카드로 만드는 프로젝트
걍 ADC로 하는건 없나?
[링크 : https://www.hackster.io/sandeep-mistry/create-a-usb-microphone-with-the-raspberry-pi-pico-cc9bd5]
[링크 : https://github.com/ArmDeveloperEcosystem/microphone-library-for-pico]
라즈베리 피코 USB HID 키코드 (0) | 2021.11.16 |
---|---|
라즈베리 파이 피코 한글 키 입력? (0) | 2021.11.16 |
rpi3 2초만에 부팅하기 (0) | 2021.10.30 |
rpi 4는 USB to Ethernet이 아닌가? (0) | 2021.09.29 |
rpi zero otg (0) | 2021.09.27 |
RS485는 LSB 부터 전송하게 되는 듯?
일단 예제는 아래와 같은데
[링크 : https://www.best-microcontroller-projects.com/how-rs232-works.html]
대문자 J는 0x4A 이고
2진수로 계산하면 0b01001010 이고
실제로 찍은걸 보면 0이 Low고 1이 High로 매핑되고
LSB 부터니까 01010010 순서고
레벨을 바꾸어서 보면 10101101 인데
start bit 1개 들어가니 110101101 으로 보인다.
오호.. 신기해라(!)
nrz encoding/decoding (0) | 2022.08.24 |
---|---|
광 케이블 DAC, AOC (0) | 2022.06.30 |
EtherCAT - Ethernet for Control Automation Technology (0) | 2021.11.01 |
WiFi 프로토콜, cipher (0) | 2021.09.27 |
wake on patern matching (0) | 2021.06.10 |
gcc -g 옵션을 주고 빌드하지 않아서 그런가
어드레스만 주구장창 나와서 분석은 실패 ㅠㅠ
[링크 : https://blog.naver.com/hymne/221841282483]
[링크 : https://incredible-larva.tistory.com/entry/core-dump-분석을-위한-gdb-간단-정리]
uniq 카운트 (0) | 2021.12.07 |
---|---|
grep 바이너리 파일 일치함 (0) | 2021.12.06 |
convert fb(rgb565) to png 실..패? (0) | 2021.10.18 |
bash multiple session history (0) | 2021.10.01 |
특정 pts에서 프로그램 실행하기 (0) | 2021.09.27 |
개략적으로 보면.. select나 poll이나 비슷하게 이벤트 발생시 누가 발생했는지 찾아서 처리해야 하고
epoll은 이벤트 발생시 발생목록을 전달하여, 누가 발생했는지 찾을 필요 없이 바로 처리하면 된다.
다만 select는 1024가 한번에 다룰수 있는 최대 fd 갯수고
poll은 숫자제한은 없지만 선형 탐색을 해야하고, 1500 넘으면 느려진다고 하고
epoll이 1500 보다 클 경우는 유리한 듯.
select / poll / epoll
[링크 : https://niklasjang.github.io/backend/select-poll-epoll/]
[링크 : https://applefarm.tistory.com/144]
select
while(1) { fd_num = select(...); if(fd_num == -1) break; else if(fd_num == 0 ) continue; for(int fd =0; fd < fd_max + 1; ++fd) { if(FD_ISSET(fd, &cpy_reads)) { // TODO } } close(server_socket); return 0; } |
[링크 : https://ozt88.tistory.com/21]
poll
#include <poll.h> #include <fcntl.h> #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \ } while (0) int main(int argc, char *argv[]) { int nfds, num_open_fds; struct pollfd *pfds; if (argc < 2) { fprintf(stderr, "Usage: %s file...\n", argv[0]); exit(EXIT_FAILURE); } num_open_fds = nfds = argc - 1; pfds = calloc(nfds, sizeof(struct pollfd)); if (pfds == NULL) errExit("malloc"); /* Open each file on command line, and add it 'pfds' array. */ for (int j = 0; j < nfds; j++) { pfds[j].fd = open(argv[j + 1], O_RDONLY); if (pfds[j].fd == -1) errExit("open"); printf("Opened \"%s\" on fd %d\n", argv[j + 1], pfds[j].fd); pfds[j].events = POLLIN; } /* Keep calling poll() as long as at least one file descriptor is open. */ while (num_open_fds > 0) { int ready; printf("About to poll()\n"); ready = poll(pfds, nfds, -1); if (ready == -1) errExit("poll"); printf("Ready: %d\n", ready); /* Deal with array returned by poll(). */ for (int j = 0; j < nfds; j++) { char buf[10]; if (pfds[j].revents != 0) { printf(" fd=%d; events: %s%s%s\n", pfds[j].fd, (pfds[j].revents & POLLIN) ? "POLLIN " : "", (pfds[j].revents & POLLHUP) ? "POLLHUP " : "", (pfds[j].revents & POLLERR) ? "POLLERR " : ""); if (pfds[j].revents & POLLIN) { ssize_t s = read(pfds[j].fd, buf, sizeof(buf)); if (s == -1) errExit("read"); printf(" read %zd bytes: %.*s\n", s, (int) s, buf); } else { /* POLLERR | POLLHUP */ printf(" closing fd %d\n", pfds[j].fd); if (close(pfds[j].fd) == -1) errExit("close"); num_open_fds--; } } } } printf("All file descriptors closed; bye\n"); exit(EXIT_SUCCESS); } |
[링크 : https://man7.org/linux/man-pages/man2/poll.2.html]
epoll
int epoll_fd = epoll_create(EPOLL_SIZE); struct epoll_event* events = malloc(sizeof(struct epoll_event)*EPOLL_SIZE); struct epoll_event init_event; init_event.events = EPOLLIN; init_event.data.fd = server_socket; epoll_ctl(epoll_fd, EPOLL_CTL_ADD, server_socket, &init_event); while(TRUE) { int event_count = epoll_wait(epoll_fd, events, EPOLL_SIZE, -1); if( event_count = -1 ) break; for( int i = 0 ; i < event_count; ++i ) { if(events[i].data.fd == server_socket) //서버 소켓에 이벤트 { //accept 처리 ... init_event.events = EPOLLIN; init_event.data.fd = new_client_socket; epoll_ctl(epoll_fd, EPOLL_CTL_ADD, new_client_socket, &init_event); } else //이벤트가 도착한 소켓들 { //read, write, closesocket처리 } } } closesocket(server_socket); close(epoll_fd); return 0; |
[링크 : https://ozt88.tistory.com/21]
+
오래된 글이지만 벤치마크 결과 poll/select는 거의 동일한 성능이고
fd 갯수가 늘어갈수록 느려지지만, epoll이나 kqueue의 경우 일정 상한 이상으로는 성능이 유지되는 경향을 보인다.
[링크 : https://monkey.org/~provos/libevent/libevent-benchmark.jpg]
[링크 : https://kldp.org/node/46542]
일반적으로 소켓수가 1500이하일때는 퍼모먼스 차이는 거의 없는것으로 알고 있습니다. select poll epoll 의 성능차이는 5000 이상부터 급격히 달라집니다. |
[링크 : http://foroum.gpgstudy.com/forum/viewtopic.php?t=12610]
zeroMQ (0) | 2022.09.20 |
---|---|
파일 존재유무 확인하기 (0) | 2022.02.11 |
Unhandled fault: external abort on non-linefetch (0) | 2021.05.25 |
Stopped (tty input) (0) | 2021.05.21 |
linux gpio interrupt poll? (0) | 2021.05.04 |
메모리 카드가 없다고 해서 분해해보니, 정말 SD 메모리 카드가 있네?!
구형이랑 다른게 sd 메모리 인줄 알았는데, 슬롯만 내부에 내장시키고 외부로 꺼내지 않았을뿐
동일한 구조인 것 같다는게 킹리적 갓심 -_-
남는 나사 하나는 어디서 나온거냐...
AXP173 GB132A 62G1 - 리튬이온 배터리 충전 및 PMIC
[링크 : http://www.x-powers.com/en.php/Info/product_detail/article_id/27]
N51822 QFABC0 1530NQ - BLE nRF51822
[링크 : https://www.nordicsemi.com/products/nrf51822]
BE1704 25Q16C61G P14915 - 정체 불명(SPI나 i2C 메모리나 램 아니려나?)
ANYKA AK3750CB121 T2A01B17 - ARM926EJ-S
[링크 : http://www.anyka.com/en/productInfo.aspx?id=107]