Tuesday, September 30, 2014

在 wamp 环境中配置ssl (https)

我的wamp apache版本是2.2.21, https用的端口443端口,http用80端口。https和http 其实对于编程人员来说基本是透明的?

1. 首先确认以下文件是否存在(此步骤可忽略)
   [Apache安装目录]/modules/ mod_ssl.so
   [Apache安装目录]/bin/ openssl.exe, libeay32.dll, ssleay32.dll
   [Apache安装目录]/conf/ openssl.cnf

2. 修改apache配置文件。首先stop apache service,然后打开配置文件



















//去掉下面行首的 # 号
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf

3. 认证文件生成
在命令行下进入Apache安装目录下\bin文件夹,输入命令:
openssl req -new -out server.csr -config ../conf/openssl.cnf










pass phrase输入123456 (任意设定)
然后输入国家: US, 州: New Jersey, 城市: Jersey City 公司名: vTasters, 部门(unit): IT, 域名: vtasters.com, 邮箱: rentjc413@gmail.com, A challenge password: 123456, an optional company name: vTasters










输入如下命令,生成私匙:
openssl rsa -in privkey.pem -out server.key
一般windows会出现警告:WARNING: can't open config file: /usr/local/ssl/openssl.cnf
这是Linux路径,所以我们要设置一下,输入命令
set OPENSSL_CONF=C:\Program Files\wamp\bin\apache\Apache2.2.21\conf\openssl.cnf
再次运行openssl rsa -in privkey.pem -out server.key输入密码123456
再输入如下命令创建证书:
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 8000
8000是有效期












完成后, 将 \bin 下面的 server.csr、server.crt、server.key 拷贝到 [Apache安装目录]\conf\ssl 文件夹中, 没有则创建

再打开 [Apache安装目录]\conf\extra\httpd-ssl.conf 文件
替换 SSLCertificateFile 和 SSLCertificateKeyFile 语句对应的路径,例:

#SSLCertificateFile "c:/Apache2/conf/server-dsa.crt"
换(反斜杠)
#SSLCertificateFile "C:/Program Files/wamp/bin/apache/Apache2.2.21/conf/ssl/server.crt"

#SSLCertificateKeyFile "c:/Apache2/conf/server-dsa.key"
换成
#SSLCertificateKeyFile "C:/Program Files/wamp/bin/apache/Apache2.2.21/conf/ssl/server.key"

最后, 重启 Apache e服务器

这时,查看Apache error log可能会出现一些错误,主要原因是现在会用到httpd-ssl.conf,而这个配置文件有一些配置需要修改。这里原理是如果是http就用httpd.config,否则用httpd-ssl.config

ErrorLog "c:/Apache2/logs/error.log"
TransferLog "c:/Apache2/logs/access.log"
CustomLog "c:/Apache2/logs/ssl_request.log"
DocumentRoot "c:/Apache2/htdocs"
改成以及创建相应文件
ErrorLog "C:/Program Files/wamp/logs/extra.log"
TransferLog "C:/Program Files/wamp/logs/extra_access.log"
CustomLog "C:/Program Files/wamp/logs/ssl_request.log"
DocumentRoot "C:/Program Files/wamp/www/"

可能有其他地方需要修改,只要参考httpd.conf即可




http://www.sunzhenghua.com/wamp-config-ssl-https

Wednesday, September 24, 2014

SSIS

错误处理:
如果某一个组件出现错误(红色),可以在progress tab中看到警告符号的图标,可以看到错误,之前绿色的已经执行了,所以如果改正错误后,要disable之前绿色的组件(如果package任意阶段都可以重执行,忽略此步骤),重新运行。

组件应用的详细文档可以参见:SSIS Quotes FRD.docx

常见错误:
load access file中如果access file出现empty rows:
System.NullReferenceException: Object reference not set to an instance of an object.

Column visibility: when change datasource in dataset, click refresh fields

Thursday, September 18, 2014

Android dev ref

http://developer.android.com/guide/topics/location/strategies.html
http://developer.android.com/training/location/retrieve-current.html

在Android中使用Google Map API v2和debug 工具

最近开发一个基于Google map的应用,所以这里介绍如何在Anroid中配置google map

1. 如果这里看不见Google play service,就要更新SDK了




















选择下载最新的SDK Tools







完成后就可以看到Google Play services(Google map在此服务中)以及Google APIs(我们app的build target)

















2. 下载完成后,可以看到这个路径的文件<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ 是新下载的,这就是Google play的lib,复制到我们app的平行路径中,或者不复制也可

3. Import到Eclipse里面
 Click File > Import, select Android > Existing Android Code into Workspace,如果这里出现错误,可以下载最新的Android ADT(Eclipse)可以解决问题

4.把第3步的lib加入到我们app中



















5. 申请API key
打开https://code.google.com/apis/console/?noredirect
开启Google maps Android API v2服务






点击API Access,然后创建Android key














这里我们需要用keytool生成key
首先在Eclipse,Window->Preferences->Android->Build















