未分類 – こみなのメモ帳 / 趣味と実益のネタ帳 Wed, 27 Jul 2022 10:12:46 +0000 ja hourly 1 https://wordpress.org/?v=6.1.1 javamailを使ってYahoo!メール(IMAP)でフォルダ移動する /archives/1032/ /archives/1032/#respond Wed, 27 Jul 2022 10:12:46 +0000 https://www.komina.info/?p=1032 「楽天ブログに自動で記事を投稿したい」というタイトルから脱線してきたのでそのまんまの件名に変えました。

前回はIMAPプロトコルで狙ったメールの受信を行うプログラムを書きました。

メールを解析した後は不要なのでメーラを使って手作業で消していたのですが、毎回はさすがに面倒なので解析の流れでプログラムで削除まで行うことにしました。

IMAPプロトコルではフォルダ間のメッセージ移動が可能なので、受信箱に届いたメッセージをゴミ箱へ移動させることにします。

String host = 'imap.mail.yahoo.co.jp'
String user = '******'
String pass = '******'
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"

Properties properties = System.properties
properties.setProperty('mail.imap.socketFactory.class', SSL_FACTORY)
properties.setProperty('mail.imap.ssl.trust', '*')
properties.setProperty('mail.debug', 'true')

Session session = Session.getInstance(properties)
URLName urln = new URLName('imap', host, 993, null, user, pass)
Store store = session.getStore(urln)
store.connect()
IMAPFolder inbox = store.getFolder('Inbox')
inbox.open(Folder.READ_WRITE)

SearchTerm[] stlst = [
        new SubjectTerm('日の日記'),
        new ReceivedDateTerm(ComparisonTerm.EQ, new Date()),
        new FromStringTerm('no-reply@plaza.rakuten.co.jp')
    ]
SearchTerm st = new AndTerm(stlst)

List<Message> target = []
inbox.search(st).each { Message msg->
    println("Subject  : ${msg.getSubject()}")
    println(" From    : ${msg.getFrom()}")
    println(" ReplyTo : ${msg.getReplyTo()}")
    target.add(msg)
}

if (!target.isEmpty()) {
    Message[] targetArray = target.toArray(new Message[0])
    inbox.moveMessages(targetArray, store.getFolder('Trash'))
}

inbox.close()
store.close()

ポイントは store.getFolder('Inbox')com.sun.mail.imap.IMAPFolderで受けているところです。
メッセージの移動はIMAP固有の機能なのでjavax.mail.FolderにはmoveMessagesメソッドが定義されていません。

問題発生

これで課題解決かと思ったのですが実際に実行してみると例外が発生します。うーん?デバッグ出力を有効にしてみるとMOVEコマンドでエラーが発生していました。

A6 MOVE 15,33 Trash
A6 NO [CANNOT] MOVE It's not possible to perform specified operation

プログラムの書き方の問題ではなくIMAPサーバ側でコマンドを拒否しているようです。メッセージの移動を一切禁止するとかあるのだろうか。

ちなみに上記の A6 というのはコマンドとその応答を紐づけるものです。並列実行を考慮した実装となっているそうです。

原因の調査

さてプロトコル系でうまくいかないときは正常に動いているものを参考にするのが定石です。Thunderbirdという無料メーラーはログを出力する機能があるのでそれを利用することにしました。

環境変数 NSPR_LOG_MODULES にプロトコル種別とログレベルを設定(IMAP:3 など)、NSPR_LOG_FILE に保存先ファイルパスを設定した上でThunderbirdを起動します。(※ログは起動のたびにクリアされます)

Thunderbirdの画面からメッセージの移動を行ったところ以下のコマンドが発行されていました。(抜粋)

65 uid move 394141 "Trash"
* OK [COPYUID 4 394141 359316]
* 2 EXPUNGE
65 OK UID MOVE completed

単なる MOVEコマンドではなく、UID MOVEコマンドを使用していました。

MOVEコマンドで指定しているのはメッセージ番号、これはメールボックス内の連番でセッション内で有効な番号。一方、UID MOVEコマンドで指定しているのはUIDというものでメールボックス内で一意で永続的であることが保証された番号。

どうやらYahoo!メールのIMAPではメッセージ番号を使った移動はサポートしていないということらしい。

解決方法

