안녕하세요 리버스쿨 level2를 듣고 있는 학생입니다. 재밌는 강의 감사드리고 level4가 나오길 바라고 있습니다. ^^ 다름 아니라 마지막 강의 elf 인젝션에 대해 질문드리고 싶어서 이렇게 질문을 남깁니다. 아래 그림은 elf 인젝션 마지막 실습인 쉘코드를 이용한 인젝션 과정 중 하나인데요. 아래 그림과 같이 메모리 주소를 재조정한다고 하셨는데 구체적으로 어떤 원리를 이용해서 재조정을 하면 아래 그림과 같은 계산이 나오는지 궁금합니다. 아울러 리버스쿨 level4 강의 재작계획이 있는지도 알고 싶습니다.
안녕하세요 강사님. 완강을 하였지만 복습을 하면서 궁금한 점이 생겨서 질문을 올리게 되었습니다. 수업을 다 듣고 복습도 어느정도 해보고나서 제가 든 생각은 css야 꾸미는 것이니 결과와 보이는 것이 가장 중요하다고 생각이 듭니다. 하지만 html은 시맨틱하게 잘 구조화 하는 것과 나중의 JS로 관리하게 편하게 작성하는 것이 중요한 점이 아닌 가 싶네요. 아 그러면 이런 시맨틱 마크업 역량을 어떻게 개발해야 하는가 고민을 하다가 잘 만들어진 웹 사이트를 잘 공부해보면 되겠다 싶어서 다음이나 네이버의 웹 HTML을 조금 살펴보았습니다. 그런데 조금 놀란 부분은 강사님께서 수업시간에 말씀해주셨던 그런 시맨틱적 디테일을 찾아보기가 많이 어려웠던 점 입니다. 네이버 메인 창만 봐도 탭키를 눌르면 엉뚱한 기능이 가장 먼저 잡히고, 특히나 alt 속성이라던가 html5 문법이라든지 이런 것들이 보이질 않네요. 저는 굉장히 잘 구조화 된 하나의 예술작품과 같은 정교한 설계를 보며 감탄할 것을 기대했는데 조금 실망스럽기도해서요. 음.. 표준과 실무는 별개인 것인지 아니면 제가 미쳐 모르는 부분이 있는건지 강사님 의견을 듣고 싶네요.
workspace 폴더 안에 python 폴더가 있고 그 안에 inflearn폴더가 있습니다. inflearn 폴더안에 과제 파일을 설치했는데 터미널에서 cd workspace/를 입력하면 (base) Wonhyoungs-MacBook-Pro:workspace gotadatcom$ cd workspace/ -bash: cd: workspace/: No such file or directory (base) Wonhyoungs-MacBook-Pro:workspace gotadatcom$ 이런 문구가 나옵니다. 왜 터미널에서 workspace 안에 있는 하위 폴더 들을 인식하지 못할까요?
전전 영상 "eslint 플러그인 설치 및 설정 변경" 에서 settings.json에 여러 규칙을 추가했는데요 여기에 "eslint.workingDirectories" : [ { "mode" : "auto" } ] 추가하시면 vue-endgame폴더를 루트로 작업해도 eslint 정상 작동됩니다 :)
강의 내용과 벗어난 내용이고 다소 사적인 영역에 대한 질문일 수 있기에, 이런 질문을 드려도 되나 쓸까 말까 고민하다가 질문드려봅니다. 김영한님의 JPA 강의를 들으면서 정말많이 알아가는데요 문득 궁금한 부분이 김영한님은 어떤방식으로 이런 지식을 습득했을까 하는 생각이 들었습니다. 저야 그냥 금액을 지불하고 편하게 들으면서 적어보고 이해안되면 다시 돌려보면 그만이지만.. 이런 강의를 만들기위해 하이버네이트나 JPA의 구체적인 동작원리를 어떤 경로로 습득하실 수 있으셨는지 혹은 어떤 방식으로 평소에 공부를 하시나요?? jpa나 spring 프로젝트를 개발하는 팀에 영어로 된 공식문서나 해외서적 같은부분을 많이 참고하시는지 궁금합니다!
이전까지는 잘되다가 jinja를 쓸 때부터 에러가 뜹니다. 이전 강의 코드는 그대로 따라하니 잘 되었구요, 이번 강의에서 run.py 에 추가된 부분은 @app.template_filter("formatdatetime") def format_datetime(value): if value is None: return "" now_timestamp = time.time() offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp) value = datetime.fromtimestamp((int(value) / 1000) + offset) return value.strftime('%Y-%m-%d %H:%M:%S') @app.route("/view") def board_view(): idx = request.args.get("idx") if idx is not None: board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data is not None: result = { "id": data.get("_id"), "name": data.get("name"), "title": data.get("title"), "contents": data.get("contents"), "pubdate": data.get("pubdate"), "view": data.get("view") } return render_template("view.html", result=result) return abort(400) 이 것들과 기능을 사용하기 위해 import나 선생님 설명 받아적어서 주석처리한 글 몇 줄이 있습니다. 그리고 templates 폴더에 view.html 파일로 <html> {{result.title}} <br /> {{result.name}} <br /> {{result.pubdate|formatdatetime}} <br /> {{result.view}} <br /> {{result.contents}} </html> 이렇게 만들었습니다. 주석으로 설명 몇 자 적어놨구요. 에러 페이지는 jinja2.exceptions.TemplateSyntaxError jinja2.exceptions.TemplateSyntaxError: tag name expected Traceback (most recent call last) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 2463 , in __call__ return self.wsgi_app(environ, start_response) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 2449 , in wsgi_app response = self.handle_exception(e) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 1866 , in handle_exception reraise(exc_type, exc_value, tb) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/_compat.py" , line 39 , in reraise raise value File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 2446 , in wsgi_app response = self.full_dispatch_request() File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 1951 , in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 1820 , in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/_compat.py" , line 39 , in reraise raise value File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 1949 , in full_dispatch_request rv = self.dispatch_request() File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/app.py" , line 1935 , in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/run.py" , line 56 , in board_view return render_template("view.html", result=result) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/flask/templating.py" , line 138 , in render_template ctx.app.jinja_env.get_or_select_template(template_name_or_list), File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/environment.py" , line 930 , in get_or_select_template return self.get_template(template_name_or_list, parent, globals) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/environment.py" , line 883 , in get_template return self._load_template(name, self.make_globals(globals)) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/environment.py" , line 857 , in _load_template template = self.loader.load(self, name, globals) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/loaders.py" , line 129 , in load code = environment.compile(source, name, filename) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/environment.py" , line 638 , in compile self.handle_exception(source=source_hint) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/environment.py" , line 832 , in handle_exception reraise(*rewrite_traceback_stack(source=source)) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/.venv/lib/python3.8/site-packages/jinja2/_compat.py" , line 28 , in reraise raise value.with_traceback(tb) File "/Users/magrfs/Desktop/inflearn_nam2/myweb/templates/view.html" , line 18 , in template 만약에 for문을 쓰거나 if문을 쓰거나할 때는 {% %} 이런식으로 사용하기도 한다. jinja2.exceptions.TemplateSyntaxError: tag name expected The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error. To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side. You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection: dump() shows all variables in the frame dump(obj) dumps all that's known about the object 이렇게 생겼습니다. 눈으로 봐도 모르겠고 디버깅에도 딱히 걸리지 않아서 원인이 뭔지를 모르겠습니다..ㅠㅠ
John Ahn님 강의 정말 잘 듣고 있습니다. 유튜브로 한국어 유튜브 클론 강의 듣고 있습니다. 처음부터 따라하고 있는데 6강에서 썸네일이 만들어 지지 않습니다. window로 ffmpeg를 잘 설치하였습니다! 그래서 깃에 올려주셔서 완성본을 다운받아 실행해도 이런식으로 format이 잘 못되었다고 나오거나 ffprobe error가 나옵니다! uploads 폴더와 thumbnails 폴더에는 잘 저장되어 있습니다. 도와주시면 감사하겠습니다!! 그리고 제가 보일러 플레이트나 movie api로 만드신 인강에서는 proxy에 문제가 없었습니다. 그런데 이번 강의에서 업로드 할때 썸네일이 보이지 않고 제출 버튼을 누르면 저렇게 마지막에 hpm 에러가 나오고 있습니다! 유뷰트에 영어버전 유뷰트 클론을 보고 저와 같은 에러가 있는 사람이 있어서 John Ahn 님이 작성하신 두번째 코드로 작성하였을때 아래 사진과 같이 나왔습니다
build.gradle에서 implementation한 okhttp api는 implementation "com.squareup.okhttp3:okhttp:4.4.0" 위 버전으로 진행하였는데 현재 버전에서 버전 차이로 인한 문제인지 callback함수에서 response 호출에 에러가 발생하네요 어찌 해서 다른 방식으로 호출하는 방식을 찾긴 하였는데 다른 방식은 response에 받은 http string에서 body 값을 받아 오진 못하는 문제가 발생하여서 일단은 전체 과정을 스탑한 상태이네요 inner calss로 callback을 만들때 okhttp api의 callback함수를 생성하여 과정과 동일하게 호출하였는데 앱 중단이 뜨고 내부 쓰레드에서의 앱중단이니 아마 Main UI에서 충돌 문제로 인해서 발생한다고 생각하는데 원인을 찾을 수 없네요. callback, response에서도 response에 body를 호출하는 방식도 강의와 동일한 방식으로 진행할 경우 신텍스 에러가 뜨고 있어서 사용하지 못하고 있네요 다른 방식으로 body에 string을 result로 받아서 진행을 하여도 동일한 에러가 발생합니다. override fun onCreate (savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout. activity_main ) button.setOnClickListener { view -> var thread = NetworkThread() thread.start() } } inner class NetworkThread : Thread(){ override fun run () { var client = OkHttpClient() var builder = Request.Builder() var url = builder.url( "http://google.com" ) var request = url.build() var cb = Callback2() client.newCall(request).enqueue(cb) /* client.newCall(request).execute().use{ response-> if(!response.isSuccessful) throw IOException("Unexpected code $response") else { for ((name, value) in response.headers) { Log.d("header", value) } var result =response.body!!.toString() Log.d("result", result) val responseBodyString = response.body!!.string() runOnUiThread { textView.text = response.body!!.string() } } } //client.newCall(request).enqueue(callback) */ } } inner class Callback2 : Callback{ override fun onResponse (call: Call , response: Response) { TODO ( "not implemented" ) //To change body of created functions use File | Settings | File Templates. var result = response. body !!.string() runOnUiThread { //textView.text = result textView.setText(result) } } override fun onFailure (call: Call , e: IOException) { TODO ( "not implemented" ) //To change body of created functions use File | Settings | File Templates. } } inner class Callback1 :Callback { override fun onResponse (call: Call , response: Response) { TODO ( "not implemented" ) //To change body of created functions use File | Settings | File Templates. } override fun onFailure (call: Call , e: IOException) { } }
sequelize로 그냥 mysql query를 날려보고있는데 [{"hello",1},{"hello,"2}] //mysql 출력 시 [{"hello":[1,2]}] //sequelize include사용 시 mysql query로 중복되는 부분을 key:[array] 형식으로 sequelize가 include하는 형식으로 표현하고싶은데 하질못하겠습니다. 어떤식으로 sql query를 날리면좋을까요?
제가 2개의 문자가 입력되면 순서가 바뀌어 출력되게 하려고합니다 예를들어 A B 를 입력하면 B A 가 나오도록 밑에 제가 직접 입력해 본것입니다. 그런데 "예외가 처리되지 않았습니다 0x7A6A98F1(ucrtbased.dll)에(practice.exe의) 처리되지 않은 예외가 있습니다. 0xC0000005: 0x00DA1339 위치를 기록하는 동안 액세스 위반이 발생했습니다" 라고 뜨는데 어떻게 해야 할까요? #include <stdio.h> int main() { char x,y; scanf_s("%c %c", &x, &y); printf("%c %c", y, x ); return 0; }