打开cmd,到JDK文件夹执行keytool,参数是keystore的路径
C:\Program Files\Java\jdk1.7.0_07\bin>keytool -list -v -keystore C:\Users\KK\.an
droid\debug.keystore
密码是android

最后生成SHA1,到网页中输入
key;包名
包名注意在网页、src、manifest中package三者保持一致,否则不能运行


最后会生成API key


5. 修改 AndroidManifest.xml
在<Application>里面加入Google play的版本
<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
在<Application>里面而</Application>前加入申请的key,在下面value中替换这个API KEY
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="API_KEY"/>

在<Manifest>里面加入权限,他们的作用分别是
<!-- Google Map是互联网业务,允许互联网 -->
<!-- 允许API检查网络连接状态,已确定是否可以下载数据 -->
<!-- 允许将Google地图数据缓存在SD卡上 -->
<!-- 地图应用经常和定位相关,允许粗定位-->
<!-- 允许精确定位-->  
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
在<Manifest>里面加入如下,因为Google Map v2需要OpenGL ES
<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

6. 创建XML界面,叫res/layout/activity-main.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.MapFragment"/>
7. 创建MainActivity.java 记得在Manifest里面启动activity设置这个
package com.example.mapdemo;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

8. 在project.properties中target=Google Inc.:Google APIs:19,目的是改用Google api build
9. 在device中,打开Google maps app,测试是否可用,肯能要enable location service in setting

Example for the link above:
In Google drive books\JAVA\Android\TrackMyPath.rar


Debug工具我们可以用Eclipse的DDMS中的GPX:
这里是GPX的一个例子http://zh.wikipedia.org/wiki/GPX













按播放键就GPS就会按GPX的时间点变化,GPX中的时间点跟具体值没关系,只跟时间间距有关系。

想要将一条Google maps路径转变为GPX (convert path on google maps to gpx):
select a route->list all steps->setting icon->share and embed map->short url得到google maps的URL

然后到此网站就:
http://www.gpsvisualizer.com/convert_input



可以生成GPX,但是需要手动加入时间标签
<time>2009-10-17T18:37:26Z</time>


Ref:
https://developers.google.com/maps/documentation/android/start
http://blog.csdn.net/flowingflying/article/details/9092113




Tuesday, September 16, 2014

在Eclipse配置SVN/TortoiseSVN

利用Eclipse install new software而链接为SVN - http://download.eclipse.org/releases/helios
选择collaboration->SVN team provider安装

安装好后,右击要checkin的proj->Team->Share project,选SVN




















配置URL和username以及密码即可


























或者用TortoiseSVN来访问,安装以后一定要重启,否则不会出现在右击菜单里



















点击SVN Checkout就会变成这样












如果用Tortoise checkin C#代码的时候,会看到很多dll,obj之类的文件,它们是unversioned(我们也并不想checkin它们)会跟新的CS文件(要checkin)混淆,导致会忘记checkin CS文件。我们可以通过配置Tortoise忽略某类型文件或者某个文件夹来解决。
我的添加为*/bin/* */obj/* *.suo *.user bin obj Debug _Resharper.*
















参考:
http://www.eclipse.org/subversive/documentation/gettingStarted/aboutSubversive/install.php

Monday, September 15, 2014

Android app development

1. 如何引进一个existing Android project:
1. 先新建一个Android hello world project,theme记得选none
2. Import Android project之后修改project.properties为步骤1的内容
比如
target=android-19
android.library.reference.1=../appcompat_v7

2. 常用组件:
Toast:


















Context context = getApplicationContext();
    Toast toast = Toast.makeText(context, "hihi", Toast.LENGTH_SHORT);
    toast.show();

KB: SQL Server DBA queries

Get the running queries:
select r.session_id,r.status,r.start_time,r.total_elapsed_time,r.command,s.text
from sys.dm_exec_requests r
cross apply  sys.dm_exec_sql_text(r.sql_handle) s
--where r.status='running'

Get linked servers:
exec sp_linkedservers

Thursday, September 4, 2014

SSRS

如何写一个SSRS项目:
http://msdn.microsoft.com/zh-cn/library/ms167305.aspx

如果配置本地SSRS server+deploy report:
http://www.cnblogs.com/aspnetx/archive/2013/04/20/3033189.html

创建一个报告:
1.加入report









2. 创建database连接
按edit创建,然后选择分享这个data source,其他报告也可以共享


3. 设计query


4. 最后会自动生成一个dataset,每个报告都会有一个dataset. 右击表格,tablix property可以查看dataset












5. 右击该Dataset1可以使其变成share dataset,以便其他报告使用

















如果其他报告要使用,加入shared dataset后即可使用

6. 输入域:用于输入一些参数,然后生成报告





这些参数还可以在Dataset中作为Parameter输入SP,比如需要输入参数才能产生的report








而Parameter还可以做成一个下拉菜单,这需要让parameter associate到一个dataset



配置本地reporting server:
run SQLServerManager11.msc或者sql server configuration manager


















Example for the link above:
In Google drive books\SSRS\Code\Quotes-simple.rar

Email the report by scheduler: