In which I discover, again, the perils of premature optimisation

by Matt 18. March 2008 06:42

You'd think I'd only have to learn this once, wouldn't you?

For various reasons, I'm still using SharpReader as my RSS reader (I could just export my OPML and move, but I'm not happy to hit the panic button just yet. I did try to migrate to a much older version of RSS Bandit, but found lots of little bugs while importing my back catalogue, and it used just as much memory as SharpReader).

Unfortunately, SharpReader is a little, um, basic. It mostly suits my needs, but it would be really nice to have all the items grouped by published date (today, yesterday, last week, etc).

So I thought I'd add it. Hey, it's got a plugin model, it's almost asking to be hacked.

And oh boy, is this a hack. I have a class that implements IBlogExtension, but it doesn't implement any of the methods (so if you try and Blog This, it'll crash!). Instead, the plugin class subscribes to the Application.Idle event, spelunks around for the list view and subclasses it, using the lovely NativeWindow.AssignHandle. And that's just for starters.

I add the range of groups to the list view (the range is something like "next week", "later this week", "tomorrow", "today", "yesterday", "earlier this week", "last week", "two weeks ago", etc) and then loop through all the items in the list. Fortunately for me, Luke puts the RSS item class in the Tag property of the item, so I can get at it, check the date and assign the correct group.

There's a little bit of jiggery pokery with comments (indented items are comments, so should be in the same group as their parents, not their date. And of course, SharpReader is .net 1, so the IndentCount property of the ListViewItem isn't set) but I've now got a list of RSS items, grouped by date.

GroupsInSharpReader

Where does the moral come in?

Things started to get a bit hairy when adding new items. Thanks to my pack rat mentality, I could have up to a couple of thousand items in the list view. Adding a new item shouldn't affect those I've already got grouped. And of course, when a new feed is downloaded, many items could be added one after the other. Again, we want to handle this as efficiently as we can.

Which to me meant only doing the update on application idle, and only updating the new items.

So, listening on WndProc for changes to the list (OCM_NOTIFY + LVN_INSERTITEM), looking up the corresponding ListViewItem and adding it to a dictionary.

On idle, I'd spin through the items in the dictionary and set the group. Disappointingly, this means that items get added to the end of the group, rather than being added into the group in the expected order. Let's chuck the unordered group into another dictionary and keep adding. Once all the items are done, loop through all affected groups, unassign all items, sort the items and add them back.

Hairy, right? And of course, because I was trying to be efficient, and store things in lookup tables, and only do things once, it's dead slow.

What I should have done was try the naive method first. The current code simply sets a flag when a new item is inserted. When the application goes idle, it unassigns all items from all groups, and reassigns. And it's dead fast.

Keep it simple, stupid.

