Ubuntu16.04 eGalaxTouch Calibration(校屏的方法)

在Ubuntu14.04中使用了官方的驱动,自带了校屏工具。系统升级到Ubuntu16.04后没有再使用官方驱动,内核中已经自带了驱动,工作良好。经过摸索,校屏方法同样很简单。

一条命令搞定,实时生效,不需要重启系统:

xinput_calibrator --output-filename /usr/share/X11/xorg.conf.d/99-calibration.conf

Ubuntu 16.04 cgit with apache2

Ubuntu 16.04环境下搭建Git服务器

(1)安装apache2

sudo apt-get install apache2

(2)安装cgit

git clone https://git.zx2c4.com/cgit
cd cgit
git submodule init
git submodule update
make
sudo make install

依赖项

sudo apt-get install build-essential
sudo apt-get install libssldev

(3)配置apache2

启用模块

sudo a2enmod cgid

添加/etc/apache2/conf-available/cgit.conf

ScriptAlias /cgit/ “/var/www/htdocs/cgit/cgit.cgi/”
RedirectMatch ^/cgit$ /cgit/
Alias /cgit-css “/var/www/htdocs/cgit/”
<Directory “/var/www/htdocs/cgit/”>
AllowOverride None
Options ExecCGI FollowSymlinks
Require all granted
</Directory>

启用cgit.conf

sudo ln -sf ../conf-available/cgit.conf cgit.conf

(4)配置cgit

/etc/cgitrc

#
# cgit config
# see cgitrc(5) for details

css=/cgit-css/cgit.css
logo=/cgit-css/cgit.png

repo.url=test.git
repo.path=/var/www/htdocs/cgit/test.git
repo.desc=the master test repository
repo.owner=test@example.com
repo.readme=info/web/about.html

 

[转载教程] 免 SHSH 从 iOS 9.0 ~ 9.3.5 降级到 iOS 8.4.1

【原文链接】

http://bbs.feng.com/forum.php?mod=viewthread&tid=11373525&extra=page%3D&fid=333&page=1

【转载说明】

感谢作者的分享,此方法经站长测试,ipad mini 1代有效,成功从9.3.5降级至8.4.1。

【友情提请】

Win10下运行Impactor不要使用管理员权限运行,否则无法使用文件拖动功能。

【教程】

如果你的 iPod touch (第五代)、iPad 2 (包含 2012 年的 32 纳米处理器制程改款)、iPad (第三代)、iPad (第四代)、iPad mini (第一代)、iPhone 4s 或 iPhone 5 正在运行 iOS 9.0 至 9.3.5 之间的任意一个 iOS 版本,你可以在无需备份固件签署证书的情况下降级到 iOS 8.4.1,但不能降级到 iOS 7。这个教程不支持 iPhone 5c。
由于目前没有兼容 iOS 10.3.3 的越狱工具,这一回答暂时不适用于 iOS 10.3.3 的 iOS 设备。当兼容 iOS 10.3.3 的越狱工具推出后,这一回答将同样适用于 iOS 10.3.3。

第一步:越狱你的 iOS 设备
– 如果你在运行 iOS 9.3.5,通过电脑前往 https://phoenixpwn.com 下载 PHŒNIX 越狱工具。如果你在运行 iOS 9.0 至 iOS 9.3.4,通过电脑前往 http://wall.supplies/ 下载 Home Depot 越狱工具。前往 http://www.cydiaimpactor.com/ 下载 Impactor。
– 将设备连接到电脑,在电脑打开 Impactor,并将下载到的越狱程序 IPA 安装包拖动到 Impactor 的窗口里。
– Impactor 会提示输入一组 Apple ID 和密码。输入你的 Apple ID 和密码。
– Home Depot 会被安装在你的 iOS 设备上。打开 Home Depot,并选择越狱。
– 越狱成功后,你的 iOS 设备会显示白色的 Apple 标识并重新启动主屏幕进程。

第二步:重新配置系统版本描述以欺骗软件更新机制
– 打开 Cydia 后,搜索并安装 Filza。
– 打开 Filza app,前往 /System/Library/CoreServices。打开 SystemVersion.plist。
– 修改 ProductVersion 的对应键值为 6.1.3,ProductBuildVersion 的对应键值为 10B329。
– 再三仔细检查所做的修改没有错误,随后保存所做的修改。如果在修改错误的情况下继续执行第三步,你可能失去降级的机会,并会被迫更新到 iOS 10。

