`
xlofty
  • 浏览: 28386 次
  • 来自: ...
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
输出中文到CSV,excel打开乱码 java
response.getWriter().print("\uFEFF");// 加上BOM\uFEFF
response.getWriter().print(strBuffer.toString());
golang 从GBK与UTF-8互转的例子
package main

import (
    "code.google.com/p/mahonia"
    "fmt"
)

func main() {
    //"你好,世界!"的GBK编码
    testBytes := []byte{0xC4, 0xE3, 0xBA, 0xC3, 0xA3, 0xAC, 0xCA, 0xC0, 0xBD, 0xE7, 0xA3, 0xA1}
    var testStr string
    utfStr := "你好,世界!"
    var dec mahonia.Decoder
    var enc mahonia.Encoder

    testStr = string(testBytes)

    dec = mahonia.NewDecoder("gbk")
    if ret, ok := dec.ConvertStringOK(testStr); ok {
        fmt.Println("GBK to UTF-8: ", ret, " bytes:", testBytes)
    }

    enc = mahonia.NewEncoder("gbk")
    if ret, ok := enc.ConvertStringOK(utfStr); ok {
        fmt.Println("UTF-8 to GBK: ", ret, " bytes: ", []byte(ret))
    }
    return
}
http://stackoverflow.com/questions/27412135/django-redis-how-do-i-properly-use-connection-pooling django
# Redis Settings
# settings.py
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)

# views.py
from django.conf import settings  
REDIS_CONN_POOL_1 = settings.REDIS_POOL_1   
r = redis.Redis(connection_pool=REDIS_CONN_POOL_1)
r.get("foobar") # Whatever operation 
JasperReport + iReport 实现Java报表套打 java JasperReport + iReport 实现Java报表套打
package com.vincent.report.demo;
import net.sf.jasperreports.engine.*;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;

/**
 * 测试
 * Created by IntelliJ IDEA.
 * User: liuxiaohua
 * Date: 2008-4-28
 * Time: 8:43:38
 * To change this template use File | Settings | File Templates.
 */
public class Demo extends HttpServlet {
    @SuppressWarnings("deprecation")
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String doType = request.getParameter("doType");
        try {
            //Jasper 文件
            File reportFile = new File(request.getRealPath("/jasperreport/liuxiaohua_report.jasper"));
            Map paramter = new TreeMap();
            //背景图片做为参数传递,不用写绝对路径
            paramter.put("image", request.getRealPath("/jasperreport/report.gif"));
            //根据 doType 的不同,传递不同的参数(是否传递背景图片)
            //这里需要注意的是:这报表的设计的时候 image 这个参数的 Use as a Prompt 复选框不要选
            //如果你选了那你一定要传递这个参数过去
            //这样你就在显示报表的时候传递一个背景图,打印时不传递背景图,打印出来的报表就没有背景了
            //这样就可以实现套打,具体打印代码我就不写了。
            byte[] bytes = JasperRunManager.runReportToPdf(
                      reportFile.getPath(), doType.equalsIgnoreCase("print") ? null : paramter, new JREmptyDataSource());
            //生成PDF文件
            response.setContentType("application/pdf");
            ServletOutputStream ouputStream = response.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
        } catch (Exception e) {
            System.out.println("error");
            e.printStackTrace();
        }
    }
}
python 加密解密 加密 http://www.cnblogs.com/kaituorensheng/p/4501128.html

        
在Django中提供大内容(或大文件)下载 django 在Django中提供大内容(或大文件)下载
from django.http import HttpResponse

__author__ = 'wei.xi'

#http://stackoverflow.com/questions/1371020/django-flush-response
#传入一个迭代器

def bigFileView(request):
    # do something...

    def readFile(fn, buf_size=262144):
        f = open(fn, "rb")
        while True:
            c = f.read(buf_size)
            if c:
                yield c
            else:
                break
        f.close()

    file_name = "big_file.txt"
    response = HttpResponse(readFile(file_name))
    return response
SHA1 加密
	public static String toSHA1(String str) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("SHA-1");
			md.reset();
			md.update(str.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			System.out.println("NoSuchAlgorithmException caught!");
			System.exit(-1);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		byte[] byteArray = md.digest();

		StringBuffer md5StrBuff = new StringBuffer();

		for (int i = 0; i < byteArray.length; i++) {
			if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
				md5StrBuff.append("0").append(
						Integer.toHexString(0xFF & byteArray[i]));
			else
				md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
		}

		return md5StrBuff.toString();
	}
打印pdf
<html>
	<head>
		<title>Adobe打印</title>
		<script type="text/javascript"">
			function printPDF() {
				var adobeReader = document.getElementById("adobeReader");
				adobeReader.click();
				adobeReader.setActive();
				adobeReader.focus();
				adobeReader.print();
			}
		</script>
	</head>

	<body onload="printPDF()">
		<object id="adobeReader" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="780" height="550" border="0" toolbar="false"> 
   <param name="_Version" value="65539"> 
   <param name="_ExtentX" value="20108"> 
   <param name="_ExtentY" value="10866"> 
   <param name="_StockProps" value="0"> 
   <param name="SRC" value="createSamplePDF.pdf"> 
    </object>
    <input type='button' onclick='printPDF();' value='11'/>
	</body>
</html> 
itext加条码,加二维码,自动打印 itext
private void createSamplePDF() throws Exception {
		//Step 1鈥擟reate a Document.
		Document document = new Document();
		//Step 2鈥擥et a PdfWriter instance.
		PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createSamplePDF.pdf"));
		//Step 3鈥擮pen the Document.
		document.open();
		//Step 4鈥擜dd content.
		document.add(new Paragraph("Hello World"));
		//Step 5鈥擟lose the Document.
		
		
		StringBuffer script = new StringBuffer();
		//给pdf加上脚本实现自动掉打印机,然后自动关闭
		script.append("this.print({bUI: false,bSilent: true,bShrinkToFit: false});");
		//自动关闭的脚本
		//.append("\r\nthis.closeDoc();");
		writer.addJavaScript(script.toString());
		
		String myString = "http://www.google.com";
		PdfContentByte cb = writer.getDirectContent();
		Barcode128 code128 = new Barcode128();
		code128.setCode(myString.trim());
		code128.setCodeType(Barcode128.CODE128);
		Image code128Image = code128.createImageWithBarcode(cb, null, null);
		code128Image.setAbsolutePosition(10,700);
		code128Image.scalePercent(125);
		document.add(code128Image);

		BarcodeQRCode qrcode = new BarcodeQRCode(myString.trim(), 1, 1, null);
		Image qrcodeImage = qrcode.getImage();
		qrcodeImage.setAbsolutePosition(10,600);
		qrcodeImage.scalePercent(200);
		document.add(qrcodeImage);

		document.close();
	}
可以使用Django的remote user绕过密码验证 django
可以使用Django的remote user绕过密码验证,
在AUTHENTICATION_BACKENDS这个配置里加上django.contrib.auth.backends.RemoteUserBackend,
然后:
from django.contrib.auth import authenticate, login
user = authenticate(remote_user=username)   # username是子用户的用户名
login(request, user)
具体参见:https://docs.djangoproject.com/en/dev/howto/auth-remote-user/
Django ModelAdmin 筆記 django http://gibuloto.com/blog/django-modeladmin/
from django.contrib import admin

# 如果有用到 GeoDjango 的東西就要用這個
# from django.contrib.gis import admin

from app_product.models import Product

class ProductrandAdmin(admin.ModelAdminn):
    '''
    以下屬於 change list
    列表頁
    '''
    # 要顯示 model 的哪些欄位,要注意的是 ManyToManyField 沒辦法在列表頁顯示
    list_display = ('id', 'nameusertionbrands, 'category', 'price'ite')

    # 哪些欄位是可以點擊的,點了就會到編輯頁
    list_display_links = list_display

    '''
    可以直接在列表頁編輯
    不是所有的 field 都支援,像是 DateTimeField 就不支援,但是 ForeignKey 可以
    不能跟 list_display_links 同時使用
    '''
    # list_editable = ('name',)

    # 自定 filter
    # https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter
    list_filter = ('category', 'brand', 'stores')

    # 只適用 ManyToManyField,該欄位會變成左右兩欄的多選框
    filter_horizontal = ('stores',)

    # 這裡的 ordering 不同於 model 的 ordering,只作用在 admin 的 change list
    ordering = ('-add_time',)

    # 默認就是 case-insensitive
    search_fields = ('name',)

    # 決定列表頁要顯示哪些 obj
    def queryset(self, request):
        qs = super(ProductAdmin, self).queryset(request)

        # 例如我們可以限定登入的用戶只能看到他自己上傳的商品
        if request.user.is_superuser:
            return qs
        else:
            return qs.filter(user = request.user)


    '''
    以下屬於 add / change
    編輯頁
    '''
    # 因為 admin 後台只會顯示 editable = True 的欄位
    readonly_fields = ('add_time',)

    # 在視覺上將欄位分組
    fieldsets = (
        ('必填', {
            'fields': ('name', 'brand', 'category'),
        }),
        ('選填', {
            'fields': ('stores', 'price')
        }),
    )

    # 確保 user 這個欄位只能是 logged-in user 本人,但是 superuser 無此限制
    # https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if not request.user.is_superuser:
            if db_field.name == 'user':
                kwargs["queryset"] = User.objects.filter(id = request.user.id)

            if db_field.name == 'brand':
                kwargs["queryset"] = Brand.objects.filter(user = request.user)

        return super(ProductAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

    # https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_manytomany
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if not request.user.is_superuser:
            if db_field.name == 'stores':
                kwargs["queryset"] = Store.objects.filter(brand__user__id = request.user.id)

        return super(ProductAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

#如何在 change list 中顯示縮圖
# 最後記得要 register 這個 ModelAdmin,該 model 才會出現在 admin 後台
admin.site.register(Product, ProductAdmin)


def show_image(self, obj):
    try:
        # image 是一個 ImageField
        return '<img src="%s" width="48" height="48">' % obj.image.url
    except:
        pass

show_image.allow_tags = True
show_image.short_description = '商品圖' # 顯示在 list_display 的標題

# 然後把該 method 的名字加入 list_display
list_display = ('id', 'show_image', 'name', 'user', 'brand', 'category', 'price')
每台电脑的唯一标识符 python, uuid
>>> import uuid

>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')

>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

>>> # make a UUID from a string of hex digits (braces and hyphens ignored)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')

>>> # convert a UUID to a string of hex digits in standard form
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'

>>> # get the raw 16 bytes of the UUID
>>> x.bytes
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'

>>> # make a UUID from a 16-byte string
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
IE内存泄露,iframe内存泄露造成的原因和解决方案 http://my.oschina.net/jsan/blog/11169
var frame = $('iframe');
frame[0].contentWindow.document.write('');//清空iframe的内容
frame[0].contentWindow.close();//避免iframe内存泄漏
frame.remove();//删除iframe
Global site tag (gtag.js) - Google Analytics