(Oh, and about the horrifying nature of the code - hacks like this have their place, as long as you know and advertise that they are hacks and could fail in the worst possible way. Don't try and pass this off as production code. I know I'm running with scissors, but I'm an adult, they're my scissors, and I'm doing this in the safety of my own home.)

Tags:

Comments (139) -

Man Rabideau
Man Rabideau
1/26/2011 1:29:17 AM #

Whats up, excellent blog. I don't fully grasp everything in the post, nevertheless common concept is intriguing. <A href="http://anotherf.com/">http://anotherf.com</A>

Reply

best suv
best suv
7/20/2011 10:30:18 PM #

I wonder if he cheated on her? I remember he cheated on his previous wife with JLO so it wouldn’t be surprising.

Reply

i phone 4g
i phone 4g
7/23/2011 8:50:08 PM #

I wonder if he cheated on her? I remember he cheated on his previous wife with JLO so it wouldn’t be surprising.

Reply

Lauren Button
Lauren Button United States
1/15/2016 4:22:50 AM #

Congrats! So glad to see this site getting the recognition it deserves, the world can always use a little more awesome.

Reply

Vonnie Liter
Vonnie Liter United States
1/15/2016 4:56:48 AM #

this is awesome like the book of awesome

Reply

Cornelius Styborski
Cornelius Styborski United States
1/15/2016 8:31:13 AM #

Congratulations on your success! You deserve it for brightening all of my work days with something to be excited about.

Reply

Vonnie Liter
Vonnie Liter United States
1/15/2016 8:54:33 AM #

the style of keeping you connected with so many things of different types is awesome and you find it interesting everytime.

Reply

Duncan Cashman
Duncan Cashman United States
3/16/2016 7:54:40 AM #

My Firefox stopped working saying the server wasn't found but Internet Explorers still works. I used to use firefox all the time but only recently it stopped working. I already checked the firewall and it allows firefox so i don't know what's wrong..

Reply

Leonia Schopmeyer
Leonia Schopmeyer United States
5/19/2016 3:33:40 AM #

How much money have you earned by blogging on the internet?

Reply

Eusebio Barcroft
Eusebio Barcroft United States
8/25/2016 4:26:06 AM #

In today's technological advances, I sure would like to to see another nice post like this about the smart homes architectural layouts

Reply

oszust
oszust United States
12/9/2016 7:31:32 AM #

<p>I am really enjoying the theme/design of your web site. Do you ever run into any web browser compatibility problems? A number of my blog visitors have complained about my site not working correctly in Explorer but looks great in Opera. Do you have any tips to help fix this problem?</p>

Reply

Toby Malden
Toby Malden United States
6/21/2018 2:00:42 AM #

With thanks! Valuable information!

Reply

Randolph Gelb
Randolph Gelb United States
6/29/2018 2:36:57 PM #

[FONT=Times New Roman][SIZE=3][COLOR=white]20. I'm really impressed with your writing skills and also with the layout on your blog. Is this a paid theme or did you modify it yourself? Either way keep up the excellent quality writing, it?s rare to see a great blog like this one today..[/COLOR][/SIZE][/FONT]

Reply

Tiffani Claridge
Tiffani Claridge United States
7/2/2018 11:45:08 AM #

With thanks! Valuable information!

Reply

Beth Yocham
Beth Yocham United States
7/15/2018 10:24:29 AM #

Awesome! Its in fact amazing paragraph, I have got much clear idea regarding from this piece of

Reply

Cristi Woodie
Cristi Woodie United States
7/23/2018 7:41:47 AM #

of writing i am as well delighted to share my know-how here with colleagues.

Reply

Eugenio Palomin
Eugenio Palomin United States
8/2/2018 10:15:49 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Leta Degiacomo
Leta Degiacomo United States
8/3/2018 2:40:16 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Lauri Brazan
Lauri Brazan United States
8/3/2018 3:27:30 AM #

With thanks! Valuable information!

Reply

Brett Ermert
Brett Ermert United States
8/3/2018 4:22:20 AM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Shanon Spanner
Shanon Spanner United States
8/3/2018 4:22:20 AM #

With thanks! Valuable information!

Reply

Tyler Bockrath
Tyler Bockrath United States
8/3/2018 9:14:36 AM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Hong Rostad
Hong Rostad United States
8/3/2018 10:50:03 AM #

With thanks! Valuable information!

Reply

Antoine Kirchhofer
Antoine Kirchhofer United States
8/3/2018 1:39:24 PM #

With thanks! Valuable information!

Reply

Nickolas Muckle
Nickolas Muckle United States
8/3/2018 2:21:11 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Adriane Ringdahl
Adriane Ringdahl United States
8/3/2018 2:21:34 PM #

With thanks! Valuable information!

Reply

Inga Ingber
Inga Ingber United States
8/3/2018 6:58:28 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Dominic Lampron
Dominic Lampron United States
8/3/2018 8:43:49 PM #

With thanks! Valuable information!

Reply

Delores Byers
Delores Byers United States
8/4/2018 12:31:23 AM #

With thanks! Valuable information!

Reply

Lawana Ruzicki
Lawana Ruzicki United States
8/4/2018 2:39:20 AM #

With thanks! Valuable information!

Reply

disqus
disqus United States
8/4/2018 3:05:11 AM #

Music began playing as soon as I opened up this webpage, so frustrating!

Reply

Doreen Scorca
Doreen Scorca United States
8/4/2018 4:47:48 AM #

With thanks! Valuable information!

Reply

Merrie Lavallee
Merrie Lavallee United States
8/4/2018 5:50:52 PM #

With thanks! Valuable information!

Reply

Milan Bernaudo
Milan Bernaudo United States
8/4/2018 6:14:29 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Cruz Sifford
Cruz Sifford United States
8/4/2018 8:11:08 PM #

With thanks! Valuable information!

Reply

Maximo Sofer
Maximo Sofer United States
8/4/2018 9:13:03 PM #

With thanks! Valuable information!

Reply

Cinderella Mukai
Cinderella Mukai United States
8/4/2018 9:32:10 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Lindsy Taboada
Lindsy Taboada United States
8/4/2018 11:46:28 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Colton Dudney
Colton Dudney United States
8/5/2018 12:12:32 AM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Charolette Ede
Charolette Ede United States
8/5/2018 1:39:16 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Ward Ferrick
Ward Ferrick United States
8/5/2018 3:14:31 AM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Malcom Huling
Malcom Huling United States
8/5/2018 11:40:39 AM #

With thanks! Valuable information!

Reply

Shalanda Coutant
Shalanda Coutant United States
8/5/2018 4:27:23 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Karry Vantuyle
Karry Vantuyle United States
8/6/2018 5:05:11 AM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Rhonda Alapai
Rhonda Alapai United States
8/6/2018 8:20:19 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Dana Vanlaar
Dana Vanlaar United States
8/6/2018 11:13:33 AM #

With thanks! Valuable information!

Reply

Rayna Pratico
Rayna Pratico United States
8/6/2018 12:24:08 PM #

With thanks! Valuable information!

Reply

Lavonda Clint
Lavonda Clint United States
8/6/2018 1:27:34 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Numbers Tyus
Numbers Tyus United States
8/6/2018 1:33:36 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Ngoc Stott
Ngoc Stott United States
8/6/2018 3:21:26 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Antoine Kirchhofer
Antoine Kirchhofer United States
8/7/2018 12:43:30 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Magaly Pan
Magaly Pan United States
8/11/2018 1:31:54 AM #

This is a impressive story. Thanks! http://bnuphoto.com

Reply

Emiko Issac
Emiko Issac United States
8/11/2018 3:26:00 AM #

With thanks! Valuable information! https://bzp65.com/

Reply

Bell Bogacki
Bell Bogacki United States
8/11/2018 3:49:12 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini https://php665.com/

Reply

Merlin Willcoxon
Merlin Willcoxon United States
8/11/2018 4:02:58 AM #

Awesome! Its in fact amazing paragraph, I have got much clear idea regarding from this piece of https://yong79.com/

Reply

Vanetta Tappan
Vanetta Tappan United States
8/11/2018 4:43:55 AM #

I got what you mean,saved to fav, very decent site. https://newone2017.com/

Reply

Marina Polin
Marina Polin United States
8/11/2018 8:54:20 AM #

I have been checking out many of your stories and i can state pretty https://miso7700.com/

Reply

Malcom Huling
Malcom Huling United States
8/13/2018 6:44:30 PM #

of writing i am as well delighted to share my know-how here with colleagues. https://bzp65.com/

Reply

Elba Casiano
Elba Casiano United States
8/14/2018 9:21:53 AM #

I got what you mean,saved to fav, very decent site. https://bzp65.com/

Reply

Orval Lannom
Orval Lannom United States
8/14/2018 7:49:47 PM #

sound like you know what you?re talking about! Thanks https://bzp65.com/

Reply

Gale
Gale United States
8/16/2018 8:27:59 AM #

Muito Legal adorei!!!

Reply

Tess
Tess United States
8/16/2018 8:28:02 AM #

Muito bom Parabéns!!!

Reply

Romaine Bolon
Romaine Bolon United States
8/17/2018 8:57:24 AM #

Hello. impressive job. I did not anticipate this. https://php665.com/

Reply

Mildred Hoskey
Mildred Hoskey United States
8/17/2018 5:20:16 PM #

This is a impressive story. Thanks! https://bzp65.com/

Reply

Tomasa Langenheim
Tomasa Langenheim United States
8/20/2018 1:51:35 AM #

good stuff. I will make sure to bookmark your blog. https://php665.com/

Reply

Dorian Raeside
Dorian Raeside United States
8/20/2018 5:48:29 AM #

This is a impressive story. Thanks! https://bzp65.com/

Reply

Rosette Nicholes
Rosette Nicholes United States
8/20/2018 10:51:54 AM #

of writing i am as well delighted to share my know-how here with colleagues. https://php665.com/

Reply

Rhett Lapoint
Rhett Lapoint United States
8/29/2018 9:35:39 AM #

sound like you know what you?re talking about! Thanks https://newone2017.com/

Reply

Lucile Sulla
Lucile Sulla United States
8/29/2018 3:53:05 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Frederick Wentzell
Frederick Wentzell United States
8/30/2018 12:50:41 PM #

I have been checking out many of your stories and i can state pretty https://newone2017.com/

Reply

Rusty Jeck
Rusty Jeck United States
8/31/2018 6:50:34 AM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Orval Lannom
Orval Lannom United States
9/1/2018 11:45:15 AM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Myriam Zipperer
Myriam Zipperer United States
9/1/2018 11:45:24 AM #

I like the helpful info you provide in your articles. I will bookmark your weblog and check again here regularly. https://newone2017.com/

Reply

Milagro Fernadez
Milagro Fernadez United States
9/3/2018 6:00:25 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Thu Wibbens
Thu Wibbens United States
9/4/2018 4:42:29 PM #

I’m quite certain I’ll learn lots of new stuff right https://newone2017.com/

Reply

Jacinto Gillmore
Jacinto Gillmore United States
9/5/2018 5:39:13 AM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Bryon Turvey
Bryon Turvey United States
9/6/2018 12:47:16 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Merrie Lavallee
Merrie Lavallee United States
9/6/2018 12:56:40 PM #

I got what you mean,saved to fav, very decent site. https://newone2017.com/

Reply

Ivan Jauregui
Ivan Jauregui United States
9/8/2018 5:00:34 PM #

Don’t wear seat belts lest you drown in your own urine? https://newone2017.com/

Reply

Cruz Sifford
Cruz Sifford United States
9/10/2018 11:54:42 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Mohammed Kalley
Mohammed Kalley United States
9/10/2018 5:14:41 PM #

here! Good luck for the next! https://newone2017.com/

Reply

Merlin Dentler
Merlin Dentler United States
9/11/2018 1:42:32 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Chantelle Weidower
Chantelle Weidower United States
9/12/2018 11:05:58 AM #

Awesome! Its in fact amazing paragraph, I have got much clear idea regarding from this piece of https://newone2017.com/

Reply

Tim Sowards
Tim Sowards United States
9/13/2018 9:27:29 PM #

I got what you mean,saved to fav, very decent site. https://newone2017.com/

Reply

Rosette Nicholes
Rosette Nicholes United States
9/14/2018 10:38:57 AM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Erline Thoburn
Erline Thoburn United States
9/15/2018 1:51:56 PM #

With thanks! Valuable information!

Reply

Theodore Leggio
Theodore Leggio United States
9/15/2018 7:46:26 PM #

It?s hard to come by knowledgeable people on this subject, however, you https://newone2017.com/

Reply

Sarah Macugay
Sarah Macugay United States
9/17/2018 7:25:28 AM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Michel Twardy
Michel Twardy United States
9/17/2018 6:25:05 PM #

of writing i am as well delighted to share my know-how here with colleagues. https://newone2017.com/

Reply

Deanne Evenstad
Deanne Evenstad United States
9/20/2018 4:03:57 AM #

Don’t wear seat belts lest you drown in you own urine? https://newone2017.com/

Reply

Derrick Macchio
Derrick Macchio United States
9/21/2018 6:18:37 AM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Mellie Mayweather
Mellie Mayweather United States
9/22/2018 1:25:24 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Leroy Rykaczewski
Leroy Rykaczewski United States
9/24/2018 8:56:00 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Cristine Menefee
Cristine Menefee United States
9/24/2018 8:56:02 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Starla Vanderstappen
Starla Vanderstappen United States
9/24/2018 9:02:16 PM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Cristopher Bailly
Cristopher Bailly United States
9/24/2018 9:33:01 PM #

With thanks! Valuable information!

Reply

Rosalva Prindall
Rosalva Prindall United States
9/26/2018 4:58:03 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Paulita Morgano
Paulita Morgano United States
9/26/2018 4:58:05 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Jenee Slaymaker
Jenee Slaymaker United States
9/26/2018 4:59:31 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Mitsue Wisler
Mitsue Wisler United States
9/26/2018 5:57:31 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Kip Lappin
Kip Lappin United States
9/28/2018 7:36:09 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Arianna Kanode
Arianna Kanode United States
9/30/2018 5:23:56 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Pamula Pizzini
Pamula Pizzini United States
9/30/2018 6:56:48 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Pat Knipp
Pat Knipp United States
10/2/2018 2:03:16 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Latashia Mushtaq
Latashia Mushtaq United States
10/2/2018 2:03:17 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Salina Ferguson
Salina Ferguson United States
10/2/2018 3:34:33 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Palmer Mcmulen
Palmer Mcmulen United States
10/3/2018 7:47:09 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Dana Vanlaar
Dana Vanlaar United States
10/3/2018 7:47:19 PM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Emiko Issac
Emiko Issac United States
10/3/2018 9:14:51 PM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Winston Vrooman
Winston Vrooman United States
10/4/2018 12:17:27 AM #

With thanks! Valuable information!

Reply

Shalanda Coutant
Shalanda Coutant United States
10/5/2018 6:47:12 PM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Annette Whiton
Annette Whiton United States
10/5/2018 6:47:14 PM #

With thanks! Valuable information!

Reply

Myriam Zipperer
Myriam Zipperer United States
10/5/2018 8:38:22 PM #

With thanks! Valuable information!

Reply

Tre Wynn
Tre Wynn United States
10/8/2018 4:43:12 PM #

What is the best way to start a Blog for profit?

Reply

Remona Mcroyal
Remona Mcroyal United States
10/8/2018 11:12:08 PM #

Pretty section of content. I just stumbled upon your website and in accession capital to assert that I acquire actually enjoyed account your blog posts. Anyway I will be subscribing to your feeds and even I achievement you access consistently rapidly.

Reply

Margy Fanti
Margy Fanti United States
10/9/2018 5:56:15 AM #

I think this is among the most vital info for me. And i am glad reading your article. But wanna remark on some general things, The site style is great, the articles is really great : D. Good job, cheers

Reply

啱用
啱用 United States
10/9/2018 1:15:06 PM #

迅速而溫和地卸除眼部濃妝的卸妝液。

Reply

Kirby Stetzel
Kirby Stetzel United States
10/9/2018 8:12:53 PM #

With thanks! Valuable information!

Reply

Michale Sporich
Michale Sporich United States
10/9/2018 8:12:53 PM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Gale Vittetoe
Gale Vittetoe United States
10/9/2018 8:12:55 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Deandrea Mccolgan
Deandrea Mccolgan United States
10/9/2018 8:30:08 PM #

Somebody necessarily help to make seriously posts I might state. That is the first time I frequented your web page and so far? I surprised with the research you made to make this particular submit amazing. Excellent job!

Reply

William Hillsman
William Hillsman United States
10/9/2018 9:30:23 PM #

Would you be eager about exchanging hyperlinks?

Reply

Sharda Timme
Sharda Timme United States
10/9/2018 10:42:57 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

Randell Verzi
Randell Verzi United States
10/10/2018 10:29:27 AM #

Throughout the grand pattern of things you actually receive  a B+ just for effort and hard work. Where you lost me personally was on the particulars. As it is said, details make or break the argument.. And it could not be more correct at this point. Having said that, allow me tell you just what exactly did do the job. The writing is certainly really persuasive and that is possibly why I am making the effort to comment. I do not make it a regular habit of doing that. 2nd, even though I can certainly see a leaps in reasoning you make, I am not really sure of just how you appear to unite the points which inturn produce your conclusion. For right now I shall yield to your issue however trust in the foreseeable future you actually connect your dots much better.

Reply

Janice Czapla
Janice Czapla United States
10/11/2018 9:19:27 AM #

You are a very bright person!

Reply

Maragret Went
Maragret Went United States
10/11/2018 1:51:35 PM #

Hey there! I know this is kinda off topic but I was wondering if you knew where I could find a captcha plugin for my comment form? I'm using the same blog platform as yours and I'm having problems finding one? Thanks a lot!

Reply

Shelba Herzfeld
Shelba Herzfeld United States
10/11/2018 6:19:10 PM #

My brother suggested I might like this blog. He was entirely right. This post actually made my day. You can not imagine simply how much time I had spent for this info! Thanks!

Reply

當蛋白線埋入皮膚後,皮下組織會將蛋白線視為異物,啟動異物反應,因此刺激膠原蛋白生長,且可促進新陳代謝,更新老化肌膚,所以客戶在術後也會發覺膚質變得較透亮白皙。膠原蛋白提拉線像一個“磁力線”一樣,將埋入處附近的肌肉和脂肪固定在原處,不會往下墜,其後會吸引皮下組織往蛋白線集中部位移動,就會逐漸產生提拉的緊實效果。也被用於填充美容的微整形,蛋白線材就好比蓋房子的鋼骨支架,先埋入皮膚當作基底結構,然後再注入好比水泥的玻尿酸或自體脂肪,因為有吸附力不易擴散,就可穩定固定住填充物,讓立體支撐力效果更好。

Reply

醫學美容 曬腿 cosmetic.wiki
醫學美容 曬腿 cosmetic.wiki United States
10/14/2018 2:54:47 AM #

The Body Shop 美體小舖 【男仕】JAVARI身體頭髮清潔露 Javari Hair &amp; Body Wash的商品介紹   The Body Shop 美體小舖,男仕,JAVARI身體頭髮清潔露 Javari Hair &amp; Body Wash       

Reply

Tamesha Mcnurlen
Tamesha Mcnurlen United States
10/14/2018 3:58:26 PM #

With thanks! Valuable information!

Reply

Pat Dufort
Pat Dufort United States
10/14/2018 3:58:28 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Chad Burnison
Chad Burnison United States
10/14/2018 3:58:28 PM #

With thanks! Valuable information!

Reply

Lance Heinzle
Lance Heinzle United States
10/14/2018 6:46:13 PM #

Black on black in the Charger I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

醫學美容 清瀅 cosmetic.wiki
醫學美容 清瀅 cosmetic.wiki United States
10/16/2018 8:44:47 AM #

M.A.C 【專業妝前保養系列】妝前精油棒棒 PREP+PRIME ESSENTIAL OILS STICK的商品介紹   M.A.C,專業妝前保養系列,妝前精油棒棒 PREP+PRIME ESSENTIAL OILS STICK       

Reply

Kindra Tamburri
Kindra Tamburri United States
10/17/2018 9:23:09 AM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Katharine Loveman
Katharine Loveman United States
10/17/2018 11:56:43 AM #

Don’t wear seat belts lest you drown in you own urine?

Reply

Richard Mcinnes
Richard Mcinnes United States
10/17/2018 3:02:30 PM #

Black on black in the Charg I'm creepin' Rub me the right way, you might get a genie B.o.B, black Houdini

Reply

Millard Archbell
Millard Archbell United States
10/17/2018 7:24:00 PM #

Don’t wear seat belts lest you drown in your own urine?

Reply

醫學美容 眼膜 cosmetic.wiki
醫學美容 眼膜 cosmetic.wiki United States
10/20/2018 2:57:30 AM #

咖啡樹 - 綠咖啡豆是超級抗氧化物 - CLARINS  Coffee Bush: 非洲 - 咖啡樹 nom --> 第站: 剛果 綠咖啡豆是超級抗氧化物 名稱: 咖啡樹 學名: Coffea robusta 地點: 剛果 類別: 灌木 使用部位: 豆 --> 神奇的故事! 咖啡樹是一種遍佈熱帶地區的灌木,果實一旦成熟,裡頭包含兩顆種子,即咖啡豆。咖啡樹的傳奇故事可追溯至中世紀。一位葉門牧羊人發現羊隻異常有活力,並察覺到羊群在吃一種神秘灌木的種子。牧羊人感到很好奇,將種子沖泡,製成散發細膩香氣的提神飲品,這就是現今舉世聞名的咖啡。 美容功效 促進肌膚活絡有效抗氧化 綠咖啡豆萃取具有活肌醒膚和抗氧化的功效。 妳知道嗎? 陽光下的萃取過程...      

Reply

Add comment

biuquote
  • Comment
  • Preview
Loading

Rel=Me

Month List

RecentComments

Comment RSS