묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결해외취업 ASP.NET Core 웹개발 기본 강좌
캐나다 현지 학교 입학
안녕하세요?처음 말씀하신 캐나다 현지 학교 입학중 1,2년짜리 학교다니라고 하는 것을 Community College 의 Computer Science 전공으로 학교 다니라는 것으로 이해해도 될까요?감사합니다.
-
미해결Angular 기본과 간단한 To-Do 어플리케이션 만들기
실행은 되는데 SyntaxError가 발생합니다.
어떻게 어떻게 해서 console.log에 메세지는 찍는데 아래와 같은 에러가 발생합니다.import { greeting } from 'greeting.js' <--Uncaught SyntaxError: Unexpected token import뭐가 잘못됐는지 모르겠네요?
-
미해결Firebase 서버를 통한 Android앱 HowlTalk 만들기
푸시 메시지 추가후 에러 문제
안녕하세요 강의 잘 듣고 있습니다 ㅎㅎ푸쉬 메시지를 추가하고 나서 에러 구문이 생겨 난 것 같은데 어디가 문제인지 잘 모르겠네요E/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE이 구문이 주기적으로 생성되고 있었습니다.그리고 추가적으로 database에도 값들이 올라가지 않게 된 것 같네요 ㅠㅠ순서대로 manifest, messageActivity, signUpActivity 입니다'''<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.solive.knuprime031.knurun"><application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".loginActivity" /> <activity android:name=".signUpActivity" /> <activity android:name=".MainActivity" /> <activity android:name=".chat.MessageActivity" /> <!--<activity android:name=".SignUpActivity" />--> <!--<activity android:name=".RequestCreateActivity" />--> <activity android:name=".RequestCreateActivity"></activity> <service android:name=".MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service></application> ''''''package com.solive.knuprime031.knurun.chat;import android.support.annotation.NonNull;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import com.bumptech.glide.Glide;import com.bumptech.glide.request.RequestOptions;import com.google.android.gms.tasks.OnCompleteListener;import com.google.android.gms.tasks.OnSuccessListener;import com.google.android.gms.tasks.Task;import com.google.firebase.auth.FirebaseAuth;import com.google.firebase.database.DataSnapshot;import com.google.firebase.database.DatabaseError;import com.google.firebase.database.FirebaseDatabase;import com.google.firebase.database.ServerValue;import com.google.firebase.database.ValueEventListener;import com.google.gson.Gson;import com.solive.knuprime031.knurun.R;import com.solive.knuprime031.knurun.model.ChatModel;import com.solive.knuprime031.knurun.model.NotificationModel;import com.solive.knuprime031.knurun.model.UserModel;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.TimeZone;import okhttp3.Call;import okhttp3.Callback;import okhttp3.MediaType;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;public class MessageActivity extends AppCompatActivity {private String destinationUid;private Button button;private EditText editText;private String uid;private String chatRoomUid;private RecyclerView recyclerView;private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm");private UserModel destinationUserModel;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_message); uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); destinationUid = getIntent().getStringExtra("destinationUid"); recyclerView = (RecyclerView)findViewById(R.id.messageActivity_recyclerView); button = (Button)findViewById(R.id.messageActivity_button); editText = (EditText)findViewById(R.id.messageActivity_edtiText); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ChatModel chatModel = new ChatModel(); chatModel.users.put(uid,true); chatModel.users.put(destinationUid, true); if(chatRoomUid == null) { button.setEnabled(false); Toast.makeText(MessageActivity.this, "Success", Toast.LENGTH_SHORT).show(); FirebaseDatabase.getInstance().getReference().child("chatrooms").push().setValue(chatModel).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { checkChatRoom(); } }); } else { ChatModel.Comment comment = new ChatModel.Comment(); comment.uid = uid; comment.message = editText.getText().toString(); comment.timeStamp = ServerValue.TIMESTAMP; FirebaseDatabase.getInstance().getReference().child("chatrooms").child(chatRoomUid).child("comments").push().setValue(comment).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { sendGcm(); editText.setText(""); } }); } } }); checkChatRoom();}void sendGcm() { Gson gson = new Gson(); String userName = FirebaseAuth.getInstance().getCurrentUser().getDisplayName(); NotificationModel notificationModel = new NotificationModel(); notificationModel.to = destinationUserModel.pushToken; notificationModel.notification.text = userName; notificationModel.notification.title = editText.getText().toString(); notificationModel.data.text = userName; notificationModel.data.title = editText.getText().toString(); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utp8"), gson.toJson(notificationModel)); Request request = new Request.Builder() .header("Content-Type","application/json") .addHeader("Authorization","key=AIzaSyBNM5T3oCs_4gxClchRYvXbBQHdtCnw5Hc") .url("https://gcm-http.googleapis.com/gcm/send") .post(requestBody) .build(); OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { } });}void checkChatRoom() { FirebaseDatabase.getInstance().getReference().child("chatrooms").orderByChild("users/"+uid).equalTo(true).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot item : dataSnapshot.getChildren()) { ChatModel chatModel = item.getValue(ChatModel.class); if(chatModel.users.containsKey(destinationUid)) { chatRoomUid = item.getKey(); button.setEnabled(true); recyclerView.setLayoutManager(new LinearLayoutManager(MessageActivity.this)); recyclerView.setAdapter(new RecyclerViewAdapter()); } } } @Override public void onCancelled(DatabaseError databaseError) { } });}class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { List<ChatModel.Comment> comments; public RecyclerViewAdapter() { comments = new ArrayList<>(); FirebaseDatabase.getInstance().getReference().child("users").child(destinationUid).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { destinationUserModel = dataSnapshot.getValue(UserModel.class); getMessageList(); } @Override public void onCancelled(DatabaseError databaseError) { } }); } void getMessageList() { FirebaseDatabase.getInstance().getReference().child("chatrooms").child(chatRoomUid).child("comments").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { comments.clear(); for (DataSnapshot item : dataSnapshot.getChildren()) { comments.add(item.getValue(ChatModel.Comment.class)); } notifyDataSetChanged(); recyclerView.scrollToPosition(comments.size()-1); } @Override public void onCancelled(DatabaseError databaseError) { } }); } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_message, parent, false); return new MessageViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MessageViewHolder messageViewHolder = ((MessageViewHolder)holder); if(comments.get(position).uid.equals(uid)) { messageViewHolder.textView_message.setText(comments.get(position).message); messageViewHolder.textView_message.setBackgroundResource(R.drawable.rightbubble); messageViewHolder.linearLayout_destination.setVisibility(View.INVISIBLE); messageViewHolder.textView_message.setTextSize(25); messageViewHolder.linearLayout_main.setGravity(Gravity.RIGHT); } else { Glide.with(holder.itemView.getContext()) .load(destinationUserModel.profileImageUrl) .apply(new RequestOptions().circleCrop()) .into(messageViewHolder.imageView_profile); messageViewHolder.textView_name.setText(destinationUserModel.userName); messageViewHolder.linearLayout_destination.setVisibility(View.VISIBLE); messageViewHolder.textView_message.setBackgroundResource(R.drawable.leftbubble); messageViewHolder.textView_message.setText(comments.get(position).message); messageViewHolder.textView_message.setTextSize(25); messageViewHolder.linearLayout_main.setGravity(Gravity.LEFT); } long unixTime = (long)comments.get(position).timeStamp; Date date = new Date(unixTime); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Seoul")); String time = simpleDateFormat.format(date); messageViewHolder.textView_time_stamp.setText(time); } @Override public int getItemCount() { return comments.size(); } private class MessageViewHolder extends RecyclerView.ViewHolder { public TextView textView_message; public TextView textView_name; public ImageView imageView_profile; public LinearLayout linearLayout_destination; public LinearLayout linearLayout_main; public TextView textView_time_stamp; public MessageViewHolder(View view) { super(view); textView_message = (TextView) view.findViewById(R.id.messageItem_textView_message); textView_name = (TextView)view.findViewById(R.id.messageItem_textView_name); imageView_profile = (ImageView)view.findViewById(R.id.messageItem_imageView_profile); linearLayout_destination = (LinearLayout)view.findViewById(R.id.messageItem_linearLayout_destinaiton); linearLayout_main = (LinearLayout)view.findViewById(R.id.messageItem_linearLayout_main); textView_time_stamp = (TextView)view.findViewById(R.id.messageItem_textView_timeStamp); } }}@Overridepublic void onBackPressed() { finish(); overridePendingTransition(R.anim.fromleft, R.anim.toright);}}''''''package com.solive.knuprime031.knurun;import android.content.Intent;import android.graphics.Color;import android.net.Uri;import android.os.Build;import android.provider.MediaStore;import android.support.annotation.NonNull;import android.support.annotation.RequiresApi;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;import com.google.android.gms.tasks.OnCompleteListener;import com.google.android.gms.tasks.OnSuccessListener;import com.google.android.gms.tasks.Task;import com.google.firebase.auth.AuthResult;import com.google.firebase.auth.FirebaseAuth;import com.google.firebase.auth.UserProfileChangeRequest;import com.google.firebase.database.FirebaseDatabase;import com.google.firebase.remoteconfig.FirebaseRemoteConfig;import com.google.firebase.storage.FirebaseStorage;import com.google.firebase.storage.UploadTask;import com.solive.knuprime031.knurun.model.UserModel;public class signUpActivity extends AppCompatActivity {private EditText email;private EditText name;private EditText password;private Button signup;private String splash_background;private ImageView profile;private Uri imageUri;private static final int PICK_FROM_ALBUM = 10;@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_up); FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); splash_background = mFirebaseRemoteConfig.getString(getString(R.string.rc_color)); getWindow().setStatusBarColor(Color.parseColor(splash_background)); profile = (ImageView)findViewById(R.id.signUpActivity_imageView_profile); profile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(MediaStore.Images.Media.CONTENT_TYPE); startActivityForResult(intent,PICK_FROM_ALBUM); } }); email = (EditText)findViewById(R.id.signUpActivity_editText_email); name = (EditText)findViewById(R.id.signUpActivity_editText_name); password = (EditText)findViewById(R.id.signUpActivity_editText_password); signup = (Button)findViewById(R.id.signUpActivity_button_signUp); signup.setBackgroundColor(Color.parseColor(splash_background)); signup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (email.getText().toString() == null || name.getText().toString() == null || password.getText().toString() == null || imageUri == null) { Toast.makeText(signUpActivity.this, "NULL", Toast.LENGTH_SHORT).show(); return; } FirebaseAuth.getInstance(). createUserWithEmailAndPassword(email.getText().toString(), password.getText().toString()) .addOnCompleteListener(signUpActivity.this, new OnCompleteListener<AuthResult>() { public void onComplete(@NonNull Task<AuthResult> task) { final String uid = task.getResult().getUser().getUid(); UserProfileChangeRequest userProfileChangeRequest = new UserProfileChangeRequest.Builder().setDisplayName(name.getText().toString()).build(); task.getResult().getUser().updateProfile(userProfileChangeRequest); FirebaseStorage.getInstance().getReference().child("userImages").child(uid).putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() { public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) { @SuppressWarnings("VisibleForTests") String imageUrl = task.getResult().getDownloadUrl().toString(); UserModel userModel = new UserModel(); userModel.userName = name.getText().toString(); userModel.profileImageUrl = imageUrl; userModel.uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); Toast.makeText(signUpActivity.this, "Try", Toast.LENGTH_SHORT).show(); FirebaseDatabase.getInstance().getReference().child("users").child(uid).setValue(userModel).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { signUpActivity.this.finish(); } }); } }); } }); } });}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode==PICK_FROM_ALBUM && resultCode==RESULT_OK) { profile.setImageURI(data.getData()); imageUri = data.getData(); }}} '''
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
main()에서 오답
과제의 def main()코드를 수정했고, 결과가 과제에서 예시로 제시된 것과 동일하게 나오는 것 같은데 여전히 main에서 fail 이라고 채점되네요. 채점 시스템 상에서 오답으로 분류되는 문제가 있는게 아닐까 싶기도 한데요. 코드와 결과를 첨부하니 답변 부탁드립니다!def main(): # ===Modify codes below============= user_input = 999 while user_input is not 0: user_input = input("Input a positive number : " ) if is_positive_number(user_input) is True: # 입력값이 양수인가? result = get_factorial_value(int(user_input)) # True 이면 int로 변환 후 factorial 계산 print(result) # 결과 출력 elif user_input == "0": #입력값이 양수가 아니고 0이라면 user_input = 0 # 프로그램 종료를 위해 입력값을 0으로 지정 else: # 입력값이 양수도 0도 아니면 print("Input again, please") # 다시 입력 하시오. print("Thank you for using this program")결과입니다https://drive.google.com/open?id=19APNKPUj3u8i3OwjxZpiCnaOZQw78JEf
-
미해결앱 12개를 만들며 배우는 Swift4 & iOS11 아이폰 iOS 개발 강좌
xmlparer 시 필요한 주소를 댓글로라도 넣어 주셨으면 좋겠네요
직접 쳐서 받아오려고 하니 오류가 나서인터넷으로 직접 들어가서 복사해서 가져왔네요 ㅜㅜ
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
main(), encoding_sentence() 함수 통과 못하시는 분들
저도 이 문제로 한참을 씨름했습니다..해답은 공백 두 개 (" ") 가 결과에 출력되서는 안됩니다.이 조건이 모호하게 되어있습니다.그리고 공백 두 개가 출력되더라도, decoding_sentence()는 PASS로 뜨고encoding_sentence()는 FAIL로 뜹니다.자꾸 안되시는 분들은 공백 두 개 이상을 한 개로 바꾸어주는 함수를decoding_sentence()와 encoding_sentence()에 넣어보세요.해결될겁니다.
-
미해결누구나 다루기 쉬운 Vue.js 입문 - 3시간 안에 배우기
라우터를 사용할 때, mounted가 호출되지 않는 경우에 대한 질문
전업 개발자는 아니고, 취미겸 자기 계발을 위해 웹 프론트 엔드를 공부하고 있는 직장인입니다.강사님의 강의 잘 들었습니다.현재 저는 강의 이후에 vue.js로 간단한 웹페이지를 만들어보고자 시도하고 있습니다.일단, 제가 근무하는 회사에서 직원들끼리 이루어지는 커피 내기의 기록을 그래프 형태로 보여주는 웹페이지를 만드는게 목표입니다.firebase와 vue.js를 이용하여 하나씩 구현해 나가고 있고,vue.js 부분의 경우 아래 웹페이지의 구현 예제를 수정해 나가면서 구현해보고 있습니다.https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44이 과정에서 혼자 아무리 생각해보고, 검색해보아도 풀리지 앟는 문제가 있어, 수업에서 다룬 예제가 아닌데도 실례를 무릅쓰고 질문드립니다.제가 만들고자 하는 사이트의 경우 사람별로 route url이 설정됩니다.이때. A라는 사람에 대한 차트를 ~/A를 통해 그려주고, B라는 사람에 대한 차트를 ~/B를 통해 그려줍니다. 이후 다시 ~/A를 통해 차트를 그리려고 하면 차트에 사용되는 데이터가 업데이트 되었음에도 차트를 그려주는 컴포넌트에서 mounted가 호출되지 않습니다.구체적으로 위 링크의 예제에서 start.vue 페이지의 downloads와 labels가 업데이트 됨에도 linechart 컴포넌트의 mounted가 호출되지 않습니다. 이상황에서 이전에 사용하지 url을 통해 차트를 그리는 경우, linechart 컴포넌트의 mounted가 호출됩니다.혹시, 충분한 정보 없이 질문 드렸다면 죄송합니다.
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
과제도 pdf로 올려주시면 감사하겠습니다.
과제를 제출할 수 없는 환경에 있습니다..과제를 풀 수 있도록 pdf파일 형식으로 올려주신다면 감사하겠습니다.
-
미해결초보부터 개발자 취업까지!! 실전 자바 강좌
8강 맨클래스에대하여
맨클래스의 반환타입이 없는데 어떻게 실행 되는지 궁금합니다.
-
미해결초보부터 개발자 취업까지!! 실전 자바 강좌
8강에 ManClass()
(사진)
-
미해결[김왼손의 왼손코딩] 미운코딩새끼: 4시간 만에 끝내는 파이썬 기초 (전자책 포함)
"와 ' 의 차이를 말씀안해주셨는데, 다음 레슨에 해주시나요?
(사진)
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
command_counter를 실행하자니 아래 에러가 뜹니다 ...원인을 아시나요?
Traceback (most recent call last):File "command_counter_copy.py", line 9, in for row in spamreader:File "C:Usersyjae_chungMiniconda3libencodingscp1252.py", line 23, in decodereturn codecs.charmap_decode(input,self.errors,decoding_table)[0]UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 1919: character maps to
-
미해결배틀로얄 게임을 만들어보며 배우는 언리얼 게임 개발
필드아이템 강의에서 (데이터준비)
강의 잘보았습니다.강의중 BP_FieldItem 이벤트그래프에서BeginPlay 이벤트에서 Branch연결을 반드시 해야하는건가요? 아니면 그냥 프로그래밍상의 약속인가요? 프로그램에 관한 튜토리얼을 보면은 이런부분을 자주 본거 같아서요. Null값(0이아니면)을 해야하는 이유가 궁금합니다.~ Branch를 지우고 연결해서 실행해도 문제없이 동작하던데 …
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
main()에서 계속 오답이라고 나옵니다.
안녕하세요.def main()에서 결과는 과제에서 요구하는대로 나오는데 계속 오답이라고 뜨네요.이유가 무엇일까요…?? get_factorial_value와 is_positive_number는 정답이라고 나오기에 main()의 코드만 첨부합니다.def main(): # ===Modify codes below============= print ("Input a positive number : ") user_input = 999 while user_input is not 0: user_input = input() if is_positive_number(user_input) is True: result = get_factorial_value(int(user_input)) print(result) return result elif user_input is "0": user_input = 0 else: print("Input again, please") print("Thank you for using this program") # ==================================
-
미해결앱 12개를 만들며 배우는 Swift4 & iOS11 아이폰 iOS 개발 강좌
xcode 질문
왜 제 xcode는 강사님과 다르게바로바로 컴파일되어 실행결과가 아래쪽에 안나올까요??계속 백지로만 있습니다
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
Test main이 Fail이 뜹니다.
def input_celsius_value():celsius=float(input("변환하고 싶은 섭씨 온도를 입력해 주세요:"))return celsiusdef convert_celsius_fahrenheit(celsius_value):fahrenheit=((9/5)*celsius_value)+float(32)return fahrenheitdef print_fahrenheit_value(celsius_value, fahrenheit_value):print("섭씨온도: %fn화씨온도: %f" %(celsius_value, fahrenheit_value))def main():print("본 프로그램은 섭씨를 화씨로로 변환해주는 프로그램입니다")print("============================")celsius_value=input_celsius_value()fahrenheit_value=convert_celsius_fahrenheit(celsius_value)print_fahrenheit_value(celsius_value, fahrenheit_value)print("===========================")print("프로그램이 종료 되었습니다.")if name == 'main':main()코드는 위와 같고 실행하면 다음과 같습니다.본 프로그램은 섭씨를 화씨로로 변환해주는 프로그램입니다변환하고 싶은 섭씨 온도를 입력해 주세요:32.2섭씨온도: 32.200000화씨온도: 89.960000프로그램이 종료 되었습니다.잘 실행되는데 제출하면 Failed가 뜨네요.
-
미해결배틀로얄 게임을 만들어보며 배우는 언리얼 게임 개발
필드아이템 (엑터준비)강의에서 질문
강의 잘 보았습니다.!~ BP_FieldItem에서 콜리젼 프리셋에서 object type을 WorldDynamic을 지정했는데..WorldStatic을 쓰지않고 WorldDynamic을 쓰는 이유가 궁금합니다.
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
터미널에서
source activate section2 잡고 (괄호에 섹션뜨고)아톰쳐서 인터프리터 실행시켰는데 프로젝트가 안잡혀있네요 왜그럴까요
-
미해결새차원의 코틀린(Kotlin) 강좌
학생인대 미래의 직업을 위해서 듣고 있었는대 내용이 진짜 좋은거 같아요
감사합니당
-
미해결React & Express 를 이용한 웹 어플리케이션 개발하기
this.state.keyword
... indexOf(this.state.keyword) > -1; input창에 입력을 했을 때 console.log(e.target.value) console.log(this.state.keyword)를 비교해보니 this.state.keyword값이 e.target.value 값 보다 한발짝 늦게 update,되더라구요. 제가 a를 쳤을 때 e.target.value는 a이지만 this.state.keyword는 공백으로 나오는데 이때 어떻게 data.filter( 함수) 에서 indexOf(this.state.keyword) > -1; 이 제대로 동작을 하는 건지 궁금합니다.