블로그 이미지
개발자의 조건은 어떤것도아닌 3일은 기본으로 날샐수있는 체력과 3일을 안씻어도 찝찝합을 못느끼는 것과 라면을 먹어도 탈없는 위입니다.
DefineJAVA

공지사항

최근에 받은 트랙백

글 보관함

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
크리에이티브 커먼즈 라이선스
Creative Commons License

기본적으로 HttpSessionListener를 구현(Implements)하여 세션이 생성 되는 시점과 세션이 사라지는 시점을 가지고 올 수 있다.

세션을 생성 되는 시점에 DB나 특정 Static 변수에 세션 정보를 저장 하고 세션이 종료될 때 그 세션 정보를 지워 줌으로써

해당 세션의 중복 로그인을 막을 수 있으며 현재 접속중이 접속자 정보를 가지고 올 수 있다.

package com.moainfo.http.session;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MoaSessionListener implements HttpSessionListener
{
 public void sessionCreated(HttpSessionEvent se)
 {
  HttpSession session = se.getSession();
  System.out.println("Create session : " + session.getId());
 }
 public void sessionDestroyed(HttpSessionEvent se)
 {
  HttpSession session = se.getSession();
  System.out.println("Close session : " + session.getId());
  
 }
}

저작자 표시 비영리 변경 금지

세션 강제 종료(강제 로그 아웃)

2011/05/05 13:46 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License

Servlet 버젼이 올라 감으로 HttpSession에서 HttpSessionContext을 가져오는 메소드인 getSessionContext를 사용 못하게 되었다.
실제 사용을 하면 객체을 반환을 하기는 하지만 객체 안에 세션은 비워져 있다.

문서를 뒤져 보니 보안 관계상 사용을 못한다고 어쩌고 적혀 있기는 하는데.....그래도 관리자가 강제 로그아웃 시키거나 세션을 지워줘야 할 경우가 있을 것 같아서 고민끝에 편법을 하나 생각 해 냈다.(Jeus에서는 된다는 말도 있음)

HttpSessionContext 사용이 가능 하다면 HttpSessionContext .getSession(아이디)를 사용하여 세션 객체를 반환받고 HttpSession.invalidate() 메소드를 호출 하면된다.

HttpSessionContext 사용이 불가능 하다면 아래 소스와 같이 jsessionId값을 뒤쪽에 붙여 보내에 해당 세션으로 연결 시켜서 로그 아웃을 실행 하면 된다.


call.jsp

String jsessionId = "288B29804635D51357A52F6CCF25617B";
BufferedReader in = null;
String address = "http://me:8080/cms/logout.jsp;jsessionid="+ jsessionId;
try
{
 URL url = new URL(address);
 in = new BufferedReader(new InputStreamReader(url.openStream()));
 String line = in.readLine();
 in.close();
} catch (Exception e) {
 System.out.println("-.-;;");
}
in = null;

logout.jsp
System.out.println(session.getId());
 session.invalidate();

이 편법은 Session Hijacking이라는 다른 사람의 세션을 훔치는 방법을 응용한 방법이다.

약간의 문제가 있을 수도 있지만 우선은 이렇게 처리했다.

jsessionId값을 모르면 아무 소용이 없기 때문에 HttpSessionListener를 구현하여 세션이 생성되고 세션을 종료 되는 시점을 체크 하여 특정 저장 공간에 세션아이디 값과 아이피등 여러 정보를 저장 해 놓고 사용 하면된다.
저작자 표시 비영리 변경 금지

2011년 5월 현재 나는......

2011/05/03 13:28 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License

이름: 이성민

소속: (주) 모아정보기술, 호남대학교 인터넷 소프트웨어 공학과




나이: 1986년생 26세

