When we implemented transactions using autowiring and TxManager in the spring config xml file, we ended up in having the well known org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here.

I was googling a bit on "No Hibernate Session bound to thread". Emphatically, I ended up with innumerous answers in several sites on the Internet. Springsource forum is not exception to this! Abundant conversations have been happening on this topic all around!!!

But there were a few best practices that I was able to compile from the chit-chats happening across the Internet. I thought of sharing the same here so that it would help some one some day in the near future!

  1. First and foremost, configure the transaction manager properly : Use @Transaction annotation near your code and have a transactionManager bean in your spring config file.
  2. when integration a transaction manager, do not use hibernate.current_session_context_class and hibernate.transaction_factory_class in the hibernate properties unless you have proper reasons to
  3. Never call sessionFactory.openSession()
  4. Use ApplicationContext rather than using BeanFactory
  5. Have single dao instances running across the Application
  6. Above all, most importantly, ensure that the current application context has the component scan for the beans where you have added the @transactional annotations. as per spring documentation's @ Trasactional usage guidelines,

only looks for @Transactional on beans in the same application context it is defined in. This means that, if you put in a WebApplicationContext for a DispatcherServlet, it only checks for @Transactional beans in your controllers, and not your services. See Section 15.2, “The DispatcherServlet” for more information.

Point # 6 was the culprit in our case and that was then resolved! So the lessson was You are likely to get "No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here" if you do not adhere to any of the above pointers.
PArticularly, if you are going to have the applicationContext.xml with the TxManager and the servletname-servlet.xml with the component scan annotations, then you are more likely to get this "No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here" exception since the TxManager's transaction holds good for the current application context only (which in this case does not have the bean definitions for the service or the daos where you have the @ Trasactional annotations)

If you find the information pretty helpful, I would really be happy if you would keep me posted via the comments form displayed under this article! If you had wanted some other information related to the same topic, I would suggest you to drop a note to me using the comments form for that would help me in getting back to you with the details you are in need of!

Ref : link

If you are using Spring to wrap a Hibernate SessionFactory and you are not using Spring-managed transactions, you may run into an issue. The reason is that Spring by default will wrap Hibernate’s SessionFactory implementation and delegate to its own transactional version. If you are just using the simple ThreadLocal-based session-per-request functionality, then when you attempt to open the Session, you will get an IllegalStateException thrown, with the error message "No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here". This happens because Spring’s SessionFactoryUtils checks if the Session is bound to Spring’s transactional support, and by default throws an error if it is not.

The solution to this is to set the property



<property name="exposeTransactionAwareSessionFactory"><value>false</value></property>

in the Spring config. This will return the “raw” SessionFactory instead of the proxied one. A snippet of code from AbstractSessionFactoryBean shows where the check is done:

 
/**
* Wrap the given SessionFactory with a transaction-aware proxy, if demanded.
* @param rawSf the raw SessionFactory as built by buildSessionFactory()
* @return the SessionFactory reference to expose
* @see #buildSessionFactory()
* @see #getTransactionAwareSessionFactoryProxy
*/
protected SessionFactory wrapSessionFactoryIfNecessary(SessionFactory rawSf) {
if (isExposeTransactionAwareSessionFactory()) {
return getTransactionAwareSessionFactoryProxy(rawSf);
}
else {
return rawSf;
}
}

A sample Spring config is shown below.





<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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="exposeTransactionAwareSessionFactory"><value>false</value></property>
<property name="annotatedPackages">
<list>
<value>uk.co.researchkitchen.hibernate</value>
</list>
</property>
<property name="annotatedClasses">
<list>
<value>uk.co.researchkitchen.hibernate.Product</value>
<value>uk.co.researchkitchen.hibernate.ProductDescription</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=create
hibernate.current_session_context_class=thread
</value>
</property>
</bean>

</beans>

Search and Replace Tricks

reference : link

Suppress all empty lines