第三步:解除越狱
– 前往设置 → 通用 → 还原 → 抹掉所有内容和设置,从而解除越狱。
– 完成设备重置后的设置流程并激活你的 iOS 设备。

第四步:下载并安装 iOS 8.4.1
– 打开设置 → 通用 → 软件更新。iOS 设备会检测到 iOS 8.4.1 软件更新。
– 轻按“更新”。iOS 设备会请求更新,请求更新的过程可能需要几分钟。请求完成后,下载更新可能需要几十分钟或几个小时。
– 下载完成后,同意许可协议并选择 “现在安装更新”。
– iOS 设备会显示一个 Apple 标识和进度条,并降级到 iOS 8.4.1。
– 当白色的进度条即将填满灰色的轨道时,白色的进度条可能会短暂冻结,设备温度也可能升高。这是正常的现象,请耐心等待并不要重启或强行断电。尽管 iOS 8.4.1 安装包的数据迁移脚本没有针对 iOS 9 的用户数据分区进行适配,只要耐心等待几分钟后,设备会自动跳过迁移脚本。
– iOS 设备已被成功降级并会重新启动,再次显示进度条。这是正常的现象。
– 完成设备降级后的设置流程并激活你的 iOS 设备。

第五步:清空用户数据分区以提升稳定性
– 此时,iOS 设备会启动到 iOS 8.4.1 并显示 iOS 8 的主屏幕。由于 iOS 8 的迁移脚本不能完全正确迁移 iOS 9 的数据分区,一部分内置 app、系统进程可能不稳定或出错。为了解决这一问题,再次前往设置 → 通用 → 还原 → 抹掉所有内容和设置。这一操作会抹掉包含来自 iOS 9 的、未经正确迁移的数据分区。
– 完成设备重置后的设置流程并激活你的 iOS 设备。

此时,你的 iOS 设备已成功降级至 iOS 8。你可以安装 tvOS 测试版系统的描述文件,从而禁用软件更新机制,防止设置 app 上方出现角标。

ubuntu设置Wifi链接为默认链接

运行环境:Ubuntu 16.04

网络管理:NetworkManager

网络:eth0 —> 局域网,Wifi —> 外网

默认情况下,eth0为默认路由,需要将wifi设置为默认路由,使用NetworkManager最简单的修改方法如下:

打开网络管理器,在eth0路由设置里将”Use this connection only for resources on its network”勾选中,IPv4和IPv6均设置。

【转载】VisualSVN Server 增加自助修改密码页面(支持2.1-3.6最新版)

==============================================================

原文链接:http://oicu.cc.blog.163.com/blog/static/1230394712016102312546504/

请访问原文链接以获取最新版本,感谢原文作者的无私共享,本站仅转载作为镜像保存!

==============================================================

注:本方法实测支持 VisualSVN 2.1~3.6.x,不过2还需多改Apache的配置,老版本应该抛弃,懒得写了。
转载请注明来源,不为别的,就是怕那些无良网站为了流量到处转帖,转丢失内容或者是老版本的内容。
如果不用VisualSVN客户端的话,VisualSVN Server只能在服务器端修改密码,对管理来说很不方便。
 
网上大部分给 VisualSVN 增加自助修改密码的补丁都是基于 2.5.x 版本的,也有几个用于 3.5.x/3.6.x 版本,多数还是用 cgi 方式,而且要么像 csdn 那样藏着掖着,要么也没个详细的说明。
 
VisualSVN Server 帐号及密码保存在 htpasswd 文件里,除了 cgi 有以下几种修改方式:
 
1、使用 VisualSVN Server Manager 管理工具重置密码。
 
2、通过 WMI 里用 PowerShell 脚本更改。示例如下:
$svnuser = Get-WmiObject -Namespace Root\VisualSVN `
-ComputerName svn.hostname.com `
-query “select * from VisualSVN_User where name = ‘username'”
$svnuser.SetPassword(‘123456’)
3、使用 Windows 版 Apache 的 htpasswd.exe 命令更改。
该方法是使用 php 页面来调用 htpasswd.exe 修改密码,方便用户通过网页修改,下面讲解配置要点。

 

我使用的操作系统是 Windows Server 2008R2 x64,安装了 VisualSVN Server 3.5.6 x64 带 Apache 2.2.31 x64 的版本,默认安装路径。
 