프로젝트 경험
1. KT메가패스 도우미 프로젝트(분석, 설계, 개발)
2. 조선대 기계공학과 홈페이지 및 교수 홈페이지 개발(분석, 설계, 개발)
3. 도곡 농협 쇼핑몰 제작(분석, 설계, 개발)
4. 쥬니어 도서관(분석, 설계, 개발)
5. 주식회사 Intelink(분석, 설계, 개발)
6. 학교기업 Geotech(분석, 설계, 개발)
7. 영광 원자력 발전소 1발전소, 2발전소 사내 인트라넷 개발(설계, 개발)
8. 영광 원자력 발전소 예약관리 시스템 개발(분석, 설계, 개발)
9. 영광 원자력 발전소 재석등 관리 시스템 개발(분석, 설계, 개발)
10. 영광 원자력 발전소 사외, 사택 홈페이지 개발(분석, 설계, 개발)
11. 영광 원자력 발전소 웹프로그램 보안 사업(분석, 설계, 개발)
12. 영광 원자력 발전소 3발전소 사내 인트라넷 개발(분석, 설계, 개발)
13. 영광 원자력 발전소 붕산부식관리 시스템 개발(분석, 설계, 개발)
14. 영광 원자력 발전소 화학물관리 시스템 개발(분석, 설계, 개발)
15. 영광 원자력 발전소 법정관리 시스템 개발(분석, 설계, 개발)
16. 삼성 코닝 정밀 유리 CEMS 프로젝트(설계, 개발)
17. 영광 원자력 발전소 운전현황 관리 시스템 개발(분석, 설계, 개발)
18. 영광 원자력 발전소 공기구 관리 시스템(분석, 설계, 개발)
19. 전라남도 교육정보원 JNEI 홈페이지(분석, 설계, 개발)
20. 전라남도 교육정보원 인터넷방송 홈페이지(분석, 설계, 개발)
21. 영광원자력 발전소 수질종합관리시스템 재개발(분석, 설계, 개발)
22. 영광원자력 발전소 정보기기 반출입 관리 시스템 개발(분석, 설계)
23. 영광원자력 발전소 통합행정지원 시스템(분석, 설계, 개발)
24. 영광원자력 발전소 물품 관리 시스템 개발(분석, 설계, 개발)
25. 영광원자력 발전소 통합작업관리 스케쥴링 시스템 개발(분석, 설계, 개발)
26. 전라남도 교육 정보원 인터넷미디어센터(분석, 설계)
27. (주) 구태현아카데미 교육시스템 개발(분석, 설계)



저작자 표시 비영리 변경 금지
이 장소를 Daum지도에서 확인해보세요.
광주광역시 북구 문화동 | 청호나이스렌탈(대) 각화동대리점/렌탈센타
도움말 Daum 지도

'Define Me > Profile' 카테고리의 다른 글

2011년 5월 현재 나는......  (0) 2011/05/03
저는요~  (1) 2007/02/12
크리에이티브 커먼즈 라이선스
Creative Commons License
이번 프로젝트를 진행 하면서 최신버젼으로 셋팅을 해 보았는데 문제가 참 많았다.

iBatis에서 MyBatis로 바뀌면서 xml dtd도 바뀌고 실행 메소드도 바뀌고 참 머리가 아프다.

거기에 ehcache 사용으로 인해서 MyBatis와 Logging 문제로 하루종일 셋팅하고 참 진짜 너무 어렵다.

각 설정했던 상황은 다음과 같다.

/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name>MOA IT PROJECT</display-name>
 <filter>
  <filter-name>encoding</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>

 <filter-mapping>
  <filter-name>encoding</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>codelabor-spring-mvc-template.root</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.xml</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>10000</param-value>
    </context-param>   
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

 <servlet>
  <servlet-name>cms</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>cms</servlet-name>
  <url-pattern>*.cms</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>


/WEB-INF/applicationContext.xml


 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
 <!-- 데이터소스 생성 -->
 <bean id="dsCMS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
  <property name="url" value="{URL}" />
  <property name="username" value="{ID}" />
  <property name="password" value="{PW}" />
  <property name="maxActive" value="10" />
  <property name="maxIdle" value="3" />
  <property name="maxWait" value="10000" />
  <property name="defaultAutoCommit" value="false" />
  <property name="validationQuery" value="select 1 from dual" />
 </bean>
  
 <!-- MyBatis Session  -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
  <property name="configLocation" value="/WEB-INF/config/mybatis-config.xml" />
  <property name="mapperLocations" value="/WEB-INF/config/mapper/*.xml" />
  <property name="dataSource" ref="dsCMS" />
  <property name="transactionFactory">
   <bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
  </property>
 </bean>
 <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
  <constructor-arg ref="sqlSessionFactory" />
  </bean>

 <!-- 트랜젝션 메니져 -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dsCMS" />
 </bean>
 <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
  <property name="transactionManager" ref="transactionManager" />
 </bean>
 
 <!-- Tiles 2 -->
 <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
  <property name="definitions">
   <list>
    <value>/WEB-INF/tiles/tiles-def.xml</value>
   </list>
  </property>
 </bean>
 
 <!-- EHCache -->
 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" scope="singleton">
  <property name="configLocation" value="/WEB-INF/ehcache.xml" />
 </bean>
 <bean id="cmsCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
  <property name="cacheManager" ref="cacheManager" />
 </bean>
 
 <!-- DAO SESSTING -->
 <bean id="testDAO" class="TestDAO">
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
 </bean>
</beans>
 



