IT정보뉴스

개발자가 입사 첫날 버그를 고칠 수 있어야 하는 이유

개발자가 입사 첫날 버그를 고칠 수 있어야 하는 이유회사에 새로운 직원들이 입사하면 업무를 가르치느라고 많은 노력이 들어간다. 특히 지식 산업인 소프트웨어 분야는 새로운 개발자가 입사를 하면 알려줘야 하는 것이 매우 많다. 회사마다 다르지만 신규 입사한 개발자가 개발에 투입되는 데는 짧게는 일주일부터 길게는 6개월까지 걸린다. 6개월은 내가 인터뷰 한 회사 중에 있었다. 알아야 할 지식과 법규가 많아서 6개월은 공부를 해야 개발에 투입된다고 한다.그러다 보니 입사 후 빨리 업무에 투입될 수 있는 동일직종 경력자를 선호하곤 한다. 이런 회사가 많을수록 개발자들은 이직 시 선택의 폭이 좁아지게 된다. 개발자들이 주로 같은 분야로만 옮겨 다니다 보니 이직도 어렵고 업계간 개발자 순환이 잘 안 된다.여기 가상의 A, B, C, D 회사가 있다.A사는 김부장이 개발 전반의 내용을 다 꿰뚫고 있어서 신규 개발자가 입사하면 김부장이 1주일 정도 교육을 해줘야 한다. 김부장은 다른 어떤 직원보다 개발 내용을 많이 알고 있어서 웬만한 이슈는 다 김부장을 통해야 해결이 된다. 개발자가 입사를 할 때마다 김부장이 교육을 하기 때문에 개발자들이 김부장에게 많이 의존하고 김부장은 회사의 경영진에게도 신망이 두텁다.B사는 개발자 입사 시 개발에 필요한 기본적인 제품에 대한 지식이나 기술을 교육 시키기 위해서 선배들이 돌아가면서 며칠 동안 교육을 해야 한다. 물론 교육을 받자마자 신규 개발자들이 개발을 제대로 하지는 못한다. 사수에게 꾸준히 개발 내용을 전수 받아야 한다.C사에서는 업무를 잘 알지 못하면 개발을 하기 어렵기 때문에 업무를 모두 파악하는데 6개월 이상이 걸리고 그때까지는 신규 개발자는 허드렛일 밖에 못한다. 고참이 10분이면 할 수 있는 일을 신규 개발자는 몇 시간이 걸리고 잘못될 위험성도 높아서 신규 개발자에게는 일을 제대로 시키지 못한다. 그러다 보니 신규 개발자가 많이 입사를 해도 고참들은 여전히 바쁘다.D사에서는 고참들이 기존 제품의 유지보수에 매달려 있어서 신규 개발자에게 업무를 제대로 전달하지 못한다. 그러다 보니 신규 프로젝트는 신규 개발자들이 담당하게 되었고 기존의 개발자들은 여전히 유지보수에 매달리고 있다.A~D사 모두 신규 개발자가 입사하마자 스스로 일할 수 있는 체계를 갖추고 있지 못하고 있다. 이런 구조의 회사는 작은 규모였을 때는 문제가 안보이지만 회사가 커질수록 문제가 급속도로 드러나서 개발 효율은 바닥을 치게 된다. 이런 회사에서는 기존의 고참 개발자들은 신규 개발자들의 무능함과 열정 부족을 탓하게 되고 신규 개발자들은 정보 공유 부족으로 개발하기 어려운 환경을 탓하게 된다.필자는 여러 회사에서 강연이나 세미나를 할 때 신규 개발자가 입사 후 개발에 투입되어서 버그를 고치는데 시간이 얼마나 걸리는지 물어본다. 그리고 그 과정에서 고참 개발자들이 얼마나 업무를 가르쳐 주기 위해서 시간을 투자해야 하는지 물어본다. 이 질문에 대한 대답을 통해서 그 회사의 개발체계와 개발 문화의 성숙함을 알 수 있다. 대부분의 회사가 일주일 이상 걸리고 몇 달까지 걸리는 회사도 있었다. 또한 많은 회사들이 사수/부사수 제도를 이용하여 고참들이 많은 시간을 투자하여 가르쳐주고 있다.내가 생각하는 가장 이상적인 답변은 고참 개발자들의 시간은 거의 투자하지 않고 신규 입사 개발자가 입사 첫날 또는 둘째 날까지 스스로 버그를 고치는 것이다. 고참들은 코드 리뷰를 해주는 정도면 충분하다. 이렇게 할 수 있는 회사는 자세히 물어보지 않아도 성숙한 개발 체계와 개발 문화를 갖추고 있다는 것을 알 수 있다. 불행히도 필자가 접한 우리나라의 수십 개의 회사 중에서 그런 회사는 없었다.미국에 취업을 해본 개발자들은 알겠지만, 개발자가 입사했을 때 선배들이 뭘 자세히 가르쳐주는 회사는 많지 않다. 이슈를 할당해주면 알아서 고쳐야 하고 개발 프로세스대로 코드 리뷰 등을 진행할 뿐이다. 물어보면 가르쳐주기는 하는데 먼저 나서서 가르쳐 주는 경우는 별로 없다. 회사는 학교가 아니기 때문이다.필자가 CEO로 있는 이우소프트에서도 신규 개발자에게는 이슈를 그냥 할당해주고 개발자는 하루 이틀 안에 이슈를 해결하고 코드리뷰를 진행한다. 물론 여기에 약간의 문제가 있다. 이제부터 어떻게 해야 이렇게 할 수 있고 문제가 무엇인지 얘기를 해보고자 한다. 그럼 시간 순서대로 따라가보자.-2주일 전 - 신규 개발자용 개발 PC를 준비한다.-1주일 전 - 신규 개발자가 입사하기 며칠 전에 PM이 미리 신규 개발자가 해결할 수 있을만한 쉬운 버그 몇 개를 할당 해 놓는다.-3일 전 - 신규 개발자용 개발 PC에 개발환경을 구축한다. 이미지 백업 받아 놓은 것을 이용해서 한번에 구축한다-입사 당일 9시 - PM이 개발자에게 이슈관리시스템 URL을 알려주고, 신규 입사자들이 봐야 하는 가이드가 적혀 있는 사이트 URL을 알려준다. (Wiki 등)-10시 - 가이드대로 소스코드관리시스템에서 소스코드를 내려 받아서 Build script를 이용해서 Full build를 수행한다.-11시 - Build가 진행되는 동안 PM이 알려준 이슈관리시스템의 URL에 접속해서 내가 할당 받은 버그(이슈)를 확인한다. 첫 번째로 고칠 버그를 선택한다-12시 - 식사-13시 - 개발 프로세스 문서를 통해서 기본적인 개발 프로세스를 확인한다.-14시 - 첫 번째 버그를 고친다. 첫 번째 버그는 간단한 버그라서 스펙/설계 문서 도움 없이 고칠 수 있다.-15시 - 소스코드를 commit하고 코드리뷰를 등록한다. 회사에 따라서 코드리뷰를 종료하고 commit하는 회사도 있다.-16시 - 리뷰어가 코드리뷰를 진행하고 Confirm을 한다.-17시 - 해당 버그 이슈가 close 된다.-이제 좀더 빠른 속도로 다른 버그들을 고쳐나간다.-개발자의 역량을 확인하고 좀더 어려운 버그와 신규 기능을 할당한다.이렇게 진행하기 위해서는 몇 가지 전제조건이 있다.-개발 시스템이 제대로 구축되어 있어야 한다. 이슈관리, 소스코드관리, 빌드 등이 잘 시스템화 되어 있어야 한다.-스펙, 설계, 개발 가이드, 개발 프로세스 등의 개발 정보가 Doc, Wiki, Issue 등에 문서로 충분히 기록되어 있어야 한다.-신규 입사자가 이와 같은 개발환경에 익숙해서 입사하자 마자 일을 할 수 있어야 한다.하지만 현실적으로 마지막 조건에 문제가 발생한다. 대학에서 소프트웨어를 전공한 개발자도 이슈관리시스템을 한번도 써보지 못하고 입사를 하는 경우가 대부분이다. 기껏해야 Subversion이나 Git의 기본기능을 써본 것이 개발 시스템을 써본 것의 전부인 경우가 많다. 그래서 회사에서 아무리 준비가 잘 되어 있다고 하더라도 입사 첫날 버그를 고치기는 어렵다. 그래서 기본적인 개발 프로세스와 개발 시스템에 대한 교육을 먼저 시키고 진행을 해야 한다. 이 때문에 하루, 이틀 지연이 될 뿐이지 그 이후에 개발을 하는 것은 별 문제가 없다.이런 환경에 개발을 한다면 본인도 자연스럽게 공유를 중심으로 한 개발 문화를 자연스럽게 익히고 대부분의 지식과 경험은 선배들이 남겨놓은 문서를 통해서 습득하게 된다. 그래서 선배 개발자들은 신규 개발자가 입사를 하면 시간을 더 빼앗기는 것이 아니라 귀찮았던 일을 덜어주게 되고 선배 개발자들은 더 어려운 일을 하게 되고 새로운 일을 할 수 있다. 물론 문서로 모든 지식이 공유되는 것은 아니고 선배에게 물어봐야 하는 시간이 상당히 줄어드는 것이다. 공유를 하고 후배 개발자들이 일을 하기 쉽게 만들어 놓는 것은 바로 자신이 앞으로 나아갈 수 있게 만드는 것과 같다.신입 개발자가 입사를 하면 아무 것도 가르쳐주지 말고 버그만 달랑 할당해보자. 그리고 무슨 일이 벌어지는지 보자. 선배를 귀찮게 하지 않고 스스로 첫날 버그를 해결하면 문제가 없는 것이고 2,3일 넘어가도 버그를 못 고치면 뭔가 문제가 있는 상황이다. 어떠한 문제 때문에 신입 개발자가 버그를 고치지 못하는지 잘 분석해보자. 거기에 회사의 만들어 나가야 할 개발체계, 개발문화가 있다.

