묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
모바일 UI 기준 크기
모바일 앱 작업을 할 때 맨 처음 기준이 되는 페이지는 보통 몇 px로 작업하시나요? (혹은 기준이 되는 기종이 있나요?) 아이폰 미니와 같이 가장 작은 화면으로 작업해놓고 늘려서 쓰는 게 더 낫나요?
-
미해결
flask, react 로 개발한 웹앱을 모바일로 접속시 이미지가 안나오는 오류
안녕하세요. 저는 flask와 react를 활용해서 프로젝트를 진행하고 있는 대학생입니다.flask는 5000번, 리액트는 3000번 포트를 사용하고리액트에서 웹앱의 배경화면 이미지를 flask의 라우팅 함수를 통해 받아오는 중입니다. localhost:포트번호 에 접속할 때는 문제가 없고, 같은 와이파이에서 다른 노트북으로 아이피:포트 로 접속해봐도 문제가 없습니다.다만, 모바일에서 아이피:포트 에 접속할 때는 이미지가 로딩되지 않는 문제가 있습니다.이미지 외에 네비게이션은 잘 나오고 기타 동작은 문제가 없는 것으로 확인했습니다.react에서 로컬 디렉토리에 있는 이미지를 랜더링할 땐 모바일에서도 이미지가 잘 나옵니다.flask에서 받아온 이미지를 랜더링할 때만 모바일 접속시 이미지가 안나옵니다. 아이패드로 접속시 화면맥에서 로컬호스트 접속시 화면3. 코드@app.route('/map-image/') def serve_map_image(): return send_from_directory('static', 'map.png')리액트파일에서 아래처럼 flask서버를 통해 받아옵니다.const imageUrl = "http://localhost:5000/map-image"; 관련 경험이 있으신 분들의 많은 도움과 조언 부탁드립니다..
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
해당 강좌 내용을 PC게임 제작에 접목해도 괜찮을까요?
강의 내용이 모바일 플랫폼을 기준으로 하고 있는데 이 내용을 pc게임에 적용해도 괜찮을지 궁금합니다
-
미해결
피그마 강의는 왜 모바일 디자인 밖에 없을까요?
피그마 관련 강의들을 싹 다 들어보려고 합니다. XD를 하다가 퍼블리셔나 개발자들이 피그마를 더 선호한다는 얘기를 듣고 피그마 공부를 시작해보려고 하는데요. 모바일 환경 만큼이나 웹 환경도 매우 중요한데.. 왜 강의들은 전부 모바일 디자인 쪽으로만 형성되어있는지 궁금하내요. 모바일 디자인을 알면 웹 디자인도 저절로 할 수 있어서 그런건지..
-
미해결Vue.js 시작하기 - Age of Vue.js
반응형 웹앱을 제작하고 있는데
작업을 하다보니까 css 미디어 쿼리를 쓸 때도 있고 vuex 에서 window width를 저장해놓고 사이즈가 감지되면 v-if-else로 필요한 컴포넌트를 불러오는 방식을 동시에 쓰고 있습니다. 레이아웃이 크게 변하지 않는 부분은 미디어 쿼리로 해결하고너무 크게 변하는 부분은 v-if-else로 렌더링하고 있는데요 서서히 프로젝트가 커짐에 따라서 이게 나중에 유지보수가 가능할지 두렵네요 처음부터 PC/Mobile를 나눠서 따로 만들었어야 했나 싶다가도막상 또 그렇게 나누자니 레이아웃이 크게 안 바뀌는 부분도 제법 많아서 혼란에 빠졌습니다. 이와 관련해서 조언을 얻을 수 있을지 궁금합니다.
-
미해결프리다(Frida)를 이용한 안드로이드 앱 모의해킹
안티 디버깅 관련 강의도 듣고 싶습니다
안녕하세요 요즘 안티디버깅 적용된 앱들이 많이 있어서 안티디버깅 기법과 우회 방법론 등 정보를 알고 싶습니다.
-
미해결
findViewById 함수 호출 시 null값 반환
안녕하세요. CustomAdapter 강의 수강중에 다음과 같은 에러가 발생해서 문의드립니다. 그대로 따라하면서 진행하였는데 이상하다 싶어서 에러 메시지를 확인해보니, 아래 코드에서 rowtextview1 변수에 null이 반환되고 있음을 확인하였습니다. val rowtextview1 = findViewById<TextView>(R.id.rowtextView1) 전체 코드는 아래와 같습니다. 어떻게하면 View의 id값을 정상적으로 가져올 수 있을까요?? * MainActivity.kt * package com.example.customadapterimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport android.view.Viewimport android.view.ViewGroupimport android.widget.BaseAdapterimport android.widget.Buttonimport android.widget.ListViewimport android.widget.TextViewclass MainActivity : AppCompatActivity() { val data1 = arrayOf("데이터1","데이터2","데이터3","데이터4","데이터5") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val textveiw1 = findViewById<TextView>(R.id.textView1) val listveiw1 = findViewById<ListView>(R.id.list1) listveiw1.adapter = adapter1 } //getCount의 리턴 값 만큼 getView가 호출되어 R.layout.row의 View 객체를 붙여준다. val adapter1 = object : BaseAdapter(){ // 항목의 개수를 반환 override fun getCount(): Int { return data1.size } // 항목의 인덱스 번호를 전달했을 때, 객체를 넘기는 기능 override fun getItem(position: Int): Any? { return null } // 임의로 정해진 아이디 값을 넘겨주는 기능 override fun getItemId(position: Int): Long { return 0 } // 현재 화면에 표시되는 항목만큼 호출됨 // position : 몇 번째 항목을 구성할 것인가, convertView : 화면에서 없어진 뷰를 저장 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { // 재사용 가능한 View를 변수에 담는다. var rowView = convertView if(rowView == null) { // inflate는 XML을 참고하여 View 객체를 생성 및 반환하는 함수 // 1번째 인자는 View 객체를 만들 때 참고하는 XML, 2번째 인자는 해당 View 객체의 상위 객체(레이아웃)\ rowView = layoutInflater.inflate(R.layout.row, null) } // 항목 뷰 내부에 배치되어 있는 뷰들의 주소 값을 가져온다. val rowtextview1 = findViewById<TextView>(R.id.rowtextView1) rowtextview1.text = data1[position] return rowView!! } }} * activity_main.xml * <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" android:textAppearance="@style/TextAppearance.AppCompat.Large" /> <ListView android:id="@+id/list1" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout> * row.xml * <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/rowtextView1" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_weight="1" android:text="TextView" android:textAppearance="@style/TextAppearance.AppCompat.Large" /> <Button android:id="@+id/rowbutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="버튼1" /> <Button android:id="@+id/rowbutton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="버튼2" /></LinearLayout>