/WEB-INF/cms-servlet.xml


 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
 
 <bean id="handlerMapping"
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="order" value="1" />
  <property name="alwaysUseFullPath" value="true" />
  <property name="mappings">
   <props>
    <prop key="/test.cms">testController</prop>
    <prop key="/moa.cms">testController</prop>
   </props>
 </property>
 </bean>
 
 <!-- TESET Controller -->
 <bean id="testController" class="TestController" p:methodNameResolver-ref="parameterMethodNameResolver">
  <property name="testDAO" ref="testDAO"></property>
 </bean>
 
 <!-- 파라미터별 리졸뷰  -->
 <bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
  <property name="paramName" value="command" />
  <property name="defaultMethodName" value="list"></property>
 </bean>
 
 <!--  URL Mapper -->
 <bean id="handlerMapping1" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="alwaysUseFullPath" value="yes" />
 </bean>
 
 <!-- Resolvers -->
 <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
  <property name="order" value="1"/>
 </bean>
 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
  <property name="order" value="2"/>
 </bean>

 
</beans>



/WEB-INF/config/mybatis-config.xml
 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <settings>
  <setting name="cacheEnabled" value="true" />
  <setting name="useGeneratedKeys" value="true" />
  <setting name="defaultExecutorType" value="REUSE" />
 </settings>
 <typeAliases>
  <typeAlias alias="hashMap" type="java.util.HashMap" />
  <typeAlias alias="map" type="java.util.Map" />
 </typeAliases>
</configuration>


/WEB-INF/config/mapper/user.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">
 
 <cache type="org.mybatis.caches.ehcache.EhcacheCache" />
 <cache type="org.mybatis.caches.ehcache.LoggingEhcache" />
 
 <resultMap type="hashMap" id="userHashMap">
  <result property="contents" column="contents" jdbcType="CLOB" javaType="java.lang.String"  />
 </resultMap>
 
 <select id="selectTest" useCache="true" parameterType="hashMap" resultMap="userHashMap">
  <![CDATA[
  SELECT A.BOARDNO,  A.SUBJECT, A.WRITER, A.PASSWORD, A.HIT_CNT, A.MEMO_CNT, A.FILE_CNT, A.SUBMENU_YN, A.NOTICE_YN, A.DELETE_YN, A.REGISTY_DT,
       A.MODIFY_DT, A.BOARDID, A.WRITERIP, A.THUMBNAIL, A.FILES, A.DEPTNAME, A.TELEPHONE, A.EMAIL, A.SECURITY_YN, A.BOARDCATEGORYID
  FROM TB_BOARD A
 ]]>
  </select>
</mapper>


/WEB-INF/tiles/tiles-defs.xml


 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC  "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>
 <definition name="indexLayout" template="/WEB-INF/jsp/layout/index/layout.jsp">
  <put-attribute name="title">레이아웃페이지</put-attribute>
  <put-attribute name="header" value="/WEB-INF/jsp/layout/index/header.jsp" />
  <put-attribute name="menu" value="/WEB-INF/jsp/layout/index/menu.jsp" />
  <put-attribute name="body" value="/WEB-INF/jsp/layout/index/body.jsp" />
  <put-attribute name="footer" value="/WEB-INF/jsp/layout/index/footer.jsp" />
 </definition>
</tiles-definitions>



/WEB-INF/ehcache.xml
 <?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="ehcache.xsd">
 <diskStore path="java.io.tmpdir" />
 <cache name="com.whatever.SOMECACHE" maxElementsInMemory="2000"
  eternal="false" timeToLiveSeconds="86400" overflowToDisk="false"
  memoryStoreEvictionPolicy="LRU" />
</ehcache>


/WEB-INF/log4j.xml
 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="debug" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] (%13F:%L) %3x - %m%n" />
        </layout>
    </appender>
   
    <appender name="info" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] (%13F:%L) %3x - %m%n" />
        </layout>
    </appender>
   
    <appender name="log-file" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="test-daily.log"/>
        <param name="Append" value="true"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] (%13F:%L) %3x - %m%n" />
        </layout>
    </appender>
   
    <category name="java.sql.Connection">
  <priority value="debug" />
 </category>
 <category name="java.sql.PreparedStatement">
  <priority value="debug" />
 </category>
 <category name="java.sql.ResultSet">
  <priority value="debug" />
 </category>
    <category name="java.sql.Statement">
  <priority value="debug" />
 </category>
 <category name="org.apache.ibatis">
  <priority value="debug" />
 </category>
 <category name="org.springframework.web.servlet.DispatcherServlet">
  <priority value="error" />
 </category>
    <root>
        <level value="debug"/>
        <appender-ref ref="debug"/>
    </root>
</log4j:configuration>


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
DAO를 풀어보면 Database Access Object로써 DB에 접근하여 무언가를 행하는 클레스입니다.

