F.3. Running Additional Programs at Boot Time

The /etc/rc.d/rc.local script is executed by the init command at boot time or when changing runlevels. Adding commands to the bottom of this script is an easy way to perform necessary tasks like starting special services or initialize devices without writing complex initialization scripts in the /etc/rc.d/init.d/ directory and creating symbolic links.

The /etc/rc.serial script is used if serial ports must be setup at boot time. This script runs setserial commands to configure the system's serial ports. Refer to the setserial man page for more information.



출처 - http://docs.fedoraproject.org/en-US/Fedora/17/html/Installation_Guide/s1-boot-init-shutdown-run-boot.html






rc.local - 부팅시 자동실행 명령어 스크립트 수행

 

일반적으로 서버 부팅시마다 매번 자동실행되길 원하는 명령어는 /etc/rc.d/rc.local에 넣어주면 된다.

 

이 부분을 알아보기 전에 리눅스 부팅과정에 대한 약간의 이해를 주면 리눅스에서는 실행레벨에 따라 다르게 부팅할 수 있는데 실행레벨에 따라서 설정되어 있는 모든 프로세스들을 실행하게 된다. /etc/inittab파일에는 init가 현재의 실행레벨에서 실행되어야 할 내용들에 대한 설정이 되어 있다.

 

6개의 실행레벨중 기본레벨인 3번레벨의 실행내용들을 간단히 살펴보면, 즉 /etc/rc.d/rc3.d/ 디렉토리의 내용을 살펴보면 아래와 같다.

[root@inter-devel rc3.d]# ll

....

lrwxrwxrwx  1 root root 19  8월 28  2007 K68rpcidmapd -> ../init.d/rpcidmapd
lrwxrwxrwx  1 root root 17  8월 28  2007 K69rpcgssd -> ../init.d/rpcgssd
lrwxrwxrwx  1 root root 16  8월 28  2007 K72autofs -> ../init.d/autofs
lrwxrwxrwx  1 root root 16  8월 28  2007 K73ypbind -> ../init.d/ypbind
lrwxrwxrwx  1 root root 14  8월 28  2007 K74apmd -> ../init.d/apmd

....

lrwxrwxrwx  1 root root 17  6월 12  2007 S95anacron -> ../init.d/anacron
lrwxrwxrwx  1 root root 13  6월 12  2007 S95atd -> ../init.d/atd
lrwxrwxrwx  1 root root 19  6월 12  2007 S96readahead -> ../init.d/readahead
lrwxrwxrwx  1 root root 20  6월 12  2007 S97messagebus -> ../init.d/messagebus
lrwxrwxrwx  1 root root 19  6월 12  2007 S98haldaemon -> ../init.d/haldaemon
lrwxrwxrwx  1 root root 11  6월 13  2007 S99local -> ../rc.local
[root@inter-devel rc5.d]#

 

보 는 바와 같이 각 실행레벨마다 실행될 스크립트들은 모두 링크파일로 존재하며, 실행 스크립트들은 모두 /etc/rc.d/init.d/ 디렉토리에 존재하고 있다. 이 링크에 의해 각 실행단계별로 필요한 프로세스들을 죽이기도 하고 실행시키기도 한다.

 

K로 시작되는 스크립트파일들은 해당 스크립트를 종료하기 위한 것으로서 /etc/rc.d/init.d/디렉토리내에 존재하는 해당 스크립트를 stop인자와 함께 실행한다.

 

S로 사작되는 스크립트파일들은 해당 스크립트를 시작하기 위한 것으로서 /etc/rc.d/init.d/디렉토리내에 존재하는 해당 스크립트를 start인자와 함께 실행한다.

 

그리고 K와 S문자 다음에 있는 두자리의 숫자는 실행순서를 결정하기 위한 것이다.

 

여기서 주의깊게 봐야 할 것은 맨 마지막 스크립트파일이 S99local 이라는 것이다. 보는 봐와 같이 이 파일은 /etc/rc.d/rc.local로 링크되어 있으며 각 실행레벨에서 맨 마지막 단계에 꼭 한번 실행되는 파일이다. 일반적으로 아파치나 MYSQL 등을 컴파일하여 설치한 후에 부팅시마다 매번 자동실행되기 위하여 /etc/rc.d/rc.local 파일에 실행시킬 내용을 넣어두는 이유가 여기에 있다.

 

/etc/rc.d/rc.local 파일에 아파치와 톰캣을 재시작하기 위한 설정부분이다.

참고로 아파치와 톰캣을 재시작할때에는 먼저 톰캣을 시동하고 아파치를 나중에 시동한다.

 #!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

 