さてメッセージを移動させる方法は分かりました。しかし UID MOVEコマンドをjavamail-1.6.2がサポートしているのかというとどうも期待できなさそうです。moveuidとかcopyuidとか思わせぶりなメソッドは存在するのですが実際に発行しているコマンドは MOVEコマンドでした。

そうなると自前で発行するしかありません。
javamailには自前のプロトコル処理に差し替える機能があるようですが(プロパティmail. + プロトコル名 +.classなど)、正直そこまでやるほどの労力を使いたくありません。

そこでimap関連の機能を利用しつつ UID MOVE コマンド発行することにしました。

SearchTerm[] stlst = [
        new SubjectTerm('日の日記'),
        new ReceivedDateTerm(ComparisonTerm.EQ, new Date()),
        new FromStringTerm('no-reply@plaza.rakuten.co.jp')
    ]
SearchTerm st = new AndTerm(stlst)
IMAPMessage[] msgs = inbox.search(st)

FetchProfile fp = new FetchProfile()
fp.add(FetchProfile.Item.ENVELOPE)  
fp.add(UIDFolder.FetchProfileItem.UID)
inbox.fetch(msgs, fp)

msgs.each { IMAPMessage msg->
    println("Subject  : ${msg.getSubject()}")
    println(" From    : ${msg.getFrom()}")
    println(" ReplyTo : ${msg.getReplyTo()}")
    println(" UID     : ${msg.getUID()}")
}
if (msgs.length > 0) {
    inbox.getProtocol().simpleCommand('UID MOVE '
        + UIDSet.toString(Utility.toUIDSet(msgs)) 
        + ' "Trash"', null)
}

UID MOVE コマンドを発行するにあたりUIDが必要となるので、まずはfecthメソッドにてUIDを取得します。そしてそのあとにsimpleCommandメソッドを用いてコマンドを発行しています。

UIDSet.toString(Utility.toUIDSet(msgs))は幾つかのUIDをまとめてくれる便利メソッドです。(123,124,125といった連番であれば123:125のようにまとめてくれる)

Yahoo!メールではゴミ箱は使用容量のカウント外となるのでひとまず移動だけでオッケーですね。

おまけ

IMAPでメッセージ削除は論理削除→物理削除の順で行います。
論理削除はメッセージに対してDeletedフラグを立てる形で行われるのですが、こちらも単なるSTOREコマンドではエラーになり、UID STOREコマンドを用いる必要がありました。

if (msgs.length > 0) {
    inbox.getProtocol().simpleCommand('UID STORE '
        + UIDSet.toString(Utility.toUIDSet(msgs))
        + ' +FLAGS '
        + inbox.getProtocol().createFlagList(new Flags(Flags.Flag.DELETED))
        , null)
}
inbox.expunge()

+FLAGSでフラグON、-FLAGSでフラグOFFを意味します。UID STOREコマンドで削除フラグを立てて、expungeメソッドで物理削除しています。

関連記事

https://www.komina.info/archives/887

参考資料

]]>
/archives/1032/feed/ 0
「アンパンマンことばずかん」の破れの修復 /archives/865/ /archives/865/#respond Thu, 01 Jul 2021 08:35:25 +0000 https://www.komina.info/?p=865 「アンパンマンことばずかん」。ペンで絵をタッチすると、名前やセリフが再生される知育玩具です。リング綴じになっていてページが180度大きく開ける設計になっています。

このリング綴じの部分、こどもがページを上半分くらい破いてしまいました。

こうなってしまうと破れたところをセロテープで貼り合わせるとか無理なので、薄いプラシートを使って修復することにしました。リングの内側に通して接着剤で貼り付けようという作戦です。

卵パックの縁がいい感じの厚さだったので、ハサミで必要なサイズを切り出しました。

絵本のページと切り出したプラスティックのシート

接着剤は硬化後に透明になり、作業時間に余裕があることから木工用ボンドを使うことにしました。あと、細かい作業になるのでリングの間に差し込めるピンセットと竹串みたいなのを用意。

ページをリング内に戻した後は、竹串の先端にボンドを付けてリング内側の部分に塗布。そこへピンセットを使ってプラシートを置きに行きます。少し細かい作業ですが、接着剤が乾くまでには時間もありますし、はみ出しても透明になるので気負うことなく作業できます。

作業完了後