VO는 Variable Object(Value Object)로 DB 혹은 어떠한 물체 틀(형상화)을 잡고 이 틀을 잡기 위한 변수들을 모아둔 하나의 클레스트 입니다.

회원 DAO와 회원 VO의 구조를 보자면 다음과 같음.

UserDAO.java

더보기


UserVO.java

더보기


VO 부분은 회원 1명을 표현할때 필요한 여러 변수를 가지고 있으며 DAO는 그 회원들의 정보를 저장 불러오기 수정 등을 할수 있는 행위가 기술됨.

DAO에서 중요한 부분은 잘 생각해 보면 이 DAO는 몇번을 실행하더라도 내용이 바뀌지가 않음. DAO가 실행될때 마다 바뀌는건 VO고 이를 봤을 때 싱글톤 패턴을 사용하면 메모리를 조금 더 적게 사용할 수 있으며(매 호출시 인스턴스를 만들지 않기 때문) static영역에 미리 만들어진 인스턴스가 들어가 있기 때문에 그 주소를 참조해서 객체를 불러오기 때문에 객체를 생성하는것에 비해 속도가 빠름.
저작자 표시 비영리 변경 금지

서울 광진구 능동 어린이대공원

2009/04/04 22:46 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License
어린이대공원
주소 서울 광진구 능동 18
설명 도심속의 쉼터, 서울 어린이대공원!
상세보기
 












다음 사진 두컷은 어린이 대공원 갔다온뒤 직접 만들어 먹은 보쌈 사진!+_+



사진을 늦게 올리다가 보니 말 쓰기가 힘드넹 T_T
저작자 표시

'Photo Album' 카테고리의 다른 글

서울 광진구 능동 어린이대공원  (0) 2009/04/04

제 10회 한국자바개발자 컨퍼런스

2009/02/25 13:39 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License
제 10회 한국자바개발자 컨퍼런스
크리에이티브 커먼즈 라이선스
Creative Commons License

군자주야 서인자수야 수즉재주 수즉복주
(君者舟也 庶人者水也 水則載舟 水則覆舟)

임금은 배와 같은 존재요, 서민은 물과 같은 존재다.
물은 배를 띄우기도 하고, 물은 배를 뒤엎기도 한다.

순 자

 

W베타 테스터 선정!

2008/03/18 15:04 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License

DefineYOU 규현이형이 신청하라고 해서 신청했던 W +_+ 월요일 되면 꼭 달아서 테스트 해봐야징!!
w 베타테스터에 선정되신 것을 축하합니다.

DefineJava님! W 베타테스터 모집에 참여해 주셔서 감사합니다.

새로운 것을 만드는 것과 새로운 것을 사용하는 것은 언제나 설레는 일 입니다.
이번 베타테스트에서도 여러분들의 소중한 의견을 설레는 마음으로 기다리겠습니다.

베타테스트가 시작되면 http://definejava.net 에 꼭 달아보세요. ^^

W위젯의 베타테스트는 다음주 월요일(3월 24일)부터 시작 될 예정 입니다.

현재 W위젯의 베타테스트를 성공적으로 이끌기 위해 막바지 작업을 진행하고 있으며,
다음 주 월요일에 테스트가 시작되면 별도의 메일을 보내드리도록 하겠습니다. 감사합니다 ^_^

Copyright Wall Street Institute & WiZarD Works. Allrights Reserved.

기타문의 접수 이메일: w@wzd.com

TAG w베타

hello! blogger 대한민국 블로거 컨퍼런스

2008/02/28 17:47 | Posted by DefineJAVA
크리에이티브 커먼즈 라이선스
Creative Commons License
hello! blogger 대한민국 블로거 컨퍼런스



행사개요

대한민국 블로거들의 만남

만나다
대한민국을 대표하는 블로거들이 한자리에 모여 새로운 교류를 시작합니다
나누다
각 분야의 전무가들과 블로거들이 서로의 관심사와 생각을 교류하며 소통의 장을 펼칩니다
성장하다
블로그 운영에 유용한 최신 노하우와 드랜드, 전문 지식을 나누며 함께 성장합니다

컨퍼런스 행사일정

프로그램 안내 참가 신청하기
음! 참가 신청은 했는데! 꼭 담청 됐으면 좋겠는데... 될지 모르겠네요!
또 서울 가서 우리 마나님 얼굴 보러가야 하는데!!
준석씨도 얼릉 신청해~ 같이 가게 ' 'ㅋ
JCO 컨퍼런스 처럼 사람 많이 안오고 지정석에 점심무료에 무료주차까지 지원한다는데
다른 분들도 같이 가실분 있으면 연락주세요^ㅡ^
이전 1 2 3 4 5 ... 6 다음