source /etc/profile
/usr/local/tomcat/bin/startup.sh
/usr/sbin/apachectl start

 

만약, 사용자들이 리눅스서버에 새로 설치한 툴이나 프로그램을 매번 부팅때마다 자동으로 실행되도록 하려면 이 파일의 맨 마지막에 원하는 실행 명령을 넣어두면 된다.



출처 - http://nuitstory.tistory.com/500






'System > Linux' 카테고리의 다른 글

linux - cron, crontab  (0) 2013.08.23
linux - watch and grep  (0) 2013.07.12
linux - remmina 소개(remote desktop for linux)  (0) 2013.06.15
linux - 공유 라이브러리 등록 및 출력  (0) 2013.06.10
linux - RPM(RPM Package Manager)  (0) 2013.06.07
Posted by linuxism
,


*Edit: I may have to use a list but the same principle applies.

I'm attempting to bind an array to a form using the @ModelAttribute annotation. A table is populated with the contents of the array (each element in the array corresponds to a row in the table). The array may be populated with data or may be empty when it's bound. The user can add rows to the table (which should add elements to the array).

My question is how can elements be added to the array if it's already defined before I pass it in? Will this automagically happen when the form is submitted?

<body>
    <h1>Members</h1>
        <form:form action="configure" modelAttribute="members" method="post" id="member-form">
            <table id="member-table" class="table">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th></th>
                    </tr>
                </thead>
                <tbody id="member-table-body">
                    <c:forEach items="${members}" var="member" varStatus="i" begin="0" >
                        <tr class="member">    
                            <td><form:input path="members[${i.index}].name" id="name${i.index}" /></td>
                            <td><a href="#" class="remove">Remove</a></td>
                        </tr>
                    </c:forEach>
                </tbody>
            </table>
            <input type="submit" value="Save" id="submit" />
            <a href="#" id="add">Add Member</a>
            <a href="?f=">Reset List</a>
        </form:form>   
</body>

__

$(document).ready(function(){
$('#add').click(function(e) {
    e.preventDefault();
    //Add a member

    //Get the number of rows that are in the table
    var memberTable = $('#member-table-body');
    var numRows = memberTable.children('tr').length

    //Add row to the table.
    // memberTable.innerHTML(

    return false;
});
$('.remove').on('click', function(e) {
                e.preventDefault();
                $(this).parent().parent().remove();
                return false;
});

});​

share|improve this question

You need to create a Model class wrapping the List and use this Model in your controller.

Something like:

package net.viralpatel.spring3.form;

import java.util.List;

public class ContactForm {

    private List<Contact> contacts;

    public List<Contact> getContacts() {
        return contacts;
    }

    public void setContacts(List<Contact> contacts) {
        this.contacts = contacts;
    }
}

And then use this in JSP as:

<c:forEach items="${contactForm.contacts}" var="contact" varStatus="status">
    <tr>
        <td align="center">${status.count}</td>
        <td><input name="contacts[${status.index}].firstname" value="${contact.firstname}"/></td>
        <td><input name="contacts[${status.index}].lastname" value="${contact.lastname}"/></td>
        <td><input name="contacts[${status.index}].email" value="${contact.email}"/></td>
        <td><input name="contacts[${status.index}].phone" value="${contact.phone}"/></td>
    </tr>
</c:forEach>

See this tutorial: Spring MVC: Multiple Row Form Submit using List of Beans

share|improve this answer
Viral..i saw the sample in your website...that seems to be dynamic editing and saving the existing records..but the user question is can we add new rows to the table that increase your list dynamically and when you submit the controller gets the newly added ones in your "contacts" list. – raddykrish Dec 14 '12 at 20:12



출처 - http://stackoverflow.com/questions/13869769/array-modelattribute-expansion-in-spring-mvc








Spring MVC: Multiple Row Form Submit Using List Of Beans

Recently I had a requirement where using Spring MVC we had to take inputs multiple rows of data from user. The form had many rows which user can edit and submit. Spring MVC provides very simple yet elegant way of collecting data from multiple rows from HTML form and store them in List of Beans in Java.

Lets look at the requirement first. We have a screen where data for multiple Contacts is displayed. The Contact data is displayed in an HTML table. Each row in the table represents a single contact. Contact details consist of attributes such as Firstname, Lastname, Email and Phone number.

Related: Spring 3 MVC Tutorial Series (Must Read)

The Add Contact form would look like following:
spring-mvc-multi-row-form

Lets see the code behind this example.

Tools and Technologies used:

  1. Java 5 or above
  2. Eclipse 3.3 or above
  3. Spring MVC 3.0

