검색
아하에서 찾은 849건의 질문
- 생활꿀팁생활Q. php에서 반복되는 sql 쿼리를 어떻게 하면 하나로 끝낼 수 있을까요?안녕하세요.php, mysql을 사용한 그누보드 서버에서 아래와 유사한 코드를 사용중인데요, 이렇게 하면 mysql이 cpu를 다 잡아먹어서 과부하가 걸립니다.해결방법을 찾다가 sql문을 루프돌리는것보다는 join으로 해결하라고 하는 글을 봤는데 실제로 sql문을 과도하게 실행하는게 서버 부하의 주원인입니다.그래서 sql쿼리를 한번만 사용하도록 코드를 바꾸고 싶은데 sql에 대해 많이 미숙해서 어떻게 바꿔야할지 잘 모르겠어서 도움 부탁드립니다.코드를 설명드리자면, 테이블의 24시간치 데이터를 가지고 100 / 분당 레코드수를 계산한 값을 모두 합하는 코드입니다.혹시 이해하기 어려우실까봐 2분 데이터만 사용하는걸로 예를들면 처음 1분은 100개의 레코드가 있고, 다음 1분은 50개의 데이터가 있다고 하면$sum = 100/100 + 100/50 즉, 3이 나옵니다.2분이면 루프가 2번이지만, 아래 코드는 24시간 데이터니까 24*60 = 1440번 루프를 실행하게 되죠.sql_fetch가 그누보드 함수던데 혹시라도 그누보드를 안쓰시는 전문가님들이 계실수도 있어서 아래에 해당함수 내용을 추가했습니다.문제의 코드:$sum = 0; for ($i = 0; $i < 1440; $i++){ // 24시간 * 60분 = 1440 $time1 = date("Y/m/d H:i",(strtotime($basetime) - 864000 + ($i * 60))).":00"; // $basetime으로부터 24시간 전부터 1분전까지 1분씩 증가 $time2 = date("Y/m/d H:i",(strtotime($basetime) - 60 + ($i * 60))).":59"; // $basetime으로부터 23:59:59 전부터 basetime까지 1분씩 증가 $sql = "select count(*) as cnt from mytable where start_time between '$time1' and '$time2'"; // mytable에서 $time1~$time2 시간 사이(1분)의 레코드수를 가져오는 쿼리 $query_result = sql_fetch($sql); // 쿼리 실행 $sum += 100 / $query_result['cnt']); // 100/레코드수를 누적합산 } echo $sum;sql_fetch 함수:function sql_fetch($sql, $error=TRUE) { $result = sql_query($sql, $error); //$row = @sql_fetch_array($result) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : $_SERVER[PHP_SELF]"); $row = sql_fetch_array($result); return $row; } function sql_fetch_array($result) { $row = @mysql_fetch_assoc($result); return $row; }
- 무역경제Q. 무역) 비지니스 영어 이메일 작성요령??종종 해외 셀러와 영어 이메일을 주고받는데,제가 작성요령이 좀 부족한지, 사장님과 상사분께서 문장을 좀더 간결하게 다듬고 주어를 I 보단 We를 많이 사용 하라고 하더군요...그래서 비지니스 영어 이메일 책도 보긴했는데,, 뭔가 부족해서요... 혹시 참고할 만한 영어 이메일 사이트? 또는 괜찮은 책 추천 부탁 드려도 될까요...?
- 생활꿀팁생활Q. c언어 구조체 성적표만들기 출력부분 알려주세용...#include <stdafx.h> #include <stdio.h> #define MAXINPUTCOUNT 3 struct student{ char name[20]; int korean; int english; int math; int total; double average; }; void swap(student *parmfrist, student *parmsecond) { student temp; temp = *parm_frist; *parmfrist = *parmsecond; *parm_second = temp; } void main() { struct student record[MAXINPUTCOUNT]; int i, j; for(i = 0; i < MAXINPUTCOUNT; i++){ printf("-. 이름을 입력하세요 : "); scanf("%s", record[i].name); printf("-. 국어점수 : "); scanf("%d", &record[i].korean); printf("-. 영어점수 : "); scanf("%d", &record[i].english); printf("-. 수학점수 : "); scanf("%d", &record[i].math); record[i].total = (record[i].korean + record[i].english + record[i].math); record[i].average = record[i].total / 3.0; printf("\n"); }만약 입력부분이 이렇다면 출력부분이┌───┬───┬───┬───┒│번호 │ 1 │이름 │ ││───┼───┼───┼───┤│국어 │ │총점 │ ││───┼───┼───┼───┤│수학 │ │평균 │ ││───┼───┼───┼───┤│영어 │ │등수 │ │└───┴───┴───┴───┘이런식으로 표를 만들고싶은데 알려주세요
- 생활꿀팁생활Q. 기수정렬 모르겠어서 질문드립니다!#include <stdlib.h>#include <stdio.h>void PrintsortedArr(int* a, int n) { }void CountingSort(int a[], int n, int b[], int exp) {int N[10] = { 0 };for (int i = 0; i < n; i++) {N[a[i]] / exp % 10]++;}for (int i = 1; i <= 9; i++) {N[i] += N[i - 1];}for (int i = 0; i < n; i++) {b[N[a[i] / exp % 10] - 1] = a[i];;N[a[i] / exp % 10]--;}for (int i = 0; i < n; i++) {a[i] = b[i];}}void RadixSort(int a[], int n) {int max = a[0], exp = 1;int b[10] = { 0 };for (int i = 1; i < n; i++) {if (max < a[i]) max = a[i];}while (max / exp > 0) {CountingSort(a, n, b, exp);exp = exp * 10;}}int main(void){int a[10] = { 213,319,561,636,880,965,635,764,129,120 };PrintSortedArr(a, 10);Radixsort(a, 10);PrintSortedArr(a, 10);}위와 같이 기수정렬할때 계수정렬을 이용하는 프로그램을 짜고있는데 PrintSortedArr 여기 출력 부분을 아예 모르겠어서 질문드립니다. 출력부분 전체를 알려주시면 감사하겠습니다 ㅎㅎㅎ
- 생활꿀팁생활Q. 밴드 오픈 Api에서 글쓰기 요청을 어떻게 하나요?def post(u,d): try: headers = {'Content-Type': 'application/json'} res = requests.post(u, data=d) except Exception as e: print("Error : " + e) return res post("https://openapi.band.us/v2.2/band/post/create", {"access_token" : preset["token"], "band_key" : bandlst[i][1], "content" : preset["data"]}).json()) 자꾸 Unauth 에러가 나네요... 혹시 코드에 잘못된 점 있나요? Access Token은 문제 없는데...
- 생활꿀팁생활Q. 파이썬 코딩 질문입니다 매개변수 쪽#1015-42.py# two integer def functionimport randomdef add() : #1 add z = x + y print("%d + %d = %d" % (x,y,z))def compare() : #2 compare if x > y : print("%d > %d" % (x,y)) elif x < y : print("%d < %d" % (x,y)) else : print("%d = %d" % (x,y))def loopsum() : #3 sum #x = random.randrange(0,100) #y = random.randrange(0,100) if x > y : z = x x = y y = z hap = 0 for i in range() : hap += i print("%d ~ %d sum = %d" % (x,y,hap))#mainwhile True : x = random.randrange(0,100) y = random.randrange(0,100) print("--------------") print(" 1.add") print(" 2.compare") print(" 3.sum") print(" 4.exit") print("--------------") n = input("n : ") n = int(n) if n ==1 : add() elif n == 2 : compare() elif n == 3 : loopsum() elif n == 4 : print("end ----") break else : continue이대로 돌렸을경우 1 과 2를 눌렀을때엔 잘나오는데 3번 loopsum을 돌리면 안됩니다. 매개변수를 직접 넣어주면 되긴하는데, 1번이랑 2번은 잘되는데 왜 3번만 안되는지 궁금합니다.
- 생활꿀팁생활Q. 광고카피 제작할때 5I의 법칙이 무엇인가요?광고카피 제작할 때5I의 법칙은광고 제작할 때 꼭 지겨야 할5대 기본원칙이라고 하는데구체적으로 무엇들이 있는지 궁금합니다답변 부탁드립니다..................
- 생활꿀팁생활Q. [질문] if문으로 한글과 공백 구분하는 법#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <Windows.h>int main(){int temp, temp2;char str[50] = { 0 };int len = 0;int vel = 0;printf("출력할 텍스트를 입력해주세요 : ");gets_s(str, sizeof(str)); //공백 문자를 포함한 문장 전체를 저장printf("속도를 설정해주세요(정수값만 사용) : ");scanf("%d", &vel);len = strlen(str); //변수len의 값을 str문자열의 길이에 값으로 치환한다.while (1){system("cls"); //콘솔창에 있는 코드를 지우는 함수이다.printf("%s", str);printf("\n\n현재속도 : %d초", vel);printf("\n종료 : Ctrl + C");if () //영어{char temp = str[0]; //문자열의 첫단어를 temp변수에 저장한다.for (int i = 1; i < len; i++) //두번째 문자부터 마지막 문자까지 반복한다.{str[i - 1] = str[i]; //문자열의 모든 문자를 한칸씩 이동한다.}str[len - 1] = temp; //보관했던 문자를 맨뒤에 나열한다.}else //한글{char temp = str[0]; //한글은 2바이트이기 때문에 2바이트인 한글자를 저장한다.char temp2 = str[1];for (int i = 2; i < len - 1; i++) //두번째 문자부터 마지막 문자까지 반복한다.{str[i - 2] = str[i]; //문자열의 모든 문자를 한칸씩 이동한다.str[i - 1] = str[i + 1];}str[len - 2] = temp; //보관했던 문자를 맨뒤에 나열한다.str[len - 1] = temp2;}Sleep(vel * 1000); //프로그램을 잠시 멈추는 함수이다.(1000초는 1초를 의미한다.)}return 0;}if문으로 한글과 공백을 구분할 수 있을까요? 저는 누구누구 입니다 를 입력하면 저는 까지 잘나오는데 공백을 구분못해서 문자가 깨집니다... 어떻게 해결해야하나요..?
- 생활꿀팁생활Q. 알고리즘 선택정렬시 걸리는 측정시간에 대해 질문드립니다~#include<stdio.h>#include<stdlib.h>#include<time.h>void SelectionSort(int* a, int n) {int MinIndex;for (int i = 0; i < n - 1; i++) {MinIndex = i;for (int j = i + 1; j < n; j++) {if (a[MinIndex] > a[j]) {MinIndex = j;}}if (MinIndex != i) {Swap(&a[i], &a[MinIndex]);}}} void inverse_SelectionSort(int* a, int n) {int MaxIndex;for (int i = 0; i < n - 1; i++) {MaxIndex = i;for (int j = i + 1; j < n; j++) {if (a[MaxIndex] < a[j]) {MaxIndex = j;}}if (MaxIndex != i) {Swap(&a[i], &a[MaxIndex]);}}} int main(void) {int i, A[10], B[100], C[1000], D[10000], E[50000], F[100000]; int seed = time(NULL);int start, finish, count = 0, count2 = 0;double duration, meanduration = 0, avgduration = 0; srand(seed);for (i = 0; i < 10; i++)A[i] = rand() % 10000;SelectionSort(A, 10);printf("선택정렬 : ");PrintSortedArr(A, 10);(.................)}현재 알고리즘을 공부중인 대학생입니다. 선택정렬시에 n이 10,100,1000,10000,50000,100000 일때 난수 생성해서 선택정렬방법으로 걸리는 시간을 측정하는 프로그램을 짜고 있는데 시간 측정하는 부분 (........) 이부분을 잘 모르겠어서 질문드립니다! 이부분 코딩전체를 알려주시면 정말 감사하겠습니다 ㅎㅎ
- 생활꿀팁생활Q. c언어 c++언어 입니다 입력부분 코딩해봤는데 잘안돼요... 틀린부분을 어떻게 고쳐야되는지 알려주세요#define CRTSECURENOWARNINGS#include <iostream>#define MAXINPUTCOUNT 2struct student { char name[20]; int kor; int eng; int math; int total; int pen; int grade; double average;};void swap(student* parmfrist, student* parmsecond){ student temp; temp = *parm_frist; *parmfrist = *parmsecond; *parm_second = temp;}int main() { struct student s[MAXINPUTCOUNT]; int i, j; for (i = 0; i < MAXINPUTCOUNT; i++) { printf("이름을 입력하세요 : "); scanf("%s", s[i].name); printf("1) 국어점수를 입력하세요 : "); scanf("%d", &s[i].kor); printf("2) 영어점수를 입력하세요 : "); scanf("%d", &s[i].eng); printf("3) 수학점수를 입력하세요 : "); scanf("%d", &s[i].math); s[i].total = (s[i].kor + s[i].eng + s[i].math); s[i].average = s[i].total / 3.0; printf("\n"); } if (s[i].average >= 90) s[i].grade = 'A'; else if (s[i].average >= 80) s[i].grade = 'B'; else if (s[i].average >= 70) s[i].grade = 'C'; else if (s[i].average >= 60) s[i].grade = 'D'; else s[i].grade = 'F'; if (s[i].average >= 70) s[i].pen = '합격'; // 이부분 else (s[i].average < 70) s[i].pen = '불합격'; // 이부분이 틀렸다고 나오는데 어떻게해야하나요 혹시 여기 말고 다른부분도 틀린거 있으면 알려주시고 고쳐주세요 ㅠ.ㅠ return 0;}추가 질문은 결과화면이 [홍길동]님의 성적은 국어점수 [100], 수학점수[100], 영어점수[100]이고,총점[300], 평균[100.00], 학점[A]으로졸업 시험에 [합격] 하였습니다.이렇게 나오게 하고싶습니다 알려주시면 감사하겠습니다...