从 Apache 官方网站下载完整的 Apache 2.2.31 x64 版本,从里面提取一个文件 htpasswd.exe 放到
C:\Program Files\VisualSVN Server\bin\htpasswd.exe
Apache 2.2.x 要以 handler 方式加载 php 模块,只有 php 5.2-5.4 的 Thread Safe 版本才带 php5apache2_2.dll 文件,php 5.5 及之后的版本只能和 Apache 2.4.x 搭配了,所以选定 php 5.4 版本。
 
特别注意,如果用 VisualSVN Server x64 就必须找 x64 的 php!
否则 Apache 加载 php 模块会提示错误 Cannot load php5apache2_2.dll into server
因为 Apache x64 无法使用 php x86。
 
使用 32 位版本的 VisualSVN Server 比较简单,因为 php 官网都是 x86 版本:
 
使用 64 位版本的 VisualSVN Server 就得找第三方编译的 php x64 版本了,提供两个下载:
 
我下载的是 php-5.4.36-Win32-VC9-x64.zip,下载后解压到 C:\Program Files\VisualSVN Server\php 文件夹。把 php.ini-production 文件重命名为 php.ini 即可,其他不用配置。
 
修改空文件 C:\Program Files\VisualSVN Server\conf\httpd-custom.conf
内容如下:
LoadModule php5_module “php/php5apache2_2.dll”
<IfModule php5_module>
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
</IfModule>
# 配置 php.ini 的路径
PHPIniDir “php”
新建一个 php 文件放到 C:\Program Files\VisualSVN Server\htdocs\pw\index.php
内容如下(做了一点小修改,增加返回及跳转页面的处理):
<?php
$username = $_SERVER[“PHP_AUTH_USER”]; //经过 AuthType Basic 认证的用户名
$authed_pass = $_SERVER[“PHP_AUTH_PW”]; //经过 AuthType Basic 认证的密码
$input_oldpass = (isset($_REQUEST[“oldpass”]) ? $_REQUEST[“oldpass”] : “”); //从界面上输入的原密码
$newpass = (isset($_REQUEST[“newpass”]) ? $_REQUEST[“newpass”] : “”); //界面上输入的新密码
$repeatpass = (isset($_REQUEST[“repeatpass”]) ? $_REQUEST[“repeatpass”] : “”); //界面上输入的重复密码
$action = (isset($_REQUEST[“action”]) ? $_REQUEST[“action”] : “”); //以hide方式提交到服务器的action
if ($action!=”modify”) {
$action = “view”;
} else if ($authed_pass!=$input_oldpass) {
$action = “oldpasswrong”;
} else if (empty($newpass)) {
$action = “passempty”;
} else if ($newpass!=$repeatpass) {
$action = “passnotsame”;
} else{
$action = “modify”;
}
?>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=GBK”>
<title>Subversion 在线自助密码修改</title>
</head>
<body>

<?php
//action=view 显示普通的输入信息
if ($action == “view”) {
?>
<script language = “javaScript”>
<!–
function loginIn(myform) {
var newpass=myform.newpass.value;
var repeatpass=myform.repeatpass.value;

    if (newpass==””) {
alert(“请输入密码!”);
return false;
}

    if (repeatpass==””) {
alert(“请重复输入密码!”);
return false;
}

    if (newpass!=repeatpass) {
alert(“两次输入密码不一致,请重新输入!”);
return false;
}
return true;
}
//–>
</script>

<style type=”text/css”>
<!–
table {
border: 1px solid #CCCCCC;
background-color: #f9f9f9;
text-align: center;
vertical-align: middle;
font-size: 9pt;
line-height: 15px;
}
th {
font-weight: bold;
line-height: 20px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: solid;
color: #333333;
background-color: f6f6f6;
}
input{
height: 18px;
}
.button {
height: 20px;
}
–>
</style>

<br><br><br>
<form method=”post”>
<input type=”hidden” name=”action” value=”modify”/>
<table width=”220″ cellpadding=”3″ cellspacing=”8″ align=”center”>
<tr>
<th colspan=2>Subversion 密码修改</th>
</tr>
<tr>
<td>用 户 名:</td>
<td align=”left”> <?php echo $username?></td>
</tr>
<tr>
<td>原 密 码:</td>
<td><input type=password size=12 name=oldpass></td>
</tr>
<tr>
<td>用户密码:</td>
<td><input type=password size=12 name=newpass></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type=password size=12 name=repeatpass></td>
</tr>
<tr>
<td colspan=2>
<input onclick=”return loginIn(this.form)” class=”button” type=submit value=”修 改”>
<input name=”reset” type=reset class=”button” value=”取 消”>
<input onclick=”window.location.href=’/'” class=”button” type=”button” value=”返 回”>
</td>
</tr>
</table>
</form>
<?php
} else if ($action == “oldpasswrong”) {
$msg=”原密码错误”;
} else if ($action == “passempty”) {
$msg=”请输入新密码”;
} else if ($action == “passnotsame”) {
$msg=”两次输入密码不一致,请重新输入”;
} else {
$passwdfile=”
D:\Repositories\htpasswd“;
$command='”
C:\Program Files\VisualSVN Server\bin\htpasswd.exe” -b ‘.$passwdfile.” “.$username.’ “‘.$newpass.'”‘;
system($command, $result);
if ($result==0) {
$msg_succ=”用户[“.$username.”]密码修改成功,请用新密码登陆”;
} else {
$msg=”用户[“.$username.”]密码修改失败,返回值为”.$result.”,请和管理员联系”;
}
}

