overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
white-space: nowrap;
width: 100%;
Displaying 43 entries. Order by "random". | ||||
URL | Quantity Today | New Today | New in Past 7 Days | Last Update |
---|---|---|---|---|
proxy.asechka.ru | 207 | 0 | 0 | 2006-10-09 |
bestproxy.info | 2635 | 208 | 610 | 2008-07-03 |
freshproxylist.org | 90 | 45 | 365 | 2008-07-03 |
findproxy.org | 382 | 0 | 0 | 2007-11-21 |
freeproxies.biz | 476 | 0 | 0 | 2007-02-20 |
freeproxylist.cn | 116 | 22 | 380 | 2008-07-03 |
proxy-list.net | 8973 | 102 | 3060 | 2008-07-03 |
proxy-server.info | 7 | 6 | 53 | 2008-07-03 |
proxyleech.com | 181 | 0 | 0 | 2008-05-13 |
cavency.com | 212 | 0 | 0 | 2007-09-24 |
hidemyass.com | 88 | 0 | 0 | 2007-04-09 |
notrace.it | 614 | 100 | 331 | 2008-07-03 |
freeproxies.us | 3834 | 0 | 0 | 2008-06-18 |
freeproxylists.com | 2820 | 458 | 2418 | 2008-07-03 |
checkedproxylists.com | 897 | 439 | 3132 | 2008-07-03 |
proxylists.us | 2294 | 0 | 0 | 2007-04-22 |
proxy.antipalivo.ru | 62 | 42 | 240 | 2008-07-03 |
echolink.org | 104 | 9 | 81 | 2008-07-03 |
freeproxy.ch | 41 | 0 | 0 | 2007-10-30 |
proxy.mazafaka.ru | 3931 | 0 | 0 | 2008-06-23 |
showlist.info | 100 | 59 | 357 | 2008-07-03 |
digitalcybersoft.com | 88 | 19 | 104 | 2008-07-03 |
haozs.net | 90 | 67 | 349 | 2008-07-03 |
proxy-list.biz | 101 | 0 | 0 | 2007-12-03 |
ddday.com | 910 | 734 | 1172 | 2009-04-25 |
snakeoillabs.com | 178 | 24 | 265 | 2008-07-03 |
proxy.6te.net | 1136 | 0 | 0 | 2007-09-27 |
cybersyndrome.net | 58 | 11 | 188 | 2008-07-03 |
proxysecurity.com | 3236 | 0 | 0 | 2008-01-10 |
proxycn.net | 147 | 0 | 0 | 2007-12-30 |
proxylists.net | 189 | 31 | 252 | 2008-07-03 |
proxylist.blogspot.com | 886 | 0 | 0 | 2007-07-06 |
en.proxy.net.pl | 7 | 0 | 0 | 2007-05-04 |
proxy.top-site-list.com | 641 | 0 | 0 | 2008-06-23 |
bismark.extracon.it | 100 | 57 | 483 | 2008-07-03 |
proxyhunter.net | 118 | 22 | 282 | 2008-07-03 |
theone.ru | 49 | 0 | 0 | 2007-02-20 |
theproxyconnection.com | 231 | 0 | 0 | 2007-05-03 |
proxys4all.com | 202 | 0 | 0 | 2006-12-07 |
steganos.com | 42 | 0 | 0 | 2008-02-06 |
onlinechecker.freeproxy.ru | 17 | 17 | 113 | 2008-07-03 |
freeproxy.ru | 1872 | 0 | 0 | 2007-02-20 |
dcsproxy.com | 1210 | 148 | 1969 | 2008-07-03 |
Pardus 2009, providing a fast, high-quality and brand new desktop experience, is announced.
gt;Pardus 2009, the latest version of the Pardus Project, a GNU/Linux being actively developed in TÜBİTAK UEKAE (National Research Institute of Electronics and Cryptology) and easy to install and use no matter the user's experience level, is made available to users all around the globe. Any and every application a desktop user might need is included in the Install CD of Pardus 2009. Pardus 2009 aims for those users that have at least a basic knowledge and understanding of using computers and that use a personal computer for daily needs.
This latest version of the Pardus Project, Pardus 2009, provides a faster, high-quality and brand new desktop experience. With the enhancements and improvements in YALI and PiSi, Pardus 2009 now has an installation procedure almost two times faster than what it used to be, providing an astonishing installation speed of 15 minutes on an average computer. YALI now also provides advanced rescueing and troubleshooting options like reinstallation of the bootloader and downgrading packages by "undo"ing upgrades.
In Pardus 2009, with the help of the developed cache mechanism, Package Manager and PiSi now work much faster. The improved packaging mechanism of PiSi allows an average of up to 20 percent less disk usage for packages. The delta package system being on by default, Pardus 2009 not only uses less network bandwidth, but also operates much faster when it comes to package installation and update operations. Also improved is the component system, now providing an even easier means of finding tools, libraries, drivers or applications.
Booting of systems using Pardus, with the updates in YALI, improvements in the boot process, and new features added to PiSi and COMAR, have become much faster. Also notable is the development of infrastructure for a better support to remote filesystems.
Pardus 2009 also includes a Network Plasma Widget that allows quickly changing network profiles and a Service Plasma Widget that allows managing and seeing the status of services easily, improving system management even further. Worth noting is that almost all Pardus management tools have been re-written and made compatible with new KDE4 technologies.
The latest and greatest stable KDE version, KDE4, is installed by default with Pardus 2009. Furthermore, the latest versions of all KDE software compatible with the newest KDE version is included in Pardus' repositories. Plasmoid technology that allows each and every component being embedded right onto the desktop, Strigi search technology that integrates in an excellent manner with the desktop, integrated visual effects, remote management, and file manager Dolphin, itself including many improvements, are just a few of the innovative changes users should expect with the installation of Pardus 2009.
A new generation filesystem, Ext4 has become the default filesystem of Pardus 2009. Compared to Ext3, its predecessor, Ext4 is more capable in terms of filesystem, has more restrictive abilities, and runs much faster. The newest Pardus tool, System Manager allows changing system-wide settings like keymap, system language and timezone much more easily, and on-the-fly.
Pardus, besides its technological advancements, includes many updates:
Hello All,
This might be a long one so bear with me here this might bore you :).
I have have had the need to be able to add dynamic nodes to my sitemap, I am using a sitemap xml file. My first solution, was to create a custom sitemap provider, which would parse the XML and if it detected the node I had to insert my dynamic nodes into, it would do this and then continue.
Fine I thought but not good enough. I wanted a generic solution that could be reused and that would be easy to use. I came up with the idea of extending the sitemap XML file to contain some new nodes. Then create a custom parser that would make use of this. The idea in the end was to add two new elements to the sitemap, the elements being <dynamicNode> and <dynamicNodes>, the idea was that they would call a static method on a class that would either return 1 node or a collection. These would then be injected into the sitemap when it is created.
The beauty here was that you could add dynamic nodes to our sitemap, one other side effect was that you could now nest dynamic nodes in static nodes, and also nest static nodes in either a dynamic node, or a dynamic nodes collection. If you look at the sample project supplied you will see this works quite well. One thing to note is that any static nodes added to either a dynamic node or dynamic nodes collection. It will be added at the end. Which I think is expected behaviour, well for me anyway.
- The new sitemap file -
Here is an example of what the sitemap file will now look like. Say we have 3 static nodes, and within the static products node, we need to get products from our database, and add them as children. You could create an easy site map file like so:
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="Default.aspx" title="Home">
<siteMapNode url="About.aspx" title="About Us" />
<siteMapNode url="FAQ.aspx" title="FAQ" />
<siteMapNode url="Product.aspx" title="Products">
<dynamicNodes type="Sample.MenuHelper, Sample" method="GetProducts" />
</siteMapNode>
</siteMapNode>
</siteMap>
Here you can see that we have added some static nodes, and within our products node, we have added a dynamicnodes, node. You can see that this calls the static method GetProducts on the MenuHelper class. This method will return a collection of nodes which will be inserted into our static nodes children. And dynamic insertion of child nodes is now possible :)... You are also able to have a dynamic node, which is a single root node, plus you can nest until your heart is content, which you will see in the sample.
-- MenuHelper --
In this class we would have a static GetProducts method, this would return a list of XX objects. These objects are helpers, they allow us to create a collection of sitemap nodes, so that they can be used in the provider to build up the sitemap. The node has the default properties (key,url,title,description) and you can add custom attributes too. The method would look like so, you could imagine this would use the database to get products and build up the list.
public static List<EnhancedXMLSiteMapProvider.EnhancedSiteMapNode> GetProducts() {
return new List<EnhancedXMLSiteMapProvider.EnhancedSiteMapNode>() {
new EnhancedXMLSiteMapProvider.EnhancedSiteMapNode() {
Key="Product1.aspx",
Url="Product1.aspx",
Title="Product 1"
}
};
}
-- Web.Config Configuration --
You need to configure the provider in the web.config. In the sample project this is done as so:
<siteMap defaultProvider="EnhancedXMLSiteMapProvider">
<providers>
<add name="EnhancedXMLSiteMapProvider" type="EnhancedXMLSiteMapProviderSample.EnhancedXMLSiteMapProvider, EnhancedXMLSiteMapProviderSample"
siteMapFile="~/Web.sitemap"
cacheDuration="15"/>
</providers>
</siteMap>
I am basically setting it as the default provider, I am pointing it to the xml sitemap file, and setting the cache duration (this defaults to 5 if not set). Once this is done you are ready to run. One thing to note is that the provider also puts a dependancy on the xml file, so that once changed it invalidates the sitemap. And also after the time duration.
One issue is that any dynamic data does not invalidate the cache, you are able to set a cacheKey on the provider which is used for caching. Then you can use code to remove the item. So you backend could remove the cache item when it needs the menu to change.
-- The Provider --
I am not going to go into full detail on the provider and show all the code, it is all included in the sample project so just have a look. Basically the main workings, just parses the XML file, depending on the node type will do different things. If it encounters a dynamicNode or dynamicNodes element it will grab the type and method attributes, and use reflection to call these methods and continue parsing the data.
I have tested this with many levels/combinations of nodes and I have not had any issues yet, mind you I know this needs neatening up and it is only the efforts of a days work. I will post updates as I go and any bug fixes to this. But at the moment I am happy with where it is.
-- Final Word --
The sample project is supplied below, have a play and let me know what you think. Also this is the first time I have ever used the site map provider, so if I have just reinvented the wheel please give me a gentle slap and let me know :).
I must confess, I haven’t been using SQL Server 2008 up until recently. The main reason was having a few customers that were still on 2005 so I didn’t really have to upgrade. Now with my new laptop, I forced myself to use only 2008 (where possible that is, and also for my personal work).
On a quiet evening like today, I was creating a sample database for a demo I’m working on using ADO.NET Data Services with Silverlight. I noticed I forgot to set the primary key on a table, so I went ahead and added it. However, on saving the table, I got a dialog from SQL Server, saying that the change I requested was being prevented.
Very weird, I thought to myself. I have been doing that for years with 2005, never had an error like this. I went searching for the option “Prevent saving changes” and turns out, it’s an option that can be set in the options of SQL Server 2008. To change it, go to Tools –> Options and in Designers –> Table and database designers, you can switch of the option.
reference : http://www.snowball.be/SQL+Server+2008+Prevent+Saving+Changes+Option.aspx
Steps
reference : http://tutorialninjas.net/2009/06/21/install-pirated-apps-on-iphone-itouch-30-via-cydia-ipa/
While a lot of people are awaiting the release of Pwnage tool from iPhone Dev Team, there are equally that many people who accidentally got upgraded to 2.0 leaving their precious iPhone locked and unusable.
If you are one of those, then follow this guide to restore your iPhone 2G from firmware 2.0 to 1.1.4 and completely unlock it. This is of course is the only way you can use your iPhone 2G until the Dev Team releases Pwnage tool 2.0.
Follow the instructions below carefully, and you should be able to achieve the stated goal pretty fast. Trust me, it ain’t that hard….
Warning : This tutorial/guide is for the iPhone 2G only which have been accidentally upgraded to 2.0 needing to restore back to 1.1.4 and unlock the phone. Do not use this guide on your iPhone 3G.
Also this guide is currently only for the Mac OS.. I will add a guide for Windows when it is available and ready.
Alright lets get started then…. Download the following items at the start, you will need them during the course of the tutorial.
Download all of them and keep them handy.. Lets get started then with the real deal.. Get ready to free your iPhone
Here’s how to get into the DFU Mode, hold the home button on the bottom and the power button until the screen turns off and then count to 2 and let go of the power button on the top of the iPhone , but keep pressing home button until iTunes asks you if you want to restore your iPhone.
Well that is it, wasn’t that long isn’t it. Try it out and at the moment it is the best solution until Dev Team gets around to releasing Pwnage tool 2.0 that will unlock Firmware 2.0 on the iPhone 2G.
Meanwhile enjoy your hacked phone!! Special thanks to aRT in the forums for writing this guide.
Please let us know in the comments, as to how it goes for you. This wouldn’t be possible without the work of many hackers from around the world whose sole aim is to free up the iPhone.
reference :http://dailyapps.net/2008/07/hack-attack-downgrade-iphone-2g-from-20-to-114-and-unlock-it/
The Matrix
Keanu Reeves, Carrie-Anne Moss, Gloria Foster, Marcus Chong, Matt Doran, Anthony Ray Parker,
The Matrix Reloaded
Ray Anthony, Andy Arness, Helmut Bakaitis, Don Battee, Daniel Bernhardt, Ian Bliss,
The Matrix Revolutions
Mary Alice, Helmut Bakaitis, Francine Bell, Rachel Blackman, Ian Bliss, Zeke Castelli,
Warning: Some of the above are binary-only and x86-Linux-only.
CREATE USER 'username'@'%' IDENTIFIED BY 'pass_word';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
service vsftpd START
service vsftpd ON
anakin-pardus / # mount --bind /var/www/ /home/anakin/www
Pinging a new Blogger Post, with a long list of Ping Services can be very easy for any blogger that publishes their new blog post with “Windows Live Writer”.
Pinging a Blogger blog post, is a quick way to notify search engines that you have just published new content on your blog. Sure the search engines will crawl your new blog post eventually on their own. Why wait for the search engines to decide when to visit your blog?
This is why pinging a blog is beneficial, by pinging our own blog, we give a boost to our new blog post, to allow them to be updated on search engines like Google, sooner rather than later.
We can use services like pingomatic.com to manually ping a list of servers, or for everyone that works with “Windows Live Writer”, we can enjoy the benefits of having our new blog post ping every single server in the list below automatically, each time we post a new Blogger post, here’s how.
<----- Start List ----->
http://blogsearch.google.com/ping/RPC2
http://rpc.technorati.com/rpc/ping
http://ping.feedburner.com/
http://1470.net/api/ping
http://api.feedster.com/ping
http://api.moreover.com/RPC2
http://api.moreover.com/ping
http://api.my.yahoo.com/RPC2
http://api.my.yahoo.com/rss/ping
http://bblog.com/ping.php
http://bitacoras.net/ping
http://blog.goo.ne.jp/XMLRPC
http://blogdb.jp/xmlrpc
http://blogmatcher.com/u.php
http://bulkfeeds.net/rpc
http://coreblog.org/ping/
http://mod-pubsub.org/kn_apps/blogchatt
http://www.lasermemory.com/lsrpc/
http://ping.amagle.com/
http://ping.bitacoras.com
http://ping.blo.gs/
http://ping.bloggers.jp/rpc/
http://ping.cocolog-nifty.com/xmlrpc
http://ping.blogmura.jp/rpc/
http://ping.exblog.jp/xmlrpc
http://ping.myblog.jp
http://ping.rootblog.com/rpc.php
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://ping.weblogs.se/
http://pingoat.com/goat/RPC2
http://rcs.datashed.net/RPC2/
http://rpc.blogbuzzmachine.com/RPC2
http://rpc.blogrolling.com/pinger/
http://rpc.icerocket.com:10080/
http://rpc.newsgator.com/
http://rpc.pingomatic.com
http://rpc.weblogs.com/RPC2
http://topicexchange.com/RPC2
http://trackback.bakeinu.jp/bakeping.php
http://www.a2b.cc/setloc/bp.a2b
http://www.bitacoles.net/ping.php
http://www.blogdigger.com/RPC2
http://www.blogoole.com/ping/
http://www.blogoon.net/ping/
http://www.blogpeople.net/servlet/weblogUpdates
http://www.blogroots.com/tb_populi.blog?id=1
http://www.blogshares.com/rpc.php
http://www.blogsnow.com/ping
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php
http://www.newsisfree.com/RPCCloud
http://www.newsisfree.com/xmlrpctest.php
http://www.popdex.com/addsite.php
http://www.snipsnap.org/RPC2
http://www.weblogues.com/RPC/
http://xmlrpc.blogg.de
http://xping.pubsub.com/ping/
<----- End List ----->
Technorati Tags: Blogger,Ping,Blog,Windows Live Writer
Labels: Blogger, Ping, Windows Live Writer
Posted by Switcher at Tuesday, June 09, 2009
Blogger & Feedburner are both great Google products. Did you know Feedburner images, posted on Blogger, will show up in Google Images, as a Feedburner .GIF image?
I actually found this out by searching for one of my blog post Titles, to see what images are showing up on Google Images.
This will only work If you already have a Feedburner account setup, & have the Feedurner image posted on your Blogger site.
So If you already have the Feedburner Feed on your blog, try this:
Something else that is cool, the above image will always be updated with the newest content from my blog, since it’s an animated .GIF, while it still shows on Google Images.
What’s funny is, my search results show more links pointing to bloggertricks, than my own blog (lol).
This might not look like a big deal, having a single image on the net, the way I see it, every little bit helps a future visitor find my blog. :)
Switcher
Technorati Tags: Blogger,Feedburner,Image
Labels: Blogger, Feedburner, Google
Posted by Switcher at Saturday, May 30, 2009
I was doing some research on my blog post Blogger Ad Code Converter, & found I didn’t like the way the Google Search results showed only the word “SoSwitcher”. What I really wanted was for each of my blog post Title to not only be on the Google Search, but for it to be first words of the Title, from left to right.
So, I searched Google & found a nice code snippet that would work, I added the code to my template & remembered reading a blog post a while back that someone said your blog page would load a little bit faster (maybe something like 1000th of a second faster, HA!), any way it made sense to me, instead of using the Blogger tag (example: <data:blog.title/>) for your Blogger Template to call up your blogs URL, to just hard code the URL (example: soswitcher.blogspot.com), since I’m already editing the Blogger template.
You don’t have to stop at just your Page Title either, If you notice some of the big names on the web, like Amazon, or Ebay, they both add keywords to their websites Title, & you’ll also notice that both Amazon & Ebay, also have those same keywords in their Google Search results.
Below is the Blogger Code that I added to my Template:
<b:if cond='data:blog.pageType == "index"'> <title>SoSwitcher</title> <b:else/> <title><data:blog.pageName/> SoSwitcher</title> </b:if>
I decided not to put the URL in my Page Title, but instead add the single word “SoSwitcher”.
So the code in the textbox above will look like this:
I might be adding some keywords in the mix, sometime soon .
Switcher
Technorati Tags: Blogger,Title,Tag,Page
Labels: Blogger
Posted by Switcher at Thursday, May 28, 2009
Have you ever wanted to add Google Adsense code inside your Blogger Template, & found it’s not a simple copy & paste job?
Well, now your in luck!
I built a Google Widget that will allow you to convert Google Adsense code into Blogger xhtml code, & not only that, you can also add the Blogger Code Converter to your webpage or blog, since it’s a Google Widget.
The code converter is simple to use:
I’ve added the New Google Code Converter to my sidebar, on the lower right side. The Code Converter size can be adjusted, when you go to get the code from the Google button below.
Note:
It’s up to anyone that uses this widget to double check the Google Code Converter Widget code, for any mistakes, I’ve been working with this for a while, with no problems. Please let me know of any issues or suggestions you might have, with this widget, by adding comments below.
You can click on the Google button below to add this Widget to your own blog.
Gadgets powered by Google
Technorati Tags: Adsense,Google,Convert Code,Widget
Labels: Adsense, Blogger, Code
Posted by Switcher at Tuesday, May 26, 2009
If you have ever downloaded a Free Blogger template or Widget, you might find that it includes javascript files that link to the blog designers website, or file sharing site. It’s never a good idea as a long term blogger to leave any external links in your blog template that you don’t have control over. The reason you always need to control your templates links:
Bottom line is, control is everything, nobody likes a broken blog.
Below is an easy & Free way to host all your javascript files on your very own Free Google website:
1) Sign up for a Free Google Sites website
2) Create a new Google Sites webpage
3) Get the URL/link of the javascript that is hard coded into your New Blogger template (example: http://www.YourWebsite/YourNewJavascriptFile.js )
4) Download the javascript file to your local PC
5) Open the javascript file in a text editor (Microsoft Notepad, etc…)
6) Save the javascript text file as a regular text file, so our example file in the above URL will look like this: (example: YourNewJavascriptFile.txt )
7) Upload the New Text file to your Google Sites website
8) Right click & Copy on your New uploaded .txt file on your Google webpage, & get the URL/link (example: http://sites.google.com/site/YourGoogleWebsite/Webpage1/YourNewJavascriptFile.txt )
9) Right click Paste the new URL/Link into your Blogger template
You have now hosted your javascript file on your own Free website, not to mention Google is great about keeping their servers running at 99.99% of the time.
A word of advice, Google once had a Free website hosting a while back, Google has since shut down new members to the first Free website, so grab a free site while you can, you never know If they will stop new members from the second Free websites (Google Sites). Also the old members still have active Google websites, just no new members, get them while you can, you never know when you’ll need it to host files.
The right sidebar includes a working example of how I’m hosting a “Recent Post Thumbnails Widget for Blogger” javascript file on my own Google Site, to prevent any future broken links.
Labels: Blogger, Javascript
Posted by Switcher at Saturday, May 16, 2009
Over on the BloggerTricks Forums, John Cena asked If it was possible, & how to add a Blogger Widget Poll to a Blog Post. The short answer is yes, it is possible to add a Blogger (Widget based) Poll to a Blogger Post, you'll have to work with some basic HTML.
1) Create a "Blogger Widget Poll" inside your sidebar, just like you've done before. Make sure to give it an easy to find/remember Title.
2) After the Blogger Widget Poll, is added to your sidebar, visit your blogs HomePage in your Browser (I'm working with Internet Explorer as my Browser).
3) After you have your HomePage loaded into your Browser window, Go to the top Toolbar & View/Source (of your blogs Homepage) HTML.
4) In a text editor (Windows Notepad) etc... Find/Search for the Title to your new Polls Title.
5) Copy (Right Click/Copy) the HTML Code that looks similar to the code below:
6) Paste your new Polls HTML into your Blogger Post/Article.
7) After you get the Blogger Widget HTML, you can go ahead & delete the Blogger Widget Poll, from your Sidebar, we only needed that to get the HTML source code.
Note:
The actual Poll is inside an Iframe, I also added bit of HTML code to prevent the Poll from adding a scrollbar to the Poll, I didn’t like the way it looks witha scrollbar on the Poll inside a Blog Post, so this is just an option, to remove scrollbars, after the (height="275") add this code (scrolling="no").
Once you have the Polls HTML Code, you can change a few things to make it look better in your Blog Post, for example, Blogger sets the default width of a Blogger Poll to 100%, If you want to add a Poll to a Post/Article I think it would look better as a fixed number (example: width:275), the same goes for the Poll Height, Iframe border etc...
This is the first time I've tried this, deleting a Poll & still keep the HTML, so I want to thank John Cena for the idea.
Below is a working example of a Blogger Widget Poll, inserted in a Blogger Blog Post.
Switcher
reference : http://soswitcher.blogspot.com/
Allows you to search IMDb and then insert film details into your blog entry within Windows Live Writer
This plugin was made using the ImdbServices wrapper at http://www.codeplex.com/imdb
Feedback should be sent to wlm@scottisafool.co.uk or http://scottisafooldev.spaces.live.com/
NOTE: REQUIRES .NET 3.5!
refer :http://gallery.live.com/liveItemDetail.aspx?li=aa71d18d-e738-475d-85fa-198c64ea3987&bt=9
source code and example concept below :)
can use for test or quiz like A Quiz Application using Windows Form
Download Link
http://www.4shared.com/file/109371221/9cbbbe21/quiz.html