Step 1: Create Project Structure

Open Eclipse and create a Dynamic Web Project.
eclipse-dynamic-web-project

Enter project name as SpringMVC_Multi_Row and press Finish.

Step 2: Copy Required JAR files

Once the Dynamic Web Project is created in Eclipse, copy the required JAR files under WEB-INF/libfolder. Following are the list of JAR files:
spring-mvc-multi-row-jar-files


Step 3: Adding Spring MVC support

Once the basic project setup is done, we will add Spring 3 MVC support. For that first modify default web.xml and add springs DispatcherServlet.

File: /WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>Spring3MVC-Multi-Row</display-name>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
</web-app>

Related: Tutorial: Learn Spring MVC Lifecycle

Now add spring-servlet.xml file under WEB-INF folder.

File: /WebContent/WEB-INF/spring-servlet.xml

<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
         
    <context:annotation-config />
    <context:component-scan base-package="net.viralpatel.spring3.controller" />  
 
    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

Note that in above spring-servlet file, line 10, 11 defines context:annotation-config and component-scan tags. These tags let Spring MVC knows that the spring mvc annotations are used to map controllers and also the path from where the controller files needs to be loaded. All the files below packagenet.viralpatel.spring3.controller will be picked up and loaded by spring mvc.

Step 4: Add Spring Controller and Form classes

File: /src/net/viralpatel/spring3/form/Contact.java

package net.viralpatel.spring3.form;
 
public class Contact {
    private String firstname;
    private String lastname;
    private String email;
    private String phone;
 
    public Contact() {
    }
 
    public Contact(String firstname, String lastname, String email, String phone) {
        this.firstname = firstname;
        this.lastname = lastname;
        this.email = email;
        this.phone = phone;
    }
     
    // Getter and Setter methods
}

File: /src/net/viralpatel/spring3/form/ContactForm.java

package net.viralpatel.spring3.form;
 
import java.util.List;
 
public class ContactForm {
 
    private List<Contact> contacts;
 
    public List<Contact> getContacts() {
        return contacts;
    }
 
    public void setContacts(List<Contact> contacts) {
        this.contacts = contacts;
    }
}

Note line 7 in above code how we have defined a List of bean Contact which will hold the multi-row data for each Contact.

File: /src/net/viralpatel/spring3/controller/ContactController.java

package net.viralpatel.spring3.controller;
 
import java.util.ArrayList;
import java.util.List;
 
import net.viralpatel.spring3.form.Contact;
import net.viralpatel.spring3.form.ContactForm;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class ContactController {
 
     
    private static List<Contact> contacts = new ArrayList<Contact>();
 
    static {
        contacts.add(new Contact("Barack", "Obama", "barack.o@whitehouse.com", "147-852-965"));
        contacts.add(new Contact("George", "Bush", "george.b@whitehouse.com", "785-985-652"));
        contacts.add(new Contact("Bill", "Clinton", "bill.c@whitehouse.com", "236-587-412"));
        contacts.add(new Contact("Ronald", "Reagan", "ronald.r@whitehouse.com", "369-852-452"));
    }
     
    @RequestMapping(value = "/get", method = RequestMethod.GET)
    public ModelAndView get() {
         
        ContactForm contactForm = new ContactForm();
        contactForm.setContacts(contacts);
         
        return new ModelAndView("add_contact" , "contactForm", contactForm);
    }
     
    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public ModelAndView save(@ModelAttribute("contactForm") ContactForm contactForm) {
        System.out.println(contactForm);
        System.out.println(contactForm.getContacts());
        List<Contact> contacts = contactForm.getContacts();
         
        if(null != contacts && contacts.size() > 0) {
            ContactController.contacts = contacts;
            for (Contact contact : contacts) {
                System.out.printf("%s \t %s \n", contact.getFirstname(), contact.getLastname());
            }
        }
         
        return new ModelAndView("show_contact", "contactForm", contactForm);
    }
}

In above ContactController class, we have defile two methods: get() and save().

get() method: This method is used to display Contact form with pre-populated values. Note we added a list of contacts (Contacts are initialize in static block) in ContactForm bean object and set this inside aModelAndView object. The add_contact.jsp is displayed which in turns display all contacts in tabular form to edit.

save() method: This method is used to fetch contact data from the form submitted and save it in the static array. Also it renders show_contact.jsp file to display contacts in tabular form.

Step 5: Add JSP View files

Add following files under WebContent/WEB-INF/jsp/ directory.

File: /WebContent/WEB-INF/jsp/add_contact.jsp

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Spring 3 MVC Multipe Row Submit - viralpatel.net</title>
</head>
<body>
 