if (isset($msg_succ)) {
?>
<script language=”javaScript”>
<!–
alert(“<?php echo $msg_succ?>”);
window.location.href=”/”
//–>
</script>
<?php
} else if (isset($msg)) {
?>
<script language=”javaScript”>
<!–
alert(“<?php echo $msg?>”);
window.location.href=”<?php echo $_SERVER[“PHP_SELF”]?>”
//–>
</script>
<?php
}
?>
</body>
</html>

 
在header增加超链接麻烦,所以我就在页脚增加修改密码的链接,
修改文件 C:\Program Files\VisualSVN Server\WebUI\index.html
内容如下:
<footer>
Powered by <a href=”
http://www.visualsvn.com/server/”>VisualSVN Server</a>. &copy; 2005-2016 VisualSVN Limited.
<br /><br /><a href=”/pw”>自助修改密码</a>
</footer>
完工。

 

效果图如下:

VisualSVN Server 3.5.x增加自助修改密码页面 - oicu - Oh! I see you!

 

VisualSVN Server 3.5.x增加自助修改密码页面 - oicu - Oh! I see you!
==============================================================
本站说明:如果启动http服务报错,则需要安装VC9.0的运行库
==============================================================

eGalax Touchscreen Configuration Ubuntu 14.04LTS

In order to configure the eGalax Touchscreen in Ubuntu 14.04LTS you need to perform the following steps:

the newest driver has a setup.sh file. just run it and it does all the work for you. For Ubuntu 16.04 see Page 6 below.

Ensure the Kernel Modules start on boot

Modify the file /etc/modules to add the modules usbtouchscreen and usbhid. These must come after lp and before rtc.

=== /etc/modules ===

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.

loop
lp
usbtouchscreen
usbhid
rtc

=================


Load the Kernel Modules (only the 1st time)

Then load the modules by hand the 1st time (or reboot)

sudo modprobe usbtouchscreen usbhid

Download the Files

http://www.eeti.com.tw/LinuxDriverDownload.html

Unzip the Files to your Downloads

gunzip /home/$USER/Downloads/eGalax*.zip

Move the Daemon and Calibration Files

Move al the files in the folder /home/user/Downloads/eGalax/eGTouch_v2.5.4330.L-x/eGTouch64/eGTouch64withX to

/usr/local/bin/  

*Note the following command is one line

sudo rsync -avz /home/$USER/Downloads/eGalax/eGTouch_v2.5.4330.L-x/eGTouch64/eGTouch64withX /usr/local/bin/

        


Place Upstart Job

place the following Upstart job in /etc/init

=== /etc/init/egalaxtouch.conf ===

#!/bin/bash

description        “Start the egalax touchscreen daemon on boot”

author                “globeone  Damiön la Bagh”

start on runlevel 2

exec /usr/local/bin/eGTouchD

=========================

Reload the Upstart configuration files

initctl reload

Start the Touchscreen Daemon

Start the touchscreen daemon with the following command

        sudo service egalaxtouch start

Calibration

Calibrate the Touchscreen with eGTouchU

        sudo /usr/local/bin/eGTouchU

For Dual Screen Configurations:

