使用Clojure开发Web入门系列(二)

开发web应用当然少不了web服务器了,咱们这里使用是的ring这个库。 零、添加依赖 打开根目录下的project.clj,找到:dependencies。 :dependencies [[org.clojure/clojure "1.8.0"]] 有可能你看到的clojure版本跟我的不太一样,在里添加(ring)[https://github.com/ring-clojure/ring],添加后像下面这样 :dependencies [[org.clojure/clojure "1.8.0"] [ring "1.6.3"]] 然后在命令行运行: lein deps lein底层使用的是maven和(clojars)[https://clojars.org/],下载下来的依赖包会在你的用户目录下的.m2目录,下载的所有文件可以在~/.m2/repository/ring/ring/1.6.3/找到。如果你身在"赵国",那么你家里应该常备"楼梯"。 一、启动HTTP Server 打开src/learnweb/core.clj,这个是在project.clj里面的:main定义的入口点: (ns learnweb.core (:gen-class)) (defn -main "I don't do a whole lot ... yet." [& args] (println "Hello, World!")) 下面来改造一下core.clj文件,把需要的函数包含进代码,然后把http server跑起来,最终的代码如下: (ns learnweb.core (:require [ring.adapter.jetty :refer [run-jetty]]) ;(1) (:gen-class)) (defn handler [request] {:status 200 :headers {"Content-Type" "text/html"} :body "Hello World!"}) ;(2) (defn -main "I don't do a whole lot ... yet." [& args] (run-jetty handler {:port 3000})) ;(3) 改造了三个地方(1), (2), (3) ...

March 8, 2016

使用Clojure开发Web入门系列(一)

对于Clojure语言这里有一些很好的入门教程: Learn X in Y minutes Clojure - Functional Programming for the JVM Clojure koans 零、需要了解的知识 Web http Clojure Leiningen HTML Java 一、安装 首先Clojure是JVM上的Lisp方言,所以需要安装Java,可以去官方网站下载安装包,最好下载最新的JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装完成之后需要打开命令行窗口看看是否可以执行java命令。 然后安装Leiningen,这个是项目的管理工具,可以管理依赖,编译工程,打包项目等等。可以参照 http://leiningen.org/#install 介绍的方法。 二、创建项目 lein new app learnweb cd learnweb 创建完成后目录结构应该像下面这样: ├── CHANGELOG.md ├── LICENSE ├── README.md ├── doc │ └── intro.md ├── project.clj ├── resources ├── src │ └── learnweb │ └── core.clj └── test └── learnweb └── core_test.clj 首先打开project.clj看一眼,这个文件就是定义项目的文件,同样也是使用的clojure的语法 (defproject learnweb "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.7.0"]] :main ^:skip-aot learnweb.core :target-path "target/%s" :profiles {:uberjar {:aot :all}}) 第一行里定义了项目名字learnweb,版本0.1.0-SNAPSHOT,这两个在打包的时候分体现在文件名上面。 :dependencies包含了项目执行时的所有依赖,后面添加第三方库的时候需要修改这里。 :main指明了程序的入口,是包learnweb.core的-main函数。 ...

March 7, 2016

nagios使用check_nrpe调用子命令

以http为例子,如果单独使用的话可以: $ ./libexec/check_http -H 192.168.1.1 通过check_nrpe使用nrpe检查http $ ./libexec/check_nrpe -H 192.168.2.142 -c check_http 调用上面的命令需要客户机安装了nrpe,并且配置了xinted,而且防火墙要开启对应的端口 以上备忘

January 24, 2016

Xshell emacs 发送alt键

我比较喜欢使用Xshell来连接服务器,原因有下面几个: 对于个人用户是免费的; 配色不需要过多的配置,有5、6种可选的比较好看的配色。在比较亮的工作环境可以选择白色背景,暗的工作环境可以选择黑色背景; 可以使用透明的窗体,看起来比较酷; 还有其他,balabalabala 默认在Xshell里面使用emacs的时候,Alt键是不怎么好用的,其实是没有发送到服务器端的,所以需要对其他做一个设置: File -> Properties -> Terminal -> Keyboard 把Use Alt as Meta key这个选项勾上 好了,现在可以使用Alt+x来在emacs里面使用command了。 以上备忘

January 21, 2016

Ubuntu彻底删除kubuntu,xubuntu和Lubuntu的完整命令

Remove Kubuntu: sudo apt-get remove akonadi-backend-mysql akonadi-server akregator amarok amarok-common amarok-utils apport-kde apturl-kde ark bluedevil cdparanoia cdrdao cryptsetup docbook-xml docbook-xsl dolphin dragonplayer freespacenotifier gnupg-agent gnupg2 gpgsm gpsd gstreamer0.10-qapt gtk2-engines-oxygen gtk3-engines-oxygen gwenview ibus-qt4 icoutils jockey-kde k3b k3b-data kaccessible kaddressbook kamera kate kate-data katepart kcalc kde-baseapps-bin kde-baseapps-data kde-config-gtk kde-config-touchpad kde-runtime kde-runtime-data kde-style-oxygen kde-wallpapers-default kde-window-manager kde-window-manager-common kde-workspace kde-workspace-bin kde-workspace-data kde-workspace-kgreet-plugins kde-zeroconf kdegames-card-data kdegraphics-strigi-analyzer kdelibs-bin kdelibs5-data kdelibs5-plugins kdemultimedia-kio-plugins kdenetwork-filesharing kdepasswd kdepim-kresources kdepim-runtime kdepim-strigi-plugins kdepimlibs-kio-plugins kdesudo kdm kdoctools khelpcenter4 kinfocenter klipper kmag kmail kmenuedit kmix kmousetool knotes konsole kontact kopete kopete-message-indicator korganizer kpat kppp ksnapshot ksysguard ksysguardd ksystemlog ktimetracker ktorrent ktorrent-data kubuntu-debug-installer kubuntu-default-settings kubuntu-desktop kubuntu-docs kubuntu-firefox-installer kubuntu-netbook-default-settings kubuntu-notification-helper kubuntu-web-shortcuts kvkbd kwalletmanager language-selector-kde libakonadi-calendar4 libakonadi-contact4 libakonadi-kabc4 libakonadi-kcal4 libakonadi-kde4 libakonadi-kmime4 libakonadi-notes4 libakonadiprotocolinternals1 libassuan0 libattica0.3 libbluedevil1 libboost-program-options1.46.1 libcalendarsupport4 libcln6 libclucene0ldbl libdebconf-kde0 libdlrestrictions1 libdmtx0a libencode-locale-perl libepub0 libeventviews4 libfile-listing-perl libflac++6 libfont-afm-perl libgadu3 libgif4 libgpgme++2 libgps20 libgrantlee-core0 libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libibus-qt1 libilmbase6 libincidenceeditorsng4 libindicate-qt1 libio-socket-inet6-perl libio-socket-ssl-perl libk3b6 libkabc4 libkactivities-bin libkactivities6 libkalarmcal2 libkateinterfaces4 libkatepartinterfaces4 libkblog4 libkcal4 libkcalcore4 libkcalutils4 libkcddb4 libkcmutils4 libkde3support4 libkdeclarative5 libkdecorations4 libkdecore5 libkdegames5a libkdepim4 libkdepimdbusinterfaces4 libkdesu5 libkdeui5 libkdewebkit5 libkdgantt2 libkdnssd4 libkemoticons4 libkephal4abi1 libkexiv2-10 libkexiv2-data libkfile4 libkholidays4 libkhtml5 libkidletime4 libkimap4 libkio5 libkipi-data libkipi8 libkjsapi4 libkjsembed4 libkldap4 libkleo4 libkmanagesieve4 libkmbox4 libkmediaplayer4 libkmime4 libknewstuff2-4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkonq-common libkonq5-templates libkonq5abi1 libkontactinterface4 libkopete4 libkparts4 libkpgp4 libkpimidentities4 libkpimtextedit4 libkpimutils4 libkprintutils4 libkpty4 libkresources4 libkrosscore4 libksba8 libkscreensaver5 libksgrd4 libksieve4 libksieveui4 libksignalplotter4 libktexteditor4 libktnef4 libktorrent-l10n libktorrent3 libkunitconversion4 libkwineffects1abi3 libkwinglutils1 libkwinnvidiahack4 libkworkspace4abi1 libkxmlrpcclient4 liblastfm0 libloudmouth1-0 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailcommon4 libmailtools-perl libmailtransport4 libmessagecomposer4 libmessagecore4 libmessagelist4 libmessageviewer4 libmicroblog4 libmpcdec6 libmsn0.3 libmuonprivate1 libmygpo-qt1 libmysqlclient18 libnepomuk4 libnepomukdatamanagement4 libnepomukquery4a libnepomuksync4 libnepomukutils4 libnet-http-perl libnet-ssleay-perl libntrack-qt4-1 libntrack0 libokularcore1abi1 libopenexr6 libotr2 libphonon4 libplasma-geolocation-interface4 libplasma3 libplasmaclock4abi3 libplasmagenericshell4 libpolkit-qt-1-1 libpoppler-qt4-3 libprison0 libprocesscore4abi1 libprocessui4a libqalculate5 libqapt-runtime libqapt1 libqca2 libqca2-plugin-ossl libqgpgme1 libqimageblitz4 libqjson0 libqrencode3 libqt4-designer libqt4-help libqt4-qt3support libqt4-scripttools libqt4-sql-mysql libqt4-test libqtassistantclient4 libqtglib-2.0-0 libqtgstreamer-0.10-0 libqtscript4-core libqtscript4-gui libqtscript4-network libqtscript4-sql libqtscript4-uitools libqtscript4-xml libqtwebkit4 libreoffice-kde libreoffice-style-oxygen libsocket6-perl libsolid4 libsolidcontrol4abi2 libsolidcontrolifaces4abi2 libsoprano4 libstreamanalyzer0 libstreams0 libsyndication4 libtag-extras1 libtaskmanager4abi3 libtemplateparser4 libthreadweaver4 libtimedate-perl liburi-perl libvirtodbc0 libweather-ion6 libwww-perl libwww-robotrules-perl libxml2-utils libxss1 libzip2 muon muon-installer muon-notifier muon-updater mysql-client-core-5.5 mysql-common mysql-server-core-5.5 ntrack-module-libnl-0 odbcinst odbcinst1debian2 okular okular-extra-backends oxygen-cursor-theme oxygen-icon-theme partitionmanager phonon phonon-backend-gstreamer pinentry-gtk2 pinentry-qt4 plasma-dataengines-addons plasma-dataengines-workspace plasma-desktop plasma-netbook plasma-scriptengine-javascript plasma-scriptengine-python plasma-widget-facebook plasma-widget-folderview plasma-widget-kimpanel plasma-widget-menubar plasma-widget-message-indicator plasma-widget-networkmanagement plasma-widgets-addons plasma-widgets-workspace plymouth-theme-kubuntu-logo plymouth-theme-kubuntu-text polkit-kde-1 printer-applet python-kde4 python-pyudev python-qt4 python-qt4-dbus python-sip qapt-batch qapt-deb-installer quassel quassel-data rekonq sgml-data shared-desktop-ontologies software-properties-kde soprano-daemon system-config-printer-kde systemsettings tasks-icons update-manager-kde usb-creator-kde userconfig virtuoso-minimal virtuoso-opensource-6.1-bin virtuoso-opensource-6.1-common xsettings-kde && sudo apt-get install ubuntu-desktop ...

January 20, 2016

nginx添加无密码启动ssl

QQ: 380800878, 微信: kittenll 可以参考官方文档 在nginx启动的时候不用password需要pem和chain.cer文件: # cat xxxx.pem chain.cer > xxxx.crt # openssl rsa -in need_pwd.key -out nopwd.key 修改nginx配置,在server节点下面添加: ssl_certificate /usr/local/certificates/xxxx.crt; ssl_certificate_key /usr/local/certificates/nopwd.key; 使用openssl验证服务器上的证书信息: $ openssl s_client -showcerts -connect www.baidu.com:443 </dev/null

January 10, 2016

keepalived安装配置

QQ: 380800878, 微信: kittenll 下载源码包,直接上官方网站 解压 tar -xzvf keepalived-1.2.7.tar.gz 编译安装,没什么特别的,指定一下安装目录即可 # cd keepalived-1.2.7 # ./configure --prefix=/usr/local/keepalived-1.2.7 # make # make install 添加软链,升级测试方便 # cd /usr/local/ # ln -s keepalived-1.2.7/ keepalived # ln -s /usr/local/keepalived/sbin/keepalived /usr/bin/ 添加keepalived配置文件 # mkdir /etc/keepalived # touch /etc/keepalived/keepalived.conf 把如下内容添加进到keepalived.conf ! Configuration File for keepalived global_defs { router_id nginx-proxy-ha } vrrp_script check_nginx_php { script "/usr/local/keepalived/sbin/check_nginx_php.sh" interval 5 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1234 } track_interface { eth0 } track_script { check_nginx_php } virtual_ipaddress { 192.168.1.100 } virtual_ipaddress { 192.168.1.99 } } 把对应的IP地址替换成自己内网IP即可 ...

January 7, 2016

linux下使用极点五笔

QQ: 380800878, 微信: kittenll 像我我种原始人还在用着五笔,没办法,已经习惯了,如果没有五笔我的世界将全是英文,但我英文又不好,没办法装五笔。以前是用ibus自带的五笔,在ubuntu下面有的时候系统启动的时候切换到五笔,五笔的图标就是一个stop图标—-shit,装上Linux Mint 12改用scim下面的极点五笔,以前在windows下就用过。 安装方法: 首先安装scim $ sudo apt-get install scim 装中文支持包 $ sudo apt-get install scim-tables-zh 下载极点五笔,把*.bin 复件到 /usr/share/scim/tables/下面 sudo cp ***.bin /usr/share/scim/tables/ 重启scim(如果已经启动),设置… sudo pkill scim scim-setup

November 26, 2011