최근 등록된 자바스크립트 소스

사진 설명
사진

w2ui New JavaScript UI Library

w2uiNew JavaScript UI LibraryWhat People Are SayingI have been using it quite substantially for a number of different projects now and must say that I absolutely love the way it works. - Soteri PanagouI've been using your grid on a couple of small projects and I've got to say it's an awesome piece of work. It's very easy to configure and offers a lot of features while staying really responsive. As a programmer it inspires me to write better code. - CollandersI must say, I really like all of these controls. They have clean, elegant visuals and the attention to design detail really makes me a fan. In particular, the grid is just incredible. - Bob FI was searching for a slick and simple, but also user-friendly UI library. I tried Polymer, Angular, OpenUI5, jqwidget, … but they do not satisfy my needs. I don’t want to declare the whole UI in html (templates) but instead will create ALL UI elements programmatically (in an easy way). With w2ui this can be done really easy and the UI elements looks really nice. - Gerald LeebW2UI is an excellent library! In less than a couple of days I was able to reach the same degree of functionality in my project (an interface for my lab database), which took me a couple of months using a well known widget library. W2UI is clean, small, fast and efficient. Plus, it's good looking! - Antonio SantosVery nice looking library. I'm impressed and very hopeful that this will continue to grow and become a major player. The Grid is awesome! - John WhittenI'm loving w2ui, it packs a lot of punch for such a light library. After working with ExtJS for 5 years, I've finally found a suitable replacement. The grid is fantastic! Thanks for all your hard work. - Neil GroverI am seriously blown away at the amazing quality of this library. Well done! - BillyThis is amazing! If any project I use this is profitable I'll make sure to pay you for it. - Bruno CassolThis is incredible, thank you. - Anthony IsaacsonThis library is absolutely amazing, i never seen in my life such a clean and understandable code!!! Congrats for your work! - MrCattFirst of all, thank you very much for your hard work on these components - they're all very, very good! - Dave ThompsonW2UI 1.5 - MIT LicenseW2UI is modern, intuitive JavaScript UI library for building rich data-driven web application. The library has a small footprint and only jQuery (1.9+) as a dependency. The library has the following widgets:w2layoutw2gridw2toolbarw2sidebarw2tabsw2formw2fieldsw2popupw2utilsThe complete library is only 69Kb (minified & gzipped)Who Uses ItIf you're using w2ui I'd love to hear about it, please email to vitmalina@gmail.com name of your project and a link to a public website or demo and I will add it to the list.List of projects that use w2uiQuick StartCurrent stable version is 1.4. Current development version is 1.5.rc1.You can:Download from here: http://w2ui.comInstall using bowerbower install w2ui To start using the library you need to include into your page:w2ui-1.4.js (or w2ui-1.4.min.js)w2ui-1.4.css (or w2ui-1.4.min.css)All the widgets and their css classes are defined inside of these two files. There is no image dependencies, some images are embedded into CSS file.There is no requirement for a server side language. Node, Java, PHP, ASP, Perl or .NET all will work, as long as you can return JSON format from the server (or write a converter into JSON format on the client).Getting Started GuideDocumentation & DemosYou can find documentation and demos here:http://w2ui.com/web/docs - documentationhttp://w2ui.com/web/demos - demosBug TrackingHave a bug or a feature request? Please open an issue here https://github.com/vitmalina/w2ui/issues. Please make sure that the same issue was not previously submitted by someone else.BuildingI have switched to Grunt as a build tool. You will find Gruntfile.js in the root. You still can build with ANT if you are more comfortable with it. Both processes will produces same w2ui.js and w2ui.css files. Grunt has a few more tasks, such as watch, to auto compiles less and js files as you develop. Both tools will do the following:Compile LESS filesConcatenate and minify CSS filesConcatenate, uglify and minify JS filesTo use ANT, you will need to install NodeJS and NPM, then run the following command to install dependenciessudo npm install less -g sudo npm install clean-css -g sudo npm install uglify-js@1 -g To use Grunt, you will still need to install NodeJS and NPM, then run npm install that will install all dependencies as they are described in package.json file.npm install File Structure- dist - compiled JS and CSS files - src - source JS files - kickstart - copy of another project used with the demos (not part of w2ui itself) - less - LESS files (source for css) - demos - all demos, same as on the website - libs - auxiliary libraries (jquery, codemirror, etc.) used in the demos (not part of w2ui itself) - server - example implementations for a server implementation communicating with w2ui instances - test - feature testing files - qa - some qunit test ContributingYour contributions are welcome. However, few things you need to know before contribution:Please check out latest code before changing anything. It is harder to merge if your changes will not merge clean.If you are changing JS files - do all changes in /src folderIf you are changing CSS files - do all changes in LESS in /src/less/srcIf you want to help with unit test - do all changes in /qaIf you want to change documentation - do all changes in /docsIf you want to add demos - do all changes in /demoshttp://w2ui.com/web/docs/1.5/