<h2>Spring MVC Multiple Row Form Submit example</h2>
<form:form method="post" action="save.html" modelAttribute="contactForm">
    <table>
    <tr>
        <th>No.</th>
        <th>Name</th>
        <th>Lastname</th>
        <th>Email</th>
        <th>Phone</th>
    </tr>
    <c:forEach items="${contactForm.contacts}" var="contact" varStatus="status">
        <tr>
            <td align="center">${status.count}</td>
            <td><input name="contacts[${status.index}].firstname" value="${contact.firstname}"/></td>
            <td><input name="contacts[${status.index}].lastname" value="${contact.lastname}"/></td>
            <td><input name="contacts[${status.index}].email" value="${contact.email}"/></td>
            <td><input name="contacts[${status.index}].phone" value="${contact.phone}"/></td>
        </tr>
    </c:forEach>
</table
<br/>
<input type="submit" value="Save" />
     
</form:form>
</body>
</html>

In above JSP file, we display contact details in a table. Also each attribute is displayed in a textbox. Note that modelAttribute=”contactForm” is defined in <form:form /> tag. This tag defines the modelAttribute name for Spring mapping. On form submission, Spring will parse the values from request and fill the ContactForm bean and pass it to the controller.

Also note how we defined textboxes name. It is in form contacts[i].a. Thus Spring knows that we want to display the List item with index i and its attribute a.

contacts[${status.index}].firstname will generate each rows as follows:

contacts[0].firstname // mapped to first item in contacts list
contacts[1].firstname // mapped to second item in contacts list
contacts[2].firstname // mapped to third item in contacts list

Spring 3 MVC and path attribute and square bracket

One thing here is worth noting that we haven’t used Spring’s 
tag to render textboxes. This is because Spring MVC 3 has a unique way of handling path attribute for 
tag. If we define the textbox as follows:

<form:input path="contacts[${status.index}].firstname" />

Then instead of converting it to following HTML code:

<input name="contacts[0].firstname" />
<input name="contacts[1].firstname" />
<input name="contacts[2].firstname" />

It converts it into following:

<input name="contacts0.firstname" />
<input name="contacts1.firstname" />
<input name="contacts2.firstname" />

Note how it removed square brackets [ ] from name attribute. In previous versions of Spring (before 2.5) the square bracket were allowed in name attribute.

It seems w3c has later changed the HTML specification and removed [ ] from html input name.
Read the specification http://www.w3.org/TR/html4/types.html#type-name. It clearly says that:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens (“-”), underscores (“_”), colons (“:”), and periods (“.”).

Thus, square brackets aren’t allowed in name attribute! And thus Spring 3 onwards this was implemented.

So far I haven’t got any workaround to use springs <form:input /> tag instead of plain html <input /> to render and fetch data from multiple rows.

File: /WebContent/WEB-INF/jsp/show_contact.jsp

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Spring 3 MVC Multipe Row Submit - viralpatel.net</title>
</head>
<body>
<h2>Show Contacts</h2>
<table width="50%">
    <tr>
        <th>Name</th>
        <th>Lastname</th>
        <th>Email</th>
        <th>Phone</th>
    </tr>
    <c:forEach items="${contactForm.contacts}" var="contact" varStatus="status">
        <tr>
            <td>${contact.firstname}</td>
            <td>${contact.lastname}</td>
            <td>${contact.email}</td>
            <td>${contact.phone}</td>
        </tr>
    </c:forEach>
</table
<br/>
<input type="button" value="Back" onclick="javascript:history.back()"/>
</body>
</html>

File: /WebContent/index.jsp

<jsp:forward page="get.html"></jsp:forward>


Final Project Structure

Once we have added all relevant source files and jar files, the project structure should look like following:
spring-multi-row-project-structure


Step 6: Execute it

Execute the web application Right click on project > Run As > Run on Server.

Add Contact page

Show Contact page
spring-multiple-row-list-show-page

Download Source Code

Spring-MVC-Multiple-Row-List-example.zip (2.9 MB)



출처 - http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/







Posted by linuxism
,

http - compression

Web/HTTP 2013. 6. 27. 13:02


HTTP compression is a capability that can be built into web servers and web clients to make better use of available bandwidth, and provide greater transmission speeds between both.[1]

HTTP data is compressed before it is sent from the server: compliant browsers will announce what methods are supported to the server before downloading the correct format; browsers that do not support compliant compression method will download uncompressed data. The most common compression schemas include gzip and deflate, however a full list of available schemas is maintained by IANA.[2] Additionally, third parties develop new methods and include them in their products (e.g. the Google SDCH schema implemented in Google Chrome browser and used on certain Google servers).

