บันทึกของวีร์ | Vee(r)'s Blog

ธันวาคม 12, 2010

ใช้ Swath จาก PHP

Filed under: NLP — ป้ายกำกับ:, , , , — वीर @ 2:20 pm

ทางบ้านถามเข้ามาหลายท่าน ผมจึงเขียนออกมาได้แบบนี้ครับ

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Swath Web</title>
	<meta name="generator" content="TextMate http://macromates.com/">
	<meta name="author" content="Vee Satayamas">
	
</head>
<body>
<form method="post">
<textarea name="input_text" cols="80" rows="10"></textarea>
<input type="submit" value="submit">
</form>
<?php

    function swath($input_text) 
    {
        $input_filename= tempnam("/tmp", "swath_");
        $output_filename= tempnam("/tmp", "swath_");
        $input_text_tis620 = iconv("UTF-8", "TIS-620", $input_text);
        file_put_contents($input_filename, $input_text_tis620);
        system("/usr/bin/swath < $input_filename > $output_filename");
        $raw = file_get_contents($output_filename);
        $raw_utf8 = iconv("TIS-620", "UTF-8", $raw);
        unlink($input_filename);
        unlink($output_filename);
        return preg_split('/\|/', $raw_utf8);
    }

    if($_REQUEST['input_text']) {
        $output = swath($_REQUEST['input_text']);
        print implode(" ", $output);
    }
?>
</body>
</html>

แต่ว่าแบบนี้เราต้องลง swath ไว้ใน /usr/bin นะครับ ฯ​ ลงไว้ที่อื่นก็ไม่น่าเป็นไรนะครับ เปลี่ยนใน code เอาเลยก็ได้ ฯ อีกอย่างคือต้องการใช้ iconv ด้วย ฯ แต่ถ้าไม่ใช้ iconv ก็น่าจะได้อีกเหมือนกัน ฯ​ เปลี่ยนหน้าเว็บเป็น TIS-620 ให้หมดก็น่าจะใช้ได้เลย ฯ

