排列组合 Python 实现

这个问题其实已经困扰我好久了, 也在网上看了非常多的教程, 始终都掌握不好. 有些代码很简洁, 但阅读性不强. 有些代码很长, 看着看着就走神了.

直到最近在弄DFS, 某天突然灵感一现, 觉得排列组合的问题可以用DFS的方法求解, 于是打开电脑, 顺着思路一点一点把代码敲下来, 没想到还真的可以.

觉得有必要把自己的思路记录下来, 万一将来忘了, 回头也能看看.

或者将来有了更好的思路, 也能回过头来对比一下.

 

全排列:...

Read More...

Raspberry Pi Zero w 使用USB连接Windows 7 实现共享上网

接着上篇, 搭建好树莓派后, 有时希望能和Windows 7笔记本直接用USB连接. 这样在配置和输入命令, 或者使用VNC Viewer连接的时候延时会好一点.

  1. 将上一步已经写好的MicroSD卡连接到 Windows 笔记本
  2. 打开boot分区, 找到一个叫config.txt的文件, 在文件的最后面新建一行, 输入以下内容并保存文件

    dtoverlay=dwc2

  3. 打开cmdline.txt, 在rootwait 后面加入 modules-load=dwc2,g_ether 注意前后都要空格. 这样在树莓派上的配置任务就完成了.
  4. 然后把树莓派通电,再连接上电脑. 注意, 通电和USB 是两个插口, 一定要先接上电源,然后再用另外一根线把树莓派和电脑连接.
  5. 这时, Windows会自动识别这个硬件, 然后安装驱动.

    如果没有自动成功安装驱动, 则需要手工安装

    1. 右键我的电脑à管理à设备管理器à查看à
...

Read More...

Raspberry Pi Zero W 无显示器安装

前几个星期看到网上有卖Raspberry pi Zero w, 当下就下了单, 完全没考虑运费和时间. 好在上个星期都东西送到, 一切都好, 简单看了一下, 确实比前辈们要小很多, 而且越发觉得神奇, 这么小的一个东西竟然能够跑完整版的 Linux系统.

更要命的是, 自带了无线网卡和蓝牙, 这样连wifi dongle都不用了, 只要把系统配置好, 开机直接就能连上wifi了.

好吧, 其实很简单.

  1. 先到官网上把Raspbian下载下来, 用Win32DiskImager写到MircoSD 卡上.
  2. 写完之后, 那张MicroSD卡在Windows 上会被重新命名成boot
  3. 打开上面说的那个boot 分区, 建立一个名为ssh的空文件(Linux 的命令 touch ssh, windows 下面就新建一个ssh.txt, 然后把.txt后缀名删掉), 文件就叫 ssh, 没有任何拓展名.

    从2016年的某一个版本开始,

...

Read More...

Linux 开机运行

这个问题困扰了我很长时间, 今天总算下定决心解决了. 其实很简单, 只要把sh可执行文件, 放到/etc/init.d 下面, 然后运行以下的命令就可以了.

sudo update-rc.d xxx.sh defaults 100

这里的100只是告诉系统这段程序没什么重要, 在加载完系统自己的服务后运行就可以了.可以改成其他的数字, 1000或者10000…...

Read More...

通过1434 端口, 远程连接SQL Server

  1. 安装SQL Server, 没啥好说的.

     

  2. SQL Server Configuration Manager, Native client configuration à Client Protocolsà TCP/IP Enabled

     

     

  3. 关闭动态端口分配, TCP Dynamic Ports 里面什么都不要填就可以了.

     

  4. 最容忽视的一步, 配置防火墙 – 允许TCP/UDP方式通过端口1434传输数据(或者自定义的端口, 自定义的端口号要和上一步中输入的端口一致). 点击下一步, 按照指示进行操作就可以了.

     

     

  5. 重新启动SQL Server 服务和 SQL Browser 服务.

     

  6. 在客户端上, 连接的时候输入机器名\实例名, 端口号 就可以进行连接了. 如果是通过Internet进行连接, 只需要在路由器上把Port
...

Read More...

Raspberry Pi + Android 手机 搭建无线移动网站 (下)

 