Contents

  [hide

Client/Server compression scheme negotiation[edit]

In most cases, excluding the SDCH, the negotiation is done in two steps, described in RFC 2616:

1. The web client includes an Accept-Encoding field in the HTTP request, with supported compression schema names (called content-coding tokens), separated by commas.

GET /encrypted-area HTTP/1.1
Host: www.example.com
Accept-Encoding: gzip, deflate

2. If the server supports one or more compression schemas, the outgoing data may be compressed by one or more methods supported by both parties. If this is the case, the server will add aContent-Encoding field in the HTTP response with the used schemas, separated by commas.

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip

The web server is by no means obliged to use any compression method - this depends on the internal settings of the web server and also may depend on the internal architecture of the website in question.

In case of SDCH a dictionary negotiation is also required, which may involve additional steps, like downloading a proper dictionary from the external server.

Problems preventing the use of HTTP compression[edit]

A 2009 article by Google engineers Arvind Jain and Jason Glasgow states that more than 99 person-years are wasted[3] daily due to page load time increases when users do not receive compressed content. This occurs where anti-virus software interferes with connections to force them to be uncompressed, where proxies are used (with overcautious web browsers), where servers are misconfigured, and where browser bugs stop compression being used. Internet Explorer 6, which drops to HTTP 1.0 (without features like compression or pipelining) when behind a proxy- a common configuration in corporate environments- was the mainstream browser most prone to failing back to uncompressed HTTP.[4]

Content-coding tokens[edit]

  • compress - UNIX "compress" program method
  • deflate - despite its name the zlib compression (RFC 1950) should be used (in combination with the deflate compression (RFC 1951)) as described in the RFC 2616. The implementation in the real world however seems to vary between the zlib compression and the (raw) deflate compression.[5][6] Due to this confusion, gzip has positioned itself as the more reliable default method (March 2011).
  • exi - W3C Efficient XML Interchange
  • gzip - GNU zip format (described in RFC 1952). This method is the most broadly supported as of March 2011.[7]
  • identity - No transformation is used. This is the default value for content coding.
  • pack200-gzip - Network Transfer Format for Java Archives [8]
  • sdch[citation needed] - Google Shared Dictionary Compression for HTTP
  • bzip2[citation needed] - free and open source lossless data compression algorithm
  • peerdist[citation needed] - Microsoft Peer Content Caching and Retrieval (described in MS-PCCRPT)
  • lzma[citation needed] - elinks supports LZMA via a compile-time option.[9] Firefox and Gecko will be supporting LZMA compression, this is particularly interesting for smartphones and tablet where bandwidth is limited: LZMA has a very high compression ratio compared to gzip (patch discussed in [1])

Servers that support HTTP compression[edit]

The compression in HTTP can also be achieved by using the functionality of server-side scripting languages like PHP, or programming languages like Java.

References[edit]

  1. ^ "Using HTTP Compression (IIS 6.0)". Microsoft Corporation. Retrieved 9 February 2010.
  2. ^ RFC 2616, Section 3.5: "The Internet Assigned Numbers Authority (IANA) acts as a registry for content-coding value tokens."
  3. ^ "Use compression to make the web faster". Google Developers. Retrieved 22 May 2013.
  4. ^ http://code.google.com/speed/articles/use-compression.html
  5. a b "Compression Tests". Verve Studios, Co. Retrieved 19 July 2012.
  6. ^ "Frequently Asked Questions about zlib - What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?". Greg Roelofs, Jean-loup Gailly and Mark Adler. Retrieved 23 March 2011.
  7. ^ "Compression Tests: Results". Verve Studios, Co. Retrieved 19 July 2012.
  8. ^ JSR 200: Network Transfer Format for Java Archives.
  9. ^ elinks LZMA decompression
  10. ^ "HOWTO: Use Apache mod_deflate To Compress Web Content (Accept-Encoding: gzip) - Mark S. Kolich". Mark S. Kolich. Retrieved 23 March 2011.
  11. ^ https://issues.apache.org/bugzilla/show_bug.cgi?id=53121
  12. ^ Extra part of Hiawatha webserver's manual

External links[edit]



출처 - http://en.wikipedia.org/wiki/HTTP_compression


'Web > HTTP' 카테고리의 다른 글

apache - 파일 크기 제한을 초과함 $HTTPD  (0) 2013.09.09
http - cache(web cache)  (0) 2013.06.24
http - request, response header  (0) 2013.06.20
http - accept header field  (0) 2013.06.19
http - List of HTTP status codes  (0) 2011.12.16
Posted by linuxism
,