リングの内側の接着されたプラシートが見えるでしょうか。強度も問題なく、目立たないように修復できました。


アンパンマン おしゃべりいっぱい ことばずかん スーパーデラックス
by カエレバ
]]>
/archives/865/feed/ 0
マグネットUSBケーブル /archives/546/ /archives/546/#respond Tue, 10 Nov 2020 09:00:00 +0000 https://www.komina.info/?p=546 Type-Cになってだいぶ着脱に対する耐性が向上したようですが、それでも出来ればしたくない。ケーブルをひっかけた時の基板へのダメージが心配。そんな人のために磁力でくっつくUSBケーブルです。

近づければ繋がり、引っ張れば外れる。ゆっくり引っ張ればスマホごと引き上げることもできなくもない。

磁石で着脱する部分は共通なので、1本のケーブルでにスマホごとにTypeC、MicroUSB、Lightningの端子を挿しておけば、とっかえひっかえ充電や接続が行えます。

着脱部の統一規格があるわけでないため、いざ購入しようと思うとどれを選んでいいか迷ってしまいますが、私はこれに決めました。
最大電流3Aと、データ伝送可能なこと、断線しにくそうなケーブルが決め手です。

少し前にAmazonで買って3か月ほど使用していますが、今のところ問題ありません。なかなか良いです。

Amazonで買うと1000円近くするのですが、ebayで互換性のある同等品を探してみたところ600円弱でiPhoneプラグも付いたバージョンが購入できそうだったのでダメもとで挑戦してみました。

で、約2週間ほどで台湾より到着、本日開封してみたところ無事に互換性あり接続問題なしという結果を得ました。

入手に少しくらい時間がかかっても良いという方はebayからの購入も検討されてはいかがでしょうか。
microUSBプラグやtypeCプラグのみの購入も可能なようですので、買い増しにも便利です。

Product description:
[Product Name]: USLION fast charging Magnetic Cable
[Type]: Type C / Micro Port
[OUTPUT]: 5 V / 3.0A (max)

Magnetic 3A Cable fast charging Micro USB Type-C Data Cable For iPhone Android

]]>
/archives/546/feed/ 0
充電式ドライバーの修理 /archives/539/ /archives/539/#respond Mon, 09 Nov 2020 06:23:29 +0000 https://www.komina.info/?p=539 はじめに

20年近く前に東急ハンズだったかで買った充電式のドライバー。片手で軽々扱えるサイズながら、痒い所に手が届く感じでネジ締めや穴あけに大活躍してくれていました。

しかし、いつの頃から使うシチュエーションが減り、コード式のドライバーに主力を移した結果、電池切れで使いたいときに使えず放置、充電し直してもすぐに使わず、という悪循環。

ひょうんなことからコード式のドライバーを実家へ貸し出すことになって、そういえばと思い出し、道具箱の奥から引っ張り出してきました。やはり、ピクリともしません。最後は充電しても動かなかったはずなので、中を開けてみることにしました。

分解してみる

5カ所ほどあるネジを緩めたところ、あっさりオープン。持ち手のところにニッカド電池3個、ライト転倒やロックを兼ねたスライドスイッチ、正転逆転を行うHブリッジな機械式スイッチというシンプルな構成でした。

充電のための特殊な回路はなく、今では見かけなくなったトランス式のACアダプターの出力特性に頼った設計になっていました。充電電流が流れなくなるにつて端子間電圧が上昇する曲線がいい感じなのかも。

充電池(拡大)SANYO GL KR-1200SCLと書かれている

電池には「SANYO」「GL」「KR-1200SCL」と印字されており、これらのキーワードで検索すると、それらしき製品「SANYO KR-1200SCL」にたどり着けました。データシートも見つかりました。インターネットって素晴らしい。

単2電池より高さが低いくらいのサイズ感です。最悪電池交換かと思ってちょっと検索してみたのですが、組電池はなかなか入手が難しいみたいです。そもそも量産品向けなので一般入手しようとすると高額になってしまいます。

充電してみる

ま、ともかく。付属アダプターではなく、安定化電源を使って電流制限して充電してみることにしました。
データシートにもありますが、NiCd電池は電池容量の1/10の電流、急速なら1/5の電流で充電すればよいので、1200mAhであれば充電電流は120mA~240mAとなります。

