칼리리눅스 설치관련
미해결
화이트해커가 되기 위한 8가지 웹 해킹 기술
안녕하세요 virtualBox말고 윈도우에서 제공하는wsl2상에서 칼리 리눅스설치하고 수업을 들어도 되나요?
- 모의해킹
176만명의 커뮤니티!! 함께 토론해봐요.
미해결
화이트해커가 되기 위한 8가지 웹 해킹 기술
안녕하세요 virtualBox말고 윈도우에서 제공하는wsl2상에서 칼리 리눅스설치하고 수업을 들어도 되나요?
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
삭제된 글입니다
미해결
Typescript with Vue 실전 프로젝트
안녕하세요 @Prop() readonly id(느낌표):string; 이런 문장에서 !(느낌표) 를 찍는 이유가 궁금해서 질문 남깁니다 ! 감사합니다!
해결됨
윤재성의 Vue.js 프로젝트를 통한 실무 개발 과정
값을 가져오는 건 바인딩이라고 하는데 랜더링은 구체적으로 뭐라고 하는지 모르겠습니다!
미해결
스프링 핵심 원리 - 기본편
안녕하세요. 강의 진심 감사히 듣고 있는 수강생입니다. 다름이 아니라, 테스트 코드 작성하실 때 @BeforeEach로 테스트 메소드 실행될 때 마다 AppConfig 생성해서 한다고 하셨는데, 1) 그렇게 테스트 하는 이유는 테스트 할 때마다 깔끔한 데이터 상태를 위해서일까 싶은데 맞나요? 2) 테스트 해야할 케이스가 많으면 @BeforeEach 로 AppConfig 인스턴스를 계속 새로 생성해서 사용하는게 부담이 되진 않을지 궁금합니다. 3) 테스트 코드는 각 클래스 별로 독립적으로 실행되는 줄 알았는데 테스트 전체적으로 실행하나요? 제가 예로MemberServiceTest만 테스트 돌려도 ./core/src/*/classes 모든 클래스들을 모두 실행한다는 명령어가 콘솔에서 보여 질문드립니다. 3 가지 궁금합니다. 감사합니다!
미해결
HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
gnb a span { 의 width 값과 height 값을 100%로 주셨는데 혹시 inherit으로 상속 받아도 될까요?
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 잘봤습니다!! 역시 꿀강의!!! 배운 것을 토대로 토이프로젝트를 간단하게 진행 해보려고 합니다. 그래서 팁좀 받을 수 있을까... 해서요!!! 요구사항은 이렇습니다. - 회원엔티티는 본인의 플레이리스트 엔티티를 조회한다. - 플레이리스트의 정보는 동영상 엔티티에 저장되어 있다. - 회원은 본인의 플레이리스트 목록을 삭제할 수 있다. - 회원은 본인의 플레이리스트 중 가장많이 들은 곡 리스트를 조회할 수 있다. - 모든 사용자는 동영상 엔티티에 있는 모든 곡 중 가장 많이 들은 곡 리스트를 조회할 수 있다. 위와 같은 결과로 아래와 같이 설계하였습니다. 가능하시다면 피드백 가능할까요 ㅜ.ㅜ @Entity public class Member { @Id @GeneratedValue ( strategy = GenerationType . IDENTITY ) private Long id; private String name; private String email; @OneToMany ( mappedBy = "member" ) private List < PlayList > playList = new ArrayList <> (); } @Entity public class Video { @Id @GeneratedValue ( strategy = GenerationType . IDENTITY ) private Long id; private String title; @Column ( name = "video_no" ) private String videoNo; private String image; private int count; // 재생 횟수 } @Entity public class PlayList { @Id @GeneratedValue ( strategy = GenerationType . IDENTITY ) private Long id; private int count; // 재생 수 @ManyToOne @JoinColumn ( name = "member_id" ) private Member member; @ManyToOne @JoinColumn ( name = "video_id" ) private Video video; }
미해결
벡터 미적분학 시리즈2 - 미분 심화: 최적화 이론의 기초와 벡터 함수
안녕하세요, 선생님 3.4단원 (c)의 25:50 quiz 의 힌트 관련해서 문의드립니다. S = xy + yz + zx - 5 = 0 일 때, x -> 0 이나 x -> 무한대일 때, xyz -> 으로 가는 것을 보일 때, (1+epsilon)^(1/2) 테일러정리를 사용한다고 하셨는데, 어떤 부분에서 이 정리를 사용해야 될지 감이 안 잡혀서 문의드립니다. x -> 무한대일 때, y, z -> 0인 것을 보일 때 쓰는건지요? 스타벅스 기프티콘을 받고 싶었지만, 도저히 헷갈려서 문의드립니다. ㅠ
미해결
정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
p = p.next; 위의 코드 바로 다음에 아래처럼 로그를 출력하면 전 p 와 p.next의 참조값이 동일하게 나올거라 생각했는데 다르게 나옵니다. 제가 잘못이해하고 있는걸까요? System.out.println("\n p2:"+ p + " / p.next:"+ p.next ); 테스트로 아래처럼 해보면 ListNode tmpP = p; ListNode tmpP2 = p.next; tmpP 와 p tmpP2 와 p.next는 각각 서로 같고 두쌍은 서로 다릅니다. ListNode tmpP2 = p.next; 가 tmpP2 와 p.next 가 같으므로 당연히 p = p.next 의 p와 p.next도 같아야된다고 생각하느데 다른 참조값이 나옵니다. (결과는 정상적으로 나옵니다) 추가로 체크해봤는데 p.next = node; p = p.next; 에서 아래 처럼 둘은 참조값이 같네요 p.next == node.next; p == node. 혹심 몰라 말씀드립니다
미해결
성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법
동일한 질문글을 보았으나 혹시나 해서 질문글 올립니다. 저 또한 select char(97);을 입력 시 0x61이 출력되는데 이후에 배우는 것들에 큰 차질을 빚게되나요? 해결할 순 없을까요?
미해결
눈떠보니 코딩테스트 전날
유레카문제풀이에서 충분히 할 수 있을거라고 하면서 끝맺음이 나는데... 끝까지 문제풀이를 해주셨으면 합니다.ㅠ부탁드립니다.
미해결
예제로 배우는 스프링 입문 (개정판)
.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
캐릭터 시선으로 바라보는 축이 Local 인데 강의에서 45도 정도 로테이션 한상태로 캐릭터를 움직이면 글로벌축으로 움직여서 캐릭터시선으로 움직임을 주려고 다이렉션을 줬는데 , 주석에서 트랜스폼 다이렉션은 Local -> World 라고 하셨는데 혼동이 옵니다 World 와 Global 다른가요 ? 로컬이 캐릭터 시선이 아닌가요?
해결됨
리액트로 나만의 블로그 만들기(MERN Stack)
강의 14:20 즈음, server/routes/api/post.js 작성 중에, 87번 코드와, 103번 코드에서 약간에 차이가 보이는 듯 한데, 다른 코드와는 다르게 유독 103번 줄에는 await Post.findByIdAndUpdate(newPost._id, { $push: { } 없이, category: findResult._id }) 이렇게 코딩이 되어있는데, 혹시 $push: {} 없이 작성을 하더라도 나중에 완성되고 나서 작동하는데는 문제가 없나용~? (항상 잘 수강하고 있습니다 친절한 강의 감사드려요~~^^)
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
public Member save (Member member) { // SimpleJdbcInsert 는 SQL 문을 대체함 (Insert SQL 문을 구성하는 테이블명 , PK , 필드명은 필요함 ) SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert( jdbcTemplate ) ; jdbcInsert.withTableName( "member" ).usingGeneratedKeyColumns( "id" ) ; Map<String , Object> parameters = new HashMap<>() ; parameters.put( "name" , member.getName()) ; Number key = jdbcInsert.executeAndReturnKey( new MapSqlParameterSource(parameters)) ; member.setId(key.longValue()) ; return member ; } SimpleJdbcInsert의 동작방식이 이해가 가지 않습니다. member.setId(key.longValue()) 에서 멤버에 ID 값을 세팅한 것은 이해가되는데 setName은 어떻게했는지 이해가 가지 않습니다.
미해결
정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
LinkedList 이해하려니 머리가 깨지네요 ㅎㅎ 이해는 했는데 이 문제가 사실 다 배열에 넣어서 그냥 큰 순서대로 소팅해도 되는것 같던데 그랗게하면 점수를 낮게 받을까요? 그렇게 풀면 안되는 이유가있을까요? 점수가 낮다면 그것만으로도 이유가 될거란건 수긍합니다 시험이니깐요 배열에 다넣어서 소트하는게 시간복잡도도 더 효율적인것 같은데요 지금 다시 leetcode에서 문제보니 LinkedList로 최종결과를 리턴하도록 강제하고있네요
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
인자를 객체로 넘겼다고 에러가 뜨는데, auth를 구현하는 app.get에서 자꾸 문제가 있다고 합니다. 오타는 도저히 못찾겠는데,, 문제가 무엇일까요 const express = require ( 'express' ) const app = express () const port = 5000 const bodyParser = require ( 'body-parser' ); const { User } = require ( "./models/User" ); const config = require ( './config/key' ); const cookieParser = require ( 'cookie-parser' ); const auth = require ( './middleware/auth' ); // application / x-www-form-urlencoded app . use ( bodyParser . urlencoded ({ extended : true })); // application / json app . use ( bodyParser . json ()); app . use ( cookieParser ()); const mongoose = require ( 'mongoose' ); //mongoDB 연결 mongoose . connect ( config . mongoURI ,{ useNewUrlParser : true , useUnifiedTopolongy : true , useCreateIndex : true , useFindAndModify : false }). then (() => console . log ( 'MongoDB connected !' )) . catch ( err => console . log ( 'MongoDB Error !' )); //Hello world 출력 app . get ( '/' , ( req , res ) => { res . send ( 'Hello World!' ) }); //register 라우트 app . post ( '/api/users/register' , ( req , res ) => { // 회원가입 할 때 필요한 정보들을 client으로부터 받아오면 // 그것들을 database에 넣어준다. const user = new User ( req . body ) user . save (( err , userInfo ) => { if ( err ) return res . json ({ success : false , err }) return res . status ( 200 ). json ({ success : true }); }); }); // login 라우트 app . post ( '/api/users/login' , ( req , res ) => { // console.log('ping') //요청된 이메일을 데이터베이스에서 있는지 찾는다. User . findOne ({ email : req . body . email }, ( err , user ) => { // console.log('user', user) if ( ! user ) { return res . json ({ loginSuccess : false , message : "제공된 이메일에 해당하는 유저가 없습니다." }) } //요청된 이메일이 데이터 베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인. user . comparePassword ( req . body . password , ( err , isMatch ) => { // console.log('err',err) // console.log('isMatch',isMatch) if ( ! isMatch ) return res . json ({ loginSuccess : false , message : "비밀번호가 틀렸습니다." }) //비밀번호 까지 맞다면 토큰을 생성하기. user . generateToken (( err , user ) => { if ( err ) return res . status ( 400 ). send ( err ); // 토큰을 저장한다. 어디에 ? 쿠키 , 로컳스토리지 res . cookie ( "x_auth" , user . token ) . status ( 200 ) . json ({ loginSuccess : true , userId : user . _id }) }) }) }) }) // auth 라우트 (미들웨어로 사용될 것입니다.) app . get ( '/api/users/auth' , auth , ( req , res ) => { //여기 까지 미들웨어를 통과해 왔다는 얘기는 Authentication 이 True 라는 말. res . status ( 200 ). json ({ _id : req . user . _id , isAdmin : req . user . role === 0 ? false : true , isAuth : true , email : req . user . email , name : req . user . name , lastname : req . user . lastname , role : req . user . role , image : req . user . image }) }) app . get ( '/api/users/logout' , auth , ( req , res ) => { // console.log('req.user', req.user) User . findOneAndUpdate ({ _id : req . user . _id }, { token : "" } , ( err , user ) => { if ( err ) return res . json ({ success : false , err }); return res . status ( 200 ). send ({ success : true }) }) }) // 포트를 통해 index.js 를 실행합니다. app . listen ( port , () => { console . log ( `Example app listening at http://localhost: ${ port } ` ) }); 위는 index.js const { User } = require ( '../models/User' ); let auth = ( req , res , next ) => { //인증 처리를 하는곳 //클라이언트 쿠키에서 토큰을 가져온다. let token = req . cookies . x_auth ; // 토큰을 복호화 한후 유저를 찾는다. User . findByToken ( token , ( err , user ) => { if ( err ) throw err ; if ( ! user ) return res . json ({ isAuth : false , error : true }) // console.log('userh', user) req . token = token ; req . user = user ; next (); }) } module . exports = { auth }; auth.js // 모듈 (User에서는 데이터 베이스를 위한 몽구스, 유저의 비밀번호 암호화를 위한 비크립트, 유저의 개개인 토큰을 얻기 위한 제이슨웹토큰을 가져온다.) const mongoose = require ( 'mongoose' ); const bcrypt = require ( 'bcrypt' ); const jwt = require ( 'jsonwebtoken' ); // 비밀번호 암호화를 위한 salt 값 설정. salt 값은 암호화된 비밀번호를 해킹하기 어렵게 만들 수 있음. const saltRounds = 10 ; // 유저의 정보들을 객체화, 이른 바 유저 스키마를 생성한다. ( 몽구스의 메소드 ) // 각 유저들의 이름, 이메일, 비밀번호 등 개인정보를 담기 위한 객체임. const userSchema = mongoose . Schema ({ name : { type : String , maxlength : 50 }, email : { type : String , trim : true , unique : 1 }, password : { type : String , minlength : 5 }, lastname : { type : String , maxlength : 50 , }, role : { type : Number , default : 0 }, token : { type : String , }, tokenExp : { type : Number }, image : String }) // 유저 스키마 이전에 실행될 것임. userSchema . pre ( 'save' , function ( next ) { var user = this ; if ( user . isModified ( 'password' )) { //비밀번호를 암호화 시킨다. bcrypt . genSalt ( saltRounds , function ( err , salt ) { if ( err ) return next ( err ) bcrypt . hash ( user . password , salt , function ( err , hash ) { if ( err ) return next ( err ) user . password = hash next () }) }) } else { next () } }) // comparePassword 라는 이름의 유저 스키마 메소드를 생성합니다. ( 당연히 비밀번호 비교를 위한 메소드이겠지요? ) userSchema . methods . comparePassword = function ( plainPassword , cb ) { //plainPassword 1234567 암호회된 비밀번호 $2b$10$l492vQ0M4s9YUBfwYkkaZOgWHExahjWC bcrypt . compare ( plainPassword , this . password , function ( err , isMatch ) { if ( err ) return cb ( err ); cb ( null , isMatch ); }) } userSchema . methods . generateToken = function ( cb ) { var user = this ; // console.log('user._id', user._id) // jsonwebtoken을 이용해서 token을 생성하기 var token = jwt . sign ( user . _id . toHexString (), 'secretToken' ) // user._id + 'secretToken' = token // -> // 'secretToken' -> user._id user . token = token user . save ( function ( err , user ) { if ( err ) return cb ( err ) cb ( null , user ) }) } userSchema . statics . findByToken = function ( token , cb ) { var user = this ; // 토큰을 decode 한다. jwt . verify ( token , 'secretToken' , function ( err , decoded ) { // 유저 아이디를 통해서 유저를 찾은 다음에 // 클라이언트에서 가져온 token과 DB에서 가져온 토큰이 일치하는지 확인합니다. user . findOne ({ "_id" : decoded , "token" : token }, function ( err , user ) { if ( err ) return cb ( err ); cb ( null , user ); }) }) } // 유저스키마 => User 라는 이름으로 모델화. const User = mongoose . model ( 'User' , userSchema ); // 방금 모델화한 User 밖에서도 사용가능하도록 exports. module . exports = { User }; user.js 입니다. 문제가 무엇일까요, ㅠ
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
아래와 같은 오류가 뜨면서 기사와 아처에 에러가 뜨네요. 겟 어택에 대한 부분도 에러가 뜨고 있습니다. 참고로 파트/섹션별로 나누어서 클래스를 만들어서 par1_section5_(이름) 으로 생성했습니다. 무엇이 문제일까요? 혼자 이것저것 수정해봐도 되지 않아 질문남깁니다.
미해결
Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
두번째 강의내용에서 github에 접근해 clone 해오는걸 잘 이해가 안가네요 어떻게 접근해서 아이디를 남겨야되는지 github 방문에 다 봐도 그런 링크를 못찾고 했습니다. gist 라는 데도 안보이고요
미해결
리눅스 시스템 프로그래밍 - 이론과 실습
갑자기 궁금해진건데 이번 강의 마지막에 강사님께서 새로운 쉘을 켜시고 창을 오른쪽으로 이동시키셨자나요? 이게 윈도우에서 하던 것처럼 window+방향키로 되긴 했는데 가상머신을 사용하다 보니까 어쩔때는 가상 머신 창 자체가 윈도우상에서 한쪽으로 붙더라고요. 혹시 이 기능을 하는 단축키가 우분투에 따로 있나요? 강사님 화면 밑에 누른 키를 보여주는걸로 봐도 모르겠어서 궁금합니다.