윈도우와 맥 둘다 사용중인데 윈도우에서도 python interpreter 세팅했는데 오류나고, 맥에서도 오류가 나네요. 윈도우에서는 vscode와 python모두 삭제후 관리자 권한으로 실행해서 영문명 사용자 및 폴더에 재설치 진행하였는데 interpreter클릭하여도 아무런 반응이 없습니다. 맥에서는 interpreter클릭하였더니 'pylance client : couldn't create connection to server' 와 'source: Python (Extension)' 이라고 뜨네요 여기서 막혀가지고 구글링 다 해봤는데 도저히 어떻게 해야할지 모르겠습니다..
lock free는 단순하게 "lock을 사용하지 않는다." 정도로만 알고 있는 상태입니다. 그런데 코드를 보니까 compare_exchange_weak 를 사용하고 이 코드가 스핀락과 상당히 유사하단 생각이 들었는데 "스핀락은 lock아닌가? 그럼 lock free가 아닌게 아닌가?" 하는 생각이 들더라구요. 제가 잘못 이해한건가요?
강의에서 배운대로 현재 버전에 맞추어 수정해서 파일을 수정했는데, 다음과 같은 오류 : { Cannot run program "C:\Program Files\Java\jdk-16.0.2\bin\java.exe" (in directory "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.3\bin"): CreateProcess error=2, 지정된 파일을 찾을 수 없습니다 } 가 뜨면서 build가 안되는 현상이 발생합니다. 혹시 제가 무엇을 잘못한건지 알 수 있을까요? 해당 파일 코드도 같이 첨부합니다. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jpa-basic</groupId> <artifactId>ex-hello-jpa</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> </properties> <dependencies> <!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.6.10.Final</version> </dependency> <!-- H2 데이터베이스 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.1.214</version> </dependency> </dependencies> </project>
안녕하세요 셀레니움을 사용하지 않고 크롤링하는법을 익히기 위해 강의를 수강하였습니다 네이버이미지가 강의때와는 달리 별도로 요청해서 가져오는바람에 html을 파서하는 형태로는 받을수가 없는것같아요 셀레니움사용은 가급적이면 안하려고하는데 혹시 크롤링할수있는방법이있을까요?? html분석해보니 이미지소스가 https://search.pstatic.net/common/?src=http%3A%2F%2Fblogfiles.naver.net%2FMjAyMTExMjhfNzEg%2FMDAxNjM4MDU2NzQ5NDk3.3rzWIhB9n__9SSWJp-fF0uA4q3-AoGkVvfwt6hpqYm0g.eewDi5b-CXppMeJ_yHTN9vHtovtZNno54OUWU9kMrf0g.JPEG.daa2727%2FIMG_4606.jpg&type=a340 위에건데 html parser했을때는 아래처럼 encoding되어서 보이더라구요 이걸 decoding할수있으면 받을수있을것같은데 방법을 잘모르겠습니다 https%3A%2F%2Fsearch.pstatic.net%2Fcommon%2F%3Fsrc%3Dhttp%253A%252F%252Fblogfiles.naver.net%252FMjAyMTExMjhfNzEg%252FMDAxNjM4MDU2NzQ5NDk3.3rzWIhB9n__9SSWJp-fF0uA4q3-AoGkVvfwt6hpqYm0g.eewDi5b-CXppMeJ_yHTN9vHtovtZNno54OUWU9kMrf0g.JPEG.daa2727%252FIMG_4606.jpg%26type%3Dsc960_832
포트폴리오에 대한 구체적인 개념이 안잡히다 보니 어떻게 작성해야할지 감이 안잡혀서요... 유튜브에 봐도 거의 대부분 달라서 뭘 해야할지도 모르겠고 포트폴리오에 대한 구체적요소들을 잘 모르다 보니 막막하네요... 혹시 어떤 형식으로 작성하셨는지 구체적으로 알수 있을까요? ...ㅠㅜ
강의에서 나오는 풀이와 몇가지 차이가 있긴 하지만 - 인덱스를 100*H +N으로 구한다는 점 - 사다리를 12로 놓는다는 점 이 차이가 있는것 같다고 생각했습니다. 강사님 풀이 중 다음 부분에서 궁금한 점이 있습니다. H를 사다리라고 한다면 Hㅁㅁㅁㅁㅁ 를 탐색하고 난 이후에 for ( int j = 1 ; j <= n; j ++ ) 부분으로 인해서 첫번째 공간에 사다리를 또 놓게되는 중복이 발생하지는 않는지 궁금합니다. 예를들어 처음에 Hㅁㅁ 인상태로 go를 하면 HㅁH를 탐색하고 첫번째 인덱스를 0으로 바꾼후 ㅁHㅁ 탐색 그 이후 ㅁㅁH 케이스에서 다시 HㅁH 가 발생하지 않는지 궁금합니다. 또한 저의 풀이는 계속 9%에서 시간초과가 발생하는데 그 이유가 궁금합니다. for ( int i = here; i <= h; i ++ ) { for ( int j = 1 ; j <= n; j ++ ) { if ( visited [i][j] || visited [i][j - 1 ] || visited [i][j + 1 ]) continue ; visited [i][j] = 1 ; go (i, cnt + 1 ); visited [i][j] = 0 ; } } #include <bits/stdc++.h> using namespace std; int N, M, H; int arr [ 34 ][ 12 ]; int res = 5 ; bool simul () { for ( int i = 1 ; i <= N; i ++ ) { int depth = 0 ; int idx = i; while (depth <= H) { int point = arr [depth][idx]; if (point == 1 ) idx ++ ; else if (point == 2 ) idx -- ; depth ++ ; } if (idx != i) return false ; } return true ; } void dfs ( int hn , int level ) { if ( level >= res || level > 3 ) return ; cout << hn << endl ; int h = hn / 100 ; int n = hn % 100 ; if ( hn == H * 100 + N) { if ( simul ()) { res = min ( level , res); } return ; } int nh = n < N ? h : h + 1 ; int nn = n < N ? n + 1 : 1 ; dfs (nh * 100 + nn, level ); if (n < N && ! arr [h][n] && ! arr [h][n + 1 ]) { arr [h][n] = 1 , arr [h][n + 1 ] = 2 ; dfs (nh * 100 + nn, level + 1 ); arr [h][n] = 0 , arr [h][n + 1 ] = 0 ; } } int main () { ios_base :: sync_with_stdio ( false ); cin . tie ( NULL ); cout . tie ( NULL ); cin >> N >> M >> H; for ( int i = 0 ; i < M; i ++ ) { int x, y; cin >> x >> y; arr [x][y] = 1 ; arr [x][y + 1 ] = 2 ; } dfs ( 101 , 0 ); if (res == 5 ) cout << - 1 ; else cout << res; return 0 ; }
안녕하세요 강사님. 스프링과 장고의 샘플코드 비교해주신 부분에서 질문이 있어서 남겨봅니다. 샘플코드를 보았을 때, 장고 코드에서는 뷰에서만 서비스의 일부 기능을 담당한다고 되어있는데요. 만약 비즈니스 로직이 커질 경우, 서비스와 컨트롤러가 나뉘어져있는 스프링쪽이 좀더 관리가 용이할 수 있을거 같다는 생각이 들었습니다. 비즈니스 로직이 비대해졌을 때 장고에서는 일반적으로 이 코드를 어디서 관리하는지 질문 드리고 싶습니다. 기존의 컨트롤러와 엔티티로서의 기능을 담당하고 있는 View와 Model로 분산해서 로직을 작성하게 될까요?? 아니면 별도로 service.py같은 파일을 생성해서 관리를 하는게 좋을까요? 강사님 의견이 궁금합니다.
안녕하세요! dapp프로젝트 1,2를 수강했던 학생입니다. 약간 강의 외의 질문이 될 수도 있겠지만... 혼자 계속해서 dapp 관련 공부를 하다가 BigNumber라는 라이브러리를 알게되었는데 이 강의를 수강할때는 fromWei를 활용했던것같아서 이에대해 궁금한점이 생겨 질문을 작성하게 되었습니다. BigNumber를 사용했을 때와 fromWei toWei와 같은 메서드를 사용했을때 차이점과 둘중 하나를사용한다면 어떤 상황에 BigNumber를 쓰고 fromWei, toWei를 사용하는지 궁금합니다!
6-4 선택정렬 10분 11초 부근에서 직접 해보라고 하셔서 강의를 보기전 직접 해보았습니다. 그리고 성공비슷하게 했으나 뭔가 이상해서 질의를 드려봅니다. 알고리즘은 사진의 윗부분 주석과 같이 순차적으로 정렬되어야함이 맞으나, 제가 짠 코드에서는 콘솔창과 같이 정렬이 되네요. 뭔가 중간 단계가 건너뛰고 최종결과가 나오는 것처럼요. 하지만 배열사이즈를 바꿔보고 숫자를 늘려봐도 최종결과는 오름차순으로 정확하게 정렬이 됩니다. 이러면 맞다고 봐야하는 걸까요?
항상 강의 잘 듣고 있습니다. 회원가입 부분을 구현하는 중, 다 맞게 입력했는데 자꾸 '실패'라고 뜨는 현상을 맞이하여 질문드립니다. authentication에서 이메일/비밀번호까지 수정을 다 했는데, 어떻게 된 건지 궁금합니다. 혹시 강의 자료 중에 소스 코드가 어디에 위치해 있는지 알려주실 수 있으신가요? 다른 오류가 생기면 그걸 먼저 찾아보겠습니다. 아래는 코드입니다. package koreatraveltipsintro import android.content.ContentValues.TAG import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.Toast import androidx.databinding.DataBindingUtil import com.example.koreatraveltips.MainActivity import com.example.koreatraveltips.R import com.example.koreatraveltips.databinding.ActivityJoinactivityBinding import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.ktx.auth import com.google.firebase.ktx.Firebase class joinactivity : AppCompatActivity() { private lateinit var auth : FirebaseAuth private lateinit var binding : ActivityJoinactivityBinding //이와 관해서 오류가 날 수도 있는데, 당황하지 말고 문제의 원인을 구글링해서 문제를 해결하자. //gradle에 id 'kotlin-android-extensions'을 추가해 주면 된다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_joinactivity) auth= Firebase.auth binding = DataBindingUtil.setContentView(this, R.layout.activity_joinactivity) //해당 레이아웃 파일의 부분의 데이터를 바인딩 하겠다는 코드이다. binding.joining.setOnClickListener { //윗줄의 코드는 '회원가입하기'라는 버튼을 누르면 어떻게 되는지에 대해 구현하는 코드라는 의미이다. //회원 가입 버튼을 클릭을 하면, 위의 정보들을 가져 오겠다는 의미이다. //변수를 하나 만들고, 디폴트 값을 true라고 정한다. //그리고, 아래의 조건들에 걸리면, 값을 false로 바꾸는 것이다. var isTrue = true val email = binding.email.text.toString() val password = binding.password.text.toString() val passwordcheck = binding.passwordcheck1.text.toString() //저기 값이 비어 있는지 확인한다. if(email.isEmpty()) //만약 이메일 값이 비어 있다면 {//아래와 같은 값을 띄운다. Toast.makeText(this,"이메일을 입력해주세요.",Toast.LENGTH_LONG).show() isTrue = false } if(password.isEmpty()) //password가 비어도 마찬가지. { Toast.makeText(this,"password1을 입력하시오.",Toast.LENGTH_LONG).show() isTrue = false } if(passwordcheck.isEmpty()) { Toast.makeText(this,"password2를 입력하시오.",Toast.LENGTH_LONG).show() isTrue = false } //비밀번호가 서로 다르다면 비밀번호를 같게 입력해달라고 메시지를 띄운다. if(!password.equals(passwordcheck)) { Toast.makeText(this,"비밀번호를 똑같이 입력하시오",Toast.LENGTH_LONG).show() isTrue = false } //비밀번호의 길이를 확인 if(password.length < 6) { Toast.makeText(this,"비밀번호를 6자리 이상으로 입력해주세요.",Toast.LENGTH_LONG).show() isTrue = false } //만약 위의 필터링을 모두 통과했다면, 아래의 것들을 실행시켜보자. if(isTrue==true) { auth.createUserWithEmailAndPassword(email, password).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() //회원가입이 성공적으로 끝이 난다면, mainactivity로 이동한다. val intent = Intent(this, MainActivity::class.java) startActivity(intent) //그런데, 이렇게만 코드를 짜면, 뒤로가기로 앱을 끌 경우 //회원가입 페이지가 나와버리는 결과가 발생한다. //그래서 코드를 더 짠다. } else { // If sign in fails, display a message to the user. Toast.makeText(this,"실패",Toast.LENGTH_LONG).show() Log.e(TAG, "createUserWithEmail:failure", task.exception) } } } } 아래는 오류 화면 캡쳐입니다. 감사합니다.
안녕하세요. 제로초님 빠른 답변 항상 감사드립니다. 툴킷과 saga 활용에 대해 질문 드리려고 합니다. 1. 요즘에 거의 툴킷만 실무에서 사용한다고 들었는데, 빠르게 리덕스부분 익히고 노드버드로 넘어가려해서 툴킷과 mobx까지만 듣고 saga는 건너뛰어도 실제 업무 및 노드버드 듣는데 문제 없나요? 2. 노드버드는 툴킷을 사용하지 않는데, 노드버드에서 saga 부분을 듣지 않아도 그 부분을 쉽게 툴킷으로 변환가능한가요?