사진

웹에서 채팅하기 converse.js

웹에서 채팅하기 converse.js4월 21, 2017, 3:27 오후웹 페이지에서 채팅을 할 생각을 해보았다.그래서 ‘open source web chat’ 검색하였다.converse.js가 보인다.demo 사이트에 접속하여 동작하는지 확인한다.동작하는 군.내 환경에 getting started 준비한다. index.html 파일을 생성.음, 만들긴 했는데, .. 서버는 어떡하지?BOSH 음. 전동공구가 필요하구나. … 뭔가 서버에 또 깔아야 하나? …그렇군. 내가 사용중인 서버 ejabberd가 BOSH가 되는 군.TADA …된다 !!!ps. 이제 이 블로그에 붙여봐야지.The Converse.js User ManualTable of ContentsRegistering a new chat accountChoosing your providerFilling out the registration formAdding a contactA pending contactA normal contactRemoving a contactThe converse.js websiteWelcome to the converse.js user manual. This manual is very much still a work in progress and is far from complete. Please bear in mind that it’s the work of volunteers.If you have requests or suggestions on how the manual can be improved or expanded, then please contact me or create a new ticket on Github.Although converse.js can be integrated into any website, for this user manual we’ll refer to the canonical version at https://conversejs.org.This documentation also integrates the converse.js chat client, so you can try out some of the steps right on this page! Just click the Toggle chat button at the bottom right of the page to open the so-called control box of the converse.js chat client.Registering a new chat accountThe registration panel of converse.jsWith converse.js you can register a new XMPP account on any publically available XMPP provider. To do so, click the Register tab on the chat client.You will then see the registration panel as shown in the picture below.Choosing your providerConverse.js uses a chat protocol called XMPP (also known as Jabber) which allows “federation”. This means that it’s similar to email, in the sense that people signed in at different XMPP chat providers can still chat with one another.For example, if you have a Yahoo! email account, you can send and receive emails from a friend with a Google email account. In the same way, if you have a chat account from Conversejs.org, you can send and receive chat messages with a friend who has an account at Jappix.com.There are many free providers online which allow you to register a new account. You can see a list of some of them at xmpp.net. The xmpp.net website provides a security grading for the XMPP servers of the providers, which is very useful. They are however sometimes slow to add new servers to the list. A larger list of XMPP providers is also available at list.jabber.net.You can find the domain name for a server under the Domain column at xmpp.net. or the Server column at list.jabber.net.Once you know which XMPP provider you’d like to use, you can type its domain name and click the Fetch registration form button.The registration formFilling out the registration formAfter you’ve clicked Fetch registration form, the chat client will contact the chat provider, ask for its registration form and then present it to you.Different chat providers have different registration forms, but they’re all relatively similar.Check the security scoreAt the top of the form you’ll see a colored bar containing the text xmpp.net score. This shows the security score for this server as determined by xmpp.net where you can test out a server for yourself. You should generally avoid providers with a poor security score (colored in red).Choosing a usernameAs you can see in the registration form, the username consists of two parts separated with an @ sign, similar to an email address.The first part is your unique handle which you need to choose. The second part is the domain name of the chat provider, the one which you chose in the previous step when you fetched the registration form.When you want to give someone your XMPP chat username, or when you want to add someone else as a contact, you need to specify it in full, like you would an email address.Once you’ve chosen your user name and password, click Register. If Successful, you’ll be automatically logged in to your new account.The form for adding a new contactAdding a contactIn order to start chatting with someone, you first need to add them as a contact.To do this, click the Add a contact link in the Contacts tab. This will slide open a dropdown in which you can type the username of the person you’d like to add.Remember, an XMPP username (also called a JID or Jabber ID) is similar to an email address, in that you have both the user’s handle and the domain name of the provider, separated with an @ sign.Once you’ve typed the username and clicked submit, your request will be sent to this person. If they are online, they will immediately be notified of your request, otherwise they’ll see it next time they come online.Technically, when you add someone as a contact, you’re doing two things. Firstly, you are adding the contact to your roster (think of it as an address book) and secondly you are asking to be notified whenever that person comes online.A pending contactA pending contactThe person you are adding as a contact has the option to either accept or decline your request. Until that decision has been made, they will appear in your roster as a so-called pending contact. In other words, their final status is pending on whether they accept or decline your request.A normal contactA normal contactIf the person accepts your contact request, they will get a chat status indicator in your roster and will also become clickable. Clicking on the name of the user will open a chat box in which you can then start chatting with that user.Removing a contactRemoving a contactTo remove a contact, hover your mouse over their name and then click on the trash icon. You will be prompted to confirm, and if you do, the contact will no longer be visible in your roster.

