묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
m1 맥에서 크롬 웹드라이버는 어디서 받아야 하나요? 선생님 ㅠㅠ
셀레니움 기본 강의에서는 자동으로 업데이트 해서 하는 방법을 알려주셨는데 유튜브 크롤링 프로그램 만들때는 경로 지정해서 하셔서요제가 헷갈리고 있는건가요? ㅠㅠ하는방법 알려주세요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Player가 Monster를 타고 올라가는 이유는?
이전 질문을 검색하다 보니 hit.point가 몬스터를 클릭할 때 Y값이 1 이상으로 되면서 Player가 쓰러진다는 내용을 보고 코드를 아래와 같이 수정했더니 Playe가 쓰러지지 않았습니다.플레이어는 Use Gravity Off/ isTrigger On으로 된 상태입니다. 그런데 강사님이 공유해주신 코드를 비교해보면 y값을 잡아주지 않은 상태에서 몬스터 클릭시 hit.point의 y값이 1 이상이 되어도 Player가 몬스터를 타고 올라가지 않고, 넘어지지도 않습니다. _destPos의 Y값이 1 이상인데, Player가 움직일때 Y값을 0을 유지하는 설정, 코드가 있는 걸까요?
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
로그아웃 기능
안녕하세요 호돌맨님 강의 너무 잘 듣고 있습니다. 다름이 아니라 로그아웃 기능에 대해서 질문이 있습니다.@PostMapping("/auth/logout") public ResponseEntity<Object> logout(UserSession userSession) { ResponseCookie cookie = ResponseCookie.from("SESSION", "") .path("/") .maxAge(0) .build(); return ResponseEntity.ok() .header(HttpHeaders.SET_COOKIE, cookie.toString()) .build(); }현재 컨트롤러만 만들었고 쿠키 maxAge에 0값을 주는 방법으로 로그아웃 되는 건 확인했습니다.궁금한 건 로그아웃 할 때 user가 가지고 있는 session 리스트와 sessionRepository에서session을 지워주는 것이 맞는지 궁금합니다. 만약 지워주는 방식으로 한다며 자동으로 만료되는 쿠키에 session에 대해선 어떻게 처리하나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
npx sequelize db:create 오류
비밀번호를 바꾼후에 npx sequelize db:create를 실행했는데,Unexpected token '(' 이라는 에러가 뜹니다.보통 이런경우 타이포 error 일것 같아서 파일을 살펴 봤는데 별다른 오타는 없었습니다.다른곳을 살펴봐야할 부분이 있을까요?감사합니다.
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
수업자료 다운로드
수업자료 다운로드 챕터를 클릭하면첨부파일 다운로드 받으라는 멘트만 있고다운받을 수 있는 버튼이 안 보입니다. ㅜㅜ수업자료는 어디서 받을 수 있는건가요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
RPC가 Property Replication 보다 빠른가요?
뜬금없는질문이지만...1강 32:20 경에 Property Replication이 RPC에 비해 반응속도가 느리다 라고 말씀하셨는데왜 그런지 간략히 알수 있을까요?저는 그동안 반대로 알고있었거든요. RPC가 느린줄...
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
AGameState는 어떻게 Connection을 가지고 통신을 하는지 궁금합니다.
3강 강의를 듣다가 궁금하게 생겼습니다.일단 저는 다음과 같이 이해하였습니다.'어떤 Actor가 통신을 하려면 Owner를 따라가봤을때 Connection을 소유해야 하며, 일반적으로 Actor 통신 시 Connection을 가지는 PlayerController의 Connection을 이용하여 통신을 진행한다.' 통신에는 RPC, Property Replicate가 속한다고 생각합니다. 그런데, 제가 AGameState에서 Replicate와 RPC를 사용했던 적이 있어서, 이건 어떻게 통신할까? 혹시 서버의 PlayerController가 Owner일까? 궁금했습니다.그래서 다음과 같이 AGameState의 HandleBeginPlay에서 람다로 충분한 시간을 준 뒤 Owner를 출력해보았으나,void AABGameState::HandleBeginPlay() { AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("Begin")); Super::HandleBeginPlay(); AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("End")); FTimerHandle handle; GetWorld()->GetTimerManager().SetTimer(handle, [this]() { AB_LOG(LogABNetwork, Log, TEXT("Owner : %s"), *Owner->GetName()); }, 10.f, false); }Owner 접근 시 크래시가 나는것을 확인하였습니다. 그렇다면, AGameState는 어떻게 Connection을 사용할 수 있는 것인가요?제가 잘못 이해한 것일까요?특별한 Connection을 가지는 Actor가 따로 있나요? 아니면 AGameState가 자체적으로 Connection을 가지게 되나요? 혹시 이후 강의에 다루는데 제가 아직 3강까지 밖에 안 봐서 모르는 것일까요..?
-
해결됨[코드캠프] 시작은 프리캠프
회원가입 과제 질문
* { justify-content: center; align-items: center; } .hr { width: 470px; height: 0.998px; flex-shrink: 0; background: #e6e6e6; } .bak { width: 670px; height: 960px; border-radius: 20px; border: 1px solid #aacdff; background: #fff; box-shadow: 7px 7px 39px 0px rgba(0, 104, 255, 0.25); } .h2 { width: 466px; color: #0068ff; font-family: Noto Sans CJK KR; font-size: 32px; font-style: normal; font-weight: 700; line-height: normal; } .email { width: 158px; height: 23.649px; flex-shrink: 0; color: #797979; font-family: Noto Sans CJK KR; font-size: 16px; font-style: normal; font-weight: 400; line-height: normal; } .name { width: 158px; height: 23.649px; } .pw { width: 158px; height: 23.649px; } .pw { border: 1px solid blue; } .button { border-radius: 10px; border: 1px solid #0068ff; background: #fff; width: 470px; height: 75px; flex-shrink: 0; } .check { color: #000; font-family: Noto Sans CJK KR; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; } <!DOCTYPE html> <html lang="ko"> <head> <title>회원가입</title> <link href="./02-signup.css" rel="stylesheet" /> </head> <body> <div class="bak"> <h2 class="h2">회원 가입을 위해<br>정보를 입력해주세요</h2> <input class="email" type="text" placeholder="이메일" /><br /><br /> <input class="name" type="text" placeholder="이름" /><br /><br /> <input class="pw" type="password" placeholder="비밀번호" /><br /><br /> <input class="pw" type="password" placeholder="비밀번호 확인" /><br /><br /> <select> <option disabled="true" selected="true">지역을 선택하세요</option> <option>서울</option> <option>경기</option> <option>인천</option> </select> <br /><br /> <input class="radio" type="radio" name="gender" />여성 <input class="radio" type="radio" name="gender" />남성 <br /><br /> <input class="check" type="checkbox" /> 이용약관 개인정보 수집 및 동의 <hr class="hr"> <br> <br> <button class="button">가입하기</button> <!-- <input type="button" value="가입하기" /> --> </body> </div> </html> 코드 작성한 게 저렇게 화면이 보여지는데 가운데 정렬을 하려면 어떻게 해야될까여..... flex랑 just로 시작하는 속성을 넣으면 이상하게 되더라구요 너무 어렵네요 ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Player의 State가 Moving 상태일 때 몬스터 옆으로 가면 Collider가 사선으로 기우는 이유는?
13강 MiniRPG를 만들면서 보면Player가 Monster의 주변을 클릭하면 공격하지 않고 이동하는 경우가 있습니다. (Raycast가 monster에 맞지 않고 근처 땅에 맞은 경우라고 생각하고 있습니다.) 그때 Player가 사선으로 기우는 경우가 생깁니다. Player의 Rigidbody.Constraints.FreezeRotation을 x, y, z를 모두 체크해도 Player가 사선으로 기울게 됩니다. Q1. 왜 Player가 사선으로 기울게 되는지 알 수 있을까요?그런데 언젠가 부터 원기둥(캡슐 콜라이더는 아닌듯한)이 생겨있어요. 이 원기둥 때문에 사선이여도 뒤로 넘어지지 않는것 같은데, 이 Q2. 원기둥이 뭘까요?Monster(Moving 상태)와 Player(Moving 상태)의 콜라이더를 비교한 샷도 같이 올립니다.Player가 공격 기능을 넣을때부터 계속 나온 이슈인데, 해결이 되지 않고 있습니다. 설명 부탁드립니다.13강 MiniRPG를 만들면서 보면Player가 Monster의 주변을 클릭하면 공격하지 않고 이동하는 경우가 있습니다. (Raycast가 monster에 맞지 않고 근처 땅에 맞은 경우라고 생각하고 있습니다.) 그때 Player가 사선으로 기우는 경우가 생깁니다. Player의 Rigidbody.Constraints.FreezeRotation을 x, y, z를 모두 체크해도 Player가 사선으로 기울게 됩니다. Q1. 왜 Player가 사선으로 기울게 되는지 알 수 있을까요?그런데 언젠가 부터 원기둥(캡슐 콜라이더는 아닌듯한)이 생겨있어요. 이 원기둥 때문에 사선이여도 뒤로 넘어지지 않는것 같은데, 이 Q2. 원기둥이 뭘까요?Monster(Moving 상태)와 Player(Moving 상태)의 콜라이더를 비교한 샷도 같이 올립니다.Player가 공격 기능을 넣을때부터 계속 나온 이슈인데, 해결이 되지 않고 있습니다. 설명 부탁드립니다. (혹시나 해서 관련샷 추가합니다.)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
select에서 sequence로 반복할경우 선택된 값이 보여지게 할려면 어떤식으로 해야할까요?
<select name="where" title="초급" class="sel_auto" th:field="*{beginnerCount}"> <option value="0">초급</option> <option th:each="num: ${#numbers.sequence(1, 10)}" th:text="${num + '명'}" th:value="${num}">1</option> </select>위와같이 numbers.sequence로 1~10까지 select로 만들었는데서버에서 th:field=*{beginnerCount} 값을 받아와서 만약 받아온 값이 5라고 하면 5가 선택되어지도록 하고 싶은데이럴 경우에는 어느부분을 수정을 해야 서버에서 받은 값이 선택이 되어질까요?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
데이터 타입 변환에 관한 질문입니다.
타입 변환에 관한 질문이며 문자열을 정수로, 정수를 문자열로 변환하는 과정 중에 int(), str() 함수를 사용하여 데이터 타입 변환 후 변수에 할당하였을 때는 print(type())을 출력하면 변환된 타입이 출력되어 결과값이 확인되지만, 그렇지않고 print()함수 안에서 int(),str() 함수를 사용하여 변환시에는 위의 사진과 같이 type()함수로 확인 시 int(), str()함수를 썻음에도 불고하고, 출력값이 변환되지않고 나오게됩니다. type을 변환하기 위해서는 따로 변수를 만들어서 int(), str() 함수를 써서 변수에 할당해주어야하나요??
-
해결됨홍정모의 따라하며 배우는 C++
함수 호출 로그에 대해 질문 있습니다.
지금 전문가를 위한 C++ (개정판 3판)으로 공부하고 있습니다. 이 부분에서 오류가 발생해서 구글 검색을 해봤는데도 해결을 하지 못했습니다.이 예제를 실행시키려면 어떠한 문법을 써야 하나요?
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
PostDetailPage params 이 어디서 온건가요?
async function PostDetailPage({ params }: any) { const post = await getPost(params.id); return ( <div> <h1>Posts/{post.id}</h1> <div> <h3>{post.title}</h3> <p>{post.created}</p> </div> </div> ); }PostDetailPage 에서 params을 콘솔에 출력하면 id값이 나오는거는 주소에서 받아오는건가요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
리얼타임 데이터베이스의 저장하기,불러오기 부분은 완성 코드가 없나요? ㅠ
package com.android.diet_memo import android.app.DatePickerDialog import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.widget.Button import android.widget.DatePicker import android.widget.EditText import android.widget.ListView import androidx.appcompat.app.AlertDialog import com.android.diet_memo.databinding.ActivityMainBinding import com.google.firebase.database.DataSnapshot import com.google.firebase.database.DatabaseError import com.google.firebase.database.ValueEventListener import com.google.firebase.database.ktx.database import com.google.firebase.ktx.Firebase import java.util.Calendar import java.util.GregorianCalendar class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding // private lateinit var 와 lazy를 쓰는경우 정확히 어떤차이? val dataModelList = mutableListOf<DataModel>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val database = Firebase.database val myRef = database.getReference("시발 개좆같은 fianl") val listView = findViewById<ListView>(R.id.mainLV) val adapter_list = ListVeiwAdapter(dataModelList) listView.adapter = adapter_list myRef.addValueEventListener(object : ValueEventListener { override fun onDataChange(snapshot: DataSnapshot) { for (dataModel in snapshot.children) { Log.d("Data", dataModel.toString()) dataModelList.add(dataModel.getValue(DataModel::class.java)!!) } Log.d("DataMoel",dataModelList.toString()) } override fun onCancelled(error: DatabaseError) { TODO("Not yet implemented") } }) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.writebtn.setOnClickListener { val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null) val mBuilder = AlertDialog.Builder(this) .setView(mDialogView) .setTitle("운동 메모 다이얼로그") val mAlertDialog = mBuilder.show() val DateSelectBtn = mAlertDialog.findViewById<Button>(R.id.dateSelectBtn) var dateText = "" //dateText 버튼은 변경되니까 var로 DateSelectBtn?.setOnClickListener { val today = GregorianCalendar() val year: Int = today.get(Calendar.YEAR) val month: Int = today.get(Calendar.MONTH) val date: Int = today.get(Calendar.DATE) val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener { override fun onDateSet( view: DatePicker?, year: Int, month: Int, dayOfMonth: Int ) { Log.d("Main", "${year}, ${month + 1}, ${dayOfMonth}") DateSelectBtn.setText("${year}, ${month + 1}, ${dayOfMonth}") dateText = "${year}, ${month + 1}, ${dayOfMonth}" // dateText를 이런식으로 묶음 } }, year, month, date) dlg.show() } val saveBtn = mAlertDialog.findViewById<Button>(R.id.saveBtn) saveBtn?.setOnClickListener { // Write a message to the database val healMemo = mAlertDialog.findViewById<EditText>(R.id.healthMemo)?.text.toString() val database = Firebase.database val myRef = database.getReference("final") val model = DataModel(dateText, healMemo) //계속 이런식으로 껍데기를 만드는걸 연습해야할듯,,? myRef.setValue(model) myRef .push() .setValue(model) mAlertDialog.dismiss() } } } }리스트뷰 생성후 어뎁터 연결하는부분 따라치고나서부터 알수없는 에러로,,연결이 되지않습니다42번째 라인dataModelList.add(dataModel.getValue(DataModel::class.java)!!) 부분에서 오류가 났다고 gpt선생님이 그러시는데.. 잘모르겠습니다.package com.android.diet_memo data class DataModel ( val date:String = "", val memo:String = "" )package com.android.diet_memo import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.TextView class ListVeiwAdapter(val List : MutableList<DataModel>) : BaseAdapter() { override fun getCount(): Int { return List.size } override fun getItem(position: Int): Any { return List[position] } override fun getItemId(position: Int): Long { return position.toLong() } override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { var convertView = convertView if (convertView == null) { convertView = LayoutInflater.from(parent?.context).inflate(R.layout.listview_item,parent,false) } val date = convertView?.findViewById<TextView>(R.id.ListViewDateArea) val memo = convertView?.findViewById<TextView>(R.id.ListViewMemoArea) date!!.text = List[position].date memo!!.text = List[position].memo Log.d("Test","Date: ${date.text},Memo: ${memo.text}") return convertView!! } }package com.android.diet_memo import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.util.Log import android.widget.Toast import com.android.diet_memo.databinding.ActivityMainBinding import com.android.diet_memo.databinding.ActivitySplashBinding import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.ktx.auth import com.google.firebase.ktx.Firebase import java.lang.Exception class Splash : AppCompatActivity() { private lateinit var binding: ActivitySplashBinding private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySplashBinding.inflate(layoutInflater) setContentView(binding.root) auth = Firebase.auth try { Log.d("SPLASH", auth.currentUser!!.uid) Toast.makeText(this,"원래 비회원 로그인이 되어있는 사람입니다",Toast.LENGTH_LONG).show() // splash 부분 Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() },3000) // splash 부분(끝) } catch (e: Exception) { Log.d("fxxk", "회원가입 시켜줘야함") //실패하고, 회원가입 시켜줘야하므로 catch 부분에 예외처리를 해주고,익명로그인 창으로 뜨게한다. auth.signInAnonymously() //firebase 익명로그인 하는 코드 시작부분 .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Toast.makeText(this,"비회원 로그인 성공", Toast.LENGTH_LONG).show() // splash 부분 Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() },3000) // splash 부분(끝) } else { // If sign in fails, display a message to the user. Toast.makeText(this,"비회원 로그인 실패", Toast.LENGTH_LONG).show() } } } } }클래스파일 전체입니다
-
미해결스프링 배치
processor 분기 처리
안녕하세요 강의 도움이 많이되고 있어 감사말씀드립니다.제가 FCM을 사용한 그룹 알림 발송 배치 API 를 개발 중에 있습니다. processor 에서 그룹에 속한 알림에 대해서 fcm 전송을 하는데 trcy catch 로성공일 경우 알림성공 업데이트를 위한 객체를 생성하고실패일 경우 알림실패 업데이트를 위한 객체 따로따로 생성하고 있습니다.그 다음으로 writer 로 던집니다. 문제는 stepListener 에서 총 몇개에서 총 몇건 전송했고, 성공, 실패 로깅하는 방법을 모르겠습니다.또 stepListener 에서 모두 다 실패했으면 알림 그룹의 상태 값을 전송 실패 그 외 성공으로 변경하는 로직이 있습니다. 추가 +일단 StepSynchronizationManager 를 사용해서 ExecutionContext 에 저장해서 stepListener 에서 아래와 같이 사용하고 있습니다. 올바르게 사용한건지 궁금합니다.int successCount = stepExecution.getExecutionContext().getInt("successCount", 0); int failureCount = stepExecution.getExecutionContext().getInt("failureCount", 0);
-
미해결ElasticSearch Essential
7번째 강의에서 Token과 Term은 다른 건가요??
공부하다보니 Token, Term이라는 단어를 보게 되었는데요 Token : 문자열을 쪼갠 키워드Term : Token이 필터되고 역색인에 저장된 키워드 이렇게 정리하는게 맞을까요??
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
라우팅 테이블 추가 후 바로 ping이 안되는 원인
안녕하세요. 수업 들으면서 궁금한 점이 있어서 질문을 남겨놓습니다. RIPv1, RIPv2 강의 중에 라우팅 설정이 끝나도 처음 한번은 ping이 안될 수 있다고 말씀해주셨는데, 어떤 사유로 처음에 안되는 건지 알 수 있을까요?
-
해결됨시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
DB 백업 스크립트 실행 오류
[스크립트 경로][root@cent2 backup]# pwd /root/backup [root@cent2 backup]# [root@cent2 backup]# ls db_backup.sh [스크립트 파일 내용]#!/bin/bash ## 변수 설정 HOST="$(/usr/bin/hostname)" LOG="/tmp/backup.log" PUSH="/root/monitor/telegram_example.sh" DATE="$(/bin/date +%Y.%m.%d)" # 백업할 디렉토리/파일 지정 BAK_LIST="/etc/my.cnf.d" # 백업 디렉토리 BAK_PATH="/mnt/BACKUP/${HOST}" # 백업 파일명 BAK_FILE="${BAk_PATH}/${DATE}_${HOST}.tgz" # DB백업디렉토리 DB_BAK_PATH="/root/backup/xtrabackup_backupfiles" # DB백업파일명 DB_BAK_FILE="${BAK_PATH}/${DATE}_${HOST}_DB.tgz" ## 스토리지에 마운트 /usr/bin/mount /mnt ## 로그파일 생성 /usr/bin/touch "${LOG}" ## 백업 디렉토리 확인 if [ -e "${BAK_PATH}" ] then # 백업디렉토리가 존재한다면 /bin/echo "백업디렉토리가 존재합니다." else /usr/bin/mkdir -p "${BAK_PATH}" fi ## --- 로그기록 시작 { /bin/echo /bin/echo "===== 백업 시작 시각 : " /bin/date /bin/echo ## 백업 # DB dump /usr/bin/mariabackup \ --backup \ --no-lock \ --target-dir="${DB_BAK_PATH}" # DB apply logs /usr/bin/mariabackup \ --prepare \ --target-dir="${DB_BAK_PATH}" # p: 퍼미션 유지 P: 절대경로 유지 /usr/bin/tar czpPf "${BAK_FILE}" ${BAK_LIST} # db백업 디렉토리 압축 /usr/bin/tar czpPf "${DB_BAK_FILE}" ${DB_BAK_PATH} # 백업파일 정보 NAME="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $9}')" SIZE="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $5}')" /bin/echo "===== 백업파일 정보: " /bin/echo " | 파일명 : ${NAME} " /bin/echo " | 파일크기 : ${SIZE}Byte " /bin/echo # DB 백업파일 정보 NAME="$(/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $9}')" SIZE="$(/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $5}')" /bin/echo "===== DB 백업파일 정보: " /bin/echo " | 파일명 : ${NAME} " /bin/echo " | 파일크기 : ${SIZE}Byte " /bin/echo # 백업종료시각 /bin/echo /bin/echo "===== 백업 종료 시각 : " /bin/date /bin/echo }>|"${LOG}" ## --- 로그기록 끝 ## 스토리지에 언마운트 /usr/bin/umount /mnt ## 텔레그램으로 백업 로그를 전송 "${PUSH}" "${HOST}" "$(/usr/bin/cat "${LOG}")" ## 로그파일 삭제 /usr/bin/rm -f "${LOG}" [발생 에러][root@cent2 backup]# [root@cent2 backup]# ./db_backup.sh 백업디렉토리가 존재합니다. [00] 2023-10-17 13:55:08 Connecting to MySQL server host: localhost, user: not set, password: not set, port: not set, socket: not set [00] 2023-10-17 13:55:08 Failed to connect to MySQL server: Access denied for user ''@'localhost' (using password:NO). /usr/bin/mariabackup based on MariaDB server 10.3.35-MariaDB Linux (x86_64) /usr/bin/mariabackup: Can't change dir to '/root/backup/xtrabackup_backupfiles/' (errno: 2 "No such file or directory") [00] 2023-10-17 13:55:08 can't my_setwd /root/backup/xtrabackup_backupfiles/ /usr/bin/tar: /root/backup/xtrabackup_backupfiles: Cannot stat: No such file or directory /usr/bin/tar: Exiting with failure status due to previous errors [root@cent2 backup]# [root@cent2 backup]# 에러가 발생하는데 어디를 수정해야할까요?
-
미해결FreeRTOS 프로그래밍
섹션 5 <커널소스분석-태스크 스택메모리> 질문 드립니다!
안녕하세요 강사님 :) 1:12 부근에서 "ARM은 메모리를 높은 주소부터 낮은 방향으로 쓴다" 고 말씀하셨는데, 이것은 리틀 엔디안 방식을 이용한다는 것을 의미하는 것일까요??그리고 맞다면 인터넷에 검색해보니 ARM은 리틀 엔디안 or 빅 엔디안 중 선택해서 사용한다고 나와 있는 것을 봤는데 모든 ARM processor가 리틀 엔디안을 쓰는 것이 맞을까요..??
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
무한스크롤 관련 내용입니다.
안녕하세요! 다른분꺼 내용 보고 해답을 찾을 뻔 했다가 무한스크롤이 50번째에서 멈추는 현상을 발견했습니다 ㅠㅠ 저는 크롬 브라우저를 띄우지 않고 진행하니까 500개까지 크롤링이 되었는데, 크롬 브라우저를 띄우고 진행하고싶은데 어떻게 해결해야할까요,,? 로딩시간 2초정도 할당했는데 진행이 안되서 질문 남깁니다!from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import urllib.request # 크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager import time import pyautogui import os # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 크롬창 안뜨게 함 chrome_options.add_argument('--headless') # headless 모드 활성화 chrome_options.add_argument('--disable-gpu') # GPU 가속 비활성화 # Mozilla 웹 브라우저에서 온 것처럼 인식 / 자동화된 요청을 감지하고 차단하는 것을 우회 chrome_options.add_argument("--user-agent=Mozilla/5.0") # 불필요 메세지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 드라이버 업데이트 service = Service(executable_path=ChromeDriverManager().install()) # 옵션 적용 browser = webdriver.Chrome(service=service, options=chrome_options) keyword = pyautogui.prompt('검색어를 입력하세요.') # 폴더 만들기 if not os.path.exists(f'크롤링/심화2/{keyword}모음'): os.mkdir(f'크롤링/심화2/{keyword}모음') # path = f'https://www.google.co.kr/search?tbm=isch&hl=ko&source=hp&biw=&bih=&q={keyword}' # 구글 path = f'https://search.naver.com/search.naver?where=image&sm=tab_jum&query={keyword}' # 네이버 browser.implicitly_wait(5) browser.maximize_window() browser.get(path) before_h = browser.execute_script("return window.scrollY") # 무한스크롤 while True: time.sleep(2) # 맨 아래로 스크롤을 내림 browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END) # 스크롤 후 높이 after_h = browser.execute_script("return window.scrollY") # 스크롤 높이가 맨 아래와 같다면 무한루프 탈출 if after_h == before_h: break # 스크롤 높이 업데이트 before_h = after_h # 이미지 태그 추출 imgs = browser.find_elements(By.CSS_SELECTOR, '._image._listImage') for i, img in enumerate(imgs, 1): # 각 이미지 태그의 주소 추출 link = img.get_attribute('src') # 이미지 저장 urllib.request.urlretrieve(link, f'크롤링/심화2/{keyword}모음/{i}.png') print(f'img {i}개: {link}') print('\nDvlp.H.Y.C.Sol\n')