56 ความเห็น »

  1. ไม่ทราบว่า inputที่post เข้าไปใน text box มันจะเข้าไปเก็บไว้ที่ไหนคะ แล้วผลลัพธ์ที่ได้มันจะแสดงให้หน้าเว็บเลยมั้ยคะ
    ลองทำดูแล้วแต่ไม่เกิดอะไรขึ้นเลย หากมี swath อยู่ในไดรว์ C:\appserv\www\test\swath จะต้องแก้ไข
    system(“/usr/bin/swath $output_filename”); อย่างไรคะ
    และต้องแก้ไขส่วนอื่นๆอีกหรือเปล่าคะ เช่น $input_filename กับ $output_file หรือเปล่าคะ

    ขอบคุณคะ

    ความเห็น โดย ann — ธันวาคม 23, 2010 @ 3:42 pm

    • ชื่อไฟล์มันไม่แน่นอนครับ แต่จะอยู่ใน $input_filename ครับ ลอง echo ออกมาดูได้ ฯ ที่ไม่แน่นอนนี้ก็เพราะว่าบน server อาจจะมีโปรแกรมนี้ทำงานพร้อมกัน ถ้าชื่อเหมือนกันมันอาจจะไปตีกันได้ ฯ แก้เป็น system(“C:\appserv\www\test\swath < $input_filename > $output_filename”); น่าจะพอครับ ฯ

      ความเห็น โดย वीर — ธันวาคม 23, 2010 @ 3:47 pm

  2. ผมลองเขียนโค้ดข้างในฟังก์ชั่น swatch ประมาณนี้ครับ
    function swath($input_text)
    {
    $input_filename= tempnam(“/tmp”, “swath_”);
    $output_filename= tempnam(“/tmp”, “swath_”);

    $input_text = iconv(‘UTF-8′, ‘TIS-620′, trim($input_text));

    file_put_contents($input_filename, $input_text);
    system(SWATH . ‘/swath.exe -b “|” -d ‘ . SWATH . ‘/swath -m long ‘ . “C:\AppServ\www\trimWord\swath\b.txt”);

    $raw = file_get_contents($output_filename);
    $raw = iconv(‘TIS-620′, ‘UTF-8′, rtrim($raw));
    $raw = preg_replace(‘/| |/’, ‘|’, $raw);

    unlink($input_filename);
    unlink($output_filename);

    return preg_split(‘/|/’, $raw, -1, PREG_SPLIT_NO_EMPTY);
    }
    ส่วนตรงอื่นๆผมเหมือนข้างบนตามหัวข้อครับ แต่ผลยังไม่ออกมา เลยอยากทราบว่าต้องแก้ตรงไหนอย่างไรบ้างครับ
    พอดีว่าไฟล์ที่ใช้ I/O ผมชื่อ a, b.txt น่ะครับ แล้วในส่วนของโฟลเดอร์ Swath ที่ผมดาวน์โหลดมา(ที่ข้างในมีไฟล์ swath.exe และมีโฟลเดอร์ที่ชื่อ data อยู่น่ะครับ) ต้องวางไว้ที่ไหนบ้างครับ แล้วไฟล์มันต้องมีไฟล์อะไรบ้างอยู่ข้างในน่ะครับ
    ขอบคุณล่วงหน้าครับ

    ความเห็น โดย ธนาวุฒิ (หนุ่ย) — กันยายน 26, 2011 @ 3:25 pm

    • /swath.exe นี่แปลกๆ อะครับ / ไม่น่าจะเป็นอย่างอื่น

      ความเห็น โดย वीर — กันยายน 26, 2011 @ 6:50 pm

  3. ขอโทษนะครับ ไม่ค่อยเข้าใจน่ะครับ ต้องแก้เป็นอย่างไรเหรอครับ

    ความเห็น โดย nui — กันยายน 26, 2011 @ 11:11 pm

  4. สามาใช้กับ windows7 ได้รึเปล่าคะ

    ความเห็น โดย Ae — ตุลาคม 24, 2011 @ 11:35 am

  5. ใช้กับ windows ต้องแก้ path ครับ

    ความเห็น โดย वीर — ตุลาคม 24, 2011 @ 10:42 pm

  6. ใช้ swath บน windows ต้องแก้ path ตรงไหนบ้างคะ และอยากทราบว่า file input กับ output ต้องชื่อเดียวกันไหมคะ ผลลัพธ์ที่ได้จะแสดงที่ไหนคะบนหน้าเว็บเลยรึเปล่า และเราสามารถ input text file ลงไปได้ไหมคะ โดยที่ไม่ต้องใส่ข้อความ เข้าไปใน text box พอดียังไม่ค่อยเข้าใจอ่ะคะ

    ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 2:04 pm

    • แก้ /usr/bin/swath กับ คำสั่ง tempnam ครับ tempnam นี้ลองตั้งเป็นชื่ออื่นไปเลยก็ได้ครับเช่น $input_filename= “C:\toto.txt”; $output_filename= “C:\tata.txt”; ซึ่งต้องไม่เหมือนกันครับ ส่วนจะเขียนลง path ไหนก็แล้วแต่เรา set permission ไว้ครับ … แต่พอทำได้แล้วค่อมาดูเรื่องสร้าง tempfile อีกทีครับ

      ความเห็น โดย वीर — กุมภาพันธ์ 22, 2012 @ 2:58 pm

  7. ขอโทษนะคะแก้โค้ดประมาณนี้แล้วคะ แต่ยังไม่แสดงผลลัพธ์ เลยคะ คือผลลัพธ์ที่ได้จะแสดงบนหน้าเว็บเลยรึเปล่าคะ หรือจะแสดงเป็นไฟล์ text เหมือนที่เราเรียกผ่าน command Prompt แล้วเวลาที่เรา input file เราไม่ต้องใส่ข้อมูลใน text box ได้ใช่ไหมคะ ให้มันสามารถเรียกไฟล์ text ที่เรามีอยู่แล้วได้รึเปล่าคะ

    function swath($input_text)
    {
    $input_filename= “C:/swath/news.txt”;;
    $output_filename= “C:/swath/outt.txt”;
    $input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
    file_put_contents($input_filename, $input_text_tis620);
    system(“C:/swath $output_filename”);
    $raw = file_get_contents($output_filename);
    $raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
    unlink($input_filename);
    unlink($output_filename);
    return preg_split(‘/\|/’, $raw_utf8);
    }

    if($_REQUEST['input_text']) {
    $output = swath($_REQUEST['input_text']);
    print implode(” “, $output);
    }

    ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 3:44 pm

    • ลองสั่ง dir C:\swath มาดูหน่อยได้เปล่าครับ? ผมว่า execute table ไฟล์มันไม่น่าไปอยู่ใน C:\ อะครับ .. ลองจาก command line ง่านกว่าครับ เอา if($_REQUEST['input_text']) {
      $output = swath($_REQUEST['input_text']);
      print implode(” “, $output);
      } ออกไปแล้วสั่ง print_r(swath(“ตากลมตากลม”)); ดูเลยครับ

      ความเห็น โดย वीर — กุมภาพันธ์ 22, 2012 @ 6:39 pm

  8. พี่คะรบกวนอีกนิดนะคะ ช่วยดูโค้ดให้หน่อยนะคะ พอรันแล้วยังไม่มีอะไรขึ้นบนหน้าเว็บเลยคะ แต่มี output ที่เป็น text file ขึ้นใน folder swath ซึ่งใน text ว่างเปล่าคะ น่าจะเกิดจากสาเหตุอะไรคะ

    <?php

    function swath($input_text)
    {
    $input_filename= tempnam("/tmp", "swath_");
    $output_filename= tempnam("/tmp", "swath_");
    $input_text_tis620 = iconv("UTF-8", "TIS-620", $input_text);
    file_put_contents($input_filename, $input_text_UTF8);
    system("C:/AppServ/www/swath $output_filename”);
    $raw = file_get_contents($output_filename);
    $raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
    unlink($input_filename);
    unlink($output_filename);
    return preg_split(‘/\|/’, $raw_utf8);
    }
    if($_REQUEST['input_text']) {
    $output = swath($_REQUEST['input_text']);
    print implode(“”, $output);
    file_put_contents(“C:/AppServ/www/swath/output.txt”,implode(“|”,$output));
    }
    ?>

    ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 11:20 pm

    • ขอโทษนะคะ code นี้คะ ^^

      <?php

      function swath($input_text)
      {
      $input_filename= tempnam("/tmp", "swath_");
      $output_filename= tempnam("/tmp", "swath_");
      $input_text_tis620 = iconv("UTF-8", "TIS-620", $input_text);
      file_put_contents($input_filename, $input_text_UTF8);
      system("C:/AppServ/www/swath $output_filename”);
      $raw = file_get_contents($output_filename);
      $raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
      unlink($input_filename);
      unlink($output_filename);
      return preg_split(‘/\|/’, $raw_utf8);
      }
      if($_REQUEST['input_text']) {
      $output = swath($_REQUEST['input_text']);
      print implode(“”, $output);
      file_put_contents(“C:/AppServ/www/swath/output.txt”,implode(“|”,$output));
      }
      ?>

      ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 11:23 pm

      • เครื่องหมายที่ใช้ redirect หายไปจาก code อะครับ

        ความเห็น โดย वीर — กุมภาพันธ์ 22, 2012 @ 11:30 pm

  9. เครื่องหมายที่ใช้ redirect คืออะไรคะ ต้องแก้ตรงไหนบ้าง

    ความเห็น โดย butter — กุมภาพันธ์ 22, 2012 @ 11:48 pm

    • เครื่องหมาย บรรทัดที่สั่ง system ครับ

      ความเห็น โดย वीर — กุมภาพันธ์ 23, 2012 @ 4:43 pm

      • ขอบคุณคะ ได้แล้วนะคะ แต่มันรับข้อมูลจาก text box คืออยากให้มันรับข้อมูลจาก text file ที่เรามีอ่ะคะ ต้อง input ยังไงหรือแก้ไขโค้ดในส่วนไหนคะ ^^

        ความเห็น โดย butter — กุมภาพันธ์ 24, 2012 @ 12:12 pm

  10. ผมเองก็มี output.txt ใน C:/AppServ/www/swath แต่ไม่มี text เป็นว่างเปล่าครับ เครื่องหมายที่ใช้ redirect คือตัวไหนครับ ผิดพลาดตรงไหนรบกวนแนะนำด้วยครับ ขอตัวอย่างด้วยนะครับ ขอบคุณมากครับ
    โคดครับ

    ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 25, 2012 @ 11:16 pm

    • ขอโทษด้วยนะครับ
      function swath($input_text)
      {
      $input_filename= tempnam(“/tmp”, “swath_”);
      $output_filename= tempnam(“/tmp”, “swath_”);
      $input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
      file_put_contents($input_filename, $input_text_UTF8);
      system(“C:/AppServ/www/swath $output_filename”);
      $raw = file_get_contents($output_filename);
      $raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
      unlink($input_filename);
      unlink($output_filename);
      return preg_split(‘/\|/’, $raw_utf8);
      }
      if($_REQUEST['input_text']) {
      $output = swath($_REQUEST['input_text']);
      print implode(“”, $output);
      file_put_contents(“C:/AppServ/www/swath/output.txt”,implode(“|”,$output));

      }

      ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 25, 2012 @ 11:20 pm

      • C:/AppServ/www/swath $lt < $input_filename &gt $output_filename

        พวกเครื่องหมายมากกว่าน้อยกว่าอะครับ เขียนในนี้มันไม่ค่อยเห็น

        ความเห็น โดย वीर — กุมภาพันธ์ 26, 2012 @ 12:42 am

  11. โคดครับ

    ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 25, 2012 @ 11:20 pm

  12. ลบ file_put_contents ออกแล้วแก้ $input_filename ใส่ชื่อไฟล์ที่ต้องการเลยครับ

    ความเห็น โดย वीर — กุมภาพันธ์ 26, 2012 @ 12:36 am

  13. รบกวนอีกนะครับ ผมลองแก้แล้ว ยังเป็น text ว่างเปล่า ไม่มีตัวอักษร ผมรบกวนพี่พอจะมีไฟล์ ใช้ Swath จาก PHP ไหมครับ รบกวนส่งมาที่เมล์ lnw_za_@hotmail.com
    ขอบคุณครับ

    ความเห็น โดย สุเทพ — กุมภาพันธ์ 27, 2012 @ 10:45 am

  14. ได้แล้วครับ สงสัยผมอ้าง path ผิด ขอบคุณพี่มากๆเลยนะครับ

    ความเห็น โดย สุเทพ คล้ายสถาพร — กุมภาพันธ์ 27, 2012 @ 8:27 pm

  15. พี่คะ ถ้าต้องการ input file text เข้ามาอ่ะต้องแก้โค้ดยังไงคะ

    ความเห็น โดย butter — กุมภาพันธ์ 28, 2012 @ 9:51 pm

    • บรรทัด system ครับ redirect เข้าไปเลย

      ความเห็น โดย वीर — กุมภาพันธ์ 28, 2012 @ 9:52 pm

  16. ขอโทษนะคะพี่ ช่วยดูโค้ดให้หน่อยนะคะ ต้องเพิ่มโค้ดยังไงคะ เพื่อให้มันตัดคำจาก text file ของเราอ่ะ ต้อง input file ตรงไหน ยังไงคะ ลองทำแล้วยังไม่ได้เลยคะ รบกวนด้วยนะคะ ขอบคุณคะ ^^

    function swath($input_text)
    {
    $input_filename= tempnam(“/tmp”, “swath_”);
    $output_filename= tempnam(“/tmp”, “swath_”);

    $input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
    file_put_contents($input_filename, $input_text_tis620);
    system(“C:\AppServ\www\swath $output_filename”);
    $raw = file_get_contents($output_filename);
    $raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
    unlink($input_filename);
    unlink($output_filename);
    return preg_split(‘/\|/’, $raw_utf8);
    }
    if($_REQUEST['input_text']) {
    $output = swath($_REQUEST['input_text']);
    print implode(“”, $output);
    file_put_contents(“C:\AppServ\www\swathf\outputnews.txt”,implode ($output ,”\r\n”));

    }

    ความเห็น โดย butter — มีนาคม 10, 2012 @ 6:01 pm

    • ตัดคำที่ไฟล์เดิมตลอดเปล่าครับ? หรือรับ path มาจากไหน?

      ความเห็น โดย वीर — มีนาคม 10, 2012 @ 9:02 pm

  17. ไม่ใช่ไฟล์เดิมตลอดคะ input มีหลายไฟล์ รับมาจาก path เดียวกับที่แสดง output คะ รบกวนหน่อยนะคะ

    ความเห็น โดย butter — มีนาคม 11, 2012 @ 12:01 am

    • รับชื่อไฟล์มาทางไหนอะครับ?

      ความเห็น โดย वीर — มีนาคม 11, 2012 @ 2:14 pm

      • ขอโทษนะคะ ไม่ค่อยเข้าใจคำถามคะ ถ้าหมายถึงที่เก็บไฟล์ input คือ C:\AppServ\www\swathf\news.txt

        ความเห็น โดย butter — มีนาคม 11, 2012 @ 3:03 pm

      • โปรแกรมต้องรองรับไฟล์อื่นนอกจาก C:\AppServ\www\swathf\news.txt อีกเปล่าครับ?

        ความเห็น โดย वीर — มีนาคม 11, 2012 @ 3:30 pm

      • ใช่คะ มีไฟล์อื่นที่ต้อง input หลายไฟล์ แต่อยูใน C:\AppServ\www\swath เหมือนกันคะ

        ความเห็น โดย butter — มีนาคม 11, 2012 @ 3:59 pm

      • แบบนี้ต้องรับชื่อไฟล์มาใน function เปล่าครับ? หรือว่าเอามาจากไหน?

        ความเห็น โดย वीर — มีนาคม 11, 2012 @ 5:23 pm

      • น่าจะต้องรับชื่อไฟล์มาใน function คะ

        ความเห็น โดย butter — มีนาคม 11, 2012 @ 10:52 pm

  18. งั้นเริ่ม function ด้วย function swath($input_filename) เลยครับ … ไฟล์ที่จะตัดคำใช้ character set แบบไหนอยู่ครับ?

    ความเห็น โดย वीर — มีนาคม 12, 2012 @ 10:43 am

  19. ไฟล์ที่จะตัดคำใช้ UTF-8 คะ

    ความเห็น โดย butter — มีนาคม 12, 2012 @ 1:29 pm

    • swath ในเครื่องใช้ option แบบ swath -u ‘u,u’ ได้เปล่าครับ?

      ความเห็น โดย वीर — มีนาคม 12, 2012 @ 1:55 pm

      • ดูยังไงคะ

        ความเห็น โดย butter — มีนาคม 12, 2012 @ 2:29 pm

      • ลองพิมพ์ดูใน cmd (Command Prompt) ครับ … แต่ก่อนพิมพ์ cd ไป folder ที่ swath อยู่ก่อนนะครับ

        ความเห็น โดย वीर — มีนาคม 12, 2012 @ 3:31 pm

      • ดูใน swath –help ได้ครับ มันจะแสดง option ออกมาทั้งหมด (version 0.4.2 นะครับ ผมไม่แน่ใจว่าบน Windows เหมือนกันหรือเปล่า)

        ความเห็น โดย वीर — มีนาคม 13, 2012 @ 8:08 am

      • ไม่น่าจะได้นะคะ เพราะ ลอง swath -help แล้วไม่มี option -u ‘u,u’ นี้เลย

        ความเห็น โดย butter — มีนาคม 14, 2012 @ 4:19 pm

      • งั้นเขียน function swath เหมือนเดิม แล้วเพิ่ม function wordseg_form_file($input_filename) {
        return swath(file_get_contents($input_filename));
        }

        แล้วใช้ wordseg_from_file แทนแล้วกันครับ

        ความเห็น โดย वीर — มีนาคม 14, 2012 @ 7:45 pm

      • ขอโทษนะคะ พี่ช่วยเขียนให้ดูหน่อยนะคะ ยังมะค่อยเข้าใจ เป็นมือใหม่จริง ๆ คะ ^^

        ความเห็น โดย butter — มีนาคม 15, 2012 @ 4:05 pm

      • ใส่ชื่อไฟส์ไปเลยครับ

        ความเห็น โดย वीर — มีนาคม 15, 2012 @ 4:15 pm

      • ใส่ตรง function นี้เลยใช่ไหมคะ function swath($input_text) แล้วตรงเพิ่มตรงไหนอีกรึเปล่าคะ

        ความเห็น โดย butter — มีนาคม 15, 2012 @ 11:34 pm

      • wordseg_from_file ครับ (อันก่อนผมเขียน from ผิดเป็น form)

        ความเห็น โดย वीर — มีนาคม 16, 2012 @ 5:34 am

      • แยกออกมาเป็นอีก function ครับ

        ความเห็น โดย वीर — มีนาคม 19, 2012 @ 11:03 am

      • พี่ช่วยเขียนโค้ดให้ดูเลยได้ไหมคะ พอดีเพิ่งหัดเขียน php อะคะ ยังมะค่อยเก่ง

        ความเห็น โดย butter — มีนาคม 29, 2012 @ 12:24 am

      • ต้องฝึกฝนนะครับ

        ความเห็น โดย वीर — มีนาคม 29, 2012 @ 6:13 am

  20. พี่คะ รบกวนช่วยดูโค้ดให้หน่อยนะคะ คือแก้ไขแล้วมันยังไม่ได้จริง ๆ อ่ะคะ คือข้อมูลที่ต้องการเอาไปตัดอยู่ใน ตัวแปร $elem คะ คือ เปลี่ยนจากรับค่าจาก textbox เป็นรับค่าจากตัวแปร $elem อ่ะคะ ต้องแก้ไขโค้ดยังไงคะ ขอบคุณคะ

    function swath($input_text)
    {
    $input_filename= tempnam(“/tmp”, “swath_”);
    $output_filename= tempnam(“/tmp”, “swath_”);

    $input_text_tis620 = iconv(“UTF-8″, “TIS-620″, $input_text);
    file_put_contents($input_filename, $input_text_tis620);
    system(“C:\AppServ\www\swath $output_filename”);
    $raw = file_get_contents($output_filename);
    $raw_utf8 = iconv(“TIS-620″, “UTF-8″, $raw);
    unlink($input_filename);
    unlink($output_filename);
    return preg_split(‘/\|/’, $raw_utf8);
    }

    $output = swath( file_get_contents(“$elem”));

    //print implode(“”, $output);
    file_put_contents(“C:\AppServ\www\swathf\output.txt”,implode ($output,”\r\n”));

    ความเห็น โดย butter — พฤษภาคม 14, 2012 @ 12:28 am

    • ช่วงนี้ยุ่งมากๆ เลยจ้า … เดาว่า swath($elem) นะ

      ความเห็น โดย वीर — พฤษภาคม 15, 2012 @ 12:32 am

      • ไม่ได้อ่ะคะ เอาไว้พี่ว่าง ๆ ช่วยดูให้หน่อยนะคะ

        ความเห็น โดย butter — พฤษภาคม 15, 2012 @ 1:57 am


RSS feed สำหรับความเห็นต่อเรื่องนี้ TrackBack URI

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Connecting to %s

Theme: Shocking Blue Green. บลอกที่ WordPress.com .

Follow

Get every new post delivered to your Inbox.

Join 632 other followers