手っ取り早く動作確認を取りたかったので、MAX0.24Aに制限して開始。端子間電圧も徐々に上がっていき、4.3Vくらいで動かなくなりました。

動かしてみる

安定化電源を外してケースを開けたまま、ライトを操作。

ピカッ

麦球が普通に光ります。
正転逆転SWを操作。

ウィーン

普通に回ります。

うーん。普通に問題なさそうです。強いて言うならバッテリーが劣化しているくらいです。これを機にまた前線で使っていくことにします。

充電器を変える

とはいっても、放置していたNiCd電池では長くは持たないでしょうし、バッテリー交換を視野に入れておくことにします。

まずは充電器。付属のトランス式のアダプターよりマシな充電回路の付いた充電器にしたいと思います。今はノーガード充電ですからね。

充電モジュールで検索すると、リチウムイオン電池向けのものが旬のようで、Amazonで随分安価に手に入るようです。

電池をニッカド電池からリチウムイオン電池に変えるならそれもアリかもしれませんが(ちょうど3.6Vですし)、それはとりあえず置いておいくとしまして。

ebayの方も覗いてみるとありました。充電モジュール基板もありましたが、USBから電源を取るケーブルタイプの充電器が見つかりました。

Product type: Battery pack USB charging cable;
Cable length: 60cm (approx);
Plug type: SM, JST, KET, XH, EL, 557. Please select the type from the drop down list;
Output current: 250mAh;
Rated voltage: 3.6V, 4.8V, 6V, 7.2V, 8.4V, 9.6V.

NiCd電池だけではなくNiMH電池(ニッケル水素電池)にも対応していて、充電池のセル数やコネクタタイプに合わせて色々選べるのもポイント高いです。

今回は、7番の3.5mmプラグタイプ、output3.6Vを注文することにしました。(既存の充電器のプラグを切断して移植する予定でいるので何でもよかったのです)

というわけでebayの買い物をしたわけですが、部品も送料も安い買い物の欠点は輸送時間がかかること。しばらく待ちになりました。

届いたら追加でレポートしたいと思います。

ちなみに

バッテリーの代替品について。せっかくなのでニッケル水素電池にしたいな、と探してみたところ、Amazonで1.2V、公称容量2000mAh(正規容量)、直径:約22.5mm 長さ:約34mmというサイズ、電圧的に互換性の高そうなタブ付きバッテリーが見つかりました。

バッテリーの交換が必要なことが判明したら、これに交換してみたいと思います。

]]>
/archives/539/feed/ 0
2500円のネットワークカメラ /archives/497/ /archives/497/#respond Wed, 21 Oct 2020 09:14:53 +0000 https://www.komina.info/?p=497 ちょっと情報が古くて申し訳ありませんが、こんな製品を発見しました。

ATOM|Cam

https://www.atomtech.co.jp/series/atomcam/

約5センチ角の立方体に近い形で角度を自由に変えられるアームを内蔵の109グラム、壁面などの設置するためのマグネットプレートが付属。

HD画質、昼20fps・夜15fps。動体検知機能あり。

うーん、欲しい・・かも。
1台2,500円ですので数台まとめて購入して家のあちらこちらに配置したくなります。

残念ながら屋外はサポート外ですが、自己責任で防水処理すれば何とかいけるのかな。もしかして紫外線とかに弱いのかな。

販売はメーカ直販だそうですので下記よりどうぞ。税込2,500円+送料らしいです。

IoT/スマートホームデバイスのATOM Tech(アトムテック)

https://www.atomtech.co.jp/

]]>
/archives/497/feed/ 0
型取りゲージに出会う /archives/479/ /archives/479/#respond Fri, 16 Oct 2020 06:48:52 +0000 https://www.komina.info/?p=479 型取りゲージってご存じですか?
私、知りませんでした。ホームセンターにはよく行っていたので、見たことあったかもしれないけど、認識できてなかったようです。

今朝、なんとなくYahooを見ていると英語の動画広告があって、見ていると何やら面白そうなことをやっているようなので、思わずクリックしちゃったんですね。
そしたら下記のSakerという商品サイトへ飛ばされまして。

Saker Contour Gauge 5 – Smart saker

https://www.smartsaker.com/pages/saker-contour-gauge-5

どうやら物の外形を写し取る工具のようです。動画も見つけたので貼っておきます。