Follow the onscreen prompts of the config program for dual screen setup choose Left or Right mode!

Then calibrate the screen

l

Enable the Touchscreen in Lightdm (the login screen)

  1. copy ~/.config/monitors.xml to /var/lib/lightdm/.config

Ubuntu 16.04

Ubuntu 16.04 has moved from Upstart to SystemD.

This changes how to install the eGalax touchscreens so they keep running even if the service crashes.

Setup.sh

Run the setup.sh file provided by eGalax

SystemD Setup

sudo systemctl edit –full eGTouch.service

Overwrite the file with the code here below:

############################################

 # eGalax Touchscreen service file

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/usr/bin/eGTouchD
DefaultDependencies=no
Before=sysinit.target
After=apparmor.service

[Service]
Type=forking
Restart=always

RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3
TimeoutSec=0
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=no
User=root
Group=root
ExecStart=
ExecStart=/usr/bin/eGTouchD start
ExecReload=/usr/bin/eGTouchD restart
ExecStop=/usr/bin/eGTouchD stop

[Install]
WantedBy=multi-user.target

########################################

Remove the SystemV init script from /etc/init.d/eGTouch.sh

sudo rm /etc/init.d/eGTouch.sh

Enable the new SystemD service

sudo systemctl enable eGTouch.service

sudo systemctl daemon-reload

sudo systemctl restart eGTouch.service

Check the status of the service

sudo systemctl status eGTouch.service

user@hostname:~$ sudo systemctl status eGTouch.service
 eGTouch.service
Loaded: loaded (/usr/bin/eGTouchD; enabled; vendor preset: enabled)
Active: 
active (running) since zo 2017-03-26 13:55:23 CEST; 14min ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/eGTouch.service
└─906 /usr/bin/eGTouchD start

mrt 26 13:55:23 hostname systemd[1]: Starting eGTouch.service…
mrt 26 13:55:23 hostname eGTouchD[895]: rm: kan ‘/tmp/eGTouch_*’ niet verwijderen: Bestand of map bestaat niet
mrt 26 13:55:23 hostname systemd[1]: Started eGTouch.service.


If you kill the service

sudo kill 906

You will see the touchscreen restarting.

【原文链接】

https://docs.google.com/document/d/1G4oD6Y8vlyNHW6wJT89pxcjWHoETLLT-SEoAIW6_7Xc/pub

使用dd pv gzip进行硬盘的克隆

使用dd可以对硬盘(操作系统)进行克隆,以便批量恢复。gzip可以对克隆后的文件进行压缩。pv可以实时显示克隆任务的进度。以下简述一下步骤,仅供参考:

(一)获取克隆母盘的实际大小

使用parted命令,支持GPT分区;设置unit为Byte,打印硬盘信息,如下所示:

$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) unit B
(parted) print
Model: ATA WDC WDS120G1G0A- (scsi)
Disk /dev/sda: 120034123776B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
1 1048576B 537919487B 536870912B fat32 EFI System Partition boot
2 537919488B 793772031B 255852544B ext2
3 793772032B 120033640447B 119239868416B lvm

驱动器大小为红色字体位置。

(二)备份压缩硬盘到镜像

dd if=/dev/sda | pv -s 120034123776 | gzip –fast > /media/usbdisk/backup.img

pv -s后的参数是步骤(一)中获取的硬盘大小;绿色字体部分为克隆文件的保存路径,使用了gzip快速压缩,备份过程结束。

(三)还原硬盘镜像

gzip -dc /media/usbdisk/backup.img | pv -s 120034123776 | dd of=/dev/sda

同理,pv -s后的参数是步骤(一)中获取的硬盘大小。

至此,使用dd配合gzip和pv对硬盘进行克隆完成。

参考链接:http://allgood38.io/a-snapshot-of-your-computer-with-dd-pv-and-gzip-part-1.html

解决Ubuntu使用dd克隆后网卡从eth1开始的问题

ubuntu下使用dd可以对相同配置的电脑进行克隆,在实际使用中会遇到一个问题,主机的网卡是eth0开始,而dd克隆的克隆机网卡却从eth1开始。经过查询资料,这是udev的特性,默认会在规则中记录网卡物理地址(MAC地址)和ethX的对应关系。因此,在备份之前从主机中删除(或还原后从克隆机中删除)

$ sudo rm /etc/udev/rules.d/70-persistent-net.rules

即可解决网卡从eth1开始的问题