Find: "^\n" (without quotes)
Replace: "" (without quotes)
RegExp
Note: You may have to repeat it several times to remove all empty lines (until the editor can't find the string to replace), because only the first one of a series of consecutive empty lines will be edited.

Suppress all non-empty lines

Find: "^.+$" (without quotes)
Replace: "" (without quotes)
RegExp

Comment out lines

Find: "^" (without quotes)
Replace: "// " (without quotes)
RegExp
Note: Empty lines will not be affected. This example actually adds a text at the beginning of every non empty line, the comment symbol used ("//") is the one of PHP.

Comment lines

Find: "$" (without quotes)
Replace: " // Comment here" (without quotes)
RegExp
Note: Empty lines will not be affected. This example actually adds a text at the end of every non empty line, the comment symbol used ("//") is the one of PHP.

Join lines

Find: "\n" (without quotes)
Replace: "," (without quotes)
RegExp
Note: Turn separated lines into comma separated values. Empty lines will be affected as well.

Split lines

Find: "," (without quotes)
Replace: "\n" (without quotes)
RegExp
Note: Turn comma separated values into separated lines. Consecutive commas will generate empty lines.

Remove all leading spaces and tabs from every line

Find: "^[ \t]+" (without quotes)
Replace: "" (without quotes)
RegExp
Note: this will obviously remove any indentation

Remove all trailing spaces and tabs from every line

Find: "[ \t]+$" (without quotes)
Replace: "" (without quotes)
RegExp

Remove consecutive spaces

Find: " +" (without quotes)
Replace: " " (without quotes)
RegExp
Example: before: "this is an example", after: "this is an example"

Fix punctuation

Find: "([\.\,\;\:\?\!])([a-zA-Z])" (without quotes)
Replace: "\1 \2" (without quotes)
RegExp
Example: before: "How are you?I'm fine,thanks.", after: "How are you? I'm fine, thanks."
Note: If you want to use this statement in a Wiki context, remove "\:" from the search string, otherwise you may break Wiki metatags, for example [[Category:Example]] will be replaced by [[Category: Example]]

Wrap a tag pair around a text

Find: "(bold)" (without quotes)
Replace: "\1" (without quotes)
RegExp
Example: before: "bold", after: "bold"

Wrap a tag pair around every line

Find: "^(.+)$" (without quotes)
Replace: "

  • \1
  • " (without quotes)
    RegExp
    Note: this example wraps the tag pair
  • every line to create a list of items; you'd probably want to apply changes only to a selected text.

    Delete everything inside a tag pair (keeping tags)

    Find: "().+()" (without quotes)
    Replace: "\1\2" (without quotes)
    RegExp
    Note: Tags must be on the same line.
    Example: before: "this is an example", after: "this example"

    Delete everything inside a tag pair (removing tags too)

    Find: ".+" (without quotes)
    Replace: "" (without quotes)
    RegExp
    Note: Tags must be on the same line.
    Example: before: "this is an example", after: "this example"

    Delete all lines containing a given string

    Find: "^.*STRING.*$" (without quotes)
    Replace: "" (without quotes)
    RegExp
    Note: Lines will be emptied but not suppressed. See #Suppress all empty lines to suppress empty lines.

    Replace only the first occurrence of a character

    Find: ";(.*)" (without quotes)
    Replace: "|\1" (without quotes)
    RegExp
    Note: In this example, only the first occurrence of ";" for each line will be replaced with "|".
    Example: before: "this;is;an;example", after: "this|is;an;example"

    Replace only the last occurrence of a character

    Find: "(.*);" (without quotes)
    Replace: "\1|" (without quotes)
    RegExp
    Note: In this example, only the last occurrence of ";" for each line will be replaced with "|".
    Example: before: "this;is;an;example", after: "this;is;an|example"

    Truncate a string after the first occurrence of a marker (keeping the marker)

    Find: "^([^;]*;).*$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: "this;"

    Truncate a string at the first occurrence of a marker (removing the marker too)

    Find: "^([^;]*);+.*$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: "this"

    Truncate a string after the last occurrence of a marker (keeping the marker)

    Find: "^(.*;).*$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: "this;is;an;"

    Truncate a string at the last occurrence of a marker (removing the marker too)

    Find: "^(.*);.*$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: "this;is;an"

    Truncate a string before than the first occurrence of a marker (keeping the marker)

    Find: "^[^;]*(;.*)$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: ";is;an;example"

    Truncate a string up to the first occurrence of a marker (removing the marker too)

    Find: "^[^;]*;(.*)$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: "is;an;example"

    Truncate a string before than the last occurrence of a marker (keeping the marker)

    Find: "^.*(;.*)$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: ";example"

    Truncate a string up to the last occurrence of a marker (removing the marker too)

    Find: "^.*;(.*)$" (without quotes)
    Replace: "\1" (without quotes)
    RegExp
    Note: In this example, the marker is ";".
    Example: before: "this;is;an;example", after: "example"

    Turn a CSV table into a list of PHP if conditions

    "^([^\,]+)\,([^\,]+)\,([^\,]+)$" (without quotes)
    "elseif (vcmp$=="\1") {$v2="\2"; $v3="\3";}" (without quotes)
    RegExp
    Example: before: "Italy,Rome,Euro", after: elseif (vcmp$=="Italy") {$v2="Rome"; $v3="Euro";}
    Note: In this example, there are three values per record, and the CSV separator is a comma (,), you may need to replace it with another character like \t for tab. Remember to change the first "elseif" to "if".

    Truncate last value from a MySQL INSERT query

    Find: "(VALUES \(.+), *.+\);" (without quotes)
    Replace: "\1);" (without quotes)
    RegExp
    Example: before: "INSERT INTO table VALUES ('value1','value2','value3');", after: "INSERT INTO table VALUES ('value1','value2');"

    Keep only last value in a MySQL INSERT query

    Find: "(VALUES \(.+,)(.+\);)" (without quotes)
    Replace: "VALUES (\2" (without quotes)
    RegExp
    Example: before: "INSERT INTO table VALUES ('value1','value2','value3');", after: "INSERT INTO table VALUES ('value3');"

    Turn MySQL fields into empty values

    Find: "`[^`]*`([\,\)\'\"])" (without quotes)
    Replace: "''\1" (without quotes)
    RegExp
    Example: before: "INSERT INTO table (`phone`,`phonecell`,`fax`) VALUES (`phone`,`phonecell`,`fax`);", after: "INSERT INTO table (`phone`,`phonecell`,`fax`) VALUES ('','','');". (Only the second instance of "(`phone`,`phonecell`,`fax`)" must be selected and search and replace must be applied to such selection).
    Note: this is meant to replicate the values in a INSERT query according to the specified fields (and use the empty values as a placeholder): you simply need to copy the fields and past them after VALUES, and then replace them this way.

    Wikification: Link all elements of a list

    Find: "(\*)(.*)$" (without quotes)
    Replace: "\1[[\2]]" (without quotes)
    RegExp
    Example: before: "*Example", after: "*[[Example]]"

    Wikification: Link all elements of a list, changing the linked text

    Find: "(\*)(.*)$" (without quotes)
    Replace: "\1[[\2_(category)|\2]]" (without quotes)
    RegExp
    Example: before: "*Example", after: "*[[Example_(category)|Example]]"

    http://www.google.com/logos/

    300+ Creative Google Logos

    A JavaScript NES

    ลองไปเล่นดู เห็นว่าใช้ html5 http://benfirshman.com/projects/jsnes/
    ควบคุมเครื่องระยะไกลด้วยรีโมทประสิทธิภาพ LOGMEIN

    ขอบคุณ บทความจาก http://notebookspec.com

    สวัสดีครับ วันนี้นำ Tip ดีๆมาฝากกันอีกครั้งกับโปรแกรมเรียกได้ว่าจำเป็นมากสำหรับทั้ง User ทั่วไป ช่างคอมพิวเตอร์หรือแม้กระทั่งสามารถประยุกต์ใช้ในการเรียนการสอนสมัยใหม่ ได้เช่นกัน ซึ่งโปรแกรมเด็ดวันนี้ก็คงจะเป็นใครไปไม่ได้นอกจาก โปรแกรม Logmein

    โปรแกรม Logmein โปรแกรมรีโมทควบคุมคอมพิวเตอร์ผ่านทาง Internet ซึ่งสามารถควบคุมได้ทุกอย่างเปรียบเสมือนดังเล่นอยู่หน้าคอมพิวเตอร์นั้นๆ ทำให้เราสามารถช่วยเหลือในการติดตั้งโปรแกรม แก้ไข จัดการคอมพิวเตอร์ให้กับเพื่อนหรือคนในครอบครัวได้ เพียงแค่เราติดตั้งโปรแกรมนี้ไว้ ไม่ว่าจะอยู่ที่ไหนก็จัดการได้โดยง่ายเลยทีเดียวครับ

    โปรแกรม LogMeIn เป็นผลงานของบริษัทที่มีชื่อเดียวกันว่า LogMeIn โดยมุ่งเน้นประสิทธิภาพในเรื่องของความปลอดภัยและสะดวกต่อการใช้งานเป็นหลัก โดยองค์กรนี้ได้จัดการเกี่ยวกับระบบ Network มานานพอสมควร และมีเอกลักษณ์ในเรื่องเกี่ยวกับระบบ Remote Control เพื่อควบคุมเครื่องปลายทาง โดย Logmein เป็นโปรแกรมที่ดีมากและเป็นที่ยอมรับ เหตุผลที่เลือกโปรแกรม LogMeIn มาก็คือโปรแกรมนี้สามารถใช้ประโยชน์ได้หลากหลายรูปแบบอีกทั้งยังใช้งานได้ ง่าย สะดวกมากในเรื่องของการควบคุมคอมพิวเตอร์ระยะไกล

    เมื่อก่อนนั้นการทำระบบ Remote Control ผ่าน Internet ก็คือ เราจะต้องรู้ว่าคอมพิวเตอร์ปลายทางของเราอยู่ที่ไหนในส่วนของ Internet (IP Address) โดยเราจะต้องเชื่อมต่อมันผ่านทาง Dynamic DNS และ Forward Port ซึ่งเป็นกระบวนการที่ยุ่งยากและซับซ้อนพอสมควรสำหรับ User ทั่วๆไป แต่โปรแกรม LogMeIn สามารถเข้าผ่าน server ของเว็บไซต์ โดยที่เราจะไม่จำเป็นต้องไปจัดการกับ Dynamic DNS และ Port Forward ต่างๆ

    สาเหตุหลักๆที่ Logmein สามารถทำงานได้อย่างง่าย ก็เพราะการติดตั้งโปรแกรมของ Logmein เข้าไปในเครื่องจะทำให้เครื่องเราถูกลงทะเบียนกับทาง Server ของ Logmein ซึ่งทำให้ขั้นตอนการจดทะเบียน Dynamic DNS เพียงแค่เรา Login ผ่านเข้าไปในระบบของ Logmein

    ส่วนเรื่อง Forward Port เราก็ไม่ต้องทำครับ เพราะทันทีที่ Logmein เชื่อมต่อกับทาง Server มันจะสร้าง Tunnel การติดต่อสื่อสารส่วนตัวระหว่างมันกับ Logmein Server ให้เองโดยอัตโนมัติ ทีนี้ เราเองก็ไม่ต้องไปยุ่งกับ Router เพื่อมาทำระบบ Forward Port ครับ

    ผมขออธิบายโดยขั้นตอนการใช้งานโดยละเอียดเลย ละกันนะครับ ถ้ามีปัญหาสงสัยตรงไหน ทำการ Comment ไว้เดี๋ยวทางทีมงานจะเข้ามาตอบนะครับ โดยวิธีการนี้ให้ติดตั้งไว้ที่เครื่องปลายทางที่เราต้องการจะควบคุมก่อนที่ จะทำการควบคุมได้นะครับ

    1. ขั้นแรกเลยให้ทำการเข้าไปยัง Website : www.logmein.com หรือเว็บต้นสังกัดนั่นเองครับ โดยเป็นแม่ข่ายหลักที่เราสามารถใช้งานทั้งหมดผ่านทางเว็บไซต์นี้
    2. พอเข้ามาแล้วก็เลือก Create Account ที่ด้านขวามือ ตามรูปด้านล่างเลยครับ

    3. หลังจากเลือกตามด้านบนแล้วก็จะเข้ามาในหน้า Account ให้เลือก Sign Up ที่ Logmein Free นะครับ

    4. เสร็จทำการสมัครสมาชิก ตรงส่วน I plan to use Logmein ก็ให้เลือกเป็น Personal Use นะครับ

    5. ต่อมาที่การสมัคร Step ที่ 2 ก็ไม่มีไรมากครับ กรอกชื่อ นามสกุลแล้วก็องค์กรของท่าน เสร็จแล้วกด Create Account ครับ

    6. ต่อมาจะเป็นหน้า My Computers ให้กด Add Computer ครับ

    7. แล้วทาง Logmein จะให้เราติดตั้ง Software โดยอัตโนมัติ สำหรับท่านที่เครื่องไม่ Download อัตโนมัติก็ให้เลือกกด Download เองได้นะครับ

    8. พอกด Run แล้วก็รอซักพักนะครับ เพื่อทำการ Download โปรแกรม Logmein จากเว็บไซต์นี้นะครับ

    9. สำหรับคนที่มีความเร็ว Internet สูงก็คงใช้เวลาไม่นาน ส่วนคนที่ Internet ไม่แรงก็รอซักพักครับ พอทำการ Download เสร็จ โปรแกรมจะทำการเริ่มติดตั้งอัตโนมัติ ขนาดประมาณ 10 MB ครับ

    10. ให้กด Next ไปได้เลย ถัดมาก็เลือก Typical ครับ แล้วกด Next

    11. ขั้นตอนถัดมาจะเป็นการตั้งชื่อ Computer ปลายทางที่เราต้องการใช้โปรแกรม Logmein ใส่ไว้ที่ช่อง Description ด้านล่างเลย เสร็จแล้วคลิก Next

    12. ถัดมา เราจำเป็นจะต้องตั้ง Computer Access Code เหมือนเป็นรหัสเพื่อทำการ Login เข้าเครื่องคอมพิวเตอร์ที่เราต้องการจะเข้าไปควบคุม (จำไว้ด้วยนะครับ ถ้าลืมเดี๋ยวจะเข้าไปคุมไม่ได้)

    13. หลังจากคลิก Next โปรแกรมจะเริ่มทำการติดตั้ง ดังภาพด้านล่าง

    14. รอซักพักประมาณ 2-3 นาที ก็จะเสร็จเรียบร้อย

    15. พอติดตั้งเสร็จสมบูรณ์แล้วก็จะกลับมาที่หน้านี้บนเว็บไซต์ ท่านสามารถเลือกทดลองใช้แบบ IT-Tech ได้นะครับ แต่ว่าจะเป็นแบบ Trail Version คือต้องเสียเงิน โดยสามารถ Edit ได้ที่ Settings ปกติจะมีแบบ Free กับ IT-Tech แบบฟรีก็จะไม่มีลูกเล่นอะไรเลย ไว้ใช้ควบคุมอย่างเดียว

    16. ให้เลือกที่ชื่อคอมพิวเตอร์ของท่านเลยนะครับ ระบบจะทำการ Connecting ดังภาพ

    17. รอโหลดซักพัก บางเครื่องอาจจะจำเป็นต้อง Install Active X สำหรับ Internet Explorer ซึ่งจะขึ้นมาอัตโนมัติส่วน Firefox จะเป็น Plug-In Logmein หลังจากนั้นจะเป็นหน้าของการใส่ Computer Access Code เพื่อเข้าสู้คอมพิวเตอร์ที่เราต้องการจะทำการควบคุมระยะไกล เสร็จแล้วกด Login

    18. หน้าถัดมาจะพบกับหน้าที่พร้อมที่จะ Connect ไปยังคอมพิวเตอร์ ให้เลือกที่ Remote Control โดยจะ Run ผ่าน Web Browser หากต้องการให้แสดงบนหน้าต่างใหม่ก็ให้ติกในช่อง Open remote control in a new window

    19. หลังจากนั้นรอการ Activate ซักครู่ ในการเชื่อมต่อ เสร็จแล้วก็กด Continue ครับ

    20. เป็นอันเสร็จสิ้น หน้าตาประมาณนี้ครับ

    โดยวิธีการนี้ให้ติดตั้งไว้ที่เครื่อง ปลายทางที่เราต้องการจะควบคุมก่อนที่จะทำการควบคุมได้นะครับ เครื่องปลายทางจะต้องมีโปรแกรม Logmein ที่เป็น Enabled ที่มุมขวาล่าง ถ้าไม่ต้องการให้เมาควบคุมก็สามารถตั้งเป็น Disabled ได้ครับ โดยการทำการคลิกขวาที่ไอคอนด้านล่างแล้วตั้งค่า ส่วนเครื่องที่ควบคุมจะมีโปรแกรมหรือไม่มีก็ได้นะครับ เพราะสามารถควบคุมผ่าน Web Browser ได้เลย

    ก็ผมบอกไว้เลยละกัน โปรแกรมนี้เป็นโปรแกรมที่สามารถเจาะผ่านระบบความปลอดภัยจากทาง Windows ได้เลยโดยที่ไม่ต้องขอ เพราะฉะนั้นกรุณาใช้ทางที่ดีหรือถูกต้องนะครับ เพราะโปรแกรมนี้เหมือนดาบสองคม เหมือนกับโปรแกรมเจาะระบบที่สามารถทำได้ทุกอย่าง ถ้าใช้ในทางที่ถูกก็จะเกิดประโยชน์อย่างมากเลย แนะนำให้ใช้กันในทางที่ดีนะครับ แล้วจะได้พบกันอีกกับ Tip ดีๆอันหน้าครับ ขอบคุณครับ

    การ Remote Desktop ผ่าน MSN Messenger ถือว่าเป็นอีกวิธ๊ง่ายๆ แต่ได้ผลดี และคงถูกใจคอเอ็มทั้งหลาย ประโยชน์ของมันใช้สำหรับไว้แก้ปัญหาคอมฯอีกเครื่องที่ออนเอ็มอยู่ โดยไม่ต้องไปทำที่เครื่องนั้นโดยตรง


    สึ่งที่ต้องมีในการทำ
    1 อินเทอร์เน็ต
    2 Msn ถ้าจะดีขอเวอร์ชั่นล่าสุดทั้งคู่ ( เวอร์ชั่น 9 ก็สามารถใช้งานได้)
    3 Window ไม่ต้องเหมือนกันเหมือนกันทั่งคู่(ได้แค่XPกับVista)
    4 ยอมรับการ Remote Desktop
    5 ใช้อย่างสร้างสรรค์

    ขั้นแรกเครื่องที่จะถูก Remote ต้องตั้งค่าให้ยอมรับการ Remote ครับก่อนโดยคลิกขวาที่ My Computer >> แล้วเลือก Properties >> แล้วเลือกที่ Remote >> และสุดท้ายติ๊กถูกที่ช่อง Allow ดังรูป


    ขั้นตอนและวิธีการทำ
    ผม ขอเรียกคอมฯที่จะถูกควบคุมว่า Com A และเรียกคอมที่ควบคุมบังคับเมาส์ว่า Com B เพื่อที่จะได้เข้าใจง่ายๆ

    1. พูดคุยกันใน Msn ให้ Com A คลิกที่ รูปเพลง ข้างๆ ไพร่ และ โทรศัพท์ ดังรูปครับ แล้วไปยังที่ รูปเมาส์ Request Remote Assistance ดังรูป หรือคลิก Actions >> แล้วเลือก Request Remote Assistance


    2. เมื่อทำตามขั้นตอนที่ 1 แล้ว ก็จะมีให้เลือกบล๊อกโชว์ที่ Com B ให้กด accept แล้วรอสักครู่



    3. Com A ก็จะมีให้ขึ้นว่า ต้องการให้ Com B ดูหน้าจอของเราไหม ก็กดตกลงไป เพื่อที่ Com B จะสามารถดูหน้าจอได้ เมื่อ Com A ตอบ Yes แล้ว มาถึงตอนนี้ Com B สามารถเห็น จอของนาย A แล้วครับดังภาพ



    4. เมื่อ Com B ต้องการที่จะควบคุม Com A ก็กดที่ซ้ายบนตรง Take Control แล้ว Com A ก็จะขึ้น ให้ตอบตกลงครับ แล้วมีเขียนว่า ถ้าต้องการ หยุดการควบคุม สามารถกด Esc หยุดได้ครับ เมื่อตอบตกลงแล้ว Com B ก็สามารถที่จะควบคุม Com A ได้ครับโดยที่ Com A ก็ยังสามารถเล่นได้อยู่ แต่ถ้าจะให้ Com B ทำอะไรก็ต้องอยู่นิ่งๆครับ เป็นอันจบสมบูรณ์ครับ


    เครตดิต : HackKingSoft ,link

    Oracle import dump file

    imp user/pass file=filename.dmp full=y ignore=y




    การ Import Export ข้อมูลด้วย Data Pump ใน oracle database 10g
    top