Sakerの宣伝

コイツを持っていたら、例えばフロアマットを壁に合わせてカットするとき、もう少しピッタリできたかもしれません。
がぜん欲しくなってきました。

Sakerの製品そのものじゃなくても型取りゲージという名前で検索すると、結構ヒットしました。お試しで買えるような価格からあるようです。

私ごときには高い精度のものは必要ないので、安価な2,000円~3,000円くらいのを1つ買ってみようかと思ってます。

]]>
/archives/479/feed/ 0
DS216jからWOLする /archives/367/ /archives/367/#respond Sun, 27 Sep 2020 15:48:06 +0000 https://www.komina.info/?p=367 SynologyのNAS、DS216jからWakeOnLanの信号を発信する方法をメモしておこうと思います。

NASとWakeOnLanというとNASが起動させされる側となっている例の方が多いですが、その逆のパターンです。

SynologyのNASにはDSMというOSが稼働しています。このDSMにはタスクスケジューラという機能があり、任意のコマンドをスケジュールに従い実行することができます。

DSMのコントロールパネルより、タスクスケジューラを開きます。

タスクスケジューラを開いたら、作成>予定タスク>ユーザー指定のスクリプトを選びます。

タスクの識別用に分かりやすい名前を付けます。実行ユーザはrootとします。

予定タスクなので実行時刻/周期について聞かれます。繰り返さない設定で過去の時刻を指定しておきます。(自動で起動しないようにしておく)

最後に実行するコマンドを記述します。起動させたいPCのMACアドレスを指定します。

synonet --wake E0:DB:AB:CD:EF:01 eth0

このようにタスクを作成しておけばいつでも実行することができます。

How To Wake up Windows Machine via WOL from Synology NAS (or any Linux Server)

https://www.nextofwindows.com/how-to-wake-up-windows-machine-via-wol-from-synology-nas

コマンドsynonetとは何ぞや?という人は、SSH接続でNASへ接続してみてコマンドのヘルプを見てみると参考になるかもしれません。

]]>
/archives/367/feed/ 0
エア縄跳び? /archives/359/ /archives/359/#respond Tue, 15 Sep 2020 08:59:12 +0000 https://www.komina.info/?p=359 運動する習慣のない私にとって唯一の運動だった通勤時間がリモートワーク生活突入によりなくなり、すっかり運動不足になってしまいました。持病の腰痛も悪化の一途をたどる一方ですし、体力の低下も止まりません。ヤバいです。

歩き回ったりしないで持久力、心肺機能が鍛えられる運動はないかと思っていたところ、ボクサーのトレーニングでよく見かける縄跳びがなかなか良さそうであることを知りました。

縄跳びトレーニングの効果4選|最短でいつから脂肪燃焼ダイエットに繋がるの?

https://smartlog.jp/151101

私の場合は痩せ型なのでダイエットの必要はないのですが、心肺機能や持久力の向上、体幹が鍛えられる、といった効果があるとのこと。

一方で腰痛とは縄跳びは相性が悪いという話もあるようです。ジャンプを繰り返し地面から衝撃を受けるので当たり前といえば当たり前ですが。。まあせっかく興味を持ったので、無理をしない程度にやってみる方向で考えてみることにしました。

で、Amazonを見て回っていると、スポーツ用品として材質や重さや機能など様々なバリエーションの製品が売られているのにビックリしました。その中でひとき異色の存在「エア縄跳び」というものを見つけてしまったのです。

といっても仕組みは単純で、左右の持ち手にロープの代わりに30センチほどの紐とその先にウェイトが付いているというもの。ロープの代わりに振り回してトレーニングするという寸法です。

で、面白半分で購入して試してみました。
持ち手にはカウンタ機能があり、自分の体重を設定すると消費カロリーを計算してくれるようです。目標時間や目標回数を設定しておけば、ビープ音で知らせてくれる機能も付いていました。

10分ほどのトレーニングで十分な運動量になるようなので、目標時間を10分にして飛んでみました。

実際に試してみると自信の運動神経の低さを痛感。左右のウェイトをシンクロさせて振ることすらままなりません。はじめの一歩で躓いてしまった感じです。
10分の中でいろいろと試行錯誤しているうち、どうやら目をつぶって普通の縄跳びをイメージすると何とか飛べることが分かってきました。