接上篇能够跑通VPN后, 下一步就是在手机上开启wifi热点, 使得连上移动电源的Rpi2能够顺利连接.

  • 首先, 断开 当前跟服务器之间的VPN连接,在Rpi1上输入以下命令, 目的是转发80端口到接通VPN的手机上:

sudo iptables -t nat -A PREROUTING -d 192.XXX.XXX.XXX -p tcp –dport 80 -j DNAT –to-destination 10.8.0.6:80

192.XXX.XXX.XXX Rpi1的内网地址

80端口视情况而定, 也可以是8080或者其他的端口

10.8.0.6:80 是连接上VPN的手机内网地址

  • 使用
...

Read More...

Raspberry Pi + Android手机 搭建无线移动网站 (上)

已经有好长时间没有发博文了, 其实这两天也没有闲着, 在鼓捣树莓派, 一来可以帮着巩固一下Linux 的知识, 其次Rpi B二代上市之后就入手了, 看着这个小东西, 确实打心底喜欢.

标题中的移动网站, 是一个真的可以移动的网站…

在搭建的时候还真的遇到了一个瓶颈 – 为什么不直接用手机?

我研究了一下, 手机上网其实并不是手机直接和网站沟通, 当中还要经过运营商的DNS, 可以看作是运营商的路由器, 所以,当你查看手机IP的时候,往往会显示两个, 一个是内部IP,一个是外部IP. 内部IP是运营商分配给你手机的, 相当于内网IP, 外部IP,其实就是运营商的路由器的IP. 所以, 当你把服务器架在手机上的时候, 是无法通过外部IP直接访问的. 当然, 你又没有办法通知运营商,让它更改路由设置, 把所有80端口的消息全都转发到你的手机上… 仔细想想就知道这个是几乎不可能的, 因为你的手机无时无刻不在移动, 手机需要不停寻找可用的基站, 运营商不可能为你一个人更改所有的基站设置.

另外, 推荐一个查询Android手机IP的利器: IP Tools, 免费版的就非常好用了.

言归正传:

实现方案(前提): ...

Read More...

hp打印机云服务架构猜想

前两天心血来潮, 买了一台支持wireless printing 的hp 打印机, 在使用了一段时间后, 觉得云打印技术虽然称不上非常大的创新, 但绝对是大大提高了生产力. 于是我忍不住对这个云服务的架构进行了猜想, 总的来说, 打印的渠道有以下两种:

每台支持云服务的打印机在出厂的时候都会有一个id, hp称这个id为claim_code.

要使用hp提供的云服务, 就必须将打印机注册到hp的服务器, hp会分配一个唯一的所谓mail_id给该打印机, 也就是claim_code@hpconnected.com

第一种:

每次打印机启动, 就会自动报告自己的IP/claim_code到hp的服务器. hp在服务器上会记录这个IP, 映射这个IP和claim_code@hpconnected.com

每当我从远程(手机或者其他的任何联网设备)发送一个请求(根据hp的要求, 是将所需要打印的文件通过邮件发送到claim_code@hpconnected.com), hp就会将邮件内容,连同可打印的附件内容一起转化为打印机可识别的script(也许叫postscript?)发送给打印机, 打印机就开始打印了. 这里有个技术问题, hp的发送是如何绕过我家路由器的防火墙, 发送到处于内网的打印机的? 如果同一个局域网有若干台同一型号的打印机, 如何识别?

第二种:

可以使用Google Cloud Printing进行打印, 前提是该打印机已经在hp进行了注册并且取得了claim_code@hpconnected.com帐号. 该帐号和Google Account进行关联后, 就可以使用Google 的Cloud ...

Read More...

从命令行执行MySQL指令

其实很简单, 按照以下的模版就行了。

mysql -uUserName -pPassWord -h ipAddress -D databaseName -e “SQLCommand1;SQLCommand2; ”

不过到现在, 我还没找出执行完继续留在命令行的选项。 只能在以上的SQL 后再加一句:

mysql -uUserName -pPassWord -h ipAddress -D databaseName

等于重新连接了一遍数据库。...

Read More...