사진

[JavaScript] 자바스크립트로 네이버 자동로그인 만들기

[JavaScript] 자바스크립트로 네이버 자동로그인 만들기 VBSciprt로 자동로그인 스크립트를 만들었는데 요청에 의해서 자바스크립트로 다시 만들었습니다.문법이 비슷비슷해서 살짝 문법만 바꿔주니까 되네요. [Program/VBScript] - [VBScript] 네이버 자동로그인 스크립트 만들기[Program/VBScript] - [VBScript] 다음(Daum) 자동로그인 스크립트 만들기네이버에 자동로그인 하는 스크립트입니다.네이버는 다음과 다르게 http://static.nid.naver.com/loginbox.nhn 라는 별도의 로그인 화면으로 되어있습니다. 보안단계에 따라서 로그인 방식이 다릅니다.     1단계 : HTML을 이용한 일반 로그인     2단계 : Javascript를 이용한 로그인     3단계 : ActiveX 보안모듈을 이용한 로그인 사용되는 로그인화면 오브젝트     m2b : 보안1단계 버튼     id    : ID입력 텍스트 박스     pw  : 암호 입력  텍스트 박스     frmNIDLogin : 로그인 폼 【소스】/* IE오브젝트 생성 */ var objIE = WScript.CreateObject("InternetExplorer.Application"); /* 홈페이지 접속 */ /* 네이버 로그인 페이지에 접속 */ objIE.navigate("http://static.nid.naver.com/loginbox.nhn"); /* 화면을 표시 */ objIE.visible = true; /* 화면 로딩이 끝날때까지 스크립트 정지 */ while(objIE.busy) ; while(objIE.Document.readyState != "complete") ; /* 보안1단계로 설정 */ objIE.Document.getElementById('m2b').click(); /* ID입력 */ objIE.Document.all("id").value = "아이디"; /* 암호 입력 */ objIE.Document.all("pw").value = "패스워드"; /* 로그인 실행 */ objIE.Document.frmNIDLogin.submit();  【다운로드】 naver_login.js잘몰라서요 2012.06.02 12:23 신고어떻게 적용하는거죠?Reply Edit 마메의여행기 2012.06.04 00:14 신고1. 첨부파일을 다운 받습니다.2. 메모장으로 첨부파일을 열고3. 아이디와 비밀번호를 수정하신다음에 저장합니다.4. 수정하신 파일을 더블클릭으로 실행하면 됩니다.Edit혹시.... 2012.07.19 19:53 신고제가 모바일네이버카페 자동로그인을 만드려고 하는데 응용해주실수 있으세요?그리고 html파일에 포함시켜서 사용도 가능하죠?Reply Edit 마메의여행기 2012.07.23 09:41 신고모바일 어플을 말씀하시는건가요?어떤 어플인지 알려주시면 저도 공부해 알려드리겠습니다.^^; 모바일 잘 몰라서요;;;HTML에서 버튼 이벤트나 자바스크립트 Page_Load에 연결해서 사용하신다는 말씀이시면 사용 가능합니다.Edit혹시.... 2012.07.24 10:50 신고웹앱이라고 아시는지요?안드로이드용 웹앱에 제가 활동하는 카페 자동로그인 기능을 넣으려고 했는데 네이버측에서 간단한 url로 접속하는걸 막아버려서 여기저기 뒤지다 발견해서 혹시나해서 물어보는거에요.Reply Edit질문있어요^^ 2012.08.30 13:34 신고첨부파일 이용해서 로그인 잘쓰고 있어요 감사드립니다.질문있어서요. 네이버아이디가 2개인 경우 각각 1.js 2.js로 저장해서1.js 더블클릭실행해서 로그인하게 하고 2.js 더블클릭해서 로그인하게 하면 총 2개의 창이 뜨는데요최종적으로는 1.js 더블클릭 실행해서 열었던 창도 2.js 아이디로 로그인이 바껴버리더라구요.각각 js 실행할때 뜨는 인터넷창이 개별적으로 로그인되게 하는방법은 없을까요?http://support.microsoft.com/kb/972017/ko여기 안내처럼 iexplorer 아이콘으로 실행했을때 각각 독립적으로 로그인되게 레지스트리랑 바로가기는 수정해논 상태인데도 저런점이 생기네요.Reply Edit 마메의여행기 2012.08.30 20:35 신고안녕하세요. 잘 쓰고 계시네요 기쁘네요^^서로 다른 아이디로 로그인 하고 싶으시다는 말씀이시죠?네이버 소스를 직접 보지 못해서 모르겠지만 일반적으로 쿠키로 정보를 구워서 보관하기 때문에 서로 다른아이디로는 로그인하기 힘들거 같습니다. 도움이 되지 못해 죄송합니다.Edit질문있어요^^ 2012.08.31 15:07 신고익스플로러가 실행중일때 더블클릭하니 기존에 열려있던 창에서도 로그인이 바껴버리길래 /* IE오브젝트 생성 */ 여기 과정에서 새로운 IE 프로세스를 열도록 하는 문구가 따로 있는줄 알았네요. 스크립트는 하나도 몰라서요. 답변 감사합니다.EditG&G 2012.10.12 10:59 신고submit에 id가 없으면 어떻게 submit해주나요? 네이트온 아이디 zback@naver.com입니다. 다른 사이트에 적용하려는데 잘 안되네요 ㅎㅎReply Edit 마메의여행기 2012.10.15 22:29 신고메일로 답변 드리겠습니다.EditI_JuN 2012.11.03 13:50 신고크롬에서는 js 가 그냥 나오네요..ㅠㅠ크롬에서 사용하고 싶은데 방법있을까요?Reply Edit 마메의여행기 2012.11.06 02:07 신고안녕하세요. 소스 가장 윗부분에 선언한것처럼 VB스크립트를 이용해서 윈도우 익스플로러 오브젝트를 선언하고 있습니다.크롬에서는 전혀 다른 방법을 사용해야 될거 같은데 방법을 모르겠네요..ㅠ_ㅠ도움 못되서 죄송합니다.Edit자전거쌀 2013.08.15 10:11 신고로그인도 서브밋 대신 클릭버튼 누르기로 구현해도 되나요?Reply Edit