そうこうしているうちに10分が終了。縄跳びを意識して垂直飛びを繰り返していただけなのですが、汗もじんわり息も上がり十分運動になったみたいです。

普通のロープも付属していて付け替えて使用できますが、しばらくは人目を避けて家の中でエア縄跳びに励んでみようと思います。

]]>
/archives/359/feed/ 0
換気扇を付けたった /archives/251/ /archives/251/#respond Thu, 30 Jul 2020 08:47:53 +0000 https://www.komina.info/?p=251 動機

昨今の新型コロナの影響でテレワーク中心の生活になり、6畳ほどの小さなPC部屋にこもることが多くなりました。窓枠に設置するタイプのエアコンはあるのですけど、そもそもモデムやルータ、NASなどが常時稼働していることもあり、熱がこもりやすい環境ということで、まずはこれを改善することにしました。

方針決定

どうしたものかと考えているところに天井近くの壁に通気口が設置されているのが目に留まりました。設置されている器具の型番RE-100Jで調べてみると、バクマ工業の樹脂製角形レジスターという製品のようです。(レジスターというのは空調用語で、室外から取り込む空気の量を調節するための部品のこと。流量調整のほかフィルタ機能もある。)
そこで自然な空気の流れに任せるのではなく、換気扇で強制換気させることにしました。

選定

レジスターのCAD図を見るとφ100mmの穴にはめ込むようになっていました。φ100mmに適合する換気扇であれば交換できそうです。
そういった規格があるようで、Amazonで調べてみると様々な製品がヒットしました。単純な換気扇で日本製だと3000円くらいから入手できるみたいです。

エアコンもあり常に換気扇を動かすわけではないので、ちょっと価格がUPしますが、下記の観点からシャッター付きの製品を選ぶことにしました。
・エアコン稼働中に換気扇を止めると冷気が逃げてしまうor外気が入ってきてしまう点。
・台風などのときに風雨が侵入きてしまう点。

私はコンセントに直接させるプラグコード付タイプを選びました。地震で配線される方は連結端子付を選ばれるとよいと思います。

工事開始

レジスターを外す

(1)まずは設置されているレジスターを外します。

フィルター部分は、上端をひっかけるように被さっています。なので、下端のツマミを引っ張りつつ、マイナスドライバーなどで壁との間をコジると外れます。

(2)フィルターを外すとこんな感じになります。壁にネジ止めしてあるので外します。

結構長いネジでした。4カ所もあるので電動ドライバー使った方がいいです。

(3)ネジ止めされた部品を外すとこんな感じになります。

これがφ100mmの穴ですね。

換気扇を設置する

(4)レジスターを除去したら、今度は設置説明書を参考に作業します。換気扇の本体を差し込みんでいきます。

穴とぴったりなのでゆっくり左右に回しながら差し込むといいと思います。

水平を取ったら付属のネジで固定していきます。太いネジを無理やりねじ込むと壁材にひびが入りそうだったので、ドリルで下穴を開けてからネジ止めしました。

(5)最後にカバーを付けて完成です。

コードの途中にある中間スイッチは私が付けました。気軽に手動でON/OFFしたかったので。

試運転

設置が終わりさっそく動かしてみました。中間スイッチもバッチリ機能します。

ONにすると電磁シャッターがカシャっと音を立てて換気扇が動き出し・・・?ファンの風切り音はほとんど聞こえず。静穏性も思った以上でした。

少し動かしただけでも部屋の上部にたまる熱が抜けていくのが体感できました。これから本格的に暑くなるので、やってみて大正解でした。

ちなみに・・

]]>
/archives/251/feed/ 0
20万円で船長になれるらしい /archives/278/ /archives/278/#respond Mon, 20 Jul 2020 02:50:45 +0000 https://www.komina.info/?p=278

20万円で船長になれる? 免許も不要、ホンダの空冷2馬力船外機で東京・砂町運河を行く

https://response.jp/article/2020/07/17/336665.html

Googleニュースでこんな記事が目に留まってつい読んでしまった。
近くに湖や川もなく、船とは無縁の生活を送っているが、その気になれば手の届く金額でボートも含めて入手できる世界なんだなぁ、と。
さらに免許もいらないなんて想像したこともなかった。

]]>
/archives/278/feed/ 0